From 2d05d9f802483cc3792a7251f6cb6282f4bfa9d7 Mon Sep 17 00:00:00 2001 From: Domenico Andreoli Date: Tue, 11 May 2021 14:19:32 +0000 Subject: [PATCH 001/144] Add CCS integration test for security rules (#99042) --- .../apps/ccs/ccs_discover.js | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/x-pack/test/stack_functional_integration/apps/ccs/ccs_discover.js b/x-pack/test/stack_functional_integration/apps/ccs/ccs_discover.js index 588ff9a6e9f92..7de23c2899b67 100644 --- a/x-pack/test/stack_functional_integration/apps/ccs/ccs_discover.js +++ b/x-pack/test/stack_functional_integration/apps/ccs/ccs_discover.js @@ -24,6 +24,7 @@ export default ({ getService, getPageObjects }) => { const kibanaServer = getService('kibanaServer'); const queryBar = getService('queryBar'); const filterBar = getService('filterBar'); + const supertest = getService('supertest'); before(async () => { await browser.setWindowSize(1200, 800); @@ -97,6 +98,8 @@ export default ({ getService, getPageObjects }) => { ); await PageObjects.security.logout(); } + // visit app/security so to create .siem-signals-* as side effect + await PageObjects.common.navigateToApp('security', { insertTimestamp: false }); const url = await browser.getCurrentUrl(); log.debug(url); if (!url.includes('kibana')) { @@ -135,6 +138,35 @@ export default ({ getService, getPageObjects }) => { expect(patternName).to.be('*:makelogs工程-*'); }); + it('create local siem signals index pattern', async () => { + log.debug('Add index pattern: .siem-signals-*'); + await supertest + .post('/api/index_patterns/index_pattern') + .set('kbn-xsrf', 'true') + .send({ + index_pattern: { + title: '.siem-signals-*', + }, + override: true, + }) + .expect(200); + }); + + it('create remote monitoring ES index pattern', async () => { + log.debug('Add index pattern: data:.monitoring-es-*'); + await supertest + .post('/api/index_patterns/index_pattern') + .set('kbn-xsrf', 'true') + .send({ + index_pattern: { + title: 'data:.monitoring-es-*', + timeFieldName: 'timestamp', + }, + override: true, + }) + .expect(200); + }); + it('local:makelogs(star) should discover data from the local cluster', async () => { await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); @@ -203,5 +235,36 @@ export default ({ getService, getPageObjects }) => { expect(hitCount).to.be.lessThan(originalHitCount); }); }); + + it('should generate alerts based on remote events', async () => { + log.debug('Add detection rule type:shards on data:.monitoring-es-*'); + await supertest + .post('/api/detection_engine/rules') + .set('kbn-xsrf', 'true') + .send({ + description: 'This is the description of the rule', + risk_score: 17, + severity: 'low', + interval: '10s', + name: 'CCS_Detection_test', + type: 'query', + from: 'now-1d', + index: ['data:.monitoring-es-*'], + timestamp_override: 'timestamp', + query: 'type:shards', + language: 'kuery', + enabled: true, + }) + .expect(200); + + log.debug('Check if any alert got to .siem-signals-*'); + await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); + await PageObjects.discover.selectIndexPattern('.siem-signals-*'); + await retry.tryForTime(40000, async () => { + const hitCount = await PageObjects.discover.getHitCount(); + log.debug('### hit count = ' + hitCount); + expect(hitCount).to.be.greaterThan('0'); + }); + }); }); }; From 9da9b8d4b9fec6ef17038ca753885ecd6ed19016 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Tue, 11 May 2021 07:36:20 -0700 Subject: [PATCH 002/144] [kbn-es] Allow overriding of Java heap (#99517) * [kbn-es] Allow overriding of Java heap Fixes #99494 Signed-off-by: Tyler Smalley --- packages/kbn-es/README.md | 2 ++ packages/kbn-es/src/cluster.js | 14 +++++++---- .../src/integration_tests/cluster.test.js | 25 +++++++++++++++++++ packages/kbn-test/src/es/test_es_cluster.ts | 6 ++--- .../lib/config/schema.ts | 2 +- .../functional_tests/lib/run_elasticsearch.ts | 4 +-- .../kerberos.config.ts | 9 +++---- .../login_selector.config.ts | 9 +++---- 8 files changed, 50 insertions(+), 21 deletions(-) diff --git a/packages/kbn-es/README.md b/packages/kbn-es/README.md index 4d4c2aa94db07..80850c9e6a09c 100644 --- a/packages/kbn-es/README.md +++ b/packages/kbn-es/README.md @@ -7,6 +7,8 @@ If running elasticsearch from source, elasticsearch needs to be cloned to a sibl To run, go to the Kibana root and run `node scripts/es --help` to get the latest command line options. +The script attempts to preserve the existing interfaces used by Elasticsearch CLI. This includes passing through options with the `-E` argument and the `ES_JAVA_OPTS` environment variable for Java options. + ### Examples Run a snapshot install with a trial license diff --git a/packages/kbn-es/src/cluster.js b/packages/kbn-es/src/cluster.js index c55e5d3513c44..ad9ecb059031c 100644 --- a/packages/kbn-es/src/cluster.js +++ b/packages/kbn-es/src/cluster.js @@ -236,6 +236,7 @@ exports.Cluster = class Cluster { * @param {String} installPath * @param {Object} options * @property {string|Array} options.esArgs + * @property {string} options.esJavaOpts * @return {undefined} */ _exec(installPath, options = {}) { @@ -268,14 +269,17 @@ exports.Cluster = class Cluster { this._log.debug('%s %s', ES_BIN, args.join(' ')); - options.esEnvVars = options.esEnvVars || {}; + let esJavaOpts = `${options.esJavaOpts || ''} ${process.env.ES_JAVA_OPTS || ''}`; // ES now automatically sets heap size to 50% of the machine's available memory // so we need to set it to a smaller size for local dev and CI // especially because we currently run many instances of ES on the same machine during CI - options.esEnvVars.ES_JAVA_OPTS = - (options.esEnvVars.ES_JAVA_OPTS ? `${options.esEnvVars.ES_JAVA_OPTS} ` : '') + - '-Xms1g -Xmx1g'; + // inital and max must be the same, so we only need to check the max + if (!esJavaOpts.includes('Xmx')) { + esJavaOpts += ' -Xms1g -Xmx1g'; + } + + this._log.debug('ES_JAVA_OPTS: %s', esJavaOpts.trim()); this._process = execa(ES_BIN, args, { cwd: installPath, @@ -283,7 +287,7 @@ exports.Cluster = class Cluster { ...(installPath ? { ES_TMPDIR: path.resolve(installPath, 'ES_TMPDIR') } : {}), ...process.env, JAVA_HOME: '', // By default, we want to always unset JAVA_HOME so that the bundled JDK will be used - ...(options.esEnvVars || {}), + ES_JAVA_OPTS: esJavaOpts.trim(), }, stdio: ['ignore', 'pipe', 'pipe'], }); diff --git a/packages/kbn-es/src/integration_tests/cluster.test.js b/packages/kbn-es/src/integration_tests/cluster.test.js index 6b4025840283f..34220b08d2120 100644 --- a/packages/kbn-es/src/integration_tests/cluster.test.js +++ b/packages/kbn-es/src/integration_tests/cluster.test.js @@ -71,11 +71,17 @@ function mockEsBin({ exitCode, start }) { ); } +const initialEnv = { ...process.env }; + beforeEach(() => { jest.resetAllMocks(); extractConfigFiles.mockImplementation((config) => config); }); +afterEach(() => { + process.env = { ...initialEnv }; +}); + describe('#installSource()', () => { it('awaits installSource() promise and returns { installPath }', async () => { let resolveInstallSource; @@ -355,6 +361,25 @@ describe('#run()', () => { ] `); }); + + it('sets default Java heap', async () => { + mockEsBin({ start: true }); + + const cluster = new Cluster({ log }); + await cluster.run(); + + expect(execa.mock.calls[0][2].env.ES_JAVA_OPTS).toEqual('-Xms1g -Xmx1g'); + }); + + it('allows Java heap to be overwritten', async () => { + mockEsBin({ start: true }); + process.env.ES_JAVA_OPTS = '-Xms5g -Xmx5g'; + + const cluster = new Cluster({ log }); + await cluster.run(); + + expect(execa.mock.calls[0][2].env.ES_JAVA_OPTS).toEqual('-Xms5g -Xmx5g'); + }); }); describe('#stop()', () => { diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts index e802613fbaedb..658fc9382d616 100644 --- a/packages/kbn-test/src/es/test_es_cluster.ts +++ b/packages/kbn-test/src/es/test_es_cluster.ts @@ -36,7 +36,7 @@ interface TestClusterFactoryOptions { * */ dataArchive?: string; esArgs?: string[]; - esEnvVars?: Record; + esJavaOpts?: string; clusterName?: string; log: ToolingLog; ssl?: boolean; @@ -52,7 +52,7 @@ export function createTestEsCluster(options: TestClusterFactoryOptions) { esFrom = esTestConfig.getBuildFrom(), dataArchive, esArgs: customEsArgs = [], - esEnvVars, + esJavaOpts, clusterName: customClusterName = 'es-test-cluster', ssl, } = options; @@ -107,7 +107,7 @@ export function createTestEsCluster(options: TestClusterFactoryOptions) { await cluster.start(installPath, { password: config.password, esArgs, - esEnvVars, + esJavaOpts, }); } diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts b/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts index d82b7b83e8f15..65573fdbd6647 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/config/schema.ts @@ -172,7 +172,7 @@ export const schema = Joi.object() license: Joi.string().default('basic'), from: Joi.string().default('snapshot'), serverArgs: Joi.array(), - serverEnvVars: Joi.object(), + esJavaOpts: Joi.string(), dataArchive: Joi.string(), ssl: Joi.boolean().default(false), }) diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts index 83368783da389..7ba9a3c1c4733 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts @@ -29,7 +29,7 @@ export async function runElasticsearch({ const ssl = config.get('esTestCluster.ssl'); const license = config.get('esTestCluster.license'); const esArgs = config.get('esTestCluster.serverArgs'); - const esEnvVars = config.get('esTestCluster.serverEnvVars'); + const esJavaOpts = config.get('esTestCluster.esJavaOpts'); const isSecurityEnabled = esArgs.includes('xpack.security.enabled=true'); const cluster = createTestEsCluster({ @@ -43,7 +43,7 @@ export async function runElasticsearch({ esFrom: esFrom || config.get('esTestCluster.from'), dataArchive: config.get('esTestCluster.dataArchive'), esArgs, - esEnvVars, + esJavaOpts, ssl, }); diff --git a/x-pack/test/security_api_integration/kerberos.config.ts b/x-pack/test/security_api_integration/kerberos.config.ts index bdd96bae0d9fb..c3f647aadc6d1 100644 --- a/x-pack/test/security_api_integration/kerberos.config.ts +++ b/x-pack/test/security_api_integration/kerberos.config.ts @@ -32,11 +32,10 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { 'xpack.security.authc.realms.kerberos.kerb1.order=0', `xpack.security.authc.realms.kerberos.kerb1.keytab.path=${kerberosKeytabPath}`, ], - serverEnvVars: { - // We're going to use the same TGT multiple times and during a short period of time, so we - // have to disable replay cache so that ES doesn't complain about that. - ES_JAVA_OPTS: `-Djava.security.krb5.conf=${kerberosConfigPath} -Dsun.security.krb5.rcache=none`, - }, + + // We're going to use the same TGT multiple times and during a short period of time, so we + // have to disable replay cache so that ES doesn't complain about that. + esJavaOpts: `-Djava.security.krb5.conf=${kerberosConfigPath} -Dsun.security.krb5.rcache=none`, }, kbnTestServer: { diff --git a/x-pack/test/security_api_integration/login_selector.config.ts b/x-pack/test/security_api_integration/login_selector.config.ts index 9603356568011..f9ef0903b39aa 100644 --- a/x-pack/test/security_api_integration/login_selector.config.ts +++ b/x-pack/test/security_api_integration/login_selector.config.ts @@ -96,11 +96,10 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { `xpack.security.authc.realms.saml.saml2.sp.acs=http://localhost:${kibanaPort}/api/security/saml/callback`, 'xpack.security.authc.realms.saml.saml2.attributes.principal=urn:oid:0.0.7', ], - serverEnvVars: { - // We're going to use the same TGT multiple times and during a short period of time, so we - // have to disable replay cache so that ES doesn't complain about that. - ES_JAVA_OPTS: `-Djava.security.krb5.conf=${kerberosConfigPath} -Dsun.security.krb5.rcache=none`, - }, + + // We're going to use the same TGT multiple times and during a short period of time, so we + // have to disable replay cache so that ES doesn't complain about that. + esJavaOpts: `-Djava.security.krb5.conf=${kerberosConfigPath} -Dsun.security.krb5.rcache=none`, }, kbnTestServer: { From 126a83c056a19f60fed7ce7b48ec874f9c3efc83 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Tue, 11 May 2021 17:01:00 +0200 Subject: [PATCH 003/144] [Discover][New table] Fix selected documents no longer in the sample of 500 documents (#99114) * Don't count and make use of selected docs no longer in the given 500 sample of the result set * When the underlying dataset changes, set selected docs filter to inactive if there are no filtered docs * Add test --- .../discover_grid/discover_grid.test.tsx | 27 +++++++++++++++ .../discover_grid/discover_grid.tsx | 34 ++++++++++++++----- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/src/plugins/discover/public/application/components/discover_grid/discover_grid.test.tsx b/src/plugins/discover/public/application/components/discover_grid/discover_grid.test.tsx index 8037022085f02..b2be40c008200 100644 --- a/src/plugins/discover/public/application/components/discover_grid/discover_grid.test.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/discover_grid.test.tsx @@ -124,6 +124,33 @@ describe('DiscoverGrid', () => { expect(getDisplayedDocNr(component)).toBe(5); }); + test('showing selected documents, underlying data changes, all documents are displayed, selection is gone', async () => { + await toggleDocSelection(component, esHits[0]); + await toggleDocSelection(component, esHits[1]); + expect(getSelectedDocNr(component)).toBe(2); + findTestSubject(component, 'dscGridSelectionBtn').simulate('click'); + findTestSubject(component, 'dscGridShowSelectedDocuments').simulate('click'); + expect(getDisplayedDocNr(component)).toBe(2); + component.setProps({ + rows: [ + { + _index: 'i', + _id: '6', + _score: 1, + _type: '_doc', + _source: { + date: '2020-20-02T12:12:12.128', + name: 'test6', + extension: 'doc', + bytes: 50, + }, + }, + ], + }); + expect(getDisplayedDocNr(component)).toBe(1); + expect(getSelectedDocNr(component)).toBe(0); + }); + test('showing only selected documents and remove filter deselecting each doc manually', async () => { await toggleDocSelection(component, esHits[0]); findTestSubject(component, 'dscGridSelectionBtn').simulate('click'); diff --git a/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx index be38f166fa1c0..f969eb32f3791 100644 --- a/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/application/components/discover_grid/discover_grid.tsx @@ -164,17 +164,33 @@ export const DiscoverGrid = ({ const [isFilterActive, setIsFilterActive] = useState(false); const displayedColumns = getDisplayedColumns(columns, indexPattern); const defaultColumns = displayedColumns.includes('_source'); + const usedSelectedDocs = useMemo(() => { + if (!selectedDocs.length || !rows?.length) { + return []; + } + const idMap = rows.reduce((map, row) => map.set(getDocId(row), true), new Map()); + // filter out selected docs that are no longer part of the current data + const result = selectedDocs.filter((docId) => idMap.get(docId)); + if (result.length === 0 && isFilterActive) { + setIsFilterActive(false); + } + return result; + }, [selectedDocs, rows, isFilterActive]); + const displayedRows = useMemo(() => { if (!rows) { return []; } - if (!isFilterActive || selectedDocs.length === 0) { + if (!isFilterActive || usedSelectedDocs.length === 0) { + return rows; + } + const rowsFiltered = rows.filter((row) => usedSelectedDocs.includes(getDocId(row))); + if (!rowsFiltered.length) { + // in case the selected docs are no longer part of the sample of 500, show all docs return rows; } - return rows.filter((row) => { - return selectedDocs.includes(getDocId(row)); - }); - }, [rows, selectedDocs, isFilterActive]); + return rowsFiltered; + }, [rows, usedSelectedDocs, isFilterActive]); /** * Pagination @@ -258,16 +274,16 @@ export const DiscoverGrid = ({ const additionalControls = useMemo( () => - selectedDocs.length ? ( + usedSelectedDocs.length ? ( ) : null, - [selectedDocs, isFilterActive, rows, setIsFilterActive] + [usedSelectedDocs, isFilterActive, rows, setIsFilterActive] ); if (!rowCount) { @@ -291,7 +307,7 @@ export const DiscoverGrid = ({ onFilter, indexPattern, isDarkMode: services.uiSettings.get('theme:darkMode'), - selectedDocs, + selectedDocs: usedSelectedDocs, setSelectedDocs: (newSelectedDocs) => { setSelectedDocs(newSelectedDocs); if (isFilterActive && newSelectedDocs.length === 0) { From 5dbc73f1b41d7d7c2159674ff8ce260c74554bfc Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Tue, 11 May 2021 09:38:40 -0600 Subject: [PATCH 004/144] [Maps] use deep equals for mapbox filter expression equals check (#99673) * [Maps] use deep equals for mapbox filter expression equals check * cleanup --- .../layers/vector_layer/vector_layer.tsx | 10 +-- .../classes/util/mb_filter_expressions.ts | 82 +++++++++---------- .../functional/apps/maps/mapbox_styles.js | 41 ++++------ 3 files changed, 57 insertions(+), 76 deletions(-) diff --git a/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx b/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx index db781344eb6f8..a1474237f6c9c 100644 --- a/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx +++ b/x-pack/plugins/maps/public/classes/layers/vector_layer/vector_layer.tsx @@ -782,7 +782,7 @@ export class VectorLayer extends AbstractLayer implements IVectorLayer { } const filterExpr = getPointFilterExpression(this.hasJoins()); - if (filterExpr !== mbMap.getFilter(pointLayerId)) { + if (!_.isEqual(filterExpr, mbMap.getFilter(pointLayerId))) { mbMap.setFilter(pointLayerId, filterExpr); mbMap.setFilter(textLayerId, filterExpr); } @@ -818,7 +818,7 @@ export class VectorLayer extends AbstractLayer implements IVectorLayer { } const filterExpr = getPointFilterExpression(this.hasJoins()); - if (filterExpr !== mbMap.getFilter(symbolLayerId)) { + if (!_.isEqual(filterExpr, mbMap.getFilter(symbolLayerId))) { mbMap.setFilter(symbolLayerId, filterExpr); } @@ -900,14 +900,14 @@ export class VectorLayer extends AbstractLayer implements IVectorLayer { this.syncVisibilityWithMb(mbMap, fillLayerId); mbMap.setLayerZoomRange(fillLayerId, this.getMinZoom(), this.getMaxZoom()); const fillFilterExpr = getFillFilterExpression(hasJoins); - if (fillFilterExpr !== mbMap.getFilter(fillLayerId)) { + if (!_.isEqual(fillFilterExpr, mbMap.getFilter(fillLayerId))) { mbMap.setFilter(fillLayerId, fillFilterExpr); } this.syncVisibilityWithMb(mbMap, lineLayerId); mbMap.setLayerZoomRange(lineLayerId, this.getMinZoom(), this.getMaxZoom()); const lineFilterExpr = getLineFilterExpression(hasJoins); - if (lineFilterExpr !== mbMap.getFilter(lineLayerId)) { + if (!_.isEqual(lineFilterExpr, mbMap.getFilter(lineLayerId))) { mbMap.setFilter(lineLayerId, lineFilterExpr); } @@ -931,7 +931,7 @@ export class VectorLayer extends AbstractLayer implements IVectorLayer { } const filterExpr = getCentroidFilterExpression(this.hasJoins()); - if (filterExpr !== mbMap.getFilter(centroidLayerId)) { + if (!_.isEqual(filterExpr, mbMap.getFilter(centroidLayerId))) { mbMap.setFilter(centroidLayerId, filterExpr); } diff --git a/x-pack/plugins/maps/public/classes/util/mb_filter_expressions.ts b/x-pack/plugins/maps/public/classes/util/mb_filter_expressions.ts index 4526340d3d865..c798f05df9813 100644 --- a/x-pack/plugins/maps/public/classes/util/mb_filter_expressions.ts +++ b/x-pack/plugins/maps/public/classes/util/mb_filter_expressions.ts @@ -15,61 +15,55 @@ import { export const EXCLUDE_TOO_MANY_FEATURES_BOX = ['!=', ['get', KBN_TOO_MANY_FEATURES_PROPERTY], true]; const EXCLUDE_CENTROID_FEATURES = ['!=', ['get', KBN_IS_CENTROID_FEATURE], true]; -const VISIBILITY_FILTER_CLAUSE = ['all', ['==', ['get', FEATURE_VISIBLE_PROPERTY_NAME], true]]; -// Kibana features are features added by kibana that do not exist in real data -const EXCLUDE_KBN_FEATURES = ['all', EXCLUDE_TOO_MANY_FEATURES_BOX, EXCLUDE_CENTROID_FEATURES]; +function getFilterExpression(geometryFilter: unknown[], hasJoins: boolean) { + const filters: unknown[] = [ + EXCLUDE_TOO_MANY_FEATURES_BOX, + EXCLUDE_CENTROID_FEATURES, + geometryFilter, + ]; -const CLOSED_SHAPE_MB_FILTER = [ - ...EXCLUDE_KBN_FEATURES, - [ - 'any', - ['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON], - ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_POLYGON], - ], -]; + if (hasJoins) { + filters.push(['==', ['get', FEATURE_VISIBLE_PROPERTY_NAME], true]); + } -const VISIBLE_CLOSED_SHAPE_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, CLOSED_SHAPE_MB_FILTER]; - -const ALL_SHAPE_MB_FILTER = [ - ...EXCLUDE_KBN_FEATURES, - [ - 'any', - ['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON], - ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_POLYGON], - ['==', ['geometry-type'], GEO_JSON_TYPE.LINE_STRING], - ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_LINE_STRING], - ], -]; - -const VISIBLE_ALL_SHAPE_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, ALL_SHAPE_MB_FILTER]; - -const POINT_MB_FILTER = [ - ...EXCLUDE_KBN_FEATURES, - [ - 'any', - ['==', ['geometry-type'], GEO_JSON_TYPE.POINT], - ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_POINT], - ], -]; - -const VISIBLE_POINT_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, POINT_MB_FILTER]; - -const CENTROID_MB_FILTER = ['all', ['==', ['get', KBN_IS_CENTROID_FEATURE], true]]; - -const VISIBLE_CENTROID_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, CENTROID_MB_FILTER]; + return ['all', ...filters]; +} export function getFillFilterExpression(hasJoins: boolean): unknown[] { - return hasJoins ? VISIBLE_CLOSED_SHAPE_MB_FILTER : CLOSED_SHAPE_MB_FILTER; + return getFilterExpression( + [ + 'any', + ['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON], + ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_POLYGON], + ], + hasJoins + ); } export function getLineFilterExpression(hasJoins: boolean): unknown[] { - return hasJoins ? VISIBLE_ALL_SHAPE_MB_FILTER : ALL_SHAPE_MB_FILTER; + return getFilterExpression( + [ + 'any', + ['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON], + ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_POLYGON], + ['==', ['geometry-type'], GEO_JSON_TYPE.LINE_STRING], + ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_LINE_STRING], + ], + hasJoins + ); } export function getPointFilterExpression(hasJoins: boolean): unknown[] { - return hasJoins ? VISIBLE_POINT_MB_FILTER : POINT_MB_FILTER; + return getFilterExpression( + [ + 'any', + ['==', ['geometry-type'], GEO_JSON_TYPE.POINT], + ['==', ['geometry-type'], GEO_JSON_TYPE.MULTI_POINT], + ], + hasJoins + ); } export function getCentroidFilterExpression(hasJoins: boolean): unknown[] { - return hasJoins ? VISIBLE_CENTROID_MB_FILTER : CENTROID_MB_FILTER; + return getFilterExpression(['==', ['get', KBN_IS_CENTROID_FEATURE], true], hasJoins); } diff --git a/x-pack/test/functional/apps/maps/mapbox_styles.js b/x-pack/test/functional/apps/maps/mapbox_styles.js index b483b95e0ca1f..31cb366f826c8 100644 --- a/x-pack/test/functional/apps/maps/mapbox_styles.js +++ b/x-pack/test/functional/apps/maps/mapbox_styles.js @@ -40,13 +40,10 @@ export default function ({ getPageObjects, getService }) { maxzoom: 24, filter: [ 'all', + ['!=', ['get', '__kbn_too_many_features__'], true], + ['!=', ['get', '__kbn_is_centroid_feature__'], true], + ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']], ['==', ['get', '__kbn_isvisibleduetojoin__'], true], - [ - 'all', - ['!=', ['get', '__kbn_too_many_features__'], true], - ['!=', ['get', '__kbn_is_centroid_feature__'], true], - ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']], - ], ], layout: { visibility: 'visible' }, paint: { @@ -124,17 +121,10 @@ export default function ({ getPageObjects, getService }) { maxzoom: 24, filter: [ 'all', + ['!=', ['get', '__kbn_too_many_features__'], true], + ['!=', ['get', '__kbn_is_centroid_feature__'], true], + ['any', ['==', ['geometry-type'], 'Polygon'], ['==', ['geometry-type'], 'MultiPolygon']], ['==', ['get', '__kbn_isvisibleduetojoin__'], true], - [ - 'all', - ['!=', ['get', '__kbn_too_many_features__'], true], - ['!=', ['get', '__kbn_is_centroid_feature__'], true], - [ - 'any', - ['==', ['geometry-type'], 'Polygon'], - ['==', ['geometry-type'], 'MultiPolygon'], - ], - ], ], layout: { visibility: 'visible' }, paint: { @@ -208,19 +198,16 @@ export default function ({ getPageObjects, getService }) { maxzoom: 24, filter: [ 'all', - ['==', ['get', '__kbn_isvisibleduetojoin__'], true], + ['!=', ['get', '__kbn_too_many_features__'], true], + ['!=', ['get', '__kbn_is_centroid_feature__'], true], [ - 'all', - ['!=', ['get', '__kbn_too_many_features__'], true], - ['!=', ['get', '__kbn_is_centroid_feature__'], true], - [ - 'any', - ['==', ['geometry-type'], 'Polygon'], - ['==', ['geometry-type'], 'MultiPolygon'], - ['==', ['geometry-type'], 'LineString'], - ['==', ['geometry-type'], 'MultiLineString'], - ], + 'any', + ['==', ['geometry-type'], 'Polygon'], + ['==', ['geometry-type'], 'MultiPolygon'], + ['==', ['geometry-type'], 'LineString'], + ['==', ['geometry-type'], 'MultiLineString'], ], + ['==', ['get', '__kbn_isvisibleduetojoin__'], true], ], layout: { visibility: 'visible' }, paint: { 'line-color': '#41937c', 'line-opacity': 0.75, 'line-width': 1 }, From c80713ea50bcb5bfb2fb80e077ac826c18d2db53 Mon Sep 17 00:00:00 2001 From: Domenico Andreoli Date: Tue, 11 May 2021 15:56:16 +0000 Subject: [PATCH 005/144] [docs] Remove extraneous backslash (#99802) --- .../contributing/development-functional-tests.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer/contributing/development-functional-tests.asciidoc b/docs/developer/contributing/development-functional-tests.asciidoc index f149e9de7aaba..110704a8e569a 100644 --- a/docs/developer/contributing/development-functional-tests.asciidoc +++ b/docs/developer/contributing/development-functional-tests.asciidoc @@ -140,7 +140,7 @@ export default function (/* { providerAPI } */) { ----------- **Services**::: -Services are named singleton values produced by a Service Provider. Tests and other services can retrieve service instances by asking for them by name. All functionality except the mocha API is exposed via services.\ +Services are named singleton values produced by a Service Provider. Tests and other services can retrieve service instances by asking for them by name. All functionality except the mocha API is exposed via services. **Page objects**::: Page objects are a special type of service that encapsulate behaviors common to a particular page or plugin. When you write your own plugin, you’ll likely want to add a page object (or several) that describes the common interactions your tests need to execute. From 9b640f3308efc88ff22100885446ae181756857b Mon Sep 17 00:00:00 2001 From: Larry Gregory Date: Tue, 11 May 2021 12:00:23 -0400 Subject: [PATCH 006/144] Don't retrieve the active space on anonymous pages (#99514) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- api_docs/spaces_oss.json | 21 ++++++++++--------- .../public/application/dashboard_router.tsx | 3 ++- src/plugins/spaces_oss/public/api.mock.ts | 2 +- src/plugins/spaces_oss/public/api.ts | 2 +- x-pack/plugins/spaces/public/plugin.tsx | 2 +- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/api_docs/spaces_oss.json b/api_docs/spaces_oss.json index bce557db8e516..a0ed4297ddc39 100644 --- a/api_docs/spaces_oss.json +++ b/api_docs/spaces_oss.json @@ -577,15 +577,11 @@ "deprecated": false, "children": [ { - "parentPluginId": "spacesOss", - "id": "def-public.SpacesApi.activeSpace$", - "type": "Object", - "tags": [], - "label": "activeSpace$", - "description": [ - "\nObservable representing the currently active space.\nThe details of the space can change without a full page reload (such as display name, color, etc.)" - ], + "id": "def-public.SpacesApi.getActiveSpace$", + "type": "Function", + "label": "getActiveSpace$", "signature": [ + "() => ", "Observable", "<", { @@ -597,11 +593,16 @@ }, ">" ], + "description": [ + "\nObservable representing the currently active space.\nThe details of the space can change without a full page reload (such as display name, color, etc.)" + ], + "children": [], + "tags": [], + "returnComment": [], "source": { "path": "src/plugins/spaces_oss/public/api.ts", "lineNumber": 22 - }, - "deprecated": false + } }, { "parentPluginId": "spacesOss", diff --git a/src/plugins/dashboard/public/application/dashboard_router.tsx b/src/plugins/dashboard/public/application/dashboard_router.tsx index ed68afc5e97b1..9050aee5ce38c 100644 --- a/src/plugins/dashboard/public/application/dashboard_router.tsx +++ b/src/plugins/dashboard/public/application/dashboard_router.tsx @@ -84,7 +84,8 @@ export async function mountApp({ } = pluginsStart; const spacesApi = pluginsStart.spacesOss?.isSpacesAvailable ? pluginsStart.spacesOss : undefined; - const activeSpaceId = spacesApi && (await spacesApi.activeSpace$.pipe(first()).toPromise())?.id; + const activeSpaceId = + spacesApi && (await spacesApi.getActiveSpace$().pipe(first()).toPromise())?.id; let globalEmbedSettings: DashboardEmbedSettings | undefined; const dashboardServices: DashboardAppServices = { diff --git a/src/plugins/spaces_oss/public/api.mock.ts b/src/plugins/spaces_oss/public/api.mock.ts index 84b22459a96e2..9ad7599b5ae61 100644 --- a/src/plugins/spaces_oss/public/api.mock.ts +++ b/src/plugins/spaces_oss/public/api.mock.ts @@ -11,7 +11,7 @@ import { of } from 'rxjs'; import type { SpacesApi, SpacesApiUi, SpacesApiUiComponent } from './api'; const createApiMock = (): jest.Mocked => ({ - activeSpace$: of(), + getActiveSpace$: jest.fn().mockReturnValue(of()), getActiveSpace: jest.fn(), ui: createApiUiMock(), }); diff --git a/src/plugins/spaces_oss/public/api.ts b/src/plugins/spaces_oss/public/api.ts index bd452c2fca00e..e460d9a43ef6b 100644 --- a/src/plugins/spaces_oss/public/api.ts +++ b/src/plugins/spaces_oss/public/api.ts @@ -19,7 +19,7 @@ export interface SpacesApi { * Observable representing the currently active space. * The details of the space can change without a full page reload (such as display name, color, etc.) */ - readonly activeSpace$: Observable; + getActiveSpace$(): Observable; /** * Retrieve the currently active space. diff --git a/x-pack/plugins/spaces/public/plugin.tsx b/x-pack/plugins/spaces/public/plugin.tsx index 8892671551896..1ba1cd1a1f3d4 100644 --- a/x-pack/plugins/spaces/public/plugin.tsx +++ b/x-pack/plugins/spaces/public/plugin.tsx @@ -59,7 +59,7 @@ export class SpacesPlugin implements Plugin this.spacesManager.onActiveSpaceChange$, getActiveSpace: () => this.spacesManager.getActiveSpace(), }; From 82ab5c50a48116dac8b8a657498bafad0ea2c11a Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Tue, 11 May 2021 12:32:17 -0400 Subject: [PATCH 007/144] move useSavedView context changes to outer layout container (#99411) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../inventory_view/components/layout.tsx | 346 +++++++++--------- .../inventory_view/components/layout_view.tsx | 15 + .../pages/metrics/inventory_view/index.tsx | 4 +- 3 files changed, 195 insertions(+), 170 deletions(-) create mode 100644 x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout_view.tsx diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx index 534132eb75fa1..2e79e7e4ab8c4 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx @@ -9,6 +9,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import useInterval from 'react-use/lib/useInterval'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; +import { SavedView } from '../../../../containers/saved_view/saved_view'; import { AutoSizer } from '../../../../components/auto_sizer'; import { convertIntervalToString } from '../../../../utils/convert_interval_to_string'; import { NodesOverview } from './nodes_overview'; @@ -26,182 +27,191 @@ import { ViewSwitcher } from './waffle/view_switcher'; import { IntervalLabel } from './waffle/interval_label'; import { createInventoryMetricFormatter } from '../lib/create_inventory_metric_formatter'; import { createLegend } from '../lib/create_legend'; -import { useSavedViewContext } from '../../../../containers/saved_view/saved_view'; import { useWaffleViewState } from '../hooks/use_waffle_view_state'; import { SavedViewsToolbarControls } from '../../../../components/saved_views/toolbar_control'; import { BottomDrawer } from './bottom_drawer'; import { Legend } from './waffle/legend'; -export const Layout = () => { - const [showLoading, setShowLoading] = useState(true); - const { sourceId, source } = useSourceContext(); - const { currentView, shouldLoadDefault } = useSavedViewContext(); - const { - metric, - groupBy, - sort, - nodeType, - accountId, - region, - changeView, - view, - autoBounds, - boundsOverride, - legend, - } = useWaffleOptionsContext(); - const { currentTime, jumpToTime, isAutoReloading } = useWaffleTimeContext(); - const { filterQueryAsJson, applyFilterQuery } = useWaffleFiltersContext(); - const { loading, nodes, reload, interval } = useSnapshot( - filterQueryAsJson, - [metric], - groupBy, - nodeType, - sourceId, - currentTime, - accountId, - region, - false - ); - - const legendPalette = legend?.palette ?? DEFAULT_LEGEND.palette; - const legendSteps = legend?.steps ?? DEFAULT_LEGEND.steps; - const legendReverseColors = legend?.reverseColors ?? DEFAULT_LEGEND.reverseColors; - - const options = { - formatter: InfraFormatterType.percent, - formatTemplate: '{{value}}', - legend: createLegend(legendPalette, legendSteps, legendReverseColors), - metric, - sort, - fields: source?.configuration?.fields, - groupBy, - }; - - useInterval( - () => { - if (!loading) { - jumpToTime(Date.now()); - } - }, - isAutoReloading ? 5000 : null - ); - - const intervalAsString = convertIntervalToString(interval); - const dataBounds = calculateBoundsFromNodes(nodes); - const bounds = autoBounds ? dataBounds : boundsOverride; - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - const formatter = useCallback(createInventoryMetricFormatter(options.metric), [options.metric]); - const { viewState, onViewChange } = useWaffleViewState(); - - useEffect(() => { - if (currentView) { - onViewChange(currentView); - } - }, [currentView, onViewChange]); - - useEffect(() => { - // load snapshot data after default view loaded, unless we're not loading a view - if (currentView != null || !shouldLoadDefault) { - reload(); - } - - /** - * INFO: why disable exhaustive-deps - * We need to wait on the currentView not to be null because it is loaded async and could change the view state. - * We don't actually need to watch the value of currentView though, since the view state will be synched up by the - * changing params in the reload method so we should only "watch" the reload method. - * - * TODO: Should refactor this in the future to make it more clear where all the view state is coming - * from and it's precedence [query params, localStorage, defaultView, out of the box view] - */ +export const Layout = React.memo( + ({ + shouldLoadDefault, + currentView, + }: { + shouldLoadDefault: boolean; + currentView: SavedView | null; + }) => { + const [showLoading, setShowLoading] = useState(true); + const { sourceId, source } = useSourceContext(); + const { + metric, + groupBy, + sort, + nodeType, + accountId, + region, + changeView, + view, + autoBounds, + boundsOverride, + legend, + } = useWaffleOptionsContext(); + const { currentTime, jumpToTime, isAutoReloading } = useWaffleTimeContext(); + const { filterQueryAsJson, applyFilterQuery } = useWaffleFiltersContext(); + const { loading, nodes, reload, interval } = useSnapshot( + filterQueryAsJson, + [metric], + groupBy, + nodeType, + sourceId, + currentTime, + accountId, + region, + false + ); + + const legendPalette = legend?.palette ?? DEFAULT_LEGEND.palette; + const legendSteps = legend?.steps ?? DEFAULT_LEGEND.steps; + const legendReverseColors = legend?.reverseColors ?? DEFAULT_LEGEND.reverseColors; + + const options = { + formatter: InfraFormatterType.percent, + formatTemplate: '{{value}}', + legend: createLegend(legendPalette, legendSteps, legendReverseColors), + metric, + sort, + fields: source?.configuration?.fields, + groupBy, + }; + + useInterval( + () => { + if (!loading) { + jumpToTime(Date.now()); + } + }, + isAutoReloading ? 5000 : null + ); + + const intervalAsString = convertIntervalToString(interval); + const dataBounds = calculateBoundsFromNodes(nodes); + const bounds = autoBounds ? dataBounds : boundsOverride; /* eslint-disable-next-line react-hooks/exhaustive-deps */ - }, [reload, shouldLoadDefault]); - - useEffect(() => { - setShowLoading(true); - }, [options.metric, nodeType]); - - useEffect(() => { - const hasNodes = nodes && nodes.length; - // Don't show loading screen when we're auto-reloading - setShowLoading(!hasNodes); - }, [nodes]); - - return ( - <> - - - {({ measureRef: pageMeasureRef, bounds: { width = 0 } }) => ( - - - {({ measureRef: topActionMeasureRef, bounds: { height: topActionHeight = 0 } }) => ( - <> - - - - - - - - - - - - - - - - - {({ measureRef, bounds: { height = 0 } }) => ( - <> - - {view === 'map' && ( - { + if (currentView) { + onViewChange(currentView); + } + }, [currentView, onViewChange]); + + useEffect(() => { + // load snapshot data after default view loaded, unless we're not loading a view + if (currentView != null || !shouldLoadDefault) { + reload(); + } + + /** + * INFO: why disable exhaustive-deps + * We need to wait on the currentView not to be null because it is loaded async and could change the view state. + * We don't actually need to watch the value of currentView though, since the view state will be synched up by the + * changing params in the reload method so we should only "watch" the reload method. + * + * TODO: Should refactor this in the future to make it more clear where all the view state is coming + * from and it's precedence [query params, localStorage, defaultView, out of the box view] + */ + /* eslint-disable-next-line react-hooks/exhaustive-deps */ + }, [reload, shouldLoadDefault]); + + useEffect(() => { + setShowLoading(true); + }, [options.metric, nodeType]); + + useEffect(() => { + const hasNodes = nodes && nodes.length; + // Don't show loading screen when we're auto-reloading + setShowLoading(!hasNodes); + }, [nodes]); + + return ( + <> + + + {({ measureRef: pageMeasureRef, bounds: { width = 0 } }) => ( + + + {({ + measureRef: topActionMeasureRef, + bounds: { height: topActionHeight = 0 }, + }) => ( + <> + + + + + + + + + + + + + + + + + {({ measureRef, bounds: { height = 0 } }) => ( + <> + - + {view === 'map' && ( + - - )} - - )} - - - )} - - - )} - - - - ); -}; + width={width} + > + + + )} + + )} + + + )} + + + )} + + + + ); + } +); const MainContainer = euiStyled.div` position: relative; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout_view.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout_view.tsx new file mode 100644 index 0000000000000..1e66fe22ac45e --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout_view.tsx @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { useSavedViewContext } from '../../../../containers/saved_view/saved_view'; +import { Layout } from './layout'; + +export const LayoutView = () => { + const { shouldLoadDefault, currentView } = useSavedViewContext(); + return ; +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/index.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/index.tsx index 57073fee13c18..81a8d1ae8d294 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/index.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/index.tsx @@ -21,7 +21,7 @@ import { ViewSourceConfigurationButton } from '../../../components/source_config import { Source } from '../../../containers/metrics_source'; import { useTrackPageview } from '../../../../../observability/public'; import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; -import { Layout } from './components/layout'; +import { LayoutView } from './components/layout_view'; import { useLinkProps } from '../../../hooks/use_link_props'; import { SavedViewProvider } from '../../../containers/saved_view/saved_view'; import { DEFAULT_WAFFLE_VIEW_STATE } from './hooks/use_waffle_view_state'; @@ -69,7 +69,7 @@ export const SnapshotPage = () => { viewType={'inventory-view'} defaultViewState={DEFAULT_WAFFLE_VIEW_STATE} > - + ) : hasFailedLoadingSource ? ( From 3f1fbe16c771fb16b64dbfc57eeb67572a3ee648 Mon Sep 17 00:00:00 2001 From: Lukas Olson Date: Tue, 11 May 2021 09:45:20 -0700 Subject: [PATCH 008/144] Fix bug with scripted number range filters (#99554) --- .../es_query/filters/range_filter.test.ts | 23 +++++++++++++++++++ .../common/es_query/filters/range_filter.ts | 5 +++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/plugins/data/common/es_query/filters/range_filter.test.ts b/src/plugins/data/common/es_query/filters/range_filter.test.ts index c7ff84f61d0fc..bb7ecc09ebc34 100644 --- a/src/plugins/data/common/es_query/filters/range_filter.test.ts +++ b/src/plugins/data/common/es_query/filters/range_filter.test.ts @@ -64,6 +64,29 @@ describe('Range filter builder', () => { }); }); + it('should convert strings to numbers if the field is scripted and type number', () => { + const field = getField('script number'); + + expect(buildRangeFilter(field, { gte: '1', lte: '3' }, indexPattern)).toEqual({ + meta: { + field: 'script number', + index: 'id', + params: {}, + }, + script: { + script: { + lang: 'expression', + source: '(' + field!.script + ')>=gte && (' + field!.script + ')<=lte', + params: { + value: '>=1 <=3', + gte: 1, + lte: 3, + }, + }, + }, + }); + }); + it('should wrap painless scripts in comparator lambdas', () => { const field = getField('script date'); const expected = diff --git a/src/plugins/data/common/es_query/filters/range_filter.ts b/src/plugins/data/common/es_query/filters/range_filter.ts index ba9055e26dbda..fb8426655583e 100644 --- a/src/plugins/data/common/es_query/filters/range_filter.ts +++ b/src/plugins/data/common/es_query/filters/range_filter.ts @@ -138,7 +138,10 @@ export const buildRangeFilter = ( }; export const getRangeScript = (field: IFieldType, params: RangeFilterParams) => { - const knownParams = pickBy(params, (val, key: any) => key in operators); + const knownParams = mapValues( + pickBy(params, (val, key: any) => key in operators), + (value) => (field.type === 'number' && typeof value === 'string' ? parseFloat(value) : value) + ); let script = map( knownParams, (val: any, key: string) => '(' + field.script + ')' + get(operators, key) + key From 087cb5275ad0e6dfba14433a835efbd02669d7bd Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 11 May 2021 11:46:18 -0500 Subject: [PATCH 009/144] [packages] Fix import path in securitysolutions-io-ts-utils (#99797) --- .../src/non_empty_string_array/index.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts index f56fa7faed2a4..9fec36f46dd27 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { foldLeftRight, getPaths } from '../test_utils'; import { NonEmptyStringArray } from '.'; describe('non_empty_string_array', () => { From 56908e1739bafddb92ea001d0f39e30ac03d0cd8 Mon Sep 17 00:00:00 2001 From: Jason Stoltzfus Date: Tue, 11 May 2021 13:11:32 -0400 Subject: [PATCH 010/144] Support prepopulated Search UI fields (#99793) --- .../search_ui/search_ui_logic.test.ts | 12 ++++++- .../components/search_ui/search_ui_logic.ts | 32 +++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.test.ts index 7459f541fc4e7..2191c633131bb 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.test.ts @@ -128,6 +128,10 @@ describe('SearchUILogic', () => { validFields: ['test'], validSortFields: ['test'], validFacetFields: ['test'], + defaultValues: { + urlField: 'url', + titleField: 'title', + }, }; describe('loadFieldData', () => { @@ -142,7 +146,13 @@ describe('SearchUILogic', () => { expect(http.get).toHaveBeenCalledWith( '/api/app_search/engines/engine1/search_ui/field_config' ); - expect(SearchUILogic.actions.onFieldDataLoaded).toHaveBeenCalledWith(MOCK_RESPONSE); + expect(SearchUILogic.actions.onFieldDataLoaded).toHaveBeenCalledWith({ + validFields: ['test'], + validSortFields: ['test'], + validFacetFields: ['test'], + urlField: 'url', + titleField: 'title', + }); }); it('handles errors', async () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.ts index 35a513df52c65..c9e2e5623d9fd 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/search_ui_logic.ts @@ -17,6 +17,8 @@ interface InitialFieldValues { validFields: string[]; validSortFields: string[]; validFacetFields: string[]; + urlField?: string; + titleField?: string; } interface SearchUIActions { loadFieldData(): void; @@ -61,8 +63,20 @@ export const SearchUILogic = kea> validFields: [[], { onFieldDataLoaded: (_, { validFields }) => validFields }], validSortFields: [[], { onFieldDataLoaded: (_, { validSortFields }) => validSortFields }], validFacetFields: [[], { onFieldDataLoaded: (_, { validFacetFields }) => validFacetFields }], - titleField: ['', { onTitleFieldChange: (_, { titleField }) => titleField }], - urlField: ['', { onUrlFieldChange: (_, { urlField }) => urlField }], + titleField: [ + '', + { + onTitleFieldChange: (_, { titleField }) => titleField, + onFieldDataLoaded: (_, { titleField }) => titleField || '', + }, + ], + urlField: [ + '', + { + onUrlFieldChange: (_, { urlField }) => urlField, + onFieldDataLoaded: (_, { urlField }) => urlField || '', + }, + ], facetFields: [[], { onFacetFieldsChange: (_, { facetFields }) => facetFields }], sortFields: [[], { onSortFieldsChange: (_, { sortFields }) => sortFields }], activeField: [ActiveField.None, { onActiveFieldChange: (_, { activeField }) => activeField }], @@ -76,8 +90,20 @@ export const SearchUILogic = kea> try { const initialFieldValues = await http.get(url); + const { + defaultValues: { urlField, titleField }, + validFields, + validSortFields, + validFacetFields, + } = initialFieldValues; - actions.onFieldDataLoaded(initialFieldValues); + actions.onFieldDataLoaded({ + validFields, + validSortFields, + validFacetFields, + urlField, + titleField, + }); } catch (e) { flashAPIErrors(e); } From 14f225fbd4554d044eccc034647cf3cbcbe88338 Mon Sep 17 00:00:00 2001 From: Kaarina Tungseth Date: Tue, 11 May 2021 12:34:55 -0500 Subject: [PATCH 011/144] [DOCS] Adds `dual mode` to TSVB (#99493) * [DOCS] Adds to TSVB * Fixes {es} typo * Review comment --- docs/user/dashboard/tsvb.asciidoc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/user/dashboard/tsvb.asciidoc b/docs/user/dashboard/tsvb.asciidoc index ff1c16c14d467..5c4ce8e365e86 100644 --- a/docs/user/dashboard/tsvb.asciidoc +++ b/docs/user/dashboard/tsvb.asciidoc @@ -2,7 +2,8 @@ === TSVB *TSVB* enables you to visualize the data from multiple data series, supports <>, multiple visualization types, custom functions, and some math. To use *TSVB*, your data must have a date field. +most {es} metric aggregations>>, multiple visualization types, custom functions, and some math. +To create *TSVB* visualization panels, your data must have a time field. [role="screenshot"] image::visualize/images/tsvb-screenshot.png[TSVB overview] @@ -17,15 +18,19 @@ Open *TSVB*, then make sure the required settings are configured. . On the *New visualization* window, click *TSVB*. -. In *TSVB*, click *Panel options*, then make sure the following settings are configured: +. In *TSVB*, click *Panel options*, then specify the required *Data* settings. -* *Index pattern* -* *Time field* -* *Interval* +.. From the *Index pattern* dropdown, select the index pattern you want to visualize. ++ +To visualize an {es} index, open the *Index pattern select mode* menu, deselect *Use only {kib} index patterns*, then enter the {es} index. + +.. From the *Time field* dropdown, select the field you want to visualize, then enter the field *Interval*. -. Select a *Drop last bucket* option. It is dropped by default because the time filter intersects the time range of the last bucket, but can be enabled to see the partial data. +.. Select a *Drop last bucket* option. ++ +By default, *TSVB* drops the last bucket because the time filter intersects the time range of the last bucket. To view the partial data, select *No*. -. In the *Panel filter* field, specify any <> to select specific documents. +.. In the *Panel filter* field, enter <> to view specific documents. [float] [[configure-the-data-series]] From d5a16f438c4c0f067de83ed8b04efdf9cf9c241d Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Tue, 11 May 2021 13:40:06 -0400 Subject: [PATCH 012/144] [ML] Data vizualizer: add choropleth map for index and file (#99434) * wip: add choropleth map to dataviz * add choropleth map to datavisualizer index and file based * fix translation * make function name more clear --- .../choropleth_map.tsx | 126 ++++++++++++++++++ .../keyword_content.tsx | 40 +++++- .../ml/common/constants/embeddable_map.ts | 13 ++ .../choropleth_map/choropleth_map.tsx | 126 ++++++++++++++++++ .../field_data_row/choropleth_map/index.ts | 8 ++ .../keyword_content.tsx | 37 ++++- .../application/explorer/anomalies_map.tsx | 7 +- 7 files changed, 344 insertions(+), 13 deletions(-) create mode 100644 x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/choropleth_map.tsx create mode 100644 x-pack/plugins/ml/common/constants/embeddable_map.ts create mode 100644 x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/choropleth_map.tsx create mode 100644 x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/index.ts diff --git a/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/choropleth_map.tsx b/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/choropleth_map.tsx new file mode 100644 index 0000000000000..acbb77a7e0cac --- /dev/null +++ b/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/choropleth_map.tsx @@ -0,0 +1,126 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC, useMemo } from 'react'; +import { EuiFlexItem, EuiSpacer, EuiText, htmlIdGenerator } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + FIELD_ORIGIN, + SOURCE_TYPES, + STYLE_TYPE, + COLOR_MAP_TYPE, +} from '../../../../../../../maps/common/constants'; +import { EMSTermJoinConfig } from '../../../../../../../maps/public'; +import { FieldVisStats } from '../../types'; +import { VectorLayerDescriptor } from '../../../../../../../maps/common/descriptor_types'; +import { EmbeddedMapComponent } from '../../../embedded_map'; + +export const getChoroplethTopValuesLayer = ( + fieldName: string, + topValues: Array<{ key: any; doc_count: number }>, + { layerId, field }: EMSTermJoinConfig +): VectorLayerDescriptor => { + return { + id: htmlIdGenerator()(), + label: i18n.translate('xpack.fileDataVisualizer.choroplethMap.topValuesCount', { + defaultMessage: 'Top values count for {fieldName}', + values: { fieldName }, + }), + joins: [ + { + // Left join is the id from the type of field (e.g. world_countries) + leftField: field, + right: { + id: 'anomaly_count', + type: SOURCE_TYPES.TABLE_SOURCE, + __rows: topValues, + __columns: [ + { + name: 'key', + type: 'string', + }, + { + name: 'doc_count', + type: 'number', + }, + ], + // Right join/term is the field in the doc you’re trying to join it to (foreign key - e.g. US) + term: 'key', + }, + }, + ], + sourceDescriptor: { + type: 'EMS_FILE', + id: layerId, + }, + style: { + type: 'VECTOR', + // @ts-ignore missing style properties. Remove once 'VectorLayerDescriptor' type is updated + properties: { + icon: { type: STYLE_TYPE.STATIC, options: { value: 'marker' } }, + fillColor: { + type: STYLE_TYPE.DYNAMIC, + options: { + color: 'Blue to Red', + colorCategory: 'palette_0', + fieldMetaOptions: { isEnabled: true, sigma: 3 }, + type: COLOR_MAP_TYPE.ORDINAL, + field: { + name: 'doc_count', + origin: FIELD_ORIGIN.JOIN, + }, + useCustomColorRamp: false, + }, + }, + lineColor: { + type: STYLE_TYPE.DYNAMIC, + options: { fieldMetaOptions: { isEnabled: true } }, + }, + lineWidth: { type: STYLE_TYPE.STATIC, options: { size: 1 } }, + }, + isTimeAware: true, + }, + type: 'VECTOR', + }; +}; + +interface Props { + stats: FieldVisStats | undefined; + suggestion: EMSTermJoinConfig; +} + +export const ChoroplethMap: FC = ({ stats, suggestion }) => { + const { fieldName, isTopValuesSampled, topValues, topValuesSamplerShardSize } = stats!; + + const layerList: VectorLayerDescriptor[] = useMemo( + () => [getChoroplethTopValuesLayer(fieldName || '', topValues || [], suggestion)], + [suggestion, fieldName, topValues] + ); + + return ( + +
+ +
+ {isTopValuesSampled === true && ( + <> + + + + + + )} +
+ ); +}; diff --git a/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/keyword_content.tsx b/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/keyword_content.tsx index 3f1a7aad5463f..6448883bfce73 100644 --- a/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/keyword_content.tsx +++ b/x-pack/plugins/file_data_visualizer/public/application/components/stats_table/components/field_data_expanded_row/keyword_content.tsx @@ -5,21 +5,55 @@ * 2.0. */ -import React, { FC } from 'react'; +import React, { FC, useCallback, useEffect, useState } from 'react'; import type { FieldDataRowProps } from '../../types/field_data_row'; import { TopValues } from '../../../top_values'; +import { EMSTermJoinConfig } from '../../../../../../../maps/public'; +import { useFileDataVisualizerKibana } from '../../../../kibana_context'; import { DocumentStatsTable } from './document_stats'; import { ExpandedRowContent } from './expanded_row_content'; +import { ChoroplethMap } from './choropleth_map'; + +const COMMON_EMS_LAYER_IDS = [ + 'world_countries', + 'administrative_regions_lvl2', + 'usa_zip_codes', + 'usa_states', +]; export const KeywordContent: FC = ({ config }) => { - const { stats } = config; + const [EMSSuggestion, setEMSSuggestion] = useState(); + const { stats, fieldName } = config; const fieldFormat = 'fieldFormat' in config ? config.fieldFormat : undefined; + const { + services: { maps: mapsPlugin }, + } = useFileDataVisualizerKibana(); + + const loadEMSTermSuggestions = useCallback(async () => { + if (!mapsPlugin) return; + const suggestion: EMSTermJoinConfig | null = await mapsPlugin.suggestEMSTermJoinConfig({ + emsLayerIds: COMMON_EMS_LAYER_IDS, + sampleValues: Array.isArray(stats?.topValues) + ? stats?.topValues.map((value) => value.key) + : [], + sampleValuesColumnName: fieldName || '', + }); + setEMSSuggestion(suggestion); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [fieldName]); + + useEffect( + function getInitialEMSTermSuggestion() { + loadEMSTermSuggestions(); + }, + [loadEMSTermSuggestions] + ); return ( - + {EMSSuggestion && stats && } ); }; diff --git a/x-pack/plugins/ml/common/constants/embeddable_map.ts b/x-pack/plugins/ml/common/constants/embeddable_map.ts new file mode 100644 index 0000000000000..6cb345bae630e --- /dev/null +++ b/x-pack/plugins/ml/common/constants/embeddable_map.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const COMMON_EMS_LAYER_IDS = [ + 'world_countries', + 'administrative_regions_lvl2', + 'usa_zip_codes', + 'usa_states', +]; diff --git a/x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/choropleth_map.tsx b/x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/choropleth_map.tsx new file mode 100644 index 0000000000000..8b7cbf83f7996 --- /dev/null +++ b/x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/choropleth_map.tsx @@ -0,0 +1,126 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC, useMemo } from 'react'; +import { EuiFlexItem, EuiSpacer, EuiText, htmlIdGenerator } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + FIELD_ORIGIN, + SOURCE_TYPES, + STYLE_TYPE, + COLOR_MAP_TYPE, +} from '../../../../../../../../maps/common/constants'; +import { EMSTermJoinConfig } from '../../../../../../../../maps/public'; +import { FieldVisStats } from '../../../../stats_table/types'; +import { VectorLayerDescriptor } from '../../../../../../../../maps/common/descriptor_types'; +import { MlEmbeddedMapComponent } from '../../../../../components/ml_embedded_map'; + +export const getChoroplethTopValuesLayer = ( + fieldName: string, + topValues: Array<{ key: any; doc_count: number }>, + { layerId, field }: EMSTermJoinConfig +): VectorLayerDescriptor => { + return { + id: htmlIdGenerator()(), + label: i18n.translate('xpack.ml.dataviz.choroplethMap.topValuesCount', { + defaultMessage: 'Top values count for {fieldName}', + values: { fieldName }, + }), + joins: [ + { + // Left join is the id from the type of field (e.g. world_countries) + leftField: field, + right: { + id: 'anomaly_count', + type: SOURCE_TYPES.TABLE_SOURCE, + __rows: topValues, + __columns: [ + { + name: 'key', + type: 'string', + }, + { + name: 'doc_count', + type: 'number', + }, + ], + // Right join/term is the field in the doc you’re trying to join it to (foreign key - e.g. US) + term: 'key', + }, + }, + ], + sourceDescriptor: { + type: 'EMS_FILE', + id: layerId, + }, + style: { + type: 'VECTOR', + // @ts-ignore missing style properties. Remove once 'VectorLayerDescriptor' type is updated + properties: { + icon: { type: STYLE_TYPE.STATIC, options: { value: 'marker' } }, + fillColor: { + type: STYLE_TYPE.DYNAMIC, + options: { + color: 'Blue to Red', + colorCategory: 'palette_0', + fieldMetaOptions: { isEnabled: true, sigma: 3 }, + type: COLOR_MAP_TYPE.ORDINAL, + field: { + name: 'doc_count', + origin: FIELD_ORIGIN.JOIN, + }, + useCustomColorRamp: false, + }, + }, + lineColor: { + type: STYLE_TYPE.DYNAMIC, + options: { fieldMetaOptions: { isEnabled: true } }, + }, + lineWidth: { type: STYLE_TYPE.STATIC, options: { size: 1 } }, + }, + isTimeAware: true, + }, + type: 'VECTOR', + }; +}; + +interface Props { + stats: FieldVisStats | undefined; + suggestion: EMSTermJoinConfig; +} + +export const ChoroplethMap: FC = ({ stats, suggestion }) => { + const { fieldName, isTopValuesSampled, topValues, topValuesSamplerShardSize } = stats!; + + const layerList: VectorLayerDescriptor[] = useMemo( + () => [getChoroplethTopValuesLayer(fieldName || '', topValues || [], suggestion)], + [suggestion, stats] + ); + + return ( + +
+ +
+ {isTopValuesSampled === true && ( + <> + + + + + + )} +
+ ); +}; diff --git a/x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/index.ts b/x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/index.ts new file mode 100644 index 0000000000000..6159b5e2ad9bb --- /dev/null +++ b/x-pack/plugins/ml/public/application/datavisualizer/index_based/components/field_data_row/choropleth_map/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { ChoroplethMap } from './choropleth_map'; diff --git a/x-pack/plugins/ml/public/application/datavisualizer/stats_table/components/field_data_expanded_row/keyword_content.tsx b/x-pack/plugins/ml/public/application/datavisualizer/stats_table/components/field_data_expanded_row/keyword_content.tsx index 9d4e13c291656..9239632a3f909 100644 --- a/x-pack/plugins/ml/public/application/datavisualizer/stats_table/components/field_data_expanded_row/keyword_content.tsx +++ b/x-pack/plugins/ml/public/application/datavisualizer/stats_table/components/field_data_expanded_row/keyword_content.tsx @@ -5,21 +5,50 @@ * 2.0. */ -import React, { FC } from 'react'; +import React, { FC, useEffect, useState } from 'react'; import type { FieldDataRowProps } from '../../types/field_data_row'; import { TopValues } from '../../../index_based/components/field_data_row/top_values'; +import { ChoroplethMap } from '../../../index_based/components/field_data_row/choropleth_map'; +import { useMlKibana } from '../../../../../application/contexts/kibana'; +import { EMSTermJoinConfig } from '../../../../../../../maps/public'; +import { COMMON_EMS_LAYER_IDS } from '../../../../../../common/constants/embeddable_map'; import { DocumentStatsTable } from './document_stats'; import { ExpandedRowContent } from './expanded_row_content'; export const KeywordContent: FC = ({ config }) => { - const { stats } = config; + const [EMSSuggestion, setEMSSuggestion] = useState(); + const { stats, fieldName } = config; const fieldFormat = 'fieldFormat' in config ? config.fieldFormat : undefined; + const { + services: { maps: mapsPlugin }, + } = useMlKibana(); + + const loadEMSTermSuggestions = async () => { + if (!mapsPlugin) return; + const suggestion: EMSTermJoinConfig | null = await mapsPlugin.suggestEMSTermJoinConfig({ + emsLayerIds: COMMON_EMS_LAYER_IDS, + sampleValues: Array.isArray(stats?.topValues) + ? stats?.topValues.map((value) => value.key) + : [], + sampleValuesColumnName: fieldName || '', + }); + setEMSSuggestion(suggestion); + }; + + useEffect( + function getInitialEMSTermSuggestion() { + loadEMSTermSuggestions(); + }, + [config?.fieldName] + ); return ( - - + {EMSSuggestion && stats && } + {EMSSuggestion === null && ( + + )} ); }; diff --git a/x-pack/plugins/ml/public/application/explorer/anomalies_map.tsx b/x-pack/plugins/ml/public/application/explorer/anomalies_map.tsx index 7914061dc81c7..73a6a9d64b60e 100644 --- a/x-pack/plugins/ml/public/application/explorer/anomalies_map.tsx +++ b/x-pack/plugins/ml/public/application/explorer/anomalies_map.tsx @@ -28,14 +28,9 @@ import { isDefined } from '../../../common/types/guards'; import { MlEmbeddedMapComponent } from '../components/ml_embedded_map'; import { EMSTermJoinConfig } from '../../../../maps/public'; import { AnomaliesTableRecord } from '../../../common/types/anomalies'; +import { COMMON_EMS_LAYER_IDS } from '../../../common/constants/embeddable_map'; const MAX_ENTITY_VALUES = 3; -const COMMON_EMS_LAYER_IDS = [ - 'world_countries', - 'administrative_regions_lvl2', - 'usa_zip_codes', - 'usa_states', -]; function getAnomalyRows(anomalies: AnomaliesTableRecord[], jobId: string) { const anomalyRows: Record< From f058d27d16fa1384ec5434dc4be75a9cfa4591c2 Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Tue, 11 May 2021 14:26:52 -0400 Subject: [PATCH 013/144] Add Component Integration Test for Append Processor (#95001) * Added first steps for append processor test and added data test subject for append processor input combo box. * Added first steps for append processor test and added data test subject for append processor input combo box. * Fixed assertion for processor. * Merged in newer test functionality and used it in the append processor test. * Fixed asssertion and form to use append box. * Update snapshot. * Fixed assertion for array. * Made changes per notes in PR. * Used common fields var in test. * Fixed merge conflict. * Fixed unused vars and added data test subject to helper file. * Removed this snapshot that was erronously added to PR due to a merge conflict. * Removed old common field var from uri tests. * Fixed nits in PR in all tet files. Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../__jest__/processors/append.test.tsx | 118 ++++++++++++++++++ .../__jest__/processors/bytes.test.tsx | 35 ++---- .../__jest__/processors/processor.helpers.tsx | 1 + .../__jest__/processors/uri_parts.test.tsx | 33 ++--- .../processor_form/processors/append.tsx | 7 +- 5 files changed, 149 insertions(+), 45 deletions(-) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx new file mode 100644 index 0000000000000..af3651525d6a3 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/append.test.tsx @@ -0,0 +1,118 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; +import { setup, SetupResult, getProcessorValue } from './processor.helpers'; + +const APPEND_TYPE = 'append'; + +describe('Processor: Append', () => { + let onUpdate: jest.Mock; + let testBed: SetupResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(async () => { + onUpdate = jest.fn(); + + await act(async () => { + testBed = await setup({ + value: { + processors: [], + }, + onFlyoutOpen: jest.fn(), + onUpdate, + }); + }); + testBed.component.update(); + const { + actions: { addProcessor, addProcessorType }, + } = testBed; + // Open the processor flyout + addProcessor(); + + // Add type (the other fields are not visible until a type is selected) + await addProcessorType(APPEND_TYPE); + }); + + test('prevents form submission if required fields are not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Click submit button with only the type defined + await saveNewProcessor(); + + // Expect form error as "field" and "value" are required parameters + expect(form.getErrorsMessages()).toEqual([ + 'A field value is required.', + 'A value is required.', + ]); + }); + + test('saves with required parameter values', async () => { + const { + actions: { saveNewProcessor }, + form, + find, + component, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field_1'); + + await act(async () => { + find('appendValueField.input').simulate('change', [{ label: 'Some_Value' }]); + }); + component.update(); + + // Save the field + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, APPEND_TYPE); + expect(processors[0].append).toEqual({ + field: 'field_1', + value: ['Some_Value'], + }); + }); + + test('allows optional parameters to be set', async () => { + const { + actions: { saveNewProcessor }, + form, + find, + component, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field_1'); + + // Set optional parameteres + await act(async () => { + find('appendValueField.input').simulate('change', [{ label: 'Some_Value' }]); + component.update(); + }); + + form.toggleEuiSwitch('ignoreFailureSwitch.input'); + // Save the field with new changes + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, APPEND_TYPE); + expect(processors[0].append).toEqual({ + field: 'field_1', + ignore_failure: true, + value: ['Some_Value'], + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx index af4f6e468ca36..51117c3b517f9 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/bytes.test.tsx @@ -35,24 +35,21 @@ describe('Processor: Bytes', () => { }); }); testBed.component.update(); - }); - - test('prevents form submission if required fields are not provided', async () => { const { - actions: { addProcessor, saveNewProcessor, addProcessorType }, - form, + actions: { addProcessor, addProcessorType }, } = testBed; - - // Open flyout to add new processor + // Open the processor flyout addProcessor(); - // Click submit button without entering any fields - await saveNewProcessor(); - - // Expect form error as a processor type is required - expect(form.getErrorsMessages()).toEqual(['A type is required.']); // Add type (the other fields are not visible until a type is selected) await addProcessorType(BYTES_TYPE); + }); + + test('prevents form submission if required fields are not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; // Click submit button with only the type defined await saveNewProcessor(); @@ -61,16 +58,12 @@ describe('Processor: Bytes', () => { expect(form.getErrorsMessages()).toEqual(['A field value is required.']); }); - test('saves with default parameter values', async () => { + test('saves with required parameter values', async () => { const { - actions: { addProcessor, saveNewProcessor, addProcessorType }, + actions: { saveNewProcessor }, form, } = testBed; - // Open flyout to add new processor - addProcessor(); - // Add type (the other fields are not visible until a type is selected) - await addProcessorType(BYTES_TYPE); // Add "field" value (required) form.setInputValue('fieldNameField.input', 'field_1'); // Save the field @@ -84,14 +77,10 @@ describe('Processor: Bytes', () => { test('allows optional parameters to be set', async () => { const { - actions: { addProcessor, addProcessorType, saveNewProcessor }, + actions: { saveNewProcessor }, form, } = testBed; - // Open flyout to add new processor - addProcessor(); - // Add type (the other fields are not visible until a type is selected) - await addProcessorType(BYTES_TYPE); // Add "field" value (required) form.setInputValue('fieldNameField.input', 'field_1'); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx index 8616241a43d8d..68f494a56af5d 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx @@ -137,6 +137,7 @@ type TestSubject = | 'addProcessorForm.submitButton' | 'addProcessorButton' | 'addProcessorForm.submitButton' + | 'appendValueField.input' | 'processorTypeSelector.input' | 'fieldNameField.input' | 'mockCodeEditor' diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx index 573adad3247f5..442788a7f75aa 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/uri_parts.test.tsx @@ -12,8 +12,6 @@ import { setup, SetupResult, getProcessorValue } from './processor.helpers'; const defaultUriPartsParameters = { keep_original: undefined, remove_if_successful: undefined, - ignore_failure: undefined, - description: undefined, }; const URI_PARTS_TYPE = 'uri_parts'; @@ -43,19 +41,22 @@ describe('Processor: URI parts', () => { }); }); testBed.component.update(); - }); - test('prevents form submission if required fields are not provided', async () => { const { - actions: { addProcessor, saveNewProcessor, addProcessorType }, - form, + actions: { addProcessor, addProcessorType }, } = testBed; - - // Open flyout to add new processor + // Open the processor flyout addProcessor(); // Add type (the other fields are not visible until a type is selected) await addProcessorType(URI_PARTS_TYPE); + }); + + test('prevents form submission if required fields are not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; // Click submit button with only the type defined await saveNewProcessor(); @@ -64,16 +65,12 @@ describe('Processor: URI parts', () => { expect(form.getErrorsMessages()).toEqual(['A field value is required.']); }); - test('saves with default parameter values', async () => { + test('saves with required parameter values', async () => { const { - actions: { addProcessor, saveNewProcessor, addProcessorType }, + actions: { saveNewProcessor }, form, } = testBed; - // Open flyout to add new processor - addProcessor(); - // Add type (the other fields are not visible until a type is selected) - await addProcessorType(URI_PARTS_TYPE); // Add "field" value (required) form.setInputValue('fieldNameField.input', 'field_1'); // Save the field @@ -88,14 +85,10 @@ describe('Processor: URI parts', () => { test('allows optional parameters to be set', async () => { const { - actions: { addProcessor, addProcessorType, saveNewProcessor }, + actions: { saveNewProcessor }, form, } = testBed; - // Open flyout to add new processor - addProcessor(); - // Add type (the other fields are not visible until a type is selected) - await addProcessorType(URI_PARTS_TYPE); // Add "field" value (required) form.setInputValue('fieldNameField.input', 'field_1'); @@ -109,9 +102,7 @@ describe('Processor: URI parts', () => { const processors = getProcessorValue(onUpdate, URI_PARTS_TYPE); expect(processors[0].uri_parts).toEqual({ - description: undefined, field: 'field_1', - ignore_failure: undefined, keep_original: false, remove_if_successful: true, target_field: 'target_field', diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx index d10347b4d9655..fde39e7462009 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/append.tsx @@ -52,7 +52,12 @@ export const Append: FunctionComponent = () => { })} /> - + ); }; From c28213b6c3b49dff146484a20303559126edd13f Mon Sep 17 00:00:00 2001 From: Constance Date: Tue, 11 May 2021 11:48:08 -0700 Subject: [PATCH 014/144] [App Search] Schema: Set up server routes, grand foray into shared/connected Kea logic (#99548) * Set up server API routes * Set up types * Set up shared/base Schema logic file - values & actions shared between both default source engine & meta engine pages * Add default/indexed engine SchemaLogic * Add MetaEnginesSchemaLogic - significantly different actions (no updating) & API response from source engines, hence the separate files + fix typing issue - without Partial<>, all 4 enum types are expected instead of 1-4 - for some reason this causes an error in a separate a util file, not sure why (Typescript issue?) * Update Schema & MetaEngineSchema views with loaders * PR feedback: comment nit * PR feedback: Remove unnecessary async/awaits * PR feedback: Simplify loadSchema to be shared by base logic Much clean, such simple Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../engines/components/tables/utils.ts | 2 +- .../app_search/components/schema/constants.ts | 15 + .../schema/schema_base_logic.test.ts | 98 ++++++ .../components/schema/schema_base_logic.ts | 66 ++++ .../components/schema/schema_logic.test.ts | 291 ++++++++++++++++++ .../components/schema/schema_logic.ts | 164 ++++++++++ .../schema/schema_meta_engine_logic.test.ts | 95 ++++++ .../schema/schema_meta_engine_logic.ts | 56 ++++ .../app_search/components/schema/types.ts | 30 ++ .../schema/views/meta_engine_schema.test.tsx | 27 ++ .../schema/views/meta_engine_schema.tsx | 16 +- .../components/schema/views/schema.test.tsx | 27 ++ .../components/schema/views/schema.tsx | 16 +- .../applications/shared/schema/types.ts | 2 +- .../server/routes/app_search/index.ts | 2 + .../server/routes/app_search/schema.test.ts | 81 +++++ .../server/routes/app_search/schema.ts | 59 ++++ 17 files changed, 1043 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts create mode 100644 x-pack/plugins/enterprise_search/server/routes/app_search/schema.test.ts create mode 100644 x-pack/plugins/enterprise_search/server/routes/app_search/schema.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/utils.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/utils.ts index d9f41f8558b78..13cad349d75b0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/utils.ts @@ -10,7 +10,7 @@ import { EngineDetails } from '../../../engine/types'; export const getConflictingEnginesFromConflictingField = ( conflictingField: SchemaConflictFieldTypes -): string[] => Object.values(conflictingField).flat(); +) => Object.values(conflictingField).flat() as string[]; export const getConflictingEnginesFromSchemaConflicts = ( schemaConflicts: SchemaConflicts diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/constants.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/constants.ts index b9c4e2c0454d5..0ee428e87873e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/constants.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/constants.ts @@ -10,3 +10,18 @@ import { i18n } from '@kbn/i18n'; export const SCHEMA_TITLE = i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.title', { defaultMessage: 'Schema', }); + +export const ADD_SCHEMA_ERROR = (fieldName: string) => + i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.addSchemaErrorMessage', { + defaultMessage: 'Field name already exists: {fieldName}', + values: { fieldName }, + }); +export const ADD_SCHEMA_SUCCESS = (fieldName: string) => + i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.addSchemaSuccessMessage', { + defaultMessage: 'New field added: {fieldName}', + values: { fieldName }, + }); +export const UPDATE_SCHEMA_SUCCESS = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.updateSchemaSuccessMessage', + { defaultMessage: 'Schema updated' } +); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts new file mode 100644 index 0000000000000..e5dbf97b971d9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../__mocks__'; +import '../../__mocks__/engine_logic.mock'; + +import { nextTick } from '@kbn/test/jest'; + +import { SchemaType } from '../../../shared/schema/types'; + +import { SchemaBaseLogic } from './schema_base_logic'; + +describe('SchemaBaseLogic', () => { + const { mount } = new LogicMounter(SchemaBaseLogic); + const { http } = mockHttpValues; + const { flashAPIErrors } = mockFlashMessageHelpers; + + const MOCK_SCHEMA = { + some_text_field: SchemaType.Text, + some_number_field: SchemaType.Number, + }; + const MOCK_RESPONSE = { + schema: MOCK_SCHEMA, + } as any; + + const DEFAULT_VALUES = { + dataLoading: true, + schema: {}, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('has expected default values', () => { + mount(); + expect(SchemaBaseLogic.values).toEqual(DEFAULT_VALUES); + }); + + describe('actions', () => { + describe('onSchemaLoad', () => { + it('stores schema state and sets dataLoading to false', () => { + mount({ schema: {}, dataLoading: true }); + + SchemaBaseLogic.actions.onSchemaLoad(MOCK_RESPONSE); + + expect(SchemaBaseLogic.values).toEqual({ + ...DEFAULT_VALUES, + dataLoading: false, + schema: MOCK_SCHEMA, + }); + }); + }); + + describe('setSchema', () => { + it('updates schema state', () => { + mount({ schema: {} }); + + SchemaBaseLogic.actions.setSchema(MOCK_SCHEMA); + + expect(SchemaBaseLogic.values).toEqual({ + ...DEFAULT_VALUES, + schema: MOCK_SCHEMA, + }); + }); + }); + }); + + describe('listeners', () => { + describe('loadSchema', () => { + it('should make an API call and then set schema state', async () => { + http.get.mockReturnValueOnce(Promise.resolve(MOCK_RESPONSE)); + mount(); + jest.spyOn(SchemaBaseLogic.actions, 'onSchemaLoad'); + + SchemaBaseLogic.actions.loadSchema(); + await nextTick(); + + expect(http.get).toHaveBeenCalledWith('/api/app_search/engines/some-engine/schema'); + expect(SchemaBaseLogic.actions.onSchemaLoad).toHaveBeenCalledWith(MOCK_RESPONSE); + }); + + it('handles errors', async () => { + http.get.mockReturnValueOnce(Promise.reject('error')); + mount(); + + SchemaBaseLogic.actions.loadSchema(); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.ts new file mode 100644 index 0000000000000..c2196c01d402b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { flashAPIErrors } from '../../../shared/flash_messages'; +import { HttpLogic } from '../../../shared/http'; +import { Schema } from '../../../shared/schema/types'; +import { EngineLogic } from '../engine'; + +import { SchemaApiResponse, MetaEngineSchemaApiResponse } from './types'; + +export interface SchemaBaseValues { + dataLoading: boolean; + schema: Schema; +} + +export interface SchemaBaseActions { + loadSchema(): void; + onSchemaLoad( + response: SchemaApiResponse | MetaEngineSchemaApiResponse + ): SchemaApiResponse | MetaEngineSchemaApiResponse; + setSchema(schema: Schema): { schema: Schema }; +} + +export const SchemaBaseLogic = kea>({ + path: ['enterprise_search', 'app_search', 'schema_base_logic'], + actions: { + loadSchema: true, + onSchemaLoad: (response) => response, + setSchema: (schema) => ({ schema }), + }, + reducers: { + dataLoading: [ + true, + { + loadSchema: () => true, + onSchemaLoad: () => false, + }, + ], + schema: [ + {}, + { + onSchemaLoad: (_, { schema }) => schema, + setSchema: (_, { schema }) => schema, + }, + ], + }, + listeners: ({ actions }) => ({ + loadSchema: async () => { + const { http } = HttpLogic.values; + const { engineName } = EngineLogic.values; + + try { + const response = await http.get(`/api/app_search/engines/${engineName}/schema`); + actions.onSchemaLoad(response); + } catch (e) { + flashAPIErrors(e); + } + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.test.ts new file mode 100644 index 0000000000000..123f62af4eeba --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.test.ts @@ -0,0 +1,291 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../__mocks__'; +import { mockEngineActions } from '../../__mocks__/engine_logic.mock'; + +import { nextTick } from '@kbn/test/jest'; + +import { SchemaType, Schema } from '../../../shared/schema/types'; + +import { SchemaLogic } from './schema_logic'; + +describe('SchemaLogic', () => { + const { mount } = new LogicMounter(SchemaLogic); + const { http } = mockHttpValues; + const { flashAPIErrors, flashSuccessToast, setErrorMessage } = mockFlashMessageHelpers; + + const MOCK_RESPONSE = { + schema: { + some_text_field: SchemaType.Text, + some_number_field: SchemaType.Number, + }, + mostRecentIndexJob: { + percentageComplete: 100, + numDocumentsWithErrors: 10, + activeReindexJobId: 'some-id', + isActive: false, + hasErrors: true, + }, + unconfirmedFields: ['some_field'], + unsearchedUnconfirmedFields: true, + }; + + const DEFAULT_VALUES = { + dataLoading: true, + schema: {}, + isUpdating: false, + hasSchema: false, + hasSchemaChanged: false, + cachedSchema: {}, + mostRecentIndexJob: {}, + unconfirmedFields: [], + hasUnconfirmedFields: false, + hasNewUnsearchedFields: false, + isModalOpen: false, + }; + + /* + * Unfortunately, we can't mount({ schema: ... }) & have to use an action to set schema + * because of the separate connected logic file - our LogicMounter test helper sets context + * for only the currently tested file + */ + const mountAndSetSchema = ({ schema, ...values }: { schema: Schema; [key: string]: unknown }) => { + mount(values); + SchemaLogic.actions.setSchema(schema); + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('has expected default values', () => { + mount(); + expect(SchemaLogic.values).toEqual(DEFAULT_VALUES); + }); + + describe('actions', () => { + describe('onSchemaLoad', () => { + it('stores the API response in state and sets isUpdating & isModalOpen to false', () => { + mount({ isModalOpen: true }); + + SchemaLogic.actions.onSchemaLoad(MOCK_RESPONSE); + + expect(SchemaLogic.values).toEqual({ + ...DEFAULT_VALUES, + // SchemaBaseLogic + dataLoading: false, + schema: MOCK_RESPONSE.schema, + // SchemaLogic + isUpdating: false, + isModalOpen: false, + cachedSchema: MOCK_RESPONSE.schema, + hasSchema: true, + mostRecentIndexJob: MOCK_RESPONSE.mostRecentIndexJob, + unconfirmedFields: MOCK_RESPONSE.unconfirmedFields, + hasUnconfirmedFields: true, + hasNewUnsearchedFields: MOCK_RESPONSE.unsearchedUnconfirmedFields, + }); + }); + }); + + describe('onSchemaUpdateError', () => { + it('sets isUpdating & isModalOpen to false', () => { + mount({ isUpdating: true, isModalOpen: true }); + + SchemaLogic.actions.onSchemaUpdateError(); + + expect(SchemaLogic.values).toEqual({ + ...DEFAULT_VALUES, + isUpdating: false, + isModalOpen: false, + }); + }); + }); + + describe('openModal', () => { + it('sets isModalOpen to true', () => { + mount({ isModalOpen: false }); + + SchemaLogic.actions.openModal(); + + expect(SchemaLogic.values).toEqual({ + ...DEFAULT_VALUES, + isModalOpen: true, + }); + }); + }); + + describe('closeModal', () => { + it('sets isModalOpen to false', () => { + mount({ isModalOpen: true }); + + SchemaLogic.actions.closeModal(); + + expect(SchemaLogic.values).toEqual({ + ...DEFAULT_VALUES, + isModalOpen: false, + }); + }); + }); + }); + + describe('selectors', () => { + describe('hasSchema', () => { + it('returns true when the schema obj has items', () => { + mountAndSetSchema({ schema: { test: SchemaType.Text } }); + expect(SchemaLogic.values.hasSchema).toEqual(true); + }); + + it('returns false when the schema obj is empty', () => { + mountAndSetSchema({ schema: {} }); + expect(SchemaLogic.values.hasSchema).toEqual(false); + }); + }); + + describe('hasSchemaChanged', () => { + it('returns true when the schema state is different from the cachedSchema state', () => { + mountAndSetSchema({ + schema: { test: SchemaType.Text }, + cachedSchema: { test: SchemaType.Number }, + }); + + expect(SchemaLogic.values.hasSchemaChanged).toEqual(true); + }); + + it('returns false when the stored schema is the same as cachedSchema', () => { + mountAndSetSchema({ + schema: { test: SchemaType.Text }, + cachedSchema: { test: SchemaType.Text }, + }); + + expect(SchemaLogic.values.hasSchemaChanged).toEqual(false); + }); + }); + + describe('hasUnconfirmedFields', () => { + it('returns true when the unconfirmedFields array has items', () => { + mount({ unconfirmedFields: ['hello_world'] }); + expect(SchemaLogic.values.hasUnconfirmedFields).toEqual(true); + }); + + it('returns false when the unconfirmedFields array is empty', () => { + mount({ unconfirmedFields: [] }); + expect(SchemaLogic.values.hasUnconfirmedFields).toEqual(false); + }); + }); + }); + + describe('listeners', () => { + describe('addSchemaField', () => { + describe('if the schema field already exists', () => { + it('flashes an error and closes the modal', () => { + mountAndSetSchema({ schema: { existing_field: SchemaType.Text } }); + jest.spyOn(SchemaLogic.actions, 'closeModal'); + + SchemaLogic.actions.addSchemaField('existing_field', SchemaType.Text); + + expect(setErrorMessage).toHaveBeenCalledWith('Field name already exists: existing_field'); + expect(SchemaLogic.actions.closeModal).toHaveBeenCalled(); + }); + }); + + describe('if the schema field does not already exist', () => { + it('updates the schema state and calls updateSchema with a custom success message', () => { + mount(); + jest.spyOn(SchemaLogic.actions, 'setSchema'); + jest.spyOn(SchemaLogic.actions, 'updateSchema'); + + SchemaLogic.actions.addSchemaField('new_field', SchemaType.Date); + + expect(SchemaLogic.actions.setSchema).toHaveBeenCalledWith({ + new_field: SchemaType.Date, + }); + expect(SchemaLogic.actions.updateSchema).toHaveBeenCalledWith( + 'New field added: new_field' + ); + }); + }); + }); + + describe('updateSchemaFieldType', () => { + it("updates an existing schema key's field type value", async () => { + mountAndSetSchema({ schema: { existing_field: SchemaType.Text } }); + jest.spyOn(SchemaLogic.actions, 'setSchema'); + + SchemaLogic.actions.updateSchemaFieldType('existing_field', SchemaType.Geolocation); + + expect(SchemaLogic.actions.setSchema).toHaveBeenCalledWith({ + existing_field: SchemaType.Geolocation, + }); + }); + }); + + describe('updateSchema', () => { + it('sets isUpdating to true', () => { + mount({ isUpdating: false }); + + SchemaLogic.actions.updateSchema(); + + expect(SchemaLogic.values).toEqual({ + ...DEFAULT_VALUES, + isUpdating: true, + }); + }); + + it('should make an API call and then set schema state', async () => { + http.post.mockReturnValueOnce(Promise.resolve(MOCK_RESPONSE)); + mount(); + jest.spyOn(SchemaLogic.actions, 'onSchemaLoad'); + + SchemaLogic.actions.updateSchema(); + await nextTick(); + + expect(http.post).toHaveBeenCalledWith('/api/app_search/engines/some-engine/schema', { + body: '{}', + }); + expect(SchemaLogic.actions.onSchemaLoad).toHaveBeenCalledWith(MOCK_RESPONSE); + }); + + it('should call flashSuccessToast with a custom success message if passed', async () => { + http.post.mockReturnValueOnce(Promise.resolve(MOCK_RESPONSE)); + mount(); + + SchemaLogic.actions.updateSchema('wow it worked!!'); + await nextTick(); + + expect(flashSuccessToast).toHaveBeenCalledWith('wow it worked!!'); + }); + + it('should always call EngineLogic.actions.initializeEngine to refresh engine-wide state', async () => { + mount(); + + SchemaLogic.actions.updateSchema(); + await nextTick(); + + expect(mockEngineActions.initializeEngine).toHaveBeenCalled(); + }); + + it('handles errors and resets bad schema state back to cached/server values', async () => { + const MOCK_ERROR = 'Fields cannot contain more than 64 characters'; + const MOCK_CACHED_SCHEMA = { ok_field: SchemaType.Text }; + + http.post.mockReturnValueOnce(Promise.reject(MOCK_ERROR)); + mount({ cachedSchema: MOCK_CACHED_SCHEMA }); + jest.spyOn(SchemaLogic.actions, 'onSchemaUpdateError'); + jest.spyOn(SchemaLogic.actions, 'setSchema'); + + SchemaLogic.actions.updateSchema(); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith(MOCK_ERROR); + expect(SchemaLogic.actions.onSchemaUpdateError).toHaveBeenCalled(); + expect(SchemaLogic.actions.setSchema).toHaveBeenCalledWith(MOCK_CACHED_SCHEMA); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.ts new file mode 100644 index 0000000000000..3215a46c8e299 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_logic.ts @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; +import { isEqual } from 'lodash'; + +import { + flashAPIErrors, + setErrorMessage, + flashSuccessToast, + clearFlashMessages, +} from '../../../shared/flash_messages'; +import { HttpLogic } from '../../../shared/http'; +import { Schema, SchemaType, IndexJob } from '../../../shared/schema/types'; +import { EngineLogic } from '../engine'; + +import { ADD_SCHEMA_ERROR, ADD_SCHEMA_SUCCESS, UPDATE_SCHEMA_SUCCESS } from './constants'; +import { SchemaBaseLogic, SchemaBaseValues, SchemaBaseActions } from './schema_base_logic'; +import { SchemaApiResponse } from './types'; + +interface SchemaValues extends SchemaBaseValues { + isUpdating: boolean; + hasSchema: boolean; + hasSchemaChanged: boolean; + cachedSchema: Schema; + mostRecentIndexJob: Partial; + unconfirmedFields: string[]; + hasUnconfirmedFields: boolean; + hasNewUnsearchedFields: boolean; + isModalOpen: boolean; +} + +interface SchemaActions extends SchemaBaseActions { + onSchemaLoad(response: SchemaApiResponse): SchemaApiResponse; + addSchemaField( + fieldName: string, + fieldType: SchemaType + ): { fieldName: string; fieldType: SchemaType }; + updateSchemaFieldType( + fieldName: string, + fieldType: SchemaType + ): { fieldName: string; fieldType: SchemaType }; + updateSchema(successMessage?: string): string | undefined; + onSchemaUpdateError(): void; + openModal(): void; + closeModal(): void; +} + +export const SchemaLogic = kea>({ + path: ['enterprise_search', 'app_search', 'schema_logic'], + connect: { + values: [SchemaBaseLogic, ['dataLoading', 'schema']], + actions: [SchemaBaseLogic, ['loadSchema', 'onSchemaLoad', 'setSchema']], + }, + actions: { + addSchemaField: (fieldName, fieldType) => ({ fieldName, fieldType }), + updateSchemaFieldType: (fieldName, fieldType) => ({ fieldName, fieldType }), + updateSchema: (successMessage) => successMessage, + onSchemaUpdateError: true, + openModal: true, + closeModal: true, + }, + reducers: { + isUpdating: [ + false, + { + updateSchema: () => true, + onSchemaLoad: () => false, + onSchemaUpdateError: () => false, + }, + ], + cachedSchema: [ + {}, + { + onSchemaLoad: (_, { schema }) => schema, + }, + ], + mostRecentIndexJob: [ + {}, + { + onSchemaLoad: (_, { mostRecentIndexJob }) => mostRecentIndexJob, + }, + ], + unconfirmedFields: [ + [], + { + onSchemaLoad: (_, { unconfirmedFields }) => unconfirmedFields, + }, + ], + hasNewUnsearchedFields: [ + false, + { + onSchemaLoad: (_, { unsearchedUnconfirmedFields }) => unsearchedUnconfirmedFields, + }, + ], + isModalOpen: [ + false, + { + openModal: () => true, + closeModal: () => false, + onSchemaLoad: () => false, + onSchemaUpdateError: () => false, + }, + ], + }, + selectors: { + hasSchema: [(selectors) => [selectors.schema], (schema) => Object.keys(schema).length > 0], + hasSchemaChanged: [ + (selectors) => [selectors.schema, selectors.cachedSchema], + (schema, cachedSchema) => !isEqual(schema, cachedSchema), + ], + hasUnconfirmedFields: [ + (selectors) => [selectors.unconfirmedFields], + (unconfirmedFields) => unconfirmedFields.length > 0, + ], + }, + listeners: ({ actions, values }) => ({ + addSchemaField: ({ fieldName, fieldType }) => { + if (values.schema.hasOwnProperty(fieldName)) { + setErrorMessage(ADD_SCHEMA_ERROR(fieldName)); + actions.closeModal(); + } else { + const updatedSchema = { ...values.schema }; + updatedSchema[fieldName] = fieldType; + actions.setSchema(updatedSchema); + actions.updateSchema(ADD_SCHEMA_SUCCESS(fieldName)); + } + }, + updateSchemaFieldType: ({ fieldName, fieldType }) => { + const updatedSchema = { ...values.schema }; + updatedSchema[fieldName] = fieldType; + actions.setSchema(updatedSchema); + }, + updateSchema: async (successMessage) => { + const { schema } = values; + const { http } = HttpLogic.values; + const { engineName } = EngineLogic.values; + + clearFlashMessages(); + + try { + const response = await http.post(`/api/app_search/engines/${engineName}/schema`, { + body: JSON.stringify(schema), + }); + actions.onSchemaLoad(response); + flashSuccessToast(successMessage || UPDATE_SCHEMA_SUCCESS); + } catch (e) { + flashAPIErrors(e); + actions.onSchemaUpdateError(); + // Restore updated schema back to server/cached schema, so we don't keep + // erroneous or bad fields in-state + actions.setSchema(values.cachedSchema); + } finally { + // Re-fetch engine data so that other views also dynamically update + // (e.g. Documents results, nav icons for invalid boosts or unconfirmed flags) + EngineLogic.actions.initializeEngine(); + } + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.test.ts new file mode 100644 index 0000000000000..f265fb2d74113 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.test.ts @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { LogicMounter } from '../../../__mocks__'; + +import { SchemaType } from '../../../shared/schema/types'; + +import { MetaEngineSchemaLogic } from './schema_meta_engine_logic'; + +describe('MetaEngineSchemaLogic', () => { + const { mount } = new LogicMounter(MetaEngineSchemaLogic); + + const MOCK_RESPONSE = { + schema: { + some_text_field: SchemaType.Text, + some_number_field: SchemaType.Number, + }, + fields: { + some_text_field: { + text: ['source-engine-a', 'source-engine-b'], + }, + }, + conflictingFields: { + some_number_field: { + number: ['source-engine-a'], + text: ['source-engine-b'], + }, + }, + }; + + const DEFAULT_VALUES = { + dataLoading: true, + schema: {}, + fields: {}, + conflictingFields: {}, + conflictingFieldsCount: 0, + hasConflicts: false, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('has expected default values', () => { + mount(); + expect(MetaEngineSchemaLogic.values).toEqual(DEFAULT_VALUES); + }); + + describe('actions', () => { + describe('onSchemaLoad', () => { + it('stores the API response in state', () => { + mount(); + + MetaEngineSchemaLogic.actions.onSchemaLoad(MOCK_RESPONSE); + + expect(MetaEngineSchemaLogic.values).toEqual({ + ...DEFAULT_VALUES, + // SchemaBaseLogic + dataLoading: false, + schema: MOCK_RESPONSE.schema, + // MetaEngineSchemaLogic + fields: MOCK_RESPONSE.fields, + conflictingFields: MOCK_RESPONSE.conflictingFields, + hasConflicts: true, + conflictingFieldsCount: 1, + }); + }); + }); + }); + + describe('selectors', () => { + describe('conflictingFieldsCount', () => { + it('returns the number of conflicting fields', () => { + mount({ conflictingFields: { field_a: {}, field_b: {} } }); + expect(MetaEngineSchemaLogic.values.conflictingFieldsCount).toEqual(2); + }); + }); + + describe('hasConflictingFields', () => { + it('returns true when the conflictingFields obj has items', () => { + mount({ conflictingFields: { field_c: {} } }); + expect(MetaEngineSchemaLogic.values.hasConflicts).toEqual(true); + }); + + it('returns false when the conflictingFields obj is empty', () => { + mount({ conflictingFields: {} }); + expect(MetaEngineSchemaLogic.values.hasConflicts).toEqual(false); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.ts new file mode 100644 index 0000000000000..5c8ab0f4662e2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_meta_engine_logic.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { SchemaBaseLogic, SchemaBaseValues, SchemaBaseActions } from './schema_base_logic'; +import { MetaEngineSchemaApiResponse } from './types'; + +interface MetaEngineSchemaValues extends SchemaBaseValues { + fields: MetaEngineSchemaApiResponse['fields']; + conflictingFields: MetaEngineSchemaApiResponse['conflictingFields']; + conflictingFieldsCount: number; + hasConflicts: boolean; +} + +interface MetaEngineSchemaActions extends SchemaBaseActions { + onSchemaLoad(response: MetaEngineSchemaApiResponse): MetaEngineSchemaApiResponse; +} + +export const MetaEngineSchemaLogic = kea< + MakeLogicType +>({ + path: ['enterprise_search', 'app_search', 'meta_engine_schema_logic'], + connect: { + values: [SchemaBaseLogic, ['dataLoading', 'schema']], + actions: [SchemaBaseLogic, ['loadSchema', 'onSchemaLoad']], + }, + reducers: { + fields: [ + {}, + { + onSchemaLoad: (_, { fields }) => fields, + }, + ], + conflictingFields: [ + {}, + { + onSchemaLoad: (_, { conflictingFields }) => conflictingFields, + }, + ], + }, + selectors: { + conflictingFieldsCount: [ + (selectors) => [selectors.conflictingFields], + (conflictingFields) => Object.keys(conflictingFields).length, + ], + hasConflicts: [ + (selectors) => [selectors.conflictingFieldsCount], + (conflictingFieldsCount) => conflictingFieldsCount > 0, + ], + }, +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts new file mode 100644 index 0000000000000..9d79909e5549b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + Schema, + IndexJob, + SchemaConflicts, + FieldCoercionErrors, +} from '../../../shared/schema/types'; + +export interface SchemaApiResponse { + schema: Schema; + mostRecentIndexJob: IndexJob; + unconfirmedFields: string[]; + unsearchedUnconfirmedFields: boolean; +} + +export interface MetaEngineSchemaApiResponse { + schema: Schema; + fields: SchemaConflicts; + conflictingFields: SchemaConflicts; +} + +export interface ReindexJobApiResponse { + fieldCoercionErrors: FieldCoercionErrors; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx index 8412af6455285..a6e9eef8efa70 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx @@ -5,15 +5,29 @@ * 2.0. */ +import { setMockValues, setMockActions } from '../../../../__mocks__'; +import '../../../../__mocks__/shallow_useeffect.mock'; + import React from 'react'; import { shallow } from 'enzyme'; +import { Loading } from '../../../../shared/loading'; + import { MetaEngineSchema } from './'; describe('MetaEngineSchema', () => { + const values = { + dataLoading: false, + }; + const actions = { + loadSchema: jest.fn(), + }; + beforeEach(() => { jest.clearAllMocks(); + setMockValues(values); + setMockActions(actions); }); it('renders', () => { @@ -22,4 +36,17 @@ describe('MetaEngineSchema', () => { expect(wrapper.isEmptyRender()).toBe(false); // TODO: Check for schema components }); + + it('calls loadSchema on mount', () => { + shallow(); + + expect(actions.loadSchema).toHaveBeenCalled(); + }); + + it('renders a loading state', () => { + setMockValues({ ...values, dataLoading: true }); + const wrapper = shallow(); + + expect(wrapper.find(Loading)).toHaveLength(1); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx index d79ddae3d9b78..234fcdb5a5a50 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx @@ -5,14 +5,28 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect } from 'react'; + +import { useValues, useActions } from 'kea'; import { EuiPageHeader, EuiPageContentBody } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FlashMessages } from '../../../../shared/flash_messages'; +import { Loading } from '../../../../shared/loading'; + +import { MetaEngineSchemaLogic } from '../schema_meta_engine_logic'; export const MetaEngineSchema: React.FC = () => { + const { loadSchema } = useActions(MetaEngineSchemaLogic); + const { dataLoading } = useValues(MetaEngineSchemaLogic); + + useEffect(() => { + loadSchema(); + }, []); + + if (dataLoading) return ; + return ( <> { + const values = { + dataLoading: false, + }; + const actions = { + loadSchema: jest.fn(), + }; + beforeEach(() => { jest.clearAllMocks(); + setMockValues(values); + setMockActions(actions); }); it('renders', () => { @@ -25,6 +39,19 @@ describe('Schema', () => { // TODO: Check for schema components }); + it('calls loadSchema on mount', () => { + shallow(); + + expect(actions.loadSchema).toHaveBeenCalled(); + }); + + it('renders a loading state', () => { + setMockValues({ ...values, dataLoading: true }); + const wrapper = shallow(); + + expect(wrapper.find(Loading)).toHaveLength(1); + }); + it('renders page action buttons', () => { const wrapper = shallow() .find(EuiPageHeader) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx index ad53fd2c718b2..21dd52b04f4a7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx @@ -5,14 +5,28 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect } from 'react'; + +import { useValues, useActions } from 'kea'; import { EuiPageHeader, EuiButton, EuiPageContentBody } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FlashMessages } from '../../../../shared/flash_messages'; +import { Loading } from '../../../../shared/loading'; + +import { SchemaLogic } from '../schema_logic'; export const Schema: React.FC = () => { + const { loadSchema } = useActions(SchemaLogic); + const { dataLoading } = useValues(SchemaLogic); + + useEffect(() => { + loadSchema(); + }, []); + + if (dataLoading) return ; + return ( <> ; // This is a mapping of schema field types ("text", "number", "geolocation", "date") // to the names of source engines which utilize that type -export type SchemaConflictFieldTypes = Record; +export type SchemaConflictFieldTypes = Partial>; export interface SchemaConflict { fieldTypes: SchemaConflictFieldTypes; diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts index 6ecdb8d8857c6..99aaaeeec38b3 100644 --- a/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts @@ -16,6 +16,7 @@ import { registerEnginesRoutes } from './engines'; import { registerOnboardingRoutes } from './onboarding'; import { registerResultSettingsRoutes } from './result_settings'; import { registerRoleMappingsRoutes } from './role_mappings'; +import { registerSchemaRoutes } from './schema'; import { registerSearchSettingsRoutes } from './search_settings'; import { registerSearchUIRoutes } from './search_ui'; import { registerSettingsRoutes } from './settings'; @@ -28,6 +29,7 @@ export const registerAppSearchRoutes = (dependencies: RouteDependencies) => { registerAnalyticsRoutes(dependencies); registerDocumentsRoutes(dependencies); registerDocumentRoutes(dependencies); + registerSchemaRoutes(dependencies); registerCurationsRoutes(dependencies); registerSynonymsRoutes(dependencies); registerSearchSettingsRoutes(dependencies); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/schema.test.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/schema.test.ts new file mode 100644 index 0000000000000..408838a4de31b --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/schema.test.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { MockRouter, mockRequestHandler, mockDependencies } from '../../__mocks__'; + +import { registerSchemaRoutes } from './schema'; + +describe('schema routes', () => { + describe('GET /api/app_search/engines/{engineName}/schema', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'get', + path: '/api/app_search/engines/{engineName}/schema', + }); + + registerSchemaRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/schema', + }); + }); + }); + + describe('POST /api/app_search/engines/{engineName}/schema', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/app_search/engines/{engineName}/schema', + }); + + registerSchemaRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/schema', + }); + }); + }); + + describe('GET /api/app_search/engines/{engineName}/reindex_job/{reindexJobId}', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'get', + path: '/api/app_search/engines/{engineName}/reindex_job/{reindexJobId}', + }); + + registerSchemaRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:engineName/reindex_job/:reindexJobId', + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/schema.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/schema.ts new file mode 100644 index 0000000000000..74d07bd2bf75d --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/schema.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema } from '@kbn/config-schema'; + +import { skipBodyValidation } from '../../lib/route_config_helpers'; +import { RouteDependencies } from '../../plugin'; + +export function registerSchemaRoutes({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/app_search/engines/{engineName}/schema', + validate: { + params: schema.object({ + engineName: schema.string(), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/schema', + }) + ); + + router.post( + skipBodyValidation({ + path: '/api/app_search/engines/{engineName}/schema', + validate: { + params: schema.object({ + engineName: schema.string(), + }), + }, + }), + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/schema', + }) + ); + + router.get( + { + path: '/api/app_search/engines/{engineName}/reindex_job/{reindexJobId}', + validate: { + params: schema.object({ + engineName: schema.string(), + reindexJobId: schema.string(), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:engineName/reindex_job/:reindexJobId', + }) + ); +} From 7617642bba15cb583ab07e3a2c61cc2b13d0cfab Mon Sep 17 00:00:00 2001 From: Lukas Olson Date: Tue, 11 May 2021 12:41:21 -0700 Subject: [PATCH 015/144] Add partial results to search examples demo (#96366) * Add partial results to search examples demo * Add functional test * Move types into separate file and separate custom strategies * Review feedback * Update test * Try to fix test * Attempt to fix test * Try to fix observable error * Sanity check * Fix test * Another attempt * Remove rxjs from strategy --- examples/search_examples/common/index.ts | 10 -- examples/search_examples/common/types.ts | 26 +++++ .../search_examples/public/search/app.tsx | 110 +++++++++++++++--- .../server/fibonacci_strategy.ts | 52 +++++++++ .../search_examples/server/my_strategy.ts | 2 +- examples/search_examples/server/plugin.ts | 3 + .../ese_search/ese_search_strategy.ts | 2 +- x-pack/test/examples/search_examples/index.ts | 1 + .../partial_results_example.ts | 38 ++++++ 9 files changed, 218 insertions(+), 26 deletions(-) create mode 100644 examples/search_examples/common/types.ts create mode 100644 examples/search_examples/server/fibonacci_strategy.ts create mode 100644 x-pack/test/examples/search_examples/partial_results_example.ts diff --git a/examples/search_examples/common/index.ts b/examples/search_examples/common/index.ts index cc47c0f575973..c61de9d3c6dee 100644 --- a/examples/search_examples/common/index.ts +++ b/examples/search_examples/common/index.ts @@ -6,17 +6,7 @@ * Side Public License, v 1. */ -import { IEsSearchResponse, IEsSearchRequest } from '../../../src/plugins/data/common'; - export const PLUGIN_ID = 'searchExamples'; export const PLUGIN_NAME = 'Search Examples'; -export interface IMyStrategyRequest extends IEsSearchRequest { - get_cool: boolean; -} -export interface IMyStrategyResponse extends IEsSearchResponse { - cool: string; - executed_at: number; -} - export const SERVER_SEARCH_ROUTE_PATH = '/api/examples/search'; diff --git a/examples/search_examples/common/types.ts b/examples/search_examples/common/types.ts new file mode 100644 index 0000000000000..8bb38ea0b2d0d --- /dev/null +++ b/examples/search_examples/common/types.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + IEsSearchRequest, + IEsSearchResponse, + IKibanaSearchRequest, + IKibanaSearchResponse, +} from '../../../src/plugins/data/common'; + +export interface IMyStrategyRequest extends IEsSearchRequest { + get_cool: boolean; +} +export interface IMyStrategyResponse extends IEsSearchResponse { + cool: string; + executed_at: number; +} + +export type FibonacciRequest = IKibanaSearchRequest<{ n: number }>; + +export type FibonacciResponse = IKibanaSearchResponse<{ values: number[] }>; diff --git a/examples/search_examples/public/search/app.tsx b/examples/search_examples/public/search/app.tsx index c9ede2ff2b45f..06f9426b4965c 100644 --- a/examples/search_examples/public/search/app.tsx +++ b/examples/search_examples/public/search/app.tsx @@ -26,27 +26,27 @@ import { EuiCode, EuiComboBox, EuiFormLabel, + EuiFieldNumber, + EuiProgress, EuiTabbedContent, + EuiTabbedContentTab, } from '@elastic/eui'; import { CoreStart } from '../../../../src/core/public'; import { mountReactNode } from '../../../../src/core/public/utils'; import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public'; -import { - PLUGIN_ID, - PLUGIN_NAME, - IMyStrategyResponse, - SERVER_SEARCH_ROUTE_PATH, -} from '../../common'; +import { PLUGIN_ID, PLUGIN_NAME, SERVER_SEARCH_ROUTE_PATH } from '../../common'; import { DataPublicPluginStart, + IKibanaSearchResponse, IndexPattern, IndexPatternField, isCompleteResponse, isErrorResponse, } from '../../../../src/plugins/data/public'; +import { IMyStrategyResponse } from '../../common/types'; interface SearchExamplesAppDeps { notifications: CoreStart['notifications']; @@ -88,7 +88,10 @@ export const SearchExamplesApp = ({ }: SearchExamplesAppDeps) => { const { IndexPatternSelect } = data.ui; const [getCool, setGetCool] = useState(false); + const [fibonacciN, setFibonacciN] = useState(10); const [timeTook, setTimeTook] = useState(); + const [total, setTotal] = useState(100); + const [loaded, setLoaded] = useState(0); const [indexPattern, setIndexPattern] = useState(); const [fields, setFields] = useState(); const [selectedFields, setSelectedFields] = useState([]); @@ -99,7 +102,15 @@ export const SearchExamplesApp = ({ IndexPatternField | null | undefined >(); const [request, setRequest] = useState>({}); - const [response, setResponse] = useState>({}); + const [rawResponse, setRawResponse] = useState>({}); + const [selectedTab, setSelectedTab] = useState(0); + + function setResponse(response: IKibanaSearchResponse) { + setRawResponse(response.rawResponse); + setLoaded(response.loaded!); + setTotal(response.total!); + setTimeTook(response.rawResponse.took); + } // Fetch the default index pattern using the `data.indexPatterns` service, as the component is mounted. useEffect(() => { @@ -152,8 +163,7 @@ export const SearchExamplesApp = ({ .subscribe({ next: (res) => { if (isCompleteResponse(res)) { - setResponse(res.rawResponse); - setTimeTook(res.rawResponse.took); + setResponse(res); const avgResult: number | undefined = res.rawResponse.aggregations ? // @ts-expect-error @elastic/elasticsearch no way to declare a type for aggregation in the search response res.rawResponse.aggregations[1].value @@ -234,7 +244,7 @@ export const SearchExamplesApp = ({ setRequest(searchSource.getSearchRequestBody()); const { rawResponse: res } = await searchSource.fetch$().toPromise(); - setResponse(res); + setRawResponse(res); const message = Searched {res.hits.total} documents.; notifications.toasts.addSuccess( @@ -247,7 +257,7 @@ export const SearchExamplesApp = ({ } ); } catch (e) { - setResponse(e.body); + setRawResponse(e.body); notifications.toasts.addWarning(`An error has occurred: ${e.message}`); } }; @@ -260,6 +270,41 @@ export const SearchExamplesApp = ({ doAsyncSearch('myStrategy'); }; + const onPartialResultsClickHandler = () => { + setSelectedTab(1); + const req = { + params: { + n: fibonacciN, + }, + }; + + // Submit the search request using the `data.search` service. + setRequest(req.params); + const searchSubscription$ = data.search + .search(req, { + strategy: 'fibonacciStrategy', + }) + .subscribe({ + next: (res) => { + setResponse(res); + if (isCompleteResponse(res)) { + notifications.toasts.addSuccess({ + title: 'Query result', + text: 'Query finished', + }); + searchSubscription$.unsubscribe(); + } else if (isErrorResponse(res)) { + // TODO: Make response error status clearer + notifications.toasts.addWarning('An error has occurred'); + searchSubscription$.unsubscribe(); + } + }, + error: () => { + notifications.toasts.addDanger('Failed to run search'); + }, + }); + }; + const onClientSideSessionCacheClickHandler = () => { doAsyncSearch('myStrategy', data.search.session.getSessionId()); }; @@ -284,7 +329,7 @@ export const SearchExamplesApp = ({ doSearchSourceSearch(withOtherBucket); }; - const reqTabs = [ + const reqTabs: EuiTabbedContentTab[] = [ { id: 'request', name: Request, @@ -318,6 +363,7 @@ export const SearchExamplesApp = ({ values={{ time: timeTook ?? 'Unknown' }} /> + - {JSON.stringify(response, null, 2)} + {JSON.stringify(rawResponse, null, 2)} ), @@ -484,6 +530,37 @@ export const SearchExamplesApp = ({ + +

Handling partial results

+
+ + The observable returned from data.search provides partial results + when the response is not yet complete. These can be handled to update a chart or + simply a progress bar: + + + <EuiProgress value={response.loaded} max={response.total} + /> + + Below is an example showing a custom search strategy that emits partial Fibonacci + sequences up to the length provided, updates the response with each partial result, + and updates a progress bar (see the Response tab). + setFibonacciN(parseInt(event.target.value, 10))} + /> + + Request Fibonacci sequence + + +

Writing a custom search strategy

@@ -567,8 +644,13 @@ export const SearchExamplesApp = ({ + - + setSelectedTab(reqTabs.indexOf(tab))} + /> diff --git a/examples/search_examples/server/fibonacci_strategy.ts b/examples/search_examples/server/fibonacci_strategy.ts new file mode 100644 index 0000000000000..a37438aba7055 --- /dev/null +++ b/examples/search_examples/server/fibonacci_strategy.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import uuid from 'uuid'; +import { ISearchStrategy } from '../../../src/plugins/data/server'; +import { FibonacciRequest, FibonacciResponse } from '../common/types'; + +export const fibonacciStrategyProvider = (): ISearchStrategy< + FibonacciRequest, + FibonacciResponse +> => { + const responseMap = new Map(); + return ({ + search: (request: FibonacciRequest) => { + const id = request.id ?? uuid(); + const [sequence, total, started] = responseMap.get(id) ?? [ + [], + request.params?.n ?? 0, + Date.now(), + ]; + if (sequence.length < 2) { + if (total > 0) sequence.push(sequence.length); + } else { + const [a, b] = sequence.slice(-2); + sequence.push(a + b); + } + const loaded = sequence.length; + responseMap.set(id, [sequence, total, started]); + if (loaded >= total) { + responseMap.delete(id); + } + + const isRunning = loaded < total; + const isPartial = isRunning; + const took = Date.now() - started; + const values = sequence.slice(0, loaded); + + // Usually we'd do something like "of()" but for some reason it breaks in tests with the error + // "You provided an invalid object where a stream was expected." which is why we have to cast + // down below as well + return [{ id, loaded, total, isRunning, isPartial, rawResponse: { took, values } }]; + }, + cancel: async (id: string) => { + responseMap.delete(id); + }, + } as unknown) as ISearchStrategy; +}; diff --git a/examples/search_examples/server/my_strategy.ts b/examples/search_examples/server/my_strategy.ts index 0a64788960091..db8cd903f23d6 100644 --- a/examples/search_examples/server/my_strategy.ts +++ b/examples/search_examples/server/my_strategy.ts @@ -8,7 +8,7 @@ import { map } from 'rxjs/operators'; import { ISearchStrategy, PluginStart } from '../../../src/plugins/data/server'; -import { IMyStrategyResponse, IMyStrategyRequest } from '../common'; +import { IMyStrategyRequest, IMyStrategyResponse } from '../common/types'; export const mySearchStrategyProvider = ( data: PluginStart diff --git a/examples/search_examples/server/plugin.ts b/examples/search_examples/server/plugin.ts index 84f082d890bb0..984d3201220eb 100644 --- a/examples/search_examples/server/plugin.ts +++ b/examples/search_examples/server/plugin.ts @@ -24,6 +24,7 @@ import { } from './types'; import { mySearchStrategyProvider } from './my_strategy'; import { registerRoutes } from './routes'; +import { fibonacciStrategyProvider } from './fibonacci_strategy'; export class SearchExamplesPlugin implements @@ -48,7 +49,9 @@ export class SearchExamplesPlugin core.getStartServices().then(([_, depsStart]) => { const myStrategy = mySearchStrategyProvider(depsStart.data); + const fibonacciStrategy = fibonacciStrategyProvider(); deps.data.search.registerSearchStrategy('myStrategy', myStrategy); + deps.data.search.registerSearchStrategy('fibonacciStrategy', fibonacciStrategy); registerRoutes(router); }); diff --git a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts index e7f5005e7e837..cec4b9a2dbf9f 100644 --- a/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts +++ b/src/plugins/data/server/search/strategies/ese_search/ese_search_strategy.ts @@ -39,7 +39,7 @@ export const enhancedEsSearchStrategyProvider = ( legacyConfig$: Observable, logger: Logger, usage?: SearchUsage -): ISearchStrategy => { +): ISearchStrategy => { async function cancelAsyncSearch(id: string, esClient: IScopedClusterClient) { try { await esClient.asCurrentUser.asyncSearch.delete({ id }); diff --git a/x-pack/test/examples/search_examples/index.ts b/x-pack/test/examples/search_examples/index.ts index 65e214cda4cf8..eaaeb22410183 100644 --- a/x-pack/test/examples/search_examples/index.ts +++ b/x-pack/test/examples/search_examples/index.ts @@ -26,5 +26,6 @@ export default function ({ getService, loadTestFile }: PluginFunctionalProviderC loadTestFile(require.resolve('./search_session_example')); loadTestFile(require.resolve('./search_example')); loadTestFile(require.resolve('./search_sessions_cache')); + loadTestFile(require.resolve('./partial_results_example')); }); } diff --git a/x-pack/test/examples/search_examples/partial_results_example.ts b/x-pack/test/examples/search_examples/partial_results_example.ts new file mode 100644 index 0000000000000..269b2e79ab38f --- /dev/null +++ b/x-pack/test/examples/search_examples/partial_results_example.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../functional/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const testSubjects = getService('testSubjects'); + const PageObjects = getPageObjects(['common']); + const retry = getService('retry'); + + describe('Partial results example', () => { + before(async () => { + await PageObjects.common.navigateToApp('searchExamples'); + await testSubjects.click('/search'); + }); + + it('should update a progress bar', async () => { + await testSubjects.click('responseTab'); + const progressBar = await testSubjects.find('progressBar'); + + const value = await progressBar.getAttribute('value'); + expect(value).to.be('0'); + + await testSubjects.click('requestFibonacci'); + + await retry.waitFor('update progress bar', async () => { + const newValue = await progressBar.getAttribute('value'); + return parseFloat(newValue) > 0; + }); + }); + }); +} From 6e8ccdbd095cb2ccc0978c0f1c8223c462ab5544 Mon Sep 17 00:00:00 2001 From: Liza Katz Date: Tue, 11 May 2021 23:05:42 +0300 Subject: [PATCH 016/144] [Bug] Fixes #9184 (#99099) * code review * test --- .../aggs/buckets/lib/time_buckets/calc_es_interval.ts | 2 +- .../buckets/lib/time_buckets/time_buckets.test.ts | 11 +++++++++++ test/functional/apps/visualize/_area_chart.ts | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_es_interval.ts b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_es_interval.ts index 72d59af037d90..4b3ec90bb2cc2 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_es_interval.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_es_interval.ts @@ -12,7 +12,7 @@ import dateMath, { Unit } from '@elastic/datemath'; import { parseEsInterval } from '../../../utils'; const unitsDesc = dateMath.unitsDesc; -const largeMax = unitsDesc.indexOf('M'); +const largeMax = unitsDesc.indexOf('w'); export interface EsInterval { expression: string; diff --git a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts index 6fbaddb09b226..fd3f861dce07e 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts @@ -10,6 +10,7 @@ import moment from 'moment'; import { TimeBuckets, TimeBucketsConfig } from './time_buckets'; import { autoInterval } from '../../_interval_options'; +import { InvalidEsCalendarIntervalError } from '../../../utils'; describe('TimeBuckets', () => { const timeBucketConfig: TimeBucketsConfig = { @@ -137,4 +138,14 @@ describe('TimeBuckets', () => { const format = timeBuckets.getScaledDateFormat(); expect(format).toEqual('HH:mm'); }); + + test('allows days but throws error on weeks', () => { + const timeBuckets = new TimeBuckets(timeBucketConfig); + timeBuckets.setInterval('14d'); + const interval = timeBuckets.getInterval(false); + expect(interval.esUnit).toEqual('d'); + + timeBuckets.setInterval('2w'); + expect(() => timeBuckets.getInterval(false)).toThrow(InvalidEsCalendarIntervalError); + }); }); diff --git a/test/functional/apps/visualize/_area_chart.ts b/test/functional/apps/visualize/_area_chart.ts index f6eaa2c685f5d..2bad91565de72 100644 --- a/test/functional/apps/visualize/_area_chart.ts +++ b/test/functional/apps/visualize/_area_chart.ts @@ -505,7 +505,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should show error when calendar interval invalid', async () => { - await PageObjects.visEditor.setInterval('14d', { type: 'custom' }); + await PageObjects.visEditor.setInterval('2w', { type: 'custom' }); const intervalErrorMessage = await find.byCssSelector( '[data-test-subj="visEditorInterval"] + .euiFormErrorText' ); From 37b7f6afb09b959fb3326e2eb65032c8923e1ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20G=C3=B3mez?= Date: Tue, 11 May 2021 22:27:50 +0200 Subject: [PATCH 017/144] [Fleet] Correctly encode logs URL (#99782) --- .../components/agent_logs/agent_logs.tsx | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx index 6bc1db2fc4c7d..fa3b6b56a18b9 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx @@ -6,11 +6,11 @@ */ import url from 'url'; +import { stringify } from 'querystring'; import React, { memo, useMemo, useState, useCallback, useEffect } from 'react'; import styled from 'styled-components'; import { encode } from 'rison-node'; -import { stringify } from 'query-string'; import { EuiFlexGroup, EuiFlexItem, @@ -170,20 +170,17 @@ export const AgentLogsUI: React.FunctionComponent = memo(({ agen http.basePath.prepend( url.format({ pathname: '/app/logs/stream', - search: stringify( - { - logPosition: encode({ - start: state.start, - end: state.end, - streamLive: false, - }), - logFilter: encode({ - expression: logStreamQuery, - kind: 'kuery', - }), - }, - { sort: false, encode: false } - ), + search: stringify({ + logPosition: encode({ + start: state.start, + end: state.end, + streamLive: false, + }), + logFilter: encode({ + expression: logStreamQuery, + kind: 'kuery', + }), + }), }) ), [http.basePath, state.start, state.end, logStreamQuery] From dc8329ed0de4bf82aeb81988e86056390f6fd53d Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Tue, 11 May 2021 16:41:56 -0400 Subject: [PATCH 018/144] Added CIT test for the fail processor. (#95261) * Added CIT test for the fail processor. * Fixed linter issues. * Used new functions and helpers. * Added common test to ensure that a processor type was selected before saving. Fixed some titles and nits from the PR feedback. * Removed unused var. * Merged in master and updated tests to remove repeat code. --- .../common_processor_fields.test.tsx | 15 ++++ .../__jest__/processors/fail.test.tsx | 77 +++++++++++++++++++ .../__jest__/processors/processor.helpers.tsx | 1 + .../processor_form/processors/fail.tsx | 9 ++- 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx index af4c187df75e6..af5c8c50abf7b 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/common_processor_fields.test.tsx @@ -37,6 +37,21 @@ describe('Processor: Common Fields For All Processors', () => { testBed.component.update(); }); + test('prevents form submission if required type field is not provided', async () => { + const { + actions: { addProcessor, saveNewProcessor }, + form, + } = testBed; + + // Open flyout to add new processor + addProcessor(); + // Click submit button without entering any fields + await saveNewProcessor(); + + // Expect form error as a processor type is required + expect(form.getErrorsMessages()).toEqual(['A type is required.']); + }); + test('saves with common fields set', async () => { const { actions: { addProcessor, saveNewProcessor, addProcessorType }, diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx new file mode 100644 index 0000000000000..db5840379536a --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/fail.test.tsx @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; +import { setup, SetupResult, getProcessorValue } from './processor.helpers'; + +const FAIL_TYPE = 'fail'; +describe('Processor: Fail', () => { + let onUpdate: jest.Mock; + let testBed: SetupResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(async () => { + onUpdate = jest.fn(); + + await act(async () => { + testBed = await setup({ + value: { + processors: [], + }, + onFlyoutOpen: jest.fn(), + onUpdate, + }); + }); + testBed.component.update(); + + const { + actions: { addProcessor, addProcessorType }, + } = testBed; + // Open the processor flyout + addProcessor(); + + // Add type (the other fields are not visible until a type is selected) + await addProcessorType(FAIL_TYPE); + }); + + test('prevents form submission if required message field is not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Click submit button with only the type defined + await saveNewProcessor(); + + // Expect form error as "field" is required parameter + expect(form.getErrorsMessages()).toEqual(['A message is required.']); + }); + + test('saves with required parameter value', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "message" value (required) + form.setInputValue('messageField.input', 'Test Error Message'); + // Save the field + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, FAIL_TYPE); + expect(processors[0].fail).toEqual({ + message: 'Test Error Message', + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx index 68f494a56af5d..797d26f2404ab 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx @@ -140,6 +140,7 @@ type TestSubject = | 'appendValueField.input' | 'processorTypeSelector.input' | 'fieldNameField.input' + | 'messageField.input' | 'mockCodeEditor' | 'tagField.input' | 'ignoreMissingSwitch.input' diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx index f2fe6d6ef95f6..156aa9ae1545a 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/fail.tsx @@ -37,5 +37,12 @@ const fieldsConfig: FieldsConfig = { }; export const Fail: FunctionComponent = () => { - return ; + return ( + + ); }; From ada3b42be029c8a6be2f0de79cf2cbaca3982004 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 11 May 2021 23:05:07 +0100 Subject: [PATCH 019/144] chore(NA): moving @kbn/plugin-generator into bazel (#99646) * chore(NA): moving @kbn/plugin-generator into bazel * chore(NA): add templates to build file * chore(NA): restore plugins empty file --- package.json | 2 +- packages/BUILD.bazel | 1 + packages/kbn-plugin-generator/BUILD.bazel | 106 ++++++++++++++++++ packages/kbn-plugin-generator/package.json | 6 +- .../kbn-plugin-generator/scripts/build.js | 32 ------ packages/kbn-plugin-generator/tsconfig.json | 2 +- yarn.lock | 2 +- 7 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 packages/kbn-plugin-generator/BUILD.bazel delete mode 100644 packages/kbn-plugin-generator/scripts/build.js diff --git a/package.json b/package.json index 81ffe913f0192..aa8682d821bc2 100644 --- a/package.json +++ b/package.json @@ -453,7 +453,7 @@ "@kbn/eslint-plugin-eslint": "link:bazel-bin/packages/kbn-eslint-plugin-eslint/npm_module", "@kbn/expect": "link:bazel-bin/packages/kbn-expect/npm_module", "@kbn/optimizer": "link:packages/kbn-optimizer", - "@kbn/plugin-generator": "link:packages/kbn-plugin-generator", + "@kbn/plugin-generator": "link:bazel-bin/packages/kbn-plugin-generator/npm_module", "@kbn/plugin-helpers": "link:packages/kbn-plugin-helpers", "@kbn/pm": "link:packages/kbn-pm", "@kbn/storybook": "link:packages/kbn-storybook", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 8b483f54344e2..e33b3d85b44ef 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -22,6 +22,7 @@ filegroup( "//packages/kbn-expect:build", "//packages/kbn-legacy-logging:build", "//packages/kbn-logging:build", + "//packages/kbn-plugin-generator:build", "//packages/kbn-securitysolution-constants:build", "//packages/kbn-securitysolution-io-ts-utils:build", "//packages/kbn-securitysolution-utils:build", diff --git a/packages/kbn-plugin-generator/BUILD.bazel b/packages/kbn-plugin-generator/BUILD.bazel new file mode 100644 index 0000000000000..e22d41076db00 --- /dev/null +++ b/packages/kbn-plugin-generator/BUILD.bazel @@ -0,0 +1,106 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-plugin-generator" +PKG_REQUIRE_NAME = "@kbn/plugin-generator" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/integration_tests/**/*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +filegroup( + name = "template", + srcs = glob( + [ + "template/**/*", + ], + ), +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", + ":template", +] + +SRC_DEPS = [ + "//packages/kbn-utils", + "//packages/kbn-dev-utils", + "@npm//del", + "@npm//ejs", + "@npm//execa", + "@npm//globby", + "@npm//inquirer", + "@npm//minimatch", + "@npm//prettier", + "@npm//vinyl-fs", +] + +TYPES_DEPS = [ + "@npm//@types/ejs", + "@npm//@types/inquirer", + "@npm//@types/jest", + "@npm//@types/minimatch", + "@npm//@types/node", + "@npm//@types/prettier", + "@npm//@types/vinyl-fs", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-plugin-generator/package.json b/packages/kbn-plugin-generator/package.json index 583085430d915..298373afd2f24 100644 --- a/packages/kbn-plugin-generator/package.json +++ b/packages/kbn-plugin-generator/package.json @@ -4,9 +4,5 @@ "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", "main": "target/index.js", - "types": "target/index.d.ts", - "scripts": { - "kbn:bootstrap": "node scripts/build", - "kbn:watch": "node scripts/build --watch" - } + "types": "target/index.d.ts" } \ No newline at end of file diff --git a/packages/kbn-plugin-generator/scripts/build.js b/packages/kbn-plugin-generator/scripts/build.js deleted file mode 100644 index e17f564bc482c..0000000000000 --- a/packages/kbn-plugin-generator/scripts/build.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -const Path = require('path'); - -const { run } = require('@kbn/dev-utils'); -const del = require('del'); -const execa = require('execa'); - -run( - async ({ flags }) => { - await del(Path.resolve(__dirname, '../target')); - - await execa(require.resolve('typescript/bin/tsc'), flags.watch ? ['--watch'] : [], { - cwd: Path.resolve(__dirname, '..'), - stdio: 'inherit', - }); - }, - { - flags: { - boolean: ['watch'], - help: ` - --watch Watch files and rebuild on changes - `, - }, - } -); diff --git a/packages/kbn-plugin-generator/tsconfig.json b/packages/kbn-plugin-generator/tsconfig.json index 5e885527a7608..9165fd21ebea0 100644 --- a/packages/kbn-plugin-generator/tsconfig.json +++ b/packages/kbn-plugin-generator/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": false, + "incremental": true, "outDir": "target", "target": "ES2019", "declaration": true, diff --git a/yarn.lock b/yarn.lock index ccf722c7728f4..8a6dd285fb0e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2686,7 +2686,7 @@ version "0.0.0" uid "" -"@kbn/plugin-generator@link:packages/kbn-plugin-generator": +"@kbn/plugin-generator@link:bazel-bin/packages/kbn-plugin-generator/npm_module": version "0.0.0" uid "" From 548698bcc028490519399e9dce79905d1551c5bb Mon Sep 17 00:00:00 2001 From: Stacey Gammon Date: Tue, 11 May 2021 18:06:42 -0400 Subject: [PATCH 020/144] Syntax in styleguide.mdx is breaking docs build (#99840) * Update STYLEGUIDE.mdx * add space in title --- STYLEGUIDE.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STYLEGUIDE.mdx b/STYLEGUIDE.mdx index 628a7d157dfcc..afe00476640b3 100644 --- a/STYLEGUIDE.mdx +++ b/STYLEGUIDE.mdx @@ -1,7 +1,7 @@ --- id: kibStyleGuide slug: /kibana-dev-docs/styleguide -title: StyleGuide +title: Style Guide summary: JavaScript/TypeScript styleguide. date: 2021-05-06 tags: ['kibana', 'onboarding', 'dev', 'styleguide', 'typescript', 'javascript'] @@ -680,7 +680,7 @@ Using `react-component` means adding a bunch of components into angular, while ` ### Action function names and prop function names -Name action functions in the form of a strong verb and passed properties in the form of on. E.g: +Name action functions in the form of a strong verb and passed properties in the form of `on`. E.g: ```jsx From c328ab0145b72c57c805e68476488d0ca6d946da Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Tue, 11 May 2021 17:29:07 -0500 Subject: [PATCH 021/144] [Metrics UI] Increase groupBy pagination size on Metric Threshold alerts (#99683) --- .../server/lib/alerting/metric_threshold/lib/metric_query.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts index fdf96a583479a..42ba918694482 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts @@ -13,6 +13,7 @@ import { createPercentileAggregation } from './create_percentile_aggregation'; import { calculateDateHistogramOffset } from '../../../metrics/lib/calculate_date_histogram_offset'; const MINIMUM_BUCKETS = 5; +const COMPOSITE_RESULTS_PER_PAGE = 100; const getParsedFilterQuery: (filterQuery: string | undefined) => Record | null = ( filterQuery @@ -83,7 +84,7 @@ export const getElasticsearchMetricQuery = ( ? { groupings: { composite: { - size: 10, + size: COMPOSITE_RESULTS_PER_PAGE, sources: Array.isArray(groupBy) ? groupBy.map((field, index) => ({ [`groupBy${index}`]: { From ae08154205a255079e68125da93d9769fb43e276 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 11 May 2021 21:24:32 -0400 Subject: [PATCH 022/144] [Fleet] Support dataset with multiple level like system.process.summary (#99852) --- .../server/services/package_policy.test.ts | 65 +++++++++++++++++++ .../fleet/server/services/package_policy.ts | 17 ++--- 2 files changed, 74 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/package_policy.test.ts b/x-pack/plugins/fleet/server/services/package_policy.test.ts index 21241e6d5723f..ab2bc944a1932 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -38,6 +38,17 @@ paths: }, ]; } + if (dataset === 'dataset1_level1') { + return [ + { + buffer: Buffer.from(` +type: log +metricset: ["dataset1.level1"] +`), + }, + ]; + } + return [ { buffer: Buffer.from(` @@ -98,6 +109,7 @@ describe('Package policy service', () => { type: 'logs', dataset: 'package.dataset1', streams: [{ input: 'log', template_path: 'some_template_path.yml' }], + path: 'dataset1', }, ], policy_templates: [ @@ -151,6 +163,57 @@ describe('Package policy service', () => { ]); }); + it('should work with a two level dataset name', async () => { + const inputs = await packagePolicyService.compilePackagePolicyInputs( + ({ + data_streams: [ + { + type: 'logs', + dataset: 'package.dataset1.level1', + streams: [{ input: 'log', template_path: 'some_template_path.yml' }], + path: 'dataset1_level1', + }, + ], + policy_templates: [ + { + inputs: [{ type: 'log' }], + }, + ], + } as unknown) as PackageInfo, + [ + { + type: 'log', + enabled: true, + streams: [ + { + id: 'datastream01', + data_stream: { dataset: 'package.dataset1.level1', type: 'logs' }, + enabled: true, + }, + ], + }, + ] + ); + + expect(inputs).toEqual([ + { + type: 'log', + enabled: true, + streams: [ + { + id: 'datastream01', + data_stream: { dataset: 'package.dataset1.level1', type: 'logs' }, + enabled: true, + compiled_stream: { + metricset: ['dataset1.level1'], + type: 'log', + }, + }, + ], + }, + ]); + }); + it('should work with config variables at the input level', async () => { const inputs = await packagePolicyService.compilePackagePolicyInputs( ({ @@ -159,6 +222,7 @@ describe('Package policy service', () => { dataset: 'package.dataset1', type: 'logs', streams: [{ input: 'log', template_path: 'some_template_path.yml' }], + path: 'dataset1', }, ], policy_templates: [ @@ -261,6 +325,7 @@ describe('Package policy service', () => { dataset: 'package.dataset1', type: 'logs', streams: [{ input: 'log', template_path: 'some_template_path.yml' }], + path: 'dataset1', }, ], policy_templates: [ diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index e4d34e551c95b..7c870415bc521 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -56,10 +56,6 @@ import { appContextService } from '.'; const SAVED_OBJECT_TYPE = PACKAGE_POLICY_SAVED_OBJECT_TYPE; -function getDataset(st: string) { - return st.split('.')[1]; -} - class PackagePolicyService { public async create( soClient: SavedObjectsClientContract, @@ -562,7 +558,7 @@ async function _compilePackageStream( if (!stream.enabled) { return { ...stream, compiled_stream: undefined }; } - const datasetPath = getDataset(stream.data_stream.dataset); + const packageDataStreams = pkgInfo.data_streams; if (!packageDataStreams) { throw new Error('Stream template not found, no data streams'); @@ -571,8 +567,11 @@ async function _compilePackageStream( const packageDataStream = packageDataStreams.find( (pkgDataStream) => pkgDataStream.dataset === stream.data_stream.dataset ); + if (!packageDataStream) { - throw new Error(`Stream template not found, unable to find dataset ${datasetPath}`); + throw new Error( + `Stream template not found, unable to find dataset ${stream.data_stream.dataset}` + ); } const streamFromPkg = (packageDataStream.streams || []).find( @@ -583,9 +582,11 @@ async function _compilePackageStream( } if (!streamFromPkg.template_path) { - throw new Error(`Stream template path not found for dataset ${datasetPath}`); + throw new Error(`Stream template path not found for dataset ${stream.data_stream.dataset}`); } + const datasetPath = packageDataStream.path; + const [pkgStreamTemplate] = await getAssetsData( registryPkgInfo, (path: string) => path.endsWith(streamFromPkg.template_path), @@ -594,7 +595,7 @@ async function _compilePackageStream( if (!pkgStreamTemplate || !pkgStreamTemplate.buffer) { throw new Error( - `Unable to load stream template ${streamFromPkg.template_path} for dataset ${datasetPath}` + `Unable to load stream template ${streamFromPkg.template_path} for dataset ${stream.data_stream.dataset}` ); } From 1185aff209a8b9be22e1c973cd6463eb740722a7 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Wed, 12 May 2021 08:03:20 +0200 Subject: [PATCH 023/144] [Lens] display pie chart properly for only falsy correct data (#99598) * [Lens] display pie chart properly for only falsy correct data * case for metric with no data --- .../render_function.test.tsx | 67 +++++++++++++++---- .../pie_visualization/render_function.tsx | 10 ++- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/x-pack/plugins/lens/public/pie_visualization/render_function.test.tsx b/x-pack/plugins/lens/public/pie_visualization/render_function.test.tsx index 4dcd9772b61b4..7191da0af6bfe 100644 --- a/x-pack/plugins/lens/public/pie_visualization/render_function.test.tsx +++ b/x-pack/plugins/lens/public/pie_visualization/render_function.test.tsx @@ -13,6 +13,7 @@ import { NodeColorAccessor, ShapeTreeNode, HierarchyOfArrays, + Chart, } from '@elastic/charts'; import { shallow } from 'enzyme'; import { LensMultiTable } from '../types'; @@ -42,12 +43,12 @@ describe('PieVisualization component', () => { type: 'datatable', columns: [ { id: 'a', name: 'a', meta: { type: 'number' } }, - { id: 'b', name: 'b', meta: { type: 'number' } }, - { id: 'c', name: 'c', meta: { type: 'string' } }, + { id: 'b', name: 'b', meta: { type: 'string' } }, + { id: 'c', name: 'c', meta: { type: 'number' } }, ], rows: [ - { a: 6, b: 2, c: 'I', d: 'Row 1' }, - { a: 1, b: 5, c: 'J', d: 'Row 2' }, + { a: 6, b: 'I', c: 2, d: 'Row 1' }, + { a: 1, b: 'J', c: 5, d: 'Row 2' }, ], }, }, @@ -249,14 +250,14 @@ describe('PieVisualization component', () => { Object { "id": "b", "meta": Object { - "type": "number", + "type": "string", }, "name": "b", }, Object { "id": "c", "meta": Object { - "type": "string", + "type": "number", }, "name": "c", }, @@ -264,14 +265,14 @@ describe('PieVisualization component', () => { "rows": Array [ Object { "a": 6, - "b": 2, - "c": "I", + "b": "I", + "c": 2, "d": "Row 1", }, Object { "a": 1, - "b": 5, - "c": "J", + "b": "J", + "c": 5, "d": "Row 2", }, ], @@ -292,6 +293,48 @@ describe('PieVisualization component', () => { expect(component.find(Settings).first().prop('onElementClick')).toBeUndefined(); }); + test('it renders the empty placeholder when metric contains only falsy data', () => { + const defaultData = getDefaultArgs().data; + const emptyData: LensMultiTable = { + ...defaultData, + tables: { + first: { + ...defaultData.tables.first, + rows: [ + { a: 0, b: 'I', c: 0, d: 'Row 1' }, + { a: 0, b: 'J', c: null, d: 'Row 2' }, + ], + }, + }, + }; + + const component = shallow( + + ); + expect(component.find(EmptyPlaceholder)).toHaveLength(1); + }); + + test('it renders the chart when metric contains truthy data and buckets contain only falsy data', () => { + const defaultData = getDefaultArgs().data; + const emptyData: LensMultiTable = { + ...defaultData, + tables: { + first: { + ...defaultData.tables.first, + // a and b are buckets, c is a metric + rows: [{ a: 0, b: undefined, c: 12 }], + }, + }, + }; + + const component = shallow( + + ); + + expect(component.find(EmptyPlaceholder)).toHaveLength(0); + expect(component.find(Chart)).toHaveLength(1); + }); + test('it shows emptyPlaceholder for undefined grouped data', () => { const defaultData = getDefaultArgs().data; const emptyData: LensMultiTable = { @@ -300,8 +343,8 @@ describe('PieVisualization component', () => { first: { ...defaultData.tables.first, rows: [ - { a: undefined, b: undefined, c: 'I', d: 'Row 1' }, - { a: undefined, b: undefined, c: 'J', d: 'Row 2' }, + { a: undefined, b: 'I', c: undefined, d: 'Row 1' }, + { a: undefined, b: 'J', c: undefined, d: 'Row 2' }, ], }, }, diff --git a/x-pack/plugins/lens/public/pie_visualization/render_function.tsx b/x-pack/plugins/lens/public/pie_visualization/render_function.tsx index b6bb2908b9ed2..cc31222f6b9ab 100644 --- a/x-pack/plugins/lens/public/pie_visualization/render_function.tsx +++ b/x-pack/plugins/lens/public/pie_visualization/render_function.tsx @@ -222,11 +222,15 @@ export function PieComponent( const value = row[metricColumn.id]; return typeof value === 'number' && value < 0; }); + + const isMetricEmpty = firstTable.rows.every((row) => { + return !row[metricColumn.id]; + }); + const isEmpty = firstTable.rows.length === 0 || - firstTable.rows.every((row) => - groups.every((colId) => !row[colId] || typeof row[colId] === 'undefined') - ); + firstTable.rows.every((row) => groups.every((colId) => typeof row[colId] === 'undefined')) || + isMetricEmpty; if (isEmpty) { return ; From 07ed7161ad954361776f1bed817c3707e40f2066 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Wed, 12 May 2021 10:24:34 +0200 Subject: [PATCH 024/144] [Dashboard/Reporting] Fix print layout report (#99458) * re-introduce dshAppContainer class name to fix generated report * update the classname to dashboardViewport Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/reporting/server/lib/layouts/print.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/reporting/server/lib/layouts/print.css b/x-pack/plugins/reporting/server/lib/layouts/print.css index 92cbb327a3216..7d38ebe81e4e8 100644 --- a/x-pack/plugins/reporting/server/lib/layouts/print.css +++ b/x-pack/plugins/reporting/server/lib/layouts/print.css @@ -96,12 +96,12 @@ discover-app .discover-table-footer { * Dashboard tweaks */ -.dshAppContainer .embPanel__header { +.dashboardViewport .embPanel__header { /* hide the panel heading with the controls and title */ - display: none !important + display: none !important; } -.dshAppContainer .euiPanel { +.dashboardViewport .euiPanel { /* Remove the border from the eui panel */ border: none !important; } @@ -114,7 +114,7 @@ discover-app .discover-table-footer { * 2. React grid item's transform affects the visualizations, even when they are using fixed positioning. Chrome seems * to handle this fine, but firefox moves the visualizations around. */ -.dshAppContainer .react-grid-item { +.dashboardViewport .react-grid-item { height: 0 !important; /* 1. */ width: 0 !important; /* 1. */ transform: none !important; /* 2. */ From c22d9fd690ace3f9333663b857d359a6bd368172 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Wed, 12 May 2021 10:32:51 +0200 Subject: [PATCH 025/144] [Reporting] Relax save requirement for CSV reports (#99313) * update requirement to save csv report in ui * update expectation that CSV reporting is disabled for new discover searches * update test expectations (again) * refactor to using props-driven approach * provide a fallback title * refine title a bit more * added component level test * return ISO string with offset Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/top_nav/get_top_nav_links.ts | 9 ++- .../reporting_panel_content.test.tsx | 55 +++++++++++++++++++ .../components/reporting_panel_content.tsx | 10 +++- .../screen_capture_panel_content.tsx | 1 + .../register_csv_reporting.tsx | 1 + .../functional/apps/discover/reporting.ts | 10 ++-- 6 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 x-pack/plugins/reporting/public/components/reporting_panel_content.test.tsx diff --git a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts index 9a12cb51eac0c..38bc831225c68 100644 --- a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts +++ b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts @@ -7,6 +7,7 @@ */ import { i18n } from '@kbn/i18n'; +import moment from 'moment'; import { showOpenSearchPanel } from './show_open_search_panel'; import { getSharingData, showPublicUrlSwitch } from '../../helpers/get_sharing_data'; import { unhashUrl } from '../../../../../kibana_utils/public'; @@ -122,7 +123,13 @@ export const getTopNavLinks = ({ objectType: 'search', sharingData: { ...sharingData, - title: savedSearch.title, + // CSV reports can be generated without a saved search so we provide a fallback title + title: + savedSearch.title || + i18n.translate('discover.localMenu.fallbackReportTitle', { + defaultMessage: 'Discover search [{date}]', + values: { date: moment().toISOString(true) }, + }), }, isDirty: !savedSearch.id || state.isAppStateDirty(), showPublicUrlSwitch, diff --git a/x-pack/plugins/reporting/public/components/reporting_panel_content.test.tsx b/x-pack/plugins/reporting/public/components/reporting_panel_content.test.tsx new file mode 100644 index 0000000000000..6c5b8df104ecd --- /dev/null +++ b/x-pack/plugins/reporting/public/components/reporting_panel_content.test.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { mountWithIntl } from '@kbn/test/jest'; +import { notificationServiceMock } from 'src/core/public/mocks'; + +import { ReportingPanelContent, Props } from './reporting_panel_content'; + +describe('ReportingPanelContent', () => { + const mountComponent = (props: Partial) => + mountWithIntl( + 'test' } as any} + toasts={notificationServiceMock.createSetupContract().toasts} + {...props} + /> + ); + describe('saved state', () => { + it('prevents generating reports when saving is required and we have unsaved changes', () => { + const wrapper = mountComponent({ + requiresSavedState: true, + isDirty: true, + objectId: undefined, + }); + wrapper.update(); + expect(wrapper.find('[data-test-subj="generateReportButton"]').last().props().disabled).toBe( + true + ); + }); + + it('allows generating reports when saving is not required', () => { + const wrapper = mountComponent({ + requiresSavedState: false, + isDirty: true, + objectId: undefined, + }); + wrapper.update(); + expect(wrapper.find('[data-test-subj="generateReportButton"]').last().props().disabled).toBe( + false + ); + }); + }); +}); diff --git a/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx b/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx index 399b503fe48d3..a38c37c808689 100644 --- a/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx +++ b/x-pack/plugins/reporting/public/components/reporting_panel_content.tsx @@ -19,6 +19,11 @@ export interface Props { apiClient: ReportingAPIClient; toasts: ToastsSetup; reportType: string; + + /** + * Whether the report to be generated requires saved state that is not captured in the URL submitted to the report generator. + */ + requiresSavedState: boolean; layoutId: string | undefined; objectId?: string; getJobParams: () => BaseParams; @@ -85,7 +90,10 @@ class ReportingPanelContentUi extends Component { } public render() { - if (this.isNotSaved() || this.props.isDirty || this.state.isStale) { + if ( + this.props.requiresSavedState && + (this.isNotSaved() || this.props.isDirty || this.state.isStale) + ) { return ( { public render() { return ( { beforeEach(() => PageObjects.common.navigateToApp('discover')); - it('is not available if new', async () => { + it('is available if new', async () => { await PageObjects.reporting.openCsvReportingPanel(); - expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be('true'); + expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); }); it('becomes available when saved', async () => { @@ -52,11 +52,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); }); - it('becomes available/not available when a saved search is created, changed and saved again', async () => { + it('remains available regardless of the saved search state', async () => { // create new search, csv export is not available await PageObjects.discover.clickNewSearchButton(); await PageObjects.reporting.openCsvReportingPanel(); - expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be('true'); + expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); // save search, csv export is available await PageObjects.discover.saveSearch('my search - expectEnabledGenerateReportButton 2'); await PageObjects.reporting.openCsvReportingPanel(); @@ -64,7 +64,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // add filter, csv export is not available await filterBar.addFilter('currency', 'is', 'EUR'); await PageObjects.reporting.openCsvReportingPanel(); - expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be('true'); + expect(await PageObjects.reporting.isGenerateReportButtonDisabled()).to.be(null); // save search again, csv export is available await PageObjects.discover.saveSearch('my search - expectEnabledGenerateReportButton 2'); await PageObjects.reporting.openCsvReportingPanel(); From 0b4c9573b70150b28fe46dac5dd61ba43df5a13d Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Wed, 12 May 2021 10:57:05 +0200 Subject: [PATCH 026/144] [Security Solution][Detections] Completes alert details for Indicator Match Rules (#99671) * adds 'Displays threat summary data on alerts details' test * adds 'Displays threat indicator data on the threat indicator tab' test * changes name of the test from 'threat indicator tab' to 'threat intel tab' * adds an extra assertion --- .../indicator_match_rule.spec.ts | 101 +++++++++++++++++- .../cypress/screens/alerts_details.ts | 12 +++ .../cypress/tasks/alerts_details.ts | 11 +- .../event_details/event_details.tsx | 1 + 4 files changed, 122 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts index 098c9aca571eb..d0f2cd9f45743 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/indicator_match_rule.spec.ts @@ -16,7 +16,16 @@ import { ALERT_RULE_VERSION, NUMBER_OF_ALERTS, } from '../../screens/alerts'; -import { JSON_LINES } from '../../screens/alerts_details'; +import { + JSON_LINES, + TABLE_CELL, + TABLE_ROWS, + THREAT_CONTENT, + THREAT_DETAILS_VIEW, + THREAT_INTEL_TAB, + THREAT_SUMMARY_VIEW, + TITLE, +} from '../../screens/alerts_details'; import { CUSTOM_RULES_BTN, RISK_SCORE, @@ -63,7 +72,11 @@ import { waitForAlertsIndexToBeCreated, waitForAlertsPanelToBeLoaded, } from '../../tasks/alerts'; -import { openJsonView, scrollJsonViewToBottom } from '../../tasks/alerts_details'; +import { + openJsonView, + openThreatIndicatorDetails, + scrollJsonViewToBottom, +} from '../../tasks/alerts_details'; import { changeRowsPerPageTo300, duplicateFirstRule, @@ -585,6 +598,90 @@ describe('indicator match', () => { }); }); }); + + it('Displays threat summary data on alerts details', () => { + const expectedThreatSummary = [ + { field: 'matched.field', value: 'myhash.mysha256' }, + { field: 'matched.type', value: 'file' }, + { field: 'first_seen', value: '2021-03-10T08:02:14.000Z' }, + ]; + + expandFirstAlert(); + + cy.get(THREAT_SUMMARY_VIEW).within(() => { + cy.get(TABLE_ROWS).should('have.length', expectedThreatSummary.length); + expectedThreatSummary.forEach((row, index) => { + cy.get(TABLE_ROWS) + .eq(index) + .within(() => { + cy.get(TITLE).should('have.text', row.field); + cy.get(THREAT_CONTENT).should('have.text', row.value); + }); + }); + }); + }); + + it('Displays threat indicator data on the threat intel tab', () => { + const expectedThreatIndicatorData = [ + { field: 'first_seen', value: '2021-03-10T08:02:14.000Z' }, + { field: 'file.size', value: '80280' }, + { field: 'file.type', value: 'elf' }, + { + field: 'file.hash.sha256', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + }, + { + field: 'file.hash.tlsh', + value: '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', + }, + { + field: 'file.hash.ssdeep', + value: + '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', + }, + { field: 'file.hash.md5', value: '9b6c3518a91d23ed77504b5416bfb5b3' }, + { field: 'type', value: 'file' }, + { + field: 'event.reference', + value: + 'https://urlhaus-api.abuse.ch/v1/download/a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3/(opens in a new tab or window)', + }, + { field: 'event.ingested', value: '2021-03-10T14:51:09.809069Z' }, + { field: 'event.created', value: '2021-03-10T14:51:07.663Z' }, + { field: 'event.kind', value: 'enrichment' }, + { field: 'event.module', value: 'threatintel' }, + { field: 'event.category', value: 'threat' }, + { field: 'event.type', value: 'indicator' }, + { field: 'event.dataset', value: 'threatintel.abusemalware' }, + { + field: 'matched.atomic', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + }, + { field: 'matched.field', value: 'myhash.mysha256' }, + { + field: 'matched.id', + value: '84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f', + }, + { field: 'matched.index', value: 'filebeat-7.12.0-2021.03.10-000001' }, + { field: 'matched.type', value: 'file' }, + ]; + + expandFirstAlert(); + openThreatIndicatorDetails(); + + cy.get(THREAT_INTEL_TAB).should('have.text', 'Threat Intel (1)'); + cy.get(THREAT_DETAILS_VIEW).within(() => { + cy.get(TABLE_ROWS).should('have.length', expectedThreatIndicatorData.length); + expectedThreatIndicatorData.forEach((row, index) => { + cy.get(TABLE_ROWS) + .eq(index) + .within(() => { + cy.get(TABLE_CELL).eq(0).should('have.text', row.field); + cy.get(TABLE_CELL).eq(1).should('have.text', row.value); + }); + }); + }); + }); }); describe('Duplicates the indicator rule', () => { diff --git a/x-pack/plugins/security_solution/cypress/screens/alerts_details.ts b/x-pack/plugins/security_solution/cypress/screens/alerts_details.ts index c18949224d4c0..12bef09b8356d 100644 --- a/x-pack/plugins/security_solution/cypress/screens/alerts_details.ts +++ b/x-pack/plugins/security_solution/cypress/screens/alerts_details.ts @@ -13,6 +13,18 @@ export const JSON_LINES = '.ace_line'; export const JSON_VIEW_TAB = '[data-test-subj="jsonViewTab"]'; +export const TABLE_CELL = '.euiTableRowCell'; + export const TABLE_TAB = '[data-test-subj="tableTab"]'; export const TABLE_ROWS = '.euiTableRow'; + +export const THREAT_CONTENT = '[data-test-subj^=draggable-content-threat]'; + +export const THREAT_DETAILS_VIEW = '[data-test-subj="threat-details-view-0"]'; + +export const THREAT_INTEL_TAB = '[data-test-subj="threatIntelTab"]'; + +export const THREAT_SUMMARY_VIEW = '[data-test-subj="threat-summary-view"]'; + +export const TITLE = '.euiTitle'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/alerts_details.ts b/x-pack/plugins/security_solution/cypress/tasks/alerts_details.ts index 16c30afe117ef..44b30a7c89365 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/alerts_details.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/alerts_details.ts @@ -5,7 +5,12 @@ * 2.0. */ -import { JSON_CONTENT, JSON_VIEW_TAB, TABLE_TAB } from '../screens/alerts_details'; +import { + JSON_CONTENT, + JSON_VIEW_TAB, + TABLE_TAB, + THREAT_INTEL_TAB, +} from '../screens/alerts_details'; export const openJsonView = () => { cy.get(JSON_VIEW_TAB).click(); @@ -15,6 +20,10 @@ export const openTable = () => { cy.get(TABLE_TAB).click(); }; +export const openThreatIndicatorDetails = () => { + cy.get(THREAT_INTEL_TAB).click(); +}; + export const scrollJsonViewToBottom = () => { cy.get(JSON_CONTENT).click({ force: true }); cy.get(JSON_CONTENT).type('{pagedown}{pagedown}{pagedown}'); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx index 4e924402783c2..c4092214633e5 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/event_details.tsx @@ -136,6 +136,7 @@ const EventDetailsComponent: React.FC = ({ isAlert ? { id: EventsViewType.threatIntelView, + 'data-test-subj': 'threatIntelTab', name: `${i18n.THREAT_INTEL} (${threatCount})`, content: , } From a76677e78f125657592816328e54251969a79a38 Mon Sep 17 00:00:00 2001 From: Michael Dokolin Date: Wed, 12 May 2021 12:00:58 +0200 Subject: [PATCH 027/144] [Data] Add IPv6 support by the data plugin (#99837) --- ...ibana-plugin-plugins-data-public.search.md | 2 +- ...ibana-plugin-plugins-data-server.search.md | 2 +- .../common/search/aggs/buckets/ip_range.ts | 2 +- .../search/aggs/buckets/lib/cidr_mask.test.ts | 85 +++++++++---------- .../search/aggs/buckets/lib/cidr_mask.ts | 72 ++++++++++------ .../data/common/search/aggs/utils/index.ts | 2 +- .../search/aggs/utils/ip_address.test.ts | 67 +++++++++++++++ .../common/search/aggs/utils/ip_address.ts | 47 ++++++++++ .../search/aggs/utils/ipv4_address.test.ts | 54 ------------ .../common/search/aggs/utils/ipv4_address.ts | 63 -------------- src/plugins/data/public/index.ts | 4 +- src/plugins/data/public/public.api.md | 4 +- .../filter_editor/lib/filter_editor_utils.ts | 4 +- src/plugins/data/server/index.ts | 4 +- src/plugins/data/server/server.api.md | 4 +- .../controls/components/from_to_list.tsx | 2 +- 16 files changed, 212 insertions(+), 206 deletions(-) create mode 100644 src/plugins/data/common/search/aggs/utils/ip_address.test.ts create mode 100644 src/plugins/data/common/search/aggs/utils/ip_address.ts delete mode 100644 src/plugins/data/common/search/aggs/utils/ipv4_address.test.ts delete mode 100644 src/plugins/data/common/search/aggs/utils/ipv4_address.ts diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md index 259009c1c5668..3c99ae4c86c63 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md @@ -21,7 +21,7 @@ search: { })[]; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; - Ipv4Address: typeof Ipv4Address; + IpAddress: typeof IpAddress; isDateHistogramBucketAggConfig: typeof isDateHistogramBucketAggConfig; isNumberType: (agg: import("../common").AggConfig) => boolean; isStringType: (agg: import("../common").AggConfig) => boolean; diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md index 930f7710f9a00..7072f25489db2 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md @@ -21,7 +21,7 @@ search: { })[]; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; - Ipv4Address: typeof Ipv4Address; + IpAddress: typeof IpAddress; isNumberType: (agg: import("../common").AggConfig) => boolean; isStringType: (agg: import("../common").AggConfig) => boolean; isType: (...types: string[]) => (agg: import("../common").AggConfig) => boolean; diff --git a/src/plugins/data/common/search/aggs/buckets/ip_range.ts b/src/plugins/data/common/search/aggs/buckets/ip_range.ts index c99676d71957a..5bcd614d9debf 100644 --- a/src/plugins/data/common/search/aggs/buckets/ip_range.ts +++ b/src/plugins/data/common/search/aggs/buckets/ip_range.ts @@ -18,7 +18,7 @@ import { KBN_FIELD_TYPES } from '../../../../common'; import { BaseAggParams } from '../types'; const ipRangeTitle = i18n.translate('data.search.aggs.buckets.ipRangeTitle', { - defaultMessage: 'IPv4 Range', + defaultMessage: 'IP Range', }); export enum IP_RANGE_TYPES { diff --git a/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.test.ts b/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.test.ts index 04363ee792289..b0466b78529e7 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.test.ts @@ -9,56 +9,47 @@ import { CidrMask } from './cidr_mask'; describe('CidrMask', () => { - test('should throw errors with invalid CIDR masks', () => { - expect( - () => - // @ts-ignore - new CidrMask() - ).toThrowError(); - - expect(() => new CidrMask('')).toThrowError(); - expect(() => new CidrMask('hello, world')).toThrowError(); - expect(() => new CidrMask('0.0.0.0')).toThrowError(); - expect(() => new CidrMask('0.0.0.0/0')).toThrowError(); - expect(() => new CidrMask('0.0.0.0/33')).toThrowError(); - expect(() => new CidrMask('256.0.0.0/32')).toThrowError(); - expect(() => new CidrMask('0.0.0.0/32/32')).toThrowError(); - expect(() => new CidrMask('1.2.3/1')).toThrowError(); - expect(() => new CidrMask('0.0.0.0/123d')).toThrowError(); + describe('constructor', () => { + it.each` + mask + ${''} + ${'hello, world'} + ${'0.0.0.0'} + ${'0.0.0.0/33'} + ${'256.0.0.0/32'} + ${'0.0.0.0/32/32'} + ${'0.0.0.0/123d'} + ${'::1'} + ${'::1/129'} + ${'fffff::/128'} + ${'ffff::/128/128'} + `('should throw an error on $mask', ({ mask }) => { + expect(() => new CidrMask(mask)).toThrowError(); + }); }); - test('should correctly grab IP address and prefix length', () => { - let mask = new CidrMask('0.0.0.0/1'); - expect(mask.initialAddress.toString()).toBe('0.0.0.0'); - expect(mask.prefixLength).toBe(1); - - mask = new CidrMask('128.0.0.1/31'); - expect(mask.initialAddress.toString()).toBe('128.0.0.1'); - expect(mask.prefixLength).toBe(31); + describe('toString', () => { + it.each` + mask | expected + ${'192.168.1.1/24'} | ${'192.168.1.1/24'} + ${'192.168.257/32'} | ${'192.168.1.1/32'} + ${'ffff:0:0:0:0:0:0:0/128'} | ${'ffff::/128'} + `('should format $mask as $expected', ({ mask, expected }) => { + expect(new CidrMask(mask).toString()).toBe(expected); + }); }); - test('should calculate a range of IP addresses', () => { - let mask = new CidrMask('0.0.0.0/1'); - let range = mask.getRange(); - expect(range.from.toString()).toBe('0.0.0.0'); - expect(range.to.toString()).toBe('127.255.255.255'); - - mask = new CidrMask('1.2.3.4/2'); - range = mask.getRange(); - expect(range.from.toString()).toBe('0.0.0.0'); - expect(range.to.toString()).toBe('63.255.255.255'); - - mask = new CidrMask('67.129.65.201/27'); - range = mask.getRange(); - expect(range.from.toString()).toBe('67.129.65.192'); - expect(range.to.toString()).toBe('67.129.65.223'); - }); - - test('toString()', () => { - let mask = new CidrMask('.../1'); - expect(mask.toString()).toBe('0.0.0.0/1'); - - mask = new CidrMask('128.0.0.1/31'); - expect(mask.toString()).toBe('128.0.0.1/31'); + describe('getRange', () => { + it.each` + mask | from | to + ${'0.0.0.0/0'} | ${'0.0.0.0'} | ${'255.255.255.255'} + ${'0.0.0.0/1'} | ${'0.0.0.0'} | ${'127.255.255.255'} + ${'1.2.3.4/2'} | ${'0.0.0.0'} | ${'63.255.255.255'} + ${'67.129.65.201/27'} | ${'67.129.65.192'} | ${'67.129.65.223'} + ${'::/1'} | ${'::'} | ${'7fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'} + ${'8000::/1'} | ${'8000::'} | ${'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'} + `('should return $from-$to for $mask', ({ mask, from, to }) => { + expect(new CidrMask(mask).getRange()).toEqual({ from, to }); + }); }); }); diff --git a/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts b/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts index 1a1c9b8157838..93ccbffaeb89d 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/cidr_mask.ts @@ -6,42 +6,60 @@ * Side Public License, v 1. */ -import { Ipv4Address } from '../../utils'; - -const NUM_BITS = 32; - -function throwError(mask: string) { - throw Error('Invalid CIDR mask: ' + mask); -} +import ipaddr from 'ipaddr.js'; +import { IpAddress } from '../../utils'; export class CidrMask { - public readonly initialAddress: Ipv4Address; - public readonly prefixLength: number; + private address: number[]; + private netmask: number; - constructor(mask: string) { - const splits = mask.split('/'); - if (splits.length !== 2) { - throwError(mask); - } - this.initialAddress = new Ipv4Address(splits[0]); - this.prefixLength = Number(splits[1]); - if (isNaN(this.prefixLength) || this.prefixLength < 1 || this.prefixLength > NUM_BITS) { - throwError(mask); + constructor(cidr: string) { + try { + const [address, netmask] = ipaddr.parseCIDR(cidr); + + this.address = address.toByteArray(); + this.netmask = netmask; + } catch { + throw Error('Invalid CIDR mask: ' + cidr); } } - public getRange() { - const variableBits = NUM_BITS - this.prefixLength; - // eslint-disable-next-line no-bitwise - const fromAddress = ((this.initialAddress.valueOf() >> variableBits) << variableBits) >>> 0; // >>> 0 coerces to unsigned - const numAddresses = Math.pow(2, variableBits); + private getBroadcastAddress() { + /* eslint-disable no-bitwise */ + const netmask = (1n << BigInt(this.address.length * 8 - this.netmask)) - 1n; + const broadcast = this.address.map((byte, index) => { + const offset = BigInt(this.address.length - index - 1) * 8n; + const mask = Number((netmask >> offset) & 255n); + + return byte | mask; + }); + /* eslint-enable no-bitwise */ + + return new IpAddress(broadcast).toString(); + } + + private getNetworkAddress() { + /* eslint-disable no-bitwise */ + const netmask = (1n << BigInt(this.address.length * 8 - this.netmask)) - 1n; + const network = this.address.map((byte, index) => { + const offset = BigInt(this.address.length - index - 1) * 8n; + const mask = Number((netmask >> offset) & 255n) ^ 255; + + return byte & mask; + }); + /* eslint-enable no-bitwise */ + + return new IpAddress(network).toString(); + } + + getRange() { return { - from: new Ipv4Address(fromAddress).toString(), - to: new Ipv4Address(fromAddress + numAddresses - 1).toString(), + from: this.getNetworkAddress(), + to: this.getBroadcastAddress(), }; } - public toString() { - return this.initialAddress.toString() + '/' + this.prefixLength; + toString() { + return `${new IpAddress(this.address)}/${this.netmask}`; } } diff --git a/src/plugins/data/common/search/aggs/utils/index.ts b/src/plugins/data/common/search/aggs/utils/index.ts index c92653e843233..f1625070b6f75 100644 --- a/src/plugins/data/common/search/aggs/utils/index.ts +++ b/src/plugins/data/common/search/aggs/utils/index.ts @@ -11,7 +11,7 @@ export { getNumberHistogramIntervalByDatatableColumn } from './get_number_histog export { getDateHistogramMetaDataByDatatableColumn } from './get_date_histogram_meta'; export * from './date_interval_utils'; export * from './get_format_with_aggs'; -export * from './ipv4_address'; +export * from './ip_address'; export * from './prop_filter'; export * from './to_angular_json'; export * from './infer_time_zone'; diff --git a/src/plugins/data/common/search/aggs/utils/ip_address.test.ts b/src/plugins/data/common/search/aggs/utils/ip_address.test.ts new file mode 100644 index 0000000000000..966408cf6fe27 --- /dev/null +++ b/src/plugins/data/common/search/aggs/utils/ip_address.test.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { IpAddress } from './ip_address'; + +describe('IpAddress', () => { + describe('constructor', () => { + it.each` + address + ${''} + ${'hello, world'} + ${'256.0.0.0'} + ${'-1.0.0.0'} + ${Number.MAX_SAFE_INTEGER} + ${'fffff::'} + ${'ffff:0:0:0:0:0:0:0:0'} + `('should throw an error on $address', ({ address }) => { + expect(() => new IpAddress(address)).toThrowError(); + }); + + it.each` + address | expected + ${'192.168.257'} | ${'192.168.1.1'} + ${2116932386} | ${'126.45.211.34'} + ${'126.45.211.34'} | ${'126.45.211.34'} + ${[126, 45, 211, 34]} | ${'126.45.211.34'} + ${'ffff:0:0:0:0:0:0:0'} | ${'ffff::'} + ${'ffff::'} | ${'ffff::'} + ${[0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} | ${'ffff::'} + `('should parse $address', ({ address, expected }) => { + expect(new IpAddress(address).toString()).toBe(expected); + }); + }); + + describe('valueOf', () => { + it.each` + address | expected + ${'0.0.0.0'} | ${'0'} + ${'0.0.0.1'} | ${'1'} + ${'126.45.211.34'} | ${'2116932386'} + ${'ffff::'} | ${'340277174624079928635746076935438991360'} + `( + 'should return $expected as a decimal representation of $address', + ({ address, expected }) => { + expect(new IpAddress(address).valueOf().toString()).toBe(expected); + } + ); + }); + + describe('toString()', () => { + it.each` + address | expected + ${'0.000.00000.1'} | ${'0.0.0.1'} + ${'192.168.257'} | ${'192.168.1.1'} + ${'ffff:0:0:0:0:0:0:0'} | ${'ffff::'} + ${'0:0:0:0:0:0:0:ffff'} | ${'::ffff'} + ${'f:0:0:0:0:0:0:f'} | ${'f::f'} + `('should serialize $address as $expected', ({ address, expected }) => { + expect(new IpAddress(address).toString()).toBe(expected); + }); + }); +}); diff --git a/src/plugins/data/common/search/aggs/utils/ip_address.ts b/src/plugins/data/common/search/aggs/utils/ip_address.ts new file mode 100644 index 0000000000000..2fffbc468046f --- /dev/null +++ b/src/plugins/data/common/search/aggs/utils/ip_address.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import ipaddr, { IPv4, IPv6 } from 'ipaddr.js'; + +function isIPv6(value: IPv4 | IPv6): value is IPv6 { + return value.kind() === 'ipv6'; +} + +export class IpAddress { + private value: IPv4 | IPv6; + + constructor(ipAddress: string | number | number[]) { + try { + this.value = Array.isArray(ipAddress) + ? ipaddr.fromByteArray(ipAddress) + : ipaddr.parse(`${ipAddress}`); + } catch { + throw Error('Invalid IP address: ' + ipAddress); + } + } + + toString() { + if (isIPv6(this.value)) { + return this.value.toRFC5952String(); + } + + return this.value.toString(); + } + + valueOf(): number | bigint { + const value = this.value + .toByteArray() + .reduce((result, octet) => result * 256n + BigInt(octet), 0n); + + if (value > Number.MAX_SAFE_INTEGER) { + return value; + } + + return Number(value); + } +} diff --git a/src/plugins/data/common/search/aggs/utils/ipv4_address.test.ts b/src/plugins/data/common/search/aggs/utils/ipv4_address.test.ts deleted file mode 100644 index 4be406f54390f..0000000000000 --- a/src/plugins/data/common/search/aggs/utils/ipv4_address.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import expect from '@kbn/expect'; -import { Ipv4Address } from './ipv4_address'; - -describe('Ipv4Address', () => { - it('should throw errors with invalid IP addresses', () => { - // @ts-ignore - expect(() => new Ipv4Address()).to.throwError(); - - expect(() => new Ipv4Address('')).to.throwError(); - - expect(() => new Ipv4Address('hello, world')).to.throwError(); - - expect(() => new Ipv4Address('0.0.0')).to.throwError(); - - expect(() => new Ipv4Address('256.0.0.0')).to.throwError(); - - expect(() => new Ipv4Address('-1.0.0.0')).to.throwError(); - - expect(() => new Ipv4Address(Number.MAX_SAFE_INTEGER)).to.throwError(); - }); - - it('should allow creation with an integer or string', () => { - expect(new Ipv4Address(2116932386).toString()).to.be( - new Ipv4Address('126.45.211.34').toString() - ); - }); - - it('should correctly calculate the decimal representation of an IP address', () => { - let ipAddress = new Ipv4Address('0.0.0.0'); - expect(ipAddress.valueOf()).to.be(0); - - ipAddress = new Ipv4Address('0.0.0.1'); - expect(ipAddress.valueOf()).to.be(1); - - ipAddress = new Ipv4Address('126.45.211.34'); - expect(ipAddress.valueOf()).to.be(2116932386); - }); - - it('toString()', () => { - let ipAddress = new Ipv4Address('0.000.00000.1'); - expect(ipAddress.toString()).to.be('0.0.0.1'); - - ipAddress = new Ipv4Address('123.123.123.123'); - expect(ipAddress.toString()).to.be('123.123.123.123'); - }); -}); diff --git a/src/plugins/data/common/search/aggs/utils/ipv4_address.ts b/src/plugins/data/common/search/aggs/utils/ipv4_address.ts deleted file mode 100644 index aa6588349c9db..0000000000000 --- a/src/plugins/data/common/search/aggs/utils/ipv4_address.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -const NUM_BYTES = 4; -const BYTE_SIZE = 256; - -function throwError(ipAddress: string | number) { - throw Error('Invalid IPv4 address: ' + ipAddress); -} - -function isIntegerInRange(integer: number, min: number, max: number) { - return ( - !isNaN(integer as number) && integer >= min && integer < max && (integer as number) % 1 === 0 - ); -} - -export class Ipv4Address { - private value: number; - - constructor(ipAddress: string | number) { - if (typeof ipAddress === 'string') { - this.value = 0; - - const bytes = ipAddress.split('.'); - if (bytes.length !== NUM_BYTES) { - throwError(ipAddress); - } - - for (let i = 0; i < bytes.length; i++) { - const byte = Number(bytes[i]); - if (!isIntegerInRange(byte, 0, BYTE_SIZE)) { - throwError(ipAddress); - } - this.value += Math.pow(BYTE_SIZE, NUM_BYTES - 1 - i) * byte; - } - } else { - this.value = ipAddress; - } - - if (!isIntegerInRange(this.value, 0, Math.pow(BYTE_SIZE, NUM_BYTES))) { - throwError(ipAddress); - } - } - - public toString() { - let value = this.value; - const bytes = []; - for (let i = 0; i < NUM_BYTES; i++) { - bytes.unshift(value % 256); - value = Math.floor(value / 256); - } - return bytes.join('.'); - } - - public valueOf() { - return this.value; - } -} diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index f2a61e94a07d9..ba873952c9841 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -305,7 +305,7 @@ import { dateHistogramInterval, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, - Ipv4Address, + IpAddress, isValidEsInterval, isValidInterval, parseEsInterval, @@ -411,7 +411,7 @@ export const search = { intervalOptions, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, - Ipv4Address, + IpAddress, isDateHistogramBucketAggConfig, // TODO: remove in build_pipeline refactor isNumberType, isStringType, diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index d4f0ccfe810c6..54cea5e09121b 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -2299,7 +2299,7 @@ export const search: { })[]; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; - Ipv4Address: typeof Ipv4Address; + IpAddress: typeof IpAddress; isDateHistogramBucketAggConfig: typeof isDateHistogramBucketAggConfig; isNumberType: (agg: import("../common").AggConfig) => boolean; isStringType: (agg: import("../common").AggConfig) => boolean; @@ -2737,7 +2737,7 @@ export interface WaitUntilNextSessionCompletesOptions { // src/plugins/data/public/index.ts:410:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:419:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:420:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:421:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:421:1 - (ae-forgotten-export) The symbol "IpAddress" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:422:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:426:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:427:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts index d6e5b57f5878b..e15f667128c4f 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts @@ -12,7 +12,7 @@ import { isFilterable, IIndexPattern, IFieldType, - Ipv4Address, + IpAddress, Filter, FieldFilter, } from '../../../../../common'; @@ -44,7 +44,7 @@ export function validateParams(params: any, type: string) { return Boolean(typeof params === 'string' && moment && moment.isValid()); case 'ip': try { - return Boolean(new Ipv4Address(params)); + return Boolean(new IpAddress(params)); } catch (e) { return false; } diff --git a/src/plugins/data/server/index.ts b/src/plugins/data/server/index.ts index c4e132e33fc3b..e782fc0d4ffea 100644 --- a/src/plugins/data/server/index.ts +++ b/src/plugins/data/server/index.ts @@ -170,7 +170,7 @@ import { dateHistogramInterval, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, - Ipv4Address, + IpAddress, isValidEsInterval, isValidInterval, parseEsInterval, @@ -247,7 +247,7 @@ export const search = { intervalOptions, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, - Ipv4Address, + IpAddress, isNumberType, isStringType, isType, diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index e66eaab672e1c..a71ce360a2190 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -1341,7 +1341,7 @@ export const search: { })[]; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; - Ipv4Address: typeof Ipv4Address; + IpAddress: typeof IpAddress; isNumberType: (agg: import("../common").AggConfig) => boolean; isStringType: (agg: import("../common").AggConfig) => boolean; isType: (...types: string[]) => (agg: import("../common").AggConfig) => boolean; @@ -1544,7 +1544,7 @@ export function usageProvider(core: CoreSetup_2): SearchUsage; // src/plugins/data/server/index.ts:246:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:255:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:256:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:257:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:257:1 - (ae-forgotten-export) The symbol "IpAddress" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:261:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:262:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:266:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts diff --git a/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx b/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx index a6e0ee0d2aec4..1c721cde37b2b 100644 --- a/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx @@ -38,7 +38,7 @@ const defaultConfig = { from: { value: '0.0.0.0', model: '0.0.0.0', isInvalid: false }, to: { value: '255.255.255.255', model: '255.255.255.255', isInvalid: false }, }, - validateClass: search.aggs.Ipv4Address, + validateClass: search.aggs.IpAddress, getModelValue: (item: FromToObject = {}) => ({ from: { value: item.from || EMPTY_STRING, From c44e5f75a381bebf853a7e1b3a294c5497a9af5e Mon Sep 17 00:00:00 2001 From: Robert Oskamp Date: Wed, 12 May 2021 13:18:36 +0200 Subject: [PATCH 028/144] [ML] Functional tests - increase module test coverage (#99758) This PR adds a couple API integrations tests to get, recognize and setup modules. --- x-pack/test/api_integration/apis/ml/index.ts | 10 + .../apis/ml/modules/get_module.ts | 2 + .../api_integration/apis/ml/modules/index.ts | 18 +- .../apis/ml/modules/recognize_module.ts | 57 +- .../apis/ml/modules/setup_module.ts | 449 +- .../ml/module_apache_data_stream/data.json.gz | Bin 0 -> 67701 bytes .../module_apache_data_stream/mappings.json | 2671 ++ .../ml/module_metricbeat/data.json.gz | Bin 0 -> 18495 bytes .../ml/module_metricbeat/mappings.json | 441 + .../ml/module_metrics_ui/data.json.gz | Bin 0 -> 525656 bytes .../ml/module_metrics_ui/mappings.json | 20668 ++++++++++++++++ .../ml/module_nginx_data_stream/data.json.gz | Bin 0 -> 67488 bytes .../ml/module_nginx_data_stream/mappings.json | 2675 ++ .../ml/module_siem_cloudtrail/data.json.gz | Bin 0 -> 29031 bytes .../ml/module_siem_cloudtrail/mappings.json | 12950 ++++++++++ .../ml/module_siem_winlogbeat/data.json.gz | Bin 88794 -> 4269 bytes .../ml/module_siem_winlogbeat/mappings.json | 4078 ++- .../functional/services/ml/test_resources.ts | 22 + 18 files changed, 43588 insertions(+), 453 deletions(-) create mode 100644 x-pack/test/functional/es_archives/ml/module_apache_data_stream/data.json.gz create mode 100644 x-pack/test/functional/es_archives/ml/module_apache_data_stream/mappings.json create mode 100644 x-pack/test/functional/es_archives/ml/module_metricbeat/data.json.gz create mode 100644 x-pack/test/functional/es_archives/ml/module_metricbeat/mappings.json create mode 100644 x-pack/test/functional/es_archives/ml/module_metrics_ui/data.json.gz create mode 100644 x-pack/test/functional/es_archives/ml/module_metrics_ui/mappings.json create mode 100644 x-pack/test/functional/es_archives/ml/module_nginx_data_stream/data.json.gz create mode 100644 x-pack/test/functional/es_archives/ml/module_nginx_data_stream/mappings.json create mode 100644 x-pack/test/functional/es_archives/ml/module_siem_cloudtrail/data.json.gz create mode 100644 x-pack/test/functional/es_archives/ml/module_siem_cloudtrail/mappings.json diff --git a/x-pack/test/api_integration/apis/ml/index.ts b/x-pack/test/api_integration/apis/ml/index.ts index 41e94d69d2e9b..2206355003a75 100644 --- a/x-pack/test/api_integration/apis/ml/index.ts +++ b/x-pack/test/api_integration/apis/ml/index.ts @@ -36,6 +36,11 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await ml.testResources.deleteIndexPatternByTitle('ft_module_siem_winlogbeat'); await ml.testResources.deleteIndexPatternByTitle('ft_farequote'); await ml.testResources.deleteIndexPatternByTitle('ft_logs-endpoint.events.*'); + await ml.testResources.deleteIndexPatternByTitle('ft_module_metricbeat'); + await ml.testResources.deleteIndexPatternByTitle('ft_module_siem_cloudtrail'); + await ml.testResources.deleteIndexPatternByTitle('ft_module_metrics_ui'); + await ml.testResources.deleteIndexPatternByTitle('ft_module_apache_data_stream'); + await ml.testResources.deleteIndexPatternByTitle('ft_module_nginx_data_stream'); await esArchiver.unload('ml/ecommerce'); await esArchiver.unload('ml/categorization'); @@ -54,6 +59,11 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await esArchiver.unload('ml/farequote'); await esArchiver.unload('ml/bm_classification'); await esArchiver.unload('ml/ihp_outlier'); + await esArchiver.unload('ml/module_metricbeat'); + await esArchiver.unload('ml/module_siem_cloudtrail'); + await esArchiver.unload('ml/module_metrics_ui'); + await esArchiver.unload('ml/module_apache_data_stream'); + await esArchiver.unload('ml/module_nginx_data_stream'); await ml.testResources.resetKibanaTimeZone(); }); diff --git a/x-pack/test/api_integration/apis/ml/modules/get_module.ts b/x-pack/test/api_integration/apis/ml/modules/get_module.ts index 59aa6102b54e2..4fa79b915cc5d 100644 --- a/x-pack/test/api_integration/apis/ml/modules/get_module.ts +++ b/x-pack/test/api_integration/apis/ml/modules/get_module.ts @@ -14,6 +14,7 @@ import { COMMON_REQUEST_HEADERS } from '../../../../functional/services/ml/commo import { isPopulatedObject } from '../../../../../plugins/ml/common/util/object_utils'; const moduleIds = [ + 'apache_data_stream', 'apache_ecs', 'apm_jsbase', 'apm_nodejs', @@ -25,6 +26,7 @@ const moduleIds = [ 'metricbeat_system_ecs', 'metrics_ui_hosts', 'metrics_ui_k8s', + 'nginx_data_stream', 'nginx_ecs', 'sample_data_ecommerce', 'sample_data_weblogs', diff --git a/x-pack/test/api_integration/apis/ml/modules/index.ts b/x-pack/test/api_integration/apis/ml/modules/index.ts index c5a22921b92c5..ab46c4f0333c8 100644 --- a/x-pack/test/api_integration/apis/ml/modules/index.ts +++ b/x-pack/test/api_integration/apis/ml/modules/index.ts @@ -7,8 +7,24 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ getService, loadTestFile }: FtrProviderContext) { + const ml = getService('ml'); + + const fleetPackages = ['apache-0.5.0', 'nginx-0.5.0']; + describe('modules', function () { + before(async () => { + for (const fleetPackage of fleetPackages) { + await ml.testResources.installFleetPackage(fleetPackage); + } + }); + + after(async () => { + for (const fleetPackage of fleetPackages) { + await ml.testResources.removeFleetPackage(fleetPackage); + } + }); + loadTestFile(require.resolve('./get_module')); loadTestFile(require.resolve('./recognize_module')); loadTestFile(require.resolve('./setup_module')); diff --git a/x-pack/test/api_integration/apis/ml/modules/recognize_module.ts b/x-pack/test/api_integration/apis/ml/modules/recognize_module.ts index d6020e17801fd..8cdc7168ac62b 100644 --- a/x-pack/test/api_integration/apis/ml/modules/recognize_module.ts +++ b/x-pack/test/api_integration/apis/ml/modules/recognize_module.ts @@ -104,7 +104,12 @@ export default ({ getService }: FtrProviderContext) => { user: USER.ML_POWERUSER, expected: { responseCode: 200, - moduleIds: ['siem_winlogbeat'], + moduleIds: [ + 'security_network', + 'security_windows', + 'siem_winlogbeat', + 'siem_winlogbeat_auth', + ], }, }, { @@ -146,6 +151,56 @@ export default ({ getService }: FtrProviderContext) => { moduleIds: ['security_linux', 'security_network', 'security_windows'], }, }, + { + testTitleSuffix: 'for metricbeat dataset', + sourceDataArchive: 'ml/module_metricbeat', + indexPattern: 'ft_module_metricbeat', + user: USER.ML_POWERUSER, + expected: { + responseCode: 200, + moduleIds: ['metricbeat_system_ecs', 'security_linux'], + }, + }, + { + testTitleSuffix: 'for siem clodutrail dataset', + sourceDataArchive: 'ml/module_siem_cloudtrail', + indexPattern: 'ft_module_siem_cloudtrail', + user: USER.ML_POWERUSER, + expected: { + responseCode: 200, + moduleIds: ['siem_cloudtrail'], + }, + }, + { + testTitleSuffix: 'for metrics ui dataset', + sourceDataArchive: 'ml/module_metrics_ui', + indexPattern: 'ft_module_metrics_ui', + user: USER.ML_POWERUSER, + expected: { + responseCode: 200, + moduleIds: ['security_linux'], // the metrics ui modules don't define a query and can't be recognized + }, + }, + { + testTitleSuffix: 'for apache data stream dataset', + sourceDataArchive: 'ml/module_apache_data_stream', + indexPattern: 'ft_module_apache_data_stream', + user: USER.ML_POWERUSER, + expected: { + responseCode: 200, + moduleIds: ['apache_data_stream'], + }, + }, + { + testTitleSuffix: 'for nginx data stream dataset', + sourceDataArchive: 'ml/module_nginx_data_stream', + indexPattern: 'ft_module_nginx_data_stream', + user: USER.ML_POWERUSER, + expected: { + responseCode: 200, + moduleIds: ['nginx_data_stream'], + }, + }, ]; async function executeRecognizeModuleRequest(indexPattern: string, user: USER, rspCode: number) { diff --git a/x-pack/test/api_integration/apis/ml/modules/setup_module.ts b/x-pack/test/api_integration/apis/ml/modules/setup_module.ts index 8e5da7c56bb64..186a87e547382 100644 --- a/x-pack/test/api_integration/apis/ml/modules/setup_module.ts +++ b/x-pack/test/api_integration/apis/ml/modules/setup_module.ts @@ -41,19 +41,16 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf1_low_request_rate', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '10mb', }, { jobId: 'pf1_response_code_rates', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '10mb', }, { jobId: 'pf1_url_scanning', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '10mb', }, ], searches: [] as string[], @@ -81,19 +78,16 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf2_low_request_rate', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf2_response_code_rates', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf2_url_scanning', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '16mb', }, ], searches: [] as string[], @@ -121,31 +115,26 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf3_low_request_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf3_source_ip_request_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf3_source_ip_url_count_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '16mb', }, { jobId: 'pf3_status_code_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf3_visitor_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: ['ml_http_access_filebeat_ecs'] as string[], @@ -181,19 +170,16 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf4_abnormal_span_durations_nodejs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf4_abnormal_trace_durations_nodejs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf4_decreased_throughput_nodejs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -221,7 +207,6 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf5_high_mean_transaction_duration', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -249,7 +234,6 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf6_log-entry-rate', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -277,7 +261,6 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf7_log-entry-categories-count', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '41mb', }, ], searches: [] as string[], @@ -304,31 +287,26 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf8_visitor_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf8_status_code_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf8_source_ip_url_count_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '16mb', }, { jobId: 'pf8_source_ip_request_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf8_low_request_rate_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: ['ml_http_access_filebeat_ecs'] as string[], @@ -364,7 +342,6 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf9_high_sum_total_sales', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -392,7 +369,6 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf11_suspicious_login_activity_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -420,31 +396,26 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf12_packetbeat_dns_tunneling', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '16mb', }, { jobId: 'pf12_packetbeat_rare_dns_question', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf12_packetbeat_rare_server_domain', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf12_packetbeat_rare_urls', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf12_packetbeat_rare_user_agent', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -472,7 +443,6 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf13_high_latency_by_geo', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -500,13 +470,11 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf14_hosts_high_count_process_events_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf14_hosts_rare_process_activity_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: ['ml_auditbeat_hosts_process_events_ecs'] as string[], @@ -541,37 +509,31 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf15_v2_rare_process_by_host_linux_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf15_v2_linux_rare_metadata_user', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf15_v2_linux_rare_metadata_process', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf15_v2_linux_anomalous_user_name_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf15_v2_linux_anomalous_process_all_hosts_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf15_v2_linux_anomalous_network_port_activity_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, ], searches: [] as string[], @@ -599,49 +561,397 @@ export default ({ getService }: FtrProviderContext) => { jobId: 'pf16_v2_rare_process_by_host_windows_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf16_v2_windows_anomalous_network_activity_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf16_v2_windows_anomalous_path_activity_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '10mb', }, { jobId: 'pf16_v2_windows_anomalous_process_all_hosts_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf16_v2_windows_anomalous_process_creation', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf16_v2_windows_anomalous_user_name_ecs', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf16_v2_windows_rare_metadata_process', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', }, { jobId: 'pf16_v2_windows_rare_metadata_user', jobState: JOB_STATE.CLOSED, datafeedState: DATAFEED_STATE.STOPPED, - modelMemoryLimit: '11mb', + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for metricbeat_system_ecs with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_metricbeat', + indexPattern: { name: 'ft_module_metricbeat', timeField: '@timestamp' }, + module: 'metricbeat_system_ecs', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf17_', + indexPatternName: 'ft_module_metricbeat', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf17_max_disk_utilization_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf17_metricbeat_outages_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf17_high_mean_cpu_iowait_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for metrics_ui_hosts with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_metrics_ui', + indexPattern: { name: 'ft_module_metrics_ui', timeField: '@timestamp' }, + module: 'metrics_ui_hosts', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf18_', + indexPatternName: 'ft_module_metrics_ui', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf18_hosts_memory_usage', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf18_hosts_network_in', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf18_hosts_network_out', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for metrics_ui_k8s with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_metrics_ui', + indexPattern: { name: 'ft_module_metrics_ui', timeField: '@timestamp' }, + module: 'metrics_ui_k8s', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf19_', + indexPatternName: 'ft_module_metrics_ui', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf19_k8s_memory_usage', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf19_k8s_network_in', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf19_k8s_network_out', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for siem_cloudtrail with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_siem_cloudtrail', + indexPattern: { name: 'ft_module_siem_cloudtrail', timeField: '@timestamp' }, + module: 'siem_cloudtrail', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf20_', + indexPatternName: 'ft_module_siem_cloudtrail', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf20_rare_method_for_a_city', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf20_rare_method_for_a_country', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf20_rare_method_for_a_username', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf20_high_distinct_count_error_message', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf20_rare_error_code', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for siem_winlogbeat with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_siem_winlogbeat', + indexPattern: { name: 'ft_module_siem_winlogbeat', timeField: '@timestamp' }, + module: 'siem_winlogbeat', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf21_', + indexPatternName: 'ft_module_siem_winlogbeat', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf21_rare_process_by_host_windows_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_network_activity_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_path_activity_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_process_all_hosts_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_process_creation', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_script', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_service', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_anomalous_user_name_ecs', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_rare_user_runas_event', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_rare_metadata_process', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf21_windows_rare_metadata_user', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for siem_winlogbeat_auth with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_siem_winlogbeat', + indexPattern: { name: 'ft_module_siem_winlogbeat', timeField: '@timestamp' }, + module: 'siem_winlogbeat_auth', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf22_', + indexPatternName: 'ft_module_siem_winlogbeat', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf22_windows_rare_user_type10_remote_login', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for apache_data_stream with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_apache_data_stream', + indexPattern: { name: 'ft_module_apache_data_stream', timeField: '@timestamp' }, + module: 'apache_data_stream', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf23_', + indexPatternName: 'ft_module_apache_data_stream', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf23_visitor_rate_apache', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf23_status_code_rate_apache', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf23_source_ip_url_count_apache', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf23_source_ip_request_rate_apache', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf23_low_request_rate_apache', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + ], + searches: [] as string[], + visualizations: [] as string[], + dashboards: [] as string[], + }, + }, + { + testTitleSuffix: + 'for nginx_data_stream with prefix, startDatafeed true and estimateModelMemory true', + sourceDataArchive: 'ml/module_nginx_data_stream', + indexPattern: { name: 'ft_module_nginx_data_stream', timeField: '@timestamp' }, + module: 'nginx_data_stream', + user: USER.ML_POWERUSER, + requestBody: { + prefix: 'pf24_', + indexPatternName: 'ft_module_nginx_data_stream', + startDatafeed: true, + end: Date.now(), + }, + expected: { + responseCode: 200, + jobs: [ + { + jobId: 'pf24_visitor_rate_nginx', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf24_status_code_rate_nginx', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf24_source_ip_url_count_nginx', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf24_source_ip_request_rate_nginx', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, + }, + { + jobId: 'pf24_low_request_rate_nginx', + jobState: JOB_STATE.CLOSED, + datafeedState: DATAFEED_STATE.STOPPED, }, ], searches: [] as string[], @@ -828,7 +1138,7 @@ export default ({ getService }: FtrProviderContext) => { ); } - // verify job and datafeed creation + states + // verify job + datafeed creation + states and model memory limit for (const job of testData.expected.jobs) { const datafeedId = `datafeed-${job.jobId}`; await ml.api.waitForAnomalyDetectionJobToExist(job.jobId); @@ -838,41 +1148,18 @@ export default ({ getService }: FtrProviderContext) => { } await ml.api.waitForJobState(job.jobId, job.jobState); await ml.api.waitForDatafeedState(datafeedId, job.datafeedState); - } - // compare model memory limits for created jobs - const expectedModelMemoryLimits = sortBy( - testData.expected.jobs.map((j) => ({ - id: j.jobId, - modelMemoryLimit: j.modelMemoryLimit, - })), - 'id' - ); - - const { - body: { jobs }, - }: { - body: { - jobs: Job[]; - }; - } = await ml.api.getAnomalyDetectionJob( - testData.expected.jobs.map((j) => j.jobId).join() - ); - - const actualModelMemoryLimits = sortBy( - jobs.map((j) => ({ - id: j.job_id, - modelMemoryLimit: j.analysis_limits!.model_memory_limit, - })), - 'id' - ); - - expect(actualModelMemoryLimits).to.eql( - expectedModelMemoryLimits, - `Expected job model memory limits '${JSON.stringify( - expectedModelMemoryLimits - )}' (got '${JSON.stringify(actualModelMemoryLimits)}')` - ); + // model memory limit should be <= 99mb + const { + body: jobsDetails, + }: { + body: { + jobs: Job[]; + }; + } = await ml.api.getAnomalyDetectionJob(job.jobId); + const actualModelMemoryLimit = jobsDetails.jobs[0].analysis_limits?.model_memory_limit; + expect(actualModelMemoryLimit).to.match(/\d{1,2}mb/); + } // verify saved objects creation for (const search of testData.expected.searches) { diff --git a/x-pack/test/functional/es_archives/ml/module_apache_data_stream/data.json.gz b/x-pack/test/functional/es_archives/ml/module_apache_data_stream/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..e0ce0d96a6bf6fcee83512fc224ab17bdbfb308a GIT binary patch literal 67701 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 D@Rf1J literal 0 HcmV?d00001 diff --git a/x-pack/test/functional/es_archives/ml/module_apache_data_stream/mappings.json b/x-pack/test/functional/es_archives/ml/module_apache_data_stream/mappings.json new file mode 100644 index 0000000000000..ef0d508bd9ba3 --- /dev/null +++ b/x-pack/test/functional/es_archives/ml/module_apache_data_stream/mappings.json @@ -0,0 +1,2671 @@ +{ + "type": "index", + "value": { + "aliases": { + }, + "index": "ft_module_apache_data_stream", + "mappings": { + "_meta": { + "beat": "filebeat", + "version": "7.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kibana.log.meta": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "kibana.log.meta.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "apache": { + "properties": { + "access": { + "properties": { + "agent": { + "ignore_above": 1024, + "type": "keyword" + }, + "ssl": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "error": { + "properties": { + "module": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "apache2": { + "properties": { + "access": { + "properties": { + "geoip": { + "type": "object" + }, + "user_agent": { + "type": "object" + } + } + }, + "error": { + "type": "object" + } + } + }, + "auditd": { + "properties": { + "log": { + "properties": { + "a0": { + "ignore_above": 1024, + "type": "keyword" + }, + "addr": { + "type": "ip" + }, + "geoip": { + "type": "object" + }, + "item": { + "ignore_above": 1024, + "type": "keyword" + }, + "items": { + "ignore_above": 1024, + "type": "keyword" + }, + "laddr": { + "type": "ip" + }, + "lport": { + "type": "long" + }, + "new_auid": { + "ignore_above": 1024, + "type": "keyword" + }, + "new_ses": { + "ignore_above": 1024, + "type": "keyword" + }, + "old_auid": { + "ignore_above": 1024, + "type": "keyword" + }, + "old_ses": { + "ignore_above": 1024, + "type": "keyword" + }, + "rport": { + "type": "long" + }, + "sequence": { + "type": "long" + }, + "tty": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "certificate": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "cloud": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "instance": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "container": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "labels": { + "type": "object" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "elasticsearch": { + "properties": { + "audit": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "indices": { + "ignore_above": 1024, + "type": "keyword" + }, + "layer": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "realm": { + "ignore_above": 1024, + "type": "keyword" + }, + "request": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "properties": { + "params": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "realm": { + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cluster": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "deprecation": { + "type": "object" + }, + "gc": { + "properties": { + "heap": { + "properties": { + "size_kb": { + "type": "long" + }, + "used_kb": { + "type": "long" + } + } + }, + "jvm_runtime_sec": { + "type": "float" + }, + "old_gen": { + "properties": { + "size_kb": { + "type": "long" + }, + "used_kb": { + "type": "long" + } + } + }, + "phase": { + "properties": { + "class_unload_time_sec": { + "type": "float" + }, + "cpu_time": { + "properties": { + "real_sec": { + "type": "float" + }, + "sys_sec": { + "type": "float" + }, + "user_sec": { + "type": "float" + } + } + }, + "duration_sec": { + "type": "float" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "parallel_rescan_time_sec": { + "type": "float" + }, + "scrub_string_table_time_sec": { + "type": "float" + }, + "scrub_symbol_table_time_sec": { + "type": "float" + }, + "weak_refs_processing_time_sec": { + "type": "float" + } + } + }, + "stopping_threads_time_sec": { + "type": "float" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threads_total_stop_time_sec": { + "type": "float" + }, + "young_gen": { + "properties": { + "size_kb": { + "type": "long" + }, + "used_kb": { + "type": "long" + } + } + } + } + }, + "index": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "node": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "gc": { + "properties": { + "collection_duration": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "observation_duration": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "overhead_seq": { + "type": "long" + }, + "young": { + "properties": { + "one": { + "type": "long" + }, + "two": { + "type": "long" + } + } + } + } + } + } + }, + "shard": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "slowlog": { + "properties": { + "extra_source": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "routing": { + "ignore_above": 1024, + "type": "keyword" + }, + "search_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "source_query": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "ignore_above": 1024, + "type": "keyword" + }, + "took": { + "ignore_above": 1024, + "type": "keyword" + }, + "total_hits": { + "ignore_above": 1024, + "type": "keyword" + }, + "total_shards": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "types": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "error": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fileset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "haproxy": { + "properties": { + "backend_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "backend_queue": { + "type": "long" + }, + "bind_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes_read": { + "type": "long" + }, + "client": { + "type": "object" + }, + "connection_wait_time_ms": { + "type": "long" + }, + "connections": { + "properties": { + "active": { + "type": "long" + }, + "backend": { + "type": "long" + }, + "frontend": { + "type": "long" + }, + "retries": { + "type": "long" + }, + "server": { + "type": "long" + } + } + }, + "destination": { + "type": "object" + }, + "error_message": { + "norms": false, + "type": "text" + }, + "frontend_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "geoip": { + "type": "object" + }, + "http": { + "properties": { + "request": { + "properties": { + "captured_cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "captured_headers": { + "ignore_above": 1024, + "type": "keyword" + }, + "raw_request_line": { + "ignore_above": 1024, + "type": "keyword" + }, + "time_wait_ms": { + "type": "long" + }, + "time_wait_without_data_ms": { + "type": "long" + } + } + }, + "response": { + "properties": { + "captured_cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "captured_headers": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_queue": { + "type": "long" + }, + "source": { + "norms": false, + "type": "text" + }, + "tcp": { + "properties": { + "connection_waiting_time_ms": { + "type": "long" + } + } + }, + "termination_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "time_backend_connect": { + "type": "long" + }, + "time_queue": { + "type": "long" + }, + "total_waiting_time_ms": { + "type": "long" + } + } + }, + "hash": { + "properties": { + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "build": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "icinga": { + "properties": { + "debug": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "main": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "startup": { + "properties": { + "facility": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "iis": { + "properties": { + "access": { + "properties": { + "cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "geoip": { + "type": "object" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "site_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "sub_status": { + "type": "long" + }, + "user_agent": { + "type": "object" + }, + "win32_status": { + "type": "long" + } + } + }, + "error": { + "properties": { + "geoip": { + "type": "object" + }, + "queue_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason_phrase": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "input": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kafka": { + "properties": { + "log": { + "properties": { + "class": { + "norms": false, + "type": "text" + }, + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "trace": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "norms": false, + "type": "text" + }, + "message": { + "norms": false, + "type": "text" + } + } + } + } + } + } + }, + "kibana": { + "properties": { + "log": { + "properties": { + "meta": { + "type": "object" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "kubernetes": { + "properties": { + "annotations": { + "type": "object" + }, + "container": { + "properties": { + "image": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "type": "object" + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "offset": { + "type": "long" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "logstash": { + "properties": { + "log": { + "properties": { + "log_event": { + "type": "object" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "thread": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "slowlog": { + "properties": { + "event": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "plugin_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "plugin_params": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "plugin_params_object": { + "type": "object" + }, + "plugin_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "thread": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "took_in_millis": { + "type": "long" + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "mongodb": { + "properties": { + "log": { + "properties": { + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "context": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "mysql": { + "properties": { + "error": { + "type": "object" + }, + "slowlog": { + "properties": { + "bytes_sent": { + "type": "long" + }, + "current_user": { + "ignore_above": 1024, + "type": "keyword" + }, + "filesort": { + "type": "boolean" + }, + "filesort_on_disk": { + "type": "boolean" + }, + "full_join": { + "type": "boolean" + }, + "full_scan": { + "type": "boolean" + }, + "innodb": { + "properties": { + "io_r_bytes": { + "type": "long" + }, + "io_r_ops": { + "type": "long" + }, + "io_r_wait": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "pages_distinct": { + "type": "long" + }, + "queue_wait": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "rec_lock_wait": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "trx_id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "killed": { + "ignore_above": 1024, + "type": "keyword" + }, + "last_errno": { + "ignore_above": 1024, + "type": "keyword" + }, + "lock_time": { + "properties": { + "sec": { + "type": "float" + } + } + }, + "log_slow_rate_limit": { + "ignore_above": 1024, + "type": "keyword" + }, + "log_slow_rate_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "merge_passes": { + "type": "long" + }, + "priority_queue": { + "type": "boolean" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "query_cache_hit": { + "type": "boolean" + }, + "rows_affected": { + "type": "long" + }, + "rows_examined": { + "type": "long" + }, + "rows_sent": { + "type": "long" + }, + "schema": { + "ignore_above": 1024, + "type": "keyword" + }, + "tmp_disk_tables": { + "type": "long" + }, + "tmp_table": { + "type": "boolean" + }, + "tmp_table_on_disk": { + "type": "boolean" + }, + "tmp_table_sizes": { + "type": "long" + }, + "tmp_tables": { + "type": "long" + } + } + }, + "thread_id": { + "type": "long" + } + } + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "nginx": { + "properties": { + "access": { + "properties": { + "geoip": { + "type": "object" + }, + "user_agent": { + "type": "object" + } + } + }, + "error": { + "properties": { + "connection_id": { + "type": "long" + } + } + } + } + }, + "observer": { + "properties": { + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "osquery": { + "properties": { + "result": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "calendar_time": { + "ignore_above": 1024, + "type": "keyword" + }, + "host_identifier": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "unix_time": { + "type": "long" + } + } + } + } + }, + "postgresql": { + "properties": { + "log": { + "properties": { + "core_id": { + "type": "long" + }, + "database": { + "ignore_above": 1024, + "type": "keyword" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "timestamp": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "program": { + "ignore_above": 1024, + "type": "keyword" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + } + } + }, + "title": { + "ignore_above": 1024, + "type": "keyword" + }, + "working_directory": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "redis": { + "properties": { + "log": { + "properties": { + "role": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "slowlog": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "cmd": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "properties": { + "us": { + "type": "long" + } + } + }, + "id": { + "type": "long" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "related": { + "properties": { + "ip": { + "type": "ip" + } + } + }, + "santa": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "decision": { + "ignore_above": 1024, + "type": "keyword" + }, + "disk": { + "properties": { + "bsdname": { + "ignore_above": 1024, + "type": "keyword" + }, + "bus": { + "ignore_above": 1024, + "type": "keyword" + }, + "fs": { + "ignore_above": 1024, + "type": "keyword" + }, + "model": { + "ignore_above": 1024, + "type": "keyword" + }, + "mount": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial": { + "ignore_above": 1024, + "type": "keyword" + }, + "volume": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "service": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + } + } + }, + "stream": { + "ignore_above": 1024, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "type": "long" + }, + "facility_label": { + "ignore_above": 1024, + "type": "keyword" + }, + "priority": { + "type": "long" + }, + "severity_label": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "system": { + "properties": { + "auth": { + "properties": { + "groupadd": { + "type": "object" + }, + "ssh": { + "properties": { + "dropped_ip": { + "type": "ip" + }, + "geoip": { + "type": "object" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "sudo": { + "properties": { + "command": { + "ignore_above": 1024, + "type": "keyword" + }, + "error": { + "ignore_above": 1024, + "type": "keyword" + }, + "pwd": { + "ignore_above": 1024, + "type": "keyword" + }, + "tty": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "useradd": { + "properties": { + "home": { + "ignore_above": 1024, + "type": "keyword" + }, + "shell": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "syslog": { + "type": "object" + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "traefik": { + "properties": { + "access": { + "properties": { + "backend_url": { + "ignore_above": 1024, + "type": "keyword" + }, + "frontend_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "geoip": { + "properties": { + "city_name": { + "path": "source.geo.city_name", + "type": "alias" + }, + "continent_name": { + "path": "source.geo.continent_name", + "type": "alias" + }, + "country_iso_code": { + "path": "source.geo.country_iso_code", + "type": "alias" + }, + "location": { + "path": "source.geo.location", + "type": "alias" + }, + "region_iso_code": { + "path": "source.geo.region_iso_code", + "type": "alias" + }, + "region_name": { + "path": "source.geo.region_name", + "type": "alias" + } + } + }, + "request_count": { + "type": "long" + }, + "user_agent": { + "properties": { + "device": { + "path": "user_agent.device.name", + "type": "alias" + }, + "major": { + "path": "user_agent.major", + "type": "alias" + }, + "minor": { + "path": "user_agent.minor", + "type": "alias" + }, + "name": { + "path": "user_agent.name", + "type": "alias" + }, + "original": { + "path": "user_agent.original", + "type": "alias" + }, + "os": { + "path": "user_agent.os.full_name", + "type": "alias" + }, + "os_major": { + "path": "user_agent.os.major", + "type": "alias" + }, + "os_minor": { + "path": "user_agent.os.minor", + "type": "alias" + }, + "os_name": { + "path": "user_agent.os.name", + "type": "alias" + }, + "patch": { + "path": "user_agent.patch", + "type": "alias" + } + } + }, + "user_identifier": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "audit": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "effective": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "filesystem": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "full_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "saved": { + "properties": { + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "terminal": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "major": { + "ignore_above": 1024, + "type": "keyword" + }, + "minor": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "major": { + "type": "long" + }, + "minor": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "patch": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "settings": { + "index": { + "number_of_replicas": "1", + "number_of_shards": "1" + } + } + } +} diff --git a/x-pack/test/functional/es_archives/ml/module_metricbeat/data.json.gz b/x-pack/test/functional/es_archives/ml/module_metricbeat/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..089499fbea819ba740d099db42314cd483f99f76 GIT binary patch literal 18495 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%0DV(B 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 literal 0 HcmV?d00001 diff --git a/x-pack/test/functional/es_archives/ml/module_metricbeat/mappings.json b/x-pack/test/functional/es_archives/ml/module_metricbeat/mappings.json new file mode 100644 index 0000000000000..d0007464484db --- /dev/null +++ b/x-pack/test/functional/es_archives/ml/module_metricbeat/mappings.json @@ -0,0 +1,441 @@ +{ + "type": "index", + "value": { + "aliases": { + }, + "index": "ft_module_metricbeat", + "mappings": { + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "properties": { + "ephemeral_id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "hostname": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "cloud": { + "properties": { + "availability_zone": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "instance": { + "properties": { + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "machine": { + "properties": { + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "project": { + "properties": { + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "provider": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "ecs": { + "properties": { + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "event": { + "properties": { + "dataset": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "duration": { + "type": "long" + }, + "module": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "host": { + "properties": { + "architecture": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "containerized": { + "type": "boolean" + }, + "hostname": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "os": { + "properties": { + "codename": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "family": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "kernel": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "platform": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + } + } + }, + "metricset": { + "properties": { + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "service": { + "properties": { + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "system": { + "properties": { + "cpu": { + "properties": { + "cores": { + "type": "long" + }, + "idle": { + "properties": { + "pct": { + "type": "float" + } + } + }, + "iowait": { + "properties": { + "pct": { + "type": "float" + } + } + }, + "irq": { + "properties": { + "pct": { + "type": "long" + } + } + }, + "nice": { + "properties": { + "pct": { + "type": "long" + } + } + }, + "softirq": { + "properties": { + "pct": { + "type": "float" + } + } + }, + "steal": { + "properties": { + "pct": { + "type": "long" + } + } + }, + "system": { + "properties": { + "pct": { + "type": "float" + } + } + }, + "total": { + "properties": { + "pct": { + "type": "float" + } + } + }, + "user": { + "properties": { + "pct": { + "type": "float" + } + } + } + } + }, + "filesystem": { + "properties": { + "available": { + "type": "long" + }, + "device_name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "files": { + "type": "long" + }, + "free": { + "type": "long" + }, + "free_files": { + "type": "long" + }, + "mount_point": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "total": { + "type": "long" + }, + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "settings": { + "index": { + "mapping": { + "total_fields": { + "limit": "5000" + } + }, + "number_of_replicas": "0", + "number_of_shards": "1", + "refresh_interval": "-1" + } + } + } +} \ No newline at end of file diff --git a/x-pack/test/functional/es_archives/ml/module_metrics_ui/data.json.gz b/x-pack/test/functional/es_archives/ml/module_metrics_ui/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b1a9ba3b45ceac9b39aba4ef18cc4c214ec1dc11 GIT binary patch literal 525656 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

1sVH8OmdN~ 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%0D`E`Mo4Rz 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%0D}mgmzpHLD1d<5 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

SQ4JU=1waw3_9enwD{c)3(fkx}=mV_!6 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

aIB7ApQN|@)N7& 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 literal 0 HcmV?d00001 diff --git a/x-pack/test/functional/es_archives/ml/module_metrics_ui/mappings.json b/x-pack/test/functional/es_archives/ml/module_metrics_ui/mappings.json new file mode 100644 index 0000000000000..1b24240597a69 --- /dev/null +++ b/x-pack/test/functional/es_archives/ml/module_metrics_ui/mappings.json @@ -0,0 +1,20668 @@ +{ + "type": "index", + "value": { + "aliases": { + }, + "index": "ft_module_metrics_ui", + "mappings": { + "_meta": { + "beat": "metricbeat", + "version": "8.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "dns.answers": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "dns.answers.*" + } + }, + { + "log.syslog": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "log.syslog.*" + } + }, + { + "network.inner": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "network.inner.*" + } + }, + { + "observer.egress": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "observer.egress.*" + } + }, + { + "observer.ingress": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "observer.ingress.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kubernetes.labels.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.labels.*" + } + }, + { + "kubernetes.annotations.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.annotations.*" + } + }, + { + "aws.tags.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "aws.tags.*" + } + }, + { + "aws.dimensions.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "aws.dimensions.*" + } + }, + { + "aws.*.metrics.*.*": { + "mapping": { + "type": "double" + }, + "path_match": "aws.*.metrics.*.*" + } + }, + { + "azure.resource.tags.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "azure.resource.tags.*" + } + }, + { + "azure.dimensions.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "azure.dimensions.*" + } + }, + { + "azure.compute_vm.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.compute_vm.*.*" + } + }, + { + "azure.compute_vm_scaleset.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.compute_vm_scaleset.*.*" + } + }, + { + "azure.container_instance.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.container_instance.*.*" + } + }, + { + "azure.container_registry.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.container_registry.*.*" + } + }, + { + "azure.container_service.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.container_service.*.*" + } + }, + { + "azure.database_account.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.database_account.*.*" + } + }, + { + "azure.monitor.metrics.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.monitor.metrics.*.*" + } + }, + { + "azure.storage.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "azure.storage.*.*" + } + }, + { + "coredns.stats.dns.request.duration.ns.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "coredns.stats.dns.request.duration.ns.bucket.*" + } + }, + { + "coredns.stats.dns.request.size.bytes.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "coredns.stats.dns.request.size.bytes.bucket.*" + } + }, + { + "coredns.stats.dns.response.size.bytes.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "coredns.stats.dns.response.size.bytes.bucket.*" + } + }, + { + "docker.cpu.core.*.pct": { + "mapping": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "path_match": "docker.cpu.core.*.pct" + } + }, + { + "docker.cpu.core.*.norm.pct": { + "mapping": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "path_match": "docker.cpu.core.*.norm.pct" + } + }, + { + "docker.cpu.core.*.ticks": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "docker.cpu.core.*.ticks" + } + }, + { + "docker.event.actor.attributes": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.event.actor.attributes.*" + } + }, + { + "docker.image.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.image.labels.*" + } + }, + { + "docker.memory.stats.*": { + "mapping": { + "type": "long" + }, + "path_match": "docker.memory.stats.*" + } + }, + { + "etcd.disk.wal_fsync_duration.ns.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "etcd.disk.wal_fsync_duration.ns.bucket.*" + } + }, + { + "etcd.disk.backend_commit_duration.ns.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "etcd.disk.backend_commit_duration.ns.bucket.*" + } + }, + { + "iis.webserver.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "iis.webserver.*.*" + } + }, + { + "istio.citadel.grpc.server.handling.latency.ms.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.citadel.grpc.server.handling.latency.ms.bucket.*" + } + }, + { + "istio.galley.runtime.processor.event_span.duration.ms.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.galley.runtime.processor.event_span.duration.ms.bucket.*" + } + }, + { + "istio.galley.runtime.processor.snapshot_events.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.galley.runtime.processor.snapshot_events.bucket.*" + } + }, + { + "istio.galley.runtime.processor.snapshot_lifetime.duration.ms.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.galley.runtime.processor.snapshot_lifetime.duration.ms.bucket.*" + } + }, + { + "istio.mesh.request.duration.ms.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.mesh.request.duration.ms.bucket.*" + } + }, + { + "istio.mesh.request.size.bytes.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.mesh.request.size.bytes.bucket.*" + } + }, + { + "istio.mesh.response.size.bytes.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.mesh.response.size.bytes.bucket.*" + } + }, + { + "istio.pilot.proxy.conv.ms.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "istio.pilot.proxy.conv.ms.bucket.*" + } + }, + { + "kubernetes.apiserver.http.request.duration.us.percentile.*": { + "mapping": { + "type": "double" + }, + "match_mapping_type": "double", + "path_match": "kubernetes.apiserver.http.request.duration.us.percentile.*" + } + }, + { + "kubernetes.apiserver.http.request.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.apiserver.http.request.size.bytes.percentile.*" + } + }, + { + "kubernetes.apiserver.http.response.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.apiserver.http.response.size.bytes.percentile.*" + } + }, + { + "kubernetes.apiserver.request.latency.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.apiserver.request.latency.bucket.*" + } + }, + { + "kubernetes.apiserver.request.duration.us.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.apiserver.request.duration.us.bucket.*" + } + }, + { + "kubernetes.controllermanager.http.request.duration.us.percentile.*": { + "mapping": { + "type": "double" + }, + "match_mapping_type": "double", + "path_match": "kubernetes.controllermanager.http.request.duration.us.percentile.*" + } + }, + { + "kubernetes.controllermanager.http.request.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.controllermanager.http.request.size.bytes.percentile.*" + } + }, + { + "kubernetes.controllermanager.http.response.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.controllermanager.http.response.size.bytes.percentile.*" + } + }, + { + "kubernetes.proxy.http.request.duration.us.percentile.*": { + "mapping": { + "type": "double" + }, + "match_mapping_type": "double", + "path_match": "kubernetes.proxy.http.request.duration.us.percentile.*" + } + }, + { + "kubernetes.proxy.http.request.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.proxy.http.request.size.bytes.percentile.*" + } + }, + { + "kubernetes.proxy.http.response.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.proxy.http.response.size.bytes.percentile.*" + } + }, + { + "kubernetes.proxy.sync.rules.duration.us.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.proxy.sync.rules.duration.us.bucket.*" + } + }, + { + "kubernetes.proxy.sync.networkprogramming.duration.us.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.proxy.sync.networkprogramming.duration.us.bucket.*" + } + }, + { + "kubernetes.scheduler.http.request.duration.us.percentile.*": { + "mapping": { + "type": "double" + }, + "match_mapping_type": "double", + "path_match": "kubernetes.scheduler.http.request.duration.us.percentile.*" + } + }, + { + "kubernetes.scheduler.http.request.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.scheduler.http.request.size.bytes.percentile.*" + } + }, + { + "kubernetes.scheduler.http.response.size.bytes.percentile.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.scheduler.http.response.size.bytes.percentile.*" + } + }, + { + "kubernetes.scheduler.scheduling.e2e.duration.us.bucket.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "kubernetes.scheduler.scheduling.e2e.duration.us.bucket.*" + } + }, + { + "kubernetes.scheduler.scheduling.duration.seconds.percentile.*": { + "mapping": { + "type": "double" + }, + "match_mapping_type": "double", + "path_match": "kubernetes.scheduler.scheduling.duration.seconds.percentile.*" + } + }, + { + "munin.metrics.*": { + "mapping": { + "type": "double" + }, + "path_match": "munin.metrics.*" + } + }, + { + "openmetrics.labels.*": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "openmetrics.labels.*" + } + }, + { + "openmetrics.metrics.*": { + "mapping": { + "type": "double" + }, + "path_match": "openmetrics.metrics.*" + } + }, + { + "prometheus.labels.*": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "prometheus.labels.*" + } + }, + { + "prometheus.metrics.*": { + "mapping": { + "type": "double" + }, + "path_match": "prometheus.metrics.*" + } + }, + { + "prometheus.query.*": { + "mapping": { + "type": "double" + }, + "path_match": "prometheus.query.*" + } + }, + { + "prometheus.*.value": { + "mapping": { + "type": "double" + }, + "path_match": "prometheus.*.value" + } + }, + { + "prometheus.*.counter": { + "mapping": { + "type": "double" + }, + "path_match": "prometheus.*.counter" + } + }, + { + "prometheus.*.rate": { + "mapping": { + "type": "double" + }, + "path_match": "prometheus.*.rate" + } + }, + { + "prometheus.*.histogram": { + "mapping": { + "type": "histogram" + }, + "path_match": "prometheus.*.histogram" + } + }, + { + "sql.metrics.numeric.*": { + "mapping": { + "type": "double" + }, + "match_mapping_type": "double", + "path_match": "sql.metrics.numeric.*" + } + }, + { + "sql.metrics.string.*": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "sql.metrics.string.*" + } + }, + { + "statsd.*.count": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "statsd.*.count" + } + }, + { + "statsd.*.*": { + "mapping": { + "type": "float" + }, + "path_match": "statsd.*.*" + } + }, + { + "system.process.env": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "system.process.env.*" + } + }, + { + "system.process.cgroup.cpuacct.percpu": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "system.process.cgroup.cpuacct.percpu.*" + } + }, + { + "system.raid.disks.states.*": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "system.raid.disks.states.*" + } + }, + { + "traefik.health.response.status_codes.*": { + "mapping": { + "type": "long" + }, + "match_mapping_type": "long", + "path_match": "traefik.health.response.status_codes.*" + } + }, + { + "vsphere.virtualmachine.custom_fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "vsphere.virtualmachine.custom_fields.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "activemq": { + "properties": { + "broker": { + "properties": { + "connections": { + "properties": { + "count": { + "type": "long" + } + } + }, + "consumers": { + "properties": { + "count": { + "type": "long" + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "memory": { + "properties": { + "broker": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "store": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "temp": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "messages": { + "properties": { + "count": { + "type": "long" + }, + "dequeue": { + "properties": { + "count": { + "type": "long" + } + } + }, + "enqueue": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "producers": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "queue": { + "properties": { + "consumers": { + "properties": { + "count": { + "type": "long" + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "memory": { + "properties": { + "broker": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "messages": { + "properties": { + "dequeue": { + "properties": { + "count": { + "type": "long" + } + } + }, + "dispatch": { + "properties": { + "count": { + "type": "long" + } + } + }, + "enqueue": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "avg": { + "type": "double" + }, + "max": { + "type": "long" + }, + "min": { + "type": "long" + } + } + } + } + }, + "expired": { + "properties": { + "count": { + "type": "long" + } + } + }, + "inflight": { + "properties": { + "count": { + "type": "long" + } + } + }, + "size": { + "properties": { + "avg": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "producers": { + "properties": { + "count": { + "type": "long" + } + } + }, + "size": { + "type": "long" + } + } + }, + "topic": { + "properties": { + "consumers": { + "properties": { + "count": { + "type": "long" + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "memory": { + "properties": { + "broker": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "messages": { + "properties": { + "dequeue": { + "properties": { + "count": { + "type": "long" + } + } + }, + "dispatch": { + "properties": { + "count": { + "type": "long" + } + } + }, + "enqueue": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "avg": { + "type": "double" + }, + "max": { + "type": "long" + }, + "min": { + "type": "long" + } + } + } + } + }, + "expired": { + "properties": { + "count": { + "type": "long" + } + } + }, + "inflight": { + "properties": { + "count": { + "type": "long" + } + } + }, + "size": { + "properties": { + "avg": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "producers": { + "properties": { + "count": { + "type": "long" + } + } + } + } + } + } + }, + "aerospike": { + "properties": { + "namespace": { + "properties": { + "client": { + "properties": { + "delete": { + "properties": { + "error": { + "type": "long" + }, + "not_found": { + "type": "long" + }, + "success": { + "type": "long" + }, + "timeout": { + "type": "long" + } + } + }, + "read": { + "properties": { + "error": { + "type": "long" + }, + "not_found": { + "type": "long" + }, + "success": { + "type": "long" + }, + "timeout": { + "type": "long" + } + } + }, + "write": { + "properties": { + "error": { + "type": "long" + }, + "success": { + "type": "long" + }, + "timeout": { + "type": "long" + } + } + } + } + }, + "device": { + "properties": { + "available": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "free": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "hwm_breached": { + "type": "boolean" + }, + "memory": { + "properties": { + "free": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "used": { + "properties": { + "data": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "index": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "sindex": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "objects": { + "properties": { + "master": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "stop_writes": { + "type": "boolean" + } + } + } + } + }, + "agent": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "apache": { + "properties": { + "status": { + "properties": { + "bytes_per_request": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "bytes_per_sec": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "connections": { + "properties": { + "async": { + "properties": { + "closing": { + "type": "long" + }, + "keep_alive": { + "type": "long" + }, + "writing": { + "type": "long" + } + } + }, + "total": { + "type": "long" + } + } + }, + "cpu": { + "properties": { + "children_system": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "children_user": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "load": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "system": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "user": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "load": { + "properties": { + "1": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "15": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "5": { + "scaling_factor": 100, + "type": "scaled_float" + } + } + }, + "requests_per_sec": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "scoreboard": { + "properties": { + "closing_connection": { + "type": "long" + }, + "dns_lookup": { + "type": "long" + }, + "gracefully_finishing": { + "type": "long" + }, + "idle_cleanup": { + "type": "long" + }, + "keepalive": { + "type": "long" + }, + "logging": { + "type": "long" + }, + "open_slot": { + "type": "long" + }, + "reading_request": { + "type": "long" + }, + "sending_reply": { + "type": "long" + }, + "starting_up": { + "type": "long" + }, + "total": { + "type": "long" + }, + "waiting_for_connection": { + "type": "long" + } + } + }, + "total_accesses": { + "type": "long" + }, + "total_kbytes": { + "type": "long" + }, + "uptime": { + "properties": { + "server_uptime": { + "type": "long" + }, + "uptime": { + "type": "long" + } + } + }, + "workers": { + "properties": { + "busy": { + "type": "long" + }, + "idle": { + "type": "long" + } + } + } + } + } + } + }, + "appsearch": { + "properties": { + "stats": { + "properties": { + "jvm": { + "properties": { + "memory_usage": { + "properties": { + "heap_committed": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "heap_init": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "heap_max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "heap_used": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "non_heap_committed": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "non_heap_init": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "queues": { + "properties": { + "analytics_events": { + "properties": { + "count": { + "type": "long" + } + } + }, + "document_destroyer": { + "properties": { + "count": { + "type": "long" + } + } + }, + "engine_destroyer": { + "properties": { + "count": { + "type": "long" + } + } + }, + "failed": { + "properties": { + "count": { + "type": "long" + } + } + }, + "index_adder": { + "properties": { + "count": { + "type": "long" + } + } + }, + "indexed_doc_remover": { + "properties": { + "count": { + "type": "long" + } + } + }, + "mailer": { + "properties": { + "count": { + "type": "long" + } + } + }, + "refresh_document_counts": { + "properties": { + "count": { + "type": "long" + } + } + }, + "reindexer": { + "properties": { + "count": { + "type": "long" + } + } + }, + "schema_updater": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "requests": { + "properties": { + "api": { + "properties": { + "duration": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "max": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + } + } + }, + "count": { + "type": "long" + }, + "web": { + "properties": { + "response_time": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "max": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "aws": { + "properties": { + "*": { + "properties": { + "metrics": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + } + } + }, + "billing": { + "type": "object" + }, + "cloudwatch": { + "properties": { + "namespace": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "dimensions": { + "properties": { + "*": { + "type": "object" + } + } + }, + "dynamodb": { + "type": "object" + }, + "ebs": { + "type": "object" + }, + "ec2": { + "properties": { + "cpu": { + "properties": { + "credit_balance": { + "type": "long" + }, + "credit_usage": { + "type": "long" + }, + "surplus_credit_balance": { + "type": "long" + }, + "surplus_credits_charged": { + "type": "long" + }, + "total": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "diskio": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + }, + "bytes_per_sec": { + "type": "long" + }, + "ops": { + "type": "long" + }, + "ops_per_sec": { + "type": "long" + } + } + }, + "write": { + "properties": { + "bytes": { + "type": "long" + }, + "bytes_per_sec": { + "type": "long" + }, + "ops": { + "type": "long" + }, + "ops_per_sec": { + "type": "long" + } + } + } + } + }, + "instance": { + "properties": { + "core": { + "properties": { + "count": { + "type": "long" + } + } + }, + "image": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "monitoring": { + "properties": { + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "private": { + "properties": { + "dns_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + } + } + }, + "public": { + "properties": { + "dns_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + } + } + }, + "state": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "threads_per_core": { + "type": "long" + } + } + }, + "network": { + "properties": { + "in": { + "properties": { + "bytes": { + "type": "long" + }, + "bytes_per_sec": { + "type": "long" + }, + "packets": { + "type": "long" + }, + "packets_per_sec": { + "type": "long" + } + } + }, + "out": { + "properties": { + "bytes": { + "type": "long" + }, + "bytes_per_sec": { + "type": "long" + }, + "packets": { + "type": "long" + }, + "packets_per_sec": { + "type": "long" + } + } + } + } + }, + "status": { + "properties": { + "check_failed": { + "type": "long" + }, + "check_failed_instance": { + "type": "long" + }, + "check_failed_system": { + "type": "long" + } + } + } + } + }, + "elb": { + "type": "object" + }, + "lambda": { + "type": "object" + }, + "natgateway": { + "type": "object" + }, + "rds": { + "properties": { + "aurora_bin_log_replica_lag": { + "type": "long" + }, + "aurora_global_db": { + "properties": { + "data_transfer": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "replicated_write_io": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "replication_lag": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "aurora_replica": { + "properties": { + "lag": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "lag_max": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "lag_min": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "aurora_volume_left_total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "backtrack_change_records": { + "properties": { + "creation_rate": { + "type": "long" + }, + "stored": { + "type": "long" + } + } + }, + "backtrack_window": { + "properties": { + "actual": { + "type": "long" + }, + "alert": { + "type": "long" + } + } + }, + "backup_storage_billed_total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "cache_hit_ratio": { + "properties": { + "buffer": { + "type": "long" + }, + "result_set": { + "type": "long" + } + } + }, + "cpu": { + "properties": { + "credit_balance": { + "type": "long" + }, + "credit_usage": { + "type": "long" + }, + "total": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "database_connections": { + "type": "long" + }, + "db_instance": { + "properties": { + "arn": { + "ignore_above": 1024, + "type": "keyword" + }, + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "db_cluster_identifier": { + "ignore_above": 1024, + "type": "keyword" + }, + "engine_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "identifier": { + "ignore_above": 1024, + "type": "keyword" + }, + "role": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "deadlocks": { + "type": "long" + }, + "disk_queue_depth": { + "type": "float" + }, + "disk_usage": { + "properties": { + "bin_log": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "replication_slot": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "transaction_logs": { + "properties": { + "mb": { + "type": "long" + } + } + } + } + }, + "engine_uptime": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "failed_sql_server_agent_jobs": { + "type": "long" + }, + "free_local_storage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "free_storage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "freeable_memory": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "latency": { + "properties": { + "commit": { + "type": "float" + }, + "ddl": { + "type": "float" + }, + "delete": { + "type": "float" + }, + "dml": { + "type": "float" + }, + "insert": { + "type": "float" + }, + "read": { + "type": "float" + }, + "select": { + "type": "float" + }, + "update": { + "type": "float" + }, + "write": { + "type": "float" + } + } + }, + "login_failures": { + "type": "long" + }, + "maximum_used_transaction_ids": { + "type": "long" + }, + "oldest_replication_slot_lag": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "queries": { + "type": "long" + }, + "rds_to_aurora_postgresql_replica_lag": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "read_io": { + "properties": { + "ops_per_sec": { + "type": "float" + } + } + }, + "replica_lag": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "storage_used": { + "properties": { + "backup_retention_period": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "snapshot": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "swap_usage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "throughput": { + "properties": { + "commit": { + "type": "float" + }, + "ddl": { + "type": "float" + }, + "delete": { + "type": "float" + }, + "dml": { + "type": "float" + }, + "insert": { + "type": "float" + }, + "network": { + "type": "float" + }, + "network_receive": { + "type": "float" + }, + "network_transmit": { + "type": "float" + }, + "read": { + "type": "float" + }, + "select": { + "type": "float" + }, + "update": { + "type": "float" + }, + "write": { + "type": "float" + } + } + }, + "transaction_logs_generation": { + "type": "long" + }, + "transactions": { + "properties": { + "active": { + "type": "long" + }, + "blocked": { + "type": "long" + } + } + }, + "volume": { + "properties": { + "read": { + "properties": { + "iops": { + "type": "long" + } + } + }, + "write": { + "properties": { + "iops": { + "type": "long" + } + } + } + } + }, + "volume_used": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "write_io": { + "properties": { + "ops_per_sec": { + "type": "float" + } + } + } + } + }, + "s3": { + "properties": { + "bucket": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "s3_daily_storage": { + "properties": { + "bucket": { + "properties": { + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "number_of_objects": { + "type": "long" + } + } + }, + "s3_request": { + "properties": { + "downloaded": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "errors": { + "properties": { + "4xx": { + "type": "long" + }, + "5xx": { + "type": "long" + } + } + }, + "latency": { + "properties": { + "first_byte": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "total_request": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "requests": { + "properties": { + "delete": { + "type": "long" + }, + "get": { + "type": "long" + }, + "head": { + "type": "long" + }, + "list": { + "type": "long" + }, + "post": { + "type": "long" + }, + "put": { + "type": "long" + }, + "select": { + "type": "long" + }, + "select_returned": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "select_scanned": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "type": "long" + } + } + }, + "uploaded": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "sns": { + "type": "object" + }, + "sqs": { + "properties": { + "empty_receives": { + "type": "long" + }, + "messages": { + "properties": { + "delayed": { + "type": "long" + }, + "deleted": { + "type": "long" + }, + "not_visible": { + "type": "long" + }, + "received": { + "type": "long" + }, + "sent": { + "type": "long" + }, + "visible": { + "type": "long" + } + } + }, + "oldest_message_age": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "sent_message_size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "tags": { + "properties": { + "*": { + "type": "object" + } + } + }, + "transitgateway": { + "type": "object" + }, + "usage": { + "type": "object" + }, + "vpn": { + "type": "object" + } + } + }, + "azure": { + "properties": { + "compute_vm": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "compute_vm_scaleset": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "container_instance": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "container_registry": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "container_service": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "database_account": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "dimensions": { + "properties": { + "*": { + "type": "object" + } + } + }, + "monitor": { + "properties": { + "metrics": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "properties": { + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "tags": { + "properties": { + "*": { + "type": "object" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "storage": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "subscription_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "timegrain": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "beat": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "properties": { + "management": { + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "module": { + "properties": { + "count": { + "type": "long" + } + } + }, + "output": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "queue": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "stats": { + "properties": { + "libbeat": { + "properties": { + "output": { + "properties": { + "events": { + "properties": { + "acked": { + "type": "long" + }, + "active": { + "type": "long" + }, + "batches": { + "type": "long" + }, + "dropped": { + "type": "long" + }, + "duplicates": { + "type": "long" + }, + "failed": { + "type": "long" + }, + "toomany": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "read": { + "properties": { + "bytes": { + "type": "long" + }, + "errors": { + "type": "long" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "write": { + "properties": { + "bytes": { + "type": "long" + }, + "errors": { + "type": "long" + } + } + } + } + } + } + }, + "runtime": { + "properties": { + "goroutines": { + "type": "long" + } + } + }, + "uptime": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ceph": { + "properties": { + "cluster_disk": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "cluster_health": { + "properties": { + "overall_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "timechecks": { + "properties": { + "epoch": { + "type": "long" + }, + "round": { + "properties": { + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "type": "long" + } + } + } + } + } + } + }, + "cluster_status": { + "properties": { + "degraded": { + "properties": { + "objects": { + "type": "long" + }, + "ratio": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "total": { + "type": "long" + } + } + }, + "misplace": { + "properties": { + "objects": { + "type": "long" + }, + "ratio": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "total": { + "type": "long" + } + } + }, + "osd": { + "properties": { + "epoch": { + "type": "long" + }, + "full": { + "type": "boolean" + }, + "nearfull": { + "type": "boolean" + }, + "num_in_osds": { + "type": "long" + }, + "num_osds": { + "type": "long" + }, + "num_remapped_pgs": { + "type": "long" + }, + "num_up_osds": { + "type": "long" + } + } + }, + "pg": { + "properties": { + "avail_bytes": { + "type": "long" + }, + "data_bytes": { + "type": "long" + }, + "total_bytes": { + "type": "long" + }, + "used_bytes": { + "type": "long" + } + } + }, + "pg_state": { + "properties": { + "count": { + "type": "long" + }, + "state_name": { + "type": "long" + }, + "version": { + "type": "long" + } + } + }, + "traffic": { + "properties": { + "read_bytes": { + "type": "long" + }, + "read_op_per_sec": { + "type": "long" + }, + "write_bytes": { + "type": "long" + }, + "write_op_per_sec": { + "type": "long" + } + } + }, + "version": { + "type": "long" + } + } + }, + "mgr_cluster_disk": { + "type": "object" + }, + "mgr_cluster_health": { + "type": "object" + }, + "mgr_osd_perf": { + "properties": { + "id": { + "type": "long" + }, + "stats": { + "properties": { + "apply_latency_ms": { + "type": "long" + }, + "apply_latency_ns": { + "type": "long" + }, + "commit_latency_ms": { + "type": "long" + }, + "commit_latency_ns": { + "type": "long" + } + } + } + } + }, + "mgr_osd_pool_stats": { + "properties": { + "client_io_rate": { + "type": "object" + }, + "pool_id": { + "type": "long" + }, + "pool_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "mgr_osd_tree": { + "type": "object" + }, + "mgr_pool_disk": { + "type": "object" + }, + "monitor_health": { + "properties": { + "available": { + "properties": { + "kb": { + "type": "long" + }, + "pct": { + "type": "long" + } + } + }, + "health": { + "ignore_above": 1024, + "type": "keyword" + }, + "last_updated": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "store_stats": { + "properties": { + "last_updated": { + "type": "long" + }, + "log": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "misc": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "sst": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "total": { + "properties": { + "kb": { + "type": "long" + } + } + }, + "used": { + "properties": { + "kb": { + "type": "long" + } + } + } + } + }, + "osd_df": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "device_class": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pg_num": { + "type": "long" + }, + "total": { + "properties": { + "byte": { + "type": "long" + } + } + }, + "used": { + "properties": { + "byte": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "osd_tree": { + "properties": { + "children": { + "ignore_above": 1024, + "type": "keyword" + }, + "crush_weight": { + "type": "float" + }, + "depth": { + "type": "long" + }, + "device_class": { + "ignore_above": 1024, + "type": "keyword" + }, + "exists": { + "type": "boolean" + }, + "father": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "primary_affinity": { + "type": "float" + }, + "reweight": { + "type": "long" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "type_id": { + "type": "long" + } + } + }, + "pool_disk": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "objects": { + "type": "long" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "kb": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cloud": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "instance": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cloudfoundry": { + "properties": { + "app": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "container": { + "properties": { + "cpu": { + "properties": { + "pct": { + "type": "float" + } + } + }, + "disk": { + "properties": { + "bytes": { + "type": "long" + }, + "quota": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "instance_index": { + "type": "long" + }, + "memory": { + "properties": { + "bytes": { + "type": "long" + }, + "quota": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "counter": { + "properties": { + "delta": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "total": { + "type": "long" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "type": "float" + } + } + } + } + }, + "cockroachdb": { + "type": "object" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "consul": { + "properties": { + "agent": { + "properties": { + "autopilot": { + "properties": { + "healthy": { + "type": "boolean" + } + } + }, + "runtime": { + "properties": { + "alloc": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "garbage_collector": { + "properties": { + "pause": { + "properties": { + "current": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "total": { + "properties": { + "ns": { + "type": "long" + } + } + } + } + }, + "runs": { + "type": "long" + } + } + }, + "goroutines": { + "type": "long" + }, + "heap_objects": { + "type": "long" + }, + "malloc_count": { + "type": "long" + }, + "sys": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "container": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "properties": { + "GCB_BUILD_ID": { + "type": "keyword" + }, + "GCB_PROJECT_ID": { + "type": "keyword" + }, + "INCLUDES_SOURCE": { + "type": "keyword" + }, + "LICENSE": { + "type": "keyword" + }, + "LICENSE_CATEGORY": { + "type": "keyword" + }, + "NOTICES_PATH": { + "type": "keyword" + }, + "SOURCES_INCLUDED": { + "type": "keyword" + }, + "annotation_checksum/config": { + "type": "keyword" + }, + "annotation_checksum/configmap": { + "type": "keyword" + }, + "annotation_checksum/dashboards-json-config": { + "type": "keyword" + }, + "annotation_checksum/health": { + "type": "keyword" + }, + "annotation_checksum/sc-dashboard-provider-config": { + "type": "keyword" + }, + "annotation_checksum/secret": { + "type": "keyword" + }, + "annotation_configChecksum": { + "type": "keyword" + }, + "annotation_configchecksum": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_hash": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_ports": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_restartCount": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_terminationMessagePath": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_terminationMessagePolicy": { + "type": "keyword" + }, + "annotation_io_kubernetes_pod_terminationGracePeriod": { + "type": "keyword" + }, + "annotation_kubernetes_io/config_hash": { + "type": "keyword" + }, + "annotation_kubernetes_io/config_seen": { + "type": "keyword" + }, + "annotation_kubernetes_io/config_source": { + "type": "keyword" + }, + "annotation_kubernetes_io/limit-ranger": { + "type": "keyword" + }, + "annotation_prometheus_io/path": { + "type": "keyword" + }, + "annotation_prometheus_io/port": { + "type": "keyword" + }, + "annotation_prometheus_io/scrape": { + "type": "keyword" + }, + "annotation_scheduler_alpha_kubernetes_io/critical-pod": { + "type": "keyword" + }, + "annotation_seccomp_security_alpha_kubernetes_io/pod": { + "type": "keyword" + }, + "app": { + "type": "keyword" + }, + "app_kubernetes_io/instance": { + "type": "keyword" + }, + "app_kubernetes_io/managed-by": { + "type": "keyword" + }, + "app_kubernetes_io/name": { + "type": "keyword" + }, + "chart": { + "type": "keyword" + }, + "component": { + "type": "keyword" + }, + "controller-revision-hash": { + "type": "keyword" + }, + "controller-uid": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "helm_sh/chart": { + "type": "keyword" + }, + "heritage": { + "type": "keyword" + }, + "io_kubernetes_container_logpath": { + "type": "keyword" + }, + "io_kubernetes_container_name": { + "type": "keyword" + }, + "io_kubernetes_docker_type": { + "type": "keyword" + }, + "io_kubernetes_pod_name": { + "type": "keyword" + }, + "io_kubernetes_pod_namespace": { + "type": "keyword" + }, + "io_kubernetes_pod_uid": { + "type": "keyword" + }, + "io_kubernetes_sandbox_id": { + "type": "keyword" + }, + "job-name": { + "type": "keyword" + }, + "k8s-app": { + "type": "keyword" + }, + "license": { + "type": "keyword" + }, + "maintainer": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "org_label-schema_build-date": { + "type": "keyword" + }, + "org_label-schema_license": { + "type": "keyword" + }, + "org_label-schema_name": { + "type": "keyword" + }, + "org_label-schema_schema-version": { + "type": "keyword" + }, + "org_label-schema_url": { + "type": "keyword" + }, + "org_label-schema_usage": { + "type": "keyword" + }, + "org_label-schema_vcs-ref": { + "type": "keyword" + }, + "org_label-schema_vcs-url": { + "type": "keyword" + }, + "org_label-schema_vendor": { + "type": "keyword" + }, + "org_label-schema_version": { + "type": "keyword" + }, + "org_opencontainers_image_documentation": { + "type": "keyword" + }, + "org_opencontainers_image_licenses": { + "type": "keyword" + }, + "org_opencontainers_image_source": { + "type": "keyword" + }, + "org_opencontainers_image_title": { + "type": "keyword" + }, + "org_opencontainers_image_vendor": { + "type": "keyword" + }, + "org_opencontainers_image_version": { + "type": "keyword" + }, + "pod-template-generation": { + "type": "keyword" + }, + "pod-template-hash": { + "type": "keyword" + }, + "release": { + "type": "keyword" + }, + "role": { + "type": "keyword" + }, + "service": { + "type": "keyword" + }, + "statefulset_kubernetes_io/pod-name": { + "type": "keyword" + }, + "tier": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "coredns": { + "properties": { + "stats": { + "properties": { + "dns": { + "properties": { + "cache": { + "properties": { + "hits": { + "properties": { + "count": { + "type": "long" + } + } + }, + "misses": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "request": { + "properties": { + "count": { + "type": "long" + }, + "do": { + "properties": { + "count": { + "type": "long" + } + } + }, + "duration": { + "properties": { + "ns": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + }, + "size": { + "properties": { + "bytes": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + }, + "type": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "response": { + "properties": { + "rcode": { + "properties": { + "count": { + "type": "long" + } + } + }, + "size": { + "properties": { + "bytes": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "panic": { + "properties": { + "count": { + "type": "long" + } + } + }, + "proto": { + "ignore_above": 1024, + "type": "keyword" + }, + "rcode": { + "ignore_above": 1024, + "type": "keyword" + }, + "server": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "couchbase": { + "properties": { + "bucket": { + "properties": { + "data": { + "properties": { + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "disk": { + "properties": { + "fetches": { + "type": "long" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "item_count": { + "type": "long" + }, + "memory": { + "properties": { + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ops_per_sec": { + "type": "long" + }, + "quota": { + "properties": { + "ram": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "use": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cluster": { + "properties": { + "hdd": { + "properties": { + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "quota": { + "properties": { + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "by_data": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "value": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "max_bucket_count": { + "type": "long" + }, + "quota": { + "properties": { + "index_memory": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "memory": { + "properties": { + "mb": { + "type": "long" + } + } + } + } + }, + "ram": { + "properties": { + "quota": { + "properties": { + "total": { + "properties": { + "per_node": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "value": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "used": { + "properties": { + "per_node": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "value": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "by_data": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "value": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "node": { + "properties": { + "cmd_get": { + "type": "long" + }, + "couch": { + "properties": { + "docs": { + "properties": { + "data_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "disk_size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "spatial": { + "properties": { + "data_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "disk_size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "views": { + "properties": { + "data_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "disk_size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "cpu_utilization_rate": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "current_items": { + "properties": { + "total": { + "type": "long" + }, + "value": { + "type": "long" + } + } + }, + "ep_bg_fetched": { + "type": "long" + }, + "get_hits": { + "type": "long" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "mcd_memory": { + "properties": { + "allocated": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "reserved": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "ops": { + "type": "long" + }, + "swap": { + "properties": { + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "uptime": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "vb_replica_curr_items": { + "type": "long" + } + } + } + } + }, + "couchdb": { + "properties": { + "server": { + "properties": { + "couchdb": { + "properties": { + "auth_cache_hits": { + "type": "long" + }, + "auth_cache_misses": { + "type": "long" + }, + "database_reads": { + "type": "long" + }, + "database_writes": { + "type": "long" + }, + "open_databases": { + "type": "long" + }, + "open_os_files": { + "type": "long" + }, + "request_time": { + "type": "long" + } + } + }, + "httpd": { + "properties": { + "bulk_requests": { + "type": "long" + }, + "clients_requesting_changes": { + "type": "long" + }, + "requests": { + "type": "long" + }, + "temporary_view_reads": { + "type": "long" + }, + "view_reads": { + "type": "long" + } + } + }, + "httpd_request_methods": { + "properties": { + "COPY": { + "type": "long" + }, + "DELETE": { + "type": "long" + }, + "GET": { + "type": "long" + }, + "HEAD": { + "type": "long" + }, + "POST": { + "type": "long" + }, + "PUT": { + "type": "long" + } + } + }, + "httpd_status_codes": { + "properties": { + "200": { + "type": "long" + }, + "201": { + "type": "long" + }, + "202": { + "type": "long" + }, + "301": { + "type": "long" + }, + "304": { + "type": "long" + }, + "400": { + "type": "long" + }, + "401": { + "type": "long" + }, + "403": { + "type": "long" + }, + "404": { + "type": "long" + }, + "405": { + "type": "long" + }, + "409": { + "type": "long" + }, + "412": { + "type": "long" + }, + "500": { + "type": "long" + } + } + } + } + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dll": { + "properties": { + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dns": { + "properties": { + "answers": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "header_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "question": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "resolved_ip": { + "type": "ip" + }, + "response_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "command": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "ip_addresses": { + "type": "ip" + }, + "labels": { + "properties": { + "GCB_BUILD_ID": { + "type": "keyword" + }, + "GCB_PROJECT_ID": { + "type": "keyword" + }, + "INCLUDES_SOURCE": { + "type": "keyword" + }, + "LICENSE": { + "type": "keyword" + }, + "LICENSE_CATEGORY": { + "type": "keyword" + }, + "NOTICES_PATH": { + "type": "keyword" + }, + "SOURCES_INCLUDED": { + "type": "keyword" + }, + "annotation_checksum/config": { + "type": "keyword" + }, + "annotation_checksum/configmap": { + "type": "keyword" + }, + "annotation_checksum/dashboards-json-config": { + "type": "keyword" + }, + "annotation_checksum/health": { + "type": "keyword" + }, + "annotation_checksum/sc-dashboard-provider-config": { + "type": "keyword" + }, + "annotation_checksum/secret": { + "type": "keyword" + }, + "annotation_configChecksum": { + "type": "keyword" + }, + "annotation_configchecksum": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_hash": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_ports": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_restartCount": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_terminationMessagePath": { + "type": "keyword" + }, + "annotation_io_kubernetes_container_terminationMessagePolicy": { + "type": "keyword" + }, + "annotation_io_kubernetes_pod_terminationGracePeriod": { + "type": "keyword" + }, + "annotation_kubernetes_io/config_hash": { + "type": "keyword" + }, + "annotation_kubernetes_io/config_seen": { + "type": "keyword" + }, + "annotation_kubernetes_io/config_source": { + "type": "keyword" + }, + "annotation_kubernetes_io/limit-ranger": { + "type": "keyword" + }, + "annotation_prometheus_io/path": { + "type": "keyword" + }, + "annotation_prometheus_io/port": { + "type": "keyword" + }, + "annotation_prometheus_io/scrape": { + "type": "keyword" + }, + "annotation_scheduler_alpha_kubernetes_io/critical-pod": { + "type": "keyword" + }, + "annotation_seccomp_security_alpha_kubernetes_io/pod": { + "type": "keyword" + }, + "app": { + "type": "keyword" + }, + "app_kubernetes_io/instance": { + "type": "keyword" + }, + "app_kubernetes_io/managed-by": { + "type": "keyword" + }, + "app_kubernetes_io/name": { + "type": "keyword" + }, + "chart": { + "type": "keyword" + }, + "component": { + "type": "keyword" + }, + "controller-revision-hash": { + "type": "keyword" + }, + "controller-uid": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "helm_sh/chart": { + "type": "keyword" + }, + "heritage": { + "type": "keyword" + }, + "io_k8s_description": { + "type": "keyword" + }, + "io_k8s_display-name": { + "type": "keyword" + }, + "io_kubernetes_container_logpath": { + "type": "keyword" + }, + "io_kubernetes_container_name": { + "type": "keyword" + }, + "io_kubernetes_docker_type": { + "type": "keyword" + }, + "io_kubernetes_pod_name": { + "type": "keyword" + }, + "io_kubernetes_pod_namespace": { + "type": "keyword" + }, + "io_kubernetes_pod_uid": { + "type": "keyword" + }, + "io_kubernetes_sandbox_id": { + "type": "keyword" + }, + "job-name": { + "type": "keyword" + }, + "k8s-app": { + "type": "keyword" + }, + "license": { + "type": "keyword" + }, + "maintainer": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "org_label-schema_build-date": { + "type": "keyword" + }, + "org_label-schema_license": { + "type": "keyword" + }, + "org_label-schema_name": { + "type": "keyword" + }, + "org_label-schema_schema-version": { + "type": "keyword" + }, + "org_label-schema_url": { + "type": "keyword" + }, + "org_label-schema_usage": { + "type": "keyword" + }, + "org_label-schema_vcs-ref": { + "type": "keyword" + }, + "org_label-schema_vcs-url": { + "type": "keyword" + }, + "org_label-schema_vendor": { + "type": "keyword" + }, + "org_label-schema_version": { + "type": "keyword" + }, + "org_opencontainers_image_created": { + "type": "keyword" + }, + "org_opencontainers_image_documentation": { + "type": "keyword" + }, + "org_opencontainers_image_licenses": { + "type": "keyword" + }, + "org_opencontainers_image_revision": { + "type": "keyword" + }, + "org_opencontainers_image_source": { + "type": "keyword" + }, + "org_opencontainers_image_title": { + "type": "keyword" + }, + "org_opencontainers_image_url": { + "type": "keyword" + }, + "org_opencontainers_image_vendor": { + "type": "keyword" + }, + "org_opencontainers_image_version": { + "type": "keyword" + }, + "pod-template-generation": { + "type": "keyword" + }, + "pod-template-hash": { + "type": "keyword" + }, + "release": { + "type": "keyword" + }, + "role": { + "type": "keyword" + }, + "service": { + "type": "keyword" + }, + "statefulset_kubernetes_io/pod-name": { + "type": "keyword" + }, + "summary": { + "type": "keyword" + }, + "tier": { + "type": "keyword" + }, + "url": { + "type": "keyword" + }, + "vendor": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "size": { + "properties": { + "root_fs": { + "type": "long" + }, + "rw": { + "type": "long" + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cpu": { + "properties": { + "core": { + "properties": { + "*": { + "properties": { + "norm": { + "properties": { + "pct": { + "type": "object" + } + } + }, + "pct": { + "type": "object" + }, + "ticks": { + "type": "object" + } + } + }, + "0": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "1": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "2": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "3": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + } + } + }, + "kernel": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "system": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "user": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + } + } + }, + "diskio": { + "properties": { + "read": { + "properties": { + "bytes": { + "type": "long" + }, + "ops": { + "type": "long" + }, + "queued": { + "type": "long" + }, + "rate": { + "type": "long" + }, + "service_time": { + "type": "long" + }, + "wait_time": { + "type": "long" + } + } + }, + "reads": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "summary": { + "properties": { + "bytes": { + "type": "long" + }, + "ops": { + "type": "long" + }, + "queued": { + "type": "long" + }, + "rate": { + "type": "long" + }, + "service_time": { + "type": "long" + }, + "wait_time": { + "type": "long" + } + } + }, + "total": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "write": { + "properties": { + "bytes": { + "type": "long" + }, + "ops": { + "type": "long" + }, + "queued": { + "type": "long" + }, + "rate": { + "type": "long" + }, + "service_time": { + "type": "long" + }, + "wait_time": { + "type": "long" + } + } + }, + "writes": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "actor": { + "properties": { + "attributes": { + "type": "object" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "from": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "healthcheck": { + "properties": { + "event": { + "properties": { + "end_date": { + "type": "date" + }, + "exit_code": { + "type": "long" + }, + "output": { + "ignore_above": 1024, + "type": "keyword" + }, + "start_date": { + "type": "date" + } + } + }, + "failingstreak": { + "type": "long" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "image": { + "properties": { + "created": { + "type": "date" + }, + "id": { + "properties": { + "current": { + "ignore_above": 1024, + "type": "keyword" + }, + "parent": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "size": { + "properties": { + "regular": { + "type": "long" + }, + "virtual": { + "type": "long" + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "info": { + "properties": { + "containers": { + "properties": { + "paused": { + "type": "long" + }, + "running": { + "type": "long" + }, + "stopped": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "images": { + "type": "long" + } + } + }, + "memory": { + "properties": { + "commit": { + "properties": { + "peak": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "fail": { + "properties": { + "count": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "limit": { + "type": "long" + }, + "private_working_set": { + "properties": { + "total": { + "type": "long" + } + } + }, + "rss": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "total": { + "type": "long" + } + } + }, + "stats": { + "properties": { + "*": { + "type": "object" + }, + "active_anon": { + "type": "long" + }, + "active_file": { + "type": "long" + }, + "cache": { + "type": "long" + }, + "dirty": { + "type": "long" + }, + "hierarchical_memory_limit": { + "type": "long" + }, + "hierarchical_memsw_limit": { + "type": "long" + }, + "inactive_anon": { + "type": "long" + }, + "inactive_file": { + "type": "long" + }, + "mapped_file": { + "type": "long" + }, + "pgfault": { + "type": "long" + }, + "pgmajfault": { + "type": "long" + }, + "pgpgin": { + "type": "long" + }, + "pgpgout": { + "type": "long" + }, + "rss": { + "type": "long" + }, + "rss_huge": { + "type": "long" + }, + "total_active_anon": { + "type": "long" + }, + "total_active_file": { + "type": "long" + }, + "total_cache": { + "type": "long" + }, + "total_dirty": { + "type": "long" + }, + "total_inactive_anon": { + "type": "long" + }, + "total_inactive_file": { + "type": "long" + }, + "total_mapped_file": { + "type": "long" + }, + "total_pgfault": { + "type": "long" + }, + "total_pgmajfault": { + "type": "long" + }, + "total_pgpgin": { + "type": "long" + }, + "total_pgpgout": { + "type": "long" + }, + "total_rss": { + "type": "long" + }, + "total_rss_huge": { + "type": "long" + }, + "total_unevictable": { + "type": "long" + }, + "total_writeback": { + "type": "long" + }, + "unevictable": { + "type": "long" + }, + "writeback": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "max": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "total": { + "type": "long" + } + } + } + } + }, + "network": { + "properties": { + "in": { + "properties": { + "bytes": { + "type": "long" + }, + "dropped": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "errors": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "inbound": { + "properties": { + "bytes": { + "type": "long" + }, + "dropped": { + "type": "long" + }, + "errors": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "interface": { + "ignore_above": 1024, + "type": "keyword" + }, + "out": { + "properties": { + "bytes": { + "type": "long" + }, + "dropped": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "errors": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "outbound": { + "properties": { + "bytes": { + "type": "long" + }, + "dropped": { + "type": "long" + }, + "errors": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + } + } + }, + "dropwizard": { + "type": "object" + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "elasticsearch": { + "properties": { + "ccr": { + "properties": { + "follower": { + "properties": { + "global_checkpoint": { + "type": "long" + }, + "index": { + "ignore_above": 1024, + "type": "keyword" + }, + "operations_written": { + "type": "long" + }, + "shard": { + "properties": { + "number": { + "type": "long" + } + } + }, + "time_since_last_read": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "leader": { + "properties": { + "index": { + "ignore_above": 1024, + "type": "keyword" + }, + "max_seq_no": { + "type": "long" + } + } + } + } + }, + "cluster": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pending_task": { + "properties": { + "insert_order": { + "type": "long" + }, + "priority": { + "type": "long" + }, + "source": { + "ignore_above": 1024, + "type": "keyword" + }, + "time_in_queue": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "state": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "stats": { + "properties": { + "indices": { + "properties": { + "count": { + "type": "long" + }, + "fielddata": { + "properties": { + "memory": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "shards": { + "properties": { + "count": { + "type": "long" + }, + "primaries": { + "type": "long" + } + } + } + } + }, + "nodes": { + "properties": { + "count": { + "type": "long" + }, + "data": { + "type": "long" + }, + "master": { + "type": "long" + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "enrich": { + "properties": { + "executed_searches": { + "properties": { + "total": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "size": { + "type": "long" + } + } + }, + "remote_requests": { + "properties": { + "current": { + "type": "long" + }, + "total": { + "type": "long" + } + } + } + } + }, + "index": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "recovery": { + "properties": { + "id": { + "type": "long" + }, + "primary": { + "type": "boolean" + }, + "source": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "stage": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "summary": { + "properties": { + "primaries": { + "properties": { + "docs": { + "properties": { + "count": { + "type": "long" + }, + "deleted": { + "type": "long" + } + } + }, + "segments": { + "properties": { + "count": { + "type": "long" + }, + "memory": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "store": { + "properties": { + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "total": { + "properties": { + "docs": { + "properties": { + "count": { + "type": "long" + }, + "deleted": { + "type": "long" + } + } + }, + "segments": { + "properties": { + "count": { + "type": "long" + }, + "memory": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "store": { + "properties": { + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "total": { + "properties": { + "docs": { + "properties": { + "count": { + "type": "long" + }, + "deleted": { + "type": "long" + } + } + }, + "segments": { + "properties": { + "count": { + "type": "long" + }, + "memory": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "store": { + "properties": { + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "ml": { + "properties": { + "job": { + "properties": { + "data_counts": { + "properties": { + "invalid_date_count": { + "type": "long" + }, + "processed_record_count": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "node": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "jvm": { + "properties": { + "memory": { + "properties": { + "heap": { + "properties": { + "init": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "nonheap": { + "properties": { + "init": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "process": { + "properties": { + "mlockall": { + "type": "boolean" + } + } + }, + "stats": { + "properties": { + "fs": { + "properties": { + "summary": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "indices": { + "properties": { + "docs": { + "properties": { + "count": { + "type": "long" + }, + "deleted": { + "type": "long" + } + } + }, + "segments": { + "properties": { + "count": { + "type": "long" + }, + "memory": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "store": { + "properties": { + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "jvm": { + "properties": { + "gc": { + "properties": { + "collectors": { + "properties": { + "old": { + "properties": { + "collection": { + "properties": { + "count": { + "type": "long" + }, + "ms": { + "type": "long" + } + } + } + } + }, + "young": { + "properties": { + "collection": { + "properties": { + "count": { + "type": "long" + }, + "ms": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "mem": { + "properties": { + "pools": { + "properties": { + "old": { + "properties": { + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "peak": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "peak_max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "survivor": { + "properties": { + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "peak": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "peak_max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "young": { + "properties": { + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "peak": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "peak_max": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "shard": { + "properties": { + "number": { + "type": "long" + }, + "primary": { + "type": "boolean" + }, + "relocating_node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "envoyproxy": { + "properties": { + "server": { + "properties": { + "cluster_manager": { + "properties": { + "active_clusters": { + "type": "long" + }, + "cluster_added": { + "type": "long" + }, + "cluster_modified": { + "type": "long" + }, + "cluster_removed": { + "type": "long" + }, + "cluster_updated": { + "type": "long" + }, + "cluster_updated_via_merge": { + "type": "long" + }, + "update_merge_cancelled": { + "type": "long" + }, + "update_out_of_merge_window": { + "type": "long" + }, + "warming_clusters": { + "type": "long" + } + } + }, + "filesystem": { + "properties": { + "flushed_by_timer": { + "type": "long" + }, + "reopen_failed": { + "type": "long" + }, + "write_buffered": { + "type": "long" + }, + "write_completed": { + "type": "long" + }, + "write_failed": { + "type": "long" + }, + "write_total_buffered": { + "type": "long" + } + } + }, + "http2": { + "properties": { + "header_overflow": { + "type": "long" + }, + "headers_cb_no_stream": { + "type": "long" + }, + "rx_messaging_error": { + "type": "long" + }, + "rx_reset": { + "type": "long" + }, + "too_many_header_frames": { + "type": "long" + }, + "trailers": { + "type": "long" + }, + "tx_reset": { + "type": "long" + } + } + }, + "listener_manager": { + "properties": { + "listener_added": { + "type": "long" + }, + "listener_create_failure": { + "type": "long" + }, + "listener_create_success": { + "type": "long" + }, + "listener_modified": { + "type": "long" + }, + "listener_removed": { + "type": "long" + }, + "listener_stopped": { + "type": "long" + }, + "total_listeners_active": { + "type": "long" + }, + "total_listeners_draining": { + "type": "long" + }, + "total_listeners_warming": { + "type": "long" + } + } + }, + "runtime": { + "properties": { + "admin_overrides_active": { + "type": "long" + }, + "deprecated_feature_use": { + "type": "long" + }, + "load_error": { + "type": "long" + }, + "load_success": { + "type": "long" + }, + "num_keys": { + "type": "long" + }, + "num_layers": { + "type": "long" + }, + "override_dir_exists": { + "type": "long" + }, + "override_dir_not_exists": { + "type": "long" + } + } + }, + "server": { + "properties": { + "concurrency": { + "type": "long" + }, + "days_until_first_cert_expiring": { + "type": "long" + }, + "debug_assertion_failures": { + "type": "long" + }, + "dynamic_unknown_fields": { + "type": "long" + }, + "hot_restart_epoch": { + "type": "long" + }, + "live": { + "type": "long" + }, + "memory_allocated": { + "type": "long" + }, + "memory_heap_size": { + "type": "long" + }, + "parent_connections": { + "type": "long" + }, + "state": { + "type": "long" + }, + "static_unknown_fields": { + "type": "long" + }, + "stats_recent_lookups": { + "type": "long" + }, + "total_connections": { + "type": "long" + }, + "uptime": { + "type": "long" + }, + "version": { + "type": "long" + }, + "watchdog_mega_miss": { + "type": "long" + }, + "watchdog_miss": { + "type": "long" + } + } + }, + "stats": { + "properties": { + "overflow": { + "type": "long" + } + } + } + } + } + } + }, + "error": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "stack_trace": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "etcd": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "disk": { + "properties": { + "backend_commit_duration": { + "properties": { + "ns": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + }, + "mvcc_db_total_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "wal_fsync_duration": { + "properties": { + "ns": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "leader": { + "properties": { + "followers": { + "properties": { + "counts": { + "properties": { + "followers": { + "properties": { + "counts": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + } + } + } + } + }, + "latency": { + "properties": { + "follower": { + "properties": { + "latency": { + "properties": { + "standardDeviation": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "followers": { + "properties": { + "latency": { + "properties": { + "average": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "current": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "maximum": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "minimum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "leader": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "memory": { + "properties": { + "go_memstats_alloc": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "network": { + "properties": { + "client_grpc_received": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "client_grpc_sent": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "self": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "leaderinfo": { + "properties": { + "leader": { + "ignore_above": 1024, + "type": "keyword" + }, + "starttime": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "recv": { + "properties": { + "appendrequest": { + "properties": { + "count": { + "type": "long" + } + } + }, + "bandwidthrate": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "pkgrate": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "send": { + "properties": { + "appendrequest": { + "properties": { + "count": { + "type": "long" + } + } + }, + "bandwidthrate": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "pkgrate": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "starttime": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "grpc_handled": { + "properties": { + "count": { + "type": "long" + } + } + }, + "grpc_started": { + "properties": { + "count": { + "type": "long" + } + } + }, + "has_leader": { + "type": "byte" + }, + "leader_changes": { + "properties": { + "count": { + "type": "long" + } + } + }, + "proposals_committed": { + "properties": { + "count": { + "type": "long" + } + } + }, + "proposals_failed": { + "properties": { + "count": { + "type": "long" + } + } + }, + "proposals_pending": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "store": { + "properties": { + "compareanddelete": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "compareandswap": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "create": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "delete": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "expire": { + "properties": { + "count": { + "type": "long" + } + } + }, + "gets": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "sets": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "update": { + "properties": { + "fail": { + "type": "long" + }, + "success": { + "type": "long" + } + } + }, + "watchers": { + "type": "long" + } + } + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "golang": { + "properties": { + "expvar": { + "properties": { + "cmdline": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "heap": { + "properties": { + "allocations": { + "properties": { + "active": { + "type": "long" + }, + "allocated": { + "type": "long" + }, + "frees": { + "type": "long" + }, + "idle": { + "type": "long" + }, + "mallocs": { + "type": "long" + }, + "objects": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "cmdline": { + "ignore_above": 1024, + "type": "keyword" + }, + "gc": { + "properties": { + "cpu_fraction": { + "type": "float" + }, + "next_gc_limit": { + "type": "long" + }, + "pause": { + "properties": { + "avg": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "count": { + "type": "long" + }, + "max": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "sum": { + "properties": { + "ns": { + "type": "long" + } + } + } + } + }, + "total_count": { + "type": "long" + }, + "total_pause": { + "properties": { + "ns": { + "type": "long" + } + } + } + } + }, + "system": { + "properties": { + "obtained": { + "type": "long" + }, + "released": { + "type": "long" + }, + "stack": { + "type": "long" + }, + "total": { + "type": "long" + } + } + } + } + } + } + }, + "googlecloud": { + "properties": { + "labels": { + "type": "object" + } + } + }, + "graphite": { + "properties": { + "server": { + "properties": { + "example": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "haproxy": { + "properties": { + "info": { + "properties": { + "compress": { + "properties": { + "bps": { + "properties": { + "in": { + "type": "long" + }, + "out": { + "type": "long" + }, + "rate_limit": { + "type": "long" + } + } + } + } + }, + "connection": { + "properties": { + "current": { + "type": "long" + }, + "hard_max": { + "type": "long" + }, + "max": { + "type": "long" + }, + "rate": { + "properties": { + "limit": { + "type": "long" + }, + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + }, + "ssl": { + "properties": { + "current": { + "type": "long" + }, + "max": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "total": { + "type": "long" + } + } + }, + "idle": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "memory": { + "properties": { + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "pipes": { + "properties": { + "free": { + "type": "long" + }, + "max": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "process_num": { + "type": "long" + }, + "processes": { + "type": "long" + }, + "requests": { + "properties": { + "max": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "run_queue": { + "type": "long" + }, + "session": { + "properties": { + "rate": { + "properties": { + "limit": { + "type": "long" + }, + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + } + } + }, + "sockets": { + "properties": { + "max": { + "type": "long" + } + } + }, + "ssl": { + "properties": { + "backend": { + "properties": { + "key_rate": { + "properties": { + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + } + } + }, + "cache_misses": { + "type": "long" + }, + "cached_lookups": { + "type": "long" + }, + "frontend": { + "properties": { + "key_rate": { + "properties": { + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + }, + "session_reuse": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "rate": { + "properties": { + "limit": { + "type": "long" + }, + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + } + } + }, + "tasks": { + "type": "long" + }, + "ulimit_n": { + "type": "long" + }, + "uptime": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "zlib_mem_usage": { + "properties": { + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + } + } + }, + "stat": { + "properties": { + "agent": { + "properties": { + "check": { + "properties": { + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "health": { + "ignore_above": 1024, + "type": "keyword" + }, + "rise": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "fall": { + "ignore_above": 1024, + "type": "keyword" + }, + "health": { + "ignore_above": 1024, + "type": "keyword" + }, + "rise": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "check": { + "properties": { + "agent": { + "properties": { + "last": { + "type": "long" + } + } + }, + "code": { + "type": "long" + }, + "down": { + "type": "long" + }, + "duration": { + "type": "long" + }, + "failed": { + "type": "long" + }, + "health": { + "properties": { + "fail": { + "type": "long" + }, + "last": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "properties": { + "aborted": { + "type": "long" + } + } + }, + "component_type": { + "type": "long" + }, + "compressor": { + "properties": { + "bypassed": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "in": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "out": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "response": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "connection": { + "properties": { + "cache": { + "type": "object" + }, + "idle": { + "type": "object" + }, + "retried": { + "type": "long" + }, + "time": { + "properties": { + "avg": { + "type": "long" + } + } + }, + "total": { + "type": "long" + } + } + }, + "cookie": { + "ignore_above": 1024, + "type": "keyword" + }, + "downtime": { + "type": "long" + }, + "header": { + "properties": { + "rewrite": { + "properties": { + "failed": { + "type": "object" + } + } + } + } + }, + "in": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "last_change": { + "type": "long" + }, + "load_balancing_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "out": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "proxy": { + "properties": { + "id": { + "type": "long" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "queue": { + "properties": { + "limit": { + "type": "long" + }, + "time": { + "properties": { + "avg": { + "type": "long" + } + } + } + } + }, + "request": { + "properties": { + "connection": { + "properties": { + "errors": { + "type": "long" + } + } + }, + "denied": { + "type": "long" + }, + "errors": { + "type": "long" + }, + "queued": { + "properties": { + "current": { + "type": "long" + }, + "max": { + "type": "long" + } + } + }, + "rate": { + "properties": { + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + }, + "redispatched": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "response": { + "properties": { + "denied": { + "type": "long" + }, + "errors": { + "type": "long" + }, + "http": { + "properties": { + "1xx": { + "type": "long" + }, + "2xx": { + "type": "long" + }, + "3xx": { + "type": "long" + }, + "4xx": { + "type": "long" + }, + "5xx": { + "type": "long" + }, + "other": { + "type": "long" + } + } + }, + "time": { + "properties": { + "avg": { + "type": "long" + } + } + } + } + }, + "selected": { + "properties": { + "total": { + "type": "long" + } + } + }, + "server": { + "properties": { + "aborted": { + "type": "long" + }, + "active": { + "type": "long" + }, + "backup": { + "type": "long" + }, + "id": { + "type": "long" + } + } + }, + "service_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "session": { + "properties": { + "current": { + "type": "long" + }, + "limit": { + "type": "long" + }, + "max": { + "type": "long" + }, + "rate": { + "properties": { + "limit": { + "type": "long" + }, + "max": { + "type": "long" + }, + "value": { + "type": "long" + } + } + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "throttle": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "tracked": { + "properties": { + "id": { + "type": "long" + } + } + }, + "weight": { + "type": "long" + } + } + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "build": { + "ignore_above": 1024, + "type": "keyword" + }, + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "http": { + "properties": { + "json": { + "type": "object" + }, + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "headers": { + "type": "object" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "headers": { + "type": "object" + }, + "phrase": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + } + } + }, + "server": { + "type": "object" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ibmmq": { + "type": "object" + }, + "iis": { + "properties": { + "application_pool": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "webserver": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "website": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "istio": { + "properties": { + "citadel": { + "properties": { + "grpc": { + "properties": { + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "server": { + "properties": { + "handled": { + "type": "long" + }, + "handling": { + "properties": { + "latency": { + "properties": { + "ms": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "msg": { + "properties": { + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "started": { + "type": "long" + } + } + }, + "service": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "secret_controller_svc_acc_created_cert": { + "properties": { + "count": { + "type": "long" + } + } + }, + "server_root_cert_expiry_seconds": { + "type": "float" + } + } + }, + "galley": { + "properties": { + "collection": { + "ignore_above": 1024, + "type": "keyword" + }, + "istio": { + "properties": { + "authentication": { + "properties": { + "meshpolicies": { + "type": "long" + }, + "policies": { + "type": "long" + } + } + }, + "mesh": { + "properties": { + "MeshConfig": { + "type": "long" + } + } + }, + "networking": { + "properties": { + "destinationrules": { + "type": "long" + }, + "envoyfilters": { + "type": "long" + }, + "gateways": { + "type": "long" + }, + "sidecars": { + "type": "long" + }, + "virtualservices": { + "type": "long" + } + } + }, + "policy": { + "properties": { + "attributemanifests": { + "type": "long" + }, + "handlers": { + "type": "long" + }, + "instances": { + "type": "long" + }, + "rules": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "properties": { + "processor": { + "properties": { + "event_span": { + "properties": { + "duration": { + "properties": { + "ms": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "snapshot_events": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + }, + "snapshot_lifetime": { + "properties": { + "duration": { + "properties": { + "ms": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "state_type_instances": { + "type": "long" + }, + "strategy": { + "properties": { + "on_change": { + "type": "long" + }, + "timer_quiesce_reached": { + "type": "long" + } + } + } + } + }, + "source_kube_event_success_total": { + "type": "long" + }, + "validation": { + "properties": { + "cert_key": { + "properties": { + "updates": { + "type": "long" + } + } + }, + "config": { + "properties": { + "load": { + "type": "long" + }, + "updates": { + "type": "long" + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "mesh": { + "properties": { + "connection": { + "properties": { + "security": { + "properties": { + "policy": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "destination": { + "properties": { + "app": { + "ignore_above": 1024, + "type": "keyword" + }, + "principal": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "workload": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "instance": { + "norms": false, + "type": "text" + }, + "job": { + "ignore_above": 1024, + "type": "keyword" + }, + "reporter": { + "ignore_above": 1024, + "type": "keyword" + }, + "request": { + "properties": { + "duration": { + "properties": { + "ms": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "properties": { + "bytes": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "requests": { + "type": "long" + }, + "response": { + "properties": { + "code": { + "type": "long" + }, + "size": { + "properties": { + "bytes": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "source": { + "properties": { + "app": { + "ignore_above": 1024, + "type": "keyword" + }, + "principal": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "workload": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "mixer": { + "properties": { + "config": { + "properties": { + "adapter": { + "properties": { + "info": { + "properties": { + "configs": { + "type": "long" + }, + "errors": { + "properties": { + "config": { + "type": "long" + } + } + } + } + } + } + }, + "attributes": { + "type": "long" + }, + "handler": { + "properties": { + "configs": { + "type": "long" + }, + "errors": { + "properties": { + "validation": { + "type": "long" + } + } + } + } + }, + "instance": { + "properties": { + "configs": { + "type": "long" + }, + "errors": { + "properties": { + "config": { + "type": "long" + } + } + } + } + }, + "rule": { + "properties": { + "configs": { + "type": "long" + }, + "errors": { + "properties": { + "config": { + "type": "long" + }, + "match": { + "type": "long" + } + } + } + } + }, + "template": { + "properties": { + "configs": { + "type": "long" + }, + "errors": { + "properties": { + "config": { + "type": "long" + } + } + } + } + }, + "unsatisfied": { + "properties": { + "action_handler": { + "type": "long" + } + } + } + } + }, + "dispatcher_destinations_per_variety_total": { + "type": "long" + }, + "handler": { + "type": "long" + }, + "istio": { + "properties": { + "mcp": { + "properties": { + "request": { + "properties": { + "acks": { + "type": "long" + } + } + } + } + } + } + }, + "variety": { + "type": "long" + } + } + }, + "pilot": { + "properties": { + "cluster": { + "norms": false, + "type": "text" + }, + "conflict": { + "properties": { + "listener": { + "properties": { + "inbound": { + "type": "long" + }, + "outbound": { + "properties": { + "http": { + "properties": { + "over": { + "properties": { + "current": { + "properties": { + "tcp": { + "type": "long" + } + } + }, + "https": { + "type": "long" + } + } + } + } + }, + "tcp": { + "properties": { + "over": { + "properties": { + "current": { + "properties": { + "http": { + "type": "long" + }, + "tcp": { + "type": "long" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "no": { + "properties": { + "ip": { + "type": "object" + } + } + }, + "proxy": { + "properties": { + "conv": { + "properties": { + "ms": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "services": { + "type": "long" + }, + "type": { + "norms": false, + "type": "text" + }, + "virt": { + "properties": { + "services": { + "type": "long" + } + } + }, + "xds": { + "properties": { + "count": { + "type": "long" + }, + "eds": { + "properties": { + "instances": { + "type": "object" + } + } + }, + "internal": { + "properties": { + "errors": { + "type": "long" + } + } + }, + "push": { + "properties": { + "context": { + "properties": { + "errors": { + "type": "long" + } + } + }, + "time": { + "properties": { + "sec": { + "type": "long" + } + } + } + } + }, + "pushes": { + "type": "long" + } + } + } + } + } + } + }, + "jolokia": { + "properties": { + "agent": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "secured": { + "type": "boolean" + }, + "server": { + "properties": { + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kafka": { + "properties": { + "broker": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "type": "long" + }, + "log": { + "properties": { + "flush_rate": { + "type": "float" + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "messages_in": { + "type": "float" + }, + "net": { + "properties": { + "in": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + }, + "out": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + }, + "rejected": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + } + } + }, + "replication": { + "properties": { + "leader_elections": { + "type": "float" + }, + "unclean_leader_elections": { + "type": "float" + } + } + }, + "request": { + "properties": { + "channel": { + "properties": { + "queue": { + "properties": { + "size": { + "type": "long" + } + } + } + } + }, + "fetch": { + "properties": { + "failed": { + "type": "float" + }, + "failed_per_second": { + "type": "float" + } + } + }, + "produce": { + "properties": { + "failed": { + "type": "float" + }, + "failed_per_second": { + "type": "float" + } + } + } + } + }, + "session": { + "properties": { + "zookeeper": { + "properties": { + "disconnect": { + "type": "float" + }, + "expire": { + "type": "float" + }, + "readonly": { + "type": "float" + }, + "sync": { + "type": "float" + } + } + } + } + }, + "topic": { + "properties": { + "messages_in": { + "type": "float" + }, + "net": { + "properties": { + "in": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + }, + "out": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + }, + "rejected": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + } + } + } + } + } + } + }, + "consumer": { + "properties": { + "bytes_consumed": { + "type": "float" + }, + "fetch_rate": { + "type": "float" + }, + "in": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + }, + "kafka_commits": { + "type": "float" + }, + "max_lag": { + "type": "float" + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "messages_in": { + "type": "float" + }, + "records_consumed": { + "type": "float" + }, + "zookeeper_commits": { + "type": "float" + } + } + }, + "consumergroup": { + "properties": { + "broker": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "type": "long" + } + } + }, + "client": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "member_id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "consumer_lag": { + "type": "long" + }, + "error": { + "properties": { + "code": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "meta": { + "ignore_above": 1024, + "type": "keyword" + }, + "offset": { + "type": "long" + }, + "partition": { + "type": "long" + }, + "topic": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "partition": { + "properties": { + "broker": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "type": "long" + } + } + }, + "id": { + "type": "long" + }, + "offset": { + "properties": { + "newest": { + "type": "long" + }, + "oldest": { + "type": "long" + } + } + }, + "partition": { + "properties": { + "error": { + "properties": { + "code": { + "type": "long" + } + } + }, + "id": { + "type": "long" + }, + "insync_replica": { + "type": "boolean" + }, + "is_leader": { + "type": "boolean" + }, + "isr": { + "ignore_above": 1024, + "type": "keyword" + }, + "leader": { + "type": "long" + }, + "replica": { + "type": "long" + } + } + }, + "topic": { + "properties": { + "error": { + "properties": { + "code": { + "type": "long" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "topic_broker_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "topic_id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "producer": { + "properties": { + "available_buffer_bytes": { + "type": "float" + }, + "batch_size_avg": { + "type": "float" + }, + "batch_size_max": { + "type": "long" + }, + "io_wait": { + "type": "float" + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "message_rate": { + "type": "float" + }, + "out": { + "properties": { + "bytes_per_sec": { + "type": "float" + } + } + }, + "record_error_rate": { + "type": "float" + }, + "record_retry_rate": { + "type": "float" + }, + "record_send_rate": { + "type": "float" + }, + "record_size_avg": { + "type": "float" + }, + "record_size_max": { + "type": "long" + }, + "records_per_request": { + "type": "float" + }, + "request_rate": { + "type": "float" + }, + "response_rate": { + "type": "float" + } + } + }, + "topic": { + "properties": { + "error": { + "properties": { + "code": { + "type": "long" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "kibana": { + "properties": { + "stats": { + "properties": { + "concurrent_connections": { + "type": "long" + }, + "host": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "index": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "process": { + "properties": { + "event_loop_delay": { + "properties": { + "ms": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "memory": { + "properties": { + "heap": { + "properties": { + "size_limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "uptime": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "request": { + "properties": { + "disconnects": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "response_time": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "max": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "snapshot": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "status": { + "properties": { + "metrics": { + "properties": { + "concurrent_connections": { + "type": "long" + }, + "requests": { + "properties": { + "disconnects": { + "type": "long" + }, + "total": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "properties": { + "overall": { + "properties": { + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + } + } + }, + "kubernetes": { + "properties": { + "annotations": { + "properties": { + "*": { + "type": "object" + } + } + }, + "apiserver": { + "properties": { + "audit": { + "properties": { + "event": { + "properties": { + "count": { + "type": "long" + } + } + }, + "rejected": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "client": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "etcd": { + "properties": { + "object": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + }, + "duration": { + "properties": { + "us": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "double" + } + } + } + } + }, + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "response": { + "properties": { + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "process": { + "properties": { + "cpu": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "fds": { + "properties": { + "open": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "resident": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "virtual": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "started": { + "properties": { + "sec": { + "type": "double" + } + } + } + } + }, + "request": { + "properties": { + "client": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "content_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "count": { + "type": "long" + }, + "current": { + "properties": { + "count": { + "type": "long" + } + } + }, + "dry_run": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "properties": { + "us": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "handler": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "latency": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + }, + "longrunning": { + "properties": { + "count": { + "type": "long" + } + } + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource": { + "ignore_above": 1024, + "type": "keyword" + }, + "scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "subresource": { + "ignore_above": 1024, + "type": "keyword" + }, + "verb": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "container": { + "properties": { + "cpu": { + "properties": { + "limit": { + "properties": { + "cores": { + "type": "float" + }, + "nanocores": { + "type": "long" + } + } + }, + "request": { + "properties": { + "cores": { + "type": "float" + }, + "nanocores": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "core": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "limit": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "nanocores": { + "type": "long" + }, + "node": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "ignore_above": 1024, + "type": "keyword" + }, + "logs": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "inodes": { + "properties": { + "count": { + "type": "long" + }, + "free": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "majorpagefaults": { + "type": "long" + }, + "pagefaults": { + "type": "long" + }, + "request": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "rss": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + }, + "limit": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "node": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "workingset": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "rootfs": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "inodes": { + "properties": { + "used": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "start_time": { + "type": "date" + }, + "status": { + "properties": { + "phase": { + "ignore_above": 1024, + "type": "keyword" + }, + "ready": { + "type": "boolean" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "restarts": { + "type": "long" + } + } + } + } + }, + "controllermanager": { + "properties": { + "client": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "handler": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "http": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + }, + "duration": { + "properties": { + "us": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "double" + } + } + } + } + }, + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "response": { + "properties": { + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "leader": { + "properties": { + "is_master": { + "type": "boolean" + } + } + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "collector": { + "properties": { + "count": { + "type": "long" + }, + "eviction": { + "properties": { + "count": { + "type": "long" + } + } + }, + "health": { + "properties": { + "pct": { + "type": "long" + } + } + }, + "unhealthy": { + "properties": { + "count": { + "type": "long" + } + } + } + } + } + } + }, + "process": { + "properties": { + "cpu": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "fds": { + "properties": { + "open": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "resident": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "virtual": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "started": { + "properties": { + "sec": { + "type": "double" + } + } + } + } + }, + "workqueue": { + "properties": { + "adds": { + "properties": { + "count": { + "type": "long" + } + } + }, + "depth": { + "properties": { + "count": { + "type": "long" + } + } + }, + "longestrunning": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "retries": { + "properties": { + "count": { + "type": "long" + } + } + }, + "unfinished": { + "properties": { + "sec": { + "type": "double" + } + } + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cronjob": { + "properties": { + "active": { + "properties": { + "count": { + "type": "long" + } + } + }, + "concurrency": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "deadline": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "is_suspended": { + "type": "boolean" + }, + "last_schedule": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "next_schedule": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "schedule": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "deployment": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "paused": { + "type": "boolean" + }, + "replicas": { + "properties": { + "available": { + "type": "long" + }, + "desired": { + "type": "long" + }, + "unavailable": { + "type": "long" + }, + "updated": { + "type": "long" + } + } + } + } + }, + "event": { + "properties": { + "count": { + "type": "long" + }, + "involved_object": { + "properties": { + "api_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "message": { + "copy_to": [ + "message" + ], + "norms": false, + "type": "text" + }, + "metadata": { + "properties": { + "generate_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "resource_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "self_link": { + "ignore_above": 1024, + "type": "keyword" + }, + "timestamp": { + "properties": { + "created": { + "type": "date" + } + } + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "source": { + "properties": { + "component": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "timestamp": { + "properties": { + "first_occurrence": { + "type": "date" + }, + "last_occurrence": { + "type": "date" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "properties": { + "*": { + "type": "object" + }, + "addonmanager_kubernetes_io/mode": { + "type": "keyword" + }, + "app": { + "type": "keyword" + }, + "app_kubernetes_io/instance": { + "type": "keyword" + }, + "app_kubernetes_io/managed-by": { + "type": "keyword" + }, + "app_kubernetes_io/name": { + "type": "keyword" + }, + "app_kubernetes_io/version": { + "type": "keyword" + }, + "beta_kubernetes_io/arch": { + "type": "keyword" + }, + "beta_kubernetes_io/fluentd-ds-ready": { + "type": "keyword" + }, + "beta_kubernetes_io/instance-type": { + "type": "keyword" + }, + "beta_kubernetes_io/os": { + "type": "keyword" + }, + "chart": { + "type": "keyword" + }, + "cloud_google_com/gke-nodepool": { + "type": "keyword" + }, + "cloud_google_com/gke-os-distribution": { + "type": "keyword" + }, + "component": { + "type": "keyword" + }, + "controller-revision-hash": { + "type": "keyword" + }, + "controller-uid": { + "type": "keyword" + }, + "failure-domain_beta_kubernetes_io/region": { + "type": "keyword" + }, + "failure-domain_beta_kubernetes_io/zone": { + "type": "keyword" + }, + "helm_sh/chart": { + "type": "keyword" + }, + "heritage": { + "type": "keyword" + }, + "job-name": { + "type": "keyword" + }, + "k8s-app": { + "type": "keyword" + }, + "kubernetes_io/arch": { + "type": "keyword" + }, + "kubernetes_io/cluster-service": { + "type": "keyword" + }, + "kubernetes_io/hostname": { + "type": "keyword" + }, + "kubernetes_io/name": { + "type": "keyword" + }, + "kubernetes_io/os": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "pod-template-generation": { + "type": "keyword" + }, + "pod-template-hash": { + "type": "keyword" + }, + "release": { + "type": "keyword" + }, + "role": { + "type": "keyword" + }, + "service": { + "type": "keyword" + }, + "statefulset_kubernetes_io/pod-name": { + "type": "keyword" + }, + "tier": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "cpu": { + "properties": { + "allocatable": { + "properties": { + "cores": { + "type": "float" + } + } + }, + "capacity": { + "properties": { + "cores": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "core": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "nanocores": { + "type": "long" + } + } + } + } + }, + "fs": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "inodes": { + "properties": { + "count": { + "type": "long" + }, + "free": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "allocatable": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "majorpagefaults": { + "type": "long" + }, + "pagefaults": { + "type": "long" + }, + "rss": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "workingset": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network": { + "properties": { + "rx": { + "properties": { + "bytes": { + "type": "long" + }, + "errors": { + "type": "long" + } + } + }, + "tx": { + "properties": { + "bytes": { + "type": "long" + }, + "errors": { + "type": "long" + } + } + } + } + }, + "pod": { + "properties": { + "allocatable": { + "properties": { + "total": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "total": { + "type": "long" + } + } + } + } + }, + "runtime": { + "properties": { + "imagefs": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "start_time": { + "type": "date" + }, + "status": { + "properties": { + "ready": { + "ignore_above": 1024, + "type": "keyword" + }, + "unschedulable": { + "type": "boolean" + } + } + } + } + }, + "persistentvolume": { + "properties": { + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "phase": { + "ignore_above": 1024, + "type": "keyword" + }, + "storage_class": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "persistentvolumeclaim": { + "properties": { + "access_mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "phase": { + "ignore_above": 1024, + "type": "keyword" + }, + "request_storage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "storage_class": { + "ignore_above": 1024, + "type": "keyword" + }, + "volume_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "cpu": { + "properties": { + "usage": { + "properties": { + "limit": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "nanocores": { + "type": "long" + }, + "node": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + } + } + }, + "host_ip": { + "type": "ip" + }, + "ip": { + "type": "ip" + }, + "memory": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "major_page_faults": { + "type": "long" + }, + "page_faults": { + "type": "long" + }, + "rss": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + }, + "limit": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "node": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "working_set": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network": { + "properties": { + "rx": { + "properties": { + "bytes": { + "type": "long" + }, + "errors": { + "type": "long" + } + } + }, + "tx": { + "properties": { + "bytes": { + "type": "long" + }, + "errors": { + "type": "long" + } + } + } + } + }, + "start_time": { + "type": "date" + }, + "status": { + "properties": { + "phase": { + "ignore_above": 1024, + "type": "keyword" + }, + "ready": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheduled": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "proxy": { + "properties": { + "client": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "handler": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "http": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + }, + "duration": { + "properties": { + "us": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "double" + } + } + } + } + }, + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "response": { + "properties": { + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "process": { + "properties": { + "cpu": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "fds": { + "properties": { + "open": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "resident": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "virtual": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "started": { + "properties": { + "sec": { + "type": "double" + } + } + } + } + }, + "sync": { + "properties": { + "networkprogramming": { + "properties": { + "duration": { + "properties": { + "us": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "rules": { + "properties": { + "duration": { + "properties": { + "us": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + } + } + }, + "replicaset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "replicas": { + "properties": { + "available": { + "type": "long" + }, + "desired": { + "type": "long" + }, + "labeled": { + "type": "long" + }, + "observed": { + "type": "long" + }, + "ready": { + "type": "long" + } + } + } + } + }, + "resourcequota": { + "properties": { + "created": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "quota": { + "type": "double" + }, + "resource": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "scheduler": { + "properties": { + "client": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "handler": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "http": { + "properties": { + "request": { + "properties": { + "count": { + "type": "long" + }, + "duration": { + "properties": { + "us": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "double" + } + } + } + } + }, + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "response": { + "properties": { + "size": { + "properties": { + "bytes": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "leader": { + "properties": { + "is_master": { + "type": "boolean" + } + } + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "operation": { + "ignore_above": 1024, + "type": "keyword" + }, + "process": { + "properties": { + "cpu": { + "properties": { + "sec": { + "type": "double" + } + } + }, + "fds": { + "properties": { + "open": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "resident": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "virtual": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "started": { + "properties": { + "sec": { + "type": "double" + } + } + } + } + }, + "result": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheduling": { + "properties": { + "duration": { + "properties": { + "seconds": { + "properties": { + "count": { + "type": "long" + }, + "percentile": { + "properties": { + "*": { + "type": "object" + } + } + }, + "sum": { + "type": "double" + } + } + } + } + }, + "e2e": { + "properties": { + "duration": { + "properties": { + "us": { + "properties": { + "bucket": { + "properties": { + "*": { + "type": "object" + } + } + }, + "count": { + "type": "long" + }, + "sum": { + "type": "long" + } + } + } + } + } + } + }, + "pod": { + "properties": { + "attempts": { + "properties": { + "count": { + "type": "long" + } + } + }, + "preemption": { + "properties": { + "victims": { + "properties": { + "count": { + "type": "long" + } + } + } + } + } + } + } + } + } + } + }, + "service": { + "properties": { + "cluster_ip": { + "type": "ip" + }, + "created": { + "type": "date" + }, + "external_ip": { + "ignore_above": 1024, + "type": "keyword" + }, + "external_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress_hostname": { + "type": "ip" + }, + "ingress_ip": { + "ignore_above": 1024, + "type": "keyword" + }, + "load_balancer_ip": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "statefulset": { + "properties": { + "created": { + "type": "long" + }, + "generation": { + "properties": { + "desired": { + "type": "long" + }, + "observed": { + "type": "long" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "replicas": { + "properties": { + "desired": { + "type": "long" + }, + "observed": { + "type": "long" + } + } + } + } + }, + "storageclass": { + "properties": { + "created": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "provisioner": { + "ignore_above": 1024, + "type": "keyword" + }, + "reclaim_policy": { + "ignore_above": 1024, + "type": "keyword" + }, + "volume_binding_mode": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "system": { + "properties": { + "container": { + "ignore_above": 1024, + "type": "keyword" + }, + "cpu": { + "properties": { + "usage": { + "properties": { + "core": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "nanocores": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "majorpagefaults": { + "type": "long" + }, + "pagefaults": { + "type": "long" + }, + "rss": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "workingset": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "start_time": { + "type": "date" + } + } + }, + "volume": { + "properties": { + "fs": { + "properties": { + "available": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "capacity": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "inodes": { + "properties": { + "count": { + "type": "long" + }, + "free": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "kvm": { + "properties": { + "dommemstat": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "stat": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "type": "long" + } + } + } + } + } + } + }, + "labels": { + "type": "object" + }, + "log": { + "properties": { + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "file": { + "properties": { + "line": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "priority": { + "type": "long" + }, + "severity": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "logstash": { + "properties": { + "node": { + "properties": { + "jvm": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "stats": { + "properties": { + "events": { + "properties": { + "filtered": { + "type": "long" + }, + "in": { + "type": "long" + }, + "out": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "memcached": { + "properties": { + "stats": { + "properties": { + "bytes": { + "properties": { + "current": { + "type": "long" + }, + "limit": { + "type": "long" + } + } + }, + "cmd": { + "properties": { + "get": { + "type": "long" + }, + "set": { + "type": "long" + } + } + }, + "connections": { + "properties": { + "current": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "evictions": { + "type": "long" + }, + "get": { + "properties": { + "hits": { + "type": "long" + }, + "misses": { + "type": "long" + } + } + }, + "items": { + "properties": { + "current": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "pid": { + "type": "long" + }, + "read": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "threads": { + "type": "long" + }, + "uptime": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "written": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "metricset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "period": { + "type": "long" + } + } + }, + "mongodb": { + "properties": { + "collstats": { + "properties": { + "collection": { + "ignore_above": 1024, + "type": "keyword" + }, + "commands": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "db": { + "ignore_above": 1024, + "type": "keyword" + }, + "getmore": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "insert": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "lock": { + "properties": { + "read": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "write": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "queries": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "remove": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "total": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "update": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + } + } + }, + "dbstats": { + "properties": { + "avg_obj_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "collections": { + "type": "long" + }, + "data_file_version": { + "properties": { + "major": { + "type": "long" + }, + "minor": { + "type": "long" + } + } + }, + "data_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "db": { + "ignore_above": 1024, + "type": "keyword" + }, + "extent_free_list": { + "properties": { + "num": { + "type": "long" + }, + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "file_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "index_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "indexes": { + "type": "long" + }, + "ns_size_mb": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "num_extents": { + "type": "long" + }, + "objects": { + "type": "long" + }, + "storage_size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "metrics": { + "properties": { + "commands": { + "properties": { + "aggregate": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "build_info": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "coll_stats": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "connection_pool_stats": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "count": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "db_stats": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "distinct": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "find": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "get_cmd_line_opts": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "get_last_error": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "get_log": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "get_more": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "get_parameter": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "host_info": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "insert": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "is_master": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "is_self": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "last_collections": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "last_commands": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "list_databased": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "list_indexes": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "ping": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "profile": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "replset_get_rbid": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "replset_get_status": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "replset_heartbeat": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "replset_update_position": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "server_status": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "update": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "whatsmyuri": { + "properties": { + "failed": { + "type": "long" + }, + "total": { + "type": "long" + } + } + } + } + }, + "cursor": { + "properties": { + "open": { + "properties": { + "no_timeout": { + "type": "long" + }, + "pinned": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "timed_out": { + "type": "long" + } + } + }, + "document": { + "properties": { + "deleted": { + "type": "long" + }, + "inserted": { + "type": "long" + }, + "returned": { + "type": "long" + }, + "updated": { + "type": "long" + } + } + }, + "get_last_error": { + "properties": { + "write_timeouts": { + "type": "long" + }, + "write_wait": { + "properties": { + "count": { + "type": "long" + }, + "ms": { + "type": "long" + } + } + } + } + }, + "operation": { + "properties": { + "scan_and_order": { + "type": "long" + }, + "write_conflicts": { + "type": "long" + } + } + }, + "query_executor": { + "properties": { + "scanned_documents": { + "properties": { + "count": { + "type": "long" + } + } + }, + "scanned_indexes": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "replication": { + "properties": { + "apply": { + "properties": { + "attempts_to_become_secondary": { + "type": "long" + }, + "batches": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "ops": { + "type": "long" + } + } + }, + "buffer": { + "properties": { + "count": { + "type": "long" + }, + "max_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "executor": { + "properties": { + "counters": { + "properties": { + "cancels": { + "type": "long" + }, + "event_created": { + "type": "long" + }, + "event_wait": { + "type": "long" + }, + "scheduled": { + "properties": { + "dbwork": { + "type": "long" + }, + "exclusive": { + "type": "long" + }, + "failures": { + "type": "long" + }, + "netcmd": { + "type": "long" + }, + "work": { + "type": "long" + }, + "work_at": { + "type": "long" + } + } + }, + "waits": { + "type": "long" + } + } + }, + "event_waiters": { + "type": "long" + }, + "network_interface": { + "ignore_above": 1024, + "type": "keyword" + }, + "queues": { + "properties": { + "free": { + "type": "long" + }, + "in_progress": { + "properties": { + "dbwork": { + "type": "long" + }, + "exclusive": { + "type": "long" + }, + "network": { + "type": "long" + } + } + }, + "ready": { + "type": "long" + }, + "sleepers": { + "type": "long" + } + } + }, + "shutting_down": { + "type": "boolean" + }, + "unsignaled_events": { + "type": "long" + } + } + }, + "initial_sync": { + "properties": { + "completed": { + "type": "long" + }, + "failed_attempts": { + "type": "long" + }, + "failures": { + "type": "long" + } + } + }, + "network": { + "properties": { + "bytes": { + "type": "long" + }, + "getmores": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "ops": { + "type": "long" + }, + "reders_created": { + "type": "long" + } + } + }, + "preload": { + "properties": { + "docs": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "indexes": { + "properties": { + "count": { + "type": "long" + }, + "time": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "storage": { + "properties": { + "free_list": { + "properties": { + "search": { + "properties": { + "bucket_exhausted": { + "type": "long" + }, + "requests": { + "type": "long" + }, + "scanned": { + "type": "long" + } + } + } + } + } + } + }, + "ttl": { + "properties": { + "deleted_documents": { + "properties": { + "count": { + "type": "long" + } + } + }, + "passes": { + "properties": { + "count": { + "type": "long" + } + } + } + } + } + } + }, + "replstatus": { + "properties": { + "headroom": { + "properties": { + "max": { + "type": "long" + }, + "min": { + "type": "long" + } + } + }, + "lag": { + "properties": { + "max": { + "type": "long" + }, + "min": { + "type": "long" + } + } + }, + "members": { + "properties": { + "arbiter": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "down": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "primary": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "optime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "recovering": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rollback": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "secondary": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, + "optimes": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "startup2": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "unhealthy": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "unknown": { + "properties": { + "count": { + "type": "long" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "oplog": { + "properties": { + "first": { + "properties": { + "timestamp": { + "type": "long" + } + } + }, + "last": { + "properties": { + "timestamp": { + "type": "long" + } + } + }, + "size": { + "properties": { + "allocated": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "window": { + "type": "long" + } + } + }, + "optimes": { + "properties": { + "applied": { + "type": "long" + }, + "durable": { + "type": "long" + }, + "last_committed": { + "type": "long" + } + } + }, + "server_date": { + "type": "date" + }, + "set_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "status": { + "properties": { + "asserts": { + "properties": { + "msg": { + "type": "long" + }, + "regular": { + "type": "long" + }, + "rollovers": { + "type": "long" + }, + "user": { + "type": "long" + }, + "warning": { + "type": "long" + } + } + }, + "background_flushing": { + "properties": { + "average": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "flushes": { + "type": "long" + }, + "last": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "last_finished": { + "type": "date" + }, + "total": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "connections": { + "properties": { + "available": { + "type": "long" + }, + "current": { + "type": "long" + }, + "total_created": { + "type": "long" + } + } + }, + "extra_info": { + "properties": { + "heap_usage": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "page_faults": { + "type": "long" + } + } + }, + "global_lock": { + "properties": { + "active_clients": { + "properties": { + "readers": { + "type": "long" + }, + "total": { + "type": "long" + }, + "writers": { + "type": "long" + } + } + }, + "current_queue": { + "properties": { + "readers": { + "type": "long" + }, + "total": { + "type": "long" + }, + "writers": { + "type": "long" + } + } + }, + "total_time": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "journaling": { + "properties": { + "commits": { + "type": "long" + }, + "commits_in_write_lock": { + "type": "long" + }, + "compression": { + "type": "long" + }, + "early_commits": { + "type": "long" + }, + "journaled": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "times": { + "properties": { + "commits": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "commits_in_write_lock": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "dt": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "prep_log_buffer": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "remap_private_view": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "write_to_data_files": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "write_to_journal": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "write_to_data_files": { + "properties": { + "mb": { + "type": "long" + } + } + } + } + }, + "local_time": { + "type": "date" + }, + "locks": { + "properties": { + "collection": { + "properties": { + "acquire": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "deadlock": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "wait": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + }, + "us": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + } + } + }, + "database": { + "properties": { + "acquire": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "deadlock": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "wait": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + }, + "us": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + } + } + }, + "global": { + "properties": { + "acquire": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "deadlock": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "wait": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + }, + "us": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + } + } + }, + "meta_data": { + "properties": { + "acquire": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "deadlock": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "wait": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + }, + "us": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + } + } + }, + "oplog": { + "properties": { + "acquire": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "deadlock": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + }, + "wait": { + "properties": { + "count": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + }, + "us": { + "properties": { + "R": { + "type": "long" + }, + "W": { + "type": "long" + }, + "r": { + "type": "long" + }, + "w": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "memory": { + "properties": { + "bits": { + "type": "long" + }, + "mapped": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "mapped_with_journal": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "resident": { + "properties": { + "mb": { + "type": "long" + } + } + }, + "virtual": { + "properties": { + "mb": { + "type": "long" + } + } + } + } + }, + "network": { + "properties": { + "in": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "out": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "requests": { + "type": "long" + } + } + }, + "ops": { + "properties": { + "counters": { + "properties": { + "command": { + "type": "long" + }, + "delete": { + "type": "long" + }, + "getmore": { + "type": "long" + }, + "insert": { + "type": "long" + }, + "query": { + "type": "long" + }, + "update": { + "type": "long" + } + } + }, + "latencies": { + "properties": { + "commands": { + "properties": { + "count": { + "type": "long" + }, + "latency": { + "type": "long" + } + } + }, + "reads": { + "properties": { + "count": { + "type": "long" + }, + "latency": { + "type": "long" + } + } + }, + "writes": { + "properties": { + "count": { + "type": "long" + }, + "latency": { + "type": "long" + } + } + } + } + }, + "replicated": { + "properties": { + "command": { + "type": "long" + }, + "delete": { + "type": "long" + }, + "getmore": { + "type": "long" + }, + "insert": { + "type": "long" + }, + "query": { + "type": "long" + }, + "update": { + "type": "long" + } + } + } + } + }, + "process": { + "path": "process.name", + "type": "alias" + }, + "storage_engine": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "uptime": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "version": { + "path": "service.version", + "type": "alias" + }, + "wired_tiger": { + "properties": { + "cache": { + "properties": { + "dirty": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "maximum": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "pages": { + "properties": { + "evicted": { + "type": "long" + }, + "read": { + "type": "long" + }, + "write": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "concurrent_transactions": { + "properties": { + "read": { + "properties": { + "available": { + "type": "long" + }, + "out": { + "type": "long" + }, + "total_tickets": { + "type": "long" + } + } + }, + "write": { + "properties": { + "available": { + "type": "long" + }, + "out": { + "type": "long" + }, + "total_tickets": { + "type": "long" + } + } + } + } + }, + "log": { + "properties": { + "flushes": { + "type": "long" + }, + "max_file_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "scans": { + "type": "long" + }, + "size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "syncs": { + "type": "long" + }, + "write": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "writes": { + "type": "long" + } + } + } + } + }, + "write_backs_queued": { + "type": "boolean" + } + } + } + } + }, + "mssql": { + "properties": { + "database": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "performance": { + "properties": { + "active_temp_tables": { + "type": "long" + }, + "batch_requests_per_sec": { + "type": "long" + }, + "buffer": { + "properties": { + "cache_hit": { + "properties": { + "pct": { + "type": "double" + } + } + }, + "checkpoint_pages_per_sec": { + "type": "long" + }, + "database_pages": { + "type": "long" + }, + "page_life_expectancy": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "target_pages": { + "type": "long" + } + } + }, + "compilations_per_sec": { + "type": "long" + }, + "connections_reset_per_sec": { + "type": "long" + }, + "lock_waits_per_sec": { + "type": "long" + }, + "logins_per_sec": { + "type": "long" + }, + "logouts_per_sec": { + "type": "long" + }, + "page_splits_per_sec": { + "type": "long" + }, + "recompilations_per_sec": { + "type": "long" + }, + "transactions": { + "type": "long" + }, + "user_connections": { + "type": "long" + } + } + }, + "transaction_log": { + "properties": { + "space_usage": { + "properties": { + "since_last_backup": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "type": "float" + } + } + } + } + }, + "stats": { + "properties": { + "active_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "backup_time": { + "type": "date" + }, + "recovery_size": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "since_last_checkpoint": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total_size": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "munin": { + "properties": { + "metrics": { + "properties": { + "*": { + "type": "object" + } + } + }, + "plugin": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "mysql": { + "properties": { + "galera_status": { + "properties": { + "apply": { + "properties": { + "oooe": { + "type": "double" + }, + "oool": { + "type": "double" + }, + "window": { + "type": "double" + } + } + }, + "cert": { + "properties": { + "deps_distance": { + "type": "double" + }, + "index_size": { + "type": "long" + }, + "interval": { + "type": "double" + } + } + }, + "cluster": { + "properties": { + "conf_id": { + "type": "long" + }, + "size": { + "type": "long" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "commit": { + "properties": { + "oooe": { + "type": "double" + }, + "window": { + "type": "long" + } + } + }, + "connected": { + "ignore_above": 1024, + "type": "keyword" + }, + "evs": { + "properties": { + "evict": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "flow_ctl": { + "properties": { + "paused": { + "type": "double" + }, + "paused_ns": { + "type": "long" + }, + "recv": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "last_committed": { + "type": "long" + }, + "local": { + "properties": { + "bf_aborts": { + "type": "long" + }, + "cert_failures": { + "type": "long" + }, + "commits": { + "type": "long" + }, + "recv": { + "properties": { + "queue": { + "type": "long" + }, + "queue_avg": { + "type": "double" + }, + "queue_max": { + "type": "long" + }, + "queue_min": { + "type": "long" + } + } + }, + "replays": { + "type": "long" + }, + "send": { + "properties": { + "queue": { + "type": "long" + }, + "queue_avg": { + "type": "double" + }, + "queue_max": { + "type": "long" + }, + "queue_min": { + "type": "long" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ready": { + "ignore_above": 1024, + "type": "keyword" + }, + "received": { + "properties": { + "bytes": { + "type": "long" + }, + "count": { + "type": "long" + } + } + }, + "repl": { + "properties": { + "bytes": { + "type": "long" + }, + "count": { + "type": "long" + }, + "data_bytes": { + "type": "long" + }, + "keys": { + "type": "long" + }, + "keys_bytes": { + "type": "long" + }, + "other_bytes": { + "type": "long" + } + } + } + } + }, + "status": { + "properties": { + "aborted": { + "properties": { + "clients": { + "type": "long" + }, + "connects": { + "type": "long" + } + } + }, + "binlog": { + "properties": { + "cache": { + "properties": { + "disk_use": { + "type": "long" + }, + "use": { + "type": "long" + } + } + } + } + }, + "bytes": { + "properties": { + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "cache": { + "properties": { + "ssl": { + "properties": { + "hits": { + "type": "long" + }, + "misses": { + "type": "long" + }, + "size": { + "type": "long" + } + } + }, + "table": { + "properties": { + "open_cache": { + "properties": { + "hits": { + "type": "long" + }, + "misses": { + "type": "long" + }, + "overflows": { + "type": "long" + } + } + } + } + } + } + }, + "command": { + "properties": { + "delete": { + "type": "long" + }, + "insert": { + "type": "long" + }, + "select": { + "type": "long" + }, + "update": { + "type": "long" + } + } + }, + "connection": { + "properties": { + "errors": { + "properties": { + "accept": { + "type": "long" + }, + "internal": { + "type": "long" + }, + "max": { + "type": "long" + }, + "peer_address": { + "type": "long" + }, + "select": { + "type": "long" + }, + "tcpwrap": { + "type": "long" + } + } + } + } + }, + "connections": { + "type": "long" + }, + "created": { + "properties": { + "tmp": { + "properties": { + "disk_tables": { + "type": "long" + }, + "files": { + "type": "long" + }, + "tables": { + "type": "long" + } + } + } + } + }, + "delayed": { + "properties": { + "errors": { + "type": "long" + }, + "insert_threads": { + "type": "long" + }, + "writes": { + "type": "long" + } + } + }, + "flush_commands": { + "type": "long" + }, + "handler": { + "properties": { + "commit": { + "type": "long" + }, + "delete": { + "type": "long" + }, + "external_lock": { + "type": "long" + }, + "mrr_init": { + "type": "long" + }, + "prepare": { + "type": "long" + }, + "read": { + "properties": { + "first": { + "type": "long" + }, + "key": { + "type": "long" + }, + "last": { + "type": "long" + }, + "next": { + "type": "long" + }, + "prev": { + "type": "long" + }, + "rnd": { + "type": "long" + }, + "rnd_next": { + "type": "long" + } + } + }, + "rollback": { + "type": "long" + }, + "savepoint": { + "type": "long" + }, + "savepoint_rollback": { + "type": "long" + }, + "update": { + "type": "long" + }, + "write": { + "type": "long" + } + } + }, + "innodb": { + "properties": { + "buffer_pool": { + "properties": { + "bytes": { + "properties": { + "data": { + "type": "long" + }, + "dirty": { + "type": "long" + } + } + }, + "dump_status": { + "type": "long" + }, + "load_status": { + "type": "long" + }, + "pages": { + "properties": { + "data": { + "type": "long" + }, + "dirty": { + "type": "long" + }, + "flushed": { + "type": "long" + }, + "free": { + "type": "long" + }, + "latched": { + "type": "long" + }, + "misc": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "pool": { + "properties": { + "reads": { + "type": "long" + }, + "resize_status": { + "type": "long" + }, + "wait_free": { + "type": "long" + } + } + }, + "read": { + "properties": { + "ahead": { + "type": "long" + }, + "ahead_evicted": { + "type": "long" + }, + "ahead_rnd": { + "type": "long" + }, + "requests": { + "type": "long" + } + } + }, + "write_requests": { + "type": "long" + } + } + }, + "rows": { + "properties": { + "deleted": { + "type": "long" + }, + "inserted": { + "type": "long" + }, + "reads": { + "type": "long" + }, + "updated": { + "type": "long" + } + } + } + } + }, + "max_used_connections": { + "type": "long" + }, + "open": { + "properties": { + "files": { + "type": "long" + }, + "streams": { + "type": "long" + }, + "tables": { + "type": "long" + } + } + }, + "opened_tables": { + "type": "long" + }, + "queries": { + "type": "long" + }, + "questions": { + "type": "long" + }, + "threads": { + "properties": { + "cached": { + "type": "long" + }, + "connected": { + "type": "long" + }, + "created": { + "type": "long" + }, + "running": { + "type": "long" + } + } + } + } + } + } + }, + "nats": { + "properties": { + "connections": { + "properties": { + "total": { + "type": "long" + } + } + }, + "routes": { + "properties": { + "total": { + "type": "long" + } + } + }, + "server": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "time": { + "type": "date" + } + } + }, + "stats": { + "properties": { + "cores": { + "type": "long" + }, + "cpu": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "http": { + "properties": { + "req_stats": { + "properties": { + "uri": { + "properties": { + "connz": { + "type": "long" + }, + "root": { + "type": "long" + }, + "routez": { + "type": "long" + }, + "subsz": { + "type": "long" + }, + "varz": { + "type": "long" + } + } + } + } + } + } + }, + "in": { + "properties": { + "bytes": { + "type": "long" + }, + "messages": { + "type": "long" + } + } + }, + "mem": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "out": { + "properties": { + "bytes": { + "type": "long" + }, + "messages": { + "type": "long" + } + } + }, + "remotes": { + "type": "long" + }, + "slow_consumers": { + "type": "long" + }, + "total_connections": { + "type": "long" + }, + "uptime": { + "type": "long" + } + } + }, + "subscriptions": { + "properties": { + "cache": { + "properties": { + "fanout": { + "properties": { + "avg": { + "type": "double" + }, + "max": { + "type": "long" + } + } + }, + "hit_rate": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "size": { + "type": "long" + } + } + }, + "inserts": { + "type": "long" + }, + "matches": { + "type": "long" + }, + "removes": { + "type": "long" + }, + "total": { + "type": "long" + } + } + } + } + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "nginx": { + "properties": { + "stubstatus": { + "properties": { + "accepts": { + "type": "long" + }, + "active": { + "type": "long" + }, + "current": { + "type": "long" + }, + "dropped": { + "type": "long" + }, + "handled": { + "type": "long" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "reading": { + "type": "long" + }, + "requests": { + "type": "long" + }, + "waiting": { + "type": "long" + }, + "writing": { + "type": "long" + } + } + } + } + }, + "observer": { + "properties": { + "egress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "openmetrics": { + "properties": { + "labels": { + "properties": { + "*": { + "type": "object" + } + } + }, + "metrics": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "oracle": { + "properties": { + "performance": { + "properties": { + "buffer_pool": { + "ignore_above": 1024, + "type": "keyword" + }, + "cache": { + "properties": { + "buffer": { + "properties": { + "hit": { + "properties": { + "pct": { + "type": "double" + } + } + } + } + }, + "get": { + "properties": { + "consistent": { + "type": "long" + }, + "db_blocks": { + "type": "long" + } + } + }, + "physical_reads": { + "type": "long" + } + } + }, + "cursors": { + "properties": { + "avg": { + "type": "double" + }, + "cache_hit": { + "properties": { + "pct": { + "type": "double" + } + } + }, + "max": { + "type": "double" + }, + "opened": { + "properties": { + "current": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "parse": { + "properties": { + "real": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "session": { + "properties": { + "cache_hits": { + "type": "long" + } + } + }, + "total": { + "type": "double" + } + } + }, + "io_reloads": { + "type": "double" + }, + "lock_requests": { + "type": "long" + }, + "machine": { + "ignore_above": 1024, + "type": "keyword" + }, + "pin_requests": { + "type": "double" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tablespace": { + "properties": { + "data_file": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "online_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "properties": { + "bytes": { + "type": "long" + }, + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "space": { + "properties": { + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "package": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "checksum": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "install_scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "installed": { + "type": "date" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "php_fpm": { + "properties": { + "pool": { + "properties": { + "connections": { + "properties": { + "accepted": { + "type": "long" + }, + "listen_queue_len": { + "type": "long" + }, + "max_listen_queue": { + "type": "long" + }, + "queued": { + "type": "long" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "process_manager": { + "ignore_above": 1024, + "type": "keyword" + }, + "processes": { + "properties": { + "active": { + "type": "long" + }, + "idle": { + "type": "long" + }, + "max_active": { + "type": "long" + }, + "max_children_reached": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "slow_requests": { + "type": "long" + }, + "start_since": { + "type": "long" + }, + "start_time": { + "type": "date" + } + } + }, + "process": { + "properties": { + "last_request_cpu": { + "type": "long" + }, + "last_request_memory": { + "type": "long" + }, + "request_duration": { + "type": "long" + }, + "requests": { + "type": "long" + }, + "script": { + "ignore_above": 1024, + "type": "keyword" + }, + "start_since": { + "type": "long" + }, + "start_time": { + "type": "date" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "postgresql": { + "properties": { + "activity": { + "properties": { + "application_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "backend_start": { + "type": "date" + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + } + } + }, + "database": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "oid": { + "type": "long" + } + } + }, + "pid": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "query_start": { + "type": "date" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_change": { + "type": "date" + }, + "transaction_start": { + "type": "date" + }, + "user": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "waiting": { + "type": "boolean" + } + } + }, + "bgwriter": { + "properties": { + "buffers": { + "properties": { + "allocated": { + "type": "long" + }, + "backend": { + "type": "long" + }, + "backend_fsync": { + "type": "long" + }, + "checkpoints": { + "type": "long" + }, + "clean": { + "type": "long" + }, + "clean_full": { + "type": "long" + } + } + }, + "checkpoints": { + "properties": { + "requested": { + "type": "long" + }, + "scheduled": { + "type": "long" + }, + "times": { + "properties": { + "sync": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "write": { + "properties": { + "ms": { + "type": "float" + } + } + } + } + } + } + }, + "stats_reset": { + "type": "date" + } + } + }, + "database": { + "properties": { + "blocks": { + "properties": { + "hit": { + "type": "long" + }, + "read": { + "type": "long" + }, + "time": { + "properties": { + "read": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "write": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + } + } + }, + "conflicts": { + "type": "long" + }, + "deadlocks": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "number_of_backends": { + "type": "long" + }, + "oid": { + "type": "long" + }, + "rows": { + "properties": { + "deleted": { + "type": "long" + }, + "fetched": { + "type": "long" + }, + "inserted": { + "type": "long" + }, + "returned": { + "type": "long" + }, + "updated": { + "type": "long" + } + } + }, + "stats_reset": { + "type": "date" + }, + "temporary": { + "properties": { + "bytes": { + "type": "long" + }, + "files": { + "type": "long" + } + } + }, + "transactions": { + "properties": { + "commit": { + "type": "long" + }, + "rollback": { + "type": "long" + } + } + } + } + }, + "statement": { + "properties": { + "database": { + "properties": { + "oid": { + "type": "long" + } + } + }, + "query": { + "properties": { + "calls": { + "type": "long" + }, + "id": { + "type": "long" + }, + "memory": { + "properties": { + "local": { + "properties": { + "dirtied": { + "type": "long" + }, + "hit": { + "type": "long" + }, + "read": { + "type": "long" + }, + "written": { + "type": "long" + } + } + }, + "shared": { + "properties": { + "dirtied": { + "type": "long" + }, + "hit": { + "type": "long" + }, + "read": { + "type": "long" + }, + "written": { + "type": "long" + } + } + }, + "temp": { + "properties": { + "read": { + "type": "long" + }, + "written": { + "type": "long" + } + } + } + } + }, + "rows": { + "type": "long" + }, + "text": { + "ignore_above": 1024, + "type": "keyword" + }, + "time": { + "properties": { + "max": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "mean": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "min": { + "properties": { + "ms": { + "type": "float" + } + } + }, + "stddev": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "total": { + "properties": { + "ms": { + "type": "float" + } + } + } + } + } + } + }, + "user": { + "properties": { + "id": { + "type": "long" + } + } + } + } + } + } + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "parent": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "prometheus": { + "properties": { + "*": { + "properties": { + "counter": { + "type": "object" + }, + "histogram": { + "type": "object" + }, + "rate": { + "type": "object" + }, + "value": { + "type": "object" + } + } + }, + "labels": { + "properties": { + "*": { + "type": "object" + } + } + }, + "metrics": { + "properties": { + "*": { + "type": "object" + } + } + }, + "query": { + "properties": { + "*": { + "type": "object" + } + } + }, + "remote_write": { + "type": "object" + } + } + }, + "rabbitmq": { + "properties": { + "connection": { + "properties": { + "channel_max": { + "type": "long" + }, + "channels": { + "type": "long" + }, + "client_provided": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "frame_max": { + "type": "long" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "octet_count": { + "properties": { + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "packet_count": { + "properties": { + "pending": { + "type": "long" + }, + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "peer": { + "properties": { + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + } + } + }, + "port": { + "type": "long" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "exchange": { + "properties": { + "auto_delete": { + "type": "boolean" + }, + "durable": { + "type": "boolean" + }, + "internal": { + "type": "boolean" + }, + "messages": { + "properties": { + "publish_in": { + "properties": { + "count": { + "type": "long" + }, + "details": { + "properties": { + "rate": { + "type": "float" + } + } + } + } + }, + "publish_out": { + "properties": { + "count": { + "type": "long" + }, + "details": { + "properties": { + "rate": { + "type": "float" + } + } + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "node": { + "properties": { + "disk": { + "properties": { + "free": { + "properties": { + "bytes": { + "type": "long" + }, + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "fd": { + "properties": { + "total": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "gc": { + "properties": { + "num": { + "properties": { + "count": { + "type": "long" + } + } + }, + "reclaimed": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "io": { + "properties": { + "file_handle": { + "properties": { + "open_attempt": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "count": { + "type": "long" + } + } + } + } + }, + "read": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "bytes": { + "type": "long" + }, + "count": { + "type": "long" + } + } + }, + "reopen": { + "properties": { + "count": { + "type": "long" + } + } + }, + "seek": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "count": { + "type": "long" + } + } + }, + "sync": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "count": { + "type": "long" + } + } + }, + "write": { + "properties": { + "avg": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "bytes": { + "type": "long" + }, + "count": { + "type": "long" + } + } + } + } + }, + "mem": { + "properties": { + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "mnesia": { + "properties": { + "disk": { + "properties": { + "tx": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "ram": { + "properties": { + "tx": { + "properties": { + "count": { + "type": "long" + } + } + } + } + } + } + }, + "msg": { + "properties": { + "store_read": { + "properties": { + "count": { + "type": "long" + } + } + }, + "store_write": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "proc": { + "properties": { + "total": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "processors": { + "type": "long" + }, + "queue": { + "properties": { + "index": { + "properties": { + "journal_write": { + "properties": { + "count": { + "type": "long" + } + } + }, + "read": { + "properties": { + "count": { + "type": "long" + } + } + }, + "write": { + "properties": { + "count": { + "type": "long" + } + } + } + } + } + } + }, + "run": { + "properties": { + "queue": { + "type": "long" + } + } + }, + "socket": { + "properties": { + "total": { + "type": "long" + }, + "used": { + "type": "long" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + } + } + }, + "queue": { + "properties": { + "arguments": { + "properties": { + "max_priority": { + "type": "long" + } + } + }, + "auto_delete": { + "type": "boolean" + }, + "consumers": { + "properties": { + "count": { + "type": "long" + }, + "utilisation": { + "properties": { + "pct": { + "type": "long" + } + } + } + } + }, + "disk": { + "properties": { + "reads": { + "properties": { + "count": { + "type": "long" + } + } + }, + "writes": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "durable": { + "type": "boolean" + }, + "exclusive": { + "type": "boolean" + }, + "memory": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "messages": { + "properties": { + "persistent": { + "properties": { + "count": { + "type": "long" + } + } + }, + "ready": { + "properties": { + "count": { + "type": "long" + }, + "details": { + "properties": { + "rate": { + "type": "float" + } + } + } + } + }, + "total": { + "properties": { + "count": { + "type": "long" + }, + "details": { + "properties": { + "rate": { + "type": "float" + } + } + } + } + }, + "unacknowledged": { + "properties": { + "count": { + "type": "long" + }, + "details": { + "properties": { + "rate": { + "type": "float" + } + } + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vhost": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "redis": { + "properties": { + "info": { + "properties": { + "clients": { + "properties": { + "biggest_input_buf": { + "type": "long" + }, + "blocked": { + "type": "long" + }, + "connected": { + "type": "long" + }, + "longest_output_list": { + "type": "long" + }, + "max_input_buffer": { + "type": "long" + }, + "max_output_buffer": { + "type": "long" + } + } + }, + "cluster": { + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "cpu": { + "properties": { + "used": { + "properties": { + "sys": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "sys_children": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "user": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "user_children": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "memory": { + "properties": { + "active_defrag": { + "properties": { + "is_running": { + "type": "boolean" + } + } + }, + "allocator": { + "ignore_above": 1024, + "type": "keyword" + }, + "allocator_stats": { + "properties": { + "active": { + "type": "long" + }, + "allocated": { + "type": "long" + }, + "fragmentation": { + "properties": { + "bytes": { + "type": "long" + }, + "ratio": { + "type": "float" + } + } + }, + "resident": { + "type": "long" + }, + "rss": { + "properties": { + "bytes": { + "type": "long" + }, + "ratio": { + "type": "float" + } + } + } + } + }, + "fragmentation": { + "properties": { + "bytes": { + "type": "long" + }, + "ratio": { + "type": "float" + } + } + }, + "max": { + "properties": { + "policy": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "type": "long" + } + } + }, + "used": { + "properties": { + "dataset": { + "type": "long" + }, + "lua": { + "type": "long" + }, + "peak": { + "type": "long" + }, + "rss": { + "type": "long" + }, + "value": { + "type": "long" + } + } + } + } + }, + "persistence": { + "properties": { + "aof": { + "properties": { + "bgrewrite": { + "properties": { + "last_status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "buffer": { + "properties": { + "size": { + "type": "long" + } + } + }, + "copy_on_write": { + "properties": { + "last_size": { + "type": "long" + } + } + }, + "enabled": { + "type": "boolean" + }, + "fsync": { + "properties": { + "delayed": { + "type": "long" + }, + "pending": { + "type": "long" + } + } + }, + "rewrite": { + "properties": { + "buffer": { + "properties": { + "size": { + "type": "long" + } + } + }, + "current_time": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "in_progress": { + "type": "boolean" + }, + "last_time": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "scheduled": { + "type": "boolean" + } + } + }, + "size": { + "properties": { + "base": { + "type": "long" + }, + "current": { + "type": "long" + } + } + }, + "write": { + "properties": { + "last_status": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "loading": { + "type": "boolean" + }, + "rdb": { + "properties": { + "bgsave": { + "properties": { + "current_time": { + "properties": { + "sec": { + "type": "long" + } + } + }, + "in_progress": { + "type": "boolean" + }, + "last_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "last_time": { + "properties": { + "sec": { + "type": "long" + } + } + } + } + }, + "copy_on_write": { + "properties": { + "last_size": { + "type": "long" + } + } + }, + "last_save": { + "properties": { + "changes_since": { + "type": "long" + }, + "time": { + "type": "long" + } + } + } + } + } + } + }, + "replication": { + "properties": { + "backlog": { + "properties": { + "active": { + "type": "long" + }, + "first_byte_offset": { + "type": "long" + }, + "histlen": { + "type": "long" + }, + "size": { + "type": "long" + } + } + }, + "connected_slaves": { + "type": "long" + }, + "master": { + "properties": { + "last_io_seconds_ago": { + "type": "long" + }, + "link_status": { + "ignore_above": 1024, + "type": "keyword" + }, + "offset": { + "type": "long" + }, + "second_offset": { + "type": "long" + }, + "sync": { + "properties": { + "in_progress": { + "type": "boolean" + }, + "last_io_seconds_ago": { + "type": "long" + }, + "left_bytes": { + "type": "long" + } + } + } + } + }, + "master_offset": { + "type": "long" + }, + "role": { + "ignore_above": 1024, + "type": "keyword" + }, + "slave": { + "properties": { + "is_readonly": { + "type": "boolean" + }, + "offset": { + "type": "long" + }, + "priority": { + "type": "long" + } + } + } + } + }, + "server": { + "properties": { + "arch_bits": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "config_file": { + "ignore_above": 1024, + "type": "keyword" + }, + "gcc_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "git_dirty": { + "ignore_above": 1024, + "type": "keyword" + }, + "git_sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "hz": { + "type": "long" + }, + "lru_clock": { + "type": "long" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "multiplexing_api": { + "ignore_above": 1024, + "type": "keyword" + }, + "run_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "tcp_port": { + "type": "long" + }, + "uptime": { + "type": "long" + } + } + }, + "slowlog": { + "properties": { + "count": { + "type": "long" + } + } + }, + "stats": { + "properties": { + "active_defrag": { + "properties": { + "hits": { + "type": "long" + }, + "key_hits": { + "type": "long" + }, + "key_misses": { + "type": "long" + }, + "misses": { + "type": "long" + } + } + }, + "commands_processed": { + "type": "long" + }, + "connections": { + "properties": { + "received": { + "type": "long" + }, + "rejected": { + "type": "long" + } + } + }, + "instantaneous": { + "properties": { + "input_kbps": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ops_per_sec": { + "type": "long" + }, + "output_kbps": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "keys": { + "properties": { + "evicted": { + "type": "long" + }, + "expired": { + "type": "long" + } + } + }, + "keyspace": { + "properties": { + "hits": { + "type": "long" + }, + "misses": { + "type": "long" + } + } + }, + "latest_fork_usec": { + "type": "long" + }, + "migrate_cached_sockets": { + "type": "long" + }, + "net": { + "properties": { + "input": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "output": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "pubsub": { + "properties": { + "channels": { + "type": "long" + }, + "patterns": { + "type": "long" + } + } + }, + "slave_expires_tracked_keys": { + "type": "long" + }, + "sync": { + "properties": { + "full": { + "type": "long" + }, + "partial": { + "properties": { + "err": { + "type": "long" + }, + "ok": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "key": { + "properties": { + "expire": { + "properties": { + "ttl": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "length": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "keyspace": { + "properties": { + "avg_ttl": { + "type": "long" + }, + "expires": { + "type": "long" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "keys": { + "type": "long" + } + } + } + } + }, + "redisenterprise": { + "properties": { + "node": { + "type": "object" + }, + "proxy": { + "type": "object" + } + } + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "ruleset": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "sql": { + "properties": { + "driver": { + "ignore_above": 1024, + "type": "keyword" + }, + "metrics": { + "properties": { + "numeric": { + "properties": { + "*": { + "type": "object" + } + } + }, + "string": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "stan": { + "properties": { + "channels": { + "properties": { + "bytes": { + "type": "long" + }, + "depth": { + "type": "long" + }, + "first_seq": { + "type": "long" + }, + "last_seq": { + "type": "long" + }, + "messages": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cluster": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "stats": { + "properties": { + "bytes": { + "type": "long" + }, + "channels": { + "type": "long" + }, + "clients": { + "type": "long" + }, + "messages": { + "type": "long" + }, + "role": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "subscriptions": { + "type": "long" + } + } + }, + "subscriptions": { + "properties": { + "channel": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "last_sent": { + "type": "long" + }, + "offline": { + "type": "boolean" + }, + "pending": { + "type": "long" + }, + "queue": { + "ignore_above": 1024, + "type": "keyword" + }, + "stalled": { + "type": "boolean" + } + } + } + } + }, + "statsd": { + "properties": { + "*": { + "properties": { + "*": { + "type": "object" + }, + "count": { + "type": "object" + } + } + } + } + }, + "system": { + "properties": { + "core": { + "properties": { + "id": { + "type": "long" + }, + "idle": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "iowait": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "irq": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "nice": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "softirq": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "steal": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "system": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "user": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + } + } + }, + "cpu": { + "properties": { + "cores": { + "type": "long" + }, + "idle": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "iowait": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "irq": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "nice": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "softirq": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "steal": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "system": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + }, + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "user": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + } + } + } + } + }, + "diskio": { + "properties": { + "io": { + "properties": { + "time": { + "type": "long" + } + } + }, + "iostat": { + "properties": { + "await": { + "type": "float" + }, + "busy": { + "type": "float" + }, + "queue": { + "properties": { + "avg_size": { + "type": "float" + } + } + }, + "read": { + "properties": { + "await": { + "type": "float" + }, + "per_sec": { + "properties": { + "bytes": { + "type": "float" + } + } + }, + "request": { + "properties": { + "merges_per_sec": { + "type": "float" + }, + "per_sec": { + "type": "float" + } + } + } + } + }, + "request": { + "properties": { + "avg_size": { + "type": "float" + } + } + }, + "service_time": { + "type": "float" + }, + "write": { + "properties": { + "await": { + "type": "float" + }, + "per_sec": { + "properties": { + "bytes": { + "type": "float" + } + } + }, + "request": { + "properties": { + "merges_per_sec": { + "type": "float" + }, + "per_sec": { + "type": "float" + } + } + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "read": { + "properties": { + "bytes": { + "type": "long" + }, + "count": { + "type": "long" + }, + "time": { + "type": "long" + } + } + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "write": { + "properties": { + "bytes": { + "type": "long" + }, + "count": { + "type": "long" + }, + "time": { + "type": "long" + } + } + } + } + }, + "entropy": { + "properties": { + "available_bits": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "filesystem": { + "properties": { + "available": { + "type": "long" + }, + "device_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "files": { + "type": "long" + }, + "free": { + "type": "long" + }, + "free_files": { + "type": "long" + }, + "mount_point": { + "ignore_above": 1024, + "type": "keyword" + }, + "total": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "fsstat": { + "properties": { + "count": { + "type": "long" + }, + "total_files": { + "type": "long" + }, + "total_size": { + "properties": { + "free": { + "type": "long" + }, + "total": { + "type": "long" + }, + "used": { + "type": "long" + } + } + } + } + }, + "load": { + "properties": { + "1": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "15": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "5": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "cores": { + "type": "long" + }, + "norm": { + "properties": { + "1": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "15": { + "scaling_factor": 100, + "type": "scaled_float" + }, + "5": { + "scaling_factor": 100, + "type": "scaled_float" + } + } + } + } + }, + "memory": { + "properties": { + "actual": { + "properties": { + "free": { + "type": "long" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "free": { + "type": "long" + }, + "hugepages": { + "properties": { + "default_size": { + "type": "long" + }, + "free": { + "type": "long" + }, + "reserved": { + "type": "long" + }, + "surplus": { + "type": "long" + }, + "swap": { + "properties": { + "out": { + "properties": { + "fallback": { + "type": "long" + }, + "pages": { + "type": "long" + } + } + } + } + }, + "total": { + "type": "long" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "type": "long" + } + } + } + } + }, + "page_stats": { + "properties": { + "direct_efficiency": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "kswapd_efficiency": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pgfree": { + "properties": { + "pages": { + "type": "long" + } + } + }, + "pgscan_direct": { + "properties": { + "pages": { + "type": "long" + } + } + }, + "pgscan_kswapd": { + "properties": { + "pages": { + "type": "long" + } + } + }, + "pgsteal_direct": { + "properties": { + "pages": { + "type": "long" + } + } + }, + "pgsteal_kswapd": { + "properties": { + "pages": { + "type": "long" + } + } + } + } + }, + "swap": { + "properties": { + "free": { + "type": "long" + }, + "in": { + "properties": { + "pages": { + "type": "long" + } + } + }, + "out": { + "properties": { + "pages": { + "type": "long" + } + } + }, + "readahead": { + "properties": { + "cached": { + "type": "long" + }, + "pages": { + "type": "long" + } + } + }, + "total": { + "type": "long" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "total": { + "type": "long" + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + } + } + }, + "network": { + "properties": { + "in": { + "properties": { + "bytes": { + "type": "long" + }, + "dropped": { + "type": "long" + }, + "errors": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "out": { + "properties": { + "bytes": { + "type": "long" + }, + "dropped": { + "type": "long" + }, + "errors": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, + "network_summary": { + "properties": { + "icmp": { + "properties": { + "*": { + "type": "object" + } + } + }, + "ip": { + "properties": { + "*": { + "type": "object" + } + } + }, + "tcp": { + "properties": { + "*": { + "type": "object" + } + } + }, + "udp": { + "properties": { + "*": { + "type": "object" + } + } + }, + "udp_lite": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "process": { + "properties": { + "cgroup": { + "properties": { + "blkio": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "total": { + "properties": { + "bytes": { + "type": "long" + }, + "ios": { + "type": "long" + } + } + } + } + }, + "cpu": { + "properties": { + "cfs": { + "properties": { + "period": { + "properties": { + "us": { + "type": "long" + } + } + }, + "quota": { + "properties": { + "us": { + "type": "long" + } + } + }, + "shares": { + "type": "long" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "rt": { + "properties": { + "period": { + "properties": { + "us": { + "type": "long" + } + } + }, + "runtime": { + "properties": { + "us": { + "type": "long" + } + } + } + } + }, + "stats": { + "properties": { + "periods": { + "type": "long" + }, + "throttled": { + "properties": { + "ns": { + "type": "long" + }, + "periods": { + "type": "long" + } + } + } + } + } + } + }, + "cpuacct": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "percpu": { + "properties": { + "1": { + "type": "long" + }, + "2": { + "type": "long" + }, + "3": { + "type": "long" + }, + "4": { + "type": "long" + } + } + }, + "stats": { + "properties": { + "system": { + "properties": { + "ns": { + "type": "long" + } + } + }, + "user": { + "properties": { + "ns": { + "type": "long" + } + } + } + } + }, + "total": { + "properties": { + "ns": { + "type": "long" + } + } + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "memory": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "kmem": { + "properties": { + "failures": { + "type": "long" + }, + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "kmem_tcp": { + "properties": { + "failures": { + "type": "long" + }, + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "mem": { + "properties": { + "failures": { + "type": "long" + }, + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "memsw": { + "properties": { + "failures": { + "type": "long" + }, + "limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "usage": { + "properties": { + "bytes": { + "type": "long" + }, + "max": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "stats": { + "properties": { + "active_anon": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "active_file": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "cache": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "hierarchical_memory_limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "hierarchical_memsw_limit": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "inactive_anon": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "inactive_file": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "major_page_faults": { + "type": "long" + }, + "mapped_file": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "page_faults": { + "type": "long" + }, + "pages_in": { + "type": "long" + }, + "pages_out": { + "type": "long" + }, + "rss": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "rss_huge": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "swap": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "unevictable": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "cmdline": { + "ignore_above": 2048, + "type": "keyword" + }, + "cpu": { + "properties": { + "start_time": { + "type": "date" + }, + "system": { + "properties": { + "ticks": { + "type": "long" + } + } + }, + "total": { + "properties": { + "norm": { + "properties": { + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + }, + "ticks": { + "type": "long" + }, + "value": { + "type": "long" + } + } + }, + "user": { + "properties": { + "ticks": { + "type": "long" + } + } + } + } + }, + "env": { + "type": "object" + }, + "fd": { + "properties": { + "limit": { + "properties": { + "hard": { + "type": "long" + }, + "soft": { + "type": "long" + } + } + }, + "open": { + "type": "long" + } + } + }, + "memory": { + "properties": { + "rss": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "scaling_factor": 1000, + "type": "scaled_float" + } + } + }, + "share": { + "type": "long" + }, + "size": { + "type": "long" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "summary": { + "properties": { + "dead": { + "type": "long" + }, + "idle": { + "type": "long" + }, + "running": { + "type": "long" + }, + "sleeping": { + "type": "long" + }, + "stopped": { + "type": "long" + }, + "total": { + "type": "long" + }, + "unknown": { + "type": "long" + }, + "zombie": { + "type": "long" + } + } + } + } + }, + "raid": { + "properties": { + "blocks": { + "properties": { + "synced": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "disks": { + "properties": { + "active": { + "type": "long" + }, + "failed": { + "type": "long" + }, + "spare": { + "type": "long" + }, + "states": { + "properties": { + "*": { + "type": "object" + } + } + }, + "total": { + "type": "long" + } + } + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "sync_action": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "service": { + "properties": { + "exec_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "load_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "resources": { + "properties": { + "cpu": { + "properties": { + "usage": { + "properties": { + "ns": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "usage": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "network": { + "properties": { + "in": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + }, + "out": { + "properties": { + "bytes": { + "type": "long" + }, + "packets": { + "type": "long" + } + } + } + } + }, + "tasks": { + "properties": { + "count": { + "type": "long" + } + } + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_since": { + "type": "date" + }, + "sub_state": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "socket": { + "properties": { + "local": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "process": { + "properties": { + "cmdline": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "remote": { + "properties": { + "etld_plus_one": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "host_error": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "summary": { + "properties": { + "all": { + "properties": { + "count": { + "type": "long" + }, + "listening": { + "type": "long" + } + } + }, + "tcp": { + "properties": { + "all": { + "properties": { + "close_wait": { + "type": "long" + }, + "closing": { + "type": "long" + }, + "count": { + "type": "long" + }, + "established": { + "type": "long" + }, + "fin_wait1": { + "type": "long" + }, + "fin_wait2": { + "type": "long" + }, + "last_ack": { + "type": "long" + }, + "listening": { + "type": "long" + }, + "orphan": { + "type": "long" + }, + "syn_recv": { + "type": "long" + }, + "syn_sent": { + "type": "long" + }, + "time_wait": { + "type": "long" + } + } + }, + "memory": { + "type": "long" + } + } + }, + "udp": { + "properties": { + "all": { + "properties": { + "count": { + "type": "long" + } + } + }, + "memory": { + "type": "long" + } + } + } + } + } + } + }, + "uptime": { + "properties": { + "duration": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "users": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "leader": { + "type": "long" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "remote": { + "type": "boolean" + }, + "remote_host": { + "ignore_above": 1024, + "type": "keyword" + }, + "scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "seat": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "systemd": { + "properties": { + "fragment_path": { + "ignore_above": 1024, + "type": "keyword" + }, + "unit": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threat": { + "properties": { + "framework": { + "ignore_above": 1024, + "type": "keyword" + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "timeseries": { + "properties": { + "instance": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3s": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tomcat": { + "properties": { + "cache": { + "properties": { + "hit": { + "properties": { + "total": { + "type": "long" + } + } + }, + "lookup": { + "properties": { + "total": { + "type": "long" + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "properties": { + "max": { + "properties": { + "kb": { + "type": "long" + } + } + }, + "total": { + "properties": { + "kb": { + "type": "long" + } + } + } + } + }, + "ttl": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "heap": { + "properties": { + "usage": { + "properties": { + "committed": { + "type": "long" + }, + "init": { + "type": "long" + }, + "max": { + "type": "long" + }, + "used": { + "type": "long" + } + } + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "other": { + "properties": { + "usage": { + "properties": { + "committed": { + "type": "long" + }, + "init": { + "type": "long" + }, + "max": { + "type": "long" + }, + "used": { + "type": "long" + } + } + } + } + } + } + }, + "requests": { + "properties": { + "bytes": { + "properties": { + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "errors": { + "properties": { + "total": { + "type": "long" + } + } + }, + "mbean": { + "ignore_above": 1024, + "type": "keyword" + }, + "processing": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "total": { + "type": "long" + } + } + }, + "threading": { + "properties": { + "busy": { + "type": "long" + }, + "cpu": { + "properties": { + "time": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + }, + "current": { + "type": "long" + }, + "keep_alive": { + "properties": { + "timeout": { + "properties": { + "ms": { + "type": "long" + } + } + }, + "total": { + "type": "long" + } + } + }, + "max": { + "type": "long" + }, + "peak": { + "type": "long" + }, + "started": { + "properties": { + "total": { + "type": "long" + } + } + }, + "total": { + "type": "long" + }, + "user": { + "properties": { + "time": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + } + } + } + } + }, + "tracing": { + "properties": { + "trace": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "transaction": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "traefik": { + "properties": { + "health": { + "properties": { + "response": { + "properties": { + "avg_time": { + "properties": { + "us": { + "type": "long" + } + } + }, + "count": { + "type": "long" + }, + "status_codes": { + "properties": { + "*": { + "type": "object" + } + } + } + } + }, + "uptime": { + "properties": { + "sec": { + "type": "long" + } + } + } + } + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "uwsgi": { + "properties": { + "status": { + "properties": { + "core": { + "properties": { + "id": { + "type": "long" + }, + "read_errors": { + "type": "long" + }, + "requests": { + "properties": { + "offloaded": { + "type": "long" + }, + "routed": { + "type": "long" + }, + "static": { + "type": "long" + }, + "total": { + "type": "long" + } + } + }, + "worker_pid": { + "type": "long" + }, + "write_errors": { + "type": "long" + } + } + }, + "total": { + "properties": { + "exceptions": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "read_errors": { + "type": "long" + }, + "requests": { + "type": "long" + }, + "write_errors": { + "type": "long" + } + } + }, + "worker": { + "properties": { + "accepting": { + "type": "long" + }, + "avg_rt": { + "type": "long" + }, + "delta_requests": { + "type": "long" + }, + "exceptions": { + "type": "long" + }, + "harakiri_count": { + "type": "long" + }, + "id": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "requests": { + "type": "long" + }, + "respawn_count": { + "type": "long" + }, + "rss": { + "ignore_above": 1024, + "type": "keyword" + }, + "running_time": { + "type": "long" + }, + "signal_queue": { + "type": "long" + }, + "signals": { + "type": "long" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "tx": { + "type": "long" + }, + "vsz": { + "type": "long" + } + } + } + } + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vsphere": { + "properties": { + "datastore": { + "properties": { + "capacity": { + "properties": { + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + }, + "pct": { + "type": "long" + } + } + } + } + }, + "fstype": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "cpu": { + "properties": { + "free": { + "properties": { + "mhz": { + "type": "long" + } + } + }, + "total": { + "properties": { + "mhz": { + "type": "long" + } + } + }, + "used": { + "properties": { + "mhz": { + "type": "long" + } + } + } + } + }, + "memory": { + "properties": { + "free": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "total": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "used": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network_names": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "virtualmachine": { + "properties": { + "cpu": { + "properties": { + "used": { + "properties": { + "mhz": { + "type": "long" + } + } + } + } + }, + "custom_fields": { + "type": "object" + }, + "host": { + "properties": { + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "memory": { + "properties": { + "free": { + "properties": { + "guest": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "total": { + "properties": { + "guest": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + }, + "used": { + "properties": { + "guest": { + "properties": { + "bytes": { + "type": "long" + } + } + }, + "host": { + "properties": { + "bytes": { + "type": "long" + } + } + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "network_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "vulnerability": { + "properties": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "enumeration": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "report_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner": { + "properties": { + "vendor": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "score": { + "properties": { + "base": { + "type": "float" + }, + "environmental": { + "type": "float" + }, + "temporal": { + "type": "float" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "windows": { + "properties": { + "service": { + "properties": { + "display_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pid": { + "type": "long" + }, + "start_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "start_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "properties": { + "ms": { + "type": "long" + } + } + } + } + } + } + }, + "zookeeper": { + "properties": { + "connection": { + "properties": { + "interest_ops": { + "type": "long" + }, + "queued": { + "type": "long" + }, + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "mntr": { + "properties": { + "approximate_data_size": { + "type": "long" + }, + "ephemerals_count": { + "type": "long" + }, + "followers": { + "type": "long" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "latency": { + "properties": { + "avg": { + "type": "long" + }, + "max": { + "type": "long" + }, + "min": { + "type": "long" + } + } + }, + "max_file_descriptor_count": { + "type": "long" + }, + "num_alive_connections": { + "type": "long" + }, + "open_file_descriptor_count": { + "type": "long" + }, + "outstanding_requests": { + "type": "long" + }, + "packets": { + "properties": { + "received": { + "type": "long" + }, + "sent": { + "type": "long" + } + } + }, + "pending_syncs": { + "type": "long" + }, + "server_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "synced_followers": { + "type": "long" + }, + "version": { + "path": "service.version", + "type": "alias" + }, + "watch_count": { + "type": "long" + }, + "znode_count": { + "type": "long" + } + } + }, + "server": { + "properties": { + "connections": { + "type": "long" + }, + "count": { + "type": "long" + }, + "epoch": { + "type": "long" + }, + "latency": { + "properties": { + "avg": { + "type": "long" + }, + "max": { + "type": "long" + }, + "min": { + "type": "long" + } + } + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "node_count": { + "type": "long" + }, + "outstanding": { + "type": "long" + }, + "received": { + "type": "long" + }, + "sent": { + "type": "long" + }, + "version_date": { + "type": "date" + }, + "zxid": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "settings": { + "index": { + "mapping": { + "total_fields": { + "limit": "10000" + } + }, + "number_of_replicas": "1", + "number_of_shards": "1" + } + } + } +} \ No newline at end of file diff --git a/x-pack/test/functional/es_archives/ml/module_nginx_data_stream/data.json.gz b/x-pack/test/functional/es_archives/ml/module_nginx_data_stream/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..010e00dfd1d8984d4536941eb429b0ffc4d8fdb5 GIT binary patch literal 67488 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 diff --git a/x-pack/test/functional/es_archives/ml/module_siem_winlogbeat/mappings.json b/x-pack/test/functional/es_archives/ml/module_siem_winlogbeat/mappings.json index e931063040815..3eeda43fbebbe 100644 --- a/x-pack/test/functional/es_archives/ml/module_siem_winlogbeat/mappings.json +++ b/x-pack/test/functional/es_archives/ml/module_siem_winlogbeat/mappings.json @@ -5,6 +5,137 @@ }, "index": "ft_module_siem_winlogbeat", "mappings": { + "_meta": { + "beat": "winlogbeat", + "version": "7.7.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "labels.*" + } + }, + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "dns.answers": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "dns.answers.*" + } + }, + { + "log.syslog": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "log.syslog.*" + } + }, + { + "network.inner": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "network.inner.*" + } + }, + { + "observer.egress": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "observer.egress.*" + } + }, + { + "observer.ingress": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "observer.ingress.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "kubernetes.labels.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.labels.*" + } + }, + { + "kubernetes.annotations.*": { + "mapping": { + "type": "keyword" + }, + "path_match": "kubernetes.annotations.*" + } + }, + { + "winlog.event_data": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "winlog.event_data.*" + } + }, + { + "winlog.user_data": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "winlog.user_data.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], "properties": { "@timestamp": { "type": "date" @@ -37,12 +168,54 @@ } } }, - "destination": { + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "client": { "properties": { "address": { "ignore_above": 1024, "type": "keyword" }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, "bytes": { "type": "long" }, @@ -92,28 +265,56 @@ "ignore_above": 1024, "type": "keyword" }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, "packets": { "type": "long" }, - "path": { + "port": { + "type": "long" + }, + "registered_domain": { "ignore_above": 1024, "type": "keyword" }, - "port": { - "type": "long" + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" }, "user": { "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, "email": { "ignore_above": 1024, "type": "keyword" }, "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, "ignore_above": 1024, "type": "keyword" }, "group": { "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, "id": { "ignore_above": 1024, "type": "keyword" @@ -133,6 +334,12 @@ "type": "keyword" }, "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, "ignore_above": 1024, "type": "keyword" } @@ -140,90 +347,151 @@ } } }, - "event": { + "cloud": { "properties": { - "action": { - "ignore_above": 1024, - "type": "keyword" + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "category": { + "availability_zone": { "ignore_above": 1024, "type": "keyword" }, - "code": { - "type": "long" - }, - "created": { - "type": "date" - }, - "dataset": { - "ignore_above": 1024, - "type": "keyword" + "image": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "duration": { - "type": "long" + "instance": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "end": { - "type": "date" + "machine": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "hash": { - "ignore_above": 1024, - "type": "keyword" + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "id": { + "provider": { "ignore_above": 1024, "type": "keyword" }, - "kind": { + "region": { "ignore_above": 1024, "type": "keyword" + } + } + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" }, - "module": { + "status": { "ignore_above": 1024, "type": "keyword" }, - "origin": { + "subject_name": { "ignore_above": 1024, "type": "keyword" }, - "original": { - "ignore_above": 1024, - "type": "keyword" + "trusted": { + "type": "boolean" }, - "outcome": { + "valid": { + "type": "boolean" + } + } + }, + "container": { + "properties": { + "id": { "ignore_above": 1024, "type": "keyword" }, - "risk_score": { - "type": "float" - }, - "risk_score_norm": { - "type": "float" - }, - "severity": { - "type": "long" + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } }, - "start": { - "type": "date" + "labels": { + "type": "object" }, - "timezone": { + "name": { "ignore_above": 1024, "type": "keyword" }, - "type": { + "runtime": { "ignore_above": 1024, "type": "keyword" } } }, - "host": { + "destination": { "properties": { - "architecture": { + "address": { "ignore_above": 1024, "type": "keyword" }, - "containerized": { - "type": "boolean" + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" }, "geo": { "properties": { @@ -260,540 +528,3561 @@ } } }, - "hostname": { - "ignore_above": 1024, - "type": "keyword" + "ip": { + "type": "ip" }, - "id": { + "mac": { "ignore_above": 1024, "type": "keyword" }, - "ip": { - "type": "ip" + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } }, - "mac": { + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { "ignore_above": 1024, "type": "keyword" }, - "name": { + "top_level_domain": { "ignore_above": 1024, "type": "keyword" }, - "os": { + "user": { "properties": { - "build": { + "domain": { "ignore_above": 1024, "type": "keyword" }, - "codename": { + "email": { "ignore_above": 1024, "type": "keyword" }, - "family": { + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, "ignore_above": 1024, "type": "keyword" }, - "full": { + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { "ignore_above": 1024, "type": "keyword" }, - "kernel": { + "id": { "ignore_above": 1024, "type": "keyword" }, "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, "ignore_above": 1024, "type": "keyword" + } + } + } + } + }, + "dll": { + "properties": { + "code_signature": { + "properties": { + "exists": { + "type": "boolean" }, - "platform": { + "status": { "ignore_above": 1024, "type": "keyword" }, - "version": { + "subject_name": { "ignore_above": 1024, "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" } } }, - "type": { - "ignore_above": 1024, - "type": "keyword" - }, - "user": { + "hash": { "properties": { - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "full_name": { + "md5": { "ignore_above": 1024, "type": "keyword" }, - "group": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "hash": { + "sha1": { "ignore_above": 1024, "type": "keyword" }, - "id": { + "sha256": { "ignore_above": 1024, "type": "keyword" }, - "name": { + "sha512": { "ignore_above": 1024, "type": "keyword" } } - } - } - }, - "process": { - "properties": { - "args": { - "ignore_above": 1024, - "type": "keyword" }, - "entity_id": { + "name": { "ignore_above": 1024, "type": "keyword" }, - "executable": { + "path": { "ignore_above": 1024, "type": "keyword" }, - "hash": { + "pe": { "properties": { - "blake2b_256": { + "company": { "ignore_above": 1024, "type": "keyword" }, - "blake2b_384": { + "description": { "ignore_above": 1024, "type": "keyword" }, - "blake2b_512": { + "file_version": { "ignore_above": 1024, "type": "keyword" }, - "md5": { + "original_file_name": { "ignore_above": 1024, "type": "keyword" }, - "sha1": { + "product": { "ignore_above": 1024, "type": "keyword" - }, - "sha224": { + } + } + } + } + }, + "dns": { + "properties": { + "answers": { + "properties": { + "class": { "ignore_above": 1024, "type": "keyword" }, - "sha256": { + "data": { "ignore_above": 1024, "type": "keyword" }, - "sha384": { + "name": { "ignore_above": 1024, "type": "keyword" }, - "sha3_224": { - "ignore_above": 1024, - "type": "keyword" + "ttl": { + "type": "long" }, - "sha3_256": { + "type": { "ignore_above": 1024, "type": "keyword" - }, - "sha3_384": { + } + } + }, + "header_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "question": { + "properties": { + "class": { "ignore_above": 1024, "type": "keyword" }, - "sha3_512": { + "name": { "ignore_above": 1024, "type": "keyword" }, - "sha512": { + "registered_domain": { "ignore_above": 1024, "type": "keyword" }, - "sha512_224": { + "subdomain": { "ignore_above": 1024, "type": "keyword" }, - "sha512_256": { + "top_level_domain": { "ignore_above": 1024, "type": "keyword" }, - "xxh64": { + "type": { "ignore_above": 1024, "type": "keyword" } } }, - "name": { + "resolved_ip": { + "type": "ip" + }, + "response_code": { "ignore_above": 1024, "type": "keyword" }, - "parent": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "docker": { + "properties": { + "container": { "properties": { - "name": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" + "labels": { + "type": "object" } } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" }, - "pid": { - "type": "long" - }, - "ppid": { - "type": "long" + "id": { + "ignore_above": 1024, + "type": "keyword" }, - "start": { - "type": "date" + "message": { + "norms": false, + "type": "text" }, - "thread": { - "properties": { - "id": { - "type": "long" + "stack_trace": { + "fields": { + "text": { + "norms": false, + "type": "text" } - } - }, - "title": { + }, "ignore_above": 1024, "type": "keyword" }, - "working_directory": { + "type": { "ignore_above": 1024, "type": "keyword" } } }, - "source": { + "event": { "properties": { - "address": { + "action": { "ignore_above": 1024, "type": "keyword" }, - "bytes": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { "type": "long" }, - "domain": { + "end": { + "type": "date" + }, + "hash": { "ignore_above": 1024, "type": "keyword" }, - "geo": { - "properties": { - "city_name": { - "ignore_above": 1024, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "ignore_above": 1024, + "type": "keyword" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "properties": { + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "build": { + "ignore_above": 1024, + "type": "keyword" + }, + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "jolokia": { + "properties": { + "agent": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "secured": { + "type": "boolean" + }, + "server": { + "properties": { + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kubernetes": { + "properties": { + "annotations": { + "properties": { + "*": { + "type": "object" + } + } + }, + "container": { + "properties": { + "image": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "deployment": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "properties": { + "*": { + "type": "object" + } + } + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "replicaset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "statefulset": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "type": "object" + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "ignore_above": 1024, + "type": "keyword" + }, + "origin": { + "properties": { + "file": { + "properties": { + "line": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "priority": { + "type": "long" + }, + "severity": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "observer": { + "properties": { + "egress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "package": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "checksum": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "install_scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "installed": { + "type": "date" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "parent": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pe": { + "properties": { + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "ruleset": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "sysmon": { + "properties": { + "dns": { + "properties": { + "status": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threat": { + "properties": { + "framework": { + "ignore_above": 1024, + "type": "keyword" + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "timeseries": { + "properties": { + "instance": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "ignore_above": 1024, + "type": "keyword" + }, + "ja3s": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "subject": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tracing": { + "properties": { + "trace": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "transaction": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vulnerability": { + "properties": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "enumeration": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "report_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner": { + "properties": { + "vendor": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "score": { + "properties": { + "base": { + "type": "float" + }, + "environmental": { + "type": "float" + }, + "temporal": { + "type": "float" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "winlog": { + "properties": { + "activity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "api": { + "ignore_above": 1024, + "type": "keyword" + }, + "channel": { + "ignore_above": 1024, + "type": "keyword" + }, + "computer_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "event_data": { + "properties": { + "AccessList": { + "type": "keyword" + }, + "AccessMask": { + "type": "keyword" + }, + "AccountName": { + "type": "keyword" + }, + "AdvancedOptions": { + "type": "keyword" + }, + "AlgorithmName": { + "type": "keyword" + }, + "AppPoolID": { + "type": "keyword" + }, + "AuditPolicyChanges": { + "type": "keyword" + }, + "AuditPolicyChangesDescription": { + "type": "keyword" + }, + "AuthenticationPackageName": { + "ignore_above": 1024, + "type": "keyword" + }, + "Binary": { + "ignore_above": 1024, + "type": "keyword" + }, + "BitlockerUserInputTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "BootMenuPolicy": { + "type": "keyword" + }, + "BootMode": { + "ignore_above": 1024, + "type": "keyword" + }, + "BootStatusPolicy": { + "type": "keyword" + }, + "BootType": { + "ignore_above": 1024, + "type": "keyword" + }, + "BuildVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "CallerProcessId": { + "type": "keyword" + }, + "CallerProcessName": { + "type": "keyword" + }, + "Category": { + "type": "keyword" + }, + "CategoryId": { + "type": "keyword" + }, + "ClientCreationTime": { + "type": "keyword" + }, + "ClientProcessId": { + "type": "keyword" + }, + "Company": { + "ignore_above": 1024, + "type": "keyword" + }, + "Config": { + "type": "keyword" + }, + "ConfigAccessPolicy": { + "type": "keyword" + }, + "ConfigurationReader": { + "type": "keyword" + }, + "CorruptionActionState": { + "ignore_above": 1024, + "type": "keyword" + }, + "CountNew": { + "type": "keyword" + }, + "CountOfCredentialsReturned": { + "type": "keyword" + }, + "CountOld": { + "type": "keyword" + }, + "CreationUtcTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "CurrentStratumNumber": { + "type": "keyword" + }, + "Default SD String:": { + "type": "keyword" + }, + "Description": { + "ignore_above": 1024, + "type": "keyword" + }, + "DestinationIsIpv6": { + "type": "keyword" + }, + "Detail": { + "ignore_above": 1024, + "type": "keyword" + }, + "Details": { + "type": "keyword" + }, + "DeviceName": { + "ignore_above": 1024, + "type": "keyword" + }, + "DeviceNameLength": { + "ignore_above": 1024, + "type": "keyword" + }, + "DeviceTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "DeviceVersionMajor": { + "ignore_above": 1024, + "type": "keyword" + }, + "DeviceVersionMinor": { + "ignore_above": 1024, + "type": "keyword" + }, + "DirtyPages": { + "type": "keyword" + }, + "DisableIntegrityChecks": { + "type": "keyword" + }, + "DriveName": { + "ignore_above": 1024, + "type": "keyword" + }, + "DriverName": { + "ignore_above": 1024, + "type": "keyword" + }, + "DriverNameLength": { + "ignore_above": 1024, + "type": "keyword" + }, + "DwordVal": { + "ignore_above": 1024, + "type": "keyword" + }, + "ElevatedToken": { + "type": "keyword" + }, + "EnableDisableReason": { + "type": "keyword" + }, + "EnabledNew": { + "type": "keyword" + }, + "EntryCount": { + "ignore_above": 1024, + "type": "keyword" + }, + "EventType": { + "type": "keyword" + }, + "ExtraInfo": { + "ignore_above": 1024, + "type": "keyword" + }, + "ExtraString": { + "type": "keyword" + }, + "ExtraStringLength": { + "type": "keyword" + }, + "FailureName": { + "ignore_above": 1024, + "type": "keyword" + }, + "FailureNameLength": { + "ignore_above": 1024, + "type": "keyword" + }, + "FailureReason": { + "type": "keyword" + }, + "FileName": { + "type": "keyword" + }, + "FileVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "FinalStatus": { + "ignore_above": 1024, + "type": "keyword" + }, + "FlightSigning": { + "type": "keyword" + }, + "Group": { + "ignore_above": 1024, + "type": "keyword" + }, + "HandleId": { + "type": "keyword" + }, + "HiveName": { + "type": "keyword" + }, + "HiveNameLength": { + "type": "keyword" + }, + "HypervisorDebug": { + "type": "keyword" + }, + "HypervisorLaunchType": { + "type": "keyword" + }, + "HypervisorLoadOptions": { + "type": "keyword" + }, + "IdleImplementation": { + "ignore_above": 1024, + "type": "keyword" + }, + "IdleStateCount": { + "ignore_above": 1024, + "type": "keyword" + }, + "ImagePath": { + "type": "keyword" + }, + "ImpersonationLevel": { + "ignore_above": 1024, + "type": "keyword" + }, + "Initiated": { + "type": "keyword" + }, + "IntegrityLevel": { + "ignore_above": 1024, + "type": "keyword" + }, + "InternalCode": { + "type": "keyword" + }, + "IpAddress": { + "ignore_above": 1024, + "type": "keyword" + }, + "IpPort": { + "ignore_above": 1024, + "type": "keyword" + }, + "IsTestConfig": { + "type": "keyword" + }, + "KernelDebug": { + "type": "keyword" + }, + "KeyFilePath": { + "type": "keyword" + }, + "KeyLength": { + "ignore_above": 1024, + "type": "keyword" + }, + "KeyName": { + "type": "keyword" + }, + "KeyType": { + "type": "keyword" + }, + "KeysUpdated": { + "type": "keyword" + }, + "LastBootGood": { + "ignore_above": 1024, + "type": "keyword" + }, + "LastBootId": { + "type": "keyword" + }, + "LastShutdownGood": { + "ignore_above": 1024, + "type": "keyword" + }, + "LinkName": { + "type": "keyword" + }, + "ListenerAdapterProtocol": { + "type": "keyword" + }, + "LmPackageName": { + "ignore_above": 1024, + "type": "keyword" + }, + "LoadOptions": { + "type": "keyword" + }, + "LogonGuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "LogonId": { + "ignore_above": 1024, + "type": "keyword" + }, + "LogonProcessName": { + "ignore_above": 1024, + "type": "keyword" + }, + "LogonType": { + "ignore_above": 1024, + "type": "keyword" + }, + "MajorVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "MandatoryLabel": { + "type": "keyword" + }, + "MaximumPerformancePercent": { + "ignore_above": 1024, + "type": "keyword" + }, + "MemberName": { + "ignore_above": 1024, + "type": "keyword" + }, + "MemberSid": { + "ignore_above": 1024, + "type": "keyword" + }, + "MinimumPerformancePercent": { + "ignore_above": 1024, + "type": "keyword" + }, + "MinimumThrottlePercent": { + "ignore_above": 1024, + "type": "keyword" + }, + "MinorVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "Minutes": { + "type": "keyword" + }, + "NewProcessId": { + "ignore_above": 1024, + "type": "keyword" + }, + "NewProcessName": { + "ignore_above": 1024, + "type": "keyword" + }, + "NewSchemeGuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "NewSd": { + "type": "keyword" + }, + "NewSize": { + "type": "keyword" + }, + "NewState": { + "type": "keyword" + }, + "NewThreadId": { + "type": "keyword" + }, + "NewTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "NominalFrequency": { + "ignore_above": 1024, + "type": "keyword" + }, + "Number": { + "ignore_above": 1024, + "type": "keyword" + }, + "NumberOfGroupPolicyObjects": { + "type": "keyword" + }, + "ObjectName": { + "type": "keyword" + }, + "ObjectServer": { + "type": "keyword" + }, + "ObjectType": { + "type": "keyword" + }, + "OldSchemeGuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "OldSd": { + "type": "keyword" + }, + "OldTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "Operation": { + "type": "keyword" + }, + "OriginalFileName": { + "ignore_above": 1024, + "type": "keyword" + }, + "OriginalSize": { + "type": "keyword" + }, + "PackageName": { + "type": "keyword" + }, + "Path": { + "ignore_above": 1024, + "type": "keyword" + }, + "PerformanceImplementation": { + "ignore_above": 1024, + "type": "keyword" + }, + "PreviousCreationUtcTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "PreviousTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "PrivilegeList": { + "ignore_above": 1024, + "type": "keyword" + }, + "ProcessCreationTime": { + "type": "keyword" + }, + "ProcessID": { + "type": "keyword" + }, + "ProcessId": { + "ignore_above": 1024, + "type": "keyword" + }, + "ProcessName": { + "ignore_above": 1024, + "type": "keyword" + }, + "ProcessPath": { + "ignore_above": 1024, + "type": "keyword" + }, + "ProcessPid": { + "ignore_above": 1024, + "type": "keyword" + }, + "ProcessingMode": { + "type": "keyword" + }, + "ProcessingTimeInMilliseconds": { + "type": "keyword" + }, + "Product": { + "ignore_above": 1024, + "type": "keyword" + }, + "Protocol": { + "type": "keyword" + }, + "ProviderName": { + "type": "keyword" + }, + "PuaCount": { + "ignore_above": 1024, + "type": "keyword" + }, + "PuaPolicyId": { + "ignore_above": 1024, + "type": "keyword" + }, + "QfeVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "ReadOperation": { + "type": "keyword" + }, + "Reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "RemoteEventLogging": { + "type": "keyword" + }, + "ResourceAttributes": { + "type": "keyword" + }, + "ResourceManager": { + "type": "keyword" + }, + "RestrictedAdminMode": { + "type": "keyword" + }, + "ReturnCode": { + "type": "keyword" + }, + "RmId": { + "type": "keyword" + }, + "RuleName": { + "type": "keyword" + }, + "RunningMode": { + "type": "keyword" + }, + "SchemaVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "ScriptBlockText": { + "ignore_above": 1024, + "type": "keyword" + }, + "ServiceName": { + "ignore_above": 1024, + "type": "keyword" + }, + "ServiceType": { + "type": "keyword" + }, + "ServiceVersion": { + "ignore_above": 1024, + "type": "keyword" + }, + "ShutdownActionType": { + "ignore_above": 1024, + "type": "keyword" + }, + "ShutdownEventCode": { + "ignore_above": 1024, + "type": "keyword" + }, + "ShutdownReason": { + "ignore_above": 1024, + "type": "keyword" + }, + "Signature": { + "ignore_above": 1024, + "type": "keyword" + }, + "SignatureStatus": { + "ignore_above": 1024, + "type": "keyword" + }, + "Signed": { + "ignore_above": 1024, + "type": "keyword" + }, + "SourceIsIpv6": { + "type": "keyword" + }, + "SourcePortName": { + "type": "keyword" + }, + "StartAddress": { + "type": "keyword" + }, + "StartFunction": { + "type": "keyword" + }, + "StartModule": { + "type": "keyword" + }, + "StartTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "StartType": { + "type": "keyword" + }, + "State": { + "ignore_above": 1024, + "type": "keyword" + }, + "Status": { + "ignore_above": 1024, + "type": "keyword" + }, + "StopTime": { + "ignore_above": 1024, + "type": "keyword" + }, + "SubCategory": { + "type": "keyword" + }, + "SubStatus": { + "type": "keyword" + }, + "SubcategoryGuid": { + "type": "keyword" + }, + "SubcategoryId": { + "type": "keyword" + }, + "SubjectDomainName": { + "ignore_above": 1024, + "type": "keyword" + }, + "SubjectLogonId": { + "ignore_above": 1024, + "type": "keyword" + }, + "SubjectUserName": { + "ignore_above": 1024, + "type": "keyword" + }, + "SubjectUserSid": { + "ignore_above": 1024, + "type": "keyword" + }, + "SupportInfo1": { + "type": "keyword" + }, + "SupportInfo2": { + "type": "keyword" + }, + "TSId": { + "ignore_above": 1024, + "type": "keyword" + }, + "TargetDomainName": { + "ignore_above": 1024, + "type": "keyword" + }, + "TargetImage": { + "type": "keyword" + }, + "TargetInfo": { + "ignore_above": 1024, + "type": "keyword" + }, + "TargetLinkedLogonId": { + "type": "keyword" + }, + "TargetLogonGuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "TargetLogonId": { + "ignore_above": 1024, + "type": "keyword" + }, + "TargetName": { + "type": "keyword" + }, + "TargetObject": { + "type": "keyword" + }, + "TargetOutboundDomainName": { + "type": "keyword" + }, + "TargetOutboundUserName": { + "type": "keyword" + }, + "TargetProcessGuid": { "type": "keyword" }, - "continent_name": { - "ignore_above": 1024, + "TargetProcessId": { "type": "keyword" }, - "country_iso_code": { - "ignore_above": 1024, + "TargetProcessName": { "type": "keyword" }, - "country_name": { + "TargetServerName": { "ignore_above": 1024, "type": "keyword" }, - "location": { - "type": "geo_point" + "TargetSid": { + "type": "keyword" }, - "name": { + "TargetUserName": { "ignore_above": 1024, "type": "keyword" }, - "region_iso_code": { + "TargetUserSid": { "ignore_above": 1024, "type": "keyword" }, - "region_name": { + "TerminalSessionId": { "ignore_above": 1024, "type": "keyword" - } - } - }, - "ip": { - "type": "ip" - }, - "mac": { - "ignore_above": 1024, - "type": "keyword" - }, - "packets": { - "type": "long" - }, - "path": { - "ignore_above": 1024, - "type": "keyword" - }, - "port": { - "type": "long" - }, - "user": { - "properties": { - "email": { - "ignore_above": 1024, + }, + "TestSigning": { "type": "keyword" }, - "full_name": { - "ignore_above": 1024, + "TimeSource": { "type": "keyword" }, - "group": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } + "TimeSourceRefId": { + "type": "keyword" }, - "hash": { - "ignore_above": 1024, + "TmId": { "type": "keyword" }, - "id": { + "TokenElevationType": { "ignore_above": 1024, "type": "keyword" }, - "name": { - "ignore_above": 1024, + "TransactionId": { "type": "keyword" - } - } - } - } - }, - "user": { - "properties": { - "audit": { - "properties": { - "id": { + }, + "TransmittedServices": { "ignore_above": 1024, "type": "keyword" }, - "name": { - "ignore_above": 1024, + "Type": { "type": "keyword" - } - } - }, - "effective": { - "properties": { - "group": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } }, - "id": { - "ignore_above": 1024, + "UpdateReason": { "type": "keyword" }, - "name": { - "ignore_above": 1024, + "Url": { "type": "keyword" - } - } - }, - "email": { - "ignore_above": 1024, - "type": "keyword" - }, - "entity_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "filesystem": { - "properties": { - "group": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } }, - "id": { - "ignore_above": 1024, + "User": { "type": "keyword" }, - "name": { + "UserSid": { "ignore_above": 1024, "type": "keyword" - } - } - }, - "full_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "group": { - "properties": { - "id": { + }, + "Version": { "ignore_above": 1024, "type": "keyword" }, - "name": { - "ignore_above": 1024, + "VirtualAccount": { "type": "keyword" - } - } - }, - "hash": { - "ignore_above": 1024, - "type": "keyword" - }, - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - }, - "name_map": { - "type": "object" - }, - "saved": { - "properties": { - "group": { - "properties": { - "id": { - "ignore_above": 1024, - "type": "keyword" - }, - "name": { - "ignore_above": 1024, - "type": "keyword" - } - } }, - "id": { - "ignore_above": 1024, + "VsmLaunchType": { "type": "keyword" }, - "name": { - "ignore_above": 1024, + "VsmPolicy": { "type": "keyword" - } - } - }, - "selinux": { - "properties": { - "category": { + }, + "Workstation": { "ignore_above": 1024, "type": "keyword" }, - "domain": { + "param1": { "ignore_above": 1024, "type": "keyword" }, - "level": { - "ignore_above": 1024, + "param10": { + "type": "keyword" + }, + "param11": { "type": "keyword" }, - "role": { + "param12": { + "type": "keyword" + }, + "param2": { "ignore_above": 1024, "type": "keyword" }, - "user": { + "param3": { "ignore_above": 1024, "type": "keyword" - } - } - }, - "terminal": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "winlog": { - "properties": { - "activity_id": { - "ignore_above": 1024, - "type": "keyword" - }, - "api": { - "ignore_above": 1024, - "type": "keyword" - }, - "channel": { - "ignore_above": 1024, - "type": "keyword" - }, - "computer_name": { - "ignore_above": 1024, - "type": "keyword" - }, - "event_data": { - "properties": { - "ContextInfo": { + }, + "param4": { + "ignore_above": 1024, "type": "keyword" }, - "LogonType": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" + "param5": { + "ignore_above": 1024, + "type": "keyword" }, - "MessageNumber": { + "param6": { + "ignore_above": 1024, "type": "keyword" }, - "MessageTotal": { + "param7": { + "ignore_above": 1024, "type": "keyword" }, - "Path": { + "param8": { + "ignore_above": 1024, "type": "keyword" }, - "Payload": { + "param9": { "type": "keyword" }, - "ScriptBlockId": { + "serviceGuid": { "type": "keyword" }, - "ScriptBlockText": { + "updateGuid": { "type": "keyword" }, - "param1": { + "updateRevisionNumber": { "type": "keyword" }, - "param2": { + "updateTitle": { "type": "keyword" } } @@ -806,6 +4095,34 @@ "ignore_above": 1024, "type": "keyword" }, + "logon": { + "properties": { + "failure": { + "properties": { + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "sub_status": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, "opcode": { "ignore_above": 1024, "type": "keyword" @@ -865,7 +4182,23 @@ } }, "user_data": { - "type": "object" + "properties": { + "binaryData": { + "type": "keyword" + }, + "binaryDataSize": { + "type": "keyword" + }, + "param1": { + "type": "keyword" + }, + "param2": { + "type": "keyword" + }, + "xml_name": { + "type": "keyword" + } + } }, "version": { "type": "long" @@ -876,6 +4209,11 @@ }, "settings": { "index": { + "mapping": { + "total_fields": { + "limit": "5000" + } + }, "number_of_replicas": "1", "number_of_shards": "1" } diff --git a/x-pack/test/functional/services/ml/test_resources.ts b/x-pack/test/functional/services/ml/test_resources.ts index c801c077c1319..547ff782bcbe5 100644 --- a/x-pack/test/functional/services/ml/test_resources.ts +++ b/x-pack/test/functional/services/ml/test_resources.ts @@ -528,5 +528,27 @@ export function MachineLearningTestResourcesProvider({ getService }: FtrProvider } log.debug('> ML saved objects deleted.'); }, + + async installFleetPackage(packageIdentifier: string) { + log.debug(`Installing Fleet package'${packageIdentifier}'`); + + await supertest + .post(`/api/fleet/epm/packages/${packageIdentifier}`) + .set(COMMON_REQUEST_HEADERS) + .expect(200); + + log.debug(` > Installed`); + }, + + async removeFleetPackage(packageIdentifier: string) { + log.debug(`Removing Fleet package'${packageIdentifier}'`); + + await supertest + .delete(`/api/fleet/epm/packages/${packageIdentifier}`) + .set(COMMON_REQUEST_HEADERS) + .expect(200); + + log.debug(` > Removed`); + }, }; } From 2ce8e10cdc7b57921de93f17014a3b4bdb1fdd04 Mon Sep 17 00:00:00 2001 From: Jason Stoltzfus Date: Wed, 12 May 2021 08:20:31 -0400 Subject: [PATCH 029/144] Removed fromKibana param (#99834) --- .../app_search/components/search_ui/utils.test.ts | 2 +- .../applications/app_search/components/search_ui/utils.ts | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.test.ts index 550573367c824..8d99ffc514b3f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.test.ts @@ -33,7 +33,7 @@ describe('generatePreviewUrl', () => { empty2: [''], // Empty fields should be stripped }) ).toEqual( - 'http://localhost:3002/as/engines/national-parks-demo/reference_application/preview?facets[]=baz&facets[]=qux&fromKibana=true&sortFields[]=quux&sortFields[]=quuz&titleField=foo&urlField=bar' + 'http://localhost:3002/as/engines/national-parks-demo/reference_application/preview?facets[]=baz&facets[]=qux&sortFields[]=quux&sortFields[]=quuz&titleField=foo&urlField=bar' ); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.ts index 0bdc03037ae38..72d90514ea0a0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/search_ui/utils.ts @@ -14,10 +14,7 @@ export const generatePreviewUrl = (query: ParsedQuery) => { const { engineName } = EngineLogic.values; return queryString.stringifyUrl( { - query: { - ...query, - fromKibana: 'true', - }, + query, url: getAppSearchUrl(`/engines/${engineName}/reference_application/preview`), }, { arrayFormat: 'bracket', skipEmptyString: true } From 68dd485c1e71248a0f76c7dadcd6794e18aa5f1c Mon Sep 17 00:00:00 2001 From: Pete Hampton Date: Wed, 12 May 2021 13:53:22 +0100 Subject: [PATCH 030/144] Fix size with detection rule telemetry. (#99900) --- .../server/usage/detections/detections_metrics_helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/server/usage/detections/detections_metrics_helpers.ts b/x-pack/plugins/security_solution/server/usage/detections/detections_metrics_helpers.ts index 97fc8c2884289..8697fa138d4b0 100644 --- a/x-pack/plugins/security_solution/server/usage/detections/detections_metrics_helpers.ts +++ b/x-pack/plugins/security_solution/server/usage/detections/detections_metrics_helpers.ts @@ -193,7 +193,7 @@ export const getDetectionRuleMetrics = async ( filterPath: [], ignoreUnavailable: true, index: kibanaIndex, - size: 1, + size: 10_000, // elasticsearch index.max_result_window default value }; try { From 254a876ae029ed2ae0dff97fff3f34f2a5bcd92a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20S=C3=A1nchez?= Date: Wed, 12 May 2021 15:26:00 +0200 Subject: [PATCH 031/144] [Security Solution][Endpoint] User can filter event filters list (#99608) * Moves search component outside trusted apps to be used by event filters * Allos user search and filter event filters by query * Parse query and share same utils between trusted apps and event filters * Fixes test case with a filter in query * Removes old multilang keys * Removes remaining old translations * Fixes unit test changing a testId prop * Adds todo comment * Revert type. Fix listDataNeedsRefresh condition * Add unit test for search action on event_filters * Makes const readonly --- .../store => common}/utils.test.ts | 16 +++++++++---- .../trusted_apps/store => common}/utils.ts | 4 ++-- .../components/search_bar/index.test.tsx | 6 ++--- .../view => }/components/search_bar/index.tsx | 17 ++++++-------- .../pages/event_filters/constants.ts | 7 ++++++ .../pages/event_filters/service/index.ts | 3 +++ .../pages/event_filters/store/middleware.ts | 6 ++++- .../pages/event_filters/store/selector.ts | 3 ++- .../event_filters/store/selectors.test.ts | 13 +++++++---- .../management/pages/event_filters/types.ts | 1 + .../view/event_filters_list_page.test.tsx | 23 +++++++++++++++++++ .../view/event_filters_list_page.tsx | 14 ++++++++++- .../pages/trusted_apps/constants.ts | 13 +++++++++++ .../pages/trusted_apps/store/middleware.ts | 5 ++-- .../view/trusted_apps_page.test.tsx | 2 +- .../trusted_apps/view/trusted_apps_page.tsx | 2 +- .../translations/translations/ja-JP.json | 2 -- .../translations/translations/zh-CN.json | 2 -- 18 files changed, 104 insertions(+), 35 deletions(-) rename x-pack/plugins/security_solution/public/management/{pages/trusted_apps/store => common}/utils.test.ts (79%) rename x-pack/plugins/security_solution/public/management/{pages/trusted_apps/store => common}/utils.ts (78%) rename x-pack/plugins/security_solution/public/management/{pages/trusted_apps/view => }/components/search_bar/index.test.tsx (88%) rename x-pack/plugins/security_solution/public/management/{pages/trusted_apps/view => }/components/search_bar/index.tsx (78%) create mode 100644 x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/utils.test.ts b/x-pack/plugins/security_solution/public/management/common/utils.test.ts similarity index 79% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/utils.test.ts rename to x-pack/plugins/security_solution/public/management/common/utils.test.ts index 4193d9c37c8f2..59455ccd6bb04 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/utils.test.ts +++ b/x-pack/plugins/security_solution/public/management/common/utils.test.ts @@ -8,27 +8,33 @@ import { parseQueryFilterToKQL } from './utils'; describe('utils', () => { + const searchableFields = [`name`, `description`, `entries.value`, `entries.entries.value`]; describe('parseQueryFilterToKQL', () => { it('should parse simple query without term', () => { - expect(parseQueryFilterToKQL('')).toBe(''); + expect(parseQueryFilterToKQL('', searchableFields)).toBe(''); }); it('should parse simple query with term', () => { - expect(parseQueryFilterToKQL('simpleQuery')).toBe( + expect(parseQueryFilterToKQL('simpleQuery', searchableFields)).toBe( 'exception-list-agnostic.attributes.name:(*simpleQuery*) OR exception-list-agnostic.attributes.description:(*simpleQuery*) OR exception-list-agnostic.attributes.entries.value:(*simpleQuery*) OR exception-list-agnostic.attributes.entries.entries.value:(*simpleQuery*)' ); }); it('should parse complex query with term', () => { - expect(parseQueryFilterToKQL('complex query')).toBe( + expect(parseQueryFilterToKQL('complex query', searchableFields)).toBe( 'exception-list-agnostic.attributes.name:(*complex*query*) OR exception-list-agnostic.attributes.description:(*complex*query*) OR exception-list-agnostic.attributes.entries.value:(*complex*query*) OR exception-list-agnostic.attributes.entries.entries.value:(*complex*query*)' ); }); it('should parse complex query with colon and backslash chars term', () => { - expect(parseQueryFilterToKQL('C:\\tmpes')).toBe( + expect(parseQueryFilterToKQL('C:\\tmpes', searchableFields)).toBe( 'exception-list-agnostic.attributes.name:(*C\\:\\\\tmpes*) OR exception-list-agnostic.attributes.description:(*C\\:\\\\tmpes*) OR exception-list-agnostic.attributes.entries.value:(*C\\:\\\\tmpes*) OR exception-list-agnostic.attributes.entries.entries.value:(*C\\:\\\\tmpes*)' ); }); it('should parse complex query with special chars term', () => { - expect(parseQueryFilterToKQL("this'is%&query{}[]!¿?with.,-+`´special<>ºª@#|·chars")).toBe( + expect( + parseQueryFilterToKQL( + "this'is%&query{}[]!¿?with.,-+`´special<>ºª@#|·chars", + searchableFields + ) + ).toBe( "exception-list-agnostic.attributes.name:(*this'is%&query\\{\\}[]!¿?with.,-+`´special\\<\\>ºª@#|·chars*) OR exception-list-agnostic.attributes.description:(*this'is%&query\\{\\}[]!¿?with.,-+`´special\\<\\>ºª@#|·chars*) OR exception-list-agnostic.attributes.entries.value:(*this'is%&query\\{\\}[]!¿?with.,-+`´special\\<\\>ºª@#|·chars*) OR exception-list-agnostic.attributes.entries.entries.value:(*this'is%&query\\{\\}[]!¿?with.,-+`´special\\<\\>ºª@#|·chars*)" ); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/utils.ts b/x-pack/plugins/security_solution/public/management/common/utils.ts similarity index 78% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/utils.ts rename to x-pack/plugins/security_solution/public/management/common/utils.ts index b14942e626d1b..c8cf761ccaf86 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/utils.ts +++ b/x-pack/plugins/security_solution/public/management/common/utils.ts @@ -5,9 +5,9 @@ * 2.0. */ -export const parseQueryFilterToKQL = (filter: string): string => { +export const parseQueryFilterToKQL = (filter: string, fields: Readonly): string => { if (!filter) return ''; - const kuery = [`name`, `description`, `entries.value`, `entries.entries.value`] + const kuery = fields .map( (field) => `exception-list-agnostic.attributes.${field}:(*${filter diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/search_bar/index.test.tsx b/x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/search_bar/index.test.tsx rename to x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx index f12c979c2afe4..6daea8e53282d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/search_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx @@ -28,7 +28,7 @@ describe('Search bar', () => { it('should have a default value', () => { const expectedDefaultValue = 'this is a default value'; const element = mount(getElement(expectedDefaultValue)); - const defaultValue = element.find('[data-test-subj="trustedAppSearchField"]').first().props() + const defaultValue = element.find('[data-test-subj="searchField"]').first().props() .defaultValue; expect(defaultValue).toBe(expectedDefaultValue); }); @@ -38,7 +38,7 @@ describe('Search bar', () => { const element = mount(getElement()); expect(onSearchMock).toHaveBeenCalledTimes(0); const searchFieldProps = element - .find('[data-test-subj="trustedAppSearchField"]') + .find('[data-test-subj="searchField"]') .first() .props() as EuiFieldSearchPropsFake; @@ -53,7 +53,7 @@ describe('Search bar', () => { const element = mount(getElement(expectedDefaultValue)); expect(onSearchMock).toHaveBeenCalledTimes(0); - element.find('[data-test-subj="trustedAppSearchButton"]').first().simulate('click'); + element.find('[data-test-subj="searchButton"]').first().simulate('click'); expect(onSearchMock).toHaveBeenCalledTimes(1); expect(onSearchMock).toHaveBeenCalledWith(expectedDefaultValue); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/search_bar/index.tsx b/x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx similarity index 78% rename from x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/search_bar/index.tsx rename to x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx index 6fc6b2af4d585..0d4fcf8fec87b 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/search_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx @@ -27,23 +27,20 @@ export const SearchBar = memo(({ defaultValue = '', onSearch }) - + - {i18n.translate('xpack.securitySolution.trustedapps.list.search.button', { + {i18n.translate('xpack.securitySolution.management.search.button', { defaultMessage: 'Refresh', })} diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts index 882b964d54bb5..5d600f471994b 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts @@ -24,4 +24,11 @@ export const EVENT_FILTER_LIST = { type: EVENT_FILTER_LIST_TYPE, }; +export const SEARCHABLE_FIELDS: Readonly = [ + `name`, + `entries.value`, + `entries.entries.value`, + `comments.comment`, +]; + export { ENDPOINT_EVENT_FILTERS_LIST_ID, EXCEPTION_LIST_URL, EXCEPTION_LIST_ITEM_URL }; diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts index 0c01cbfc6a24f..b8fe7c142dbb1 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts @@ -48,11 +48,13 @@ export class EventFiltersHttpService implements EventFiltersService { page, sortField, sortOrder, + filter, }: Partial<{ page: number; perPage: number; sortField: string; sortOrder: string; + filter: string; }> = {}): Promise { const http = await this.httpWrapper(); return http.get(`${EXCEPTION_LIST_ITEM_URL}/_find`, { @@ -63,6 +65,7 @@ export class EventFiltersHttpService implements EventFiltersService { sort_order: sortOrder, list_id: [ENDPOINT_EVENT_FILTERS_LIST_ID], namespace_type: ['agnostic'], + filter, }, }); } diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts index 70afcaf43eabd..1bd1340326d09 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts @@ -34,6 +34,9 @@ import { getSubmissionResource, getNewComment, } from './selector'; + +import { parseQueryFilterToKQL } from '../../../common/utils'; +import { SEARCHABLE_FIELDS } from '../constants'; import { EventFiltersListPageData, EventFiltersListPageState, @@ -233,12 +236,13 @@ const refreshListDataIfNeeded: MiddlewareActionHandler = async (store, eventFilt }, }); - const { page_size: pageSize, page_index: pageIndex } = getCurrentLocation(state); + const { page_size: pageSize, page_index: pageIndex, filter } = getCurrentLocation(state); const query: EventFiltersServiceGetListOptions = { page: pageIndex + 1, perPage: pageSize, sortField: 'created_at', sortOrder: 'desc', + filter: parseQueryFilterToKQL(filter, SEARCHABLE_FIELDS) || undefined, }; try { diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts index 368faae5fd7a2..c24d300a5584d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts @@ -178,7 +178,8 @@ export const listDataNeedsRefresh: EventFiltersSelector = createSelecto return ( forceRefresh || location.page_index + 1 !== currentQuery.page || - location.page_size !== currentQuery.perPage + location.page_size !== currentQuery.perPage || + (!!location.filter && location.filter !== currentQuery.filter) ); } ); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selectors.test.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selectors.test.ts index 0074141fe8474..cba069775a90f 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selectors.test.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selectors.test.ts @@ -46,14 +46,14 @@ describe('event filters selectors', () => { const setToLoadedState = () => { initialState.listPage.data = createLoadedResourceState({ - query: { page: 2, perPage: 10 }, + query: { page: 2, perPage: 10, filter: '' }, content: getFoundExceptionListItemSchemaMock(), }); }; const setToLoadingState = ( previousState: EventFiltersListPageState['listPage']['data'] = createLoadedResourceState({ - query: { page: 5, perPage: 50 }, + query: { page: 5, perPage: 50, filter: '' }, content: getFoundExceptionListItemSchemaMock(), }) ) => { @@ -127,12 +127,12 @@ describe('event filters selectors', () => { it('should return query from current loaded state', () => { setToLoadedState(); - expect(getCurrentListItemsQuery(initialState)).toEqual({ page: 2, perPage: 10 }); + expect(getCurrentListItemsQuery(initialState)).toEqual({ page: 2, perPage: 10, filter: '' }); }); it('should return query from previous state while Loading new page', () => { setToLoadingState(); - expect(getCurrentListItemsQuery(initialState)).toEqual({ page: 5, perPage: 50 }); + expect(getCurrentListItemsQuery(initialState)).toEqual({ page: 5, perPage: 50, filter: '' }); }); }); @@ -236,6 +236,11 @@ describe('event filters selectors', () => { initialState.location.page_index = 10; expect(listDataNeedsRefresh(initialState)).toBe(true); }); + + it('should should return true if filter param differ from last api call', () => { + initialState.location.filter = 'query'; + expect(listDataNeedsRefresh(initialState)).toBe(true); + }); }); describe('getFormEntry()', () => { diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts index faef3b4976c79..80abe225bf289 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts @@ -37,6 +37,7 @@ export type EventFiltersServiceGetListOptions = Partial<{ perPage: number; sortField: keyof ExceptionListItemSchema; sortOrder: 'asc' | 'desc'; + filter: string; }>; export interface EventFiltersService { diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx index 4604a5b112a04..edd919351a151 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx @@ -141,4 +141,27 @@ describe('When on the Event Filters List Page', () => { expect(renderResult.getByTestId('eventFiltersContent-error').textContent).toEqual(' oh no'); }); }); + + describe('And search is dispatched', () => { + beforeEach(async () => { + act(() => { + history.push('/event_filters?filter=test'); + }); + renderResult = render(); + await act(async () => { + await waitForAction('eventFiltersListPageDataChanged'); + }); + }); + + it('search bar is filled with query params', () => { + expect(renderResult.getByDisplayValue('test')).not.toBeNull(); + }); + + it('search action is dispatched', async () => { + await act(async () => { + fireEvent.click(renderResult.getByTestId('searchButton')); + expect(await waitForAction('userChangedUrl')).not.toBeNull(); + }); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx index 3026ca41f327d..0e78f67efb433 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx @@ -11,7 +11,7 @@ import { Dispatch } from 'redux'; import { useHistory } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiButton } from '@elastic/eui'; +import { EuiButton, EuiSpacer } from '@elastic/eui'; import styled from 'styled-components'; import { AppAction } from '../../../../common/store/actions'; @@ -39,6 +39,8 @@ import { ExceptionItemProps, } from '../../../../common/components/exceptions/viewer/exception_item'; +import { SearchBar } from '../../../components/search_bar'; + type EventListPaginatedContent = PaginatedContentProps< Immutable, typeof ExceptionItem @@ -154,6 +156,10 @@ export const EventFiltersListPage = memo(() => { [navigateCallback] ); + const handleOnSearch = useCallback((query: string) => navigateCallback({ filter: query }), [ + navigateCallback, + ]); + return ( { /> )} + {doesDataExist && ( + <> + + + + )} , typeof ExceptionItem> items={listItems} ItemComponent={ExceptionItem} diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts new file mode 100644 index 0000000000000..0602ae18c1408 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const SEARCHABLE_FIELDS: Readonly = [ + `name`, + `description`, + `entries.value`, + `entries.entries.value`, +]; diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/middleware.ts b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/middleware.ts index 71a49caf66fd6..878938aa20e1b 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/middleware.ts +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/store/middleware.ts @@ -64,8 +64,9 @@ import { getListItems, editItemState, } from './selectors'; -import { parseQueryFilterToKQL } from './utils'; +import { parseQueryFilterToKQL } from '../../../common/utils'; import { toUpdateTrustedApp } from '../../../../../common/endpoint/service/trusted_apps/to_update_trusted_app'; +import { SEARCHABLE_FIELDS } from '../constants'; const createTrustedAppsListResourceStateChangedAction = ( newState: Immutable> @@ -97,7 +98,7 @@ const refreshListIfNeeded = async ( const response = await trustedAppsService.getTrustedAppsList({ page: pageIndex + 1, per_page: pageSize, - kuery: parseQueryFilterToKQL(filter) || undefined, + kuery: parseQueryFilterToKQL(filter, SEARCHABLE_FIELDS) || undefined, }); store.dispatch( diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx index 5efe8cfc16185..874d1a4a969c4 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.test.tsx @@ -882,7 +882,7 @@ describe('When on the Trusted Apps Page', () => { it('search action is dispatched', async () => { await act(async () => { - fireEvent.click(renderResult.getByTestId('trustedAppSearchButton')); + fireEvent.click(renderResult.getByTestId('searchButton')); expect(await waitForAction('userChangedUrl')).not.toBeNull(); }); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx index 1bf44769c15b4..39432f2d06505 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/trusted_apps_page.tsx @@ -39,7 +39,7 @@ import { TrustedAppsListPageRouteState } from '../../../../../common/endpoint/ty import { useNavigateToAppEventHandler } from '../../../../common/hooks/endpoint/use_navigate_to_app_event_handler'; import { ABOUT_TRUSTED_APPS } from './translations'; import { EmptyState } from './components/empty_state'; -import { SearchBar } from './components/search_bar'; +import { SearchBar } from '../../../components/search_bar'; export const TrustedAppsPage = memo(() => { const { state: routeState } = useLocation(); diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index a2eb51e929fd4..ec4824a763050 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -21847,8 +21847,6 @@ "xpack.securitySolution.trustedapps.list.backButton": "戻る", "xpack.securitySolution.trustedapps.list.columns.actions": "アクション", "xpack.securitySolution.trustedapps.list.pageTitle": "信頼できるアプリケーション", - "xpack.securitySolution.trustedapps.list.search.button": "更新", - "xpack.securitySolution.trustedapps.list.search.placeholder": "検索", "xpack.securitySolution.trustedapps.listEmptyState.message": "現在、エンドポイントには信頼できるアプリケーションがありません。", "xpack.securitySolution.trustedapps.listEmptyState.title": "最初の信頼できるアプリケーションを追加", "xpack.securitySolution.trustedapps.logicalConditionBuilder.entry.field.description.hash": "md5、sha1、sha256", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index b07661eaf5e26..0f13968ef02d8 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -22187,8 +22187,6 @@ "xpack.securitySolution.trustedapps.list.backButton": "返回", "xpack.securitySolution.trustedapps.list.columns.actions": "操作", "xpack.securitySolution.trustedapps.list.pageTitle": "受信任的应用程序", - "xpack.securitySolution.trustedapps.list.search.button": "刷新", - "xpack.securitySolution.trustedapps.list.search.placeholder": "搜索", "xpack.securitySolution.trustedapps.list.totalCount": "{totalItemCount, plural, other {# 个受信任的应用程序}}", "xpack.securitySolution.trustedapps.listEmptyState.message": "当前在您的终端上没有受信任应用程序。", "xpack.securitySolution.trustedapps.listEmptyState.title": "添加您的首个受信任应用程序", From bc2b846b44070c62255cae8d17ec6b34f11774ba Mon Sep 17 00:00:00 2001 From: Thomas Neirynck Date: Wed, 12 May 2021 09:33:48 -0400 Subject: [PATCH 032/144] [Maps][Vega] Tidy up mapbox-gl imports (#99733) VegaMaps now instantiates mapbox-gl the same way as the Maps app. --- .../vega_view/vega_map_view/view.test.ts | 16 ++++++++++------ .../public/vega_view/vega_map_view/view.ts | 18 +++++++++++++----- .../public/routes/map_page/map_app/map_app.tsx | 1 - 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.test.ts b/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.test.ts index d5a67f2eac064..4fd19aa45e69e 100644 --- a/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.test.ts +++ b/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.test.ts @@ -28,9 +28,12 @@ import { setUISettings, } from '../../services'; import { initVegaLayer, initTmsRasterLayer } from './layers'; -import { Map, NavigationControl, Style } from 'mapbox-gl'; -jest.mock('mapbox-gl', () => ({ +// @ts-expect-error +import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp'; + +jest.mock('mapbox-gl/dist/mapbox-gl-csp', () => ({ + setRTLTextPlugin: jest.fn(), Map: jest.fn().mockImplementation(() => ({ getLayer: () => '', removeLayer: jest.fn(), @@ -75,9 +78,10 @@ describe('vega_map_view/view', () => { setUISettings(coreStart.uiSettings); const getTmsService = jest.fn().mockReturnValue(({ - getVectorStyleSheet: (): Style => ({ + getVectorStyleSheet: () => ({ version: 8, sources: {}, + // @ts-expect-error layers: [], }), getMaxZoom: async () => 20, @@ -144,7 +148,7 @@ describe('vega_map_view/view', () => { await vegaMapView.init(); const { longitude, latitude, scrollWheelZoom } = vegaMapView._parser.mapConfig; - expect(Map).toHaveBeenCalledWith({ + expect(mapboxgl.Map).toHaveBeenCalledWith({ style: { version: 8, sources: {}, @@ -170,7 +174,7 @@ describe('vega_map_view/view', () => { await vegaMapView.init(); const { longitude, latitude, scrollWheelZoom } = vegaMapView._parser.mapConfig; - expect(Map).toHaveBeenCalledWith({ + expect(mapboxgl.Map).toHaveBeenCalledWith({ style: { version: 8, sources: {}, @@ -195,7 +199,7 @@ describe('vega_map_view/view', () => { await vegaMapView.init(); - expect(NavigationControl).toHaveBeenCalled(); + expect(mapboxgl.NavigationControl).toHaveBeenCalled(); }); }); }); diff --git a/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.ts b/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.ts index 453e9596a2a4c..e899057819a19 100644 --- a/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.ts +++ b/src/plugins/vis_type_vega/public/vega_view/vega_map_view/view.ts @@ -7,9 +7,11 @@ */ import { i18n } from '@kbn/i18n'; -import { Map, Style, NavigationControl, MapboxOptions } from 'mapbox-gl'; +import type { Map, Style, MapboxOptions } from 'mapbox-gl'; import { View, parse } from 'vega'; +// @ts-expect-error +import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp'; import { initTmsRasterLayer, initVegaLayer } from './layers'; import { VegaBaseView } from '../vega_base_view'; import { getMapServiceSettings } from '../../services'; @@ -22,11 +24,17 @@ import { userConfiguredLayerId, vegaLayerId, } from './constants'; - import { validateZoomSettings, injectMapPropsIntoSpec } from './utils'; - import './vega_map_view.scss'; +// @ts-expect-error +import mbRtlPlugin from '!!file-loader!@mapbox/mapbox-gl-rtl-text/mapbox-gl-rtl-text.min.js'; +// @ts-expect-error +import mbWorkerUrl from '!!file-loader!mapbox-gl/dist/mapbox-gl-csp-worker'; + +mapboxgl.workerUrl = mbWorkerUrl; +mapboxgl.setRTLTextPlugin(mbRtlPlugin); + async function updateVegaView(mapBoxInstance: Map, vegaView: View) { const mapCanvas = mapBoxInstance.getCanvas(); const { lat, lng } = mapBoxInstance.getCenter(); @@ -115,7 +123,7 @@ export class VegaMapView extends VegaBaseView { // In some cases, Vega may be initialized twice, e.g. after awaiting... if (!this._$container) return; - const mapBoxInstance = new Map({ + const mapBoxInstance = new mapboxgl.Map({ style, customAttribution, container: this._$container.get(0), @@ -142,7 +150,7 @@ export class VegaMapView extends VegaBaseView { private initControls(mapBoxInstance: Map) { if (this.shouldShowZoomControl) { - mapBoxInstance.addControl(new NavigationControl({ showCompass: false }), 'top-left'); + mapBoxInstance.addControl(new mapboxgl.NavigationControl({ showCompass: false }), 'top-left'); } // disable map rotation using right click + drag diff --git a/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx b/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx index aa1527d48654e..6a31e25197210 100644 --- a/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx +++ b/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx @@ -6,7 +6,6 @@ */ import React from 'react'; -import 'mapbox-gl/dist/mapbox-gl.css'; import _ from 'lodash'; import { i18n } from '@kbn/i18n'; import { AppLeaveAction, AppMountParameters } from 'kibana/public'; From 9907903f410bb75042a8983732e1d8bd87d32acf Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Wed, 12 May 2021 09:47:47 -0400 Subject: [PATCH 033/144] [Fleet] Fix package category count (#99677) --- .../server/services/epm/registry/index.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index 0a755228e0b98..9e04d75f36a16 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -77,8 +77,6 @@ export const pkgToPkgKey = ({ name, version }: { name: string; version: string } export async function fetchList(params?: SearchParams): Promise { const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/search`); - const kibanaVersion = appContextService.getKibanaVersion().split('-')[0]; // may be x.y.z-SNAPSHOT - const kibanaBranch = appContextService.getKibanaBranch(); if (params) { if (params.category) { url.searchParams.set('category', params.category); @@ -88,10 +86,7 @@ export async function fetchList(params?: SearchParams): Promise { return getResponse(`${registryUrl}${filePath}`); } +function setKibanaVersion(url: URL) { + const kibanaVersion = appContextService.getKibanaVersion().split('-')[0]; // may be x.y.z-SNAPSHOT + const kibanaBranch = appContextService.getKibanaBranch(); + + // on master, request all packages regardless of version + if (kibanaVersion && kibanaBranch !== 'master') { + url.searchParams.set('kibana.version', kibanaVersion); + } +} + export async function fetchCategories(params?: CategoriesParams): Promise { const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/categories`); @@ -154,6 +159,8 @@ export async function fetchCategories(params?: CategoriesParams): Promise Date: Wed, 12 May 2021 15:54:02 +0200 Subject: [PATCH 034/144] [Discover][Dashboard] Fix creating filters for non-distinct data (#99400) * Fix creating filters for non-distinct values in the embedded search (#92876) * Fix creating non-unique filters in the visualization (#66595) --- .../create_filters_from_value_click.test.ts | 7 +++++++ .../filters/create_filters_from_value_click.ts | 5 ++++- .../filter_manager/lib/generate_filter.test.ts | 18 ++++++++++++++++++ .../filter_manager/lib/generate_filters.ts | 2 +- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts index 30667d59eff84..14ae24a2a5626 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts @@ -105,4 +105,11 @@ describe('createFiltersFromValueClick', () => { expect(rangeFilter.range.bytes.lt).toEqual(2078); } }); + + test('handles non-unique filters', async () => { + const [point] = dataPoints; + const filters = await createFiltersFromValueClickAction({ data: [point, point] }); + + expect(filters.length).toEqual(1); + }); }); diff --git a/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts b/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts index fb8240a0cdc27..13cb9ba419bf9 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_value_click.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import _ from 'lodash'; import { Datatable } from '../../../../../plugins/expressions/public'; import { esFilters, Filter } from '../../../public'; import { getIndexPatterns, getSearchService } from '../../../public/services'; @@ -140,5 +141,7 @@ export const createFiltersFromValueClickAction = async ({ }) ); - return esFilters.mapAndFlattenFilters(filters); + return _.uniqWith(esFilters.mapAndFlattenFilters(filters), (a, b) => + esFilters.compareFilters(a, b, esFilters.COMPARE_ALL_OPTIONS) + ); }; diff --git a/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts b/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts index 1a29a57ff058a..0daaf804e7b40 100644 --- a/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts +++ b/src/plugins/data/public/query/filter_manager/lib/generate_filter.test.ts @@ -174,4 +174,22 @@ describe('Generate filters', () => { [FIELD.name]: ANOTHER_PHRASE, }); }); + + it('should use only distinct values', () => { + const ANOTHER_PHRASE = 'another-value'; + const filters = generateFilters( + mockFilterManager, + FIELD, + [PHRASE_VALUE, ANOTHER_PHRASE, PHRASE_VALUE, ANOTHER_PHRASE], + '', + INDEX_NAME + ); + expect(filters).toHaveLength(2); + expect((filters[0] as PhraseFilter).query.match_phrase).toEqual({ + [FIELD.name]: PHRASE_VALUE, + }); + expect((filters[1] as PhraseFilter).query.match_phrase).toEqual({ + [FIELD.name]: ANOTHER_PHRASE, + }); + }); }); diff --git a/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts b/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts index 9a52a02edcd4e..0a4998a159523 100644 --- a/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts +++ b/src/plugins/data/public/query/filter_manager/lib/generate_filters.ts @@ -71,7 +71,7 @@ export function generateFilters( operation: string, index: string ): Filter[] { - values = Array.isArray(values) ? values : [values]; + values = Array.isArray(values) ? _.uniq(values) : [values]; const fieldObj = (_.isObject(field) ? field : { From a900110a344b2be4bd2d3fc0b89379691a84a830 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Wed, 12 May 2021 16:58:24 +0300 Subject: [PATCH 035/144] [TSVB] Filter by clicking on the timeseries chart (#97426) * WIP TSVB filter by click * Disable filter click when showBar is set to false * Exclude metric columns as they are not filtered * Allow filters group by filter click event * Fix CI and unit tests * Add some comments * Move to separate function for easier testing * Add more unit tests * Add a functional test * Improve types * Fix bug with group by filters and user applies custom labels * fix time filter bug * Address PR comments Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../common/enums/metric_types.ts | 1 + .../lib/convert_series_to_datatable.test.ts | 50 ++++- .../lib/convert_series_to_datatable.ts | 95 ++++++-- .../lib/get_click_filter_data.test.ts | 207 ++++++++++++++++++ .../components/lib/get_click_filter_data.ts | 57 +++++ .../application/components/lib/types.ts | 12 + .../components/timeseries_visualization.tsx | 35 ++- .../components/vis_types/gauge/vis.js | 1 + .../application/components/vis_types/index.ts | 6 +- .../components/vis_types/markdown/vis.js | 1 + .../components/vis_types/metric/vis.js | 1 + .../components/vis_types/timeseries/vis.js | 4 +- .../components/vis_types/top_n/vis.js | 1 + .../application/components/vis_with_splits.js | 1 + .../visualizations/views/timeseries/index.js | 6 + .../public/metrics_type.ts | 2 +- .../public/embeddable/visualize_embeddable.ts | 8 + .../apps/visualize/_tsvb_time_series.ts | 41 +++- 18 files changed, 492 insertions(+), 37 deletions(-) create mode 100644 src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.test.ts create mode 100644 src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.ts create mode 100644 src/plugins/vis_type_timeseries/public/application/components/lib/types.ts diff --git a/src/plugins/vis_type_timeseries/common/enums/metric_types.ts b/src/plugins/vis_type_timeseries/common/enums/metric_types.ts index 17352f0f9da25..8e2bc8f346eb6 100644 --- a/src/plugins/vis_type_timeseries/common/enums/metric_types.ts +++ b/src/plugins/vis_type_timeseries/common/enums/metric_types.ts @@ -27,6 +27,7 @@ export enum METRIC_TYPES { // We should probably use BUCKET_TYPES from data plugin in future. export enum BUCKET_TYPES { TERMS = 'terms', + FILTERS = 'filters', } export const EXTENDED_STATS_TYPES = [ diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.test.ts b/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.test.ts index df0874fdd73ec..ff7b2f497fd70 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.test.ts +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.test.ts @@ -15,6 +15,18 @@ jest.mock('../../../services', () => { getDataStart: jest.fn(() => { return { indexPatterns: jest.fn(), + query: { + timefilter: { + timefilter: { + getTime: jest.fn(() => { + return { + from: '2021-04-30T16:42:24.502Z', + to: '2021-05-05T14:42:24.502Z', + }; + }), + }, + }, + }, }; }), }; @@ -25,9 +37,12 @@ describe('convert series to datatables', () => { beforeEach(() => { const fieldMap: Record = { - test1: { name: 'test1', spec: { type: 'date' } } as IndexPatternField, - test2: { name: 'test2' } as IndexPatternField, - test3: { name: 'test3', spec: { type: 'boolean' } } as IndexPatternField, + test1: { name: 'test1', spec: { type: 'date', name: 'test1' } } as IndexPatternField, + test2: { + name: 'test2', + spec: { type: 'number', name: 'Average of test2' }, + } as IndexPatternField, + test3: { name: 'test3', spec: { type: 'boolean', name: 'test3' } } as IndexPatternField, }; const getFieldByName = (name: string): IndexPatternField | undefined => fieldMap[name]; @@ -41,8 +56,8 @@ describe('convert series to datatables', () => { describe('addMetaColumns()', () => { test('adds the correct meta to a date column', () => { - const columns = [{ id: 0, name: 'test1', isSplit: false }]; - const columnsWithMeta = addMetaToColumns(columns, indexPattern, 'count'); + const columns = [{ id: 0, name: 'test1', isMetric: true, type: 'date_histogram' }]; + const columnsWithMeta = addMetaToColumns(columns, indexPattern); expect(columnsWithMeta).toEqual([ { id: '0', @@ -54,6 +69,13 @@ describe('convert series to datatables', () => { enabled: true, indexPatternId: 'index1', type: 'date_histogram', + schema: 'metric', + params: { + timeRange: { + from: '2021-04-30T16:42:24.502Z', + to: '2021-05-05T14:42:24.502Z', + }, + }, }, type: 'date', }, @@ -63,8 +85,8 @@ describe('convert series to datatables', () => { }); test('adds the correct meta to a non date column', () => { - const columns = [{ id: 1, name: 'Average of test2', isSplit: false }]; - const columnsWithMeta = addMetaToColumns(columns, indexPattern, 'avg'); + const columns = [{ id: 1, name: 'test2', isMetric: true, type: 'avg' }]; + const columnsWithMeta = addMetaToColumns(columns, indexPattern); expect(columnsWithMeta).toEqual([ { id: '1', @@ -76,17 +98,21 @@ describe('convert series to datatables', () => { enabled: true, indexPatternId: 'index1', type: 'avg', + schema: 'metric', + params: { + field: 'Average of test2', + }, }, type: 'number', }, - name: 'Average of test2', + name: 'test2', }, ]); }); test('adds the correct meta for a split column', () => { - const columns = [{ id: 2, name: 'test3', isSplit: true }]; - const columnsWithMeta = addMetaToColumns(columns, indexPattern, 'avg'); + const columns = [{ id: 2, name: 'test3', isMetric: false, type: 'terms' }]; + const columnsWithMeta = addMetaToColumns(columns, indexPattern); expect(columnsWithMeta).toEqual([ { id: '2', @@ -98,6 +124,10 @@ describe('convert series to datatables', () => { enabled: true, indexPatternId: 'index1', type: 'terms', + schema: 'group', + params: { + field: 'test3', + }, }, type: 'boolean', }, diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.ts b/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.ts index 35506f9e62081..19a1910afbe2f 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.ts +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_datatable.ts @@ -6,51 +6,74 @@ * Side Public License, v 1. */ import { IndexPattern } from 'src/plugins/data/public'; -import { - Datatable, - DatatableRow, - DatatableColumn, - DatatableColumnType, -} from 'src/plugins/expressions/public'; +import { DatatableRow, DatatableColumn, DatatableColumnType } from 'src/plugins/expressions/public'; +import { Query } from 'src/plugins/data/common'; import { TimeseriesVisParams } from '../../../types'; import type { PanelData } from '../../../../common/types'; +import { BUCKET_TYPES } from '../../../../common/enums'; import { fetchIndexPattern } from '../../../../common/index_patterns_utils'; import { getDataStart } from '../../../services'; import { X_ACCESSOR_INDEX } from '../../visualizations/constants'; +import type { TSVBTables } from './types'; -interface TSVBTables { - [key: string]: Datatable; +interface FilterParams { + filter?: Query; + label?: string; + field?: string; } interface TSVBColumns { id: number; name: string; - isSplit: boolean; + isMetric: boolean; + type: string; + params?: FilterParams[]; } export const addMetaToColumns = ( columns: TSVBColumns[], - indexPattern: IndexPattern, - metricsType: string + indexPattern: IndexPattern ): DatatableColumn[] => { return columns.map((column) => { const field = indexPattern.getFieldByName(column.name); const type = (field?.spec.type as DatatableColumnType) || 'number'; + + let params: unknown = { + field: field?.spec.name, + }; + if (column.type === BUCKET_TYPES.FILTERS && column.params) { + const filters = column.params.map((col) => ({ + input: col.filter, + label: col.label, + })); + params = { + filters, + }; + } else if (column.type === 'date_histogram') { + const { query } = getDataStart(); + const timeRange = query.timefilter.timefilter.getTime(); + params = { + timeRange, + }; + } + const cleanedColumn = { id: column.id.toString(), name: column.name, meta: { type, - field: column.name, + field: field?.spec.name, index: indexPattern.title, source: 'esaggs', sourceParams: { enabled: true, indexPatternId: indexPattern?.id, - type: type === 'date' ? 'date_histogram' : column.isSplit ? 'terms' : metricsType, + type: column.type, + schema: column.isMetric ? 'metric' : 'group', + params, }, }, - }; + } as DatatableColumn; return cleanedColumn; }); }; @@ -73,30 +96,58 @@ export const convertSeriesToDataTable = async ( usedIndexPattern = indexPattern; } } - const isGroupedByTerms = layer.split_mode === 'terms'; + const isGroupedByTerms = layer.split_mode === BUCKET_TYPES.TERMS; + const isGroupedByFilters = layer.split_mode === BUCKET_TYPES.FILTERS; const seriesPerLayer = series.filter((s) => s.seriesId === layer.id); let id = X_ACCESSOR_INDEX; const columns: TSVBColumns[] = [ - { id, name: usedIndexPattern.timeFieldName || '', isSplit: false }, + { + id, + name: usedIndexPattern.timeFieldName || '', + isMetric: false, + type: 'date_histogram', + }, ]; + if (seriesPerLayer.length) { id++; - columns.push({ id, name: seriesPerLayer[0].splitByLabel, isSplit: false }); - // Adds an extra column, if the layer is split by terms aggregation + const metrics = layer.metrics; + columns.push({ + id, + name: metrics[metrics.length - 1].field || seriesPerLayer[0].splitByLabel, + isMetric: true, + type: metrics[metrics.length - 1].type, + }); + + // Adds an extra column, if the layer is split by terms or filters aggregation if (isGroupedByTerms) { id++; - columns.push({ id, name: layer.terms_field || '', isSplit: true }); + columns.push({ + id, + name: layer.terms_field || '', + isMetric: false, + type: BUCKET_TYPES.TERMS, + }); + } else if (isGroupedByFilters) { + id++; + columns.push({ + id, + name: BUCKET_TYPES.FILTERS, + isMetric: false, + params: layer?.split_filters as FilterParams[], + type: BUCKET_TYPES.FILTERS, + }); } } - const columnsWithMeta = addMetaToColumns(columns, usedIndexPattern, layer.metrics[0].type); - + const columnsWithMeta = addMetaToColumns(columns, usedIndexPattern); + const filtersColumn = columns.find((col) => col.type === BUCKET_TYPES.FILTERS); let rows: DatatableRow[] = []; for (let j = 0; j < seriesPerLayer.length; j++) { const data = seriesPerLayer[j].data.map((rowData) => { const row: DatatableRow = [rowData[0], rowData[1]]; // If the layer is split by terms aggregation, the data array should also contain the split value. - if (isGroupedByTerms) { + if (isGroupedByTerms || filtersColumn) { row.push(seriesPerLayer[j].label); } return row; diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.test.ts b/src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.test.ts new file mode 100644 index 0000000000000..2b9a1f930c15a --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.test.ts @@ -0,0 +1,207 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { XYChartSeriesIdentifier, GeometryValue } from '@elastic/charts'; +import { getClickFilterData } from './get_click_filter_data'; +import type { TSVBTables } from './types'; +import { TimeseriesVisParams } from '../../../types'; + +describe('getClickFilterData', () => { + test('gets the correct data for a group by everything timeseries chart', () => { + const points = [ + [ + { + x: 1620032400000, + y: 72, + accessor: 'y1', + datum: [1620032400000, 72], + }, + { + key: + 'groupId{yaxis_50589930-ad98-11eb-b6f6-59011d7388b7_main_group}spec{61ca57f1-469d-11e7-af02-69e470af7417}yAccessor{1}splitAccessors{}', + specId: '61ca57f1-469d-11e7-af02-69e470af7417', + yAccessor: 1, + }, + ], + ] as Array<[GeometryValue, XYChartSeriesIdentifier]>; + const tables = { + '61ca57f1-469d-11e7-af02-69e470af7417': { + type: 'datatable', + rows: [ + [1620010800000, 8], + [1620021600000, 33], + [1620032400000, 72], + [1620043200000, 66], + [1620054000000, 36], + [1620064800000, 11], + ], + columns: [ + { + id: '0', + name: 'timestamp', + meta: { + type: 'date', + field: 'timestamp', + index: 'kibana_sample_data_logs', + source: 'esaggs', + sourceParams: { + enabled: true, + indexPatternId: '90943e30-9a47-11e8-b64d-95841ca0b247', + type: 'date_histogram', + schema: 'group', + params: { + field: 'timestamp', + }, + }, + }, + }, + { + id: '1', + name: 'Count', + meta: { + type: 'number', + index: 'kibana_sample_data_logs', + source: 'esaggs', + sourceParams: { + enabled: true, + indexPatternId: '90943e30-9a47-11e8-b64d-95841ca0b247', + type: 'count', + schema: 'metric', + params: {}, + }, + }, + }, + ], + }, + } as TSVBTables; + const model = { + series: [ + { + id: '61ca57f1-469d-11e7-af02-69e470af7417', + split_mode: 'everything', + }, + ], + } as TimeseriesVisParams; + const data = getClickFilterData(points, tables, model); + expect(data[0].column).toEqual(0); + expect(data[0].row).toEqual(2); + expect(data[0].value).toEqual(points[0][0].x); + }); + + test('gets the correct data for a group by terms timeseries chart', () => { + const points = [ + [ + { + x: 1619481600000, + y: 3, + accessor: 'y1', + datum: [1619481600000, 3], + }, + { + key: + 'groupId{yaxis_6e0353a0-ad9b-11eb-b112-89cce8e43380_main_group}spec{61ca57f1-469d-11e7-af02-69e470af7417:1}yAccessor{1}splitAccessors{}', + specId: '61ca57f1-469d-11e7-af02-69e470af7417:1', + }, + ], + ] as Array<[GeometryValue, XYChartSeriesIdentifier]>; + const tables = { + '61ca57f1-469d-11e7-af02-69e470af7417': { + type: 'datatable', + rows: [ + [1619449200000, 31, 0], + [1619460000000, 36, 0], + [1619470800000, 35, 0], + [1619481600000, 40, 0], + [1619492400000, 38, 0], + [1619503200000, 30, 0], + [1620172800000, 0, 0], + [1619449200000, 4, 1], + [1619460000000, 4, 1], + [1619470800000, 3, 1], + [1619481600000, 3, 1], + [1619492400000, 2, 1], + [1619503200000, 3, 1], + ], + columns: [ + { + id: '0', + name: 'timestamp', + meta: { + type: 'date', + field: 'timestamp', + index: 'kibana_sample_data_flights', + source: 'esaggs', + sourceParams: { + enabled: true, + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + type: 'date_histogram', + schema: 'group', + params: { + field: 'timestamp', + }, + }, + }, + }, + { + id: '1', + name: 'Count', + meta: { + type: 'number', + index: 'kibana_sample_data_flights', + source: 'esaggs', + sourceParams: { + enabled: true, + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + type: 'count', + schema: 'metric', + params: {}, + }, + }, + }, + { + id: '2', + name: 'Cancelled', + meta: { + type: 'boolean', + field: 'Cancelled', + index: 'kibana_sample_data_flights', + source: 'esaggs', + sourceParams: { + enabled: true, + indexPatternId: 'd3d7af60-4c81-11e8-b3d7-01146121b73d', + type: 'terms', + schema: 'group', + params: { + field: 'Cancelled', + }, + }, + }, + }, + ], + }, + } as TSVBTables; + const model = { + series: [ + { + id: '61ca57f1-469d-11e7-af02-69e470af7417', + split_mode: 'terms', + }, + ], + } as TimeseriesVisParams; + const data = getClickFilterData(points, tables, model); + expect(data.length).toEqual(2); + expect(data[0].column).toEqual(0); + expect(data[0].row).toEqual(10); + expect(data[0].value).toEqual(points[0][0].x); + + expect(data[1].column).toEqual(2); + expect(data[1].row).toEqual(10); + // expect(data).toEqual([]); + const splitValue = points[0][1].specId.split(':'); + expect(data[1].value).toEqual(parseInt(splitValue[1], 10)); + }); +}); diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.ts b/src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.ts new file mode 100644 index 0000000000000..a6e35aa6e1032 --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/get_click_filter_data.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { XYChartSeriesIdentifier, GeometryValue } from '@elastic/charts'; +import { ValueClickContext } from 'src/plugins/embeddable/public'; +import { X_ACCESSOR_INDEX } from '../../visualizations/constants'; +import { BUCKET_TYPES } from '../../../../common/enums'; +import { TimeseriesVisParams } from '../../../types'; +import type { TSVBTables } from './types'; + +export const getClickFilterData = ( + points: Array<[GeometryValue, XYChartSeriesIdentifier]>, + tables: TSVBTables, + model: TimeseriesVisParams +) => { + const data: ValueClickContext['data']['data'] = []; + points.forEach((point) => { + const [geometry] = point; + const { specId } = point[1]; + // specId for a split series has the format + // 61ca57f1-469d-11e7-af02-69e470af7417:Men's Accessories, : + const [layerId, splitLabel] = specId.split(':'); + const table = tables[layerId]; + + const layer = model.series.filter(({ id }) => id === layerId); + let label = splitLabel; + // compute label for filters split mode + if (splitLabel && layer.length && layer[0].split_mode === BUCKET_TYPES.FILTERS) { + const filter = layer[0]?.split_filters?.filter(({ id }) => id === splitLabel); + label = filter?.[0].label || (filter?.[0].filter?.query as string); + } + const index = table.rows.findIndex((row) => { + const condition = + geometry.x === row[X_ACCESSOR_INDEX] && geometry.y === row[X_ACCESSOR_INDEX + 1]; + return splitLabel ? condition && row[X_ACCESSOR_INDEX + 2].toString() === label : condition; + }); + if (index < 0) return; + + // Filter out the metric column + const bucketCols = table.columns.filter((col) => col.meta.sourceParams?.schema === 'group'); + + const newData = bucketCols.map(({ id }) => ({ + table, + column: parseInt(id, 10), + row: index, + value: table.rows[index][id] ?? null, + })); + if (newData.length) { + data.push(...newData); + } + }); + return data; +}; diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/types.ts b/src/plugins/vis_type_timeseries/public/application/components/lib/types.ts new file mode 100644 index 0000000000000..fee6670b49b9c --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/types.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { Datatable } from 'src/plugins/expressions/public'; + +export interface TSVBTables { + [key: string]: Datatable; +} diff --git a/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx b/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx index 9683089094054..5391bf319ee57 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx @@ -12,7 +12,7 @@ import React, { useCallback, useEffect } from 'react'; import { get } from 'lodash'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; - +import { XYChartSeriesIdentifier, GeometryValue } from '@elastic/charts'; import { IUiSettingsClient } from 'src/core/public'; import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; import { PersistedState } from 'src/plugins/visualizations/public'; @@ -27,6 +27,7 @@ import { fetchIndexPattern } from '../../../common/index_patterns_utils'; import { TimeseriesVisParams } from '../../types'; import { getDataStart } from '../../services'; import { convertSeriesToDataTable } from './lib/convert_series_to_datatable'; +import { getClickFilterData } from './lib/get_click_filter_data'; import { X_ACCESSOR_INDEX } from '../visualizations/constants'; import { LastValueModeIndicator } from './last_value_mode_indicator'; import { getInterval } from './lib/get_interval'; @@ -102,6 +103,37 @@ function TimeseriesVisualization({ [handlers, model] ); + const handleFilterClick = useCallback( + async (series: PanelData[], points: Array<[GeometryValue, XYChartSeriesIdentifier]>) => { + const indexPatternValue = model.index_pattern || ''; + const { indexPatterns } = getDataStart(); + const { indexPattern } = await fetchIndexPattern(indexPatternValue, indexPatterns); + + // it should work only if index pattern is found + if (!indexPattern) return; + + const tables = indexPattern + ? await convertSeriesToDataTable(model, series, indexPattern) + : null; + + if (!tables) return; + + const data = getClickFilterData(points, tables, model); + + const event = { + name: 'filterBucket', + data: { + data, + negate: false, + timeFieldName: indexPattern.timeFieldName, + }, + }; + + handlers.event(event); + }, + [handlers, model] + ); + const handleUiState = useCallback( (field: string, value: { column: string; order: string }) => { uiState.set(field, value); @@ -156,6 +188,7 @@ function TimeseriesVisualization({ visData={visData} uiState={uiState} onBrush={onBrush} + onFilterClick={handleFilterClick} onUiState={handleUiState} syncColors={syncColors} palettesService={palettesService} diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js index ee02f9c5e1b9d..a464771b01af3 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js @@ -85,6 +85,7 @@ GaugeVisualization.propTypes = { additionalLabel: PropTypes.string, model: PropTypes.object, onBrush: PropTypes.func, + onFilterClick: PropTypes.func, onChange: PropTypes.func, visData: PropTypes.object, getConfig: PropTypes.func, diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts b/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts index 16cf8e8a1de27..544e2bf49690a 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts @@ -7,7 +7,7 @@ */ import React, { lazy } from 'react'; - +import { XYChartSeriesIdentifier, GeometryValue } from '@elastic/charts'; import { IUiSettingsClient } from 'src/core/public'; import { PersistedState } from 'src/plugins/visualizations/public'; import { PaletteRegistry } from 'src/plugins/charts/public'; @@ -45,6 +45,10 @@ export const TimeseriesVisTypes: Record Promise; + onFilterClick: ( + series: PanelData[], + points: Array<[GeometryValue, XYChartSeriesIdentifier]> + ) => Promise; onUiState: ( field: string, value: { diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js index 6510ad24615a6..ef6b30be30a30 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js @@ -91,6 +91,7 @@ MarkdownVisualization.propTypes = { className: PropTypes.string, model: PropTypes.object, onBrush: PropTypes.func, + onFilterClick: PropTypes.func, onChange: PropTypes.func, visData: PropTypes.object, getConfig: PropTypes.func, diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js index 2b58145a4928d..3029bba04b450 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js @@ -79,6 +79,7 @@ MetricVisualization.propTypes = { additionalLabel: PropTypes.string, model: PropTypes.object, onBrush: PropTypes.func, + onFilterClick: PropTypes.func, onChange: PropTypes.func, visData: PropTypes.object, getConfig: PropTypes.func, diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js index 29560c4bd9368..8e59e8e1bb628 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js @@ -26,6 +26,7 @@ class TimeseriesVisualization extends Component { static propTypes = { model: PropTypes.object, onBrush: PropTypes.func, + onFilterClick: PropTypes.func, visData: PropTypes.object, getConfig: PropTypes.func, }; @@ -136,7 +137,7 @@ class TimeseriesVisualization extends Component { }; render() { - const { model, visData, onBrush, syncColors, palettesService } = this.props; + const { model, visData, onBrush, onFilterClick, syncColors, palettesService } = this.props; const series = get(visData, `${model.id}.series`, []); const interval = getInterval(visData, model); const yAxisIdGenerator = htmlIdGenerator('yaxis'); @@ -230,6 +231,7 @@ class TimeseriesVisualization extends Component { series={series} yAxis={yAxis} onBrush={onBrush} + onFilterClick={onFilterClick} backgroundColor={model.background_color} showGrid={Boolean(model.show_grid)} legend={Boolean(model.show_legend)} diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js index 8150d2e4d6e1b..41e6236cbc39b 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js @@ -96,6 +96,7 @@ TopNVisualization.propTypes = { className: PropTypes.string, model: PropTypes.object, onBrush: PropTypes.func, + onFilterClick: PropTypes.func, onChange: PropTypes.func, visData: PropTypes.object, getConfig: PropTypes.func, diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_with_splits.js b/src/plugins/vis_type_timeseries/public/application/components/vis_with_splits.js index 7dc6a26185e2b..4b933bc81d882 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_with_splits.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_with_splits.js @@ -109,6 +109,7 @@ export function visWithSplits(WrappedComponent) { model={model} visData={newVisData} onBrush={props.onBrush} + onFilterClick={props.onFilterClick} additionalLabel={additionalLabel || emptyLabel} backgroundColor={props.backgroundColor} getConfig={props.getConfig} diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js index 44c1742e144be..a4d834ea8d217 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js @@ -61,6 +61,7 @@ export const TimeSeries = ({ series, yAxis, onBrush, + onFilterClick, xAxisFormatter, annotations, syncColors, @@ -118,6 +119,10 @@ export const TimeSeries = ({ onBrush(min, max, series); }; + const handleElementClick = (points) => { + onFilterClick(series, points); + }; + const getSeriesColor = useCallback( (seriesName, seriesGroupId, seriesId) => { const seriesById = series.filter((s) => s.seriesId === seriesGroupId); @@ -142,6 +147,7 @@ export const TimeSeries = ({ showLegendExtra={true} legendPosition={legendPosition} onBrushEnd={onBrushEndListener} + onElementClick={(args) => handleElementClick(args)} animateData={false} onPointerUpdate={handleCursorUpdate} theme={[ diff --git a/src/plugins/vis_type_timeseries/public/metrics_type.ts b/src/plugins/vis_type_timeseries/public/metrics_type.ts index 66128b2abe856..11585433205e5 100644 --- a/src/plugins/vis_type_timeseries/public/metrics_type.ts +++ b/src/plugins/vis_type_timeseries/public/metrics_type.ts @@ -75,7 +75,7 @@ export const metricsVisDefinition = { }, toExpressionAst, getSupportedTriggers: () => { - return [VIS_EVENT_TO_TRIGGER.brush]; + return [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush]; }, inspectorAdapters: {}, getUsedIndexPattern: async (params: VisParams) => { diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts index 3bb52eb15758a..f5bf6b59aa0ae 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts @@ -337,6 +337,14 @@ export class VisualizeEmbeddable data: { timeFieldName: this.vis.data.indexPattern?.timeFieldName!, ...event.data }, }; } + // do not trigger the filter click event if the filter bar is not visible + if ( + triggerId === VIS_EVENT_TO_TRIGGER.filter && + !this.input.id && + !this.vis.type.options.showFilterBar + ) { + return; + } getUiActions().getTrigger(triggerId).exec(context); } diff --git a/test/functional/apps/visualize/_tsvb_time_series.ts b/test/functional/apps/visualize/_tsvb_time_series.ts index 85d445bc34e6c..58e8cd8dd0d46 100644 --- a/test/functional/apps/visualize/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/_tsvb_time_series.ts @@ -11,9 +11,18 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const { visualize, visualBuilder } = getPageObjects(['visualBuilder', 'visualize']); + const { visualize, visualBuilder, timeToVisualize, dashboard } = getPageObjects([ + 'visualBuilder', + 'visualize', + 'timeToVisualize', + 'dashboard', + ]); + const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const filterBar = getService('filterBar'); + const elasticChart = getService('elasticChart'); const log = getService('log'); + const browser = getService('browser'); const kibanaServer = getService('kibanaServer'); describe('visual builder', function describeIndexTests() { @@ -140,6 +149,36 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); }); + + describe('Clicking on the chart', () => { + it(`should create a filter`, async () => { + await visualBuilder.setMetricsGroupByTerms('machine.os.raw'); + await visualBuilder.clickSeriesOption(); + await testSubjects.click('visualizeSaveButton'); + + await timeToVisualize.saveFromModal('My TSVB viz 1', { + addToDashboard: 'new', + saveToLibrary: false, + }); + + await dashboard.waitForRenderComplete(); + const el = await elasticChart.getCanvas(); + // click on specific coordinates + await browser + .getActions() + .move({ x: 100, y: 110, origin: el._webElement }) + .click() + .perform(); + + await retry.try(async () => { + await testSubjects.click('applyFiltersPopoverButton'); + await testSubjects.missingOrFail('applyFiltersPopoverButton'); + }); + + const hasMachineRawFilter = await filterBar.hasFilter('machine.os.raw', 'win 7'); + expect(hasMachineRawFilter).to.be(true); + }); + }); }); }); } From 67595786a77b0b71a2e917a7a21d5db6ada7d5a8 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Wed, 12 May 2021 09:27:11 -0500 Subject: [PATCH 036/144] [packages] Move @kbn/telemetry-tools to Bazel (#99726) --- .../monorepo-packages.asciidoc | 1 + package.json | 2 +- packages/BUILD.bazel | 1 + packages/kbn-telemetry-tools/BUILD.bazel | 97 +++++++++++++++++++ packages/kbn-telemetry-tools/babel.config.js | 12 --- packages/kbn-telemetry-tools/package.json | 5 - packages/kbn-telemetry-tools/tsconfig.json | 3 +- yarn.lock | 2 +- 8 files changed, 103 insertions(+), 20 deletions(-) create mode 100644 packages/kbn-telemetry-tools/BUILD.bazel delete mode 100644 packages/kbn-telemetry-tools/babel.config.js diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index cba5b9bfadf98..3d6fd6c98dd95 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -84,6 +84,7 @@ yarn kbn watch-bazel - @kbn/securitysolution-utils - @kbn/securitysolution-io-ts-utils - @kbn/std +- @kbn/telemetry-utils - @kbn/tinymath - @kbn/utility-types - @kbn/utils diff --git a/package.json b/package.json index aa8682d821bc2..28db2c5e94de1 100644 --- a/package.json +++ b/package.json @@ -457,7 +457,7 @@ "@kbn/plugin-helpers": "link:packages/kbn-plugin-helpers", "@kbn/pm": "link:packages/kbn-pm", "@kbn/storybook": "link:packages/kbn-storybook", - "@kbn/telemetry-tools": "link:packages/kbn-telemetry-tools", + "@kbn/telemetry-tools": "link:bazel-bin/packages/kbn-telemetry-tools/npm_module", "@kbn/test": "link:packages/kbn-test", "@kbn/test-subj-selector": "link:packages/kbn-test-subj-selector", "@loaders.gl/polyfills": "^2.3.5", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index e33b3d85b44ef..f4465d439e9f8 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -27,6 +27,7 @@ filegroup( "//packages/kbn-securitysolution-io-ts-utils:build", "//packages/kbn-securitysolution-utils:build", "//packages/kbn-std:build", + "//packages/kbn-telemetry-tools:build", "//packages/kbn-tinymath:build", "//packages/kbn-utility-types:build", "//packages/kbn-utils:build", diff --git a/packages/kbn-telemetry-tools/BUILD.bazel b/packages/kbn-telemetry-tools/BUILD.bazel new file mode 100644 index 0000000000000..4d1b4f21117c4 --- /dev/null +++ b/packages/kbn-telemetry-tools/BUILD.bazel @@ -0,0 +1,97 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-telemetry-tools" +PKG_REQUIRE_NAME = "@kbn/telemetry-tools" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/__fixture__/**", + "**/__snapshots__/**", + ] +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", + "GUIDELINE.md", +] + +SRC_DEPS = [ + "//packages/kbn-dev-utils", + "//packages/kbn-utility-types", + "@npm//glob", + "@npm//jest-styled-components", + "@npm//listr", + "@npm//normalize-path", + "@npm//tslib", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/glob", + "@npm//@types/jest", + "@npm//@types/listr", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/normalize-path", + "@npm//@types/testing-library__jest-dom", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-telemetry-tools/babel.config.js b/packages/kbn-telemetry-tools/babel.config.js deleted file mode 100644 index 68c67e549b74b..0000000000000 --- a/packages/kbn-telemetry-tools/babel.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -module.exports = { - presets: ['@kbn/babel-preset/node_preset'], - ignore: ['**/*.test.ts', '**/__fixture__/**'], -}; diff --git a/packages/kbn-telemetry-tools/package.json b/packages/kbn-telemetry-tools/package.json index 31fac5c043832..cd3fd3aa966c7 100644 --- a/packages/kbn-telemetry-tools/package.json +++ b/packages/kbn-telemetry-tools/package.json @@ -7,10 +7,5 @@ "private": true, "kibana": { "devOnly": true - }, - "scripts": { - "build": "../../node_modules/.bin/babel src --out-dir target --delete-dir-on-start --extensions .ts --source-maps=inline", - "kbn:bootstrap": "yarn build", - "kbn:watch": "yarn build --watch" } } \ No newline at end of file diff --git a/packages/kbn-telemetry-tools/tsconfig.json b/packages/kbn-telemetry-tools/tsconfig.json index 419af1d02f83b..926ebff17f639 100644 --- a/packages/kbn-telemetry-tools/tsconfig.json +++ b/packages/kbn-telemetry-tools/tsconfig.json @@ -1,10 +1,11 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": false, + "incremental": true, "outDir": "./target", "declaration": true, "declarationMap": true, + "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-telemetry-tools/src", "isolatedModules": true diff --git a/yarn.lock b/yarn.lock index 8a6dd285fb0e8..8c77a66cbf22b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2726,7 +2726,7 @@ version "0.0.0" uid "" -"@kbn/telemetry-tools@link:packages/kbn-telemetry-tools": +"@kbn/telemetry-tools@link:bazel-bin/packages/kbn-telemetry-tools/npm_module": version "0.0.0" uid "" From 497cc5a8e8f2ca28b91c85b276b96b07ea3a5559 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Wed, 12 May 2021 11:05:00 -0400 Subject: [PATCH 037/144] [Observability] update exploratory view title to analyze data (#99270) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../shared/exploratory_view/exploratory_view.test.tsx | 2 +- .../public/components/shared/exploratory_view/header/header.tsx | 2 +- .../public/components/shared/exploratory_view/index.tsx | 2 +- x-pack/plugins/observability/public/routes/index.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx index d95fad758565b..cf51c4614e543 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/exploratory_view.test.tsx @@ -43,7 +43,7 @@ describe('ExploratoryView', () => { await waitFor(() => { screen.getByText(/open in lens/i); - screen.getByRole('heading', { name: /exploratory view/i }); + screen.getByRole('heading', { name: /analyze data/i }); }); }); diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx index 9d051e89e1a38..8f2f30185d37f 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/header/header.tsx @@ -33,7 +33,7 @@ export function ExploratoryViewHeader({ seriesId, lensAttributes }: Props) {

{DataViewLabels[series.reportType] ?? i18n.translate('xpack.observability.expView.heading.label', { - defaultMessage: 'Exploratory view', + defaultMessage: 'Analyze data', })}{' '} Date: Wed, 12 May 2021 11:05:28 -0400 Subject: [PATCH 038/144] [Uptime] remove extra response body docs external link icon (#99064) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../__snapshots__/doc_link_body.test.tsx.snap | 25 ------------------- .../__snapshots__/expanded_row.test.tsx.snap | 5 +--- .../monitor/ping_list/doc_link_body.test.tsx | 11 ++++++-- .../monitor/ping_list/doc_link_body.tsx | 4 +-- 4 files changed, 11 insertions(+), 34 deletions(-) delete mode 100644 x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/doc_link_body.test.tsx.snap diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/doc_link_body.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/doc_link_body.test.tsx.snap deleted file mode 100644 index 22dab492a94ae..0000000000000 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/doc_link_body.test.tsx.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`PingListExpandedRow renders expected elements for valid props 1`] = ` - - - docs -   - - , - } - } - /> - -`; diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap index 8ace0445d0eb7..377a2c9389bbd 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap @@ -174,10 +174,7 @@ exports[`PingListExpandedRow renders link to docs if body is not recorded but it rel="noopener" target="_blank" > - docs  - + docs { it('renders expected elements for valid props', () => { - expect(shallowWithIntl()).toMatchSnapshot(); + render(); + + expect(screen.getByText(/Body not recorded. Read our/)); + expect( + screen.getByRole('link', { name: 'docs External link (opens in a new tab or window)' }) + ).toBeInTheDocument(); + expect(screen.getByText(/for more information on recording response bodies./)); }); }); diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/doc_link_body.tsx b/x-pack/plugins/uptime/public/components/monitor/ping_list/doc_link_body.tsx index 32d0b1e4122d8..67561022bce93 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/doc_link_body.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/doc_link_body.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { EuiIcon, EuiLink, EuiText } from '@elastic/eui'; +import { EuiLink, EuiText } from '@elastic/eui'; const bodyDocsLink = 'https://www.elastic.co/guide/en/beats/heartbeat/current/configuration-heartbeat-options.html#monitor-http-response'; @@ -20,8 +20,6 @@ export const DocLinkForBody = () => { defaultMessage: 'docs', description: 'Docs link to set response body', })} -   - ); From 4c8f44e6ce26eb808dc2adc81acebb171b08e6b1 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Wed, 12 May 2021 11:07:45 -0400 Subject: [PATCH 039/144] [Lens] Reframe Lens tutorials for our target users (#97339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Lens] Reframe Lens tutorials for our target users * Update all titles * Focus more on dashboard creation and simplified examples * Update screenshots and add title instructions * 📝 First draft of advanced tutorial in lens * Update first two tutorial sections from feedback * More review comments * Respond to feedback --- .../dashboard/images/lens_advanced_2_1.png | Bin 27337 -> 112012 bytes .../dashboard/images/lens_advanced_2_1_1.png | Bin 45378 -> 0 bytes ...advanced_3_1.gif => lens_advanced_2_2.gif} | Bin .../dashboard/images/lens_advanced_2_2.png | Bin 87132 -> 187398 bytes .../dashboard/images/lens_advanced_2_2_1.png | Bin 20700 -> 26894 bytes ...advanced_3_3.png => lens_advanced_2_3.png} | Bin .../dashboard/images/lens_advanced_3_1.png | Bin 0 -> 14003 bytes .../dashboard/images/lens_advanced_3_1_1.png | Bin 26894 -> 0 bytes .../dashboard/images/lens_advanced_3_2.png | Bin 46401 -> 35299 bytes .../dashboard/images/lens_advanced_4_1.png | Bin 155414 -> 209859 bytes .../dashboard/images/lens_advanced_4_2.png | Bin 115643 -> 0 bytes .../dashboard/images/lens_advanced_5_1.png | Bin 0 -> 27337 bytes .../dashboard/images/lens_advanced_5_2.png | Bin 0 -> 87132 bytes .../dashboard/images/lens_advanced_5_2_1.png | Bin 0 -> 20700 bytes .../dashboard/images/lens_advanced_6_1.png | Bin 0 -> 87054 bytes .../dashboard/images/lens_advanced_7_1.png | Bin 0 -> 57583 bytes .../dashboard/images/lens_advanced_result.png | Bin 468464 -> 816759 bytes docs/user/dashboard/lens-advanced.asciidoc | 297 ++++++++----- .../images/lens_end_to_end_1_1.png | Bin 226952 -> 0 bytes .../images/lens_end_to_end_1_2.png | Bin 70103 -> 41443 bytes .../images/lens_end_to_end_1_2_1.png | Bin 45450 -> 49847 bytes .../images/lens_end_to_end_1_3.png | Bin 192209 -> 137191 bytes .../images/lens_end_to_end_2_1.png | Bin 188010 -> 0 bytes .../images/lens_end_to_end_2_1_1.png | Bin 278650 -> 45936 bytes .../images/lens_end_to_end_2_1_2.png | Bin 0 -> 33931 bytes .../images/lens_end_to_end_4_3.png | Bin 34750 -> 38374 bytes .../images/lens_end_to_end_6_2.png | Bin 44281 -> 0 bytes .../images/lens_end_to_end_7_1.png | Bin 16263 -> 0 bytes .../images/lens_end_to_end_dashboard.png | Bin 567916 -> 263408 bytes ...create-a-dashboard-of-lens-panels.asciidoc | 406 ++++++++---------- 30 files changed, 377 insertions(+), 326 deletions(-) delete mode 100644 docs/user/dashboard/images/lens_advanced_2_1_1.png rename docs/user/dashboard/images/{lens_advanced_3_1.gif => lens_advanced_2_2.gif} (100%) rename docs/user/dashboard/images/{lens_advanced_3_3.png => lens_advanced_2_3.png} (100%) create mode 100644 docs/user/dashboard/images/lens_advanced_3_1.png delete mode 100644 docs/user/dashboard/images/lens_advanced_3_1_1.png delete mode 100644 docs/user/dashboard/images/lens_advanced_4_2.png create mode 100644 docs/user/dashboard/images/lens_advanced_5_1.png create mode 100644 docs/user/dashboard/images/lens_advanced_5_2.png create mode 100644 docs/user/dashboard/images/lens_advanced_5_2_1.png create mode 100644 docs/user/dashboard/images/lens_advanced_6_1.png create mode 100644 docs/user/dashboard/images/lens_advanced_7_1.png delete mode 100644 docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_1_1.png delete mode 100644 docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_2_1.png create mode 100644 docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_2_1_2.png delete mode 100644 docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_6_2.png delete mode 100644 docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_7_1.png diff --git a/docs/user/dashboard/images/lens_advanced_2_1.png b/docs/user/dashboard/images/lens_advanced_2_1.png index 5090f0d3b2841f46583d75c4e7376552ea6a5c97..dab32369d71a1d9cfe3e2b84a55f29faf062c3f1 100644 GIT binary patch literal 112012 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 E0D0k6GXMYp literal 27337 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 diff --git a/docs/user/dashboard/images/lens_advanced_2_1_1.png b/docs/user/dashboard/images/lens_advanced_2_1_1.png deleted file mode 100644 index f4d9ca488782e61d19dd54aa435fdefab87b842d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45378 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

q}JSDRAy_`dOg_ybG(c|a6|X8 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 b#pMTd&Ssl)ZNl9y#OEO^sU%S=1`7HgGYL8> diff --git a/docs/user/dashboard/images/lens_advanced_3_1.gif b/docs/user/dashboard/images/lens_advanced_2_2.gif similarity index 100% rename from docs/user/dashboard/images/lens_advanced_3_1.gif rename to docs/user/dashboard/images/lens_advanced_2_2.gif diff --git a/docs/user/dashboard/images/lens_advanced_2_2.png b/docs/user/dashboard/images/lens_advanced_2_2.png index 820bc3bd4dfa9e32f3ac2c64ed2d45f0c6010376..1d88bcd238ca30202621daba4e0aed5b25f9750a 100644 GIT binary patch literal 187398 zcmeFYWmFu^wg8F`?jC{@B)Gdva1HJWZiBnK1rpp{5&{Gb5Ijh5OK=bFZiBoga?ZK; zen0M7_x*T39&3iF?yjosyLRo`9jT%ugN96u3iwT{N;HpRPyr%87}M6Rtlqup#GxU$IF-5#E6Fa)?LPM4 z$@!q?RE>wj#~3e#FDH?YRUVwVbocSvgaN-~C??Yw%YV>6CNwI(0coRex({b?6CvdN zh4~0-&a#UtrVO6UaAcNoAS0`JP|<0@%f|5{+etX*q6AMo9Y=;QD($M>BLqFq6u{YZ zej9KD)ux@#e5V<{Xke9pFd|34$QgW6xFaNUk>V#s^24x^m0R+MfP1xHU@8}pdUEN9 zSQbRY%(F=KYx%YN5Bl%+=#tvV1+>jl*1JnD`rn2-J2@oopmH?ksp6n^im@68@W!L9 zi6S?UBSr)eBCZ96o{X7KpVCAZ=A-6ic8J?&26SMZ?v=1*l4O!V6SlPdjO)_7nQjT$ z(t2iBW({>DT%p0BtS~F?00pMTgEIYEIAo0uMeGZu&)=v1;R;cfZzx=kQ`SsNIM>G1BMhch@|iY-WW+6I!Y928mc}3`4i3_0;GcijLR9A zu*}$iSP}GO8QlY}NtDF{DXiU_6-EpbJzrGg1p#}|AcfvHBvWx=6>?m3DG6B>hD7K{ z3iw($UHBx?A{F>rln;S#M0@jUM$Jlbyr5hqU`L;9al{1mv7&JYFfDJh;+S`sfEfir z!vW4KJ`I?Lpp>saj>H4EhU-gy$Ej+UhS1TCm7_y&QCarTlqGE3s_1>vJh zthh14J@`K(SB$aQh*IHGDHVv!S&E^Zp`Ae!(VlVLrrX-`9|gGKGD3#Bn0qR^?RzI* z=~ZP-lkTyihfj3RtTsEo(j2Rj)kuCRpC`x52|JyVZ@vmf}dKe14p2v zl4G7@-z%&jgpSN**$C<*q-exlByU8fklhf&PDIrNOWCt$J=h$P&m-2m_*daqU#;q4 zN4^$6As?cQd;wqRG;T6ZqsFt1qZ4f_VVlla9J^s|bDwS111*rq;;_C+L`jm^8FX(R8dX>_BpifdTSteKgqk5&Y%w`R<1dj@jynBIt!U2v@ZFcM;V+*{Oz!~!v zno^PCd3t|_uHgCB_wbuft+9T!_ojCXH&bWfXsBpGXw(REsKZ34#N%jps2pfKPqMj5 zSo4Xm2_s{;pJcIlb&Q&SBAkhF>hbJ}uWEISsOt1caST6>h%A!L?2}9IN}w&4R4=w_ z+BToyo}l2MszI!wF|RYn7(&`maL&8dJas$8z)!|U!Y^Y=XS`u@W#mh~POeLiE2qB%9@*IyRuor%rUdpVD5cdRb=zPT}e z5&WY2#ooKgx8Y6>@(iLiF;q;eyu{n$d&2|L3bzdxLXRVR9c#%J-6g z!L67V#K+=p@8-8}x=RV3S#erQ+96(Pnyni;FU$Cn@x6T5u6tBy#&#%Wy z2BxM{cJ=llgCpPL4nI#-#+eQEzkd3<<;49c<%Z|V-`Kl4rCJYG1-b*e8~SOWZlGfz zUZ8TYLJ)h9b#PdaK`;U6bC|Jsr#N@m{7*u#M<(&GN~!nO_~@z0+Nab{QJ*YUxL3xH zk`Z|+IZf5Oex_}3baP}-ic!-#sjnr_4V2E8;?#Vq$v1yF>_xgy*h1YT6h_R!vLQMM z(SDdduZmm!xQgp&cf4~rn6_o;{0A?$;SJUpTh#lQL>6JgyL^PpY)Y)pqDs~e;5z*uwB$# zly4>T=kOO@W}?G8EAlQ$DZaGuu(0hX#JoWs2nnXFFBL!I=b(1B*a-jl?W302E9VzB8Va|)O%fHIh5aen|qssUqEn*|Cx!+u-a7iQf+eFU?A7bYG5`w zgPBEtQ4dr9lRvzp)MS*ACjUo9gKPVjogb3LgFAydvk!yX%9zxizr$b9+pqK5yxcmJ zT5|vBXjo%6^x4$!I0-xaUG+N_8&8|c+vO{XYm9!^?Op!KFXc;B&|k!wR}Q3?Vj=Qe z@~86N+)}pI^Mlj+&DRUbo_fqFjfwm7a`PXiXJ3*UE;bL@&V|_-F@)f`Gu%DjEjufl z)bO1iUh;DeUwYG&g&-jB=6A1p_Vdo5;|p;a(}w}KSMHnpeyy~A$`Iwj9P5jneWn?R zYmSG})cw}orp>&KHTo8rwh_t{gEa`fn55Z}Zdt`S%V43x%geXV1g!0N)&2H6m3v&+ zQ#*kkLCwpW>yeje-@{g=OC42zsw8}RU&i;o@zi7MxE{YUISl85_9BZ@SjSTi^8IF_ zYa+BH$>L-L^|PEVXv92o-zsD3VoQIuac#zaSZDqVWH+pkcXWxR^(}>@5=Je$F z`QUR!t%VA1L+6&sqv%~0w5Rq@W2Y7>d6teE#>V*yPR|sVGAtb6=bJn-oFO||Y3}@o zJqs=VEbE3-zV~pL6Y6uqhU2LT5*Bc|Cx zJ1ghSw~7~YDT|$(iJNA=(!N}GN_VuNAO!p7)Vuu4qP6vJ#$$)+ZCWkWUgxJ|e*XGT zu$G z=&A(;SYPl0zJ9BwgA!f92pFrPo5W}z9{zC7^0r7oAhws1YJz5?K<#=G3Q8XZ%BVT0Gbg00@R*TX|Lx-(;uy_knEUq+aHp(f zAtZ~D3qZshWu`4_uBZsb0JIUI;Gl`2;DHu2@D+xB@~^fuG#wP|ulq1iP~lckaDVzJ z0l$xb@xb?S%uCul?8s)UpbkX**jZ0 zxO6g<=mR&9z%O*1p`h?-9>37CYSc%-{8LsM+Ai9P3jD7e?3hhnJD8d=d)R>==YbOR z;0Ky^W-cb=9(K0&&io!il)rlL1MSD#ER^KGy13W~QEDrykV`l?nUQlbb27713L}$~ zlM6b%Hs@E9l>RduxDukYba4Umv#_|kyED6UFgrL|u(0v*@v*S7v#_%>0X>+UJ?&jg zJecgAseVuLcOFSI=T}ZvU>7R~d-BJ5O-vnJU4$qp9|8UA?>C-i9#;Q`WbgckEPz0k z$0sao%&aW`nj07@_;{CJ#md9XR$J1_4&WI8Lzs<=i&gN~fdBF6-ynYved%oGB;jBO zjC2wHH`o6R{?CX1ec&&cI{${r&BOhlAphgZpOJzrkEH(xD}M9&*Ij_o!pMRw{}P%o za#4tmKOjdED@kPy;1|%c$3JLbcLqiG`xj_K=M_X|a(#w^5`~hL6w~m4-pc|Rf4g)Ej?KP>lbDYLw_!7930nwpYN} z&4P1E+Ma?Nk6uF7(1Z0f{pYNuv>B%d=fmTHz9ANBkh+){^!nzex|R?eFY`P|=$ROCeQm-G#xY*d@(9qCphlht%6?pjg*h?~=o}MSdO+GZi)u)1! znNwOHkBkr2x!~ckUshr>SG1`hqoPuah=^QoB9S6H==(owLXJD}xnn~DlQRrKMsY5= zci^Bgp&ma4Sl{@W0e*k~a8cnJN{|@^SE+g|gH#CrYdO!&O-#nu2#*u**SY%gz(D_a;K=wx*ALwXcR(Ff8 z4AYeJI-oVG#OXpq!qik$;&IWh21;lXDBIW9))0@$qsQ5u3K4sa+)(k^e4fjF8!H#!)-V}T~6}N`|y2k4%5;F_ox){b7aH3F; zpMElE2LkkIsuDG3^_@BedeZM74I>$%J5Jk0m;9C^@0_F}o^3MgC*_MJMVV++y1gu6 z9zFRsLa#yx2SW}8!;A@@g4EB2z>*p-m%McL9Oaa2P z$c?e#vZKAh|%BRfj{0IcW zx$cQhyb2NdDYCv@X1&E|J`Hk_iLL~je#PBamA6XYrqbFxFxG4^FHN?W!iC*rJ4k-3 z0VXoHRTaM^f6LsxSwKa3F?V*X1m@cOOiAcA7a}X3_fT$JLBdvNsw^^T2dS%oz zv)ATPVxvBMH1Rnp7c*~@$4_`?j~St_72`nYioxM4CMLLa2o*Y_j-KYAtpRebw)w$mhGrnHwr>$(G>|p?zw6V`cjjRfvHG62S z!P^D`I6tC&O=FC^5+Kwya8PJCg!zh$?*y9G=t4K(DhrYR#T-tp`0@;>Qk{*fDiZBhq<`#D-c}}V`s<0q71O{vqVO`gjU#V%ND|=jmNL{}3L|U5B%yu(BZWk}yDXY|UlUn;+rBEbpDwsTr;lvL0gr3cq< zxY1v}y)L`Xpt# z73VB>+kK+VCqV<0sG$uKxnP0WUq0heWyskkroRMJeU*s}6|K*w?a6LbOQ};(Je(T2H|GZ+r+&H5uaDS!}lmxEB+w*n* zSjWG}{?&jWiSmBR!E<^v3g8n^0$d+)ntaFjC7<6?`qzIIN@zq74W&53pQ-4$U`X-M zk$(`r+mU`x6c+Yhu>R$dfIE9M%d{LfX@+}DYm+_z-cdM7fA9{Fejm6J2g;#1iWdMIW)iWng1jR#q#-R7c|>=--O|hdFN*D3t?#I8@Ox)00!pLG1IZHvQd z^gP$8oAm>cjx3W3@hWr(EFRC_zPW=)4U8mo`Oy9yy#5B9M+B!&Y&0t+lc>b$Sy^)j zV|pwm8dykmpu9E(e`288COzYdlmWB0&AHf!X*Nf2<9j}G8`$vUp2o%+HW2T`oieD95NPkHu$f(^V!rBMw zFMESqf`5D@VDo=5pO)`*C%O#M6jE!v0al`cz;x zt}L~#!`mpzNin8lft;>pSQ?M&k}g<8P{lQB(VtQ6S#a~@B)IQV!J@rNhVg;%88SaQ zPb3e{Fn3`7L;(Mx;(=<<+Jmpc-wk7f6zuiensCu@J48KQ-BZX(8Zzj1ej6SX^d?e+ z6z_5!MqD;8%al+|^!r^O2NmppRE6h=bg&4D#FOy@*w2FkPj(KJ#CgFys^39>Ol25H zr4{tO(m=`w`j7fNTHW6d zVG!VHFlo$5uA6ka4w|(z`VgnRAP6L zR>(zlK12}EGpBnRCoilkB7&HyB;o&3#tqYd2~`pbiykxB+2M!?vUf&i_$SF$Kg&fW z)!LcgEC!UPCG70FBa2PPRKK6bYc`v1HCcjo+mkuy%xybV6r>;}yqs+t;=hC;|F zC=;3t7kho`ALC&`$jHc+{r-me24CF9{EM4k7&N&!=GL-RXAAgeR~R-@3OvEXlLB_e zMU%(ndY{K@w^`J8C(EsRp0gyhwfVoVi~SW`wUYuGv6mMj_%DVeW+y1hFc)K9V{yIL zjiwYA7lZ$|wnkwAk&4u64EU&%P0ZQ_u)y~m(o!& zF)klSEs%xID#NYLcYaiF-5UAlaogz%sH62iI*5Q?L?D(V)YU-!W5cad#$S(NYgdny znljU*@6zk@pxO561bMqY$AobGiy~&6N2Dz^Rsukq4sAb`W*ePpTTUHz3GuYhC`(2#mH*DwjS`PW~J<)${_iabzAvxw)br zFyGJ`W*uYn6DEi%*^?GoyzUzY{k-8R#zC9kr2%~&`_N^Os1>hlw<|feyz#Wuu*kZ| zT($lxbD)2i;@$@d2|a%_-k7Z@Lj)~ewEYt4$i4C7M|}p&rBE2yTY7z;2c-6Q2(5=6 z+K4a+G*By|ySxR+peVfS>+7PXkht-RaxEiF^l4#-*EZ1t!+=*xWC1kBr+o>?vba!h z!MefZzlzto}Xn~E!JhAs#B+r%&bD~0# zWIgKk%LPfUE*Ir?W63?uq^gUb3TbB`hQ2;)$L^zq`BM@z(2p&8I$`y;;<^^bH&S<8 ztx7S`)1@crxe$QR9gU0lL>xe)d6a$&8_an^ZN@Q=iW+S2)|hPvQ(IT_@j(A_RF<7 zKlq5;_iT)$4*f1HCx=Wi;|BX>x$a9LJhHY}Zig8K|A!VG(!1pkqg)amPf|Iqi*cjg&ma2le9Tq9?xd(hQHz)OaR239r<~RLG(j37TdpcHMdtx)_ zDA)pbCg02Z-dq%$NQA3dmRjw-p8PnI$av-WF=Tt9SglAd>9wBB8`2{8MNchz_kAy_ z1xLvKyYtz)-L`pb?mv?%RDbH6m+MKA-V)rG>t?}-bPr(FTwj6`N*74Q%!xlJl5|2uUQ4UO~z*V4a znU+`&{^WP()pYrAFy*#-v-mybUc!CxTDh^eBT2x$QPsYNH5aw(G?0(X_eB=JtH#K~ zQp@G&T3^C9&4p^p;}NnlO_c)a*tG))na_*ER!Fv!-0980h=|%3xBWFXe3<*YBPu6I z#g~IZht_M&gcSEgZ44HrYmB?2uW{YOOTL!|>=7I}%eh~Zcb1)V{JB%64V5mCLA`Ng zC2tFQRJ^>J7%lEc(0E+(ScD&9JOrh6{31p~ZoW~SolPkBf801m#b>$6O6PGfud>6Z zJ!sywmy_dvHjwt9o+l1}v-IFs^h{NCBfJXj(bJJq0m0uZOZiGu(mfH+9aJgJGPzR% z#)1|IhK)JNQKPl^eoh-WO=TBHV}+cGD#6h6&NnIou|)PKnYut`a<&+Ug)eyuLpo>P zRzrHnFd8DrEl8Xj6C40Y0c1>3riTR950(P`w6bvu`uN#e8!pyzERFw1oSTh6Jwq_q zI2wKUnjhGxw;q^GZ!*DM(XUg<#EnJb^qDT#KudAiQ|EL}UdEl$(B_PjX6BQ^AqRv@R*CMJhUZwE3_t zr8jB$8|3mZ1$N#i9+duY95=U?uqQa0{q7y*so&APH>bxDIXeOR8qzTaM(HUOZ!hPv zn3I&YN=We9+L~$bMK}iSXnLKE86FxjXD&^&KS3Em$XJ}ny<~z>Wq|B-~A`HirFL1g5XiMXEuABv3C3>6gf@T!2G^9F$~7wh1~~sp>2maa61Q7Ps~%9 z$jHd*VcKlqEckn+vdG<8%^rx%=QMVP)B5|1YpBhI%X#?>?mMPaCxPBKPg6{x$UKe$ zL6)nM>Pw7uciZzL5f)6~)fpUE5PGhV_r)lP%#S(_?J0lAqW9&~##sNytw8(4qiLjr z=_g0n(0ShkHiC0GbEqb}vo0sZW5HlWAK5JSeY9h-*|eTm(hslkc4aIkFhp1igH5dp zv`Unzv#qxjg22nDT#3-obHG&78^JZ%RPjzsN%$x$##3q3GcPQSKjET#Nv0LYcvr0F zr&EvsVY%itppv<_*ChBU!hzSP1moUhKH@|~MAko5Rb#uVpC{1Qdyb7i^I^YUqi^z@ z&$1T2>-qlBEGiL>u7N>@XA1XFv3fH&QN3QaCBib4yGbjk_^S5}r-<2>9U@5gvXOzr z(x#@l1jvE}kLCCXhToj;K1U(pa|%H~?YfnAsND1vu35yL`Hbnf4+ zvzfBo8~XX3c5P^vQ1Eps|MdN46PLzkdjp-A6p3`+vD%Om4rLLkIKh)o(!3F|c1kD& zx6icHmmyV(a~E>XE?1+_p7WY9u;?4j?uWws-Upc;I}awVM0ql#zA>5~wdr?fYaL;K zl&UVQsy|r2n&PQ2Y+(p_>ng4yC}yYoS<~YAQMDqKbj-WPK??zDYUKQ`KU`cF4}=Nnd7KIqgGe+=)&G}QgzsPU@N_N`#VZ`po* zlr16HO7k!R+&(~wjR6a#% z$I-07V#NM?v(DS;(JzOr$GGmSOhz{%G|@hx;M|UtGbKaA)(NwupxY;D-B11S9-=i~ z+-B70ehN@3F6=)PaAYeEbSR2xsVt%=IU>J5SnyuMf%L1N%ZYf>llxWYOymVaB0*hA zMDT(W0Vzjp$}~tIczF1;>7UA_!N>jTm--+Kr_VM^s+#W65zmiy28pbH4DuGISs_T} zEVfu3%qw$tcAVnSj>2N#GS!_;zfz7cOHLU$5vcDSAi}K=fi0rQW^-I_7c(6T$+^ja z%vki(k8PSc^^wU3Us^v~K)B54hQ)_zXsxrE`~W0c>Y?W<3$={AvxM77YsC0^YIwsi z$cp!LahV3C@bHOy76g-LKRdA8&&ryJF~y)g?#Jlh0a3_7J6Un9l!C#})=7r^HgSlB z8_3RgofBpi@zIk%YRhNbFG?rS3Ni;>^YWN!B7>&JrBulMfw)j(cM~nU3zHg#HzdeAX?tdQH)&(E!#a>h0%|GRN68&WA2{R0@vtKszM`h@IKi|2`aFHWt=hLnf z(d$?hrXJ_#FtD(%$*Inl&(WB_25a8DE7)9Z>U~VAG8dWayj!i_=qtYK#J^}0)_MMw ztL7=mvV6`J3Ns{hAe~mP9!x}9J4I__)^GqMa-yfI+e9EsY>*@y9Tt+1@KEh$bA=1g zw_Tkj3!94?qpO=KqZIvYyOrhbo7d$reSWPe(MAKdD4z>1MT}ngusA=Q$+pI6pB1gM z+qTtt&#a|1?}{Ks>sFhiY%cp9`xYxt_J7+|OI)cx>ub6z-VNp3!dZG{8z;>6{2+zu z(9FlkiOBc4j{yS05v2N}b&Z?vA<&uDN@|svKif-lU;6M_xs|bkKola<%edpPTBF3O zGs9MJJacN?f^mwb4HDtqLjmb_CzGElVuCRF_BcT%_dnmZcA1HX+}-Sk z#_9R8Jn!(6pQ^6A)V2>_azBf?Zm475^WXSrG3ZxyCiG@kygE+Q-j8%&AVa}oLd`5t z7wcuISvdkO_2Qv{qEFoAzKH%X=at8>!1p{~y}EwSr3Zz>W(Za+316aN=4)NU5M^ea z>Y!pJ|DV#qrr7+4gw znL7$TAMZM}s;2CwT`usL(&xPSE;z~gq*f;G;B1{B$0q6so3|MkotBihQnx6IfkZo9 zRplM{XhnwX{rnl5+V|D=_ZEBlzJ9jfjgIR!Z5>P%o5v`5 zIzl%Lc2GOaHn2L2$hWF(*1!VEEPj5# z9LnVGSdDY_R`|)XtQ7(_raz7=L0-x0M(Dhf*EQFC(+zzC#g_U~wd)lfGf9Xx<5vkI zv5r6uF+`M`E?;>9Hqx`;^!ZAaV+ld(!Ye4DhtX!Qa?9CjwURn^Ta*W|!pNXz^@mDZ zl(`XDrHx2PQj*=wy(k;v@WpNdL=u%l={@_3Ng^u4j;!WIsMU6FNyR_B>U;#efHt-qTavl+7g4i4Z=#^*-v zOdj;Ab9Ogvq*+M7{xg1exx#ZJQ*1d?w4|ebuOaXbr(JhQIM+;(insTs$GY`uVU_ZH z-)IQ8aDZ+_0GPXXGxUs37 zy6nb?gnQfi<);RAIUjSePlCtC(v*LL4QEVHkgUbk&6 zrSK^?9HAJEZ1`?^U8S$vs2hbH%GWQA*9~5pC1ZY@k=cm!{dT{(E1Gk47c@6X%lvBF z&>Yf;I#;NiH+3j~mmAs49Qts6D6gM==zHglO2%U_kRKE3otCC^Qgj=Gg?a|tp)UfF zdT8z1KiY)L z>*Z@6>F zR*`aNip^D9{`%OL{jcdTT?zl&DoxUZ zsmjkjS*-W6e3oBqJ;&6fV!PR;Z6xn~AsA}=x?EPHx%c18HWk_1#_l`Rq;%sN`G1Nc zA%84S+KOgrEljIyeTGp39xak5*jX${i7{&*xMRHW%_~M^!RS)1bzY^ty@)q&isu|2N(3ti z(EaY$wY*kBWvz)8ukJ44zf*E+3Yh~(b4n*_@+kff2FR?u-=j+mwhW@|Dd}uDjohEwbs<9y~?w%H21k$Re*f&$~;qxP#hW8{s+P ziU$R+W5}00XMg@pq%)E1?sg*C-{&Om6*VRu3!KN%8;~&XaV}oP!^!G(^=FRz*OW{G z&B4P4{^JSW-|Lld(d-wqcV05+HgzNj{XhXF!yziy$2E!NG9qn-27{09!ll@$F^^nf zmTU>+12YvqS($I%u(@c3FLIww^EcWrcoB;@A}{z(?Vn8-VBihhEK9^qR4jN~jdkX9 zdHv*CyVf!v#18h7-)=MVQ@9uZ^aXrR$z?-Ypfeo7;WQt@(t49ToF%|AK)>F0drQ^W z+C)k6N%Ygf2pW6bwaADN1a84=fbdizY&r~_>#A;r3?jizo%*`@np7(Q_7)v8c!`8O z4b+^%WbiT4arrSWKZ_w2l15P8AcB?0XUX?Ek7D^*7y&!KNXcedF^Hi2f-VX=x7LP~ zWM+&A^x(B6Ml5pAXT=ds@l?R|tuL@BJiR+PjXU9ec-5+rK-CEia?WOZRs3|jFqA~0CWsL4fkeF(-{v05(gd#i7Y(aOFDO4o_AECFd> zR~0~l8#Zh12j3%~DS8DmNNVK938xnbhx#x1KFA~(dMwhf1pGvZA?46S3mdFKy1Cdb zVB@X#bS4UK_X&e#F>`siyX+G?ODR@L8NhYSQx-{+@P%Bsdh|eJ^td;6aL&;(e5h(T zG^8Re-1KIzmy)m0MW#OWztdS1VN?*j)))(Z3m9&W4}XgJh@Zsdb<&&$+)7B(M{NlFTsQDcFWa6gtNxijtL*7!#KLwk zg`p_-GEBO)xj%cAOU2Q8g{EsATlgWenjydUj1rG~Mnqd3ja@*#%7;0Eo?+&ZyrAaq z;{I5h0lV6D=E1ks{Kqr?(c3k%>$D_QD4l^+webXSdyh#bVWn^DelTS??gM6&>`u|i zWMxKt@4|ZA@-^#fgQ*T27Br|HGv87z(&RvIL_=}11zEtsHGjIDGabOuu?bFL@^T%` zQtA~X6h6`9dv3fMQnIyCRh$anT>B$rvt%?3&40jrDOD)g>tgHK=iUXc6vTI4?^ah$ z-@8{HI1zm~-{t8`LlOk{aUkzZGGR~3W25gxhBs_HoMbg+;yol2v)g{erSZ!UQC3gk zLRfSm=?t8F^0<9GyiGAoFJ|s5*hf;Gs^A%)R~C8Ob}b)eV!VCJv*aT`QQY>iQnTja zI5V!)|G|%4^hD&aSq~41Gp%d*E5<`cwr>w->fu%lY=upGyV!?-4oIBP4WiKb_k{E` zc%OMSCrRGv8Vi+i3k0K-R){j$#O>9aLTaklv7@Ec8D80yn!kbVwM&4(&A z1pY}B5F@hB-8m1X$`{$!D$jX_dm19M&S)7wP*>Vf5x57Q z0_nW<;q~>!<*br~t>~+l=#CAQ>i*VRJpFm>avLq)mlM7if(-5j1sUInV4v{Vy@gJA z!u^p&Du_iG60chqr5^Py)e-NxbSdN(VzE(HvyLt8KJSMjbpCp5*-*B#1NL%>$%3Rb zDKd7-yoD)+|7ItePc4^KWOIKG$kmfNz2v>x?j>t57)xJx(m?8Z&``FPY) zqV&{^)X?p!fRAkAWPM(^H`G;;SIX^3dnSWaW)hcG*ncijH`S;O#)jp;mYG51YwR35+|vY%Oz&Z%=_7 zV&Q23KP?R}y92=D#0^9NtqOgb6qwaC6#WYzPuQh=S3{UbP1t_vdO z!sZAu%u#d};ed~M6SpM(l0nbU<6VmX&4|3ZnSg$_XDhEKwqp8izOBRFG#lsc`PACD zRC5Rx?P*ayxBa}N`;v2|pkMF)=ZUjz_44|m8ob4aWeHa+O6IP8q3f=nPW8bb;T|53 zyF}@Mqg)l__}I~qn5X10*N*M=tXK`hPmwwU1?ck8F-Nfh2e%&BGEUK+gN4$qhUHIv zFwRLxOvo4-OsXmsOqY&ozZeK!HqR{`Rsq}sVZXuF$0vwKCmzulJpvjNtZXRuDmAOY zWfz*&-Xp>{YF$(+=7e2QsqmNczMy@q{Lbb>|7YIWw{4l}a={33Sn`FOd7evt72F2E z{_8fR#AVtlxQxdab(+jknsT4L?eY-?>qBmlgj6tH_>9j`SjPplEK$f4HM+*{n^6T`1 z4$$v6*b;tU9q%3Xwtp(*wERZc z*fqNJL@QcMfzC6-NB>~8$Dpn4A$Yu|G` zB$#wLgoAkMb)GwZQ(;x6IuULfOwIYdcH!V<$1cnE=*OI+>1M7CDTPXU$6L?qw|=nF z{T>K47A@i}UW?Rra`N&e7TFn+0`3RJd}J+(PX%h#?OHBd!>u0fgE`l`kvL7SFg-JO zJxxwHb-!G&cpU|LcP+J8`_WvTkUjS&;2?@xrDW7=mHU_>9Q;Y+ZB+kzv_W1l@)P90 zWfh8m1GZi5kktat8^NKZ{Xqd{z#T^C4%HEC-nU+ch@d&khsM_*2(hKHI`Uk&1QN!b zt4r;&=!oZ=g?^ObZqF!1%u*j1@l%+c!jpmKx%s_=-lKK3y~i6 zB*Ozd{;$$b<22yTfIj$p4IH`=ucADLT>%w=dZ|}vzea($6n~Ce67y^QqQ|3E%Tx64 zoYikE1SqWkhlFU3hA!%A&tD%GoeVzN*B1#p*cqL>jaQ$0u2r7rzLX)cIh>WUUZzL|9ec0a_SSuS zB5tY3ZGSeNl0?C4MaML-Q;>qUnh$LbSR-stJ9Pf29XJf2#G*7W#^BM0Ly^)%+bIB^ zlXQj-+Ead_UFT&IsLgs;sh{hWMD^Zeo!ALdI9cOvJ~_Zd zOP6enwMqdNq(??dh854$!N&2KX3PBwu!^Bm?#u>F3XP488fBV_@+Hwv2m1Sqfy~cz zk_Z(?LN$9$sczke?w#WzSUHt0>2peY@^&LQX~`H^qZ1Ze=--vMWB`td7$PZ=NkAbP zoB;8;BY>*Ue21a6;ccI!uAc`eOHm$=1I1dMgKdC(MI4#NP*CyZS4zteZPI-8JIlCB z;4Hiss{oqi8Q_MZvw|yBM5^W(fNU1$7kt~pVXr`zo}K7&LkcAg>1dMr!9BH? zdq}HkhYP?%mc$<#Iz`5@mLNpIHz}5}-NLvCOYaix6ACnqvvn}U0YrzM_eJ4 zbkhoQ;bwee9Cn*Am3qYCX zD6p*Nb^tGI|1YT7Gc+-wU=sY4bpK+WrhFIgM-&3Ljm++wgQAzF&&0({pk3_<<%7Gb ztXJ@aes8ApomglAng*VR8~`*~KGL)d!0Y~7pB4OApM@zyRFwfRaEt3~X6}(DH;ik; z2M^DDDREwHmQ@lkG2w*aF!MB>Imt)d8q9I0YRSRiN8bbcqfBF{01AllaakBHogO{U zyx0~gPy_L3BWUP=m`J97m!h&F0un)ROvL&EIO_;QiJX=!po_z0{NeeblQ}VyFrg9d z2zdp{Ie|QmoszJ^0LEc1%C;7Lv6lhyY%>*C?8kjoC_opY2$KE^*9CYlL{tLcBmyV| zmI;0Dw>KpW0p<L~C?eZoCI7m!JTru8EqeezYEW{G$-NO6v z&aH%`#EkNyqwhIEso(kwV*I&C-AU`M|1&gq!SiNJ^!l+t=ROTK>KN(TEk;;svc^<# zd33vi5R{Vl*4iP0i|_qvWuO6;(-~?UtOEw*(HK1XSUZOXu#1=k&16 z$_=M85UV9j*joVTvUotTw7XJg*$;VBqyoEI+I7NE z1cZri4a47C95es#z_NGcv1y`dB6kdo-jyb4zoX-NZUCpaF%1eY8l&pQmcEnRgB8J` z{O>1vz_MTt(3jeQnUSW`I1BqnFQA}dA5{>FmZ&ZoP{AF(v$>2%6*ND*GGAI%em2gI z1$V8l`vKKYP!diI2x%xb*EYvG@AS4t3Vp}H=&AD}#Y~}qZK1*ewv{KB}ZCW9`1*Q&-mzCOTq`}&(9P{&v}H){3AKGuR4=D>SUOv=+@@6)z% zwQ8V&)KDO?RyjSBfs66;a=Cd$_)z%ob*hYLQC2`<_H(ZonExw4J*JRAJR|{nDxQql zDLe7tbl2Rbqz`iPQzSDI&$}CIGa0S*XrmB#Y*Z#B&*dbfctUDR3ldrvM=bp`SQiwq6;AF4hIJYDz$#%a4O5FcTC=aM60H_jR zrY`AU|A+uw^&BNocmw`1-d>`lB@^&tEbj4fu7|d|A21PCt^SMKQmbPJ>~8Qy1VLw~ ziDyh`sGqp@k-Bq(JD}{|p84FbfZ9l7M*qCeJ-{1ZIm$?pGTU8|udTnALUY++O9ci7 zYND;0-6>`A%J#m=$?b_HR{I)u-ZwIGuiV+(EGVZWEVZ&?@)&rO?Gx?;rd8hizhuqN z_nTII9d<6u`qeQutm2GPUC{565;JmSP%a&cTxGr2^Zdr_EJa-ekTK9zs~gVoIs^3_ z^Vx$R@nsFq`w~XY>VGfpbr`HnM@1#E@2{ajmCo(T-pw7S8b|*`Rw9{Z7Ruf9hh2A#HbaARUKC`&rI9E(tgWvL7--UetC8`jM{J9F zkYb>|R~%S!e5_?4N^)eAYE|!_IYnM+CzbmK`zt12wgZ&TBSXfgR0IeCzooHu+W_Pr z5o;wzzuA-JQyM_GD_H~9K*K+4;1BE4D&L{ELbdEBv_96*%7vGwZzvlhu;RY*YTS4yMjpKPw34&cHs@|MMAeUK<5PHsTr1 zU&|7;$#DqD+0Jqo$$v`~J|3OWQ)bt4JqbDcseHQK0Xo3*zbx(D^t&)hhs@SFFBl?pwJoJ z@@0^d@XDjF%TWW>L6VZ+pkUA+T@x!iE;vy1wvVcI@5qgx*7Paod(8|Wt5|6MqfU9& z4*wV}nQT#vV7yW-hL@+-Q^uNDXD(E;oFEizoP{=gB@EbU>)|VH%dGa3t5>zAyKMc# zKZIYBV&jU!3h)$*WfAMK*!HGT$-LXT@L!Y>YH}~&SxU{LH(_SDZ8^qZ^Vns94_ovN z@AL7mFp$p6lafC(Gc!{kSqxrptSciJFpCjRgW%aMwI(ndDHYipIOMWojVw<(zAE*F za62JUne}vh#Sjr4NG`|qbXT?1rdt>-!ioLjnK(p∈A788U|C^Nw)R5`!<7DAaMZ&0 zEG_>JV{aK$XV=||yE_C(kU$6?oZwDy2~Kdg;2xad?i$?P-M)K2 z&wFalH)p15eo{qouhpyN>h7x>73P;I^YV$9Jf_`)7ca(9L0+#a5~M7PX-2#^Mxb!- zYn1)zk|st_jRn4Rfl^w+x}R$xP#DbADOcnb{u~TtYVq<>gG9K;IJ^F1-WLd|_`rY| zWE4ar4@9X<1Q7@ZoDu*xRuQ=I?0&XeRHBcga-@L&EB*%BsuUP$Dtdxm3`2tbqrvNx z8qlyosoB%L;^mM-?5+XU6UCDE%F@rr<_n-RI9cG(mRrA^B)in~Eq+H{ zw>X&V3Kuqp0{iOiYuGqmo5+HKjJF}L4ZN>Vx_fwHuZXrNfXgcLF@jE+;R!IK|7!?G z55Z-|H)oJQ6k<#0Ii(JyS^ocwu6=}NH6{Ut?XYn2k{GHURtT80fkvh5 zsItfRo=9TVU-B0_Y`H)=RuO1>BuGV(u#PTLgP3oRkc!ot5_B^-9X>5g$#Q=_g}G|L z;Q@kA%Vwc1_G?gZ(ktD7{{&6jA23mqUv@V6G|&R3MZ1B`ZU629fDf{ztfmGO6e5P^ zD%vgtz`(4m9$pzVpsE{Dsz7(vV*4c=y!78Ip=YNN}j*T+lBH-e{yL*!&j z0VKQ@GSC9`89E8iFJ(HV)LdwZ+C?^Ng^(pL(I8oJBf~xBD>3hHZCv4(bJAh24ZWY| z>j)$q9>D?zF#uPS*hR|URkzaqZ3|?}#BIM{dN*>>hC_Jk3aCQVu-a=tY@IWu78(Bo zXGKKhGi!vR;!a?%EZM^wT`eUcw)`~oyT?PY%yn&9u1|sWy#y5b!r&w=P#Y?Mkca3(Z{Y&XOHRayR>8g|A7ahM^K&rcNtQL4OJ@0i>iu@| zx088k1Fx%6{y*S4SM()^8?qYdVAPA&mt>%E616{5Dh@Et#FT~J{vdC7`RcaY@xoOu z_I32>kO>F?-g`^m^b5*(oqzPoy~ex`GYS0ylnT{n7izsjh_POP^gPSRm5xoB6tZZ~ zx+v|M+BrI^9Qi)!J8M@%pbLNXzwEx>++S67;osJ=bp2bz@jX|9N)0HD+%OGeK2U<@ zU{Q2L+C_nzfDpbPD&aOT!%?vbX>-RKN`$ehK`J!XsQ9=()jxh(s#X1!nw)7c(Wk~I z9R*lg9MSp1YiLN=RGc%y@~y(gjPn8(AE*F}A~b(#tCG8IR+`cac_BU3ekBeJ2v9Lv zSN**)@=)}CG{x-t*ZVl5eI~5yi_Dj18)3TimUf_;o&kz8B@lp|9B;~Z!lDtaed;)t z3b_A|k^69RI)Ls$&d#qu06J`(vv+VXUyf>19hgVsKAR7k);~*(kWVZhi)wpR3XzUd zRS^N#21n%E83(CK1llULh9#=)6&UcX*j3V+fxEkV#)gf*Tbvgmf}q?e80OE2uJ9pqt&0U+!_dZTD@Uy}MjL11Fl= z%O3;8t;=d$W6>>EtkM65-L?bhL94dGQZon$q-rt0C?Yhx9iCDT@Hg|>( z(i09J80-KfJ*gYt)&5OFw!#2sXTN>|Kv(`4M?bCSGeR;*9DTYBa^5@_o&13gcLTG8 z|Ln?7aUGrcsa9+GbvCtkH-`lz(t;)OB%H{+P7*MAN|07qf*ftd z@ZVvC!qso?|KJEUt;9$`X;3IoNuluG{~h+ywGEB2#mFIVAjLfhP@ z9?M&=X`fE&B`-%7%T?>kcnf)>?J)NVE=LO(icA707ASRI5-(} zA`tI()DiX;)`S3KQ8{@`GZPEKyyGuRPH44X@tM|THz#MTo4U{gB)N^ug!dO8XxHgX z5?Bo64`yug-A_oQOF#6W`cf)yKe#@>PA*q2|Eh!=XuHbIkB0zT0(?zd(jWILt?g~6 zxvrbpJF-TX@5S#6CH@${Qw0hYEOk}TqA9Lx>_0VAs=U6jDlPFaS3N%DwRU_rdP_&Z zEW?jQFIR}+1~;O{|B1Jb67~7qh3dvl=eh$mR(Fg*zl&?L=)YCA1)}5Sa-=Z|2-Cf# zxN0+^gm24xO~y703#F!hJIOCl8@+i$Lq><0FK`okQv`qv3w60niN0P8>F`vWL|sc&_S3$%NmZxV-w|B?bGAM$|7hoVl=FJA~+9v9q= z+^mRNAeCmt)>2aWc%+?wy3Tee2-PhWA8>HixXmAp85?UZ(SPzCz&C1)=b}jVPNO@2 z{nzAtec+)n3kFR`k17)fo>6*&og*w$^GJ%|K){|OFafk6g(7BENI*cD_;z1gc)>{j zJti=t4Kxf$pvANtckHKc3GK5?*W(HP3_M}qLP{0CVOg1TMG4Zq2be}Dt-L`{vPtzt z`wPoP&)Cz=QXURQ+;27Y^0DybYV)NG(l~L>S zv!ItJn5UJN7mYxFQUCk#!Abq8I8ocr7?>&VTHk>1f{_rJz&*Z--W&gpe)~8eOh|^q zdm|ZPQ1vANh7VhU4aRFA-)CGd;uuyvdx8zdCsJ4e%UFe&QTKC|wx} zaf4WPzx-*ZEhfk2BBvCX#XmEoH998~Py`n&G4#^EVNa6kcFH=A_@MoN@K>xjtI0@A zb>umRe?1fhDMewqD;$gyzmS+QHn%#+GVctuRa;CKo9{VR8Z)C-%&7pWCn_>Bz4P)T zj4+I|4l?F+0KKZ3{)N5NqLv>OPcb3G;bo#fo}9|(t?4u#z~<=`r~aM4UWHo3ZLw+T zTpl5&3vrIa4%33{Kc5!{T=a9X><=$n;x(=I6M#|FVr`XzW<}bgaFy@ST-iyJ=}6k&e57i zohr6-LPfo-SAz>0grx9>J2j13N0 zD)OdKH)N{|zhKpA{XSz8o+wXrHWV;_;vx12=_beP%bk6IZG}Xa%-rP-&rg9hyJ8K7 zP6l>0NJD}Wz$?Xjji>Po)9buzVv-i55k9z&JDR(eX`D>8>fo%D4vGed>A3(ql@mL8 zi__~Ih0s&4IU~aW3@>podKcz`^EXnclKzhgGYvrhRt8wu40Vt%ZB8G4aa7N+eF{A! z1o(|JgAn63YlHoxoo99~`KR?}kKx_eQqDu^I_V66VZKGkYTW-)H=uoi29QJTd%Rj~ zvB?RH;*;MUeY>eWEPSdflee4=w|=;Lp4BI=^W0l@pa1>T{m|V~W9@y$d0b&~1tig8 z2m&L0!}&nWG&6L3SFB!H{OYGY%TCBmBjQ8-SO!oRxdZAVMK-ZBc(h+Ac4KquY+bt( zgGR#|(6W^iIm^bQzmOFgx6q!WNZs5{oO|{kHC^aC_jp-m0ILx><)7k@&IsjDv{j1jWzm)C=!XL}%y74Qf-@m##wxf<9=94)hMS~L_ zHc)7~0sTWN8G$5mJ}K@mRWn79bEpjW%H!MFZhBIE?Hn@4-SmlYoAAXTA8MisfR_)M zom_`~X%{)t(0{IsPmZS!@LgB_j1cTQ6G}zy4^TpV)#XiYZ#csU@H@rAoO~Y=Sd9cW z_X1#!-2L|8~@}GCN&rMqrckfqeeYai{nchpD?;faNv1;>jmp+cq{qxCmjiME>QqdrYyRy8&Zg!FU*W|$sGTw4FT=t1BrG&u0NQ#lg*71 zEP{+-g_bx;cWv_1FkiV!p^%VU$mcnLbCcU`IWI@t%DM$kG|W`C5;jN_ z@cEKH$EGtuaKwp_N+x z?{Ie2Lwz||No){Uc>qYlLSKI;ND`ynaB``8^t;Bt5jIAE_xd?5VE1%L`1J64XKfVi zt2|)ypGfDto}Bu(=GiPujdA#`QX3f}wrLzUzmX2;1m zU|gR4t`l9R88imEOn%XMu}RU&Rg+rs+QUQdUXf0+v&YZT2}AIElCY3 zSAWLr$WXlJ^oT4c1_;%&-Ck?Nh5Q$J%C~~wh2LEQQ`p}nKg>lPDz~sOa|3f4&*U3! zz<~_*Q~K8*)NTz<2wBw|jT$6@DVQJEVJBz+Y1uM4*}UbSK@PNf?=1^AjvkM{Kc603 zhprE-*B&^;ZY4*<4#ePK4ShRU8#K^Z6NtG_~UPt?c$klCrvihpyo9?yDEW z<^e9uu7w=Rj&7vpTcnme3gww}{tb%cM{4c6@lj!Gj*a$Be9Ivh!;y)0SS%u2;-@Ix zvSBykLFK=TjK-w~p=?*rJI|+1#zh9ePzgA?l+&uo%Qoi0vNXKbi@}5$18$ztc*$!} zxlZ?hu)ch5)c>2nX-5cBsSEoO3D>uUQR@o9dkx*|#ow%H)hiR~3;8!hz)y_T9nctG#KC6**QLEpJgL=;PAUfuC4pt;(WV8x?Z)oIeb)`@VosZ>RZC)g%TtnF`-$oO=V7)~EH2DY zG@qev60X)~7H@-!N5Sv^FONm%?|rxOdZEr3OYrIT38)g2@$LSIPLgog_9_`+UoG(c zZ>-vkpA6IhM8(Ec@AY6Y5|5=aywQT1jK~==y4+$)ELK=vg!9DRB@-UCA3c`! z@(*A%UQ4Oz@h24=I~$%+&vM*GRT&A6rkO_A$W*?PapHj#BG?cC?mjQHv-?4Kv`qA$ z)g(6mXeIvtRVzELCJWSeYwLv)1~Jih7xh>&|x0hw0mJUF2XIWJ`NIi*;u=&;86e;@jeKwu5?>1)0mBcOa`OER7vhKFhO zwo)2>mkoE2l*XV@<4{oi0(Ak3H!d$GzO*6%Kj(vAqAv&~mz1^k&JkM7y()K0~+N7Z{+% zY!}nQu7GlG-icDC$RphDJ$D1U7|Q--KLz-YOqIwor8to{#)-*GBtv`8y4nHEla*dI z!<><+k6h*%ANd(HgGuB_md>Td%M!t50|5tx3 z(+UXu^rXl7i^U%oq`P=luY&$ai11tXFMG@keBj4iYk!Rof`^5|1KS7+xkc&K2A5** zB5c^}40!@OjLxk?-%G+Au|=hakYQ z0yzu!__K?O#g}NgWx5Os)r(xPzbHx_`uJc$E6VUn0VrUVNGKNKZ)!$H zI=D&8OOs|(eaN5Q&4)h@1#4ndfenhqw61)L9*o<^0cFra095VhjD8 z`Ikf~h;54mWH!f{!TfSmhUDd$055@fw*klmdBV1~cP9P*X@9qH8hCTy`n+`di(4gB z?|h!ftFDph`nYNmJ){m0;KinPWyaU>Q4lq$VqA8=2VUb8U)imm4BFQKmO}(XfMkedq8a{evFh%fED?_#-a2lMgBzq*N%D?AdEFtPiTkmYLQsl zXM>bkxH)#Dz#xl=L;RE3MI^w3tCJTTz^x|SK3S4Dh$4%=swr8DD?|CT-bXW8CHd!r zW4;iTjD0jV4gkaxp&~Om>Eyva6@-dRh(&&FRn85wn@&IXD1@-^Qv~wdZ}()tckqegmoS0*w*zqvx)`)+WA6 z@2<=~%}865Z5vS81!l^M_+z~A~gRVJg?t$ycJ5@_ig(qb?}ku#L)L9$qi zlhzg^Ns5(~}PqNJAQqJK`8DByhZ<<2j0 z?pG#f(rJ5PK6>{Xi2%w-WQKc>Ns&7+Y;?3=L+yH0JQk?{ zbOn3@nDYP%k?5YS6w^ON#Ph9_sw(HbENlC17_5brxr#<~5s-OrjClSW@;myw0aw0B zL+vo7sbVeh#G%!#5HI11_=aPV7ZH-F8o@ODPKn38KUK@=sw_p`3LlDJ>vrThs}LbH z|4VklzDEL10_7v|VKBxLBLxOZaC!Ze6n=`&Jqn*IF=&B%x=AM2$gwYUJMOx3BoT7T z0}-`VE33OH2gAtyF0oN3@piCm9E87pc{a?km-9TDt;3uyBT-r@6*S`L5$)V7alA?K z9uRe^9lMGskgm^tA;r$&`}=U0=O~LlrQFy;*7EqIboFtPAAirA?OOfjXzA9aUzDTJ zyF&Zgw5KLF@2r5i2QmkKbwlUfqIWHB5FHp-PjM(F>ic{?bz#sw8B zssKfG?fKix;PsUMEU&gzl8ZcPC~`MEha1lv5-c^gA*JD!o^jDe9PyOxEm4Y|Q01<7 z&Cyo>)J@8rGa3dDQ_aPjeAi=p=xVzUlI>n>LyFEog6kmp&F7Z@I` zL}mOQ5I+~6lc;6}r59);aFme{h*Ec1`6ylG$TOQV{b{Z4uQ?oZ2F9o(ss1pjz7*Cu z3T-f2^SefKc84QR#>kKbsHhHWy@epbeTS0bPFVwB!761?m;Jkm`3oosEAGZZFU76q zm!!0M*?1Mu4i|B$c8lLFF?B2Up9;0jyiCpTI$0@W#ScFD{vd~1y!FU)Ac}{w@xYE$Zg@Jd) zAd7?Pl96%VRw^9_G-#D~QbxU0&KCj7n|BPY7cpD4V??QJ%iZM*K3#?Cz*nKJnEz;mVnrm`Zt4AFXSZhQRrNPI?d`s?J|w2vNj_t@}}xs zd(XbZg^fvMIIlOAJr|~a+%*pO3O}dJoV;VQCRxt&O%?s&vd!pONhP}7SZa!=*jidT zK?B_+Ocd@zg*^8f>#%==p&DQqhcfRwB>~|i=tmZ?d`SkdoRHw?4oNtmfs_q@W@HYY zRR03s%_#}rjr-IAD@rrtAvJ`l%{*|d#3x1RE6QnWchh4>lTaPMR-XH$*42=jObhpR zHcKc%ck*ti+>DAjDIw=BAq{rC@(yc1#r9hXnV{zU>8_lUSe#Oo67wwk|v@{!UC4Q2kTw_cgm5B`-E(P zm#0Cb-JD82hPG-YxOU48JoW}G^(nHrm&2=+s#PpL!RC)xo2iOg`G zL+Ee-t3n?F945e@S;c1k?CjTWf`jdP*5R`5f|v@B4#nUB9;EW`n0QK4rliCp!lmzz zX*vN~+izISTsdRk$n{dN-_5-X%f2qi7lTcUUW z9V`Gg)CL{_{ea&QgfKt@eS~`85l;Ij#4p#f;q9f`t_~#5y6d5Oq0@S{-RG^{X<+vEf+6L-9KgdkXX$ZjE%Eu)*EDh;o z(rgogHqSIA+`wi87&I!K>=)2Yhd?sc`H72n9Al;}`G-zeHq|Z;0wI@MsjzBV+Lv!B zsl)7cA1&_-v{_LBmPC640y7FiLS%ehATSM;0$HerGH5lqA+T^tP}&I4%&3Wl>BZA# zP9R-yqLm#XS>5^$iS!W+LAr6x^o~F-8!9qz{6GSJ2JqM+gFZ7B8V=gEb^fh-$oXHN z-D^knmTk_Sj)7dgIG3}U+bjZ+4PB?a6q0&+Epj9vctf!QjZG&3_NnJT!J8G>K*2$Y zYFn{PeB+plW5fsY9C)p~@Xd9BJ8AUbFCa+VYK)I4B#(EYf4Z(xM$5)- znuc@Q`o-PWMEZNH30#s3)CswQ6WP~Ik})%WGb-D-x(D#f`(bJ0VrqlUUvA-awzr!2 z`-lnbdk-^cjAQ}+asHoDBOO}HUqe;KxPUYVQIgOQ|7u2>8(N~|Ot2#XJ4;ohNS&c9 zFGAYSaIitZeQl8mIp2x?(?eqn@PFEgk^JayOTr2V`i2i1bEF8`@Y$fYHQXwTFf#E# zaED|1P%OMRp~Ls!YfNh!9w<6aR%kse6_=1EDIa;5DQK$L@eBp>%ZeXVgUJRNbS#j1 zMcR=8xJuL^ze^3^F)`pl#X2u_7dl}_(N~G#n!A(^dNga(8e4fU^WyEXA18ZlvPq3C zA1VN}G4+*1aIhLuOjt;4DZn6h#5d(oW+l^KAEjF;;azB3g^fE1X)iI< zuuGaXJ&OdN5eIAFTcPQThIzVm1?MM1fTX35_3^Jh0&Aq>fLgkF1+a;5T?ad&cqZ3N zaY0QZkEAPuEeyAQaz;Id(7SImcSuq*$h;jo!! zYvcKQGzv!6qhgx^{E3B+vngH_vb{0Pm7*}~1;m}&H@EDI-T)KCM~3c@vv71wRx-W% z*KZ5;MPCJMgU3@3fn^tlob`WXQ3{#AF+Zvo=tAsLQJ|BG8-N|ENHXgkDtqxY-Wgr- zE{4o9Zg-U71NR>vy!3|Cfv zW2nTba&0TtHYpd9JVa3OtoOO|JBImHo(4ux@V2duND-Q$VzjwJzu#g)IKQ|6D3`HX z!$tZnBmftna_;W$UjaD<0kK3@z5Fl3#)VQ&y+UDSdh$7Fgsf_xKff*3C~|q~CgJXb zI#=oVI$QRwl%tx}6Wq(rQtRDoeZ`tI9QSQl|N2%gKQUn4a;lx}p%qC)YOCB#?S;Q8 zfwA@yhb7sOpqCCch<>WYw3hd)U>L?6BjEY1r!jjRa^uI!zCY>lz~Fhz0R%DFn_F{M?OC#7!w zO-gIZ;g?vefv;}7mEVj{@UamkRq%d+Cq!S|mv1Au{tU5Wr20O*PEIawK54mF_TX|D zZQAL|8>>(X*%a3gh0J|pjGEcbo0R=(`hG;pCs$2uk^VypLoW&(d5{k_5;^bZ2}43^ z+aK_kJJ%-au4}}a4u+p0f!CqbYz7pGANO`EJ$||$u`$nF4XH;>P8H!sT$k&%B#^s5 zn&(*it09eru?dKGbg)F!Q3!bi=+>BtF8wBsJ(Eu;%PdHLW)i&Kh37UMLCdBd%>w?vqGtLu4_igj?P#|+y@qUaGebI4KaYX`ez;v?{eI40=X**Fz=e}2b-(^b9 zl7C>JTe{E5E!~qn{t1gsV?s81#TPy5Q&Cx?3`G@4B}%E3;cZshGMflm)jKB5Tvz7R zpTYuskw))`a2+$s`4reZtKYxvkA{qKaz0-*QF5nNW1xp+J;uJprMy_a4T@?Eodr;re#JDMB^Z$t-E4FOiP-2sRF4FB}GnrOy z;^g`pmI;6tn$v&P@>42vd%y6&;jA5PNjkV;X8DqB6jl}M;vhBB6qsp_2=UvOspy$% zjfzgy8!zEI&6H6-Aiye%0pC(4VKFZ$!Ra$-{t?MCFH;*oEv4!H@St|NnT7Y(q;T9> zTK{maGVJ*7$$zTg8)u&V=}JvFupa0)UDp9`xlVN?x#uCn)jhzi%IfQr(QWm>KbmVy zdChmR`UmS-Qb_2%OvJcx!H>2!3KqRb|5i)^ob`5O%pilQsVRPsGG{6Re!ssR)Gwof z@vkA;US|`M{8}oTacW}5xJZaQ1LoHkOqvy5uga6W4GB!G?ZLl8{Vz+dLGLF-ch{=h zcIB&scKd$a2g8HP`=3|uq_M&?TPr^?UaUe=UcGD|MGVlvJfMfbH+x<5I^NsrB*Z+r zZX9duljaN#75ys9d*3RbQ$D-3%6`9BbT;)?jZScnaUI69^=|9!zz~G87{BHDKy<1x zEpl!#)iw0k%hLZh&oj|$ByX2*VVt5;`JE+gBr>f+`uh!~NJ`^+FAesQ40bSlbbb7a z`-GBgOB_CJy<*1V?+vvvHZ1TAg)MCf(;afR=R2)?ca>ijv#vV?=Hrr7-)%;L!N@KM za5KnomJcL34q_ngR|EDKDcIQS?X*doV9|C~sD_}i^3A~_XjMvgaE?HH1hC=GVsY=) zg0w#I%m(vM9>KdJ%E#AudHtbWZNL3_-=&X0 z@OEsY#^k{Heo=mOJZYTz@(S5*Obl@g7TNEjj8zOYC5aa!8jU%Ds5(47e50t^QeeK(gON5!K#e{FyjqEjY`0n|PKWUg4)!z2 z=CcdUsd;HJE0;81yz6NO*0c0U%L`7+^FA7|6B*kw5m+jHJz;Zv2aiE65dD0%Jt)ea>C~ad?klFi{bf=%KpXakNhy(B2xwRgm_9lJ3_*iFl zA9RFFF%(=afc>MX8b7p5#{(JN+&jESekrqQ2qEiwg2};4T&9Jr7ov-0#01_KT}1oj)4Gels%R%JM)nLoxcgoBJvt=| zKkz}Keg);FVr1ff1~=cAXt<@Dq=~pRe_LTENp+EwL-7nSkYIQKn<3r`3h*X#J8T|# zXNY@bJt=Y$)7#^e-{EW03x+qviM!DI4g^S6 ze>KL}2$#TAd1qLc1;Bn6j>^v@V1q6L~Cv|R-%70N#8kkgxsJjwZY^YE17WL&@Gu}COZdRb%s zY%BHq`uUK8!Ck(j=ziQ;syIFc9d$t~zo>yT;zYBM-0nYNx|0jM%qH#?+=cD6Q9PwI zyX2khshcwYB=f$T{&sm!YBQOU;SpDsEYw{ndyAeT;Dnj>?!CkZ-tzpDwwDm0$6IxN z*Yh}jRw^;VxX0kU@P%5-5;{x~?8oNo(8mz1y*~gqThBX9iBxBC8zo8%L=-hKO@&#b zHFX~9{h71|3xgZg(DH%Ib+bt6&QuQnZj3{quZ(ddQ4@DFPPhIt&$$$?Z%|~Upfwbo zi+cavwf{rVWczKMRM7O4zJ?cOpNrX_y0`_L9eBnBp8#2{9Pt;=taCq+}~C-McG~Hv<0FUNKIageK>d( z1!}k`Id7~TY2ZwqzfAbvgg?RTm$W@BRWmea7?)fh-z~upWPrJAB2e!wXZ?~nJ_r4F z-uq>pUBB#=D0Fuze}D7NMy;*Y^K!A4?%T^XR*n0OzHZ|q9V*JW$I3n5M-H|FAJ%u9Q)pN%vAenXe?k z-c+Dk=ch>5FY4z5h>iObAQ-bw{{wS9-1YWJDFtA;=)cF`Y_txbqE!TV0t<_ z!r??rFg?nT8L;1<%pz4hUQW!`-BUQVDq;%4h$7_lwTs3`@PC3s?&&Q`dmYD7MQIo9 z%&&}tM>qFA%OS;?yQLR~#`5#v+f5?T_DN{$`{!%SaJ>XJnavcl3z~{M$!z34jC3;dE3SYfuyg2@c&CS@C{I)_O$-Q-5Nj+|c z>86U*YZg9I*xAmOdlhkF*6^R+P7K=67v)3=dr0Gue1G`+)Cgc~>Nj1!9OUP6z`cR% zukHgLrDM87ugu~VaN!{zsuToRIvhX>vM^hYCCHojY1xtrpwFoS1Ff$_xdrWD4Ekf;r=^|Tk_b)%P-!@)+3_6XFQpz)J11gX zvPE;74xGI5cf79j5xWVWwc`Z{5q_crvgc0Dii?~J7BQB`*Rhys%%=Lu?OI2LEP|K$ zc#!ro*8B1lzU+0NDMvQfHd55q`XCfvRPkk63>9_4ylqw*B=BEp#P4O7i;TdUmQJmUU7TGhhqaro$U)V@)^qV1o zT>vXsH3W{+LT8d_TULqBTM#6UG;gY1-$lYOc#-x8eo z`~N68z&8K{-K}~xCWK}(0>p6$Wf*=^6!hJr7R0tmz+q&R*k%O1~#8MC;U z&X5TU6GG`ib0}yhAxl22KqB#{>3YohgC{dRL-yT6{kYHw)#>$l_Pij{WZzf*#y9Hg zz<^m)d36Lv%%r2#P#W%hY!+6n_58s8+s_5y)ez{-LUL%Woe6v&yGa>tdNZtx^9P4i zp-G8i?@#go@C(;yi$tkz;23U{VArNk;&U{xDy?d^{p0@RyX0l>6P8**rUUFH`vW~W zA>?_O?%h?Fh#G_#x}&=~Lq{&-{wf4x0TT6$r-2>L)p)H}pS%h4(Q z`Cadd3O^DCWc+QRaKebFXgV8%O9y}q7wmPBLvQaDQ$xUy@S*6jVjt3A+f_4rdOTG}E+ zyV_dyOBI*?;`yCW-^M1XOulcM@B7I_xO_<@O5i?sVXE{4Au!=acLZdu=NHO_Lw@xy zXN-tQ^-~#D-wgPdt`6L%EwK@P{J^QP+aRDZ=XM^FaXSk%y_^t$$Z+u=|K~vSpY?LLh1yGHBN}1&3U8g_IprYQGnAdLG^ND6l_YwP7?k~^p@^UX}BOos8 zXF+B&Lwiy?!F*LXAT0wRGUAiZGeEr{R6*zg{fG`(<$*pFk2ocUxfn7;9whSTxuoS_ z?=>!R&TpE@u7Eh&fJnz~9fVbz3TDgtb2OsAjqf_Fw9yt8Kk#}WB{=BO#Ba%2nAzX7 z;&r#8%naOx+Vi|y7F&!oDf*LNU38w5q`&FTcWVR)=YxLdj#Zu@o&6Nw>=lU=^=}%T zrtm{t1OaF)7Odfa!)`%lOLMe*1RMQ|hX^j3uyf!Ef8KrS ztyK3LrgiWfTYHw}SHYi>gW6)dpUpYCtCc%75sm(WlgM*-Crm`X@iMA83uUhGZ#6;@! zlAO~cua78@Y({@?NzU)5#gc|Omq1H~jBWRJ-L^7PcaJV|paj?W3Fr=ap#ULWRpY?+ zXF9~kP0G10bRzOmT#m6Qa}(rbF_|z*Ec4w9aXT2Et(;&W_|A01)(3$w_*EZOEiMCV ziT0qNRkQ|F2E{_MKoD%MPT2FZ7IETlTdGr+2wVq>stICo9y zcvAw&UIQf{tcJBrnOMLDv_r!qkvR4L130q%4)J*$#M(>Q0~}j1el$G^Zi<4jvHQDu zM!psXu#e_5IKjF4y-!64u#TlIPuR%GqNHNbAaFirjc}<$e>e3@Xd#+gyJW>JS;zv z3sFGI8?L=6vH2<2ctrGxKR`*v~-@o+-e)EgS4@EzpSY(Je2;6YreO#-dub!v7 zcCaNb-b6d`cau`7PEN@N6?wBV7dzNLJXX3W-Wyx-fWzl|g=kgImWK)P@aUY>2Ub(| zAsIQ%H}UVo2)>jsH>>2n2@>IUad#a*O!qhc%xk>f`Pwepp-$xoo=)l#j7s-2_y0J6PC?{Xoh>)JRnc(--8U5Vdu8v)?<|IDYk zF7Q&V#JoZIGI%jjKk@U=g9h2g#y$2kq7FOD@@N2JS;pY2ertbSyBQJ2JjcT?j-G&G z5MQ6%a(IRfB($SA#0GKhMN6+ZT#e#Hx0DyMsWBMm+ zK=3VrO8Gs~x5i>(;F9d{p;oUEQYG3|*E1Wk!{Hmue^Ipc79xfmWt%&n8~UyI#%)Km zxB7k5%^nI@R_7jkQZV7#*u0(@4nGh_Cq_?lm}VB|u945?WWhv3<#1oPr+z>oN7@-+ zQvtlC$I~+&?#%M8wtN?CaHY*8&%~=TctnJ5?F2s5?L&A5KM{4P9P>G2Ca^>^U7?nB z20^nk3=e94{cnhC;0GMJt&?qH$xo>6aAo$tOM}?BzQL^i5hN)&T+b02v|&0`aSh2%A{tr8)#k z5h9z)CY_zNm}?Ub=GRKm^@Y)fwSWJsAjyh<7V3>H8{2e~Qc7tbBATlG z9VkhX#>NIz=b@bdWpY9DCh*uJRJ~k={*S(~XBvJyOj|kIm7G#;)w#Xg zC`9H{R@UXF@l6cy|E~6A{2eX_NKe#EOz`tAm9qDLk}Oo)2us$X6$G8UU?9HYXT1RQ z;DaKXxdN^zpqJoMu<{)#o@Sg{W;umB$*o$Y+i`i#YJpv*mfVGu;oI_SX)QS&Cz`7x zq8y;gMe~dO1niBlu~j&;h9H({`dRNThx*X6g5BXA86~Yfk@$^!R2- zPEj$i{G3@&T)2EitbWC!?)4Jheq~PW7P1x?wq7Ad5!Ys@j#xCDKWBnn1K9W!a zsW^X_)U(uRiKg>I2&er3%vQoJO?->%wj7Au_J#2~9@N$<+^*6X%MED7``QuJt|ft) z!Sd!71QJM72DY_1Dn|KogZaxw_L9QDEZ`#irQa-yCmbRsf=T3N5fJt_6n-90=1S+- zawh#$|HG0q5z&831jg3aC!(s=G=K`n$n`=b6ctM+rzw?u>(+j}>~z|Ng$3(<%r!=o zRO)6qq``cAYVPlSb1|`p2^7JgP!1Vxn8cSP65~BEt7e3#FZo})0PMzonZka17BgoM zJiBC?5~fN1`p{kL28nh$onU&&1y%)W@QCW@@Cm-u*V98F!RaoW`cHO*a)Y~pi7T`+ z_=0D<@kjUYRvtjE86ndD$ z{{o=8uvpT7!C_H|n74w*hW;_Q_9IG6M}$|ZU{f*~oPRwdHp0h15k6B=AENr8_QY`b z_gN=WSK!l^&FXSayRq1>Ev{v)CSXhvyqZj)C)p5_2r*KI;<(yOVl)&rNnAeNN zsM~K9O(hNmDnl9wx?LW(G6HsmL4)_ZQsWGmxR5i?WWd^GnJ5Zi_zZNUF1YH(6LOF= z1*5S@2A2`P7yan7y`}WzDjgixb62opBcYfLk_~I;pRJPufn(1WJxNjYk?0#n8XA_r z92BWnT45syz(8@dVRSB_*WgU3WCZc{Lt46Er-&b)JhYAG8c&RRN}=_Re^mzGx44*O zgr`td#|J1K%<9-St{^|YJY`T!>~ZaA7w_^;m03e5$xH_8^e*q-3#$!gib#S|*PguH zkH~)VyP_)+y%USl)zrji(QcL_d)euI$>hYke0SsmXbYKPf0mz51XNpq8dE+n=cl?| zWQ<2ZBxcN)v{0#8sGEjybazde#T^3Q{gh*DZ50TbnZl-LWYZ*v*Y%;0mO+)-cNfHV-Z~ErXU;o5T>};j}6!T-FC{}cV z1=$4#8lRR)^ z{mSC2qDY~pqv=sqwL{qg^;1(&{L($mX%l=QN~4F!mN(zADrN{o_CyfpBf)ibWSdx; zO>UE27D%5Mn^X60%8P*T665v{-g@{==d<|3H3%+$Pl-=|qh^W?;$&IYXQ2-;i65B% z1ItX@%;DkbNl!nPQ9msxeYAs5!ZJ)GkYk<4JgxDEi4PrZA&~9M^Rv^iFgDCP1GO(M z4Q^leK)Fd;?`KuaT}{#)#t1K07A5LmA9a#0e0=fLCdGT=W!VQ^W(YE&qaDK&d9NDl zjwMc1p>A;*HH?NW=G~vXuYVcCU}0e475FGv?}&MiB~=~XJ6My+CMv)>_Ut3H)x3qxcfrK7%x3oN1O__j2w0VzrWI#RYD?Yc}qNKd)Vnk{3VHZ$Bpl>w}aPci{vu-M=hpiR=WYjhkZ`o`1m35N4fqz@2>AG5vU@j^0#H1 zJgwgpx)HZNgCPv5A5>T2mMD*B&D=3I*)}6~gx}3qFx`Z5`i3#SDe$r-)KBO7`ZH1f zb$h}xdB8Bnxc!4f;;dV!16x|ImtPsa2&=-9X+FW4|1jZr|MG+XA6_zolyL!?d_}|Z zg)#oZ$2+ffJwvu{eu;m!_ik)TS?d)4T#pG5nl|P)Sl;F9X%ofqy> z%)zw?gNl@bBagAanfcbp7~USPG1e$c%Cnq{9O`;$`lA_Sci_sOg6wtp`|J8?%d;Lz zuDzsCcba2r(#@V7BFHvkJQv6PN`Yv3+RLkU*R)Us@Dv+AI;uC@D&$9f!=JU^ddq0f zNp_OvVBUAtlh_cDr)Q*yZMHt-7MqI=aIL`j?`*lyNx$nOffJvdy?r^vPQX{?jNvU* zWmh*vb5DJaO)b4J2yh~PEtZxnQkW!3>x8~1lk6wGURphhyg$s#`(J8%88jMklm znxZWTIp83$7B^&j;F~Vj+C`0OCwS)o@&fANJs49gJ`ul3w9rjYK7hH-Z#B5N-sm~J z_$Iss@WLByqnhu#|L_f0XDGCxeH2?pKrF+S=XHrHeY7s@x}Qz-Nf23TjxT&)q|WB_ z8m4w~d6L7;Z&e)=P`tQrD+(1zD^(!=dGxK}6lc0}#)n*PfN1=(l9(Xvk(>M7%}>+N zy@V*yO~TEH`Zmh0vELrEWBl8#IY15idj!e;PPjE{Vcl-6skg3p#9!>+ZRt#yJP@4= zd`J$ecJyK=0C(x}xL~+!oaphiT<&(MxWKrZ3CcI;9&o>L6JQW3UN7%>QHYd z?QoJul~Hc$=E4!1hy9t}+?e}~#y$N;8^6fn6+zN~He9OY{O)b*N{@H^*xX=I2CHp! zD}sWN2_x+U-wf>9e;5a-?<3Fv!GS@%_by!tUv+R)x~ODK`$x-n!{T2_t>h&#D3B~2 zo=2h_vbW6uUlmgN)3+Nx^!A?jlqjIV)ALH;H^KOy>B0Vn%NHpD-Z~AenWCGA=JAXD z__wgjghZf$t+kl$w3r=|o-O^hK-(Q_X5A~bubA_B*oREz{u<-2V_ow${=_tSiP*xL zi1xTK9Nw_z|G{L@%3+`!y1jkEa+iJW2o#mfw1Du~J3h#SYAxiQDZp z^26;F37okO`?u8!)%-^peLdpMS&iqpG5WFjFD&4+fzm*jeJ9ZU^vPL1?^>$X=YuSH z4S03`ynOMSb08I=66hECa;Y8Z8@Z;Tw>Vu(zxj6?DNH}QV=Ue#ByWaAjpR2%x^){^ zO;Tb7{ zj^jJo{R3}nw#tQs>&^9afobr?+4AE;4q2|oYU{)0%!v8D-(w_FI+a+ zim-k>L@!PNGZZR@K}Ynk*j`}lCO@jza96YQ#$vHa>;Nk2!i)vqwX56svqceD&Bj|5 zfvyqs=3s{l@dY$=C*M1(F(k885yfz=pX(!u&nJK|xw2V zP?hF7AK9$uffB!~GqI}m8$bdCoHQ3v4s>ccJgk7KVq8ZL=!jmF@PhF5)3$ZPHZO>O zI?*PS$nl`Srv>@a+hKJs`3zt)#NV86-dulmC{?C#JlPobGsH}K^=E}_zpz{7zEb}m zolx?L-*^>p#cRF5q_;*LVYuSL`e5t_?lCvhGN8oxEX4L&?mse;kUFEEK^Zm7bp-`K zbHxRr2ka33A!3-@`^6Ktrm%`f!)Nf=eH#Yn8YYY)1~pQjDiz*2`!y{(#%fa^4_rQ+ zsln{opNQCakvo3h+8X;kOCX<>7E*;V4%}Q?%7Oh(F@2eh7N9xNQd8)Vv|hCttisKm z7hxW$HXIqGX!}BU73ite?&o3VMe^W;aoXz0@7hfQf(=e}zdrOw<%a)5!PwirBr_L{ z*q-`m#qb=G%Xm(9;H4u@&aB~-ZlZ8*8!t{QCd_I9N-1N?qZt2zMWd!%ZiALge0%a9 z$stE%H6!GO)@IJf%+zkof^qh|m2Yt0<-?%MJ5O9&%34I43lD3i{}+eXY|HoF-M)76 zgh?;=A~50!{+X<2{;61_Svk^W>qw!tqxW&lp%Dno>9TbQroJ2h(qg_Ce*MUZ^4Q9# zLww4K&+fL7tb9=d`7HgPqtdV5Vw#P&EtZeXh#*#KtW! z_uCDXeS~?q!Mk(>OD>p2Izq9TR)ssl-tT846cjhifwfi#Y!d&!N4Wf|S9=P!B-IF` z$i;dTn<`Pt4gIEIlgSK|2fI?#320eYAXIiRW6#9+$Ry^Puymg6t`#iY7VN`ma^W+k z5SSk-Yr_Fpmy4P{?ne4oVWGq9v=QY|fE_PdEcQ0p9x#m>;!I3M&LGj*S+O5JOn?9u> z8DUR_K1ZCW{m2*iIpNY>(CG$^Oek8)*frRj zayN>m81HqnvuR#*jUW6l$Qz)jIrKNM`Y?CEP4S4>F#eGCO_cbHH7qq%SdF4@Qc{j>en=sACR;v^cJiAg6=O-NoL|Q!2Ez zVz%vd9_}!|l*p0ZRi}@X81c5E8dYa+-2et>ujkzWDel1t!-Pp{r6krdE;t4F`wAG+ zB0-Ki-dEhw&_e!kv~U z)8|TqughJ6icq{sgs-<+N5bMhY{OuSN)B5CT!lCA{pBJLot#guz^nt-<}0R1GR`qe zUAzxtTY#HmdD-awlE_cXB~;dy*QefkVuqdKs->RMl?O9RFUO=I+}LOe&AyxnXV0Z5689jjpDatGK}0v z*wv7Dh&E9Ro#pAt!~D!iZCTfhJPa=y69$MNWDWzV>U^tjDqeB5lcxfGAO<|MJx)bw!jvq)H$_?lxl zRfO~0pYNYFAM)VNc(sej^Dy6Y( zaX}s-0pWLR7O0R9tuxIU`WOu-(-*{VR>UcHxi!*C2W2hjvr>1@eYag3_|0kd+CBK^ zg!qRgv9*3Wz%hPVaRC)Ti^rxnL#yXSFdASiM7< zktEfFW4GngPh710PKF*4m8E+VrNY<@B02n(oTznWe<@J2$`u+KSl=tzNmG?LNIwv8 zoj7kPHAOz@06rEc1ve@mk&;6gF%Q&>QiGjk)j)m3Lm}g`gd4~E)|q$cue)iBw&H`@ z0K;zk+X+-mOi>#Osd(*Eg>pycSr()^5_sT~ji$L-8k+pf#7P(^%4L$v!65x8GJno_ zAdr^zjp=4ELl$?KNFciIDT?PB=bB|S2W}^|Q z5Cm?|ICX9YkM`%?DsxPKRkINx>|+yEb01NPV1Y6(OrWqSuadfD0mchv7jMAB0)K%8 zdC6Lii(N(~Jtgi7qmaWs&!?6GFI<;he#|(I1V!9)3gkwbr-@uiRB&CX0@XsEZ^Plr#Veq@fH(Z6)~&v4aCGn_YCCt2?_ z)M7yr`n9CcJ1lS~1UYi^&&*By6VwEF7#u*|zCzn0B43`2H%?)% zNh3&jlQb&R{jIK-x{p*$O#FA=!Q4v_(EvvUItjkQiHRJHSkkKaudpX}`nnC~mEF`# zrmLL&^jtIChAE4lOqvWrm8w{_NI>I20Gk8K6n8 z?^C7lxYfVT(TihumLT|_-7f&}bEETBr3_|>kR1sa<4{=q^sy*bwYui*^zSJcj=Sz7 zQ$ZPvL#Mc`EOKNro1_~_(`gy+u9}}b*o@})O*qL;i-%9v#XObzXN1R--?3cp*KGwf z)m|O7+)^^@G)25dqj*!+d^0UD{U;k;rw!2U7_*+O!h!w&2Upq_u;Gm1R@+9u|5K4~ z!O87zKt%?K$FuMVJXIvoOW4>C58knz%F~GgCtbXRz+pdQKlV)(o?i=2cjaGlN6p@& z!D6-)Nc^6-^v=%q!{_|#!?d&G&ms2Z&3STysa-7y$8UX)#Bj@80birOpLY!@YNg)NbjRG=26N}~oaW&9=w`fUL3^l%;^q`gV| zo$dSD<2!%4$;YN$zHWqV8n_hoDQg{%Pv0D* zUA;mjd>R_uCCLAegY!2g$U+w3Oy-sxIG}DL%jTTYRd=zRDFJSk!XkaS3ZL(1ss(B=y@WqU>LKP{Q#bn%=XMk?>M2HxPKoArK&#xQYo z%BJzMz#qOMwFKQ)n7$s9V-?YbAi2`~z6&=TouGfdlbA=Lc?-;W|C%9}@>^ydY;y1J zo>x1azRx;HyO4N#ILa>T(N4-8kIT1oLA_3YVwnHs^EE-B2RGj(B#{)W<$R$Ss6efd@BC(?j*-A<=YI4k@H?&;{nE-X~Qc+o5)t*MpZ% zmJKVQl|mp+;PdCCKv1Fu;HccZd{;0BW6EG>I-MLFUfTZy_zWy9!M|k-^NWikUc*vf zd%3^d^Fl$pZT&c}cysTCIePG8L87&Bi>0O?e|0&0SR{K!Yi&4>6ZXsfa<%kf4AQp9)Gh-uSiuhvt9qdR~hrIWBogwzKa5Qhe1#HnK3U) z3~O=OC~WY)WSa(HxtT@OakFIIYs!oL@r@;R`DSsG6WMv)Vw|9H`Ym28(nxxG;@3B+ z^VL;l#`e|SRM8sIa^aYV*;!I~$Xx}h+OO$mUyb$64#la(k1OrxfU-V)RTOF!(=o<# zRAY>1S!II!^X#hQ_6Ebt?9y zPyYO2_g~wy@y^gRyoCs#98+vJe6T3+k{~734BvUN)@E7QgZe*iMf+(usUm#0B>^XRyZq8_N?+b0f?On?#J5&KjiO-?mebnm zP5!W-Q7c^d!k8>RbLQP@)vhoK&UF-MO>HykSFBkubi^09k~L9bk6?Dwfz9*13o+La zzYl`ruas_3t?12+YW2H80r%6$Znni2HR; zv-o=$a@?ThF*$|t<>JoRA2MG`IjVGue^Z{eNNHPx(`G|5B94z)a32H5zp@$xYkK|C zScN^{-`z`yp)9)Y@ncC_wF1h?w}1;{EYNj;Gz4?JaMx1mvZ=^FYiHA|K+q_;FN z{b;{Pr3pwTeQG4|X-VdAUe`S^QhB6HvUdoZG__u^3gw$=@glfCT!a)jY+1h0#GT8H zEIgS%^3MKd=vEaK@m9QDHi>=j*_$_SvH`z&_x1^E(-raHtsN*-Ee4xOu^Fp?DsMS9 z_CIh3`t}4R!*_2OYJ!Lw8?oZZOok(9}y9tn)A!r zaZ?I2DxsId@!aA9jw01;)cA!lq#nQxCllJ^j&qR%0nCh*1r2>#-HU&rnuBbvUr_vu zRk&BcEgeFVMH*!}BO^Rqj@wWMCLviUuJXg_!~8^}rcw#N6sZA8ImU?j38ql@^^Ofg^tJo?wAo7F^>~-ARw?l8e7}Q2oKDM(LS>&F3~M> zjfzeP?&s5&M5UF;1LvrqH799Kt6F^dF4(JRv>2y z*6*;FLf&7Yl)^ez0|VXyo-H!vOQ#;pb~*5uCsXXlU6G;d%gq;#DfbdkM*Kk)lU8Cr z1DbGa2_=m8bWc`R*GE|a4;71LGW^jmCho7IVP!w$SnEB1y}ucc9Ui5iXinc8O0-gQ z0sPL*_rsUl!EUHXLA`W6bguiO5IT1D_HC`Eo*@x=pPN&MzJ0>7=`!8d-YqTJ*pR=O zk2%D~GpT`?bLE+H!0FSt{3YPOD)W2xHt2oj`Dj)p@kF<72zKf$tBi0xBMhDhE0w!?&W%eDQN-p9Iw9l+w73e9$q6Eov*{w zMzCorFC(ypnwJz?WeCpgRsR&)$njMl(FrwI3M_DTWdLf-EKT5bw6uWzA&p-~!eAmg zeahSaJ-!x;dY0%OVBX}47KOZ{K{t~vkLPh&QmaJzVgh&wRpmr|lJ}w!5dCt);6y}~ z(uAZaOC;#%*vc0_;S;34WaS~kM79$7;s#8O12KE4$YMoNmGNynl7UXn&FC`mW+>X&aI#a%U482s1pu5M z0krhbooq0C-~40TXd{Mynw=3o(DjP^?IsSVfh|xdV)|oYB`eU=TGJ;0^5g z#BQk}^1%Nuqn25B^r}vT!N^Q4rZ>EURPV;>k;h3<&`A*meP?W8oz87`0t-MKeeHJ# z)q$Lf%DGi3m^}eObb!8WDKcEq{4#30NZPrB&!C;u$dqlId^MxG@JsosJD^QEHPffe zvITK6SU1PF#GJgs0tVrIN{r)0Z;MkC1|xX%ji>34r>R-zz*Na)Ko)pi>Z$%u*xqh50gfio378y>UNs zj}soLR}dT`Cu}>BoT`Fg>G_KvM)hl>P&b}u7o<2rbF8S9+h*y*F|0Ki!|uI2t=w0| z;u$%3oE`DtUod3`qQOOGAD>>RclC74M$Au{0CI|eIBBu@BZiDE`rcRo;Hdg^VmqEM zqx)|P1?<-)F7`B~i?1yo#AsU4tuF5e;^+*#PD5;RuR*lvyEO=Obn7vA1^$uAUeSzH zR7FxH2Hc6;ANEyKbCeF_&_v436kpGWBsm3N{p%POkIDfMFk)vt`ZLY2s-7VTqfl9c zP|w*4YJQxPAhi~aS9qMS*D;QpVMzky4~ZBd!;-jD>(BK;Uf3FDM{k4CcfX4LI3qJZ zz=i#W(C6wiHNNdC8oibNr5yZD#Ak)K{HhJGm?IoG$fy|`@VxS~x@?MI?(;!7Ut45P zl`UDn(6??$0cy8zzqxvM!~ouEG`uXJIAD8fg~xFCOw96^&0zm`vtz;a%$v_6U;i3 zqjGL$ges>sULcC6pA-`;g`SX&W{;6NEAz6YDfT;5`!vgicbtZ;oYXPo) zLIriFbov{$++aIpZB@x+d(4r`9g;HpqmU*btZu4Qy!xS7MMu3|{D-5?&ztkBinI}) zFz;VqK~Xd?EtjItD6o|t#`GQ+tqQh1ZD_Vu5PLfdyPvo z7M~NTnQaPTd~~J~$em;G@t?(a`rnm9;dYa$xd}c@dh8{8kxaNX&$*Z@TxCwsjyO{* zIDIF1ELay~?ZF23Rls}Em5HUteVr@bvYFahL%{_51F@`o~CzXX6`t%ssyZ$scknOuOSH zvZAMi8?EbmOQzwfKNVhdGoo!PhXHyIm+?7YeI6oC81?}5PrpAM8|p_~1Pxz3T@YoY z8kzmzU*7b>oQ6bLFeHBwy97<$Ps3|cIFtLf{A!PJL@`Nx`CpPaoYF`-6fT*i<)jQq+d6I?+`wZ^A3A-ED zZU+BMhBu6dk6J?wV#*S4?vY3tMY6aSFViOmmlDb^xOm+{^!>(x4GiFF4Zy~VUVod& zbgW)vVu!AaqOt1pEBiIka2X%%uXnb}%^xg3Gw01Yp}{NX2nGLy4?sTQi&W=ui{p#% zb-4EW>@Ok_g$x_4$;Ml^dp4~o(3kM)$0s>eHz{xX+adI4-9vXBeRU*Vzn;&?84E25 z!q2t=&4<+v&cw`k6Juk+FCvV;Hvlj3-QGDGEFgkly@_kkwZkh)=%~|mc$Yt9HPQF{ z>&ea#_nRTKbjT3?Z(S_cXPImC8_y3P0m6fU5O(dTxeMlrwQ0JTe?zLqiG6o7N1+}~ zF|#;l!$mn_Na3fq#OHez^n2#Ij{{}d<5H5^VlsJ9!!Y$?|IvO}0Gp zBzkJX|1tI{C0;5m_Jp*T-K}$8|9A8NlnrqH0zW*YcEX$AdcV4ibGe~r#eV;B@N!pL z(EqzEcB=OK&IWLJ5v8x%uZP%fwc~umygKTu(_2c_eH3s0FO{{mX zxL*)POWVvDKvM0r6?k^^7a6U6yzl0Ef83T2B0qs=y!k;kNZTW9iCBp}5=uVGEIY4u zWa`z~KDs*Iw~x=rNtp%WXTGb-Azg>=0eJ=bbmS-uN@K2i55wSq;`maCsh%Ff`ZUrN zooz+~do~Np@wr&OSnX@Z64#vl&vjp)jh{`It_{JEf=uy*7lF0C(2eIywJRaGJ$UU+ zBz~MUyR$z)jv|G*Mm&ZspE|HAaW1&Jf^i$ggfmuD6x;RL zpF6pSeX-4?m$=pUSqF@Geq}Y6?+hvyzi~R=UEj)>;sS&PfSvJrVMp?Gu&AW9udlvM z@iGy+nl32qdi#Ckwe9-tn?LiK(l>_vVl3%Mtrk*>PDS%&i=tBWfPQc06r2uu^$pi9 z@G`yXbC~e-H&aBv&Ch>7KmN#uv;XzR5lY|?wgk`@djIm()m1(@)plxHMf#ldYvo4g zv>fq$me`5OP7u68G;&**vnFJk36RsB@(7h}DIQqpM!I{Hb^jPAAI2wk{3yutS-4$XWSdtB2&j7rIFGYf zonyC;N;L_Ph-(z*BChyG;ArBRp_PbKD;;IQjeX>hn-ueC$?PXLcp)TeN|M?{Dl=Zn zTP;TgBtAPk)6;7Uw1ro_BGu21y|;;GwPhjPT*y0UZNOWHy0AUCpG3D7R>hPDcvM4o6?~Vg4n7#t3-ZDiv zQeC#)2zi%hFX?(i<`&y~qKT`UYPM%xef?Yyl;Jq-bIX?)sZ&Po$4I+g>9vVicdz^o zJyFVP0}KS;g!p7ov1WWb*o9}lV&b8?vlOHWW0>d@lG%S%(Vjm<^W`g#fPY!DAeSfH z%;f!th@0|0Vh*t$9A*5IkEm<^CH1L$5t@4b1IN*l8VQ2M1Eg6*66!*cBTI27}{wOz(Y>_Zf zD)O}p)XyO`q-fzLFtL_DfIsJdNp!d;Q2)IhJ!xa5u;R{fdbm24Q%x)lZD&khR-p#{ zy}9Oj-J_r5a2?Y$52FGgun@&CTbFeQgr#|r zwWBXd>sdW`iHVj^aewT;Sb_k=F!^u%5s2V@2F}~Iwa|ddN{%GqOME~NOn4nZC{fmO zCnS9P?VHu;_ZK%SmhDCUHn$rJXN?|*V>Yob N+tcu0bySoiy?n;|teK1i{B9!ss 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

+ } + subtitle={i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.inactiveFieldsDescription', + { + defaultMessage: + 'These fields have type conflicts. To activate these fields, change types in the source engines to match.', + } + )} + > + + + )} + ); }; From ca2930c71958737ae5ef269bfb3ce915bb626061 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Sat, 15 May 2021 00:17:10 +0200 Subject: [PATCH 116/144] [status_page test] use navigateToApp (#100146) --- .github/CODEOWNERS | 2 -- .../apps/status_page/status_page.ts | 7 +++---- .../functional/page_objects/status_page.ts | 20 +------------------ 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index de323128afed1..39daa5780436f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -203,7 +203,6 @@ /packages/kbn-legacy-logging/ @elastic/kibana-core /packages/kbn-crypto/ @elastic/kibana-core /packages/kbn-http-tools/ @elastic/kibana-core -/src/plugins/status_page/ @elastic/kibana-core /src/plugins/saved_objects_management/ @elastic/kibana-core /src/dev/run_check_published_api_changes.ts @elastic/kibana-core /src/plugins/home/public @elastic/kibana-core @@ -215,7 +214,6 @@ #CC# /src/plugins/legacy_export/ @elastic/kibana-core #CC# /src/plugins/xpack_legacy/ @elastic/kibana-core #CC# /src/plugins/saved_objects/ @elastic/kibana-core -#CC# /src/plugins/status_page/ @elastic/kibana-core #CC# /x-pack/plugins/cloud/ @elastic/kibana-core #CC# /x-pack/plugins/features/ @elastic/kibana-core #CC# /x-pack/plugins/global_search/ @elastic/kibana-core diff --git a/x-pack/test/functional/apps/status_page/status_page.ts b/x-pack/test/functional/apps/status_page/status_page.ts index 55a54245cf832..ecef6225632e9 100644 --- a/x-pack/test/functional/apps/status_page/status_page.ts +++ b/x-pack/test/functional/apps/status_page/status_page.ts @@ -12,17 +12,16 @@ export default function statusPageFunctonalTests({ getPageObjects, }: FtrProviderContext) { const esArchiver = getService('esArchiver'); - const PageObjects = getPageObjects(['security', 'statusPage', 'home']); + const PageObjects = getPageObjects(['security', 'statusPage', 'common']); - // FLAKY: https://github.com/elastic/kibana/issues/50448 - describe.skip('Status Page', function () { + describe('Status Page', function () { this.tags(['skipCloud', 'includeFirefox']); before(async () => await esArchiver.load('empty_kibana')); after(async () => await esArchiver.unload('empty_kibana')); it('allows user to navigate without authentication', async () => { await PageObjects.security.forceLogout(); - await PageObjects.statusPage.navigateToPage(); + await PageObjects.common.navigateToApp('status_page', { shouldLoginIfPrompted: false }); await PageObjects.statusPage.expectStatusPage(); }); }); diff --git a/x-pack/test/functional/page_objects/status_page.ts b/x-pack/test/functional/page_objects/status_page.ts index 9edaf4dea53f8..ed90aef954770 100644 --- a/x-pack/test/functional/page_objects/status_page.ts +++ b/x-pack/test/functional/page_objects/status_page.ts @@ -5,36 +5,18 @@ * 2.0. */ -import expect from '@kbn/expect'; import { FtrProviderContext } from '../ftr_provider_context'; export function StatusPagePageProvider({ getService }: FtrProviderContext) { - const retry = getService('retry'); const log = getService('log'); - const browser = getService('browser'); const find = getService('find'); - const deployment = getService('deployment'); - class StatusPage { async initTests() { log.debug('StatusPage:initTests'); } - async navigateToPage() { - return await retry.try(async () => { - const url = deployment.getHostPort() + '/status'; - log.info(`StatusPage:navigateToPage(): ${url}`); - await browser.get(url); - }); - } - async expectStatusPage(): Promise { - return await retry.try(async () => { - log.debug(`expectStatusPage()`); - await find.byCssSelector('[data-test-subj="statusPageRoot"]', 20000); - const url = await browser.getCurrentUrl(); - expect(url).to.contain(`/status`); - }); + await find.byCssSelector('[data-test-subj="statusPageRoot"]', 20000); } } From bfe08d25c53e99a122a99d685b741ba9b35a8b08 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Fri, 14 May 2021 16:56:08 -0600 Subject: [PATCH 117/144] [Security Solutions] Removes deprecation and more copied code between security solutions and lists plugin (#100150) ## Summary * Removes deprecations * Removes duplicated code ### Checklist - [x] [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 --- x-pack/plugins/lists/common/shared_exports.ts | 39 --- .../autocomplete/field_value_match.tsx | 2 +- .../autocomplete/field_value_match_any.tsx | 2 +- .../components/autocomplete/helpers.ts | 3 +- .../use_field_value_autocomplete.test.ts | 2 +- .../hooks/use_field_value_autocomplete.ts | 2 +- .../components/autocomplete/operators.ts | 6 +- .../components/autocomplete/types.ts | 6 +- .../builder/entry_renderer.stories.tsx | 5 +- .../components/builder/entry_renderer.tsx | 8 +- .../builder/exception_item_renderer.tsx | 3 +- .../builder/exception_items_renderer.tsx | 16 +- .../components/builder/helpers.test.ts | 330 ++++++++++++++++- .../exceptions/components/builder/helpers.ts | 24 +- .../exceptions/components/builder/reducer.ts | 4 +- .../exceptions/components/builder/types.ts | 16 +- .../lists/public/exceptions/transforms.ts | 3 +- x-pack/plugins/lists/public/shared_exports.ts | 14 +- .../detection_engine/schemas/types/lists.ts | 2 +- .../common/detection_engine/utils.test.ts | 3 +- .../common/detection_engine/utils.ts | 9 +- .../common/shared_imports.ts | 33 -- .../autocomplete/field_value_match.tsx | 3 +- .../autocomplete/field_value_match_any.tsx | 3 +- .../common/components/autocomplete/helpers.ts | 3 +- .../use_field_value_autocomplete.test.ts | 2 +- .../hooks/use_field_value_autocomplete.ts | 2 +- .../components/autocomplete/operators.ts | 5 +- .../common/components/autocomplete/types.ts | 5 +- .../exceptions/add_exception_comments.tsx | 2 +- .../add_exception_modal/index.test.tsx | 5 +- .../exceptions/add_exception_modal/index.tsx | 3 +- .../exceptions/edit_exception_modal/index.tsx | 3 +- .../components/exceptions/helpers.test.tsx | 331 +----------------- .../common/components/exceptions/helpers.tsx | 194 +--------- .../common/components/exceptions/types.ts | 19 +- .../exceptions/use_add_exception.test.tsx | 9 +- ...tch_or_create_rule_exception_list.test.tsx | 5 +- .../exceptions_viewer_header.stories.tsx | 2 +- .../viewer/exceptions_viewer_header.test.tsx | 3 +- .../viewer/exceptions_viewer_header.tsx | 2 +- .../components/exceptions/viewer/helpers.tsx | 10 +- .../exceptions/viewer/index.test.tsx | 8 +- .../components/exceptions/viewer/index.tsx | 3 +- .../components/exceptions/viewer/reducer.ts | 2 +- .../timeline_actions/alert_context_menu.tsx | 2 +- .../value_lists_management_modal/form.tsx | 4 +- .../rules/all/exceptions/columns.tsx | 2 +- .../rules/all/exceptions/exceptions_table.tsx | 2 +- .../detection_engine/rules/create/helpers.ts | 3 +- .../detection_engine/rules/details/index.tsx | 4 +- .../pages/event_filters/constants.ts | 3 +- .../public/shared_imports.ts | 10 +- .../endpoint/routes/trusted_apps/mapping.ts | 12 +- .../create_field_and_set_tuples.test.ts | 2 +- .../filters/create_field_and_set_tuples.ts | 2 +- 56 files changed, 501 insertions(+), 701 deletions(-) diff --git a/x-pack/plugins/lists/common/shared_exports.ts b/x-pack/plugins/lists/common/shared_exports.ts index bc9d0ca8d7b94..f00afb7ac810d 100644 --- a/x-pack/plugins/lists/common/shared_exports.ts +++ b/x-pack/plugins/lists/common/shared_exports.ts @@ -5,45 +5,6 @@ * 2.0. */ -// TODO: We should remove these and instead directly import them in the security_solution project. This is to get my PR across the line without too many conflicts. -export { - CommentsArray, - Comment, - CreateComment, - CreateCommentsArray, - Entry, - EntryExists, - EntryMatch, - EntryMatchAny, - EntryMatchWildcard, - EntryNested, - EntryList, - EntriesArray, - NamespaceType, - NestedEntriesArray, - ListOperator as Operator, - ListOperatorEnum as OperatorEnum, - ListOperatorTypeEnum as OperatorTypeEnum, - listOperator as operator, - ExceptionListTypeEnum, - ExceptionListType, - comment, - exceptionListType, - entry, - entriesNested, - nestedEntryItem, - entriesMatch, - entriesMatchAny, - entriesMatchWildcard, - entriesExists, - entriesList, - namespaceType, - osType, - osTypeArray, - OsTypeArray, - Type, -} from '@kbn/securitysolution-io-ts-list-types'; - export { ListSchema, ExceptionListSchema, diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx b/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx index a0994871808d1..c1776280842c6 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx @@ -14,8 +14,8 @@ import { EuiSuperSelect, } from '@elastic/eui'; import { uniq } from 'lodash'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; -import { OperatorTypeEnum } from '../../../../common'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; import { AutocompleteStart } from '../../../../../../../src/plugins/data/public'; diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx b/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx index 08958f6d99aab..82347f6212442 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx @@ -8,8 +8,8 @@ import React, { useCallback, useMemo, useState } from 'react'; import { EuiComboBox, EuiComboBoxOptionOption, EuiFormRow } from '@elastic/eui'; import { uniq } from 'lodash'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; -import { OperatorTypeEnum } from '../../../../common'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; import { AutocompleteStart } from '../../../../../../../src/plugins/data/public'; diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/helpers.ts b/x-pack/plugins/lists/public/exceptions/components/autocomplete/helpers.ts index 4f25bec3b38dc..b982193d1d349 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/helpers.ts +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/helpers.ts @@ -7,8 +7,9 @@ import dateMath from '@elastic/datemath'; import { EuiComboBoxOptionOption } from '@elastic/eui'; +import type { Type } from '@kbn/securitysolution-io-ts-list-types'; -import { ListSchema, Type } from '../../../../common'; +import type { ListSchema } from '../../../../common'; import { IFieldType } from '../../../../../../../src/plugins/data/common'; import { diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.test.ts b/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.test.ts index 4e3fb2179d786..0335ffa55d2a2 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.test.ts +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.test.ts @@ -6,10 +6,10 @@ */ import { act, renderHook } from '@testing-library/react-hooks'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { stubIndexPatternWithFields } from '../../../../../../../../src/plugins/data/common/index_patterns/index_pattern.stub'; import { getField } from '../../../../../../../../src/plugins/data/common/index_patterns/fields/fields.mocks'; -import { OperatorTypeEnum } from '../../../../../common'; import { dataPluginMock } from '../../../../../../../../src/plugins/data/public/mocks'; import { diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.ts b/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.ts index 6c6198ac55a0f..674bb5e5537d9 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.ts +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/hooks/use_field_value_autocomplete.ts @@ -7,10 +7,10 @@ import { useEffect, useRef, useState } from 'react'; import { debounce } from 'lodash'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { AutocompleteStart } from '../../../../../../../../src/plugins/data/public'; import { IFieldType, IIndexPattern } from '../../../../../../../../src/plugins/data/common'; -import { OperatorTypeEnum } from '../../../../../common'; interface FuncArgs { fieldSelected: IFieldType | undefined; diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/operators.ts b/x-pack/plugins/lists/public/exceptions/components/autocomplete/operators.ts index 551dfcb61e3ad..83a424d72ec5f 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/operators.ts +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/operators.ts @@ -6,8 +6,10 @@ */ import { i18n } from '@kbn/i18n'; - -import { OperatorEnum, OperatorTypeEnum } from '../../../../common'; +import { + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; import { OperatorOption } from './types'; diff --git a/x-pack/plugins/lists/public/exceptions/components/autocomplete/types.ts b/x-pack/plugins/lists/public/exceptions/components/autocomplete/types.ts index 8ea3e8d927d68..76d5b7758007b 100644 --- a/x-pack/plugins/lists/public/exceptions/components/autocomplete/types.ts +++ b/x-pack/plugins/lists/public/exceptions/components/autocomplete/types.ts @@ -6,8 +6,10 @@ */ import { EuiComboBoxOptionOption } from '@elastic/eui'; - -import { OperatorEnum, OperatorTypeEnum } from '../../../../common'; +import type { + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; export interface GetGenericComboBoxPropsReturn { comboOptions: EuiComboBoxOptionOption[]; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.stories.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.stories.tsx index 5b3730a6deb93..dd67381c30934 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.stories.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.stories.tsx @@ -9,8 +9,11 @@ import { Story } from '@storybook/react'; import { action } from '@storybook/addon-actions'; import React from 'react'; import { HttpStart } from 'kibana/public'; +import { + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; -import { OperatorEnum, OperatorTypeEnum } from '../../../../common'; import { AutocompleteStart } from '../../../../../../../src/plugins/data/public'; import { fields } from '../../../../../../../src/plugins/data/common/index_patterns/fields/fields.mocks'; import { EuiThemeProvider } from '../../../../../../../src/plugins/kibana_react/common'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx index 0ece28d409bd5..09863660e98af 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx @@ -8,7 +8,11 @@ import React, { useCallback, useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFormRow } from '@elastic/eui'; import styled from 'styled-components'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; +import { + ExceptionListType, + ListOperatorTypeEnum as OperatorTypeEnum, + OsTypeArray, +} from '@kbn/securitysolution-io-ts-list-types'; import { AutocompleteStart } from '../../../../../../../src/plugins/data/public'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; @@ -21,7 +25,7 @@ import { AutocompleteFieldExistsComponent } from '../autocomplete/field_value_ex import { AutocompleteFieldMatchComponent } from '../autocomplete/field_value_match'; import { AutocompleteFieldMatchAnyComponent } from '../autocomplete/field_value_match_any'; import { AutocompleteFieldListsComponent } from '../autocomplete/field_value_lists'; -import { ExceptionListType, ListSchema, OperatorTypeEnum } from '../../../../common'; +import { ListSchema } from '../../../../common'; import { getEmptyValue } from '../../../common/empty_value'; import { diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx index 94c3bff8f4cf9..e10cd2934328f 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx @@ -10,9 +10,8 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; import { HttpStart } from 'kibana/public'; import { AutocompleteStart } from 'src/plugins/data/public'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; +import { ExceptionListType, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; -import { ExceptionListType } from '../../../../common'; import { IIndexPattern } from '../../../../../../../src/plugins/data/common'; import { BuilderEntry, ExceptionsBuilderExceptionItem, FormattedBuilderEntry } from './types'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx index 4ec152e155e39..f771969a92025 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx @@ -10,19 +10,21 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; import { HttpStart } from 'kibana/public'; import { addIdToItem } from '@kbn/securitysolution-utils'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; - -import { AutocompleteStart, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { - CreateExceptionListItemSchema, - ExceptionListItemSchema, ExceptionListType, NamespaceType, - OperatorEnum, - OperatorTypeEnum, + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, + OsTypeArray, entriesNested, +} from '@kbn/securitysolution-io-ts-list-types'; + +import { + CreateExceptionListItemSchema, + ExceptionListItemSchema, exceptionListItemSchema, } from '../../../../common'; +import { AutocompleteStart, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { AndOrBadge } from '../and_or_badge'; import { CreateExceptionListItemBuilderSchema, ExceptionsBuilderExceptionItem } from './types'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts index 1e74193299e56..dbfeaa4a258ca 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts @@ -5,6 +5,18 @@ * 2.0. */ +import { + EntryExists, + EntryList, + EntryMatch, + EntryMatchAny, + EntryNested, + ExceptionListType, + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; + +import { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../../../../common'; import { ENTRIES_WITH_IDS } from '../../../../common/constants.mock'; import { getEntryExistsMock } from '../../../../common/schemas/types/entry_exists.mock'; import { getExceptionListItemSchemaMock } from '../../../../common/schemas/response/exception_list_item_schema.mock'; @@ -23,25 +35,23 @@ import { doesNotExistOperator, existsOperator, isInListOperator, + isNotInListOperator, isNotOneOfOperator, isNotOperator, isOneOfOperator, isOperator, } from '../autocomplete/operators'; -import { - EntryExists, - EntryList, - EntryMatch, - EntryMatchAny, - EntryNested, - ExceptionListType, - OperatorEnum, - OperatorTypeEnum, -} from '../../../../common'; import { OperatorOption } from '../autocomplete/types'; +import { getEntryListMock } from '../../../../common/schemas/types/entry_list.mock'; -import { BuilderEntry, ExceptionsBuilderExceptionItem, FormattedBuilderEntry } from './types'; import { + BuilderEntry, + EmptyEntry, + ExceptionsBuilderExceptionItem, + FormattedBuilderEntry, +} from './types'; +import { + filterExceptionItems, getCorrespondingKeywordField, getEntryFromOperator, getEntryOnFieldChange, @@ -49,10 +59,14 @@ import { getEntryOnMatchAnyChange, getEntryOnMatchChange, getEntryOnOperatorChange, + getEntryValue, + getExceptionOperatorSelect, getFilteredIndexPatterns, getFormattedBuilderEntries, getFormattedBuilderEntry, + getNewExceptionItem, getOperatorOptions, + getOperatorType, getUpdatedEntriesOnDelete, isEntryNested, } from './helpers'; @@ -1426,4 +1440,298 @@ describe('Exception builder helpers', () => { expect(output).toEqual(undefined); }); }); + + describe('#getOperatorType', () => { + test('returns operator type "match" if entry.type is "match"', () => { + const payload = getEntryMatchMock(); + const operatorType = getOperatorType(payload); + + expect(operatorType).toEqual(OperatorTypeEnum.MATCH); + }); + + test('returns operator type "match_any" if entry.type is "match_any"', () => { + const payload = getEntryMatchAnyMock(); + const operatorType = getOperatorType(payload); + + expect(operatorType).toEqual(OperatorTypeEnum.MATCH_ANY); + }); + + test('returns operator type "list" if entry.type is "list"', () => { + const payload = getEntryListMock(); + const operatorType = getOperatorType(payload); + + expect(operatorType).toEqual(OperatorTypeEnum.LIST); + }); + + test('returns operator type "exists" if entry.type is "exists"', () => { + const payload = getEntryExistsMock(); + const operatorType = getOperatorType(payload); + + expect(operatorType).toEqual(OperatorTypeEnum.EXISTS); + }); + }); + + describe('#getExceptionOperatorSelect', () => { + test('it returns "isOperator" when "operator" is "included" and operator type is "match"', () => { + const payload = getEntryMatchMock(); + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(isOperator); + }); + + test('it returns "isNotOperator" when "operator" is "excluded" and operator type is "match"', () => { + const payload = getEntryMatchMock(); + payload.operator = 'excluded'; + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(isNotOperator); + }); + + test('it returns "isOneOfOperator" when "operator" is "included" and operator type is "match_any"', () => { + const payload = getEntryMatchAnyMock(); + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(isOneOfOperator); + }); + + test('it returns "isNotOneOfOperator" when "operator" is "excluded" and operator type is "match_any"', () => { + const payload = getEntryMatchAnyMock(); + payload.operator = 'excluded'; + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(isNotOneOfOperator); + }); + + test('it returns "existsOperator" when "operator" is "included" and no operator type is provided', () => { + const payload = getEntryExistsMock(); + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(existsOperator); + }); + + test('it returns "doesNotExistsOperator" when "operator" is "excluded" and no operator type is provided', () => { + const payload = getEntryExistsMock(); + payload.operator = 'excluded'; + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(doesNotExistOperator); + }); + + test('it returns "isInList" when "operator" is "included" and operator type is "list"', () => { + const payload = getEntryListMock(); + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(isInListOperator); + }); + + test('it returns "isNotInList" when "operator" is "excluded" and operator type is "list"', () => { + const payload = getEntryListMock(); + payload.operator = 'excluded'; + const result = getExceptionOperatorSelect(payload); + + expect(result).toEqual(isNotInListOperator); + }); + }); + + describe('#filterExceptionItems', () => { + // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes + // for context around the temporary `id` + test('it correctly validates entries that include a temporary `id`', () => { + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }, + ]); + + expect(output).toEqual([{ ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }]); + }); + + test('it removes entry items with "value" of "undefined"', () => { + const { entries, ...rest } = getExceptionListItemSchemaMock(); + const mockEmptyException: EmptyEntry = { + field: 'host.name', + id: '123', + operator: OperatorEnum.INCLUDED, + type: OperatorTypeEnum.MATCH, + value: undefined, + }; + const exceptions = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(exceptions).toEqual([getExceptionListItemSchemaMock()]); + }); + + test('it removes "match" entry items with "value" of empty string', () => { + const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; + const mockEmptyException: EmptyEntry = { + field: 'host.name', + id: '123', + operator: OperatorEnum.INCLUDED, + type: OperatorTypeEnum.MATCH, + value: '', + }; + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); + }); + + test('it removes "match" entry items with "field" of empty string', () => { + const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; + const mockEmptyException: EmptyEntry = { + field: '', + id: '123', + operator: OperatorEnum.INCLUDED, + type: OperatorTypeEnum.MATCH, + value: 'some value', + }; + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); + }); + + test('it removes "match_any" entry items with "field" of empty string', () => { + const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; + const mockEmptyException: EmptyEntry = { + field: '', + id: '123', + operator: OperatorEnum.INCLUDED, + type: OperatorTypeEnum.MATCH_ANY, + value: ['some value'], + }; + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); + }); + + test('it removes "nested" entry items with "field" of empty string', () => { + const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; + const mockEmptyException: EntryNested = { + entries: [getEntryMatchMock()], + field: '', + type: OperatorTypeEnum.NESTED, + }; + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); + }); + + test('it removes the "nested" entry entries with "value" of empty string', () => { + const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; + const mockEmptyException: EntryNested = { + entries: [getEntryMatchMock(), { ...getEntryMatchMock(), value: '' }], + field: 'host.name', + type: OperatorTypeEnum.NESTED, + }; + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(output).toEqual([ + { + ...getExceptionListItemSchemaMock(), + entries: [ + ...getExceptionListItemSchemaMock().entries, + { ...mockEmptyException, entries: [getEntryMatchMock()] }, + ], + }, + ]); + }); + + test('it removes the "nested" entry item if all its entries are invalid', () => { + const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; + const mockEmptyException: EntryNested = { + entries: [{ ...getEntryMatchMock(), value: '' }], + field: 'host.name', + type: OperatorTypeEnum.NESTED, + }; + const output: Array< + ExceptionListItemSchema | CreateExceptionListItemSchema + > = filterExceptionItems([ + { + ...rest, + entries: [...entries, mockEmptyException], + }, + ]); + + expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); + }); + + test('it removes `temporaryId` from items', () => { + const { meta, ...rest } = getNewExceptionItem({ + listId: '123', + namespaceType: 'single', + ruleName: 'rule name', + }); + const exceptions = filterExceptionItems([{ ...rest, meta }]); + + expect(exceptions).toEqual([{ ...rest, entries: [], meta: undefined }]); + }); + }); + + describe('#getEntryValue', () => { + it('returns "match" entry value', () => { + const payload = getEntryMatchMock(); + const result = getEntryValue(payload); + const expected = 'some host name'; + expect(result).toEqual(expected); + }); + + it('returns "match any" entry values', () => { + const payload = getEntryMatchAnyMock(); + const result = getEntryValue(payload); + const expected = ['some host name']; + expect(result).toEqual(expected); + }); + + it('returns "exists" entry value', () => { + const payload = getEntryExistsMock(); + const result = getEntryValue(payload); + const expected = undefined; + expect(result).toEqual(expected); + }); + + it('returns "list" entry value', () => { + const payload = getEntryListMock(); + const result = getEntryValue(payload); + const expected = 'some-list-id'; + expect(result).toEqual(expected); + }); + }); }); diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts index 18d607d6807fc..6cd9dec0dc7a1 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts @@ -8,27 +8,29 @@ import uuid from 'uuid'; import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; import { validate } from '@kbn/securitysolution-io-ts-utils'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; - -import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { - CreateExceptionListItemSchema, EntriesArray, Entry, EntryNested, - ExceptionListItemSchema, ExceptionListType, - ListSchema, NamespaceType, - OperatorEnum, - OperatorTypeEnum, - createExceptionListItemSchema, + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, + OsTypeArray, entriesList, entriesNested, entry, - exceptionListItemSchema, nestedEntryItem, +} from '@kbn/securitysolution-io-ts-list-types'; + +import { + CreateExceptionListItemSchema, + ExceptionListItemSchema, + ListSchema, + createExceptionListItemSchema, + exceptionListItemSchema, } from '../../../../common'; +import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { EXCEPTION_OPERATORS, EXCEPTION_OPERATORS_SANS_LISTS, @@ -96,7 +98,7 @@ export const filterExceptionItems = ( return [...acc, item]; } else if (createExceptionListItemSchema.is(item)) { // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { meta: _, ...rest } = item; + const { meta, ...rest } = item; const itemSansMetaId: CreateExceptionListItemSchema = { ...rest, meta: undefined }; return [...acc, itemSansMetaId]; } else { diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/reducer.ts b/x-pack/plugins/lists/public/exceptions/components/builder/reducer.ts index 92df2fd3793de..0e8a5fadd3b1a 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/reducer.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/reducer.ts @@ -5,7 +5,9 @@ * 2.0. */ -import { ExceptionListItemSchema, OperatorTypeEnum } from '../../../../common'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; + +import { ExceptionListItemSchema } from '../../../../common'; import { ExceptionsBuilderExceptionItem } from './types'; import { getDefaultEmptyEntry } from './helpers'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/types.ts b/x-pack/plugins/lists/public/exceptions/components/builder/types.ts index 800f1445217b9..5cf4238ab5e0c 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/types.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/types.ts @@ -5,20 +5,20 @@ * 2.0. */ -import { IFieldType } from '../../../../../../../src/plugins/data/common'; -import { OperatorOption } from '../autocomplete/types'; -import { - CreateExceptionListItemSchema, +import type { Entry, EntryExists, EntryMatch, EntryMatchAny, EntryMatchWildcard, EntryNested, - ExceptionListItemSchema, - OperatorEnum, - OperatorTypeEnum, -} from '../../../../common'; + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; + +import type { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../../../../common'; +import { IFieldType } from '../../../../../../../src/plugins/data/common'; +import { OperatorOption } from '../autocomplete/types'; export interface FormattedBuilderEntry { id: string; diff --git a/x-pack/plugins/lists/public/exceptions/transforms.ts b/x-pack/plugins/lists/public/exceptions/transforms.ts index 50ce1b6e33a4b..564ba1a699f98 100644 --- a/x-pack/plugins/lists/public/exceptions/transforms.ts +++ b/x-pack/plugins/lists/public/exceptions/transforms.ts @@ -7,11 +7,10 @@ import { flow } from 'fp-ts/lib/function'; import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; +import type { EntriesArray, Entry } from '@kbn/securitysolution-io-ts-list-types'; import type { CreateExceptionListItemSchema, - EntriesArray, - Entry, ExceptionListItemSchema, UpdateExceptionListItemSchema, } from '../../common'; diff --git a/x-pack/plugins/lists/public/shared_exports.ts b/x-pack/plugins/lists/public/shared_exports.ts index 2032a44a8fd33..6d14c6b541904 100644 --- a/x-pack/plugins/lists/public/shared_exports.ts +++ b/x-pack/plugins/lists/public/shared_exports.ts @@ -7,11 +7,8 @@ // Exports to be shared with plugins export { withOptionalSignal } from './common/with_optional_signal'; -export { useIsMounted } from './common/hooks/use_is_mounted'; export { useAsync } from './common/hooks/use_async'; export { useApi } from './exceptions/hooks/use_api'; -export { usePersistExceptionItem } from './exceptions/hooks/persist_exception_item'; -export { usePersistExceptionList } from './exceptions/hooks/persist_exception_list'; export { useExceptionListItems } from './exceptions/hooks/use_exception_list_items'; export { useExceptionLists } from './exceptions/hooks/use_exception_lists'; export { useFindLists } from './lists/hooks/use_find_lists'; @@ -24,13 +21,18 @@ export { useReadListIndex } from './lists/hooks/use_read_list_index'; export { useCreateListIndex } from './lists/hooks/use_create_list_index'; export { useReadListPrivileges } from './lists/hooks/use_read_list_privileges'; export { - addExceptionListItem, - updateExceptionListItem, + getEntryValue, + getExceptionOperatorSelect, + getOperatorType, + getNewExceptionItem, + addIdToEntries, +} from './exceptions/components/builder/helpers'; +export { fetchExceptionListById, addExceptionList, addEndpointExceptionList, } from './exceptions/api'; -export { +export type { ExceptionList, ExceptionListFilter, ExceptionListIdentifiers, diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts index 79fd264808138..e2c3ee88f6a65 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts @@ -7,7 +7,7 @@ import * as t from 'io-ts'; -import { exceptionListType, namespaceType } from '../../../shared_imports'; +import { exceptionListType, namespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { NonEmptyString } from './non_empty_string'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts b/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts index c477036a07d85..1e0f7e087a5b3 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts @@ -13,7 +13,8 @@ import { normalizeMachineLearningJobIds, normalizeThresholdField, } from './utils'; -import { EntriesArray } from '../shared_imports'; + +import type { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; describe('#hasLargeValueList', () => { test('it returns false if empty array', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/utils.ts b/x-pack/plugins/security_solution/common/detection_engine/utils.ts index a8e0ffcccef82..611d23fd1ce22 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/utils.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/utils.ts @@ -7,11 +7,10 @@ import { isEmpty } from 'lodash'; -import { - CreateExceptionListItemSchema, - EntriesArray, - ExceptionListItemSchema, -} from '../shared_imports'; +import type { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; + +import { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../shared_imports'; + import { Type, JobStatus, Threshold, ThresholdNormalized } from './schemas/common/schemas'; export const hasLargeValueItem = ( diff --git a/x-pack/plugins/security_solution/common/shared_imports.ts b/x-pack/plugins/security_solution/common/shared_imports.ts index e987775a8e768..a6bad0347e641 100644 --- a/x-pack/plugins/security_solution/common/shared_imports.ts +++ b/x-pack/plugins/security_solution/common/shared_imports.ts @@ -7,44 +7,14 @@ export { ListSchema, - CommentsArray, - CreateCommentsArray, - Comment, - CreateComment, ExceptionListSchema, ExceptionListItemSchema, CreateExceptionListSchema, CreateExceptionListItemSchema, UpdateExceptionListItemSchema, - Entry, - EntryExists, - EntryMatch, - EntryMatchAny, - EntryMatchWildcard, - EntryNested, - EntryList, - EntriesArray, - NamespaceType, - Operator, - OperatorEnum, - OperatorTypeEnum, - ExceptionListTypeEnum, exceptionListItemSchema, - exceptionListType, - comment, createExceptionListItemSchema, listSchema, - entry, - entriesNested, - nestedEntryItem, - entriesMatch, - entriesMatchAny, - entriesMatchWildcard, - entriesExists, - entriesList, - namespaceType, - ExceptionListType, - Type, ENDPOINT_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID, EXCEPTION_LIST_URL, @@ -52,8 +22,5 @@ export { ENDPOINT_EVENT_FILTERS_LIST_ID, ENDPOINT_EVENT_FILTERS_LIST_NAME, ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION, - osType, - osTypeArray, - OsTypeArray, buildExceptionFilter, } from '../../lists/common'; diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx index c1efb4d7c4565..9cb219e7a8d45 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx @@ -15,10 +15,11 @@ import { } from '@elastic/eui'; import { uniq } from 'lodash'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; import { useFieldValueAutocomplete } from './hooks/use_field_value_autocomplete'; import { paramIsValid, getGenericComboBoxProps } from './helpers'; -import { OperatorTypeEnum } from '../../../lists_plugin_deps'; + import { GetGenericComboBoxPropsReturn } from './types'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx index e77bf570adc63..dbfdaf9749b6d 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx @@ -9,11 +9,12 @@ import React, { useState, useCallback, useMemo } from 'react'; import { EuiFormRow, EuiComboBoxOptionOption, EuiComboBox } from '@elastic/eui'; import { uniq } from 'lodash'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; import { useFieldValueAutocomplete } from './hooks/use_field_value_autocomplete'; import { getGenericComboBoxProps, paramIsValid } from './helpers'; -import { OperatorTypeEnum } from '../../../lists_plugin_deps'; import { GetGenericComboBoxPropsReturn } from './types'; + import * as i18n from './translations'; interface AutocompleteFieldMatchAnyProps { diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts index b89f9525024c7..bd79bb0fcc8e8 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts @@ -8,6 +8,8 @@ import dateMath from '@elastic/datemath'; import { EuiComboBoxOptionOption } from '@elastic/eui'; +import type { Type } from '@kbn/securitysolution-io-ts-list-types'; +import type { ListSchema } from '../../../lists_plugin_deps'; import { IFieldType } from '../../../../../../../src/plugins/data/common'; import { @@ -19,7 +21,6 @@ import { } from './operators'; import { GetGenericComboBoxPropsReturn, OperatorOption } from './types'; import * as i18n from './translations'; -import { ListSchema, Type } from '../../../lists_plugin_deps'; /** * Returns the appropriate operators given a field type diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.test.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.test.ts index 36e050c84f0b3..e0bdbf2603dc3 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.test.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.test.ts @@ -15,7 +15,7 @@ import { import { useKibana } from '../../../../common/lib/kibana'; import { stubIndexPatternWithFields } from '../../../../../../../../src/plugins/data/common/index_patterns/index_pattern.stub'; import { getField } from '../../../../../../../../src/plugins/data/common/index_patterns/fields/fields.mocks'; -import { OperatorTypeEnum } from '../../../../lists_plugin_deps'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; jest.mock('../../../../common/lib/kibana'); diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts index b8440205e7d32..0f369fa01d01e 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts @@ -8,9 +8,9 @@ import { useEffect, useState, useRef } from 'react'; import { debounce } from 'lodash'; +import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { IFieldType, IIndexPattern } from '../../../../../../../../src/plugins/data/common'; import { useKibana } from '../../../../common/lib/kibana'; -import { OperatorTypeEnum } from '../../../../lists_plugin_deps'; interface FuncArgs { fieldSelected: IFieldType | undefined; diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/operators.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/operators.ts index 93eab41264bf7..53e2ddf84b3d3 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/operators.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/operators.ts @@ -6,8 +6,11 @@ */ import { i18n } from '@kbn/i18n'; +import { + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; import { OperatorOption } from './types'; -import { OperatorEnum, OperatorTypeEnum } from '../../../lists_plugin_deps'; export const isOperator: OperatorOption = { message: i18n.translate('xpack.securitySolution.exceptions.isOperatorLabel', { diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/types.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/types.ts index 903edc403ea25..1d8e3e9aee28e 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/types.ts @@ -7,7 +7,10 @@ import { EuiComboBoxOptionOption } from '@elastic/eui'; -import { OperatorEnum, OperatorTypeEnum } from '../../../lists_plugin_deps'; +import type { + ListOperatorEnum as OperatorEnum, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; export interface GetGenericComboBoxPropsReturn { comboOptions: EuiComboBoxOptionOption[]; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx index c627363fc29ef..c13a1b011ccbd 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx @@ -17,7 +17,7 @@ import { EuiCommentProps, EuiText, } from '@elastic/eui'; -import { Comment } from '../../../shared_imports'; +import type { Comment } from '@kbn/securitysolution-io-ts-list-types'; import * as i18n from './translations'; import { useCurrentUser } from '../../lib/kibana'; import { getFormattedComments } from './helpers'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx index 5ec8999d20518..5fb527a821bac 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx @@ -49,7 +49,10 @@ jest.mock('../../../containers/source'); jest.mock('../../../../detections/containers/detection_engine/rules'); jest.mock('../use_add_exception'); jest.mock('../use_fetch_or_create_rule_exception_list'); -jest.mock('../../../../shared_imports'); +jest.mock('../../../../shared_imports', () => ({ + ...jest.requireActual('../../../../shared_imports'), + useAsync: jest.fn(), +})); jest.mock('../../../../detections/containers/detection_engine/rules/use_rule_async'); describe('When the add exception modal is opened', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx index 120c4ad8efc1b..6efbbcf64406b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx @@ -25,6 +25,7 @@ import { EuiComboBox, EuiComboBoxOptionOption, } from '@elastic/eui'; +import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { hasEqlSequenceQuery, isEqlRule, @@ -34,9 +35,9 @@ import { Status } from '../../../../../common/detection_engine/schemas/common/sc import { ExceptionListItemSchema, CreateExceptionListItemSchema, - ExceptionListType, ExceptionBuilder, } from '../../../../../public/shared_imports'; + import * as i18nCommon from '../../../translations'; import * as i18n from './translations'; import * as sharedI18n from '../translations'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx index 5fb52994fb0f5..6c68dcf934b71 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx @@ -22,6 +22,7 @@ import { EuiCallOut, } from '@elastic/eui'; +import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { hasEqlSequenceQuery, isEqlRule, @@ -33,9 +34,9 @@ import { useRuleAsync } from '../../../../detections/containers/detection_engine import { ExceptionListItemSchema, CreateExceptionListItemSchema, - ExceptionListType, ExceptionBuilder, } from '../../../../../public/shared_imports'; + import * as i18n from './translations'; import * as sharedI18n from '../translations'; import { useKibana } from '../../../lib/kibana'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx index 907b30fcaa879..98c2b4db5676e 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx @@ -10,13 +10,8 @@ import { mount } from 'enzyme'; import moment from 'moment-timezone'; import { - getOperatorType, - getExceptionOperatorSelect, getFormattedComments, - filterExceptionItems, - getNewExceptionItem, formatOperatingSystems, - getEntryValue, formatExceptionItemForUpdate, enrichNewExceptionItemsWithComments, enrichExistingExceptionItemWithComments, @@ -32,35 +27,19 @@ import { retrieveAlertOsTypes, filterIndexPatterns, } from './helpers'; -import { AlertData, EmptyEntry } from './types'; +import { AlertData } from './types'; import { - isOperator, - isNotOperator, - isOneOfOperator, - isNotOneOfOperator, - isInListOperator, - isNotInListOperator, - existsOperator, - doesNotExistOperator, -} from '../autocomplete/operators'; -import { OperatorTypeEnum, OperatorEnum, EntryNested } from '../../../shared_imports'; + ListOperatorTypeEnum as OperatorTypeEnum, + EntriesArray, + OsTypeArray, +} from '@kbn/securitysolution-io-ts-list-types'; + import { getExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; import { getEntryMatchMock } from '../../../../../lists/common/schemas/types/entry_match.mock'; -import { getEntryMatchAnyMock } from '../../../../../lists/common/schemas/types/entry_match_any.mock'; -import { getEntryExistsMock } from '../../../../../lists/common/schemas/types/entry_exists.mock'; -import { getEntryListMock } from '../../../../../lists/common/schemas/types/entry_list.mock'; import { getCommentsArrayMock } from '../../../../../lists/common/schemas/types/comment.mock'; import { fields } from '../../../../../../../src/plugins/data/common/index_patterns/fields/fields.mocks'; -import { - ENTRIES, - ENTRIES_WITH_IDS, - OLD_DATE_RELATIVE_TO_DATE_NOW, -} from '../../../../../lists/common/constants.mock'; -import { EntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; -import { - CreateExceptionListItemSchema, - ExceptionListItemSchema, -} from '../../../../../lists/common/schemas'; +import { ENTRIES, OLD_DATE_RELATIVE_TO_DATE_NOW } from '../../../../../lists/common/constants.mock'; +import { ExceptionListItemSchema } from '../../../../../lists/common/schemas'; import { IFieldType, IIndexPattern } from 'src/plugins/data/common'; jest.mock('uuid', () => ({ @@ -162,128 +141,6 @@ describe('Exception helpers', () => { }); }); - describe('#getOperatorType', () => { - test('returns operator type "match" if entry.type is "match"', () => { - const payload = getEntryMatchMock(); - const operatorType = getOperatorType(payload); - - expect(operatorType).toEqual(OperatorTypeEnum.MATCH); - }); - - test('returns operator type "match_any" if entry.type is "match_any"', () => { - const payload = getEntryMatchAnyMock(); - const operatorType = getOperatorType(payload); - - expect(operatorType).toEqual(OperatorTypeEnum.MATCH_ANY); - }); - - test('returns operator type "list" if entry.type is "list"', () => { - const payload = getEntryListMock(); - const operatorType = getOperatorType(payload); - - expect(operatorType).toEqual(OperatorTypeEnum.LIST); - }); - - test('returns operator type "exists" if entry.type is "exists"', () => { - const payload = getEntryExistsMock(); - const operatorType = getOperatorType(payload); - - expect(operatorType).toEqual(OperatorTypeEnum.EXISTS); - }); - }); - - describe('#getExceptionOperatorSelect', () => { - test('it returns "isOperator" when "operator" is "included" and operator type is "match"', () => { - const payload = getEntryMatchMock(); - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(isOperator); - }); - - test('it returns "isNotOperator" when "operator" is "excluded" and operator type is "match"', () => { - const payload = getEntryMatchMock(); - payload.operator = 'excluded'; - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(isNotOperator); - }); - - test('it returns "isOneOfOperator" when "operator" is "included" and operator type is "match_any"', () => { - const payload = getEntryMatchAnyMock(); - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(isOneOfOperator); - }); - - test('it returns "isNotOneOfOperator" when "operator" is "excluded" and operator type is "match_any"', () => { - const payload = getEntryMatchAnyMock(); - payload.operator = 'excluded'; - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(isNotOneOfOperator); - }); - - test('it returns "existsOperator" when "operator" is "included" and no operator type is provided', () => { - const payload = getEntryExistsMock(); - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(existsOperator); - }); - - test('it returns "doesNotExistsOperator" when "operator" is "excluded" and no operator type is provided', () => { - const payload = getEntryExistsMock(); - payload.operator = 'excluded'; - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(doesNotExistOperator); - }); - - test('it returns "isInList" when "operator" is "included" and operator type is "list"', () => { - const payload = getEntryListMock(); - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(isInListOperator); - }); - - test('it returns "isNotInList" when "operator" is "excluded" and operator type is "list"', () => { - const payload = getEntryListMock(); - payload.operator = 'excluded'; - const result = getExceptionOperatorSelect(payload); - - expect(result).toEqual(isNotInListOperator); - }); - }); - - describe('#getEntryValue', () => { - it('returns "match" entry value', () => { - const payload = getEntryMatchMock(); - const result = getEntryValue(payload); - const expected = 'some host name'; - expect(result).toEqual(expected); - }); - - it('returns "match any" entry values', () => { - const payload = getEntryMatchAnyMock(); - const result = getEntryValue(payload); - const expected = ['some host name']; - expect(result).toEqual(expected); - }); - - it('returns "exists" entry value', () => { - const payload = getEntryExistsMock(); - const result = getEntryValue(payload); - const expected = undefined; - expect(result).toEqual(expected); - }); - - it('returns "list" entry value', () => { - const payload = getEntryListMock(); - const result = getEntryValue(payload); - const expected = 'some-list-id'; - expect(result).toEqual(expected); - }); - }); - describe('#formatOperatingSystems', () => { test('it returns null if no operating system tag specified', () => { const result = formatOperatingSystems(['some os', 'some other os']); @@ -324,178 +181,6 @@ describe('Exception helpers', () => { }); }); - describe('#filterExceptionItems', () => { - // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes - // for context around the temporary `id` - test('it correctly validates entries that include a temporary `id`', () => { - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }, - ]); - - expect(output).toEqual([{ ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }]); - }); - - test('it removes entry items with "value" of "undefined"', () => { - const { entries, ...rest } = getExceptionListItemSchemaMock(); - const mockEmptyException: EmptyEntry = { - id: '123', - field: 'host.name', - type: OperatorTypeEnum.MATCH, - operator: OperatorEnum.INCLUDED, - value: undefined, - }; - const exceptions = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(exceptions).toEqual([getExceptionListItemSchemaMock()]); - }); - - test('it removes "match" entry items with "value" of empty string', () => { - const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; - const mockEmptyException: EmptyEntry = { - id: '123', - field: 'host.name', - type: OperatorTypeEnum.MATCH, - operator: OperatorEnum.INCLUDED, - value: '', - }; - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); - }); - - test('it removes "match" entry items with "field" of empty string', () => { - const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; - const mockEmptyException: EmptyEntry = { - id: '123', - field: '', - type: OperatorTypeEnum.MATCH, - operator: OperatorEnum.INCLUDED, - value: 'some value', - }; - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); - }); - - test('it removes "match_any" entry items with "field" of empty string', () => { - const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; - const mockEmptyException: EmptyEntry = { - id: '123', - field: '', - type: OperatorTypeEnum.MATCH_ANY, - operator: OperatorEnum.INCLUDED, - value: ['some value'], - }; - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); - }); - - test('it removes "nested" entry items with "field" of empty string', () => { - const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; - const mockEmptyException: EntryNested = { - field: '', - type: OperatorTypeEnum.NESTED, - entries: [getEntryMatchMock()], - }; - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); - }); - - test('it removes the "nested" entry entries with "value" of empty string', () => { - const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; - const mockEmptyException: EntryNested = { - field: 'host.name', - type: OperatorTypeEnum.NESTED, - entries: [getEntryMatchMock(), { ...getEntryMatchMock(), value: '' }], - }; - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(output).toEqual([ - { - ...getExceptionListItemSchemaMock(), - entries: [ - ...getExceptionListItemSchemaMock().entries, - { ...mockEmptyException, entries: [getEntryMatchMock()] }, - ], - }, - ]); - }); - - test('it removes the "nested" entry item if all its entries are invalid', () => { - const { entries, ...rest } = { ...getExceptionListItemSchemaMock() }; - const mockEmptyException: EntryNested = { - field: 'host.name', - type: OperatorTypeEnum.NESTED, - entries: [{ ...getEntryMatchMock(), value: '' }], - }; - const output: Array< - ExceptionListItemSchema | CreateExceptionListItemSchema - > = filterExceptionItems([ - { - ...rest, - entries: [...entries, mockEmptyException], - }, - ]); - - expect(output).toEqual([{ ...getExceptionListItemSchemaMock() }]); - }); - - test('it removes `temporaryId` from items', () => { - const { meta, ...rest } = getNewExceptionItem({ - listId: '123', - namespaceType: 'single', - ruleName: 'rule name', - }); - const exceptions = filterExceptionItems([{ ...rest, meta }]); - - expect(exceptions).toEqual([{ ...rest, entries: [], meta: undefined }]); - }); - }); - describe('#formatExceptionItemForUpdate', () => { test('it should return correct update fields', () => { const payload = getExceptionListItemSchemaMock(); diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx index ce76114309e2e..437e93bb26fef 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx @@ -9,46 +9,36 @@ import React from 'react'; import { EuiText, EuiCommentProps, EuiAvatar } from '@elastic/eui'; import { capitalize } from 'lodash'; import moment from 'moment'; -import uuid from 'uuid'; -import * as i18n from './translations'; -import { - AlertData, - BuilderEntry, - CreateExceptionListItemBuilderSchema, - ExceptionsBuilderExceptionItem, - Flattened, -} from './types'; -import { EXCEPTION_OPERATORS, isOperator } from '../autocomplete/operators'; -import { OperatorOption } from '../autocomplete/types'; import { + comment, + osType, CommentsArray, Comment, CreateComment, Entry, - ExceptionListItemSchema, NamespaceType, - OperatorTypeEnum, - CreateExceptionListItemSchema, - comment, - entry, - entriesNested, - nestedEntryItem, - createExceptionListItemSchema, - exceptionListItemSchema, - UpdateExceptionListItemSchema, EntryNested, OsTypeArray, - EntriesArray, - osType, ExceptionListType, + ListOperatorTypeEnum as OperatorTypeEnum, +} from '@kbn/securitysolution-io-ts-list-types'; + +import * as i18n from './translations'; +import { AlertData, ExceptionsBuilderExceptionItem, Flattened } from './types'; +import { + ExceptionListItemSchema, + CreateExceptionListItemSchema, + UpdateExceptionListItemSchema, + getOperatorType, + getNewExceptionItem, + addIdToEntries, } from '../../../shared_imports'; + import { IIndexPattern } from '../../../../../../../src/plugins/data/common'; -import { validate } from '../../../../common/validate'; import { Ecs } from '../../../../common/ecs'; import { CodeSignature } from '../../../../common/ecs/file'; import { WithCopyToClipboard } from '../../lib/clipboard/with_copy_to_clipboard'; -import { addIdToItem, removeIdFromItem } from '../../../../common'; import exceptionableLinuxFields from './exceptionable_linux_fields.json'; import exceptionableWindowsMacFields from './exceptionable_windows_mac_fields.json'; import exceptionableEndpointFields from './exceptionable_endpoint_fields.json'; @@ -84,75 +74,6 @@ export const filterIndexPatterns = ( } }; -export const addIdToEntries = (entries: EntriesArray): EntriesArray => { - return entries.map((singleEntry) => { - if (singleEntry.type === 'nested') { - return addIdToItem({ - ...singleEntry, - entries: singleEntry.entries.map((nestedEntry) => addIdToItem(nestedEntry)), - }); - } else { - return addIdToItem(singleEntry); - } - }); -}; - -/** - * Returns the operator type, may not need this if using io-ts types - * - * @param item a single ExceptionItem entry - */ -export const getOperatorType = (item: BuilderEntry): OperatorTypeEnum => { - switch (item.type) { - case 'match': - return OperatorTypeEnum.MATCH; - case 'match_any': - return OperatorTypeEnum.MATCH_ANY; - case 'list': - return OperatorTypeEnum.LIST; - default: - return OperatorTypeEnum.EXISTS; - } -}; - -/** - * Determines operator selection (is/is not/is one of, etc.) - * Default operator is "is" - * - * @param item a single ExceptionItem entry - */ -export const getExceptionOperatorSelect = (item: BuilderEntry): OperatorOption => { - if (item.type === 'nested') { - return isOperator; - } else { - const operatorType = getOperatorType(item); - const foundOperator = EXCEPTION_OPERATORS.find((operatorOption) => { - return item.operator === operatorOption.operator && operatorType === operatorOption.type; - }); - - return foundOperator ?? isOperator; - } -}; - -/** - * Returns the fields corresponding value for an entry - * - * @param item a single ExceptionItem entry - */ -export const getEntryValue = (item: BuilderEntry): string | string[] | undefined => { - switch (item.type) { - case OperatorTypeEnum.MATCH: - case OperatorTypeEnum.MATCH_ANY: - return item.value; - case OperatorTypeEnum.EXISTS: - return undefined; - case OperatorTypeEnum.LIST: - return item.list.id; - default: - return undefined; - } -}; - /** * Formats os value array to a displayable string */ @@ -189,91 +110,6 @@ export const getFormattedComments = (comments: CommentsArray): EuiCommentProps[] ), })); -export const getNewExceptionItem = ({ - listId, - namespaceType, - ruleName, -}: { - listId: string; - namespaceType: NamespaceType; - ruleName: string; -}): CreateExceptionListItemBuilderSchema => { - return { - comments: [], - description: `${ruleName} - exception list item`, - entries: addIdToEntries([ - { - field: '', - operator: 'included', - type: 'match', - value: '', - }, - ]), - item_id: undefined, - list_id: listId, - meta: { - temporaryUuid: uuid.v4(), - }, - name: `${ruleName} - exception list item`, - namespace_type: namespaceType, - tags: [], - type: 'simple', - }; -}; - -export const filterExceptionItems = ( - exceptions: ExceptionsBuilderExceptionItem[] -): Array => { - return exceptions.reduce>( - (acc, exception) => { - const entries = exception.entries.reduce((nestedAcc, singleEntry) => { - const strippedSingleEntry = removeIdFromItem(singleEntry); - - if (entriesNested.is(strippedSingleEntry)) { - const nestedEntriesArray = strippedSingleEntry.entries.filter((singleNestedEntry) => { - const noIdSingleNestedEntry = removeIdFromItem(singleNestedEntry); - const [validatedNestedEntry] = validate(noIdSingleNestedEntry, nestedEntryItem); - return validatedNestedEntry != null; - }); - const noIdNestedEntries = nestedEntriesArray.map((singleNestedEntry) => - removeIdFromItem(singleNestedEntry) - ); - - const [validatedNestedEntry] = validate( - { ...strippedSingleEntry, entries: noIdNestedEntries }, - entriesNested - ); - - if (validatedNestedEntry != null) { - return [...nestedAcc, { ...singleEntry, entries: nestedEntriesArray }]; - } - return nestedAcc; - } else { - const [validatedEntry] = validate(strippedSingleEntry, entry); - - if (validatedEntry != null) { - return [...nestedAcc, singleEntry]; - } - return nestedAcc; - } - }, []); - - const item = { ...exception, entries }; - - if (exceptionListItemSchema.is(item)) { - return [...acc, item]; - } else if (createExceptionListItemSchema.is(item)) { - const { meta, ...rest } = item; - const itemSansMetaId: CreateExceptionListItemSchema = { ...rest, meta: undefined }; - return [...acc, itemSansMetaId]; - } else { - return acc; - } - }, - [] - ); -}; - export const formatExceptionItemForUpdate = ( exceptionItem: ExceptionListItemSchema ): UpdateExceptionListItemSchema => { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts b/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts index 92a3cb2cfac93..49cdd7103c48b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts @@ -6,23 +6,22 @@ */ import { ReactNode } from 'react'; -import { Ecs } from '../../../../common/ecs'; -import { CodeSignature } from '../../../../common/ecs/file'; -import { IFieldType } from '../../../../../../../src/plugins/data/common'; -import { OperatorOption } from '../autocomplete/types'; -import { +import type { EntryNested, Entry, EntryMatch, EntryMatchAny, EntryMatchWildcard, EntryExists, - ExceptionListItemSchema, - CreateExceptionListItemSchema, NamespaceType, - OperatorTypeEnum, - OperatorEnum, -} from '../../../lists_plugin_deps'; + ListOperatorTypeEnum as OperatorTypeEnum, + ListOperatorEnum as OperatorEnum, +} from '@kbn/securitysolution-io-ts-list-types'; +import { Ecs } from '../../../../common/ecs'; +import { CodeSignature } from '../../../../common/ecs/file'; +import { IFieldType } from '../../../../../../../src/plugins/data/common'; +import { OperatorOption } from '../autocomplete/types'; +import { ExceptionListItemSchema, CreateExceptionListItemSchema } from '../../../lists_plugin_deps'; export interface FormattedEntry { fieldName: string; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx index 0f6dd19ea9b66..f609acf9c6c63 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx @@ -27,6 +27,7 @@ import { ReturnUseAddOrUpdateException, AddOrUpdateExceptionItemsFunc, } from './use_add_exception'; +import { UpdateDocumentByQueryResponse } from 'elasticsearch'; const mockKibanaHttpService = coreMock.createStart().http; const mockKibanaServices = KibanaServices.get as jest.Mock; @@ -36,11 +37,9 @@ const fetchMock = jest.fn(); mockKibanaServices.mockReturnValue({ http: { fetch: fetchMock } }); describe('useAddOrUpdateException', () => { - let updateAlertStatus: jest.SpyInstance>; - let addExceptionListItem: jest.SpyInstance>; - let updateExceptionListItem: jest.SpyInstance< - ReturnType - >; + let updateAlertStatus: jest.SpyInstance>; + let addExceptionListItem: jest.SpyInstance>; + let updateExceptionListItem: jest.SpyInstance>; let getQueryFilter: jest.SpyInstance>; let buildAlertStatusFilter: jest.SpyInstance< ReturnType diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx index 877f545b69d65..17237f4f94c61 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx @@ -12,7 +12,7 @@ import * as rulesApi from '../../../detections/containers/detection_engine/rules import * as listsApi from '../../../../../lists/public/exceptions/api'; import { getExceptionListSchemaMock } from '../../../../../lists/common/schemas/response/exception_list_schema.mock'; import { savedRuleMock } from '../../../detections/containers/detection_engine/rules/mock'; -import { ExceptionListType } from '../../../lists_plugin_deps'; +import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { ListArray } from '../../../../common/detection_engine/schemas/types'; import { getListArrayMock } from '../../../../common/detection_engine/schemas/types/lists.mock'; import { @@ -20,6 +20,7 @@ import { UseFetchOrCreateRuleExceptionListProps, ReturnUseFetchOrCreateRuleExceptionList, } from './use_fetch_or_create_rule_exception_list'; +import { ExceptionListSchema } from '../../../shared_imports'; const mockKibanaHttpService = coreMock.createStart().http; jest.mock('../../../detections/containers/detection_engine/rules/api'); @@ -31,7 +32,7 @@ describe('useFetchOrCreateRuleExceptionList', () => { let addEndpointExceptionList: jest.SpyInstance< ReturnType >; - let fetchExceptionListById: jest.SpyInstance>; + let fetchExceptionListById: jest.SpyInstance>; let render: ( listType?: UseFetchOrCreateRuleExceptionListProps['exceptionListType'] ) => RenderHookResult< diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx index 8ded1b902f302..4f78b49ea266c 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.stories.tsx @@ -11,8 +11,8 @@ import React from 'react'; import { ThemeProvider } from 'styled-components'; import euiLightVars from '@elastic/eui/dist/eui_theme_light.json'; +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionsViewerHeader } from './exceptions_viewer_header'; -import { ExceptionListTypeEnum } from '../../../../../public/lists_plugin_deps'; addDecorator((storyFn) => ( ({ eui: euiLightVars, darkMode: false })}>{storyFn()} diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.test.tsx index b82a472befdcf..7dcd59069b53c 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.test.tsx @@ -9,7 +9,8 @@ import React from 'react'; import { mount } from 'enzyme'; import { ExceptionsViewerHeader } from './exceptions_viewer_header'; -import { ExceptionListTypeEnum } from '../../../../../public/lists_plugin_deps'; + +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; describe('ExceptionsViewerHeader', () => { it('it renders all disabled if "isInitLoading" is true', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.tsx index eff4368ef6809..8fc28ad89156d 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_header.tsx @@ -18,9 +18,9 @@ import { } from '@elastic/eui'; import React, { useEffect, useState, useCallback, useMemo } from 'react'; +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import * as i18n from '../translations'; import { Filter } from '../types'; -import { ExceptionListTypeEnum } from '../../../../../public/lists_plugin_deps'; interface ExceptionsViewerHeaderProps { isInitLoading: boolean; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx index 29764625075d6..abd45cf2945cb 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx @@ -7,8 +7,14 @@ import moment from 'moment'; -import { entriesNested, ExceptionListItemSchema } from '../../../../lists_plugin_deps'; -import { getEntryValue, getExceptionOperatorSelect, formatOperatingSystems } from '../helpers'; +import { entriesNested } from '@kbn/securitysolution-io-ts-list-types'; +import { + ExceptionListItemSchema, + getEntryValue, + getExceptionOperatorSelect, +} from '../../../../lists_plugin_deps'; + +import { formatOperatingSystems } from '../helpers'; import { FormattedEntry, BuilderEntry, DescriptionListItem } from '../types'; import * as i18n from '../translations'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx index 3fe6497105af1..971b3fda47191 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx @@ -11,11 +11,9 @@ import { ThemeProvider } from 'styled-components'; import { ExceptionsViewer } from './'; import { useKibana } from '../../../../common/lib/kibana'; -import { - ExceptionListTypeEnum, - useExceptionListItems, - useApi, -} from '../../../../../public/lists_plugin_deps'; +import { useExceptionListItems, useApi } from '../../../../../public/lists_plugin_deps'; + +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { getExceptionListSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_schema.mock'; import { getFoundExceptionListItemSchemaMock } from '../../../../../../lists/common/schemas/response/found_exception_list_item_schema.mock'; import { getMockTheme } from '../../../lib/kibana/kibana_react.mock'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx index 8c4569ed29b33..da7607f40ab72 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx @@ -9,6 +9,7 @@ import React, { useCallback, useEffect, useReducer } from 'react'; import { EuiSpacer } from '@elastic/eui'; import uuid from 'uuid'; +import type { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import * as i18n from '../translations'; import { useStateToaster } from '../../toasters'; import { useKibana } from '../../../../common/lib/kibana'; @@ -20,11 +21,11 @@ import { allExceptionItemsReducer, State, ViewerModalName } from './reducer'; import { useExceptionListItems, ExceptionListIdentifiers, - ExceptionListTypeEnum, ExceptionListItemSchema, UseExceptionListItemsSuccess, useApi, } from '../../../../../public/lists_plugin_deps'; + import { ExceptionsViewerPagination } from './exceptions_pagination'; import { ExceptionsViewerUtility } from './exceptions_utility'; import { ExceptionsViewerItems } from './exceptions_viewer_items'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts index 46ac19f47503d..bf8e454e9971f 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts @@ -5,6 +5,7 @@ * 2.0. */ +import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { FilterOptions, ExceptionsPagination, @@ -12,7 +13,6 @@ import { Filter, } from '../types'; import { - ExceptionListType, ExceptionListItemSchema, ExceptionListIdentifiers, Pagination, diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx index 69e41a2c3d0a2..3152c08fab323 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx @@ -19,6 +19,7 @@ import styled from 'styled-components'; import { getOr } from 'lodash/fp'; import { indexOf } from 'lodash'; +import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; import { buildGetAlertByIdQuery } from '../../../../common/components/exceptions/helpers'; import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; import { TimelineId } from '../../../../../common/types/timeline'; @@ -44,7 +45,6 @@ import { } from '../../../../common/components/toasters'; import { inputsModel } from '../../../../common/store'; import { useUserData } from '../../user_info'; -import { ExceptionListType } from '../../../../../common/shared_imports'; import { AlertData, EcsHit } from '../../../../common/components/exceptions/types'; import { useQueryAlerts } from '../../../containers/detection_engine/alerts/use_query'; import { useSignalIndex } from '../../../containers/detection_engine/alerts/use_signal_index'; diff --git a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_modal/form.tsx b/x-pack/plugins/security_solution/public/detections/components/value_lists_management_modal/form.tsx index 94cb22592f4ed..ea903882c326d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/value_lists_management_modal/form.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/value_lists_management_modal/form.tsx @@ -18,7 +18,9 @@ import { EuiSelectOption, } from '@elastic/eui'; -import { useImportList, ListSchema, Type } from '../../../shared_imports'; +import type { Type } from '@kbn/securitysolution-io-ts-list-types'; +import { useImportList, ListSchema } from '../../../shared_imports'; + import * as i18n from './translations'; import { useKibana } from '../../../common/lib/kibana'; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/columns.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/columns.tsx index d11ceee7f5978..64cb936f160f1 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/columns.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/columns.tsx @@ -11,8 +11,8 @@ import React from 'react'; import { EuiButtonIcon, EuiBasicTableColumn, EuiToolTip } from '@elastic/eui'; import { History } from 'history'; +import { NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { Spacer } from '../../../../../../common/components/page'; -import { NamespaceType } from '../../../../../../../../lists/common'; import { FormatUrl } from '../../../../../../common/components/link_to'; import { LinkAnchor } from '../../../../../../common/components/links'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx index 146b7e8470718..50cf1b1830fec 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/exceptions/exceptions_table.tsx @@ -15,9 +15,9 @@ import { } from '@elastic/eui'; import { History } from 'history'; +import { NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { useAppToasts } from '../../../../../../common/hooks/use_app_toasts'; import { AutoDownload } from '../../../../../../common/components/auto_download/auto_download'; -import { NamespaceType } from '../../../../../../../../lists/common'; import { useKibana } from '../../../../../../common/lib/kibana'; import { ExceptionListFilter, useApi, useExceptionLists } from '../../../../../../shared_imports'; import { FormatUrl } from '../../../../../../common/components/link_to'; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts index 64dfac5787f23..29b63721513d4 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts @@ -9,11 +9,12 @@ import { has, isEmpty } from 'lodash/fp'; import moment from 'moment'; import deepmerge from 'deepmerge'; +import type { ExceptionListType, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { NOTIFICATION_THROTTLE_NO_ACTIONS } from '../../../../../../common/constants'; import { assertUnreachable } from '../../../../../../common/utility_types'; import { transformAlertToRuleAction } from '../../../../../../common/detection_engine/transform_actions'; import { List } from '../../../../../../common/detection_engine/schemas/types'; -import { ENDPOINT_LIST_ID, ExceptionListType, NamespaceType } from '../../../../../shared_imports'; +import { ENDPOINT_LIST_ID } from '../../../../../shared_imports'; import { Rule } from '../../../../containers/detection_engine/rules'; import { Threats, diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx index 0fab428ef6d1b..9660132147a57 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/details/index.tsx @@ -28,6 +28,7 @@ import { useDispatch } from 'react-redux'; import styled from 'styled-components'; import deepEqual from 'fast-deep-equal'; +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { useDeepEqualSelector, useShallowEqualSelector, @@ -83,7 +84,8 @@ import { ExceptionsViewer } from '../../../../../common/components/exceptions/vi import { DEFAULT_INDEX_PATTERN } from '../../../../../../common/constants'; import { useGlobalFullScreen } from '../../../../../common/containers/use_full_screen'; import { Display } from '../../../../../hosts/pages/display'; -import { ExceptionListTypeEnum, ExceptionListIdentifiers } from '../../../../../shared_imports'; +import type { ExceptionListIdentifiers } from '../../../../../shared_imports'; + import { focusUtilityBarAction, onTimelineTabKeyPressed, diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts index 5d600f471994b..e1fa1107fcb01 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts @@ -5,9 +5,8 @@ * 2.0. */ +import { ExceptionListType, ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { - ExceptionListType, - ExceptionListTypeEnum, EXCEPTION_LIST_URL, EXCEPTION_LIST_ITEM_URL, ENDPOINT_EVENT_FILTERS_LIST_ID, diff --git a/x-pack/plugins/security_solution/public/shared_imports.ts b/x-pack/plugins/security_solution/public/shared_imports.ts index e77c4a0eec486..76ec761d41703 100644 --- a/x-pack/plugins/security_solution/public/shared_imports.ts +++ b/x-pack/plugins/security_solution/public/shared_imports.ts @@ -33,23 +33,23 @@ export { ERROR_CODE } from '../../../../src/plugins/es_ui_shared/static/forms/he export { exportList, - useIsMounted, useCursor, useApi, useAsync, useExceptionListItems, useExceptionLists, - usePersistExceptionItem, - usePersistExceptionList, useFindLists, useDeleteList, useImportList, useCreateListIndex, useReadListIndex, useReadListPrivileges, - addExceptionListItem, - updateExceptionListItem, fetchExceptionListById, + addIdToEntries, + getOperatorType, + getNewExceptionItem, + getEntryValue, + getExceptionOperatorSelect, addExceptionList, ExceptionListFilter, ExceptionListIdentifiers, diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts b/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts index 786a74e91b51a..e4704523a16c3 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts @@ -7,17 +7,19 @@ import uuid from 'uuid'; -import { OsType } from '../../../../../lists/common/schemas'; -import { +import type { EntriesArray, EntryMatch, EntryMatchWildcard, EntryNested, - ExceptionListItemSchema, NestedEntriesArray, -} from '../../../../../lists/common'; +} from '@kbn/securitysolution-io-ts-list-types'; + +import type { ExceptionListItemSchema } from '../../../../../lists/common'; + +import type { OsType } from '../../../../../lists/common/schemas'; import { ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../../../../lists/common/constants'; -import { +import type { CreateExceptionListItemOptions, UpdateExceptionListItemOptions, } from '../../../../../lists/server'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.test.ts index 3fa5d1178b3ec..578c1aba64558 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.test.ts @@ -11,7 +11,7 @@ import { mockLogger, sampleDocWithSortId } from '../__mocks__/es_results'; import { getExceptionListItemSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; import { listMock } from '../../../../../../lists/server/mocks'; import { getSearchListItemResponseMock } from '../../../../../../lists/common/schemas/response/search_list_item_schema.mock'; -import { EntryList } from '../../../../../../lists/common'; +import { EntryList } from '@kbn/securitysolution-io-ts-list-types'; import { buildRuleMessageMock as buildRuleMessage } from '../rule_messages.mock'; describe('filterEventsAgainstList', () => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.ts index b2002dbb5a7e2..40322029c1d98 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/create_field_and_set_tuples.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryList, entriesList } from '../../../../../../lists/common'; +import { EntryList, entriesList } from '@kbn/securitysolution-io-ts-list-types'; import { createSetToFilterAgainst } from './create_set_to_filter_against'; import { CreateFieldAndSetTuplesOptions, FieldSet } from './types'; From ea8c92b353a094d64fed85f917e4c1dbc64a2774 Mon Sep 17 00:00:00 2001 From: Byron Hulcher Date: Sat, 15 May 2021 01:10:53 -0400 Subject: [PATCH 118/144] [App Search] Allow user to manage source engines through Kibana UX (#98866) * New bulk create route for meta engine source engines * New delete route for meta engine source engines * Add removeSourceEngine and onSourceEngineRemove to SourceEnginesLogicActions * New SourceEnginesTable component * Use new SourceEnginesTable component in SourceEngines view * Added closeAddSourceEnginesModal and openAddSourceEnginesModal to SourceEnginesLogic * New AddSourceEnginesModal component * New AddSourceEnginesButton component * Add AddSourceEnginesButton and AddSourceEnginesModal to SourceEngines view * Allow user to select source engines to add * Add addSourceEngines and onSourceEnginesAdd to SourceEnginesLogic * Submit new source engines when user saves from inside AddSourceEnginesModal * Fix failing tests * fix i18n * Fix imports * Use body instead of query params for source engines bulk create endpoint * Tests for SouceEnginesLogic actions setIndexedEngines and fetchIndexedEngines * Re-enabling two skipped tests * Feedback: move source engine APIs to own file - We generally organize routes/logic etc. by view, and since this is its own view, it can get its own file * Misc UI polish Table: - Add EuiPageContent bordered panel (matches Curations & API logs which is a table in a panel) - Remove bolding on engine name (matches rest of Kibana UI) - Remove responsive false (we do want responsive tables in Kibana) Modal: - Remove EuiOverlayMask - per recent EUI changes, this now comes baked in with EuiModal - Change description text to subdued to match other modals (e.g. Curations queries) in Kibana * Misc i18n/copy tweaks Modal: - Add combobox placeholder text - i18n cancel/save buttons - inline i18n and change title casing to sentence casing * Table refactors - DRY out table columns shared with the main engines tables (title & formatting change slightly from the standalone UI, but this is fine / we should prefer Kibana standardization moving forward) - Actions column changes - Give it a name - axe will throw issues for table column missing headings - Do not make actions a conditional empty array - we should opt to remove the column totally if there is no content present, otherwise screen readers will read out blank cells unnecessarily - Switch to icons w/ description tooltips to match the other Kibana tables - Remove unnecessary sorting props (we don't have sorting enabled on any columns) Tests - Add describe block for organization - Add missing coverage for window confirm branch and canManageMetaEngineSourceEngines branch * Modal test fixes - Remove unnecessary type casting - Remove commented out line - Fix missing onChange function coverage * Modal: move unmemoized array iterations to Kea selectors - more performant: kea selectors are memoized - cleaner/less logic in views - easier to write unit tests for + rename setSelectedEngineNamesToAdd to onAddEnginesSelection + remove unused selectors test code * Modal: Add isLoading UX to submit button + value renames - isLoading prevents double clicks/dupe events, and also provides a responsive UX hint that something is happening - Var renames: there's only one modal on the page, being extra specific with the name isn't really necessary. If we ever add more than one to this view it would probably make sense to split up the logic files or do something else. Verbose modal names/states shouldn't necessarily be the answer * Source Engines view test fixes - Remove unused mock values/actions - Move constants to within main describe - Remove unhappy vs happy path describes - there aren't enough of either scenario to warrant the distinction - add page actions describe block and fix skipped/mounted test by shallow diving into EuiPageHeader * [Misc] Single components/index.ts export For easier group importing * Move all copy consts/strings to their own i18n constants file * Refactor recursive fetchEngines fn to shared util + update MetaEnginesTableLogic to use new helper/DRY out code + write unit tests for just that helper + simplify other previous logic checks to just check that the fn was called + add mock * Tests cleanup - Move consts into top of describe blocks to match rest of codebase - Remove logic comments for files that are only sourcing 1 logic file - Modal: - shallow is fairly cheap and it's easier / more consistent w/ other tests to start a new wrapper every test - Logic: - Remove unnecessarily EnginesLogic mocks - Remove mount() in beforeEach - it doesn't save us that many extra lines / better to be more consistent when starting tests that mount with values vs not - mock clearing in beforeEach to match rest of codebase - describe blocks: split up actions vs listeners, move selectors between the two - actions: fix tests that are in a describe() but not an it() (incorrect syntax) - Reducer/value checks: check against entire values obj to check for regressions or untested reducers & be consistent rest of codebase - listeners - DRY out beforeEach of success vs error paths, combine some tests that are a bit repetitive vs just having multiple assertions - Logic comments: - Remove unnecessary comments (if we're not setting a response, it seems clear we're not using it) - Add extra business logic context explanation as to why we call re-initialize the engine Co-authored-by: Constance Chen --- .../app_search/__mocks__/index.ts | 1 + .../recursively_fetch_engines.mock.ts | 21 + .../tables/meta_engines_table_logic.test.ts | 101 +---- .../tables/meta_engines_table_logic.ts | 41 +- .../add_source_engines_button.test.tsx | 35 ++ .../components/add_source_engines_button.tsx | 25 ++ .../add_source_engines_modal.test.tsx | 103 +++++ .../components/add_source_engines_modal.tsx | 68 +++ .../source_engines/components/index.ts | 10 + .../components/source_engines_table.test.tsx | 83 ++++ .../components/source_engines_table.tsx | 75 ++++ .../components/source_engines/i18n.ts | 67 +++ .../source_engines/source_engines.test.tsx | 80 +++- .../source_engines/source_engines.tsx | 32 +- .../source_engines_logic.test.ts | 423 ++++++++++++++---- .../source_engines/source_engines_logic.ts | 164 +++++-- .../recursively_fetch_engines/index.test.ts | 108 +++++ .../utils/recursively_fetch_engines/index.ts | 54 +++ .../server/routes/app_search/engines.test.ts | 43 -- .../server/routes/app_search/engines.ts | 17 - .../server/routes/app_search/index.ts | 2 + .../routes/app_search/source_engines.test.ts | 151 +++++++ .../routes/app_search/source_engines.ts | 65 +++ 23 files changed, 1430 insertions(+), 339 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/recursively_fetch_engines.mock.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/index.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/i18n.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.ts create mode 100644 x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.test.ts create mode 100644 x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/index.ts index 271a09849cba7..b444c1cc94383 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/index.ts @@ -6,3 +6,4 @@ */ export { mockEngineValues, mockEngineActions } from './engine_logic.mock'; +export { mockRecursivelyFetchEngines, mockSourceEngines } from './recursively_fetch_engines.mock'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/recursively_fetch_engines.mock.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/recursively_fetch_engines.mock.ts new file mode 100644 index 0000000000000..dd4c86a2a6360 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/__mocks__/recursively_fetch_engines.mock.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EngineDetails } from '../components/engine/types'; + +export const mockSourceEngines = [ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, +] as EngineDetails[]; + +export const mockRecursivelyFetchEngines = jest.fn(({ onComplete }) => + onComplete(mockSourceEngines) +); + +jest.mock('../utils/recursively_fetch_engines', () => ({ + recursivelyFetchEngines: mockRecursivelyFetchEngines, +})); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.test.ts index b90207331ffd6..de1902c7cf748 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.test.ts @@ -5,15 +5,16 @@ * 2.0. */ -import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../../../__mocks__'; - -import { nextTick } from '@kbn/test/jest'; +import { LogicMounter } from '../../../../../__mocks__'; +import { mockRecursivelyFetchEngines } from '../../../../__mocks__/recursively_fetch_engines.mock'; import { EngineDetails } from '../../../engine/types'; import { MetaEnginesTableLogic } from './meta_engines_table_logic'; describe('MetaEnginesTableLogic', () => { + const { mount } = new LogicMounter(MetaEnginesTableLogic); + const DEFAULT_VALUES = { expandedRows: {}, sourceEngines: {}, @@ -44,15 +45,11 @@ describe('MetaEnginesTableLogic', () => { metaEngines: [...SOURCE_ENGINES, ...META_ENGINES] as EngineDetails[], }; - const { http } = mockHttpValues; - const { mount } = new LogicMounter(MetaEnginesTableLogic); - const { flashAPIErrors } = mockFlashMessageHelpers; - beforeEach(() => { jest.clearAllMocks(); }); - it('has expected default values', async () => { + it('has expected default values', () => { mount({}, DEFAULT_PROPS); expect(MetaEnginesTableLogic.values).toEqual(DEFAULT_VALUES); }); @@ -122,16 +119,6 @@ describe('MetaEnginesTableLogic', () => { }); it('calls fetchSourceEngines when it needs to fetch data for the itemId', () => { - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 1, - }, - }, - results: [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], - }) - ); mount(); jest.spyOn(MetaEnginesTableLogic.actions, 'fetchSourceEngines'); @@ -142,88 +129,22 @@ describe('MetaEnginesTableLogic', () => { }); describe('fetchSourceEngines', () => { - it('calls addSourceEngines and displayRow when it has retrieved all pages', async () => { + it('calls addSourceEngines and displayRow when it has retrieved all pages', () => { mount(); - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 1, - }, - }, - results: [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], - }) - ); jest.spyOn(MetaEnginesTableLogic.actions, 'displayRow'); jest.spyOn(MetaEnginesTableLogic.actions, 'addSourceEngines'); MetaEnginesTableLogic.actions.fetchSourceEngines('test-engine-1'); - await nextTick(); - - expect(http.get).toHaveBeenCalledWith( - '/api/app_search/engines/test-engine-1/source_engines', - { - query: { - 'page[current]': 1, - 'page[size]': 25, - }, - } - ); - expect(MetaEnginesTableLogic.actions.addSourceEngines).toHaveBeenCalledWith({ - 'test-engine-1': [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], - }); - expect(MetaEnginesTableLogic.actions.displayRow).toHaveBeenCalledWith('test-engine-1'); - }); - - it('display a flash message on error', async () => { - http.get.mockReturnValueOnce(Promise.reject()); - mount(); - MetaEnginesTableLogic.actions.fetchSourceEngines('test-engine-1'); - await nextTick(); - - expect(flashAPIErrors).toHaveBeenCalledTimes(1); - }); - - it('recursively fetches a number of pages', async () => { - mount(); - jest.spyOn(MetaEnginesTableLogic.actions, 'addSourceEngines'); - - // First page - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 2, - }, - }, - results: [{ name: 'source-engine-1' }], - }) - ); - - // Second and final page - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 2, - }, - }, - results: [{ name: 'source-engine-2' }], + expect(mockRecursivelyFetchEngines).toHaveBeenCalledWith( + expect.objectContaining({ + endpoint: '/api/app_search/engines/test-engine-1/source_engines', }) ); - - MetaEnginesTableLogic.actions.fetchSourceEngines('test-engine-1'); - await nextTick(); - expect(MetaEnginesTableLogic.actions.addSourceEngines).toHaveBeenCalledWith({ - 'test-engine-1': [ - // First page - { name: 'source-engine-1' }, - // Second and final page - { name: 'source-engine-2' }, - ], + 'test-engine-1': [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], }); + expect(MetaEnginesTableLogic.actions.displayRow).toHaveBeenCalledWith('test-engine-1'); }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.ts index 3a4c7d51c50a9..af4d0119a94af 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/components/tables/meta_engines_table_logic.ts @@ -7,10 +7,8 @@ import { kea, MakeLogicType } from 'kea'; -import { flashAPIErrors } from '../../../../../shared/flash_messages'; -import { HttpLogic } from '../../../../../shared/http'; +import { recursivelyFetchEngines } from '../../../../utils/recursively_fetch_engines'; import { EngineDetails } from '../../../engine/types'; -import { EnginesAPIResponse } from '../../types'; interface MetaEnginesTableValues { expandedRows: { [id: string]: boolean }; @@ -85,36 +83,13 @@ export const MetaEnginesTableLogic = kea< } }, fetchSourceEngines: ({ engineName }) => { - const { http } = HttpLogic.values; - - let enginesAccumulator: EngineDetails[] = []; - - const recursiveFetchSourceEngines = async (page = 1) => { - try { - const { meta, results }: EnginesAPIResponse = await http.get( - `/api/app_search/engines/${engineName}/source_engines`, - { - query: { - 'page[current]': page, - 'page[size]': 25, - }, - } - ); - - enginesAccumulator = [...enginesAccumulator, ...results]; - - if (page >= meta.page.total_pages) { - actions.addSourceEngines({ [engineName]: enginesAccumulator }); - actions.displayRow(engineName); - } else { - recursiveFetchSourceEngines(page + 1); - } - } catch (e) { - flashAPIErrors(e); - } - }; - - recursiveFetchSourceEngines(); + recursivelyFetchEngines({ + endpoint: `/api/app_search/engines/${engineName}/source_engines`, + onComplete: (sourceEngines) => { + actions.addSourceEngines({ [engineName]: sourceEngines }); + actions.displayRow(engineName); + }, + }); }, }), }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.test.tsx new file mode 100644 index 0000000000000..43a4682849c78 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.test.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockActions } from '../../../../__mocks__'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { EuiButton } from '@elastic/eui'; + +import { AddSourceEnginesButton } from './add_source_engines_button'; + +describe('AddSourceEnginesButton', () => { + const MOCK_ACTIONS = { + openModal: jest.fn(), + }; + + it('opens the modal on click', () => { + setMockActions(MOCK_ACTIONS); + + const wrapper = shallow(); + const button = wrapper.find(EuiButton); + + expect(button).toHaveLength(1); + + button.simulate('click'); + + expect(MOCK_ACTIONS.openModal).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.tsx new file mode 100644 index 0000000000000..004217d88987b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_button.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useActions } from 'kea'; + +import { EuiButton } from '@elastic/eui'; + +import { ADD_SOURCE_ENGINES_BUTTON_LABEL } from '../i18n'; +import { SourceEnginesLogic } from '../source_engines_logic'; + +export const AddSourceEnginesButton: React.FC = () => { + const { openModal } = useActions(SourceEnginesLogic); + + return ( + + {ADD_SOURCE_ENGINES_BUTTON_LABEL} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.test.tsx new file mode 100644 index 0000000000000..19c2f72ed6f52 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.test.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockActions, setMockValues } from '../../../../__mocks__'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { EuiButton, EuiButtonEmpty, EuiComboBox, EuiModal } from '@elastic/eui'; + +import { AddSourceEnginesModal } from './add_source_engines_modal'; + +describe('AddSourceEnginesModal', () => { + const MOCK_VALUES = { + selectableEngineNames: ['source-engine-1', 'source-engine-2', 'source-engine-3'], + selectedEngineNamesToAdd: ['source-engine-2'], + modalLoading: false, + }; + + const MOCK_ACTIONS = { + addSourceEngines: jest.fn(), + closeModal: jest.fn(), + onAddEnginesSelection: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(MOCK_VALUES); + setMockActions(MOCK_ACTIONS); + }); + + it('calls closeAddSourceEnginesModal when the modal is closed', () => { + const wrapper = shallow(); + wrapper.find(EuiModal).simulate('close'); + + expect(MOCK_ACTIONS.closeModal).toHaveBeenCalled(); + }); + + describe('combo box', () => { + it('has the proper options and selected options', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiComboBox).prop('options')).toEqual([ + { label: 'source-engine-1' }, + { label: 'source-engine-2' }, + { label: 'source-engine-3' }, + ]); + expect(wrapper.find(EuiComboBox).prop('selectedOptions')).toEqual([ + { label: 'source-engine-2' }, + ]); + }); + + it('calls setSelectedEngineNamesToAdd when changed', () => { + const wrapper = shallow(); + wrapper.find(EuiComboBox).simulate('change', [{ label: 'source-engine-3' }]); + + expect(MOCK_ACTIONS.onAddEnginesSelection).toHaveBeenCalledWith(['source-engine-3']); + }); + }); + + describe('cancel button', () => { + it('calls closeModal when clicked', () => { + const wrapper = shallow(); + wrapper.find(EuiButtonEmpty).simulate('click'); + + expect(MOCK_ACTIONS.closeModal).toHaveBeenCalled(); + }); + }); + + describe('save button', () => { + it('is disabled when user has selected no engines', () => { + setMockValues({ + ...MOCK_VALUES, + selectedEngineNamesToAdd: [], + }); + const wrapper = shallow(); + + expect(wrapper.find(EuiButton).prop('disabled')).toEqual(true); + }); + + it('passes modalLoading state', () => { + setMockValues({ + ...MOCK_VALUES, + modalLoading: true, + }); + const wrapper = shallow(); + + expect(wrapper.find(EuiButton).prop('isLoading')).toEqual(true); + }); + + it('calls addSourceEngines when clicked', () => { + const wrapper = shallow(); + wrapper.find(EuiButton).simulate('click'); + + expect(MOCK_ACTIONS.addSourceEngines).toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.tsx new file mode 100644 index 0000000000000..24e27e03818ad --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/add_source_engines_modal.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiButton, + EuiButtonEmpty, + EuiComboBox, + EuiModalFooter, + EuiModal, + EuiModalBody, + EuiModalHeader, + EuiModalHeaderTitle, + EuiSpacer, + EuiText, +} from '@elastic/eui'; + +import { CANCEL_BUTTON_LABEL, SAVE_BUTTON_LABEL } from '../../../../shared/constants'; + +import { + ADD_SOURCE_ENGINES_MODAL_TITLE, + ADD_SOURCE_ENGINES_MODAL_DESCRIPTION, + ADD_SOURCE_ENGINES_PLACEHOLDER, +} from '../i18n'; +import { SourceEnginesLogic } from '../source_engines_logic'; + +export const AddSourceEnginesModal: React.FC = () => { + const { addSourceEngines, closeModal, onAddEnginesSelection } = useActions(SourceEnginesLogic); + const { selectableEngineNames, selectedEngineNamesToAdd, modalLoading } = useValues( + SourceEnginesLogic + ); + + return ( + + + {ADD_SOURCE_ENGINES_MODAL_TITLE} + + + {ADD_SOURCE_ENGINES_MODAL_DESCRIPTION} + + ({ label: engineName }))} + selectedOptions={selectedEngineNamesToAdd.map((engineName) => ({ label: engineName }))} + onChange={(options) => onAddEnginesSelection(options.map((option) => option.label))} + placeholder={ADD_SOURCE_ENGINES_PLACEHOLDER} + /> + + + {CANCEL_BUTTON_LABEL} + addSourceEngines(selectedEngineNamesToAdd)} + fill + > + {SAVE_BUTTON_LABEL} + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/index.ts new file mode 100644 index 0000000000000..edec07a70a0bf --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { AddSourceEnginesButton } from './add_source_engines_button'; +export { AddSourceEnginesModal } from './add_source_engines_modal'; +export { SourceEnginesTable } from './source_engines_table'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.test.tsx new file mode 100644 index 0000000000000..895c7ab35e86a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.test.tsx @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mountWithIntl, setMockActions, setMockValues } from '../../../../__mocks__'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { EuiInMemoryTable, EuiButtonIcon } from '@elastic/eui'; + +import { SourceEnginesTable } from './source_engines_table'; + +describe('SourceEnginesTable', () => { + const MOCK_VALUES = { + // AppLogic + myRole: { + canManageMetaEngineSourceEngines: true, + }, + // SourceEnginesLogic + sourceEngines: [{ name: 'source-engine-1', document_count: 15, field_count: 26 }], + }; + + const MOCK_ACTIONS = { + removeSourceEngine: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockActions(MOCK_ACTIONS); + setMockValues(MOCK_VALUES); + }); + + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiInMemoryTable)).toHaveLength(1); + }); + + it('contains relevant informatiom from source engines', () => { + const wrapper = mountWithIntl(); + + expect(wrapper.find(EuiInMemoryTable).text()).toContain('source-engine-1'); + expect(wrapper.find(EuiInMemoryTable).text()).toContain('15'); + expect(wrapper.find(EuiInMemoryTable).text()).toContain('26'); + }); + + describe('actions column', () => { + it('clicking a remove engine link calls a confirm dialogue before remove the engine', () => { + const confirmSpy = jest.spyOn(window, 'confirm').mockReturnValueOnce(true); + const wrapper = mountWithIntl(); + + wrapper.find(EuiButtonIcon).simulate('click'); + + expect(confirmSpy).toHaveBeenCalled(); + expect(MOCK_ACTIONS.removeSourceEngine).toHaveBeenCalled(); + }); + + it('does not remove an engine if the user cancels the confirmation dialog', () => { + const confirmSpy = jest.spyOn(window, 'confirm').mockReturnValueOnce(false); + const wrapper = mountWithIntl(); + + wrapper.find(EuiButtonIcon).simulate('click'); + + expect(confirmSpy).toHaveBeenCalled(); + expect(MOCK_ACTIONS.removeSourceEngine).not.toHaveBeenCalled(); + }); + + it('does not render the actions column if the user does not have permission to manage the engine', () => { + setMockValues({ + ...MOCK_VALUES, + myRole: { canManageMetaEngineSourceEngines: false }, + }); + const wrapper = mountWithIntl(); + + expect(wrapper.find(EuiButtonIcon)).toHaveLength(0); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.tsx new file mode 100644 index 0000000000000..f8c3e3ca00c95 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/components/source_engines_table.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { EuiBasicTableColumn, EuiInMemoryTable } from '@elastic/eui'; + +import { EuiLinkTo } from '../../../../shared/react_router_helpers'; +import { AppLogic } from '../../../app_logic'; +import { ENGINE_PATH } from '../../../routes'; +import { generateEncodedPath } from '../../../utils/encode_path_params'; +import { EngineDetails } from '../../engine/types'; +import { + NAME_COLUMN, + DOCUMENT_COUNT_COLUMN, + FIELD_COUNT_COLUMN, + ACTIONS_COLUMN, +} from '../../engines/components/tables/shared_columns'; + +import { REMOVE_SOURCE_ENGINE_BUTTON_LABEL, REMOVE_SOURCE_ENGINE_CONFIRM_DIALOGUE } from '../i18n'; +import { SourceEnginesLogic } from '../source_engines_logic'; + +export const SourceEnginesTable: React.FC = () => { + const { + myRole: { canManageMetaEngineSourceEngines }, + } = useValues(AppLogic); + + const { removeSourceEngine } = useActions(SourceEnginesLogic); + const { sourceEngines } = useValues(SourceEnginesLogic); + + const columns: Array> = [ + { + ...NAME_COLUMN, + render: (engineName: string) => ( + {engineName} + ), + }, + DOCUMENT_COUNT_COLUMN, + FIELD_COUNT_COLUMN, + ]; + if (canManageMetaEngineSourceEngines) { + columns.push({ + name: ACTIONS_COLUMN.name, + actions: [ + { + name: REMOVE_SOURCE_ENGINE_BUTTON_LABEL, + description: REMOVE_SOURCE_ENGINE_BUTTON_LABEL, + type: 'icon', + icon: 'trash', + color: 'danger', + onClick: (engine: EngineDetails) => { + if (confirm(REMOVE_SOURCE_ENGINE_CONFIRM_DIALOGUE(engine.name))) { + removeSourceEngine(engine.name); + } + }, + }, + ], + }); + } + + return ( + 10} + search={{ box: { incremental: true } }} + /> + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/i18n.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/i18n.ts new file mode 100644 index 0000000000000..4e3f4f81d5a9f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/i18n.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const SOURCE_ENGINES_TITLE = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.title', + { defaultMessage: 'Manage engines' } +); + +export const ADD_SOURCE_ENGINES_BUTTON_LABEL = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.addSourceEnginesButtonLabel', + { defaultMessage: 'Add engines' } +); + +export const ADD_SOURCE_ENGINES_MODAL_TITLE = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.addSourceEnginesModal.title', + { defaultMessage: 'Add engines' } +); + +export const ADD_SOURCE_ENGINES_MODAL_DESCRIPTION = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.addSourceEnginesModal.description', + { defaultMessage: 'Add additional engines to this meta engine.' } +); + +export const ADD_SOURCE_ENGINES_PLACEHOLDER = i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.addSourceEnginesPlaceholder', + { defaultMessage: 'Select engine(s)' } +); + +export const ADD_SOURCE_ENGINES_SUCCESS_MESSAGE = (sourceEngineNames: string[]) => + i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.addSourceEnginesSuccessMessage', + { + defaultMessage: + '{sourceEnginesCount, plural, one {# engine has} other {# engines have}} been added to this meta engine.', + values: { sourceEnginesCount: sourceEngineNames.length }, + } + ); + +export const REMOVE_SOURCE_ENGINE_BUTTON_LABEL = i18n.translate( + 'xpack.enterpriseSearch.appSearch.sourceEngines.removeEngineButton.label', + { defaultMessage: 'Remove from meta engine' } +); + +export const REMOVE_SOURCE_ENGINE_CONFIRM_DIALOGUE = (engineName: string) => + i18n.translate( + 'xpack.enterpriseSearch.appSearch.sourceEngines.removeEngineConfirmDialogue.description', + { + defaultMessage: + 'This will remove the engine, {engineName}, from this meta engine. All existing settings will be lost. Are you sure?', + values: { engineName }, + } + ); + +export const REMOVE_SOURCE_ENGINE_SUCCESS_MESSAGE = (engineName: string) => + i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.souceEngines.removeSourceEngineSuccessMessage', + { + defaultMessage: 'Engine {engineName} has been removed from this meta engine.', + values: { engineName }, + } + ); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.test.tsx index 4bf62de408a2b..8cfcaeec97b87 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.test.tsx @@ -5,52 +5,88 @@ * 2.0. */ -import '../../../__mocks__/shallow_useeffect.mock'; import { setMockActions, setMockValues } from '../../../__mocks__'; +import '../../../__mocks__/shallow_useeffect.mock'; import '../../__mocks__/engine_logic.mock'; import React from 'react'; -import { shallow } from 'enzyme'; +import { shallow, ShallowWrapper } from 'enzyme'; -import { EuiCodeBlock } from '@elastic/eui'; +import { EuiPageHeader } from '@elastic/eui'; import { Loading } from '../../../shared/loading'; +import { AddSourceEnginesButton, AddSourceEnginesModal, SourceEnginesTable } from './components'; + import { SourceEngines } from '.'; -const MOCK_ACTIONS = { - // SourceEnginesLogic - fetchSourceEngines: jest.fn(), -}; +describe('SourceEngines', () => { + const MOCK_ACTIONS = { + fetchIndexedEngines: jest.fn(), + fetchSourceEngines: jest.fn(), + }; -const MOCK_VALUES = { - dataLoading: false, - sourceEngines: [], -}; + const MOCK_VALUES = { + // AppLogic + myRole: { + canManageMetaEngineSourceEngines: true, + }, + // SourceEnginesLogic + dataLoading: false, + isModalOpen: false, + }; -describe('SourceEngines', () => { beforeEach(() => { jest.clearAllMocks(); + setMockValues(MOCK_VALUES); setMockActions(MOCK_ACTIONS); }); - describe('non-happy-path states', () => { - it('renders a loading component before data has loaded', () => { - setMockValues({ ...MOCK_VALUES, dataLoading: true }); - const wrapper = shallow(); + it('renders and calls a function to initialize data', () => { + const wrapper = shallow(); + + expect(wrapper.find(SourceEnginesTable)).toHaveLength(1); + expect(MOCK_ACTIONS.fetchIndexedEngines).toHaveBeenCalled(); + expect(MOCK_ACTIONS.fetchSourceEngines).toHaveBeenCalled(); + }); - expect(wrapper.find(Loading)).toHaveLength(1); + it('renders the add source engines modal', () => { + setMockValues({ + ...MOCK_VALUES, + isModalOpen: true, }); + const wrapper = shallow(); + + expect(wrapper.find(AddSourceEnginesModal)).toHaveLength(1); + }); + + it('renders a loading component before data has loaded', () => { + setMockValues({ ...MOCK_VALUES, dataLoading: true }); + const wrapper = shallow(); + + expect(wrapper.find(Loading)).toHaveLength(1); }); - describe('happy-path states', () => { - it('renders and calls a function to initialize data', () => { - setMockValues(MOCK_VALUES); + describe('page actions', () => { + const getPageHeader = (wrapper: ShallowWrapper) => + wrapper.find(EuiPageHeader).dive().children().dive(); + + it('contains a button to add source engines', () => { + const wrapper = shallow(); + expect(getPageHeader(wrapper).find(AddSourceEnginesButton)).toHaveLength(1); + }); + + it('hides the add source engines button if the user does not have permissions', () => { + setMockValues({ + ...MOCK_VALUES, + myRole: { + canManageMetaEngineSourceEngines: false, + }, + }); const wrapper = shallow(); - expect(wrapper.find(EuiCodeBlock)).toHaveLength(1); - expect(MOCK_ACTIONS.fetchSourceEngines).toHaveBeenCalled(); + expect(getPageHeader(wrapper).find(AddSourceEnginesButton)).toHaveLength(0); }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.tsx index 0b68eb5fd2c2e..190c44c919020 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines.tsx @@ -9,29 +9,27 @@ import React, { useEffect } from 'react'; import { useActions, useValues } from 'kea'; -import { EuiCodeBlock, EuiPageHeader } from '@elastic/eui'; - -import { i18n } from '@kbn/i18n'; +import { EuiPageHeader, EuiPageContent } from '@elastic/eui'; import { FlashMessages } from '../../../shared/flash_messages'; import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { Loading } from '../../../shared/loading'; +import { AppLogic } from '../../app_logic'; import { getEngineBreadcrumbs } from '../engine'; +import { AddSourceEnginesButton, AddSourceEnginesModal, SourceEnginesTable } from './components'; +import { SOURCE_ENGINES_TITLE } from './i18n'; import { SourceEnginesLogic } from './source_engines_logic'; -const SOURCE_ENGINES_TITLE = i18n.translate( - 'xpack.enterpriseSearch.appSearch.engine.souceEngines.title', - { - defaultMessage: 'Manage engines', - } -); - export const SourceEngines: React.FC = () => { - const { fetchSourceEngines } = useActions(SourceEnginesLogic); - const { dataLoading, sourceEngines } = useValues(SourceEnginesLogic); + const { + myRole: { canManageMetaEngineSourceEngines }, + } = useValues(AppLogic); + const { fetchIndexedEngines, fetchSourceEngines } = useActions(SourceEnginesLogic); + const { dataLoading, isModalOpen } = useValues(SourceEnginesLogic); useEffect(() => { + fetchIndexedEngines(); fetchSourceEngines(); }, []); @@ -40,9 +38,15 @@ export const SourceEngines: React.FC = () => { return ( <> - + ] : []} + /> - {JSON.stringify(sourceEngines, null, 2)} + + + {isModalOpen && } + ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.test.ts index df1165620adc3..49886f1257a58 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.test.ts @@ -6,129 +6,372 @@ */ import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../__mocks__'; +import { mockRecursivelyFetchEngines } from '../../__mocks__'; import '../../__mocks__/engine_logic.mock'; import { nextTick } from '@kbn/test/jest'; +import { EngineLogic } from '../engine'; import { EngineDetails } from '../engine/types'; import { SourceEnginesLogic } from './source_engines_logic'; -const DEFAULT_VALUES = { - dataLoading: true, - sourceEngines: [], -}; - describe('SourceEnginesLogic', () => { const { http } = mockHttpValues; const { mount } = new LogicMounter(SourceEnginesLogic); - const { flashAPIErrors } = mockFlashMessageHelpers; + const { flashAPIErrors, setSuccessMessage } = mockFlashMessageHelpers; + + const DEFAULT_VALUES = { + dataLoading: true, + modalLoading: false, + isModalOpen: false, + indexedEngines: [], + indexedEngineNames: [], + sourceEngines: [], + sourceEngineNames: [], + selectedEngineNamesToAdd: [], + selectableEngineNames: [], + }; beforeEach(() => { jest.clearAllMocks(); - mount(); }); it('initializes with default values', () => { + mount(); expect(SourceEnginesLogic.values).toEqual(DEFAULT_VALUES); }); - describe('setSourceEngines', () => { - beforeEach(() => { - SourceEnginesLogic.actions.onSourceEnginesFetch([ - { name: 'source-engine-1' }, - { name: 'source-engine-2' }, - ] as EngineDetails[]); + describe('actions', () => { + describe('closeModal', () => { + it('sets isModalOpen and modalLoading to false', () => { + mount({ + isModalOpen: true, + modalLoading: true, + }); + + SourceEnginesLogic.actions.closeModal(); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + isModalOpen: false, + modalLoading: false, + }); + }); }); - it('sets the source engines', () => { - expect(SourceEnginesLogic.values.sourceEngines).toEqual([ - { name: 'source-engine-1' }, - { name: 'source-engine-2' }, - ]); + describe('openModal', () => { + it('sets isModalOpen to true', () => { + mount({ + isModalOpen: false, + }); + + SourceEnginesLogic.actions.openModal(); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + isModalOpen: true, + }); + }); }); - it('sets dataLoading to false', () => { - expect(SourceEnginesLogic.values.dataLoading).toEqual(false); + describe('onAddEnginesSelection', () => { + it('sets selectedEngineNamesToAdd to the specified value', () => { + mount(); + + SourceEnginesLogic.actions.onAddEnginesSelection(['source-engine-1', 'source-engine-2']); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + selectedEngineNamesToAdd: ['source-engine-1', 'source-engine-2'], + }); + }); + }); + + describe('setIndexedEngines', () => { + it('sets indexedEngines to the specified value', () => { + mount(); + + SourceEnginesLogic.actions.setIndexedEngines([ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + ] as EngineDetails[]); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + indexedEngines: [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], + // Selectors + indexedEngineNames: ['source-engine-1', 'source-engine-2'], + selectableEngineNames: ['source-engine-1', 'source-engine-2'], + }); + }); + }); + + describe('onSourceEnginesFetch', () => { + it('sets sourceEngines to the specified value and dataLoading to false', () => { + mount(); + + SourceEnginesLogic.actions.onSourceEnginesFetch([ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + ] as EngineDetails[]); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + dataLoading: false, + sourceEngines: [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], + // Selectors + sourceEngineNames: ['source-engine-1', 'source-engine-2'], + }); + }); + }); + + describe('onSourceEnginesAdd', () => { + it('adds to the existing sourceEngines', () => { + mount({ + sourceEngines: [ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + ] as EngineDetails[], + }); + + SourceEnginesLogic.actions.onSourceEnginesAdd([ + { name: 'source-engine-3' }, + { name: 'source-engine-4' }, + ] as EngineDetails[]); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + sourceEngines: [ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + { name: 'source-engine-3' }, + { name: 'source-engine-4' }, + ], + // Selectors + sourceEngineNames: [ + 'source-engine-1', + 'source-engine-2', + 'source-engine-3', + 'source-engine-4', + ], + }); + }); + }); + + describe('onSourceEngineRemove', () => { + it('removes an item from the existing sourceEngines', () => { + mount({ + sourceEngines: [ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + { name: 'source-engine-3' }, + ] as EngineDetails[], + }); + + SourceEnginesLogic.actions.onSourceEngineRemove('source-engine-2'); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + sourceEngines: [{ name: 'source-engine-1' }, { name: 'source-engine-3' }], + // Selectors + sourceEngineNames: ['source-engine-1', 'source-engine-3'], + }); + }); }); }); - describe('fetchSourceEngines', () => { - it('calls addSourceEngines and displayRow when it has retrieved all pages', async () => { - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 1, - }, - }, - results: [{ name: 'source-engine-1' }, { name: 'source-engine-2' }], - }) - ); - jest.spyOn(SourceEnginesLogic.actions, 'onSourceEnginesFetch'); - - SourceEnginesLogic.actions.fetchSourceEngines(); - await nextTick(); - - expect(http.get).toHaveBeenCalledWith('/api/app_search/engines/some-engine/source_engines', { - query: { - 'page[current]': 1, - 'page[size]': 25, - }, - }); - expect(SourceEnginesLogic.actions.onSourceEnginesFetch).toHaveBeenCalledWith([ - { name: 'source-engine-1' }, - { name: 'source-engine-2' }, - ]); + describe('selectors', () => { + describe('indexedEngineNames', () => { + it('returns a flat array of `indexedEngine.name`s', () => { + mount({ + indexedEngines: [{ name: 'a' }, { name: 'b' }, { name: 'c' }], + }); + + expect(SourceEnginesLogic.values.indexedEngineNames).toEqual(['a', 'b', 'c']); + }); }); - it('display a flash message on error', async () => { - http.get.mockReturnValueOnce(Promise.reject()); - mount(); + describe('sourceEngineNames', () => { + it('returns a flat array of `sourceEngine.name`s', () => { + mount({ + sourceEngines: [{ name: 'd' }, { name: 'e' }], + }); + + expect(SourceEnginesLogic.values.sourceEngineNames).toEqual(['d', 'e']); + }); + }); - SourceEnginesLogic.actions.fetchSourceEngines(); - await nextTick(); + describe('selectableEngineNames', () => { + it('returns a flat list of indexedEngineNames that are not already in sourceEngineNames', () => { + mount({ + indexedEngines: [{ name: 'a' }, { name: 'b' }, { name: 'c' }], + sourceEngines: [{ name: 'a' }, { name: 'b' }], + }); - expect(flashAPIErrors).toHaveBeenCalledTimes(1); + expect(SourceEnginesLogic.values.selectableEngineNames).toEqual(['c']); + }); }); + }); + + describe('listeners', () => { + describe('fetchSourceEngines', () => { + it('calls onSourceEnginesFetch with all recursively fetched engines', () => { + jest.spyOn(SourceEnginesLogic.actions, 'onSourceEnginesFetch'); - it('recursively fetches a number of pages', async () => { - mount(); - jest.spyOn(SourceEnginesLogic.actions, 'onSourceEnginesFetch'); - - // First page - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 2, - }, - }, - results: [{ name: 'source-engine-1' }], - }) - ); - - // Second and final page - http.get.mockReturnValueOnce( - Promise.resolve({ - meta: { - page: { - total_pages: 2, - }, - }, - results: [{ name: 'source-engine-2' }], - }) - ); - - SourceEnginesLogic.actions.fetchSourceEngines(); - await nextTick(); - - expect(SourceEnginesLogic.actions.onSourceEnginesFetch).toHaveBeenCalledWith([ - // First page - { name: 'source-engine-1' }, - // Second and final page - { name: 'source-engine-2' }, - ]); + SourceEnginesLogic.actions.fetchSourceEngines(); + + expect(mockRecursivelyFetchEngines).toHaveBeenCalledWith( + expect.objectContaining({ + endpoint: '/api/app_search/engines/some-engine/source_engines', + }) + ); + expect(SourceEnginesLogic.actions.onSourceEnginesFetch).toHaveBeenCalledWith([ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + ]); + }); + }); + + describe('fetchIndexedEngines', () => { + it('calls setIndexedEngines with all recursively fetched engines', () => { + jest.spyOn(SourceEnginesLogic.actions, 'setIndexedEngines'); + + SourceEnginesLogic.actions.fetchIndexedEngines(); + + expect(mockRecursivelyFetchEngines).toHaveBeenCalledWith( + expect.objectContaining({ + endpoint: '/api/app_search/engines', + query: { type: 'indexed' }, + }) + ); + expect(SourceEnginesLogic.actions.setIndexedEngines).toHaveBeenCalledWith([ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + ]); + }); + }); + + describe('addSourceEngines', () => { + it('sets modalLoading to true', () => { + mount({ modalLoading: false }); + + SourceEnginesLogic.actions.addSourceEngines([]); + + expect(SourceEnginesLogic.values).toEqual({ + ...DEFAULT_VALUES, + modalLoading: true, + }); + }); + + describe('on success', () => { + beforeEach(() => { + http.post.mockReturnValue(Promise.resolve()); + mount({ + indexedEngines: [{ name: 'source-engine-3' }, { name: 'source-engine-4' }], + }); + }); + + it('calls the bulk endpoint, adds source engines to state, and shows a success message', async () => { + jest.spyOn(SourceEnginesLogic.actions, 'onSourceEnginesAdd'); + + SourceEnginesLogic.actions.addSourceEngines(['source-engine-3', 'source-engine-4']); + await nextTick(); + + expect(http.post).toHaveBeenCalledWith( + '/api/app_search/engines/some-engine/source_engines/bulk_create', + { + body: JSON.stringify({ source_engine_slugs: ['source-engine-3', 'source-engine-4'] }), + } + ); + expect(SourceEnginesLogic.actions.onSourceEnginesAdd).toHaveBeenCalledWith([ + { name: 'source-engine-3' }, + { name: 'source-engine-4' }, + ]); + expect(setSuccessMessage).toHaveBeenCalledWith( + '2 engines have been added to this meta engine.' + ); + }); + + it('re-initializes the engine and closes the modal', async () => { + jest.spyOn(EngineLogic.actions, 'initializeEngine'); + jest.spyOn(SourceEnginesLogic.actions, 'closeModal'); + + SourceEnginesLogic.actions.addSourceEngines([]); + await nextTick(); + + expect(EngineLogic.actions.initializeEngine).toHaveBeenCalled(); + expect(SourceEnginesLogic.actions.closeModal).toHaveBeenCalled(); + }); + }); + + describe('on error', () => { + beforeEach(() => { + http.post.mockReturnValue(Promise.reject()); + mount(); + }); + + it('flashes errors and closes the modal', async () => { + jest.spyOn(SourceEnginesLogic.actions, 'closeModal'); + + SourceEnginesLogic.actions.addSourceEngines([]); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledTimes(1); + expect(SourceEnginesLogic.actions.closeModal).toHaveBeenCalled(); + }); + }); + }); + + describe('removeSourceEngine', () => { + describe('on success', () => { + beforeEach(() => { + http.delete.mockReturnValue(Promise.resolve()); + mount(); + }); + + it('calls the delete endpoint and removes source engines from state', async () => { + jest.spyOn(SourceEnginesLogic.actions, 'onSourceEngineRemove'); + + SourceEnginesLogic.actions.removeSourceEngine('source-engine-2'); + await nextTick(); + + expect(http.delete).toHaveBeenCalledWith( + '/api/app_search/engines/some-engine/source_engines/source-engine-2' + ); + expect(SourceEnginesLogic.actions.onSourceEngineRemove).toHaveBeenCalledWith( + 'source-engine-2' + ); + }); + + it('shows a success message', async () => { + SourceEnginesLogic.actions.removeSourceEngine('source-engine-2'); + await nextTick(); + + expect(setSuccessMessage).toHaveBeenCalledWith( + 'Engine source-engine-2 has been removed from this meta engine.' + ); + }); + + it('re-initializes the engine', async () => { + jest.spyOn(EngineLogic.actions, 'initializeEngine'); + + SourceEnginesLogic.actions.removeSourceEngine('source-engine-2'); + await nextTick(); + + expect(EngineLogic.actions.initializeEngine).toHaveBeenCalledWith(); + }); + }); + + it('displays a flash message on error', async () => { + http.delete.mockReturnValueOnce(Promise.reject()); + mount(); + + SourceEnginesLogic.actions.removeSourceEngine('source-engine-2'); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledTimes(1); + }); }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.ts index b8a5c7c359518..c10f11a7de327 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/source_engines/source_engines_logic.ts @@ -4,24 +4,47 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + import { kea, MakeLogicType } from 'kea'; -import { flashAPIErrors } from '../../../shared/flash_messages'; +import { flashAPIErrors, setSuccessMessage } from '../../../shared/flash_messages'; import { HttpLogic } from '../../../shared/http'; +import { recursivelyFetchEngines } from '../../utils/recursively_fetch_engines'; import { EngineLogic } from '../engine'; import { EngineDetails } from '../engine/types'; -import { EnginesAPIResponse } from '../engines/types'; -interface SourceEnginesLogicValues { +import { ADD_SOURCE_ENGINES_SUCCESS_MESSAGE, REMOVE_SOURCE_ENGINE_SUCCESS_MESSAGE } from './i18n'; + +export interface SourceEnginesLogicValues { dataLoading: boolean; + modalLoading: boolean; + isModalOpen: boolean; + indexedEngines: EngineDetails[]; + indexedEngineNames: string[]; sourceEngines: EngineDetails[]; + sourceEngineNames: string[]; + selectableEngineNames: string[]; + selectedEngineNamesToAdd: string[]; } interface SourceEnginesLogicActions { + addSourceEngines: (sourceEngineNames: string[]) => { sourceEngineNames: string[] }; + fetchIndexedEngines: () => void; fetchSourceEngines: () => void; + onSourceEngineRemove: (sourceEngineNameToRemove: string) => { sourceEngineNameToRemove: string }; + onSourceEnginesAdd: ( + sourceEnginesToAdd: EngineDetails[] + ) => { sourceEnginesToAdd: EngineDetails[] }; onSourceEnginesFetch: ( sourceEngines: SourceEnginesLogicValues['sourceEngines'] ) => { sourceEngines: SourceEnginesLogicValues['sourceEngines'] }; + removeSourceEngine: (sourceEngineName: string) => { sourceEngineName: string }; + setIndexedEngines: (indexedEngines: EngineDetails[]) => { indexedEngines: EngineDetails[] }; + openModal: () => void; + closeModal: () => void; + onAddEnginesSelection: ( + selectedEngineNamesToAdd: string[] + ) => { selectedEngineNamesToAdd: string[] }; } export const SourceEnginesLogic = kea< @@ -29,8 +52,17 @@ export const SourceEnginesLogic = kea< >({ path: ['enterprise_search', 'app_search', 'source_engines_logic'], actions: () => ({ + addSourceEngines: (sourceEngineNames) => ({ sourceEngineNames }), + fetchIndexedEngines: true, fetchSourceEngines: true, + onSourceEngineRemove: (sourceEngineNameToRemove) => ({ sourceEngineNameToRemove }), + onSourceEnginesAdd: (sourceEnginesToAdd) => ({ sourceEnginesToAdd }), onSourceEnginesFetch: (sourceEngines) => ({ sourceEngines }), + removeSourceEngine: (sourceEngineName) => ({ sourceEngineName }), + setIndexedEngines: (indexedEngines) => ({ indexedEngines }), + openModal: true, + closeModal: true, + onAddEnginesSelection: (selectedEngineNamesToAdd) => ({ selectedEngineNamesToAdd }), }), reducers: () => ({ dataLoading: [ @@ -39,47 +71,119 @@ export const SourceEnginesLogic = kea< onSourceEnginesFetch: () => false, }, ], + modalLoading: [ + false, + { + addSourceEngines: () => true, + closeModal: () => false, + }, + ], + isModalOpen: [ + false, + { + openModal: () => true, + closeModal: () => false, + }, + ], + indexedEngines: [ + [], + { + setIndexedEngines: (_, { indexedEngines }) => indexedEngines, + }, + ], + selectedEngineNamesToAdd: [ + [], + { + closeModal: () => [], + onAddEnginesSelection: (_, { selectedEngineNamesToAdd }) => selectedEngineNamesToAdd, + }, + ], sourceEngines: [ [], { + onSourceEnginesAdd: (sourceEngines, { sourceEnginesToAdd }) => [ + ...sourceEngines, + ...sourceEnginesToAdd, + ], onSourceEnginesFetch: (_, { sourceEngines }) => sourceEngines, + onSourceEngineRemove: (sourceEngines, { sourceEngineNameToRemove }) => + sourceEngines.filter((sourceEngine) => sourceEngine.name !== sourceEngineNameToRemove), }, ], }), - listeners: ({ actions }) => ({ - fetchSourceEngines: () => { + selectors: { + indexedEngineNames: [ + (selectors) => [selectors.indexedEngines], + (indexedEngines) => indexedEngines.map((engine: EngineDetails) => engine.name), + ], + sourceEngineNames: [ + (selectors) => [selectors.sourceEngines], + (sourceEngines) => sourceEngines.map((engine: EngineDetails) => engine.name), + ], + selectableEngineNames: [ + (selectors) => [selectors.indexedEngineNames, selectors.sourceEngineNames], + (indexedEngineNames, sourceEngineNames) => + indexedEngineNames.filter((engineName: string) => !sourceEngineNames.includes(engineName)), + ], + }, + listeners: ({ actions, values }) => ({ + addSourceEngines: async ({ sourceEngineNames }) => { const { http } = HttpLogic.values; const { engineName } = EngineLogic.values; - let enginesAccumulator: EngineDetails[] = []; + try { + await http.post(`/api/app_search/engines/${engineName}/source_engines/bulk_create`, { + body: JSON.stringify({ + source_engine_slugs: sourceEngineNames, + }), + }); + + const sourceEnginesToAdd = values.indexedEngines.filter(({ name }) => + sourceEngineNames.includes(name) + ); + + actions.onSourceEnginesAdd(sourceEnginesToAdd); + setSuccessMessage(ADD_SOURCE_ENGINES_SUCCESS_MESSAGE(sourceEngineNames)); + EngineLogic.actions.initializeEngine(); + } catch (e) { + flashAPIErrors(e); + } finally { + actions.closeModal(); + } + }, + fetchSourceEngines: () => { + const { engineName } = EngineLogic.values; - // We need to recursively fetch all source engines because we put the data - // into an EuiInMemoryTable to enable searching - const recursiveFetchSourceEngines = async (page = 1) => { - try { - const { meta, results }: EnginesAPIResponse = await http.get( - `/api/app_search/engines/${engineName}/source_engines`, - { - query: { - 'page[current]': page, - 'page[size]': 25, - }, - } - ); + recursivelyFetchEngines({ + endpoint: `/api/app_search/engines/${engineName}/source_engines`, + onComplete: (engines) => actions.onSourceEnginesFetch(engines), + }); + }, + fetchIndexedEngines: () => { + recursivelyFetchEngines({ + endpoint: '/api/app_search/engines', + onComplete: (engines) => actions.setIndexedEngines(engines), + query: { type: 'indexed' }, + }); + }, + removeSourceEngine: async ({ sourceEngineName }) => { + const { http } = HttpLogic.values; + const { engineName } = EngineLogic.values; - enginesAccumulator = [...enginesAccumulator, ...results]; + try { + await http.delete( + `/api/app_search/engines/${engineName}/source_engines/${sourceEngineName}` + ); - if (page >= meta.page.total_pages) { - actions.onSourceEnginesFetch(enginesAccumulator); - } else { - recursiveFetchSourceEngines(page + 1); - } - } catch (e) { - flashAPIErrors(e); - } - }; + actions.onSourceEngineRemove(sourceEngineName); + setSuccessMessage(REMOVE_SOURCE_ENGINE_SUCCESS_MESSAGE(sourceEngineName)); - recursiveFetchSourceEngines(); + // Changing source engines can change schema conflicts and invalid boosts, + // so we re-initialize the engine to re-fetch that data + EngineLogic.actions.initializeEngine(); // + } catch (e) { + flashAPIErrors(e); + } }, }), }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.test.ts new file mode 100644 index 0000000000000..104f98e45a5f5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.test.ts @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mockFlashMessageHelpers, mockHttpValues } from '../../../__mocks__'; + +import { nextTick } from '@kbn/test/jest'; + +import { recursivelyFetchEngines } from './'; + +describe('recursivelyFetchEngines', () => { + const { http } = mockHttpValues; + const { flashAPIErrors } = mockFlashMessageHelpers; + + const MOCK_PAGE_1 = { + meta: { + page: { current: 1, total_pages: 3 }, + }, + results: [{ name: 'source-engine-1' }], + }; + const MOCK_PAGE_2 = { + meta: { + page: { current: 2, total_pages: 3 }, + }, + results: [{ name: 'source-engine-2' }], + }; + const MOCK_PAGE_3 = { + meta: { + page: { current: 3, total_pages: 3 }, + }, + results: [{ name: 'source-engine-3' }], + }; + const MOCK_CALLBACK = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('recursively calls the passed API endpoint and returns all engines to the onComplete callback', async () => { + http.get + .mockReturnValueOnce(Promise.resolve(MOCK_PAGE_1)) + .mockReturnValueOnce(Promise.resolve(MOCK_PAGE_2)) + .mockReturnValueOnce(Promise.resolve(MOCK_PAGE_3)); + + recursivelyFetchEngines({ + endpoint: '/api/app_search/engines/some-engine/source_engines', + onComplete: MOCK_CALLBACK, + }); + await nextTick(); + + expect(http.get).toHaveBeenCalledTimes(3); // Called once for each page + expect(http.get).toHaveBeenCalledWith('/api/app_search/engines/some-engine/source_engines', { + query: { + 'page[current]': 1, + 'page[size]': 25, + }, + }); + + expect(MOCK_CALLBACK).toHaveBeenCalledWith([ + { name: 'source-engine-1' }, + { name: 'source-engine-2' }, + { name: 'source-engine-3' }, + ]); + }); + + it('passes optional query params', () => { + recursivelyFetchEngines({ + endpoint: '/api/app_search/engines/some-engine/engines', + onComplete: MOCK_CALLBACK, + query: { type: 'indexed' }, + }); + + expect(http.get).toHaveBeenCalledWith('/api/app_search/engines/some-engine/engines', { + query: { + 'page[current]': 1, + 'page[size]': 25, + type: 'indexed', + }, + }); + }); + + it('passes optional custom page sizes', () => { + recursivelyFetchEngines({ + endpoint: '/over_9000', + onComplete: MOCK_CALLBACK, + pageSize: 9001, + }); + + expect(http.get).toHaveBeenCalledWith('/over_9000', { + query: { + 'page[current]': 1, + 'page[size]': 9001, + }, + }); + }); + + it('handles errors', async () => { + http.get.mockReturnValueOnce(Promise.reject('error')); + + recursivelyFetchEngines({ endpoint: '/error', onComplete: MOCK_CALLBACK }); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.ts new file mode 100644 index 0000000000000..797e89bd68b69 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/utils/recursively_fetch_engines/index.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { flashAPIErrors } from '../../../shared/flash_messages'; +import { HttpLogic } from '../../../shared/http'; + +import { EngineDetails } from '../../components/engine/types'; +import { EnginesAPIResponse } from '../../components/engines/types'; + +interface Params { + endpoint: string; + onComplete: (engines: EngineDetails[]) => void; + query?: object; + pageSize?: number; +} + +export const recursivelyFetchEngines = ({ + endpoint, + onComplete, + query = {}, + pageSize = 25, +}: Params) => { + const { http } = HttpLogic.values; + + let enginesAccumulator: EngineDetails[] = []; + + const fetchEngines = async (page = 1) => { + try { + const { meta, results }: EnginesAPIResponse = await http.get(endpoint, { + query: { + 'page[current]': page, + 'page[size]': pageSize, + ...query, + }, + }); + + enginesAccumulator = [...enginesAccumulator, ...results]; + + if (page >= meta.page.total_pages) { + onComplete(enginesAccumulator); + } else { + fetchEngines(page + 1); + } + } catch (e) { + flashAPIErrors(e); + } + }; + + fetchEngines(); +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/engines.test.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/engines.test.ts index bc4259fa37889..c653cad5c1c0d 100644 --- a/x-pack/plugins/enterprise_search/server/routes/app_search/engines.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/engines.test.ts @@ -259,47 +259,4 @@ describe('engine routes', () => { }); }); }); - - describe('GET /api/app_search/engines/{name}/source_engines', () => { - let mockRouter: MockRouter; - - beforeEach(() => { - jest.clearAllMocks(); - mockRouter = new MockRouter({ - method: 'get', - path: '/api/app_search/engines/{name}/source_engines', - }); - - registerEnginesRoutes({ - ...mockDependencies, - router: mockRouter.router, - }); - }); - - it('validates correctly with name', () => { - const request = { params: { name: 'test-engine' } }; - mockRouter.shouldValidate(request); - }); - - it('fails validation without name', () => { - const request = { params: {} }; - mockRouter.shouldThrow(request); - }); - - it('fails validation with a non-string name', () => { - const request = { params: { name: 1 } }; - mockRouter.shouldThrow(request); - }); - - it('fails validation with missing query params', () => { - const request = { query: {} }; - mockRouter.shouldThrow(request); - }); - - it('creates a request to enterprise search', () => { - expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ - path: '/as/engines/:name/source_engines', - }); - }); - }); }); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/engines.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/engines.ts index f6e9d30dd0ade..77b055add7d79 100644 --- a/x-pack/plugins/enterprise_search/server/routes/app_search/engines.ts +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/engines.ts @@ -95,21 +95,4 @@ export function registerEnginesRoutes({ path: '/as/engines/:name/overview_metrics', }) ); - router.get( - { - path: '/api/app_search/engines/{name}/source_engines', - validate: { - params: schema.object({ - name: schema.string(), - }), - query: schema.object({ - 'page[current]': schema.number(), - 'page[size]': schema.number(), - }), - }, - }, - enterpriseSearchRequestHandler.createRequest({ - path: '/as/engines/:name/source_engines', - }) - ); } diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts index 99aaaeeec38b3..18de4580318a2 100644 --- a/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/index.ts @@ -20,6 +20,7 @@ import { registerSchemaRoutes } from './schema'; import { registerSearchSettingsRoutes } from './search_settings'; import { registerSearchUIRoutes } from './search_ui'; import { registerSettingsRoutes } from './settings'; +import { registerSourceEnginesRoutes } from './source_engines'; import { registerSynonymsRoutes } from './synonyms'; export const registerAppSearchRoutes = (dependencies: RouteDependencies) => { @@ -30,6 +31,7 @@ export const registerAppSearchRoutes = (dependencies: RouteDependencies) => { registerDocumentsRoutes(dependencies); registerDocumentRoutes(dependencies); registerSchemaRoutes(dependencies); + registerSourceEnginesRoutes(dependencies); registerCurationsRoutes(dependencies); registerSynonymsRoutes(dependencies); registerSearchSettingsRoutes(dependencies); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.test.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.test.ts new file mode 100644 index 0000000000000..5b51048067c00 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.test.ts @@ -0,0 +1,151 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { MockRouter, mockRequestHandler, mockDependencies } from '../../__mocks__'; + +import { registerSourceEnginesRoutes } from './source_engines'; + +describe('source engine routes', () => { + describe('GET /api/app_search/engines/{name}/source_engines', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'get', + path: '/api/app_search/engines/{name}/source_engines', + }); + + registerSourceEnginesRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('validates correctly with name', () => { + const request = { params: { name: 'test-engine' } }; + mockRouter.shouldValidate(request); + }); + + it('fails validation without name', () => { + const request = { params: {} }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with a non-string name', () => { + const request = { params: { name: 1 } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with missing query params', () => { + const request = { query: {} }; + mockRouter.shouldThrow(request); + }); + + it('creates a request to enterprise search', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:name/source_engines', + }); + }); + }); + + describe('POST /api/app_search/engines/{name}/source_engines/bulk_create', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/app_search/engines/{name}/source_engines/bulk_create', + }); + + registerSourceEnginesRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('validates correctly with name', () => { + const request = { params: { name: 'test-engine' }, body: { source_engine_slugs: [] } }; + mockRouter.shouldValidate(request); + }); + + it('fails validation without name', () => { + const request = { params: {}, body: { source_engine_slugs: [] } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with a non-string name', () => { + const request = { params: { name: 1 }, body: { source_engine_slugs: [] } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with missing query params', () => { + const request = { params: { name: 'test-engine' }, body: {} }; + mockRouter.shouldThrow(request); + }); + + it('creates a request to enterprise search', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:name/source_engines/bulk_create', + }); + }); + }); + + describe('DELETE /api/app_search/engines/{name}/source_engines/{source_engine_name}', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'delete', + path: '/api/app_search/engines/{name}/source_engines/{source_engine_name}', + }); + + registerSourceEnginesRoutes({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('validates correctly with name and source_engine_name', () => { + const request = { params: { name: 'test-engine', source_engine_name: 'source-engine' } }; + mockRouter.shouldValidate(request); + }); + + it('fails validation without name', () => { + const request = { params: { source_engine_name: 'source-engine' } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with a non-string name', () => { + const request = { params: { name: 1, source_engine_name: 'source-engine' } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation without source_engine_name', () => { + const request = { params: { name: 'test-engine' } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with a non-string source_engine_name', () => { + const request = { params: { name: 'test-engine', source_engine_name: 1 } }; + mockRouter.shouldThrow(request); + }); + + it('fails validation with missing query params', () => { + const request = { query: {} }; + mockRouter.shouldThrow(request); + }); + + it('creates a request to enterprise search', () => { + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/as/engines/:name/source_engines/:source_engine_name', + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.ts new file mode 100644 index 0000000000000..8e55b0e6f1ac6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/source_engines.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema } from '@kbn/config-schema'; + +import { RouteDependencies } from '../../plugin'; + +export function registerSourceEnginesRoutes({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/app_search/engines/{name}/source_engines', + validate: { + params: schema.object({ + name: schema.string(), + }), + query: schema.object({ + 'page[current]': schema.number(), + 'page[size]': schema.number(), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:name/source_engines', + }) + ); + + router.post( + { + path: '/api/app_search/engines/{name}/source_engines/bulk_create', + validate: { + params: schema.object({ + name: schema.string(), + }), + body: schema.object({ + source_engine_slugs: schema.arrayOf(schema.string()), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:name/source_engines/bulk_create', + }) + ); + + router.delete( + { + path: '/api/app_search/engines/{name}/source_engines/{source_engine_name}', + validate: { + params: schema.object({ + name: schema.string(), + source_engine_name: schema.string(), + }), + }, + }, + enterpriseSearchRequestHandler.createRequest({ + path: '/as/engines/:name/source_engines/:source_engine_name', + }) + ); +} From 5e410f5d863bfcdbc66768e31fc10af68bd48dd9 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Sun, 16 May 2021 18:09:12 -0400 Subject: [PATCH 119/144] [Uptime] [Synthetics Integration] update tls passphrase and http password field to use EuiFieldPassword (#100162) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/components/fleet_package/http_advanced_fields.tsx | 3 ++- .../uptime/public/components/fleet_package/tls_fields.tsx | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/fleet_package/http_advanced_fields.tsx b/x-pack/plugins/uptime/public/components/fleet_package/http_advanced_fields.tsx index 5cc1dd12ef961..7ab6c81fbf162 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/http_advanced_fields.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/http_advanced_fields.tsx @@ -17,6 +17,7 @@ import { EuiDescribedFormGroup, EuiCheckbox, EuiSpacer, + EuiFieldPassword, } from '@elastic/eui'; import { useHTTPAdvancedFieldsContext } from './contexts'; @@ -110,7 +111,7 @@ export const HTTPAdvancedFields = memo(({ validate }) => { /> } > - handleInputChange({ diff --git a/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx b/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx index e01d3d59175a4..de8879ec3a819 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx @@ -13,12 +13,12 @@ import { EuiComboBox, EuiComboBoxOptionOption, EuiFormRow, - EuiFieldText, EuiTextArea, EuiFormFieldset, EuiSelect, EuiScreenReaderOnly, EuiSpacer, + EuiFieldPassword, } from '@elastic/eui'; import { useTLSFieldsContext } from './contexts'; @@ -333,7 +333,7 @@ export const TLSFields: React.FunctionComponent<{ } labelAppend={} > - { const value = event.target.value; From d8a2f8f95c05a9b94d1969487433539954fd12ef Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Mon, 17 May 2021 11:46:57 +0200 Subject: [PATCH 120/144] Improve migration perf (#99773) * Do not clone state, use TypeCheck it's not mutated * do not recreate context for every migration * use more optional semver check * update SavedObjectMigrationContext type * add a test model returns new state object * update docs Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- ...text.converttomultinamespacetypeversion.md | 2 +- ...-server.savedobjectmigrationcontext.log.md | 2 +- ...objectmigrationcontext.migrationversion.md | 2 +- .../migrations/core/document_migrator.ts | 11 ++++---- .../server/saved_objects/migrations/types.ts | 6 ++--- .../saved_objects/migrationsv2/model.test.ts | 25 +++++++++++++++++++ .../saved_objects/migrationsv2/model.ts | 4 +-- .../saved_objects/migrationsv2/types.ts | 5 ++-- src/core/server/server.api.md | 6 ++--- .../common/saved_dashboard_references.ts | 5 ++-- 10 files changed, 47 insertions(+), 21 deletions(-) diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md index 2a30693f4da84..9fe43a2f3f477 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md @@ -9,5 +9,5 @@ The version in which this object type is being converted to a multi-namespace ty Signature: ```typescript -convertToMultiNamespaceTypeVersion?: string; +readonly convertToMultiNamespaceTypeVersion?: string; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md index a1b3378afc53b..20a0e99275a39 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md @@ -9,5 +9,5 @@ logger instance to be used by the migration handler Signature: ```typescript -log: SavedObjectsMigrationLogger; +readonly log: SavedObjectsMigrationLogger; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md index 7b20ae41048f6..a1c2717e6e4a0 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md @@ -9,5 +9,5 @@ The migration version that this migration function is defined for Signature: ```typescript -migrationVersion: string; +readonly migrationVersion: string; ``` diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.ts b/src/core/server/saved_objects/migrations/core/document_migrator.ts index f30cfc53018db..c96de6ebbfcdd 100644 --- a/src/core/server/saved_objects/migrations/core/document_migrator.ts +++ b/src/core/server/saved_objects/migrations/core/document_migrator.ts @@ -661,13 +661,14 @@ function wrapWithTry( migrationFn: SavedObjectMigrationFn, log: Logger ) { + const context = Object.freeze({ + log: new MigrationLogger(log), + migrationVersion: version, + convertToMultiNamespaceTypeVersion: type.convertToMultiNamespaceTypeVersion, + }); + return function tryTransformDoc(doc: SavedObjectUnsanitizedDoc) { try { - const context = { - log: new MigrationLogger(log), - migrationVersion: version, - convertToMultiNamespaceTypeVersion: type.convertToMultiNamespaceTypeVersion, - }; const result = migrationFn(doc, context); // A basic sanity check to help migration authors detect basic errors diff --git a/src/core/server/saved_objects/migrations/types.ts b/src/core/server/saved_objects/migrations/types.ts index 619a7f85a327b..570315e780ebe 100644 --- a/src/core/server/saved_objects/migrations/types.ts +++ b/src/core/server/saved_objects/migrations/types.ts @@ -56,15 +56,15 @@ export interface SavedObjectMigrationContext { /** * logger instance to be used by the migration handler */ - log: SavedObjectsMigrationLogger; + readonly log: SavedObjectsMigrationLogger; /** * The migration version that this migration function is defined for */ - migrationVersion: string; + readonly migrationVersion: string; /** * The version in which this object type is being converted to a multi-namespace type */ - convertToMultiNamespaceTypeVersion?: string; + readonly convertToMultiNamespaceTypeVersion?: string; } /** diff --git a/src/core/server/saved_objects/migrationsv2/model.test.ts b/src/core/server/saved_objects/migrationsv2/model.test.ts index adeb78e568af3..7a47e58f1947c 100644 --- a/src/core/server/saved_objects/migrationsv2/model.test.ts +++ b/src/core/server/saved_objects/migrationsv2/model.test.ts @@ -198,6 +198,31 @@ describe('migrations v2 model', () => { }); describe('model transitions from', () => { + it('transition returns new state', () => { + const initState: State = { + ...baseState, + controlState: 'INIT', + currentAlias: '.kibana', + versionAlias: '.kibana_7.11.0', + versionIndex: '.kibana_7.11.0_001', + }; + + const res: ResponseType<'INIT'> = Either.right({ + '.kibana_7.11.0_001': { + aliases: { + '.kibana': {}, + '.kibana_7.11.0': {}, + }, + mappings: { + properties: {}, + }, + settings: {}, + }, + }); + const newState = model(initState, res); + expect(newState).not.toBe(initState); + }); + describe('INIT', () => { const initState: State = { ...baseState, diff --git a/src/core/server/saved_objects/migrationsv2/model.ts b/src/core/server/saved_objects/migrationsv2/model.ts index 3ef3cb4f83b6f..f4185225ae073 100644 --- a/src/core/server/saved_objects/migrationsv2/model.ts +++ b/src/core/server/saved_objects/migrationsv2/model.ts @@ -9,7 +9,7 @@ import { gt, valid } from 'semver'; import * as Either from 'fp-ts/lib/Either'; import * as Option from 'fp-ts/lib/Option'; -import { cloneDeep } from 'lodash'; + import { AliasAction, FetchIndexResponse, isLeftTypeof, RetryableEsClientError } from './actions'; import { AllActionStates, InitState, State } from './types'; import { IndexMapping } from '../mappings'; @@ -187,7 +187,7 @@ export const model = (currentState: State, resW: ResponseType): // control state using: // `const res = resW as ResponseType;` - let stateP: State = cloneDeep(currentState); + let stateP: State = currentState; // Handle retryable_es_client_errors. Other left values need to be handled // by the control state specific code below. diff --git a/src/core/server/saved_objects/migrationsv2/types.ts b/src/core/server/saved_objects/migrationsv2/types.ts index e3e52212d56cb..adcd2ad32fd24 100644 --- a/src/core/server/saved_objects/migrationsv2/types.ts +++ b/src/core/server/saved_objects/migrationsv2/types.ts @@ -381,7 +381,7 @@ export interface LegacyDeleteState extends LegacyBaseState { readonly controlState: 'LEGACY_DELETE'; } -export type State = +export type State = Readonly< | FatalState | InitState | DoneState @@ -411,7 +411,8 @@ export type State = | LegacySetWriteBlockState | LegacyReindexState | LegacyReindexWaitForTaskState - | LegacyDeleteState; + | LegacyDeleteState +>; export type AllControlStates = State['controlState']; /** diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 972e220baae3e..3e6a69d159192 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -2152,9 +2152,9 @@ export interface SavedObjectExportBaseOptions { // @public export interface SavedObjectMigrationContext { - convertToMultiNamespaceTypeVersion?: string; - log: SavedObjectsMigrationLogger; - migrationVersion: string; + readonly convertToMultiNamespaceTypeVersion?: string; + readonly log: SavedObjectsMigrationLogger; + readonly migrationVersion: string; } // @public diff --git a/src/plugins/dashboard/common/saved_dashboard_references.ts b/src/plugins/dashboard/common/saved_dashboard_references.ts index 16ab470ce7d6f..9f0858759d0d9 100644 --- a/src/plugins/dashboard/common/saved_dashboard_references.ts +++ b/src/plugins/dashboard/common/saved_dashboard_references.ts @@ -5,8 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - -import semverSatisfies from 'semver/functions/satisfies'; +import Semver from 'semver'; import { SavedObjectAttributes, SavedObjectReference } from '../../../core/types'; import { DashboardContainerStateWithType, DashboardPanelState } from './types'; import { EmbeddablePersistableStateService } from '../../embeddable/common/types'; @@ -24,7 +23,7 @@ export interface SavedObjectAttributesAndReferences { } const isPre730Panel = (panel: Record): boolean => { - return 'version' in panel ? semverSatisfies(panel.version, '<7.3') : true; + return 'version' in panel ? Semver.gt('7.3.0', panel.version) : true; }; function dashboardAttributesToState( From dbfd76d7c8248628646050bd0e17e8be77b4a3fc Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Mon, 17 May 2021 13:45:29 +0200 Subject: [PATCH 121/144] [Reporting] Added appropriate table caption for table listing generated reports (#100118) * added appropriate table caption for table listing generated reports * updated jest snapshot Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/__snapshots__/report_listing.test.tsx.snap | 1 + x-pack/plugins/reporting/public/components/report_listing.tsx | 3 +++ 2 files changed, 4 insertions(+) diff --git a/x-pack/plugins/reporting/public/components/__snapshots__/report_listing.test.tsx.snap b/x-pack/plugins/reporting/public/components/__snapshots__/report_listing.test.tsx.snap index ddba7842f1199..670d16ec11548 100644 --- a/x-pack/plugins/reporting/public/components/__snapshots__/report_listing.test.tsx.snap +++ b/x-pack/plugins/reporting/public/components/__snapshots__/report_listing.test.tsx.snap @@ -52,6 +52,7 @@ Array [ "onSelectionChange": [Function], } } + tableCaption="Reports generated in Kibana applications" tableLayout="fixed" >
{ return ( Date: Mon, 17 May 2021 14:22:37 +0200 Subject: [PATCH 122/144] [Ingest pipelines] add support for registered_domain processor (#99643) The Ingest Node Pipelines UI added support to configure a registered domain processor. This processor extracts the registered domain, sub-domain and top-level domain from a fully qualified domain name. --- .../processors/registered_domain.test.tsx | 130 ++++++++++++++++++ .../processor_form/processors/index.ts | 1 + .../processors/registered_domain.tsx | 35 +++++ .../shared/map_processor_type_to_form.tsx | 23 ++++ .../ingest_pipelines/public/shared_imports.ts | 1 + 5 files changed, 190 insertions(+) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx new file mode 100644 index 0000000000000..962e099f5b667 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/registered_domain.test.tsx @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { act } from 'react-dom/test-utils'; +import { setup, SetupResult, getProcessorValue } from './processor.helpers'; + +// Default parameter values automatically added to the registered domain processor when saved +const defaultRegisteredDomainParameters = { + description: undefined, + if: undefined, + ignore_missing: undefined, + ignore_failure: undefined, +}; + +const REGISTERED_DOMAIN_TYPE = 'registered_domain'; + +describe('Processor: Registered Domain', () => { + let onUpdate: jest.Mock; + let testBed: SetupResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(async () => { + onUpdate = jest.fn(); + + await act(async () => { + testBed = await setup({ + value: { + processors: [], + }, + onFlyoutOpen: jest.fn(), + onUpdate, + }); + }); + + testBed.component.update(); + + // Open flyout to add new processor + testBed.actions.addProcessor(); + // Add type (the other fields are not visible until a type is selected) + await testBed.actions.addProcessorType(REGISTERED_DOMAIN_TYPE); + }); + + test('prevents form submission if required fields are not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Click submit button with only the type defined + await saveNewProcessor(); + + // Expect form error as "field" is required parameter + expect(form.getErrorsMessages()).toEqual(['A field value is required.']); + }); + + test('saves with default parameter values', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field_1'); + // Save the field + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, REGISTERED_DOMAIN_TYPE); + expect(processors[0][REGISTERED_DOMAIN_TYPE]).toEqual({ + field: 'field_1', + ...defaultRegisteredDomainParameters, + }); + }); + + test('should still send ignore_missing:false when the toggle is disabled', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field_1'); + + // Disable ignore missing toggle + form.toggleEuiSwitch('ignoreMissingSwitch.input'); + + // Save the field with new changes + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, REGISTERED_DOMAIN_TYPE); + expect(processors[0][REGISTERED_DOMAIN_TYPE]).toEqual({ + ...defaultRegisteredDomainParameters, + field: 'field_1', + ignore_missing: false, + }); + }); + + test('allows optional parameters to be set', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "field" value (required) + form.setInputValue('fieldNameField.input', 'field_1'); + + // Set optional parameteres + form.setInputValue('targetField.input', 'target_field'); + + // Save the field with new changes + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, REGISTERED_DOMAIN_TYPE); + expect(processors[0][REGISTERED_DOMAIN_TYPE]).toEqual({ + field: 'field_1', + target_field: 'target_field', + ...defaultRegisteredDomainParameters, + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts index 9dec9d3f0384f..4fb4365c477b5 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts @@ -28,6 +28,7 @@ export { Json } from './json'; export { Kv } from './kv'; export { Lowercase } from './lowercase'; export { Pipeline } from './pipeline'; +export { RegisteredDomain } from './registered_domain'; export { Remove } from './remove'; export { Rename } from './rename'; export { Script } from './script'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx new file mode 100644 index 0000000000000..4118a125914b2 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/registered_domain.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; +import { i18n } from '@kbn/i18n'; + +import { from } from './shared'; +import { FieldNameField } from './common_fields/field_name_field'; +import { TargetField } from './common_fields/target_field'; +import { IgnoreMissingField } from './common_fields/ignore_missing_field'; +import { SerializerFunc } from '../../../../../../shared_imports'; + +export const RegisteredDomain: FunctionComponent = () => { + return ( + <> + + + + + } + /> + + ); +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx index 5ab2d68aa193f..b5e42ea56bdf8 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx @@ -34,6 +34,7 @@ import { Kv, Lowercase, Pipeline, + RegisteredDomain, Remove, Rename, Script, @@ -518,6 +519,28 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = { }, }), }, + registered_domain: { + FieldsComponent: RegisteredDomain, + docLinkPath: '/registered-domain-processor.html', + label: i18n.translate('xpack.ingestPipelines.processors.label.registeredDomain', { + defaultMessage: 'Registered domain', + }), + typeDescription: i18n.translate( + 'xpack.ingestPipelines.processors.description.registeredDomain', + { + defaultMessage: + 'Extracts the registered domain (effective top-level domain), sub-domain, and top-level domain from a fully qualified domain name.', + } + ), + getDefaultDescription: ({ field }) => + i18n.translate('xpack.ingestPipelines.processors.defaultDescription.registeredDomain', { + defaultMessage: + 'Extracts the registered domain, sub-domain, and top-level domain from "{field}"', + values: { + field, + }, + }), + }, remove: { FieldsComponent: Remove, docLinkPath: '/remove-processor.html', diff --git a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts index 4afd434b89372..8ed57221a1395 100644 --- a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts +++ b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts @@ -52,6 +52,7 @@ export { ValidationConfig, useFormData, FormOptions, + SerializerFunc, } from '../../../../src/plugins/es_ui_shared/static/forms/hook_form_lib'; export { From 8efb922fc5ec0ea96312b1bad722048a95f8d822 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Mon, 17 May 2021 10:17:53 -0400 Subject: [PATCH 123/144] [Fleet] Improve fleet server upgrade modal (#99796) --- .../components/fleet_server_upgrade_modal.tsx | 82 +++++++++++++++---- .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 3 files changed, 67 insertions(+), 17 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx index 4d6ac864ee8b5..ede997f185c7e 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/fleet_server_upgrade_modal.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { EuiButton, EuiCheckbox, @@ -24,7 +24,15 @@ import { import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { sendPutSettings, useLink, useStartServices } from '../../../hooks'; +import { + sendGetAgents, + sendGetOneAgentPolicy, + sendPutSettings, + useLink, + useStartServices, +} from '../../../hooks'; +import type { PackagePolicy } from '../../../types'; +import { FLEET_SERVER_PACKAGE } from '../../../constants'; interface Props { onClose: () => void; @@ -37,6 +45,56 @@ export const FleetServerUpgradeModal: React.FunctionComponent = ({ onClos const isCloud = !!cloud?.cloudId; const [checked, setChecked] = useState(false); + const [isAgentsAndPoliciesLoaded, setAgentsAndPoliciesLoaded] = useState(false); + + // Check if an other agent than the fleet server is already enrolled + useEffect(() => { + async function check() { + try { + const agentPoliciesAlreadyChecked: { [k: string]: boolean } = {}; + + const res = await sendGetAgents({ + page: 1, + perPage: 10, + showInactive: false, + }); + + if (res.error) { + throw res.error; + } + + for (const agent of res.data?.list ?? []) { + if (!agent.policy_id || agentPoliciesAlreadyChecked[agent.policy_id]) { + continue; + } + + agentPoliciesAlreadyChecked[agent.policy_id] = true; + const policyRes = await sendGetOneAgentPolicy(agent.policy_id); + const hasFleetServer = + (policyRes.data?.item.package_policies as PackagePolicy[]).some((p: PackagePolicy) => { + return p.package?.name === FLEET_SERVER_PACKAGE; + }) ?? false; + if (!hasFleetServer) { + await sendPutSettings({ + has_seen_fleet_migration_notice: true, + }); + onClose(); + return; + } + } + setAgentsAndPoliciesLoaded(true); + } catch (err) { + notifications.toasts.addError(err, { + title: i18n.translate('xpack.fleet.fleetServerUpgradeModal.errorLoadingAgents', { + defaultMessage: `Error loading agents`, + }), + }); + } + } + + check(); + }, [notifications.toasts, onClose]); + const onChange = useCallback(async () => { try { setChecked(!checked); @@ -52,18 +110,23 @@ export const FleetServerUpgradeModal: React.FunctionComponent = ({ onClos } }, [checked, setChecked, notifications]); + if (!isAgentsAndPoliciesLoaded) { + return null; + } + return ( = ({ onClos {isCloud ? ( @@ -84,17 +147,6 @@ export const FleetServerUpgradeModal: React.FunctionComponent = ({ onClos /> ), - link: ( - - - - ), }} /> ) : ( diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index ae61f24201ce5..c46b59bce2f8e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -9514,7 +9514,6 @@ "xpack.fleet.fleetServerUpgradeModal.breakingChangeMessage": "これは大きい変更であるため、ベータリリースにしています。ご不便をおかけしていることをお詫び申し上げます。ご質問がある場合や、サポートが必要な場合は、{link}を共有してください。", "xpack.fleet.fleetServerUpgradeModal.checkboxLabel": "次回以降このメッセージを表示しない", "xpack.fleet.fleetServerUpgradeModal.closeButton": "閉じて開始する", - "xpack.fleet.fleetServerUpgradeModal.cloudDescriptionMessage": "Fleetサーバーを使用できます。スケーラビリティとセキュリティが強化されました。すでにElastic CloudでAPMを使用している場合は、APM & Fleetにアップグレードされました。{existingAgentsMessage} Fleetを使用し続けるには、Fleetサーバーと新しいバージョンのElasticエージェントを各ホストにインストールする必要があります。詳細については、{link}をご覧ください。", "xpack.fleet.fleetServerUpgradeModal.existingAgentText": "既存のElasticエージェントは自動的に登録解除され、データの送信を停止しました。", "xpack.fleet.fleetServerUpgradeModal.failedUpdateTitle": "設定の保存エラー", "xpack.fleet.fleetServerUpgradeModal.fleetFeedbackLink": "フィードバック", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ecd6c0d68a94f..90aa517c68232 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -9603,7 +9603,6 @@ "xpack.fleet.fleetServerUpgradeModal.breakingChangeMessage": "这是一项重大更改,所以我们在公测版中进行该更改。非常抱歉带来不便。如果您有疑问或需要帮助,请共享 {link}。", "xpack.fleet.fleetServerUpgradeModal.checkboxLabel": "不再显示此消息", "xpack.fleet.fleetServerUpgradeModal.closeButton": "关闭并开始使用", - "xpack.fleet.fleetServerUpgradeModal.cloudDescriptionMessage": "Fleet 服务器现在可用并提供改善的可扩展性和安全性。如果在 Elastic Cloud 上已有 APM,则我们已将其升级到 APM & Fleet。{existingAgentsMessage}要继续使用 Fleet,必须在各个主机上安装 Fleet 服务器和新版 Elastic 代理。详细了解我们的 {link}。", "xpack.fleet.fleetServerUpgradeModal.existingAgentText": "您现有的 Elastic 代理已被自动销注且已停止发送数据。", "xpack.fleet.fleetServerUpgradeModal.failedUpdateTitle": "保存设置时出错", "xpack.fleet.fleetServerUpgradeModal.fleetFeedbackLink": "反馈", From 30ea1900310c62b79bfd3105a88b6cff67dc5090 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Mon, 17 May 2021 10:21:47 -0400 Subject: [PATCH 124/144] [Fleet] Fix migration 7.12 to 7.13 migrate settings (#100054) --- .../server/services/fleet_server/saved_object_migrations.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts b/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts index 82fd937092477..5c05ed7532ac6 100644 --- a/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts +++ b/x-pack/plugins/fleet/server/services/fleet_server/saved_object_migrations.ts @@ -28,6 +28,7 @@ import { invalidateAPIKeys } from '../api_keys'; import { settingsService } from '..'; export async function runFleetServerMigration() { + await settingsService.settingsSetup(getInternalUserSOClient()); await Promise.all([migrateEnrollmentApiKeys(), migrateAgentPolicies(), migrateAgents()]); } From ac35d6cd59336ea17ceac7d4571b59b018a1a452 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 May 2021 16:04:57 +0100 Subject: [PATCH 125/144] skip flaky suite #(95899) --- .../plugins/canvas/shareable_runtime/components/app.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx b/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx index acf71cad3f3ba..b68642d184542 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx +++ b/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx @@ -59,7 +59,8 @@ const getWrapper: (name?: WorkpadNames) => ReactWrapper = (name = 'hello') => { return mount(); }; -describe('', () => { +// FLAKY: https://github.com/elastic/kibana/issues/95899 +describe.skip('', () => { test('App renders properly', () => { expect(getWrapper().html()).toMatchSnapshot(); }); From 8d85d72fef422f73c8628445a4a1e44669a65a40 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 May 2021 16:12:08 +0100 Subject: [PATCH 126/144] skip flaky suite (#100012) --- x-pack/test/functional/apps/spaces/enter_space.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/spaces/enter_space.ts b/x-pack/test/functional/apps/spaces/enter_space.ts index 4e4d4974ced09..e8a67f8899a36 100644 --- a/x-pack/test/functional/apps/spaces/enter_space.ts +++ b/x-pack/test/functional/apps/spaces/enter_space.ts @@ -14,7 +14,8 @@ export default function enterSpaceFunctonalTests({ const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects(['security', 'spaceSelector']); - describe('Enter Space', function () { + // FLAKY: https://github.com/elastic/kibana/issues/100012 + describe.skip('Enter Space', function () { this.tags('includeFirefox'); before(async () => { await esArchiver.load('spaces/enter_space'); From 532a33b051d5e4067d81a8feb51214373a31c6b1 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Mon, 17 May 2021 11:16:50 -0400 Subject: [PATCH 127/144] [Security Solution][Endpoint] Refactor Host Isolation component used in Isolate use case (#100159) * EndpointHostIsolateForm component * Refactor Detections Host isolation flyout to use isolateform --- .../endpoint/host_isolation/index.ts | 9 ++ .../endpoint/host_isolation/isolate_form.tsx | 88 +++++++++++ .../host_isolation/isolate_success.tsx | 41 ++++++ .../endpoint/host_isolation/translations.ts | 31 ++++ .../components/host_isolation/index.tsx | 138 +++++++----------- .../components/host_isolation/translations.ts | 17 --- 6 files changed, 218 insertions(+), 106 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts new file mode 100644 index 0000000000000..de51df283251d --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './isolate_success'; +export * from './isolate_form'; diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx new file mode 100644 index 0000000000000..dd26f676c1fe3 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_form.tsx @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { ChangeEventHandler, memo, ReactNode, useCallback } from 'react'; +import { + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiText, + EuiTextArea, + EuiTitle, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { CANCEL, COMMENT, COMMENT_PLACEHOLDER, CONFIRM } from './translations'; + +export interface EndpointIsolatedFormProps { + hostName: string; + onCancel: () => void; + onConfirm: () => void; + onChange: (changes: { comment: string }) => void; + comment?: string; + /** Any additional message to be appended to the default one */ + messageAppend?: ReactNode; + /** If true, then `Confirm` and `Cancel` buttons will be disabled, and `Confirm` button will loading loading style */ + isLoading?: boolean; +} + +export const EndpointIsolateForm = memo( + ({ hostName, onCancel, onConfirm, onChange, comment = '', messageAppend, isLoading = false }) => { + const handleCommentChange: ChangeEventHandler = useCallback( + (event) => { + onChange({ comment: event.target.value }); + }, + [onChange] + ); + + return ( + <> + +

+ {hostName} }} + />{' '} + {messageAppend} +

+ + + + + +

{COMMENT}

+
+ + + + + + + + {CANCEL} + + + + + {CONFIRM} + + + + + ); + } +); + +EndpointIsolateForm.displayName = 'EndpointIsolateForm'; diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx new file mode 100644 index 0000000000000..ee70a4526f5ac --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/isolate_success.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo, ReactNode } from 'react'; +import { EuiButtonEmpty, EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import { GET_SUCCESS_MESSAGE } from './translations'; + +export interface EndpointIsolateSuccessProps { + hostName: string; + completeButtonLabel: string; + onComplete: () => void; + additionalInfo?: ReactNode; +} + +export const EndpointIsolateSuccess = memo( + ({ hostName, onComplete, completeButtonLabel, additionalInfo }) => { + return ( + <> + + {additionalInfo} + + + + + + +

{completeButtonLabel}

+
+
+
+
+ + ); + } +); + +EndpointIsolateSuccess.displayName = 'EndpointIsolateSuccess'; diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts new file mode 100644 index 0000000000000..baeced2a7a69f --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/translations.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const CANCEL = i18n.translate('xpack.securitySolution.endpoint.hostIsolation.cancel', { + defaultMessage: 'Cancel', +}); + +export const CONFIRM = i18n.translate('xpack.securitySolution.endpoint.hostIsolation.confirm', { + defaultMessage: 'Confirm', +}); + +export const COMMENT = i18n.translate('xpack.securitySolution.endpoint.hostIsolation.comment', { + defaultMessage: 'Comment', +}); + +export const COMMENT_PLACEHOLDER = i18n.translate( + 'xpack.securitySolution.endpoint.hostIsolation.comment.placeholder', + { defaultMessage: 'You may leave an optional note here.' } +); + +export const GET_SUCCESS_MESSAGE = (hostName: string) => + i18n.translate('xpack.securitySolution.endpoint.hostIsolation.successfulMessage', { + defaultMessage: 'Host Isolation on {hostName} successfully submitted', + values: { hostName }, + }); diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx b/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx index 3897458e8459c..e6fd3a8459f76 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx @@ -7,32 +7,19 @@ import React, { useMemo, useState, useCallback } from 'react'; import { find } from 'lodash/fp'; -import { - EuiCallOut, - EuiTitle, - EuiText, - EuiTextArea, - EuiSpacer, - EuiFlexGroup, - EuiFlexItem, - EuiButton, - EuiButtonEmpty, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; +import { EuiText, EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { useHostIsolation } from '../../containers/detection_engine/alerts/use_host_isolation'; -import { - CANCEL, - CASES_ASSOCIATED_WITH_ALERT, - COMMENT, - COMMENT_PLACEHOLDER, - CONFIRM, - RETURN_TO_ALERT_DETAILS, -} from './translations'; +import { CASES_ASSOCIATED_WITH_ALERT, RETURN_TO_ALERT_DETAILS } from './translations'; import { Maybe } from '../../../../../observability/common/typings'; import { useCasesFromAlerts } from '../../containers/detection_engine/alerts/use_cases_from_alerts'; import { CaseDetailsLink } from '../../../common/components/links'; import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; +import { + EndpointIsolatedFormProps, + EndpointIsolateForm, + EndpointIsolateSuccess, +} from '../../../common/components/endpoint/host_isolation'; export const HostIsolationPanel = React.memo( ({ @@ -76,6 +63,11 @@ export const HostIsolationPanel = React.memo( const backToAlertDetails = useCallback(() => cancelCallback(), [cancelCallback]); + const handleIsolateFormChange: EndpointIsolatedFormProps['onChange'] = useCallback( + ({ comment: newComment }) => setComment(newComment), + [] + ); + const casesList = useMemo( () => caseIds.map((id, index) => { @@ -100,43 +92,29 @@ export const HostIsolationPanel = React.memo( return ( <> - - {caseCount > 0 && ( - <> - -

- -

-
- -
    {casesList}
-
- - )} -
- - - - -

{RETURN_TO_ALERT_DETAILS}

-
-
-
-
+ 0 && ( + <> + +

+ +

+
+ +
    {casesList}
+
+ + ) + } + /> ); }, [backToAlertDetails, hostName, caseCount, casesList]); @@ -145,13 +123,18 @@ export const HostIsolationPanel = React.memo( return ( <> - -

+ {hostName}, cases: ( {caseCount} @@ -161,42 +144,19 @@ export const HostIsolationPanel = React.memo( ), }} /> -

- - - -

{COMMENT}

-
- ) => - setComment(event.target.value) } /> - - - - {CANCEL} - - - - {CONFIRM} - - - ); }, [ - alertRule, + hostName, backToAlertDetails, - comment, confirmHostIsolation, - hostName, + handleIsolateFormChange, + comment, loading, caseCount, + alertRule, ]); return isIsolated ? hostIsolated : hostNotIsolated; diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts b/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts index 8d6334f6c340d..027a97cc3846e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts @@ -14,23 +14,6 @@ export const ISOLATE_HOST = i18n.translate( } ); -export const COMMENT = i18n.translate('xpack.securitySolution.endpoint.hostIsolation.comment', { - defaultMessage: 'Comment', -}); - -export const COMMENT_PLACEHOLDER = i18n.translate( - 'xpack.securitySolution.endpoint.hostIsolation.comment.placeholder', - { defaultMessage: 'You may leave an optional note here.' } -); - -export const CANCEL = i18n.translate('xpack.securitySolution.endpoint.hostIsolation.cancel', { - defaultMessage: 'Cancel', -}); - -export const CONFIRM = i18n.translate('xpack.securitySolution.endpoint.hostIsolation.confirm', { - defaultMessage: 'Confirm', -}); - export const CASES_ASSOCIATED_WITH_ALERT = (caseCount: number): string => i18n.translate( 'xpack.securitySolution.endpoint.hostIsolation.isolateHost.casesAssociatedWithAlert', From e63c31903253f7e567a3f192f57378a80dc4f1c3 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Mon, 17 May 2021 17:18:20 +0200 Subject: [PATCH 128/144] [QA] fix dashboard lens by value test (#100196) * [functional test] remove redundant navigation, wait for lens to be loaded * fix navigation to new viz * update test title Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- test/functional/apps/visualize/_visualize_listing.ts | 1 - test/functional/page_objects/visualize_page.ts | 4 ++-- .../functional/apps/dashboard/dashboard_lens_by_value.ts | 9 ++++----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/test/functional/apps/visualize/_visualize_listing.ts b/test/functional/apps/visualize/_visualize_listing.ts index 90e7da1696702..78474693e939a 100644 --- a/test/functional/apps/visualize/_visualize_listing.ts +++ b/test/functional/apps/visualize/_visualize_listing.ts @@ -45,7 +45,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('search', function () { before(async function () { // create one new viz - await PageObjects.visualize.gotoVisualizationLandingPage(); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickMarkdownWidget(); await PageObjects.visEditor.setMarkdownTxt('HELLO'); diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 9a4c01f0f2767..78a963867b8c2 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -129,14 +129,14 @@ export function VisualizePageProvider({ getService, getPageObjects }: FtrProvide } public async navigateToNewVisualization() { - await common.navigateToApp('visualize'); + await this.gotoVisualizationLandingPage(); await header.waitUntilLoadingHasFinished(); await this.clickNewVisualization(); await this.waitForGroupsSelectPage(); } public async navigateToNewAggBasedVisualization() { - await common.navigateToApp('visualize'); + await this.gotoVisualizationLandingPage(); await header.waitUntilLoadingHasFinished(); await this.clickNewVisualization(); await this.clickAggBasedVisualizations(); diff --git a/x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts b/x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts index 87ecfe0dcada9..865f4c64f0f1a 100644 --- a/x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts +++ b/x-pack/test/functional/apps/dashboard/dashboard_lens_by_value.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const PageObjects = getPageObjects(['common', 'dashboard', 'visualize', 'lens', 'header']); + const PageObjects = getPageObjects(['common', 'dashboard', 'visualize', 'lens', 'timePicker']); const find = getService('find'); const esArchiver = getService('esArchiver'); @@ -69,11 +69,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(titles.indexOf(newTitle)).to.not.be(-1); }); - it('is no longer linked to a dashboard after visiting the visuali1ze listing page', async () => { - await PageObjects.visualize.gotoVisualizationLandingPage(); + it('is no longer linked to a dashboard after visiting the visualize listing page', async () => { await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickLensWidget(); - await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.timePicker.ensureHiddenNoDataPopover(); await PageObjects.lens.configureDimension({ dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', operation: 'date_histogram', @@ -84,8 +83,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { operation: 'average', field: 'bytes', }); + await PageObjects.lens.waitForVisualization(); await PageObjects.lens.notLinkedToOriginatingApp(); - await PageObjects.header.waitUntilLoadingHasFinished(); // return to origin should not be present in save modal await testSubjects.click('lnsApp_saveButton'); From 839fc7b257184f01ccd9b8bfb42cdb766fc5c810 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 May 2021 16:19:56 +0100 Subject: [PATCH 129/144] skip failing es promotion suite (#99915) --- .../security_and_spaces/tests/get_signals_migration_status.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_signals_migration_status.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_signals_migration_status.ts index 793dec9eaae4b..869d1672150cc 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_signals_migration_status.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_signals_migration_status.ts @@ -19,7 +19,8 @@ export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); const supertestWithoutAuth = getService('supertestWithoutAuth'); - describe('Signals migration status', () => { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/99915 + describe.skip('Signals migration status', () => { let legacySignalsIndexName: string; beforeEach(async () => { await createSignalsIndex(supertest); From d079dae56df3a84ee3939c8619d981215cd0ef95 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 May 2021 16:21:46 +0100 Subject: [PATCH 130/144] skip failing es promotion suite (#99915) --- .../reporting_and_security/download_csv_dashboard.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts b/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts index 7f642f171b9fc..626cd217bde5f 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts @@ -31,7 +31,8 @@ export default function ({ getService }: FtrProviderContext) { }, }; - describe('CSV Generation from SearchSource', () => { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/99915 + describe.skip('CSV Generation from SearchSource', () => { before(async () => { await kibanaServer.uiSettings.update({ 'csv:quoteValues': false, From e30c7a41177c3470aaf6d84fe1debc9abe821d76 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Mon, 17 May 2021 17:26:13 +0200 Subject: [PATCH 131/144] remove non-valid code (#100144) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- test/functional/page_objects/common_page.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/test/functional/page_objects/common_page.ts b/test/functional/page_objects/common_page.ts index 6d9641a1a920e..bc60b8ce5f19c 100644 --- a/test/functional/page_objects/common_page.ts +++ b/test/functional/page_objects/common_page.ts @@ -257,7 +257,7 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo return currentUrl; }); - await retry.try(async () => { + await retry.tryForTime(defaultFindTimeout, async () => { await this.sleep(501); const currentUrl = await browser.getCurrentUrl(); log.debug('in navigateTo url = ' + currentUrl); @@ -266,10 +266,6 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo throw new Error('URL changed, waiting for it to settle'); } }); - if (appName === 'status_page') return; - if (await testSubjects.exists('statusPageContainer')) { - throw new Error('Navigation ended up at the status page.'); - } }); } From 49b1ccdc9a2ae5a16be60be3ba3374d7230fc148 Mon Sep 17 00:00:00 2001 From: Catherine Liu Date: Mon, 17 May 2021 09:45:48 -0700 Subject: [PATCH 132/144] [Canvas] Fix column object shape in datatable created by CSV function (#98561) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../common/{csv.test.js => csv.test.ts} | 54 ++++++++++--------- .../canvas_plugin_src/functions/common/csv.ts | 6 ++- 2 files changed, 35 insertions(+), 25 deletions(-) rename x-pack/plugins/canvas/canvas_plugin_src/functions/common/{csv.test.js => csv.test.ts} (72%) diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.test.js b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.test.ts similarity index 72% rename from x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.test.js rename to x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.test.ts index 500224a7a3bbe..93cf07a9dd5dd 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.test.js +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.test.ts @@ -5,19 +5,21 @@ * 2.0. */ +// @ts-expect-error untyped lib import { functionWrapper } from '../../../test_helpers/function_wrapper'; import { getFunctionErrors } from '../../../i18n'; import { csv } from './csv'; +import { Datatable } from 'src/plugins/expressions'; const errors = getFunctionErrors().csv; describe('csv', () => { const fn = functionWrapper(csv); - const expected = { + const expected: Datatable = { type: 'datatable', columns: [ - { name: 'name', type: 'string' }, - { name: 'number', type: 'string' }, + { id: 'name', name: 'name', meta: { type: 'string' } }, + { id: 'number', name: 'number', meta: { type: 'string' } }, ], rows: [ { name: 'one', number: '1' }, @@ -69,43 +71,47 @@ fourty two%SPLIT%42`, }); it('should trim column names', () => { - expect( - fn(null, { - data: `foo," bar ", baz, " buz " -1,2,3,4`, - }) - ).toEqual({ + const expectedResult: Datatable = { type: 'datatable', columns: [ - { name: 'foo', type: 'string' }, - { name: 'bar', type: 'string' }, - { name: 'baz', type: 'string' }, - { name: 'buz', type: 'string' }, + { id: 'foo', name: 'foo', meta: { type: 'string' } }, + { id: 'bar', name: 'bar', meta: { type: 'string' } }, + { id: 'baz', name: 'baz', meta: { type: 'string' } }, + { id: 'buz', name: 'buz', meta: { type: 'string' } }, ], rows: [{ foo: '1', bar: '2', baz: '3', buz: '4' }], - }); - }); + }; - it('should handle odd spaces correctly', () => { expect( fn(null, { data: `foo," bar ", baz, " buz " -1," best ",3, " ok" -" good", bad, better , " worst " `, +1,2,3,4`, }) - ).toEqual({ + ).toEqual(expectedResult); + }); + + it('should handle odd spaces correctly', () => { + const expectedResult: Datatable = { type: 'datatable', columns: [ - { name: 'foo', type: 'string' }, - { name: 'bar', type: 'string' }, - { name: 'baz', type: 'string' }, - { name: 'buz', type: 'string' }, + { id: 'foo', name: 'foo', meta: { type: 'string' } }, + { id: 'bar', name: 'bar', meta: { type: 'string' } }, + { id: 'baz', name: 'baz', meta: { type: 'string' } }, + { id: 'buz', name: 'buz', meta: { type: 'string' } }, ], rows: [ { foo: '1', bar: ' best ', baz: '3', buz: ' ok' }, { foo: ' good', bar: ' bad', baz: ' better ', buz: ' worst ' }, ], - }); + }; + + expect( + fn(null, { + data: `foo," bar ", baz, " buz " +1," best ",3, " ok" +" good", bad, better , " worst " `, + }) + ).toEqual(expectedResult); }); it('throws when given invalid csv', () => { diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.ts index 1f810e3658c6a..078721fc08d05 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/common/csv.ts @@ -73,7 +73,11 @@ export function csv(): ExpressionFunctionDefinition<'csv', null, Arguments, Data if (i === 0) { // first row, assume header values row.forEach((colName: string) => - acc.columns.push({ name: colName.trim(), type: 'string' }) + acc.columns.push({ + id: colName.trim(), + name: colName.trim(), + meta: { type: 'string' }, + }) ); } else { // any other row is a data row From 9aa7892894aacfa03c5bd0b38132c9f3c406c421 Mon Sep 17 00:00:00 2001 From: Catherine Liu Date: Mon, 17 May 2021 09:46:54 -0700 Subject: [PATCH 133/144] [Dashboard] Fixes dashboard_save functional test (#98830) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- test/functional/apps/dashboard/dashboard_save.ts | 9 ++++++--- test/functional/page_objects/dashboard_page.ts | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/test/functional/apps/dashboard/dashboard_save.ts b/test/functional/apps/dashboard/dashboard_save.ts index 0a0a2fc1dd286..dce59744db305 100644 --- a/test/functional/apps/dashboard/dashboard_save.ts +++ b/test/functional/apps/dashboard/dashboard_save.ts @@ -9,12 +9,12 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const PageObjects = getPageObjects(['dashboard', 'header']); + const PageObjects = getPageObjects(['dashboard', 'header', 'visualize']); const listingTable = getService('listingTable'); const testSubjects = getService('testSubjects'); + const dashboardAddPanel = getService('dashboardAddPanel'); - // FLAKY: https://github.com/elastic/kibana/issues/89476 - describe.skip('dashboard save', function describeIndexTests() { + describe('dashboard save', function describeIndexTests() { this.tags('includeFirefox'); const dashboardName = 'Dashboard Save Test'; const dashboardNameEnterKey = 'Dashboard Save Test with Enter Key'; @@ -127,6 +127,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.switchToEditMode(); await PageObjects.dashboard.expectExistsQuickSaveOption(); + await dashboardAddPanel.clickMarkdownQuickButton(); + await PageObjects.visualize.saveVisualizationAndReturn(); + await PageObjects.dashboard.waitForRenderComplete(); await PageObjects.dashboard.clickQuickSave(); await testSubjects.existOrFail('saveDashboardSuccess'); diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index 576e7e516e251..ba75ab75cc6e8 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -277,6 +277,7 @@ export function DashboardPageProvider({ getService, getPageObjects }: FtrProvide } public async clickQuickSave() { + await this.expectQuickSaveButtonEnabled(); log.debug('clickQuickSave'); await testSubjects.click('dashboardQuickSaveMenuItem'); } @@ -630,6 +631,15 @@ export function DashboardPageProvider({ getService, getPageObjects }: FtrProvide await testSubjects.existOrFail('dashboardQuickSaveMenuItem'); } + public async expectQuickSaveButtonEnabled() { + log.debug('expectQuickSaveButtonEnabled'); + const quickSaveButton = await testSubjects.find('dashboardQuickSaveMenuItem'); + const isDisabled = await quickSaveButton.getAttribute('disabled'); + if (isDisabled) { + throw new Error('Quick save button disabled'); + } + } + public async getNotLoadedVisualizations(vizList: string[]) { const checkList = []; for (const name of vizList) { From 808b44f2c1eca5007c082c347d96a0eef8747b21 Mon Sep 17 00:00:00 2001 From: Spencer Date: Mon, 17 May 2021 10:51:53 -0600 Subject: [PATCH 134/144] [kbn/test] move types/ftr into src (#99555) * [kbn/test] move types/ftr into src * Apply eslint updates * fix import of Lifecycle type Co-authored-by: spalger Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- packages/elastic-eslint-config-kibana/.eslintrc.js | 5 +++++ packages/kbn-test/package.json | 4 ++-- packages/kbn-test/src/functional_test_runner/index.ts | 1 + .../functional_test_runner/public_types.ts} | 10 +++------- packages/kbn-test/tsconfig.json | 4 +--- packages/kbn-test/types/README.md | 5 ----- test/accessibility/config.ts | 2 +- test/accessibility/ftr_provider_context.d.ts | 2 +- test/api_integration/ftr_provider_context.d.ts | 2 +- test/common/ftr_provider_context.d.ts | 2 +- .../functional/apps/discover/ftr_provider_context.d.ts | 2 +- test/functional/config.legacy.ts | 2 +- test/functional/ftr_provider_context.d.ts | 2 +- test/functional/services/common/browser.ts | 2 +- test/functional/services/common/test_subjects.ts | 2 +- test/functional/services/remote/webdriver.ts | 2 +- test/interpreter_functional/config.ts | 2 +- test/new_visualize_flow/config.ts | 2 +- test/plugin_functional/config.ts | 2 +- test/security_functional/config.ts | 2 +- test/server_integration/http/platform/config.ts | 2 +- test/server_integration/services/types.d.ts | 2 +- test/ui_capabilities/newsfeed_err/config.ts | 2 +- test/visual_regression/config.ts | 2 +- test/visual_regression/ftr_provider_context.d.ts | 2 +- .../services/visual_testing/visual_testing.ts | 2 +- x-pack/plugins/apm/ftr_e2e/config.ts | 2 +- x-pack/plugins/apm/ftr_e2e/cypress_open.ts | 2 +- x-pack/plugins/apm/ftr_e2e/cypress_run.ts | 2 +- x-pack/plugins/apm/ftr_e2e/ftr_provider_context.d.ts | 2 +- x-pack/test/accessibility/config.ts | 2 +- x-pack/test/accessibility/ftr_provider_context.d.ts | 2 +- x-pack/test/alerting_api_integration/common/config.ts | 2 +- .../common/ftr_provider_context.d.ts | 2 +- x-pack/test/api_integration/config.ts | 2 +- x-pack/test/api_integration/config_security_basic.ts | 2 +- x-pack/test/api_integration/config_security_trial.ts | 2 +- x-pack/test/api_integration/ftr_provider_context.d.ts | 2 +- x-pack/test/api_integration_basic/config.ts | 2 +- .../api_integration_basic/ftr_provider_context.d.ts | 2 +- x-pack/test/apm_api_integration/common/config.ts | 2 +- .../apm_api_integration/common/ftr_provider_context.ts | 2 +- x-pack/test/banners_functional/config.ts | 2 +- x-pack/test/banners_functional/ftr_provider_context.ts | 2 +- x-pack/test/case_api_integration/common/config.ts | 2 +- .../common/ftr_provider_context.d.ts | 2 +- x-pack/test/common/ftr_provider_context.ts | 2 +- .../detection_engine_api_integration/common/config.ts | 2 +- .../common/ftr_provider_context.d.ts | 2 +- .../encrypted_saved_objects_api_integration/config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- .../test/endpoint_api_integration_no_ingest/config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- x-pack/test/examples/config.ts | 2 +- x-pack/test/fleet_api_integration/config.ts | 2 +- x-pack/test/fleet_functional/config.ts | 2 +- x-pack/test/fleet_functional/ftr_provider_context.d.ts | 2 +- x-pack/test/functional/config_security_basic.ts | 2 +- x-pack/test/functional/ftr_provider_context.d.ts | 2 +- x-pack/test/functional/services/ml/api.ts | 2 +- x-pack/test/functional/services/ml/common_api.ts | 2 +- x-pack/test/functional/services/ml/common_ui.ts | 2 +- x-pack/test/functional/services/ml/custom_urls.ts | 2 +- .../services/ml/dashboard_job_selection_table.ts | 2 +- .../functional/services/ml/data_visualizer_table.ts | 2 +- x-pack/test/functional/services/ml/security_common.ts | 2 +- x-pack/test/functional/services/ml/test_resources.ts | 2 +- .../test/functional/services/transform/management.ts | 2 +- .../functional/services/transform/security_common.ts | 2 +- x-pack/test/functional_basic/config.ts | 2 +- x-pack/test/functional_basic/ftr_provider_context.d.ts | 2 +- x-pack/test/functional_cors/config.ts | 2 +- x-pack/test/functional_cors/ftr_provider_context.d.ts | 2 +- x-pack/test/functional_embedded/config.firefox.ts | 2 +- x-pack/test/functional_embedded/config.ts | 2 +- .../test/functional_embedded/ftr_provider_context.d.ts | 2 +- .../test/functional_enterprise_search/base_config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- .../with_host_configured.config.ts | 2 +- .../without_host_configured.config.ts | 2 +- x-pack/test/functional_vis_wizard/config.ts | 2 +- .../functional_vis_wizard/ftr_provider_context.d.ts | 2 +- x-pack/test/functional_with_es_ssl/config.ts | 2 +- .../functional_with_es_ssl/ftr_provider_context.d.ts | 2 +- x-pack/test/licensing_plugin/config.public.ts | 2 +- x-pack/test/licensing_plugin/config.ts | 2 +- x-pack/test/licensing_plugin/services.ts | 2 +- x-pack/test/lists_api_integration/common/config.ts | 2 +- .../common/ftr_provider_context.d.ts | 2 +- x-pack/test/load/config.ts | 2 +- .../observability_api_integration/common/config.ts | 2 +- x-pack/test/plugin_api_integration/config.ts | 2 +- .../plugin_api_integration/ftr_provider_context.d.ts | 2 +- x-pack/test/plugin_api_perf/ftr_provider_context.d.ts | 2 +- x-pack/test/plugin_functional/config.ts | 2 +- .../test/plugin_functional/ftr_provider_context.d.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- .../reporting_and_security.config.ts | 2 +- .../reporting_without_security.config.ts | 2 +- .../reporting_functional/ftr_provider_context.d.ts | 2 +- .../reporting_and_deprecated_security.config.ts | 2 +- .../reporting_and_security.config.ts | 2 +- .../reporting_without_security.config.ts | 2 +- .../test/saved_object_api_integration/common/config.ts | 2 +- .../common/ftr_provider_context.d.ts | 2 +- .../api_integration/security_and_spaces/config.ts | 2 +- .../api_integration/security_and_spaces/services.ts | 2 +- .../api_integration/tagging_api/config.ts | 2 +- .../api_integration/tagging_api/services.ts | 2 +- x-pack/test/saved_object_tagging/functional/config.ts | 2 +- .../functional/ftr_provider_context.ts | 2 +- x-pack/test/saved_objects_field_count/config.ts | 2 +- x-pack/test/search_sessions_integration/config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- .../test/security_api_integration/anonymous.config.ts | 2 +- .../anonymous_es_anonymous.config.ts | 2 +- x-pack/test/security_api_integration/audit.config.ts | 2 +- .../security_api_integration/ftr_provider_context.d.ts | 2 +- .../test/security_api_integration/kerberos.config.ts | 2 +- .../kerberos_anonymous_access.config.ts | 2 +- .../security_api_integration/login_selector.config.ts | 2 +- x-pack/test/security_api_integration/oidc.config.ts | 2 +- .../oidc_implicit_flow.config.ts | 2 +- x-pack/test/security_api_integration/pki.config.ts | 2 +- x-pack/test/security_api_integration/saml.config.ts | 2 +- .../security_api_integration/session_idle.config.ts | 2 +- .../session_invalidate.config.ts | 2 +- .../session_lifespan.config.ts | 2 +- x-pack/test/security_api_integration/token.config.ts | 2 +- .../test/security_functional/ftr_provider_context.d.ts | 2 +- .../test/security_functional/login_selector.config.ts | 2 +- x-pack/test/security_functional/oidc.config.ts | 2 +- x-pack/test/security_functional/saml.config.ts | 2 +- x-pack/test/security_solution_cypress/cli_config.ts | 2 +- .../test/security_solution_cypress/config.firefox.ts | 2 +- x-pack/test/security_solution_cypress/config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- x-pack/test/security_solution_cypress/visual_config.ts | 2 +- x-pack/test/security_solution_endpoint/config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- .../test/security_solution_endpoint_api_int/config.ts | 2 +- .../ftr_provider_context.d.ts | 2 +- x-pack/test/spaces_api_integration/common/config.ts | 2 +- .../common/ftr_provider_context.d.ts | 2 +- x-pack/test/ui_capabilities/common/config.ts | 2 +- .../ui_capabilities/common/ftr_provider_context.d.ts | 2 +- x-pack/test/upgrade/config.ts | 2 +- x-pack/test/upgrade/ftr_provider_context.d.ts | 2 +- x-pack/test/usage_collection/config.ts | 2 +- x-pack/test/usage_collection/ftr_provider_context.d.ts | 2 +- x-pack/test/visual_regression/config.ts | 2 +- .../test/visual_regression/ftr_provider_context.d.ts | 2 +- 152 files changed, 158 insertions(+), 163 deletions(-) rename packages/kbn-test/{types/ftr.d.ts => src/functional_test_runner/public_types.ts} (94%) delete mode 100644 packages/kbn-test/types/README.md diff --git a/packages/elastic-eslint-config-kibana/.eslintrc.js b/packages/elastic-eslint-config-kibana/.eslintrc.js index 2e978c543cc69..a8c2e9546510e 100644 --- a/packages/elastic-eslint-config-kibana/.eslintrc.js +++ b/packages/elastic-eslint-config-kibana/.eslintrc.js @@ -70,6 +70,11 @@ module.exports = { to: '@kbn/tinymath', disallowedMessage: `Don't use 'tinymath', use '@kbn/tinymath'` }, + { + from: '@kbn/test/types/ftr', + to: '@kbn/test', + disallowedMessage: `import from the root of @kbn/test instead` + }, ], ], }, diff --git a/packages/kbn-test/package.json b/packages/kbn-test/package.json index e8e42de3114aa..275d9fac73c58 100644 --- a/packages/kbn-test/package.json +++ b/packages/kbn-test/package.json @@ -3,8 +3,8 @@ "version": "1.0.0", "private": true, "license": "SSPL-1.0 OR Elastic License 2.0", - "main": "./target/index.js", - "types": "./target/types/index.d.ts", + "main": "./target", + "types": "./target/types", "scripts": { "build": "node scripts/build", "kbn:bootstrap": "node scripts/build --source-maps", diff --git a/packages/kbn-test/src/functional_test_runner/index.ts b/packages/kbn-test/src/functional_test_runner/index.ts index 80d257f1cfb23..268c6b2bd9a67 100644 --- a/packages/kbn-test/src/functional_test_runner/index.ts +++ b/packages/kbn-test/src/functional_test_runner/index.ts @@ -10,3 +10,4 @@ export { FunctionalTestRunner } from './functional_test_runner'; export { readConfigFile, Config } from './lib'; export { runFtrCli } from './cli'; export * from './lib/docker_servers'; +export * from './public_types'; diff --git a/packages/kbn-test/types/ftr.d.ts b/packages/kbn-test/src/functional_test_runner/public_types.ts similarity index 94% rename from packages/kbn-test/types/ftr.d.ts rename to packages/kbn-test/src/functional_test_runner/public_types.ts index 83f725d86857e..915cb34f6ffe5 100644 --- a/packages/kbn-test/types/ftr.d.ts +++ b/packages/kbn-test/src/functional_test_runner/public_types.ts @@ -7,13 +7,9 @@ */ import { ToolingLog } from '@kbn/dev-utils'; -import { - Config, - Lifecycle, - FailureMetadata, - DockerServersService, -} from '../src/functional_test_runner/lib'; -import { Test, Suite } from '../src/functional_test_runner/fake_mocha_types'; + +import { Config, Lifecycle, FailureMetadata, DockerServersService } from './lib'; +import { Test, Suite } from './fake_mocha_types'; export { Lifecycle, Config, FailureMetadata }; diff --git a/packages/kbn-test/tsconfig.json b/packages/kbn-test/tsconfig.json index 8536ad7e0c12f..3cb68029d74cf 100644 --- a/packages/kbn-test/tsconfig.json +++ b/packages/kbn-test/tsconfig.json @@ -8,19 +8,17 @@ "declaration": true, "declarationMap": true, "sourceMap": true, - "sourceRoot": "../../../../../packages/kbn-test/src", + "sourceRoot": "../../../../../../packages/kbn-test/src", "types": [ "jest", "node" ], }, "include": [ - "types/**/*", "src/**/*", "index.d.ts" ], "exclude": [ - "types/ftr_globals/**/*", "**/__fixtures__/**/*" ] } diff --git a/packages/kbn-test/types/README.md b/packages/kbn-test/types/README.md deleted file mode 100644 index 1298d2a4afc0a..0000000000000 --- a/packages/kbn-test/types/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# @kbn/test/types - -Shared types used by different parts of the tests - - - **`ftr.d.ts`**: These types are generic types for using the functional test runner. They are here because we plan to move the functional test runner into the `@kbn/test` package at some point and having them here makes them a lot easier to import from all over the place like we do. \ No newline at end of file diff --git a/test/accessibility/config.ts b/test/accessibility/config.ts index 7364aced7af2c..2643ed8ab2a78 100644 --- a/test/accessibility/config.ts +++ b/test/accessibility/config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/test/accessibility/ftr_provider_context.d.ts b/test/accessibility/ftr_provider_context.d.ts index 3cf8ae3e9a1c5..4c827393e1ef3 100644 --- a/test/accessibility/ftr_provider_context.d.ts +++ b/test/accessibility/ftr_provider_context.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/test/api_integration/ftr_provider_context.d.ts b/test/api_integration/ftr_provider_context.d.ts index 56dd8965b8411..91d35a2dbc32a 100644 --- a/test/api_integration/ftr_provider_context.d.ts +++ b/test/api_integration/ftr_provider_context.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/test/common/ftr_provider_context.d.ts b/test/common/ftr_provider_context.d.ts index 56dd8965b8411..91d35a2dbc32a 100644 --- a/test/common/ftr_provider_context.d.ts +++ b/test/common/ftr_provider_context.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/test/functional/apps/discover/ftr_provider_context.d.ts b/test/functional/apps/discover/ftr_provider_context.d.ts index e0113899b0836..5bf34af1bf9f3 100644 --- a/test/functional/apps/discover/ftr_provider_context.d.ts +++ b/test/functional/apps/discover/ftr_provider_context.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from '../../services'; import { pageObjects } from '../../page_objects'; diff --git a/test/functional/config.legacy.ts b/test/functional/config.legacy.ts index 9c5064b3b376c..d38f30a32ef61 100644 --- a/test/functional/config.legacy.ts +++ b/test/functional/config.legacy.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; // eslint-disable-next-line import/no-default-export export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/test/functional/ftr_provider_context.d.ts b/test/functional/ftr_provider_context.d.ts index 3cf8ae3e9a1c5..4c827393e1ef3 100644 --- a/test/functional/ftr_provider_context.d.ts +++ b/test/functional/ftr_provider_context.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/test/functional/services/common/browser.ts b/test/functional/services/common/browser.ts index d9212e48f73fc..4dfd30c3b3b68 100644 --- a/test/functional/services/common/browser.ts +++ b/test/functional/services/common/browser.ts @@ -11,7 +11,7 @@ import { cloneDeepWith } from 'lodash'; import { Key, Origin } from 'selenium-webdriver'; // @ts-ignore internal modules are not typed import { LegacyActionSequence } from 'selenium-webdriver/lib/actions'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { modifyUrl } from '@kbn/std'; import Jimp from 'jimp'; diff --git a/test/functional/services/common/test_subjects.ts b/test/functional/services/common/test_subjects.ts index 111206ec9eafe..d0050859cbb32 100644 --- a/test/functional/services/common/test_subjects.ts +++ b/test/functional/services/common/test_subjects.ts @@ -8,7 +8,7 @@ import testSubjSelector from '@kbn/test-subj-selector'; import { map as mapAsync } from 'bluebird'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { WebElementWrapper } from '../lib/web_element_wrapper'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/test/functional/services/remote/webdriver.ts b/test/functional/services/remote/webdriver.ts index 21150e3d2ed08..7d629ee817252 100644 --- a/test/functional/services/remote/webdriver.ts +++ b/test/functional/services/remote/webdriver.ts @@ -11,7 +11,7 @@ import Fs from 'fs'; import * as Rx from 'rxjs'; import { mergeMap, map, takeUntil, catchError } from 'rxjs/operators'; -import { Lifecycle } from '@kbn/test/src/functional_test_runner/lib/lifecycle'; +import { Lifecycle } from '@kbn/test'; import { ToolingLog } from '@kbn/dev-utils'; import chromeDriver from 'chromedriver'; // @ts-ignore types not available diff --git a/test/interpreter_functional/config.ts b/test/interpreter_functional/config.ts index 2e52c52784afd..adcac520125ad 100644 --- a/test/interpreter_functional/config.ts +++ b/test/interpreter_functional/config.ts @@ -8,7 +8,7 @@ import path from 'path'; import fs from 'fs'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const functionalConfig = await readConfigFile(require.resolve('../functional/config')); diff --git a/test/new_visualize_flow/config.ts b/test/new_visualize_flow/config.ts index 612dcbbd2e1eb..a6bd97464e2d0 100644 --- a/test/new_visualize_flow/config.ts +++ b/test/new_visualize_flow/config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const commonConfig = await readConfigFile(require.resolve('../functional/config.js')); diff --git a/test/plugin_functional/config.ts b/test/plugin_functional/config.ts index d21a157975ac8..1ff55edc010da 100644 --- a/test/plugin_functional/config.ts +++ b/test/plugin_functional/config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import path from 'path'; import fs from 'fs'; diff --git a/test/security_functional/config.ts b/test/security_functional/config.ts index fd87ff9bb2ffe..f61f3bbf240ec 100644 --- a/test/security_functional/config.ts +++ b/test/security_functional/config.ts @@ -7,7 +7,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const functionalConfig = await readConfigFile(require.resolve('../functional/config')); diff --git a/test/server_integration/http/platform/config.ts b/test/server_integration/http/platform/config.ts index 5b92d44c66485..f3cdf426e9cbb 100644 --- a/test/server_integration/http/platform/config.ts +++ b/test/server_integration/http/platform/config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; // eslint-disable-next-line import/no-default-export export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/test/server_integration/services/types.d.ts b/test/server_integration/services/types.d.ts index 5689100c671bb..2df95f0297f90 100644 --- a/test/server_integration/services/types.d.ts +++ b/test/server_integration/services/types.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services as kibanaCommonServices } from '../../common/services'; import { services as kibanaApiIntegrationServices } from '../../api_integration/services'; diff --git a/test/ui_capabilities/newsfeed_err/config.ts b/test/ui_capabilities/newsfeed_err/config.ts index 81448bf641ebb..e9548b41b67a0 100644 --- a/test/ui_capabilities/newsfeed_err/config.ts +++ b/test/ui_capabilities/newsfeed_err/config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; // @ts-ignore untyped module import getFunctionalConfig from '../../functional/config'; diff --git a/test/visual_regression/config.ts b/test/visual_regression/config.ts index 0d38b067f35d9..3c11a4c2689ba 100644 --- a/test/visual_regression/config.ts +++ b/test/visual_regression/config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/test/visual_regression/ftr_provider_context.d.ts b/test/visual_regression/ftr_provider_context.d.ts index 2dd5767f2270c..ba3eb370048b8 100644 --- a/test/visual_regression/ftr_provider_context.d.ts +++ b/test/visual_regression/ftr_provider_context.d.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from './services'; diff --git a/test/visual_regression/services/visual_testing/visual_testing.ts b/test/visual_regression/services/visual_testing/visual_testing.ts index d0a714d6759b5..a0d9afa90f3fe 100644 --- a/test/visual_regression/services/visual_testing/visual_testing.ts +++ b/test/visual_regression/services/visual_testing/visual_testing.ts @@ -8,7 +8,7 @@ import { postSnapshot } from '@percy/agent/dist/utils/sdk-utils'; import testSubjSelector from '@kbn/test-subj-selector'; -import { Test } from '@kbn/test/types/ftr'; +import { Test } from '@kbn/test'; import { kibanaPackageJson as pkg } from '@kbn/utils'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/plugins/apm/ftr_e2e/config.ts b/x-pack/plugins/apm/ftr_e2e/config.ts index cbbac3a5eb6a3..cace655ad7c5b 100644 --- a/x-pack/plugins/apm/ftr_e2e/config.ts +++ b/x-pack/plugins/apm/ftr_e2e/config.ts @@ -7,7 +7,7 @@ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { CA_CERT_PATH } from '@kbn/dev-utils'; async function config({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/plugins/apm/ftr_e2e/cypress_open.ts b/x-pack/plugins/apm/ftr_e2e/cypress_open.ts index 77416518f113b..ec52f387a8b98 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress_open.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress_open.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { cypressOpenTests } from './cypress_start'; async function openE2ETests({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/plugins/apm/ftr_e2e/cypress_run.ts b/x-pack/plugins/apm/ftr_e2e/cypress_run.ts index 19ea68b817ce5..0e9efb775fc7a 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress_run.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress_run.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { cypressRunTests } from './cypress_start'; async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/plugins/apm/ftr_e2e/ftr_provider_context.d.ts b/x-pack/plugins/apm/ftr_e2e/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/plugins/apm/ftr_e2e/ftr_provider_context.d.ts +++ b/x-pack/plugins/apm/ftr_e2e/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index 5b46e7de1efa4..81cfd70a23956 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/accessibility/ftr_provider_context.d.ts b/x-pack/test/accessibility/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/accessibility/ftr_provider_context.d.ts +++ b/x-pack/test/accessibility/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/alerting_api_integration/common/config.ts b/x-pack/test/alerting_api_integration/common/config.ts index 7844eaf3920c6..8647c5951b7f3 100644 --- a/x-pack/test/alerting_api_integration/common/config.ts +++ b/x-pack/test/alerting_api_integration/common/config.ts @@ -9,7 +9,7 @@ import path from 'path'; import getPort from 'get-port'; import fs from 'fs'; import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { getAllExternalServiceSimulatorPaths } from './fixtures/plugins/actions_simulators/server/plugin'; import { getTlsWebhookServerUrls } from './lib/get_tls_webhook_servers'; diff --git a/x-pack/test/alerting_api_integration/common/ftr_provider_context.d.ts b/x-pack/test/alerting_api_integration/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/alerting_api_integration/common/ftr_provider_context.d.ts +++ b/x-pack/test/alerting_api_integration/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/api_integration/config.ts b/x-pack/test/api_integration/config.ts index 9fd7afbfacc40..5c998a4322480 100644 --- a/x-pack/test/api_integration/config.ts +++ b/x-pack/test/api_integration/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export async function getApiIntegrationConfig({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/api_integration/config_security_basic.ts b/x-pack/test/api_integration/config_security_basic.ts index d4ff1574fa4ad..fc32e66c63e9e 100644 --- a/x-pack/test/api_integration/config_security_basic.ts +++ b/x-pack/test/api_integration/config_security_basic.ts @@ -7,7 +7,7 @@ /* eslint-disable import/no-default-export */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { default as createTestConfig } from './config'; export default async function (context: FtrConfigProviderContext) { diff --git a/x-pack/test/api_integration/config_security_trial.ts b/x-pack/test/api_integration/config_security_trial.ts index 441305e4ce7ed..93b1eefd350e9 100644 --- a/x-pack/test/api_integration/config_security_trial.ts +++ b/x-pack/test/api_integration/config_security_trial.ts @@ -7,7 +7,7 @@ /* eslint-disable import/no-default-export */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { default as createTestConfig } from './config'; export default async function (context: FtrConfigProviderContext) { diff --git a/x-pack/test/api_integration/ftr_provider_context.d.ts b/x-pack/test/api_integration/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/api_integration/ftr_provider_context.d.ts +++ b/x-pack/test/api_integration/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/api_integration_basic/config.ts b/x-pack/test/api_integration_basic/config.ts index 3e24e49d620de..446f8e07679e3 100644 --- a/x-pack/test/api_integration_basic/config.ts +++ b/x-pack/test/api_integration_basic/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const xpackApiIntegrationConfig = await readConfigFile( diff --git a/x-pack/test/api_integration_basic/ftr_provider_context.d.ts b/x-pack/test/api_integration_basic/ftr_provider_context.d.ts index db8621db0136e..63c97af0ed22a 100644 --- a/x-pack/test/api_integration_basic/ftr_provider_context.d.ts +++ b/x-pack/test/api_integration_basic/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from '../api_integration/services'; diff --git a/x-pack/test/apm_api_integration/common/config.ts b/x-pack/test/apm_api_integration/common/config.ts index 732f14d2a7bc8..68a0c6b4e9f1c 100644 --- a/x-pack/test/apm_api_integration/common/config.ts +++ b/x-pack/test/apm_api_integration/common/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import supertest from 'supertest'; import { format, UrlObject } from 'url'; import path from 'path'; diff --git a/x-pack/test/apm_api_integration/common/ftr_provider_context.ts b/x-pack/test/apm_api_integration/common/ftr_provider_context.ts index 7ca731854152b..cac4304696431 100644 --- a/x-pack/test/apm_api_integration/common/ftr_provider_context.ts +++ b/x-pack/test/apm_api_integration/common/ftr_provider_context.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { FtrProviderContext as InheritedFtrProviderContext } from '../../api_integration/ftr_provider_context'; import { ApmServices } from './config'; diff --git a/x-pack/test/banners_functional/config.ts b/x-pack/test/banners_functional/config.ts index 21cce31ca5d85..a4b2867b8d7ce 100644 --- a/x-pack/test/banners_functional/config.ts +++ b/x-pack/test/banners_functional/config.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services, pageObjects } from './ftr_provider_context'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/banners_functional/ftr_provider_context.ts b/x-pack/test/banners_functional/ftr_provider_context.ts index faac2954b00f6..c641b4efcc493 100644 --- a/x-pack/test/banners_functional/ftr_provider_context.ts +++ b/x-pack/test/banners_functional/ftr_provider_context.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from '../functional/services'; import { pageObjects } from '../functional/page_objects'; diff --git a/x-pack/test/case_api_integration/common/config.ts b/x-pack/test/case_api_integration/common/config.ts index 3c81407276453..8beabe450f66e 100644 --- a/x-pack/test/case_api_integration/common/config.ts +++ b/x-pack/test/case_api_integration/common/config.ts @@ -6,7 +6,7 @@ */ import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import path from 'path'; import fs from 'fs'; diff --git a/x-pack/test/case_api_integration/common/ftr_provider_context.d.ts b/x-pack/test/case_api_integration/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/case_api_integration/common/ftr_provider_context.d.ts +++ b/x-pack/test/case_api_integration/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/common/ftr_provider_context.ts b/x-pack/test/common/ftr_provider_context.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/common/ftr_provider_context.ts +++ b/x-pack/test/common/ftr_provider_context.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/detection_engine_api_integration/common/config.ts b/x-pack/test/detection_engine_api_integration/common/config.ts index 355703ae35052..659c836eb9207 100644 --- a/x-pack/test/detection_engine_api_integration/common/config.ts +++ b/x-pack/test/detection_engine_api_integration/common/config.ts @@ -6,7 +6,7 @@ */ import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; interface CreateTestConfigOptions { diff --git a/x-pack/test/detection_engine_api_integration/common/ftr_provider_context.d.ts b/x-pack/test/detection_engine_api_integration/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/detection_engine_api_integration/common/ftr_provider_context.d.ts +++ b/x-pack/test/detection_engine_api_integration/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/encrypted_saved_objects_api_integration/config.ts b/x-pack/test/encrypted_saved_objects_api_integration/config.ts index 71903fe6c73a8..9305431711de6 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/config.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/config.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/encrypted_saved_objects_api_integration/ftr_provider_context.d.ts b/x-pack/test/encrypted_saved_objects_api_integration/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/encrypted_saved_objects_api_integration/ftr_provider_context.d.ts +++ b/x-pack/test/encrypted_saved_objects_api_integration/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/endpoint_api_integration_no_ingest/config.ts b/x-pack/test/endpoint_api_integration_no_ingest/config.ts index 9670d809699b7..c6837256cf61b 100644 --- a/x-pack/test/endpoint_api_integration_no_ingest/config.ts +++ b/x-pack/test/endpoint_api_integration_no_ingest/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const xPackAPITestsConfig = await readConfigFile(require.resolve('../api_integration/config.ts')); diff --git a/x-pack/test/endpoint_api_integration_no_ingest/ftr_provider_context.d.ts b/x-pack/test/endpoint_api_integration_no_ingest/ftr_provider_context.d.ts index db8621db0136e..63c97af0ed22a 100644 --- a/x-pack/test/endpoint_api_integration_no_ingest/ftr_provider_context.d.ts +++ b/x-pack/test/endpoint_api_integration_no_ingest/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from '../api_integration/services'; diff --git a/x-pack/test/examples/config.ts b/x-pack/test/examples/config.ts index fe1b5ce299447..491c23a33a3ef 100644 --- a/x-pack/test/examples/config.ts +++ b/x-pack/test/examples/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { resolve } from 'path'; import fs from 'fs'; // @ts-expect-error https://github.com/elastic/kibana/issues/95679 diff --git a/x-pack/test/fleet_api_integration/config.ts b/x-pack/test/fleet_api_integration/config.ts index 2344bdc32904a..cd47da8ef5fc3 100644 --- a/x-pack/test/fleet_api_integration/config.ts +++ b/x-pack/test/fleet_api_integration/config.ts @@ -7,7 +7,7 @@ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { defineDockerServersConfig } from '@kbn/test'; // Docker image to use for Fleet API integration tests. diff --git a/x-pack/test/fleet_functional/config.ts b/x-pack/test/fleet_functional/config.ts index 386f39d7ec668..15d0c72ffc603 100644 --- a/x-pack/test/fleet_functional/config.ts +++ b/x-pack/test/fleet_functional/config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/fleet_functional/ftr_provider_context.d.ts b/x-pack/test/fleet_functional/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/fleet_functional/ftr_provider_context.d.ts +++ b/x-pack/test/fleet_functional/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/functional/config_security_basic.ts b/x-pack/test/functional/config_security_basic.ts index d8d008508785a..4deb598fe8769 100644 --- a/x-pack/test/functional/config_security_basic.ts +++ b/x-pack/test/functional/config_security_basic.ts @@ -9,7 +9,7 @@ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/functional/ftr_provider_context.d.ts b/x-pack/test/functional/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/functional/ftr_provider_context.d.ts +++ b/x-pack/test/functional/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/functional/services/ml/api.ts b/x-pack/test/functional/services/ml/api.ts index d341a27455a3c..4623b4f4e41ae 100644 --- a/x-pack/test/functional/services/ml/api.ts +++ b/x-pack/test/functional/services/ml/api.ts @@ -7,7 +7,7 @@ import { estypes } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { Calendar } from '../../../../plugins/ml/server/models/calendar/index'; import { Annotation } from '../../../../plugins/ml/common/types/annotations'; import { DataFrameAnalyticsConfig } from '../../../../plugins/ml/public/application/data_frame_analytics/common'; diff --git a/x-pack/test/functional/services/ml/common_api.ts b/x-pack/test/functional/services/ml/common_api.ts index 22be24548892f..02cfecfc5208f 100644 --- a/x-pack/test/functional/services/ml/common_api.ts +++ b/x-pack/test/functional/services/ml/common_api.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/services/ml/common_ui.ts b/x-pack/test/functional/services/ml/common_ui.ts index f42f54116c926..b7288d5927b4c 100644 --- a/x-pack/test/functional/services/ml/common_ui.ts +++ b/x-pack/test/functional/services/ml/common_ui.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/services/ml/custom_urls.ts b/x-pack/test/functional/services/ml/custom_urls.ts index 7c424c021fd6c..0b24c565b2fa8 100644 --- a/x-pack/test/functional/services/ml/custom_urls.ts +++ b/x-pack/test/functional/services/ml/custom_urls.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts b/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts index f372928d92a50..4fc90585f1408 100644 --- a/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts +++ b/x-pack/test/functional/services/ml/dashboard_job_selection_table.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; export type MlDashboardJobSelectionTable = ProvidedType< diff --git a/x-pack/test/functional/services/ml/data_visualizer_table.ts b/x-pack/test/functional/services/ml/data_visualizer_table.ts index 3bd3b7e2e783a..cdd91da8ff9e6 100644 --- a/x-pack/test/functional/services/ml/data_visualizer_table.ts +++ b/x-pack/test/functional/services/ml/data_visualizer_table.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; import { ML_JOB_FIELD_TYPES } from '../../../../plugins/ml/common/constants/field_types'; import { MlCommonUI } from './common_ui'; diff --git a/x-pack/test/functional/services/ml/security_common.ts b/x-pack/test/functional/services/ml/security_common.ts index 28d912a756acd..847730ca73548 100644 --- a/x-pack/test/functional/services/ml/security_common.ts +++ b/x-pack/test/functional/services/ml/security_common.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/services/ml/test_resources.ts b/x-pack/test/functional/services/ml/test_resources.ts index 547ff782bcbe5..f967099e10fa3 100644 --- a/x-pack/test/functional/services/ml/test_resources.ts +++ b/x-pack/test/functional/services/ml/test_resources.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { savedSearches, dashboards } from './test_resources_data'; import { COMMON_REQUEST_HEADERS } from './common_api'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional/services/transform/management.ts b/x-pack/test/functional/services/transform/management.ts index 807c3d49e344c..0aecc695049d1 100644 --- a/x-pack/test/functional/services/transform/management.ts +++ b/x-pack/test/functional/services/transform/management.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; export type TransformManagement = ProvidedType; diff --git a/x-pack/test/functional/services/transform/security_common.ts b/x-pack/test/functional/services/transform/security_common.ts index 12b24d45f5448..bae31dffa1412 100644 --- a/x-pack/test/functional/services/transform/security_common.ts +++ b/x-pack/test/functional/services/transform/security_common.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ProvidedType } from '@kbn/test/types/ftr'; +import { ProvidedType } from '@kbn/test'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/functional_basic/config.ts b/x-pack/test/functional_basic/config.ts index ce72362076da1..e1dac88436e4c 100644 --- a/x-pack/test/functional_basic/config.ts +++ b/x-pack/test/functional_basic/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const xpackFunctionalConfig = await readConfigFile(require.resolve('../functional/config.js')); diff --git a/x-pack/test/functional_basic/ftr_provider_context.d.ts b/x-pack/test/functional_basic/ftr_provider_context.d.ts index 0225c54768af5..66d4e37b795ca 100644 --- a/x-pack/test/functional_basic/ftr_provider_context.d.ts +++ b/x-pack/test/functional_basic/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from '../functional/services'; diff --git a/x-pack/test/functional_cors/config.ts b/x-pack/test/functional_cors/config.ts index 81870a948dc15..738285b4ff40f 100644 --- a/x-pack/test/functional_cors/config.ts +++ b/x-pack/test/functional_cors/config.ts @@ -7,7 +7,7 @@ import Url from 'url'; import Path from 'path'; -import type { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import type { FtrConfigProviderContext } from '@kbn/test'; import { kbnTestConfig } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; diff --git a/x-pack/test/functional_cors/ftr_provider_context.d.ts b/x-pack/test/functional_cors/ftr_provider_context.d.ts index b1301d9ee8c49..d6c0afa5ceffd 100644 --- a/x-pack/test/functional_cors/ftr_provider_context.d.ts +++ b/x-pack/test/functional_cors/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from './services'; diff --git a/x-pack/test/functional_embedded/config.firefox.ts b/x-pack/test/functional_embedded/config.firefox.ts index a8a16f5c59b9e..49359d37673de 100644 --- a/x-pack/test/functional_embedded/config.firefox.ts +++ b/x-pack/test/functional_embedded/config.firefox.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const chromeConfig = await readConfigFile(require.resolve('./config')); diff --git a/x-pack/test/functional_embedded/config.ts b/x-pack/test/functional_embedded/config.ts index 33656eb857f58..868d53ee17ee9 100644 --- a/x-pack/test/functional_embedded/config.ts +++ b/x-pack/test/functional_embedded/config.ts @@ -8,7 +8,7 @@ import Fs from 'fs'; import { resolve } from 'path'; import { CA_CERT_PATH, KBN_CERT_PATH, KBN_KEY_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/functional_embedded/ftr_provider_context.d.ts b/x-pack/test/functional_embedded/ftr_provider_context.d.ts index b1301d9ee8c49..d6c0afa5ceffd 100644 --- a/x-pack/test/functional_embedded/ftr_provider_context.d.ts +++ b/x-pack/test/functional_embedded/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from './services'; diff --git a/x-pack/test/functional_enterprise_search/base_config.ts b/x-pack/test/functional_enterprise_search/base_config.ts index 5687bd48c9bad..2c21ccf5c5c39 100644 --- a/x-pack/test/functional_enterprise_search/base_config.ts +++ b/x-pack/test/functional_enterprise_search/base_config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/functional_enterprise_search/ftr_provider_context.d.ts b/x-pack/test/functional_enterprise_search/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/functional_enterprise_search/ftr_provider_context.d.ts +++ b/x-pack/test/functional_enterprise_search/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/functional_enterprise_search/with_host_configured.config.ts b/x-pack/test/functional_enterprise_search/with_host_configured.config.ts index 66e638b69f5b8..1da62ffe56a5b 100644 --- a/x-pack/test/functional_enterprise_search/with_host_configured.config.ts +++ b/x-pack/test/functional_enterprise_search/with_host_configured.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const baseConfig = await readConfigFile(require.resolve('./base_config')); diff --git a/x-pack/test/functional_enterprise_search/without_host_configured.config.ts b/x-pack/test/functional_enterprise_search/without_host_configured.config.ts index 6d9fe32312d20..f5af2bddd8531 100644 --- a/x-pack/test/functional_enterprise_search/without_host_configured.config.ts +++ b/x-pack/test/functional_enterprise_search/without_host_configured.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const baseConfig = await readConfigFile(require.resolve('./base_config')); diff --git a/x-pack/test/functional_vis_wizard/config.ts b/x-pack/test/functional_vis_wizard/config.ts index 643718d78df08..523b59b6ccd1c 100644 --- a/x-pack/test/functional_vis_wizard/config.ts +++ b/x-pack/test/functional_vis_wizard/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const xPackFunctionalConfig = await readConfigFile(require.resolve('../functional/config')); diff --git a/x-pack/test/functional_vis_wizard/ftr_provider_context.d.ts b/x-pack/test/functional_vis_wizard/ftr_provider_context.d.ts index 89681747cbb55..ab1e999222808 100644 --- a/x-pack/test/functional_vis_wizard/ftr_provider_context.d.ts +++ b/x-pack/test/functional_vis_wizard/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from '../functional/services'; diff --git a/x-pack/test/functional_with_es_ssl/config.ts b/x-pack/test/functional_with_es_ssl/config.ts index 91a349e1bf44a..3ed382053f561 100644 --- a/x-pack/test/functional_with_es_ssl/config.ts +++ b/x-pack/test/functional_with_es_ssl/config.ts @@ -8,7 +8,7 @@ import Fs from 'fs'; import { resolve, join } from 'path'; import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; // .server-log is specifically not enabled diff --git a/x-pack/test/functional_with_es_ssl/ftr_provider_context.d.ts b/x-pack/test/functional_with_es_ssl/ftr_provider_context.d.ts index 576d296e72e88..821731a07f457 100644 --- a/x-pack/test/functional_with_es_ssl/ftr_provider_context.d.ts +++ b/x-pack/test/functional_with_es_ssl/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from '../functional/services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/licensing_plugin/config.public.ts b/x-pack/test/licensing_plugin/config.public.ts index 0de536d7125ca..a9df9f6ad1e96 100644 --- a/x-pack/test/licensing_plugin/config.public.ts +++ b/x-pack/test/licensing_plugin/config.public.ts @@ -8,7 +8,7 @@ import path from 'path'; // @ts-expect-error https://github.com/elastic/kibana/issues/95679 import { KIBANA_ROOT } from '@kbn/test'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const commonConfig = await readConfigFile(require.resolve('./config')); diff --git a/x-pack/test/licensing_plugin/config.ts b/x-pack/test/licensing_plugin/config.ts index ccd9494052817..155d761020b29 100644 --- a/x-pack/test/licensing_plugin/config.ts +++ b/x-pack/test/licensing_plugin/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services, pageObjects } from './services'; const license = 'basic'; diff --git a/x-pack/test/licensing_plugin/services.ts b/x-pack/test/licensing_plugin/services.ts index eb5b22731718c..fe98c9f23d174 100644 --- a/x-pack/test/licensing_plugin/services.ts +++ b/x-pack/test/licensing_plugin/services.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services as functionalTestServices } from '../functional/services'; import { services as kibanaApiIntegrationServices } from '../api_integration/services'; diff --git a/x-pack/test/lists_api_integration/common/config.ts b/x-pack/test/lists_api_integration/common/config.ts index 693155d376b53..24b47472d7945 100644 --- a/x-pack/test/lists_api_integration/common/config.ts +++ b/x-pack/test/lists_api_integration/common/config.ts @@ -7,7 +7,7 @@ import path from 'path'; import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; interface CreateTestConfigOptions { diff --git a/x-pack/test/lists_api_integration/common/ftr_provider_context.d.ts b/x-pack/test/lists_api_integration/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/lists_api_integration/common/ftr_provider_context.d.ts +++ b/x-pack/test/lists_api_integration/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/load/config.ts b/x-pack/test/load/config.ts index f8de5c28b8a10..54789b56d9912 100644 --- a/x-pack/test/load/config.ts +++ b/x-pack/test/load/config.ts @@ -7,7 +7,7 @@ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { GatlingTestRunner } from './runner'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/observability_api_integration/common/config.ts b/x-pack/test/observability_api_integration/common/config.ts index 748b6ef7215e6..83249182084f3 100644 --- a/x-pack/test/observability_api_integration/common/config.ts +++ b/x-pack/test/observability_api_integration/common/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; interface Settings { license: 'basic' | 'trial'; diff --git a/x-pack/test/plugin_api_integration/config.ts b/x-pack/test/plugin_api_integration/config.ts index 87f8b77028bda..09bec3330c390 100644 --- a/x-pack/test/plugin_api_integration/config.ts +++ b/x-pack/test/plugin_api_integration/config.ts @@ -7,7 +7,7 @@ import path from 'path'; import fs from 'fs'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/plugin_api_integration/ftr_provider_context.d.ts b/x-pack/test/plugin_api_integration/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/plugin_api_integration/ftr_provider_context.d.ts +++ b/x-pack/test/plugin_api_integration/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/plugin_api_perf/ftr_provider_context.d.ts b/x-pack/test/plugin_api_perf/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/plugin_api_perf/ftr_provider_context.d.ts +++ b/x-pack/test/plugin_api_perf/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/plugin_functional/config.ts b/x-pack/test/plugin_functional/config.ts index 104d11eb87f7c..8b0ad12891dc3 100644 --- a/x-pack/test/plugin_functional/config.ts +++ b/x-pack/test/plugin_functional/config.ts @@ -9,7 +9,7 @@ import { resolve } from 'path'; import fs from 'fs'; // @ts-expect-error https://github.com/elastic/kibana/issues/95679 import { KIBANA_ROOT } from '@kbn/test'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/plugin_functional/ftr_provider_context.d.ts b/x-pack/test/plugin_functional/ftr_provider_context.d.ts index 2dce44a533405..13bd4b46607c4 100644 --- a/x-pack/test/plugin_functional/ftr_provider_context.d.ts +++ b/x-pack/test/plugin_functional/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/reporting_api_integration/ftr_provider_context.d.ts b/x-pack/test/reporting_api_integration/ftr_provider_context.d.ts index 671866cad6ff5..647664d640466 100644 --- a/x-pack/test/reporting_api_integration/ftr_provider_context.d.ts +++ b/x-pack/test/reporting_api_integration/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; export type FtrProviderContext = GenericFtrProviderContext; diff --git a/x-pack/test/reporting_api_integration/reporting_and_security.config.ts b/x-pack/test/reporting_api_integration/reporting_and_security.config.ts index 623799c84d860..0d1839c7a138f 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security.config.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { resolve } from 'path'; import { ReportingAPIProvider } from './services'; diff --git a/x-pack/test/reporting_api_integration/reporting_without_security.config.ts b/x-pack/test/reporting_api_integration/reporting_without_security.config.ts index b962ab30876a5..dfd79916b5ce0 100644 --- a/x-pack/test/reporting_api_integration/reporting_without_security.config.ts +++ b/x-pack/test/reporting_api_integration/reporting_without_security.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const apiConfig = await readConfigFile(require.resolve('./reporting_and_security.config')); diff --git a/x-pack/test/reporting_functional/ftr_provider_context.d.ts b/x-pack/test/reporting_functional/ftr_provider_context.d.ts index 58ebd71086130..e66e69e5ab2f7 100644 --- a/x-pack/test/reporting_functional/ftr_provider_context.d.ts +++ b/x-pack/test/reporting_functional/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from './services'; diff --git a/x-pack/test/reporting_functional/reporting_and_deprecated_security.config.ts b/x-pack/test/reporting_functional/reporting_and_deprecated_security.config.ts index 214667ff71c0d..a65755e97b0c9 100644 --- a/x-pack/test/reporting_functional/reporting_and_deprecated_security.config.ts +++ b/x-pack/test/reporting_functional/reporting_and_deprecated_security.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { resolve } from 'path'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/reporting_functional/reporting_and_security.config.ts b/x-pack/test/reporting_functional/reporting_and_security.config.ts index 1f9ec5754e0bd..536695b4c6dc9 100644 --- a/x-pack/test/reporting_functional/reporting_and_security.config.ts +++ b/x-pack/test/reporting_functional/reporting_and_security.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { resolve } from 'path'; import { ReportingAPIProvider } from '../reporting_api_integration/services'; import { ReportingFunctionalProvider } from './services'; diff --git a/x-pack/test/reporting_functional/reporting_without_security.config.ts b/x-pack/test/reporting_functional/reporting_without_security.config.ts index b88c611543953..0269f57bf08cb 100644 --- a/x-pack/test/reporting_functional/reporting_without_security.config.ts +++ b/x-pack/test/reporting_functional/reporting_without_security.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { resolve } from 'path'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/saved_object_api_integration/common/config.ts b/x-pack/test/saved_object_api_integration/common/config.ts index ee219e9d246a7..f83afb4db2412 100644 --- a/x-pack/test/saved_object_api_integration/common/config.ts +++ b/x-pack/test/saved_object_api_integration/common/config.ts @@ -8,7 +8,7 @@ import path from 'path'; import { REPO_ROOT } from '@kbn/utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/saved_object_api_integration/common/ftr_provider_context.d.ts b/x-pack/test/saved_object_api_integration/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/saved_object_api_integration/common/ftr_provider_context.d.ts +++ b/x-pack/test/saved_object_api_integration/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/config.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/config.ts index e7b015ff92296..08ba10b64e579 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/config.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/config.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; // eslint-disable-next-line import/no-default-export diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/services.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/services.ts index 1d26b3dd35c96..194d6ec533066 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/services.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/services.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services as apiIntegrationServices } from '../../../api_integration/services'; export const services = { diff --git a/x-pack/test/saved_object_tagging/api_integration/tagging_api/config.ts b/x-pack/test/saved_object_tagging/api_integration/tagging_api/config.ts index 11f776356df69..ebdb055bd5e89 100644 --- a/x-pack/test/saved_object_tagging/api_integration/tagging_api/config.ts +++ b/x-pack/test/saved_object_tagging/api_integration/tagging_api/config.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; // eslint-disable-next-line import/no-default-export diff --git a/x-pack/test/saved_object_tagging/api_integration/tagging_api/services.ts b/x-pack/test/saved_object_tagging/api_integration/tagging_api/services.ts index 1d26b3dd35c96..194d6ec533066 100644 --- a/x-pack/test/saved_object_tagging/api_integration/tagging_api/services.ts +++ b/x-pack/test/saved_object_tagging/api_integration/tagging_api/services.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services as apiIntegrationServices } from '../../../api_integration/services'; export const services = { diff --git a/x-pack/test/saved_object_tagging/functional/config.ts b/x-pack/test/saved_object_tagging/functional/config.ts index ccb55d37f5fa0..0044063e18c69 100644 --- a/x-pack/test/saved_object_tagging/functional/config.ts +++ b/x-pack/test/saved_object_tagging/functional/config.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services, pageObjects } from './ftr_provider_context'; // eslint-disable-next-line import/no-default-export diff --git a/x-pack/test/saved_object_tagging/functional/ftr_provider_context.ts b/x-pack/test/saved_object_tagging/functional/ftr_provider_context.ts index 849dca0989335..643f34a59f69c 100644 --- a/x-pack/test/saved_object_tagging/functional/ftr_provider_context.ts +++ b/x-pack/test/saved_object_tagging/functional/ftr_provider_context.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from '../../functional/services'; import { pageObjects } from '../../functional/page_objects'; diff --git a/x-pack/test/saved_objects_field_count/config.ts b/x-pack/test/saved_objects_field_count/config.ts index ab9c88ae86330..8144bac35ec7b 100644 --- a/x-pack/test/saved_objects_field_count/config.ts +++ b/x-pack/test/saved_objects_field_count/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { testRunner } from './runner'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/search_sessions_integration/config.ts b/x-pack/test/search_sessions_integration/config.ts index 831257738f64c..1e2d648712098 100644 --- a/x-pack/test/search_sessions_integration/config.ts +++ b/x-pack/test/search_sessions_integration/config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from '../functional/services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/search_sessions_integration/ftr_provider_context.d.ts b/x-pack/test/search_sessions_integration/ftr_provider_context.d.ts index c65eeb91fe5b9..8ce17281223e1 100644 --- a/x-pack/test/search_sessions_integration/ftr_provider_context.d.ts +++ b/x-pack/test/search_sessions_integration/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from '../functional/services'; diff --git a/x-pack/test/security_api_integration/anonymous.config.ts b/x-pack/test/security_api_integration/anonymous.config.ts index ab2573822d440..80ac45507de73 100644 --- a/x-pack/test/security_api_integration/anonymous.config.ts +++ b/x-pack/test/security_api_integration/anonymous.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const kibanaAPITestsConfig = await readConfigFile( diff --git a/x-pack/test/security_api_integration/anonymous_es_anonymous.config.ts b/x-pack/test/security_api_integration/anonymous_es_anonymous.config.ts index 25fb8154dd8d4..60691769729fa 100644 --- a/x-pack/test/security_api_integration/anonymous_es_anonymous.config.ts +++ b/x-pack/test/security_api_integration/anonymous_es_anonymous.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const anonymousAPITestsConfig = await readConfigFile(require.resolve('./anonymous.config.ts')); diff --git a/x-pack/test/security_api_integration/audit.config.ts b/x-pack/test/security_api_integration/audit.config.ts index 60b1c0bf1fa80..02b3870c18f89 100644 --- a/x-pack/test/security_api_integration/audit.config.ts +++ b/x-pack/test/security_api_integration/audit.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const xPackAPITestsConfig = await readConfigFile(require.resolve('../api_integration/config.ts')); diff --git a/x-pack/test/security_api_integration/ftr_provider_context.d.ts b/x-pack/test/security_api_integration/ftr_provider_context.d.ts index 671866cad6ff5..647664d640466 100644 --- a/x-pack/test/security_api_integration/ftr_provider_context.d.ts +++ b/x-pack/test/security_api_integration/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; export type FtrProviderContext = GenericFtrProviderContext; diff --git a/x-pack/test/security_api_integration/kerberos.config.ts b/x-pack/test/security_api_integration/kerberos.config.ts index c3f647aadc6d1..7dba77e61999e 100644 --- a/x-pack/test/security_api_integration/kerberos.config.ts +++ b/x-pack/test/security_api_integration/kerberos.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/security_api_integration/kerberos_anonymous_access.config.ts b/x-pack/test/security_api_integration/kerberos_anonymous_access.config.ts index 40ec36e51f702..355f0e90bcd91 100644 --- a/x-pack/test/security_api_integration/kerberos_anonymous_access.config.ts +++ b/x-pack/test/security_api_integration/kerberos_anonymous_access.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const kerberosAPITestsConfig = await readConfigFile(require.resolve('./kerberos.config.ts')); diff --git a/x-pack/test/security_api_integration/login_selector.config.ts b/x-pack/test/security_api_integration/login_selector.config.ts index f9ef0903b39aa..a21bc0d58733e 100644 --- a/x-pack/test/security_api_integration/login_selector.config.ts +++ b/x-pack/test/security_api_integration/login_selector.config.ts @@ -8,7 +8,7 @@ import { readFileSync } from 'fs'; import { resolve } from 'path'; import { CA_CERT_PATH, KBN_CERT_PATH, KBN_KEY_PATH } from '@kbn/dev-utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const kibanaAPITestsConfig = await readConfigFile( diff --git a/x-pack/test/security_api_integration/oidc.config.ts b/x-pack/test/security_api_integration/oidc.config.ts index 05fbaa4122818..a475d77aa568b 100644 --- a/x-pack/test/security_api_integration/oidc.config.ts +++ b/x-pack/test/security_api_integration/oidc.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/security_api_integration/oidc_implicit_flow.config.ts b/x-pack/test/security_api_integration/oidc_implicit_flow.config.ts index 685b71358846e..3b9edcbec6826 100644 --- a/x-pack/test/security_api_integration/oidc_implicit_flow.config.ts +++ b/x-pack/test/security_api_integration/oidc_implicit_flow.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { const oidcAPITestsConfig = await readConfigFile(require.resolve('./oidc.config.ts')); diff --git a/x-pack/test/security_api_integration/pki.config.ts b/x-pack/test/security_api_integration/pki.config.ts index c284ddc800327..d920a4375753c 100644 --- a/x-pack/test/security_api_integration/pki.config.ts +++ b/x-pack/test/security_api_integration/pki.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { CA_CERT_PATH, KBN_CERT_PATH, KBN_KEY_PATH } from '@kbn/dev-utils'; import { services } from './services'; diff --git a/x-pack/test/security_api_integration/saml.config.ts b/x-pack/test/security_api_integration/saml.config.ts index a3e5c4a3419c8..c8de50008c3bb 100644 --- a/x-pack/test/security_api_integration/saml.config.ts +++ b/x-pack/test/security_api_integration/saml.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/security_api_integration/session_idle.config.ts b/x-pack/test/security_api_integration/session_idle.config.ts index 92549b8369365..77d91f6df3cef 100644 --- a/x-pack/test/security_api_integration/session_idle.config.ts +++ b/x-pack/test/security_api_integration/session_idle.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; // the default export of config files must be a config provider diff --git a/x-pack/test/security_api_integration/session_invalidate.config.ts b/x-pack/test/security_api_integration/session_invalidate.config.ts index 82510062035a9..7d69ca50c0320 100644 --- a/x-pack/test/security_api_integration/session_invalidate.config.ts +++ b/x-pack/test/security_api_integration/session_invalidate.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; // the default export of config files must be a config provider diff --git a/x-pack/test/security_api_integration/session_lifespan.config.ts b/x-pack/test/security_api_integration/session_lifespan.config.ts index 1dbcfbf96d551..b692f10bad5a6 100644 --- a/x-pack/test/security_api_integration/session_lifespan.config.ts +++ b/x-pack/test/security_api_integration/session_lifespan.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; // the default export of config files must be a config provider diff --git a/x-pack/test/security_api_integration/token.config.ts b/x-pack/test/security_api_integration/token.config.ts index 170d98bf5efa4..54efd77ca8ae9 100644 --- a/x-pack/test/security_api_integration/token.config.ts +++ b/x-pack/test/security_api_integration/token.config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { diff --git a/x-pack/test/security_functional/ftr_provider_context.d.ts b/x-pack/test/security_functional/ftr_provider_context.d.ts index 0225c54768af5..66d4e37b795ca 100644 --- a/x-pack/test/security_functional/ftr_provider_context.d.ts +++ b/x-pack/test/security_functional/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from '../functional/page_objects'; import { services } from '../functional/services'; diff --git a/x-pack/test/security_functional/login_selector.config.ts b/x-pack/test/security_functional/login_selector.config.ts index 6f7a2a8b3de70..e2ddf8dacb79c 100644 --- a/x-pack/test/security_functional/login_selector.config.ts +++ b/x-pack/test/security_functional/login_selector.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from '../functional/services'; import { pageObjects } from '../functional/page_objects'; diff --git a/x-pack/test/security_functional/oidc.config.ts b/x-pack/test/security_functional/oidc.config.ts index 056d7b8197c9a..db8799ba1acf7 100644 --- a/x-pack/test/security_functional/oidc.config.ts +++ b/x-pack/test/security_functional/oidc.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from '../functional/services'; import { pageObjects } from '../functional/page_objects'; diff --git a/x-pack/test/security_functional/saml.config.ts b/x-pack/test/security_functional/saml.config.ts index 50948ce6d411e..a983e2747239c 100644 --- a/x-pack/test/security_functional/saml.config.ts +++ b/x-pack/test/security_functional/saml.config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from '../functional/services'; import { pageObjects } from '../functional/page_objects'; diff --git a/x-pack/test/security_solution_cypress/cli_config.ts b/x-pack/test/security_solution_cypress/cli_config.ts index 2fc32a5210813..443c3dd423409 100644 --- a/x-pack/test/security_solution_cypress/cli_config.ts +++ b/x-pack/test/security_solution_cypress/cli_config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { SecuritySolutionCypressCliTestRunner } from './runner'; diff --git a/x-pack/test/security_solution_cypress/config.firefox.ts b/x-pack/test/security_solution_cypress/config.firefox.ts index 5d11c6d9364a1..9c9f2c2314a31 100644 --- a/x-pack/test/security_solution_cypress/config.firefox.ts +++ b/x-pack/test/security_solution_cypress/config.firefox.ts @@ -7,7 +7,7 @@ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { CA_CERT_PATH } from '@kbn/dev-utils'; diff --git a/x-pack/test/security_solution_cypress/config.ts b/x-pack/test/security_solution_cypress/config.ts index e096bafc9e262..95743369de0d7 100644 --- a/x-pack/test/security_solution_cypress/config.ts +++ b/x-pack/test/security_solution_cypress/config.ts @@ -7,7 +7,7 @@ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { CA_CERT_PATH } from '@kbn/dev-utils'; diff --git a/x-pack/test/security_solution_cypress/ftr_provider_context.d.ts b/x-pack/test/security_solution_cypress/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/security_solution_cypress/ftr_provider_context.d.ts +++ b/x-pack/test/security_solution_cypress/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/security_solution_cypress/visual_config.ts b/x-pack/test/security_solution_cypress/visual_config.ts index 489dd1e626221..b6808a4c35638 100644 --- a/x-pack/test/security_solution_cypress/visual_config.ts +++ b/x-pack/test/security_solution_cypress/visual_config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { SecuritySolutionCypressVisualTestRunner } from './runner'; diff --git a/x-pack/test/security_solution_endpoint/config.ts b/x-pack/test/security_solution_endpoint/config.ts index 77a63acc389e2..188cccac9301b 100644 --- a/x-pack/test/security_solution_endpoint/config.ts +++ b/x-pack/test/security_solution_endpoint/config.ts @@ -6,7 +6,7 @@ */ import { resolve } from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; import { diff --git a/x-pack/test/security_solution_endpoint/ftr_provider_context.d.ts b/x-pack/test/security_solution_endpoint/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/security_solution_endpoint/ftr_provider_context.d.ts +++ b/x-pack/test/security_solution_endpoint/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/security_solution_endpoint_api_int/config.ts b/x-pack/test/security_solution_endpoint_api_int/config.ts index a2eec01046161..d53365a8b6ec6 100644 --- a/x-pack/test/security_solution_endpoint_api_int/config.ts +++ b/x-pack/test/security_solution_endpoint_api_int/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { createEndpointDockerConfig, getRegistryUrlAsArray } from './registry'; import { services } from './services'; diff --git a/x-pack/test/security_solution_endpoint_api_int/ftr_provider_context.d.ts b/x-pack/test/security_solution_endpoint_api_int/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/security_solution_endpoint_api_int/ftr_provider_context.d.ts +++ b/x-pack/test/security_solution_endpoint_api_int/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/spaces_api_integration/common/config.ts b/x-pack/test/spaces_api_integration/common/config.ts index 2daebba801200..d1e4dae76b636 100644 --- a/x-pack/test/spaces_api_integration/common/config.ts +++ b/x-pack/test/spaces_api_integration/common/config.ts @@ -7,7 +7,7 @@ import path from 'path'; import { REPO_ROOT } from '@kbn/utils'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; interface CreateTestConfigOptions { license: string; diff --git a/x-pack/test/spaces_api_integration/common/ftr_provider_context.d.ts b/x-pack/test/spaces_api_integration/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/spaces_api_integration/common/ftr_provider_context.d.ts +++ b/x-pack/test/spaces_api_integration/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/ui_capabilities/common/config.ts b/x-pack/test/ui_capabilities/common/config.ts index 0c40df181ffdc..9c0ce92755e8e 100644 --- a/x-pack/test/ui_capabilities/common/config.ts +++ b/x-pack/test/ui_capabilities/common/config.ts @@ -6,7 +6,7 @@ */ import path from 'path'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/ui_capabilities/common/ftr_provider_context.d.ts b/x-pack/test/ui_capabilities/common/ftr_provider_context.d.ts index d612023be9160..aa56557c09df8 100644 --- a/x-pack/test/ui_capabilities/common/ftr_provider_context.d.ts +++ b/x-pack/test/ui_capabilities/common/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/upgrade/config.ts b/x-pack/test/upgrade/config.ts index 86555335ba47b..472b83fe7a934 100644 --- a/x-pack/test/upgrade/config.ts +++ b/x-pack/test/upgrade/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { ReportingAPIProvider } from './reporting_services'; diff --git a/x-pack/test/upgrade/ftr_provider_context.d.ts b/x-pack/test/upgrade/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/upgrade/ftr_provider_context.d.ts +++ b/x-pack/test/upgrade/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; diff --git a/x-pack/test/usage_collection/config.ts b/x-pack/test/usage_collection/config.ts index df1d1d9fd21f7..beb934219422a 100644 --- a/x-pack/test/usage_collection/config.ts +++ b/x-pack/test/usage_collection/config.ts @@ -7,7 +7,7 @@ import { resolve } from 'path'; import fs from 'fs'; -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/usage_collection/ftr_provider_context.d.ts b/x-pack/test/usage_collection/ftr_provider_context.d.ts index 2dce44a533405..13bd4b46607c4 100644 --- a/x-pack/test/usage_collection/ftr_provider_context.d.ts +++ b/x-pack/test/usage_collection/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { services } from './services'; import { pageObjects } from './page_objects'; diff --git a/x-pack/test/visual_regression/config.ts b/x-pack/test/visual_regression/config.ts index 5d36f200d149f..c211918ef8e52 100644 --- a/x-pack/test/visual_regression/config.ts +++ b/x-pack/test/visual_regression/config.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test/types/ftr'; +import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; diff --git a/x-pack/test/visual_regression/ftr_provider_context.d.ts b/x-pack/test/visual_regression/ftr_provider_context.d.ts index ec28c00e72e47..24f5087ef7fe2 100644 --- a/x-pack/test/visual_regression/ftr_provider_context.d.ts +++ b/x-pack/test/visual_regression/ftr_provider_context.d.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { GenericFtrProviderContext } from '@kbn/test/types/ftr'; +import { GenericFtrProviderContext } from '@kbn/test'; import { pageObjects } from './page_objects'; import { services } from './services'; From cbab391bbe8d2f605a14d2f171b9116e30722000 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 May 2021 18:48:41 +0100 Subject: [PATCH 135/144] skip failing es promotion suite (#99915) --- .../security_and_spaces/tests/finalize_signals_migrations.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/finalize_signals_migrations.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/finalize_signals_migrations.ts index e65086b43a377..6ab23edae9b3b 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/finalize_signals_migrations.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/finalize_signals_migrations.ts @@ -47,7 +47,8 @@ export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); const supertestWithoutAuth = getService('supertestWithoutAuth'); - describe('Finalizing signals migrations', () => { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/99915 + describe.skip('Finalizing signals migrations', () => { let legacySignalsIndexName: string; let outdatedSignalsIndexName: string; let createdMigrations: CreateResponse[]; From f1a2e6f25179bdf249626d7ed408abf250322e84 Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Mon, 17 May 2021 15:53:20 -0400 Subject: [PATCH 136/144] skip flaky suite (#100236) --- .../security_solution_endpoint/apps/endpoint/policy_details.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts index bd8ce806609b3..4c40cb005e8c4 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts @@ -21,7 +21,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const policyTestResources = getService('policyTestResources'); - describe('When on the Endpoint Policy Details Page', function () { + // Failing: See https://github.com/elastic/kibana/issues/100236 + describe.skip('When on the Endpoint Policy Details Page', function () { describe('with an invalid policy id', () => { it('should display an error', async () => { await pageObjects.policy.navigateToPolicyDetails('invalid-id'); From 7f9364ac8ac42399a86961d239964be04429649b Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Mon, 17 May 2021 21:04:35 +0100 Subject: [PATCH 137/144] [ML] Fixing use_null setting in advanced job wizard (#100028) * [ML] Fixing use_null setting in advanced job wizard * fixing types * fixing false checks for detector fields Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../job_creator/advanced_job_creator.ts | 23 ++++++++++++++----- .../common/job_creator/util/general.ts | 5 ++-- .../advanced_detector_modal.tsx | 1 + .../advanced_view/metric_selection.tsx | 7 ++++-- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts index aac36f3e4f573..45b26226def8f 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts @@ -32,6 +32,7 @@ export interface RichDetector { excludeFrequent: estypes.ExcludeFrequent | null; description: string | null; customRules: CustomRule[] | null; + useNull: boolean | null; } export class AdvancedJobCreator extends JobCreator { @@ -58,7 +59,8 @@ export class AdvancedJobCreator extends JobCreator { overField: SplitField, partitionField: SplitField, excludeFrequent: estypes.ExcludeFrequent | null, - description: string | null + description: string | null, + useNull: boolean | null ) { // addDetector doesn't support adding new custom rules. // this will be added in the future once it's supported in the UI @@ -71,7 +73,8 @@ export class AdvancedJobCreator extends JobCreator { partitionField, excludeFrequent, description, - customRules + customRules, + useNull ); this._addDetector(detector, agg, field); @@ -86,7 +89,8 @@ export class AdvancedJobCreator extends JobCreator { partitionField: SplitField, excludeFrequent: estypes.ExcludeFrequent | null, description: string | null, - index: number + index: number, + useNull: boolean | null ) { const customRules = this._detectors[index] !== undefined ? this._detectors[index].custom_rules || null : null; @@ -99,7 +103,8 @@ export class AdvancedJobCreator extends JobCreator { partitionField, excludeFrequent, description, - customRules + customRules, + useNull ); this._editDetector(detector, agg, field, index); @@ -117,7 +122,8 @@ export class AdvancedJobCreator extends JobCreator { partitionField: SplitField, excludeFrequent: estypes.ExcludeFrequent | null, description: string | null, - customRules: CustomRule[] | null + customRules: CustomRule[] | null, + useNull: boolean | null ): { detector: Detector; richDetector: RichDetector } { const detector: Detector = createBasicDetector(agg, field); @@ -139,6 +145,9 @@ export class AdvancedJobCreator extends JobCreator { if (customRules !== null) { detector.custom_rules = customRules; } + if (useNull !== null) { + detector.use_null = useNull; + } const richDetector: RichDetector = { agg, @@ -149,6 +158,7 @@ export class AdvancedJobCreator extends JobCreator { excludeFrequent, description, customRules, + useNull, }; return { detector, richDetector }; @@ -209,7 +219,8 @@ export class AdvancedJobCreator extends JobCreator { dtr.overField, dtr.partitionField, dtr.excludeFrequent, - dtr.description + dtr.description, + dtr.useNull ); } }); diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/general.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/general.ts index 3f306f9bcc996..bab6800c08335 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/general.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/general.ts @@ -79,8 +79,9 @@ export function getRichDetectors( byField, overField, partitionField, - excludeFrequent: d.exclude_frequent || null, - description: d.detector_description || null, + excludeFrequent: d.exclude_frequent ?? null, + description: d.detector_description ?? null, + useNull: d.use_null ?? null, }; }); } diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_detector_modal/advanced_detector_modal.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_detector_modal/advanced_detector_modal.tsx index d3108eef04983..2b1a35bcb8c46 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_detector_modal/advanced_detector_modal.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_detector_modal/advanced_detector_modal.tsx @@ -177,6 +177,7 @@ export const AdvancedDetectorModal: FC = ({ : null, description: descriptionOption !== '' ? descriptionOption : null, customRules: null, + useNull: null, }; setDetector(dtr); setDescriptionPlaceholder(dtr); diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/metric_selection.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/metric_selection.tsx index b4508af7803dd..8f53e1283faa0 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/metric_selection.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/components/pick_fields_step/components/advanced_view/metric_selection.tsx @@ -29,6 +29,7 @@ const emptyRichDetector: RichDetector = { excludeFrequent: null, description: null, customRules: null, + useNull: null, }; export const AdvancedDetectors: FC = ({ setIsValid }) => { @@ -51,7 +52,8 @@ export const AdvancedDetectors: FC = ({ setIsValid }) => { dtr.overField, dtr.partitionField, dtr.excludeFrequent, - dtr.description + dtr.description, + dtr.useNull ); } else { jobCreator.editDetector( @@ -62,7 +64,8 @@ export const AdvancedDetectors: FC = ({ setIsValid }) => { dtr.partitionField, dtr.excludeFrequent, dtr.description, - index + index, + dtr.useNull ); } jobCreatorUpdate(); From 6d4cca29a7e1d3e85536cf424e2c15a2f37ca251 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Mon, 17 May 2021 16:44:30 -0400 Subject: [PATCH 138/144] [Uptime] [Synthetics Integration] Add functional tests for Synthetics Integration (#100161) * add functional tests for synthetics fleet package --- .../components/fleet_package/combo_box.tsx | 3 +- .../fleet_package/custom_fields.tsx | 8 + .../fleet_package/http_advanced_fields.tsx | 12 + .../index_response_body_field.tsx | 2 +- .../fleet_package/request_body_field.tsx | 4 + .../fleet_package/tcp_advanced_fields.tsx | 11 +- .../components/fleet_package/tls_fields.tsx | 5 + x-pack/test/functional/apps/uptime/index.ts | 1 + .../apps/uptime/synthetics_integration.ts | 442 ++++++++++++++++++ x-pack/test/functional/config.js | 3 + x-pack/test/functional/page_objects/index.ts | 2 + .../synthetics_integration_page.ts | 384 +++++++++++++++ .../services/uptime/synthetics_package.ts | 176 +++++++ .../test/functional/services/uptime/uptime.ts | 3 + 14 files changed, 1052 insertions(+), 4 deletions(-) create mode 100644 x-pack/test/functional/apps/uptime/synthetics_integration.ts create mode 100644 x-pack/test/functional/page_objects/synthetics_integration_page.ts create mode 100644 x-pack/test/functional/services/uptime/synthetics_package.ts diff --git a/x-pack/plugins/uptime/public/components/fleet_package/combo_box.tsx b/x-pack/plugins/uptime/public/components/fleet_package/combo_box.tsx index 12ee154dbcac4..7a1df79b0a59a 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/combo_box.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/combo_box.tsx @@ -13,7 +13,7 @@ export interface Props { selectedOptions: string[]; } -export const ComboBox = ({ onChange, selectedOptions }: Props) => { +export const ComboBox = ({ onChange, selectedOptions, ...props }: Props) => { const [formattedSelectedOptions, setSelectedOptions] = useState< Array> >(selectedOptions.map((option) => ({ label: option, key: option }))); @@ -66,6 +66,7 @@ export const ComboBox = ({ onChange, selectedOptions }: Props) => { onChange={onOptionsChange} onSearchChange={onSearchChange} isInvalid={isInvalid} + {...props} /> ); }; diff --git a/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx b/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx index 0bc2fc8823cec..e6703a6eaa97c 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx @@ -76,6 +76,7 @@ export const CustomFields = memo( defaultMessage="Configure your monitor with the following options." /> } + data-test-subj="monitorSettingsSection" > @@ -104,6 +105,7 @@ export const CustomFields = memo( configKey: ConfigKeys.MONITOR_TYPE, }) } + data-test-subj="syntheticsMonitorTypeField" /> )} @@ -128,6 +130,7 @@ export const CustomFields = memo( onChange={(event) => handleInputChange({ value: event.target.value, configKey: ConfigKeys.URLS }) } + data-test-subj="syntheticsUrlField" /> )} @@ -155,6 +158,7 @@ export const CustomFields = memo( configKey: ConfigKeys.HOSTS, }) } + data-test-subj="syntheticsTCPHostField" /> )} @@ -182,6 +186,7 @@ export const CustomFields = memo( configKey: ConfigKeys.HOSTS, }) } + data-test-subj="syntheticsICMPHostField" /> )} @@ -268,6 +273,7 @@ export const CustomFields = memo( configKey: ConfigKeys.APM_SERVICE_NAME, }) } + data-test-subj="syntheticsAPMServiceName" /> {isHTTP && ( @@ -364,6 +370,7 @@ export const CustomFields = memo( handleInputChange({ value, configKey: ConfigKeys.TAGS })} + data-test-subj="syntheticsTags" /> @@ -385,6 +392,7 @@ export const CustomFields = memo( defaultMessage="Configure TLS options, including verification mode, certificate authorities, and client certificates." /> } + data-test-subj="syntheticsIsTLSEnabled" > (({ validate }) => { defaultMessage="Advanced HTTP options" /> } + data-test-subj="syntheticsHTTPAdvancedFieldsAccordion" > (({ validate }) => { defaultMessage="Configure an optional request to send to the remote host including method, body, and headers." /> } + data-test-subj="httpAdvancedFieldsSection" > (({ validate }) => { configKey: ConfigKeys.USERNAME, }) } + data-test-subj="syntheticsUsername" /> (({ validate }) => { configKey: ConfigKeys.PASSWORD, }) } + data-test-subj="syntheticsPassword" /> (({ validate }) => { configKey: ConfigKeys.PROXY_URL, }) } + data-test-subj="syntheticsProxyUrl" /> (({ validate }) => { configKey: ConfigKeys.REQUEST_METHOD_CHECK, }) } + data-test-subj="syntheticsRequestMethod" /> (({ validate }) => { defaultMessage="A dictionary of additional HTTP headers to send. By default the client will set the User-Agent header to identify itself." /> } + data-test-subj="syntheticsRequestHeaders" > (({ validate }) => { http.response.body.headers } + data-test-subj="syntheticsIndexResponseHeaders" > (({ validate }) => { configKey: ConfigKeys.RESPONSE_STATUS_CHECK, }) } + data-test-subj="syntheticsResponseStatusCheck" /> (({ validate }) => { defaultMessage="A list of expected response headers." /> } + data-test-subj="syntheticsResponseHeaders" > (({ validate }) => { }), [handleInputChange] )} + data-test-subj="syntheticsResponseBodyCheckPositive" /> (({ validate }) => { }), [handleInputChange] )} + data-test-subj="syntheticsResponseBodyCheckNegative" /> diff --git a/x-pack/plugins/uptime/public/components/fleet_package/index_response_body_field.tsx b/x-pack/plugins/uptime/public/components/fleet_package/index_response_body_field.tsx index a82e7a0938078..fc53b275f0828 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/index_response_body_field.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/index_response_body_field.tsx @@ -38,7 +38,7 @@ export const ResponseBodyIndexField = ({ defaultValue, onChange }: Props) => { return ( - + { { id: Mode.TEXT, name: modeLabels[Mode.TEXT], + 'data-test-subj': `syntheticsRequestBodyTab__${Mode.TEXT}`, content: ( { { id: Mode.JSON, name: modeLabels[Mode.JSON], + 'data-test-subj': `syntheticsRequestBodyTab__${Mode.JSON}`, content: ( { { id: Mode.XML, name: modeLabels[Mode.XML], + 'data-test-subj': `syntheticsRequestBodyTab__${Mode.XML}`, content: ( { { id: Mode.FORM, name: modeLabels[Mode.FORM], + 'data-test-subj': `syntheticsRequestBodyTab__${Mode.FORM}`, content: ( { ); return ( - + { configKey: ConfigKeys.PROXY_URL, }) } + data-test-subj="syntheticsProxyUrl" /> {!!fields[ConfigKeys.PROXY_URL] && ( - + { }), [handleInputChange] )} + data-test-subj="syntheticsTCPRequestSendCheck" /> @@ -166,6 +172,7 @@ export const TCPAdvancedFields = () => { }), [handleInputChange] )} + data-test-subj="syntheticsTCPResponseReceiveCheck" /> diff --git a/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx b/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx index de8879ec3a819..a2db0d99088f7 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/tls_fields.tsx @@ -139,6 +139,7 @@ export const TLSFields: React.FunctionComponent<{ }, })); }} + data-test-subj="syntheticsTLSVerificationMode" /> {fields[ConfigKeys.TLS_VERIFICATION_MODE].value === VerificationMode.NONE && ( @@ -229,6 +230,7 @@ export const TLSFields: React.FunctionComponent<{ }, })); }} + data-test-subj="syntheticsTLSCA" /> diff --git a/x-pack/test/functional/apps/uptime/index.ts b/x-pack/test/functional/apps/uptime/index.ts index f96d2d0255d2a..0b02fd2bf322b 100644 --- a/x-pack/test/functional/apps/uptime/index.ts +++ b/x-pack/test/functional/apps/uptime/index.ts @@ -59,6 +59,7 @@ export default ({ loadTestFile, getService }: FtrProviderContext) => { loadTestFile(require.resolve('./locations')); loadTestFile(require.resolve('./settings')); loadTestFile(require.resolve('./certificates')); + loadTestFile(require.resolve('./synthetics_integration')); }); describe('with generated data but no data reset', () => { diff --git a/x-pack/test/functional/apps/uptime/synthetics_integration.ts b/x-pack/test/functional/apps/uptime/synthetics_integration.ts new file mode 100644 index 0000000000000..52ec81b8bf7db --- /dev/null +++ b/x-pack/test/functional/apps/uptime/synthetics_integration.ts @@ -0,0 +1,442 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { FullAgentPolicy } from '../../../../plugins/fleet/common'; + +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const monitorName = 'Sample Synthetics integration'; + + const uptimePage = getPageObjects(['syntheticsIntegration']); + const testSubjects = getService('testSubjects'); + const uptimeService = getService('uptime'); + + const generatePolicy = ({ + agentFullPolicy, + version, + monitorType, + name, + config, + }: { + agentFullPolicy: FullAgentPolicy; + version: string; + monitorType: string; + name: string; + config: Record; + }) => ({ + data_stream: { + namespace: 'default', + }, + id: agentFullPolicy.inputs[0].id, + meta: { + package: { + name: 'synthetics', + version, + }, + }, + name, + revision: 1, + streams: [ + { + data_stream: { + dataset: monitorType, + type: 'synthetics', + }, + id: `${agentFullPolicy.inputs[0]?.streams?.[0]?.id}`, + name, + type: monitorType, + processors: [ + { + add_observer_metadata: { + geo: { + name: 'Fleet managed', + }, + }, + }, + { + add_fields: { + fields: { + 'monitor.fleet_managed': true, + }, + target: '', + }, + }, + ], + ...config, + }, + ], + type: `synthetics/${monitorType}`, + use_output: 'default', + }); + + describe('When on the Synthetics Integration Policy Create Page', function () { + this.tags(['ciGroup6']); + const basicConfig = { + name: monitorName, + apmServiceName: 'Sample APM Service', + tags: 'sample tag', + }; + + const generateHTTPConfig = (url: string) => ({ + ...basicConfig, + url, + }); + + const generateTCPorICMPConfig = (host: string) => ({ + ...basicConfig, + host, + }); + + describe('displays custom UI', () => { + before(async () => { + const version = await uptimeService.syntheticsPackage.getSyntheticsPackageVersion(); + await uptimePage.syntheticsIntegration.navigateToPackagePage(version!); + }); + + it('should display policy view', async () => { + await uptimePage.syntheticsIntegration.ensureIsOnPackagePage(); + }); + + it('prevent saving when integration name, url/host, or schedule is missing', async () => { + const saveButton = await uptimePage.syntheticsIntegration.findSaveButton(); + await saveButton.click(); + + await testSubjects.missingOrFail('packagePolicyCreateSuccessToast'); + }); + }); + + describe('create new policy', () => { + let version: string; + before(async () => { + await uptimeService.syntheticsPackage.deletePolicyByName('system-1'); + }); + + beforeEach(async () => { + version = (await uptimeService.syntheticsPackage.getSyntheticsPackageVersion())!; + await uptimePage.syntheticsIntegration.navigateToPackagePage(version!); + await uptimeService.syntheticsPackage.deletePolicyByName(monitorName); + }); + + afterEach(async () => { + await uptimeService.syntheticsPackage.deletePolicyByName(monitorName); + }); + + it('allows saving when user enters a valid integration name and url/host', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateHTTPConfig('http://elastic.co'); + await uptimePage.syntheticsIntegration.createBasicHTTPMonitorDetails(config); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'http', + config: { + max_redirects: 0, + 'response.include_body': 'on_error', + 'response.include_headers': true, + schedule: '@every 3m', + timeout: '16s', + urls: config.url, + 'service.name': config.apmServiceName, + tags: [config.tags], + 'check.request.method': 'GET', + }, + }), + ]); + }); + + it('allows enabling tls with defaults', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateHTTPConfig('http://elastic.co'); + + await uptimePage.syntheticsIntegration.createBasicHTTPMonitorDetails(config); + await uptimePage.syntheticsIntegration.enableTLS(); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'http', + config: { + max_redirects: 0, + 'check.request.method': 'GET', + 'response.include_body': 'on_error', + 'response.include_headers': true, + schedule: '@every 3m', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + timeout: '16s', + urls: config.url, + 'service.name': config.apmServiceName, + tags: [config.tags], + }, + }), + ]); + }); + + it('allows configuring tls', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateHTTPConfig('http://elastic.co'); + + const tlsConfig = { + verificationMode: 'strict', + ca: 'ca', + cert: 'cert', + certKey: 'certKey', + certKeyPassphrase: 'certKeyPassphrase', + }; + await uptimePage.syntheticsIntegration.createBasicHTTPMonitorDetails(config); + await uptimePage.syntheticsIntegration.configureTLSOptions(tlsConfig); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'http', + config: { + max_redirects: 0, + 'check.request.method': 'GET', + 'response.include_body': 'on_error', + 'response.include_headers': true, + schedule: '@every 3m', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': tlsConfig.verificationMode, + 'ssl.certificate': tlsConfig.cert, + 'ssl.certificate_authorities': tlsConfig.ca, + 'ssl.key': tlsConfig.certKey, + 'ssl.key_passphrase': tlsConfig.certKeyPassphrase, + timeout: '16s', + urls: config.url, + 'service.name': config.apmServiceName, + tags: [config.tags], + }, + }), + ]); + }); + + it('allows configuring http advanced options', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateHTTPConfig('http://elastic.co'); + + await uptimePage.syntheticsIntegration.createBasicHTTPMonitorDetails(config); + const advancedConfig = { + username: 'username', + password: 'password', + proxyUrl: 'proxyUrl', + requestMethod: 'POST', + responseStatusCheck: '204', + responseBodyCheckPositive: 'success', + responseBodyCheckNegative: 'failure', + requestHeaders: { + sampleRequestHeader1: 'sampleRequestKey1', + sampleRequestHeader2: 'sampleRequestKey2', + }, + responseHeaders: { + sampleResponseHeader1: 'sampleResponseKey1', + sampleResponseHeader2: 'sampleResponseKey2', + }, + requestBody: { + type: 'xml', + value: 'samplexml', + }, + indexResponseBody: false, + indexResponseHeaders: false, + }; + await uptimePage.syntheticsIntegration.configureHTTPAdvancedOptions(advancedConfig); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'http', + config: { + max_redirects: 0, + 'check.request.method': advancedConfig.requestMethod, + 'check.request.headers': { + 'Content-Type': 'application/xml', + ...advancedConfig.requestHeaders, + }, + 'check.response.headers': advancedConfig.responseHeaders, + 'check.response.status': [advancedConfig.responseStatusCheck], + 'check.request.body': `${advancedConfig.requestBody.value}`, // code editor adds closing tag + 'check.response.body.positive': [advancedConfig.responseBodyCheckPositive], + 'check.response.body.negative': [advancedConfig.responseBodyCheckNegative], + 'response.include_body': advancedConfig.indexResponseBody ? 'on_error' : 'never', + 'response.include_headers': advancedConfig.indexResponseHeaders, + schedule: '@every 3m', + timeout: '16s', + urls: config.url, + proxy_url: advancedConfig.proxyUrl, + username: advancedConfig.username, + password: advancedConfig.password, + 'service.name': config.apmServiceName, + tags: [config.tags], + }, + }), + ]); + }); + + it('allows saving tcp monitor when user enters a valid integration name and host+port', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateTCPorICMPConfig('smtp.gmail.com:587'); + + await uptimePage.syntheticsIntegration.createBasicTCPMonitorDetails(config); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'tcp', + config: { + proxy_use_local_resolver: false, + schedule: '@every 3m', + timeout: '16s', + hosts: config.host, + tags: [config.tags], + 'service.name': config.apmServiceName, + }, + }), + ]); + }); + + it('allows configuring tcp advanced options', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateTCPorICMPConfig('smtp.gmail.com:587'); + + await uptimePage.syntheticsIntegration.createBasicTCPMonitorDetails(config); + const advancedConfig = { + proxyUrl: 'proxyUrl', + requestSendCheck: 'body', + responseReceiveCheck: 'success', + proxyUseLocalResolver: true, + }; + await uptimePage.syntheticsIntegration.configureTCPAdvancedOptions(advancedConfig); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'tcp', + config: { + schedule: '@every 3m', + timeout: '16s', + hosts: config.host, + proxy_url: advancedConfig.proxyUrl, + proxy_use_local_resolver: advancedConfig.proxyUseLocalResolver, + 'check.receive': advancedConfig.responseReceiveCheck, + 'check.send': advancedConfig.requestSendCheck, + 'service.name': config.apmServiceName, + tags: [config.tags], + }, + }), + ]); + }); + + it('allows saving icmp monitor when user enters a valid integration name and host', async () => { + // This test ensures that updates made to the Synthetics Policy are carried all the way through + // to the generated Agent Policy that is dispatch down to the Elastic Agent. + const config = generateTCPorICMPConfig('1.1.1.1'); + + await uptimePage.syntheticsIntegration.createBasicICMPMonitorDetails(config); + await uptimePage.syntheticsIntegration.confirmAndSave(); + + await uptimePage.syntheticsIntegration.isPolicyCreatedSuccessfully(); + + const [agentPolicy] = await uptimeService.syntheticsPackage.getAgentPolicyList(); + const agentPolicyId = agentPolicy.id; + const agentFullPolicy = await uptimeService.syntheticsPackage.getFullAgentPolicy( + agentPolicyId + ); + + expect(agentFullPolicy.inputs).to.eql([ + generatePolicy({ + agentFullPolicy, + version, + name: monitorName, + monitorType: 'icmp', + config: { + schedule: '@every 3m', + timeout: '16s', + wait: '1s', + hosts: config.host, + 'service.name': config.apmServiceName, + tags: [config.tags], + }, + }), + ]); + }); + }); + }); +} diff --git a/x-pack/test/functional/config.js b/x-pack/test/functional/config.js index f171e247472f1..573350dad24d0 100644 --- a/x-pack/test/functional/config.js +++ b/x-pack/test/functional/config.js @@ -154,6 +154,9 @@ export default async function ({ readConfigFile }) { uptime: { pathname: '/app/uptime', }, + fleet: { + pathname: '/app/fleet', + }, ml: { pathname: '/app/ml', }, diff --git a/x-pack/test/functional/page_objects/index.ts b/x-pack/test/functional/page_objects/index.ts index 81c0328e76342..e83420a9cea1d 100644 --- a/x-pack/test/functional/page_objects/index.ts +++ b/x-pack/test/functional/page_objects/index.ts @@ -24,6 +24,7 @@ import { StatusPagePageProvider } from './status_page'; import { UpgradeAssistantPageProvider } from './upgrade_assistant_page'; import { RollupPageProvider } from './rollup_page'; import { UptimePageProvider } from './uptime_page'; +import { SyntheticsIntegrationPageProvider } from './synthetics_integration_page'; import { ApiKeysPageProvider } from './api_keys_page'; import { LicenseManagementPageProvider } from './license_management_page'; import { IndexManagementPageProvider } from './index_management_page'; @@ -64,6 +65,7 @@ export const pageObjects = { statusPage: StatusPagePageProvider, upgradeAssistant: UpgradeAssistantPageProvider, uptime: UptimePageProvider, + syntheticsIntegration: SyntheticsIntegrationPageProvider, rollup: RollupPageProvider, apiKeys: ApiKeysPageProvider, licenseManagement: LicenseManagementPageProvider, diff --git a/x-pack/test/functional/page_objects/synthetics_integration_page.ts b/x-pack/test/functional/page_objects/synthetics_integration_page.ts new file mode 100644 index 0000000000000..69ae3f43d26f2 --- /dev/null +++ b/x-pack/test/functional/page_objects/synthetics_integration_page.ts @@ -0,0 +1,384 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { WebElementWrapper } from 'test/functional/services/lib/web_element_wrapper'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export function SyntheticsIntegrationPageProvider({ + getService, + getPageObjects, +}: FtrProviderContext) { + const pageObjects = getPageObjects(['common', 'header']); + const testSubjects = getService('testSubjects'); + const comboBox = getService('comboBox'); + + return { + /** + * Navigates to the Synthetics Integration page + * + */ + async navigateToPackagePage(packageVersion: string) { + await pageObjects.common.navigateToUrl( + 'fleet', + `/integrations/synthetics-${packageVersion}/add-integration`, + { + shouldUseHashForSubUrl: true, + useActualUrl: true, + } + ); + await pageObjects.header.waitUntilLoadingHasFinished(); + }, + + async navigateToPackageEditPage(packageId: string, agentId: string) { + await pageObjects.common.navigateToUrl( + 'fleet', + `/policies/${agentId}/edit-integration/${packageId}`, + { + shouldUseHashForSubUrl: true, + useActualUrl: true, + } + ); + await pageObjects.header.waitUntilLoadingHasFinished(); + }, + + /** + * Finds and returns the Policy Details Page Save button + */ + async findSaveButton(isEditPage?: boolean) { + await this.ensureIsOnPackagePage(); + return await testSubjects.find( + isEditPage ? 'saveIntegration' : 'createPackagePolicySaveButton' + ); + }, + + /** + * Finds and returns the Policy Details Page Cancel Button + */ + async findCancelButton() { + await this.ensureIsOnPackagePage(); + return await testSubjects.find('policyDetailsCancelButton'); + }, + + /** + * Determines if the policy was created successfully by looking for the creation success toast + */ + async isPolicyCreatedSuccessfully() { + await testSubjects.existOrFail('packagePolicyCreateSuccessToast'); + }, + + /** + * Selects the monitor type + * @params {monitorType} the type of monitor, tcp, http, or icmp + */ + async selectMonitorType(monitorType: string) { + await testSubjects.selectValue('syntheticsMonitorTypeField', monitorType); + }, + + /** + * Fills a text input + * @params {testSubj} the testSubj of the input to fill + * @params {value} the value of the input + */ + async fillTextInputByTestSubj(testSubj: string, value: string) { + const field = await testSubjects.find(testSubj, 5000); + await field.click(); + await field.clearValue(); + await field.type(value); + }, + + /** + * Fills a text input + * @params {testSubj} the testSubj of the input to fill + * @params {value} the value of the input + */ + async fillTextInput(field: WebElementWrapper, value: string) { + await field.click(); + await field.clearValue(); + await field.type(value); + }, + + /** + * Fills a text input + * @params {testSubj} the testSubj of the comboBox + */ + async setComboBox(testSubj: string, value: string) { + await comboBox.setCustom(`${testSubj} > comboBoxInput`, value); + }, + + /** + * Finds and returns the HTTP advanced options accordion trigger + */ + async findHTTPAdvancedOptionsAccordion() { + await this.ensureIsOnPackagePage(); + const accordion = await testSubjects.find('syntheticsHTTPAdvancedFieldsAccordion', 5000); + return accordion; + }, + + /** + * Finds and returns the enable TLS checkbox + */ + async findEnableTLSCheckbox() { + await this.ensureIsOnPackagePage(); + const tlsCheckboxContainer = await testSubjects.find('syntheticsIsTLSEnabled'); + return await tlsCheckboxContainer.findByCssSelector('label'); + }, + + /** + * ensures that the package page is the currently display view + */ + async ensureIsOnPackagePage() { + await testSubjects.existOrFail('monitorSettingsSection'); + }, + + /** + * Clicks save button and confirms update on the Policy Details page + */ + async confirmAndSave(isEditPage?: boolean) { + await this.ensureIsOnPackagePage(); + const saveButton = await this.findSaveButton(isEditPage); + saveButton.click(); + }, + + /** + * Fills in the username and password field + * @params username {string} the value of the username + * @params password {string} the value of the password + */ + async configureUsernameAndPassword({ username, password }: Record) { + await this.fillTextInputByTestSubj('syntheticsUsername', username); + await this.fillTextInputByTestSubj('syntheticsPassword', password); + }, + + /** + * + * Configures request headers + * @params headers {string} an object containing desired headers + * + */ + async configureRequestHeaders(headers: Record) { + await this.configureHeaders('syntheticsRequestHeaders', headers); + }, + + /** + * + * Configures response headers + * @params headers {string} an object containing desired headers + * + */ + async configureResponseHeaders(headers: Record) { + await this.configureHeaders('syntheticsResponseHeaders', headers); + }, + + /** + * + * Configures headers + * @params testSubj {string} test subj + * @params headers {string} an object containing desired headers + * + */ + async configureHeaders(testSubj: string, headers: Record) { + const headersContainer = await testSubjects.find(testSubj); + const addHeaderButton = await headersContainer.findByCssSelector('button'); + const keys = Object.keys(headers); + + await Promise.all( + keys.map(async (key, index) => { + await addHeaderButton.click(); + const keyField = await headersContainer.findByCssSelector( + `[data-test-subj="keyValuePairsKey${index}"]` + ); + const valueField = await headersContainer.findByCssSelector( + `[data-test-subj="keyValuePairsValue${index}"]` + ); + await this.fillTextInput(keyField, key); + await this.fillTextInput(valueField, headers[key]); + }) + ); + }, + + /** + * + * Configures request body + * @params contentType {string} contentType of the request body + * @params value {string} value of the request body + * + */ + async configureRequestBody(testSubj: string, value: string) { + await testSubjects.click(`syntheticsRequestBodyTab__${testSubj}`); + const codeEditorContainer = await testSubjects.find('codeEditorContainer'); + const textArea = await codeEditorContainer.findByCssSelector('textarea'); + await textArea.clearValue(); + await textArea.type(value); + }, + + /** + * Creates basic common monitor details + * @params name {string} the name of the monitor + * @params url {string} the url of the monitor + * + */ + async createBasicMonitorDetails({ name, apmServiceName, tags }: Record) { + await this.fillTextInputByTestSubj('packagePolicyNameInput', name); + await this.fillTextInputByTestSubj('syntheticsAPMServiceName', apmServiceName); + await this.setComboBox('syntheticsTags', tags); + }, + + /** + * Fills in the fields to create a basic HTTP monitor + * @params name {string} the name of the monitor + * @params url {string} the url of the monitor + * + */ + async createBasicHTTPMonitorDetails({ + name, + url, + apmServiceName, + tags, + }: Record) { + await this.createBasicMonitorDetails({ name, apmServiceName, tags }); + await this.fillTextInputByTestSubj('syntheticsUrlField', url); + }, + + /** + * Fills in the fields to create a basic TCP monitor + * @params name {string} the name of the monitor + * @params host {string} the host (and port) of the monitor + * + */ + async createBasicTCPMonitorDetails({ + name, + host, + apmServiceName, + tags, + }: Record) { + await this.selectMonitorType('tcp'); + await this.createBasicMonitorDetails({ name, apmServiceName, tags }); + await this.fillTextInputByTestSubj('syntheticsTCPHostField', host); + }, + + /** + * Creates a basic ICMP monitor + * @params name {string} the name of the monitor + * @params host {string} the host of the monitor + */ + async createBasicICMPMonitorDetails({ + name, + host, + apmServiceName, + tags, + }: Record) { + await this.selectMonitorType('icmp'); + await this.fillTextInputByTestSubj('packagePolicyNameInput', name); + await this.createBasicMonitorDetails({ name, apmServiceName, tags }); + await this.fillTextInputByTestSubj('syntheticsICMPHostField', host); + }, + + /** + * Enables TLS + */ + async enableTLS() { + const tlsCheckbox = await this.findEnableTLSCheckbox(); + await tlsCheckbox.click(); + }, + + /** + * Configures TLS settings + * @params verificationMode {string} the name of the monitor + */ + async configureTLSOptions({ + verificationMode, + ca, + cert, + certKey, + certKeyPassphrase, + }: Record) { + await this.enableTLS(); + await testSubjects.selectValue('syntheticsTLSVerificationMode', verificationMode); + await this.fillTextInputByTestSubj('syntheticsTLSCA', ca); + await this.fillTextInputByTestSubj('syntheticsTLSCert', cert); + await this.fillTextInputByTestSubj('syntheticsTLSCertKey', certKey); + await this.fillTextInputByTestSubj('syntheticsTLSCertKeyPassphrase', certKeyPassphrase); + }, + + /** + * Configure http advanced settings + */ + async configureHTTPAdvancedOptions({ + username, + password, + proxyUrl, + requestMethod, + requestHeaders, + responseStatusCheck, + responseBodyCheckPositive, + responseBodyCheckNegative, + requestBody, + responseHeaders, + indexResponseBody, + indexResponseHeaders, + }: { + username: string; + password: string; + proxyUrl: string; + requestMethod: string; + responseStatusCheck: string; + responseBodyCheckPositive: string; + responseBodyCheckNegative: string; + requestBody: { value: string; type: string }; + requestHeaders: Record; + responseHeaders: Record; + indexResponseBody: boolean; + indexResponseHeaders: boolean; + }) { + await testSubjects.click('syntheticsHTTPAdvancedFieldsAccordion'); + await this.configureResponseHeaders(responseHeaders); + await this.configureRequestHeaders(requestHeaders); + await this.configureRequestBody(requestBody.type, requestBody.value); + await this.configureUsernameAndPassword({ username, password }); + await this.setComboBox('syntheticsResponseStatusCheck', responseStatusCheck); + await this.setComboBox('syntheticsResponseBodyCheckPositive', responseBodyCheckPositive); + await this.setComboBox('syntheticsResponseBodyCheckNegative', responseBodyCheckNegative); + await this.fillTextInputByTestSubj('syntheticsProxyUrl', proxyUrl); + await testSubjects.selectValue('syntheticsRequestMethod', requestMethod); + if (!indexResponseBody) { + const field = await testSubjects.find('syntheticsIndexResponseBody'); + const label = await field.findByCssSelector('label'); + await label.click(); + } + if (!indexResponseHeaders) { + const field = await testSubjects.find('syntheticsIndexResponseHeaders'); + const label = await field.findByCssSelector('label'); + await label.click(); + } + }, + + /** + * Configure tcp advanced settings + */ + async configureTCPAdvancedOptions({ + proxyUrl, + requestSendCheck, + responseReceiveCheck, + proxyUseLocalResolver, + }: { + proxyUrl: string; + requestSendCheck: string; + responseReceiveCheck: string; + proxyUseLocalResolver: boolean; + }) { + await testSubjects.click('syntheticsTCPAdvancedFieldsAccordion'); + await this.fillTextInputByTestSubj('syntheticsProxyUrl', proxyUrl); + await this.fillTextInputByTestSubj('syntheticsTCPRequestSendCheck', requestSendCheck); + await this.fillTextInputByTestSubj('syntheticsTCPResponseReceiveCheck', responseReceiveCheck); + if (proxyUseLocalResolver) { + const field = await testSubjects.find('syntheticsUseLocalResolver'); + const label = await field.findByCssSelector('label'); + await label.click(); + } + }, + }; +} diff --git a/x-pack/test/functional/services/uptime/synthetics_package.ts b/x-pack/test/functional/services/uptime/synthetics_package.ts new file mode 100644 index 0000000000000..78d0fcd61fde4 --- /dev/null +++ b/x-pack/test/functional/services/uptime/synthetics_package.ts @@ -0,0 +1,176 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../ftr_provider_context'; +import { + PACKAGE_POLICY_SAVED_OBJECT_TYPE, + DeletePackagePoliciesRequest, + GetPackagePoliciesResponse, + GetFullAgentPolicyResponse, + GetPackagesResponse, + GetAgentPoliciesResponse, +} from '../../../../plugins/fleet/common'; + +const INGEST_API_ROOT = '/api/fleet'; +const INGEST_API_AGENT_POLICIES = `${INGEST_API_ROOT}/agent_policies`; +const INGEST_API_PACKAGE_POLICIES = `${INGEST_API_ROOT}/package_policies`; +const INGEST_API_PACKAGE_POLICIES_DELETE = `${INGEST_API_PACKAGE_POLICIES}/delete`; +const INGEST_API_EPM_PACKAGES = `${INGEST_API_ROOT}/epm/packages`; + +export function SyntheticsPackageProvider({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const log = getService('log'); + const retry = getService('retry'); + + const logSupertestApiErrorAndThrow = (message: string, error: any): never => { + const responseBody = error?.response?.body; + const responseText = error?.response?.text; + log.error(`Error occurred at ${Date.now()} | ${new Date().toISOString()}`); + log.error(JSON.stringify(responseBody || responseText, null, 2)); + log.error(error); + throw new Error(message); + }; + const retrieveSyntheticsPackageInfo = (() => { + // Retrieve information about the Synthetics package + // EPM does not currently have an API to get the "lastest" information for a page given its name, + // so we'll retrieve a list of packages and then find the package info in the list. + let apiRequest: Promise; + + return () => { + if (!apiRequest) { + log.info(`Setting up call to retrieve Synthetics package`); + + // Currently (as of 2020-june) the package registry used in CI is the public one and + // at times it encounters network connection issues. We use `retry.try` below to see if + // subsequent requests get through. + apiRequest = retry.try(() => { + return supertest + .get(INGEST_API_EPM_PACKAGES) + .set('kbn-xsrf', 'xxx') + .expect(200) + .catch((error) => { + return logSupertestApiErrorAndThrow(`Unable to retrieve packages via Ingest!`, error); + }) + .then((response: { body: GetPackagesResponse }) => { + const { body } = response; + const syntheticsPackageInfo = body.response.find( + (epmPackage) => epmPackage.name === 'synthetics' + ); + if (!syntheticsPackageInfo) { + throw new Error( + `Synthetics package was not in response from ${INGEST_API_EPM_PACKAGES}` + ); + } + return Promise.resolve(syntheticsPackageInfo); + }); + }); + } else { + log.info('Using cached retrieval of synthetics package'); + } + return apiRequest; + }; + })(); + + return { + /** + * Returns the synthetics package version for the currently installed package. This version can then + * be used to build URLs for Fleet pages or APIs + */ + async getSyntheticsPackageVersion() { + const syntheticsPackage = await retrieveSyntheticsPackageInfo()!; + + return syntheticsPackage?.version; + }, + + /** + * Retrieves the full Agent policy by id, which mirrors what the Elastic Agent would get + * once they checkin. + */ + async getFullAgentPolicy(agentPolicyId: string): Promise { + let fullAgentPolicy: GetFullAgentPolicyResponse['item']; + try { + const apiResponse: { body: GetFullAgentPolicyResponse } = await supertest + .get(`${INGEST_API_AGENT_POLICIES}/${agentPolicyId}/full`) + .expect(200); + + fullAgentPolicy = apiResponse.body.item; + } catch (error) { + return logSupertestApiErrorAndThrow('Unable to get full Agent policy', error); + } + + return fullAgentPolicy!; + }, + + /** + * Retrieves all the agent policies. + */ + async getAgentPolicyList(): Promise { + let agentPolicyList: GetAgentPoliciesResponse['items']; + try { + const apiResponse: { body: GetAgentPoliciesResponse } = await supertest + .get(INGEST_API_AGENT_POLICIES) + .expect(200); + + agentPolicyList = apiResponse.body.items; + } catch (error) { + return logSupertestApiErrorAndThrow('Unable to get full Agent policy list', error); + } + + return agentPolicyList!; + }, + + /** + * Deletes a policy (Package Policy) by using the policy name + * @param name + */ + async deletePolicyByName(name: string) { + const id = await this.getPackagePolicyIdByName(name); + + if (id) { + try { + const deletePackagePolicyData: DeletePackagePoliciesRequest['body'] = { + packagePolicyIds: [id], + }; + await supertest + .post(INGEST_API_PACKAGE_POLICIES_DELETE) + .set('kbn-xsrf', 'xxx') + .send(deletePackagePolicyData) + .expect(200); + } catch (error) { + logSupertestApiErrorAndThrow( + `Unable to delete Package Policy via Ingest! ${name}`, + error + ); + } + } + }, + + /** + * Gets the policy id (Package Policy) by using the policy name + * @param name + */ + async getPackagePolicyIdByName(name: string) { + const { + body: packagePoliciesResponse, + }: { body: GetPackagePoliciesResponse } = await supertest + .get(INGEST_API_PACKAGE_POLICIES) + .set('kbn-xsrf', 'xxx') + .query({ kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.name: ${name}` }) + .send() + .expect(200); + const packagePolicyList: GetPackagePoliciesResponse['items'] = packagePoliciesResponse.items; + + if (packagePolicyList.length > 1) { + throw new Error(`Found ${packagePolicyList.length} Policies - was expecting only one!`); + } + + if (packagePolicyList.length) { + return packagePolicyList[0].id; + } + }, + }; +} diff --git a/x-pack/test/functional/services/uptime/uptime.ts b/x-pack/test/functional/services/uptime/uptime.ts index b345be012968d..1f808d4e5939a 100644 --- a/x-pack/test/functional/services/uptime/uptime.ts +++ b/x-pack/test/functional/services/uptime/uptime.ts @@ -15,6 +15,7 @@ import { UptimeAlertsProvider } from './alerts'; import { UptimeMLAnomalyProvider } from './ml_anomaly'; import { UptimeCertProvider } from './certificates'; import { UptimeOverviewProvider } from './overview'; +import { SyntheticsPackageProvider } from './synthetics_package'; export function UptimeProvider(context: FtrProviderContext) { const common = UptimeCommonProvider(context); @@ -25,6 +26,7 @@ export function UptimeProvider(context: FtrProviderContext) { const ml = UptimeMLAnomalyProvider(context); const cert = UptimeCertProvider(context); const overview = UptimeOverviewProvider(context); + const syntheticsPackage = SyntheticsPackageProvider(context); return { common, @@ -35,5 +37,6 @@ export function UptimeProvider(context: FtrProviderContext) { ml, cert, overview, + syntheticsPackage, }; } From e15b887e4376ec3431eddedc9dab80ca305779e3 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Mon, 17 May 2021 23:28:06 -0600 Subject: [PATCH 139/144] [Security Solutions] Replaces most deprecated io-ts alerting and list types (#100234) ## Summary Replaces most of the deprecated io-ts alerting and list types within securitysolution as part of Phase 3 of 4 phases outlined in earlier PR's such as https://github.com/elastic/kibana/pull/99260 ### Checklist - [x] [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 --- .../src/get_index_aliases/index.ts | 7 +- .../src/get_index_count/index.ts | 7 +- .../src/index.ts | 3 + .../src/read_index/index.ts | 7 +- .../src/from/index.ts | 3 + .../src/index.ts | 2 + .../src/language/index.ts | 3 + .../src/machine_learning_job_id/index.ts | 19 + .../src/max_signals/index.ts | 3 + .../src/risk_score/index.ts | 8 + .../src/risk_score_mapping/index.ts | 8 +- .../src/threat/index.ts | 3 + .../src/threat_subtechnique/index.ts | 2 + .../src/threat_technique/index.ts | 2 + .../src/type/index.ts | 22 + .../src/index.ts | 2 - .../src/type/index.ts | 1 + .../src/default_version_number/index.test.ts | 0 .../src/default_version_number/index.ts | 0 .../src/index.ts | 2 + .../src/version/index.ts | 5 +- .../exceptions/build_exceptions_filter.ts | 6 +- .../plugins/lists/common/exceptions/utils.ts | 2 +- .../lists/common/schemas/common/schemas.ts | 18 - .../request/create_exception_list_schema.ts | 8 +- .../schemas/request/create_list_schema.ts | 8 +- .../schemas/request/patch_list_schema.ts | 3 +- .../request/update_exception_list_schema.ts | 3 +- .../schemas/request/update_list_schema.ts | 3 +- .../schemas/response/exception_list_schema.ts | 2 +- .../common/schemas/response/list_schema.ts | 2 +- x-pack/plugins/lists/common/shared_exports.ts | 5 +- .../builder/exception_items_renderer.tsx | 2 +- .../exceptions/components/builder/helpers.ts | 2 +- x-pack/plugins/lists/public/index.ts | 6 +- .../elastic_query/index_es_list_schema.ts | 2 +- .../elastic_response/search_es_list_schema.ts | 2 +- .../exceptions_list_so_schema.ts | 2 +- .../create_endoint_event_filters_list.ts | 3 +- .../exception_lists/create_endpoint_list.ts | 3 +- .../create_endpoint_trusted_apps_list.ts | 3 +- .../exception_lists/create_exception_list.ts | 3 +- .../exception_list_client_types.ts | 4 +- .../exception_lists/update_exception_list.ts | 2 +- .../items/write_lines_to_bulk_list_items.ts | 2 +- .../server/services/lists/create_list.ts | 2 +- .../lists/create_list_if_it_does_not_exist.ts | 2 +- .../services/lists/list_client_types.ts | 3 +- .../server/services/lists/update_list.ts | 3 +- .../common/add_remove_id_to_item.test.ts | 77 --- .../common/add_remove_id_to_item.ts | 50 -- .../detection_engine/get_query_filter.ts | 3 +- .../schemas/common/schemas.ts | 452 +----------------- .../request/add_prepackaged_rules_schema.ts | 77 ++- .../add_prepackged_rules_schema.test.ts | 3 +- .../request/create_rules_bulk_schema.test.ts | 4 +- .../create_signals_migration_schema.ts | 2 +- .../request/export_rules_schema.test.ts | 3 +- .../schemas/request/export_rules_schema.ts | 5 +- .../schemas/request/find_rules_schema.test.ts | 3 +- .../schemas/request/find_rules_schema.ts | 3 +- .../get_signals_migration_status_schema.ts | 2 +- .../request/import_rules_schema.test.ts | 3 +- .../schemas/request/import_rules_schema.ts | 83 ++-- .../request/patch_rules_bulk_schema.test.ts | 4 +- .../request/patch_rules_schema.test.ts | 3 +- .../schemas/request/patch_rules_schema.ts | 50 +- .../request/query_rules_bulk_schema.test.ts | 4 +- .../request/query_rules_schema.test.ts | 3 +- .../query_signals_index_schema.test.ts | 3 +- .../request/query_signals_index_schema.ts | 2 +- .../schemas/request/rule_schemas.test.ts | 3 +- .../schemas/request/rule_schemas.ts | 27 +- .../request/set_signal_status_schema.test.ts | 3 +- .../request/update_rules_bulk_schema.test.ts | 4 +- .../schemas/response/error_schema.test.ts | 3 +- .../response/import_rules_schema.test.ts | 3 +- .../response/prepackaged_rules_schema.test.ts | 3 +- .../prepackaged_rules_status_schema.test.ts | 3 +- .../response/rules_bulk_schema.test.ts | 3 +- .../schemas/response/rules_schema.test.ts | 5 +- .../schemas/response/rules_schema.ts | 52 +- .../type_timeline_only_schema.test.ts | 3 +- .../response/type_timeline_only_schema.ts | 3 +- .../types/deafult_boolean_true.test.ts | 51 -- .../schemas/types/deafult_from_string.test.ts | 42 -- .../types/default_actions_array.test.ts | 57 --- .../schemas/types/default_actions_array.ts | 23 - .../schemas/types/default_array.test.ts | 81 ---- .../schemas/types/default_array.ts | 27 -- .../types/default_boolean_false.test.ts | 51 -- .../schemas/types/default_boolean_false.ts | 22 - .../schemas/types/default_boolean_true.ts | 22 - .../types/default_empty_string.test.ts | 42 -- .../schemas/types/default_empty_string.ts | 22 - .../types/default_export_file_name.test.ts | 42 -- .../schemas/types/default_export_file_name.ts | 22 - .../schemas/types/default_from_string.ts | 26 - .../types/default_interval_string.test.ts | 42 -- .../schemas/types/default_interval_string.ts | 22 - .../types/default_language_string.test.ts | 43 -- .../schemas/types/default_language_string.ts | 23 - .../types/default_max_signals_number.test.ts | 65 --- .../types/default_max_signals_number.ts | 27 -- .../schemas/types/default_page.test.ts | 84 ---- .../schemas/types/default_page.ts | 32 -- .../schemas/types/default_per_page.test.ts | 84 ---- .../schemas/types/default_per_page.ts | 32 -- .../types/default_risk_score_mapping_array.ts | 27 -- .../types/default_severity_mapping_array.ts | 27 -- .../types/default_string_array.test.ts | 51 -- .../schemas/types/default_string_array.ts | 23 - .../default_string_boolean_false.test.ts | 100 ---- .../types/default_string_boolean_false.ts | 34 -- .../types/default_threat_array.test.ts | 65 --- .../schemas/types/default_threat_array.ts | 23 - .../types/default_throttle_null.test.ts | 43 -- .../schemas/types/default_throttle_null.ts | 23 - .../schemas/types/default_to_string.test.ts | 42 -- .../schemas/types/default_to_string.ts | 22 - .../schemas/types/default_uuid.test.ts | 42 -- .../schemas/types/default_uuid.ts | 26 - .../types/default_version_number.test.ts | 64 --- .../schemas/types/default_version_number.ts | 25 - .../detection_engine/schemas/types/index.ts | 40 -- .../schemas/types/iso_date_string.test.ts | 55 --- .../schemas/types/iso_date_string.ts | 38 -- .../schemas/types/lists.mock.ts | 2 +- .../schemas/types/lists.test.ts | 134 ------ .../detection_engine/schemas/types/lists.ts | 30 -- .../schemas/types/lists_default_array.test.ts | 64 --- .../schemas/types/lists_default_array.ts | 24 - .../schemas/types/non_empty_array.test.ts | 95 ---- .../schemas/types/non_empty_array.ts | 32 -- .../schemas/types/non_empty_string.test.ts | 55 --- .../schemas/types/non_empty_string.ts | 29 -- .../schemas/types/normalized_ml_job_id.ts | 36 -- .../schemas/types/only_false_allowed.test.ts | 53 -- .../schemas/types/only_false_allowed.ts | 33 -- .../schemas/types/positive_integer.ts | 26 - ...positive_integer_greater_than_zero.test.ts | 55 --- .../positive_integer_greater_than_zero.ts | 26 - .../schemas/types/postive_integer.test.ts | 53 -- .../types/references_default_array.test.ts | 51 -- .../schemas/types/references_default_array.ts | 22 - .../schemas/types/risk_score.test.ts | 60 --- .../schemas/types/risk_score.ts | 28 -- .../schemas/types/threat.mock.ts | 2 +- .../schemas/types/threat_mapping.test.ts | 236 --------- .../schemas/types/threat_mapping.ts | 214 --------- .../schemas/types/uuid.test.ts | 42 -- .../detection_engine/schemas/types/uuid.ts | 30 -- .../common/detection_engine/utils.ts | 3 +- .../common/exact_check.test.ts | 177 ------- .../security_solution/common/exact_check.ts | 94 ---- .../common/format_errors.test.ts | 188 -------- .../security_solution/common/format_errors.ts | 35 -- .../plugins/security_solution/common/index.ts | 2 - .../common/machine_learning/helpers.ts | 2 +- .../common/shared_exports.ts | 20 - .../common/shared_imports.ts | 3 - .../security_solution/common/test_utils.ts | 61 --- .../common/types/timeline/index.ts | 2 +- .../security_solution/common/validate.test.ts | 49 -- .../security_solution/common/validate.ts | 55 --- .../autocomplete/field_value_lists.test.tsx | 6 +- .../autocomplete/field_value_lists.tsx | 2 +- .../common/components/autocomplete/helpers.ts | 2 +- .../exceptions/add_exception_modal/index.tsx | 7 +- .../exceptions/edit_exception_modal/index.tsx | 7 +- .../components/exceptions/error_callout.tsx | 2 +- .../common/components/exceptions/types.ts | 13 +- .../exceptions/use_add_exception.test.tsx | 4 +- .../exceptions/use_add_exception.tsx | 2 +- ...tch_or_create_rule_exception_list.test.tsx | 3 +- ...se_fetch_or_create_rule_exception_list.tsx | 4 +- .../exception_item/exception_details.tsx | 4 +- .../viewer/exception_item/index.tsx | 4 +- .../viewer/exceptions_viewer_items.tsx | 4 +- .../components/exceptions/viewer/helpers.tsx | 4 +- .../exceptions/viewer/index.test.tsx | 4 +- .../components/exceptions/viewer/index.tsx | 2 +- .../components/exceptions/viewer/reducer.ts | 6 +- .../common/components/links/index.test.tsx | 2 +- .../markdown_editor/renderer.test.tsx | 2 +- .../threat_match/entry_delete_button.test.tsx | 2 +- .../components/threat_match/helpers.test.tsx | 2 +- .../components/threat_match/helpers.tsx | 8 +- .../common/components/threat_match/index.tsx | 2 +- .../components/threat_match/reducer.test.ts | 2 +- .../common/components/threat_match/types.ts | 2 +- .../rules/description_step/helpers.tsx | 4 +- .../rules/description_step/index.tsx | 3 +- .../rules/description_step/types.ts | 2 +- .../components/rules/mitre/helpers.ts | 2 +- .../components/rules/mitre/index.tsx | 2 +- .../rules/mitre/subtechnique_fields.tsx | 5 +- .../rules/mitre/technique_fields.tsx | 5 +- .../components/rules/query_preview/helpers.ts | 2 +- .../components/rules/query_preview/index.tsx | 2 +- .../components/rules/query_preview/reducer.ts | 2 +- .../rules/risk_score_mapping/index.tsx | 2 +- .../rules/select_rule_type/index.tsx | 2 +- .../rules/severity_mapping/index.tsx | 10 +- .../components/rules/step_about_rule/data.tsx | 2 +- .../detection_engine/rules/transforms.ts | 2 +- .../detection_engine/rules/types.ts | 27 +- .../rules/use_dissasociate_exception_list.tsx | 2 +- .../detections/mitre/valid_threat_mock.ts | 2 +- .../rules/create/helpers.test.ts | 4 +- .../detection_engine/rules/create/helpers.ts | 20 +- .../pages/detection_engine/rules/helpers.tsx | 12 +- .../pages/detection_engine/rules/types.ts | 20 +- .../public/lists_plugin_deps.ts | 10 - .../network/components/port/index.test.tsx | 2 +- .../source_destination/index.test.tsx | 2 +- .../source_destination_ip.test.tsx | 2 +- .../certificate_fingerprint/index.test.tsx | 2 +- .../components/ja3_fingerprint/index.test.tsx | 2 +- .../components/netflow/index.test.tsx | 2 +- .../body/renderers/get_row_renderer.test.tsx | 2 +- .../suricata/suricata_details.test.tsx | 2 +- .../suricata/suricata_row_renderer.test.tsx | 2 +- .../system/generic_row_renderer.test.tsx | 2 +- .../body/renderers/zeek/zeek_details.test.tsx | 2 +- .../renderers/zeek/zeek_row_renderer.test.tsx | 2 +- .../renderers/zeek/zeek_signature.test.tsx | 2 +- .../server/endpoint/lib/artifacts/lists.ts | 2 +- .../server/endpoint/lib/artifacts/manifest.ts | 2 +- .../endpoint/routes/trusted_apps/mapping.ts | 2 +- .../endpoint/schemas/artifacts/lists.ts | 2 +- .../services/artifacts/manifest_client.ts | 2 +- .../errors/bad_request_error.ts | 8 - .../index/create_bootstrap_index.ts | 34 -- .../index/delete_all_index.ts | 51 -- .../detection_engine/index/delete_policy.ts | 23 - .../detection_engine/index/delete_template.ts | 21 - .../index/get_index_exists.test.ts | 61 --- .../index/get_index_exists.ts | 34 -- .../index/get_policy_exists.ts | 33 -- .../index/get_template_exists.ts | 22 - .../lib/detection_engine/index/set_policy.ts | 25 - .../detection_engine/index/set_template.ts | 24 - .../create_migration_saved_object.ts | 2 +- .../migrations/finalize_migration.test.ts | 4 +- .../migrations/finalize_migration.ts | 2 +- .../find_migration_saved_objects.ts | 2 +- .../get_migration_saved_objects_by_id.ts | 2 +- .../migrations/saved_objects_schema.ts | 2 +- .../update_migration_saved_object.ts | 2 +- .../routes/index/create_index_route.ts | 15 +- .../routes/index/delete_index_route.ts | 17 +- .../routes/index/get_index_version.ts | 2 +- .../routes/index/read_index_route.ts | 5 +- .../privileges/read_privileges_route.ts | 4 +- .../rules/add_prepackaged_rules_route.ts | 6 +- .../routes/rules/create_rules_bulk_route.ts | 4 +- .../routes/rules/create_rules_route.ts | 5 +- .../routes/rules/delete_rules_bulk_route.ts | 2 +- .../routes/rules/delete_rules_route.ts | 4 +- .../routes/rules/export_rules_route.ts | 3 +- .../routes/rules/find_rules_route.ts | 4 +- .../routes/rules/find_rules_status_route.ts | 4 +- .../get_prepackaged_rules_status_route.ts | 6 +- .../routes/rules/import_rules_route.ts | 6 +- .../routes/rules/patch_rules_bulk_route.ts | 2 +- .../routes/rules/patch_rules_route.ts | 4 +- .../routes/rules/read_rules_route.ts | 4 +- .../routes/rules/update_rules_bulk_route.ts | 2 +- .../routes/rules/update_rules_route.ts | 4 +- .../routes/rules/utils.test.ts | 2 +- .../detection_engine/routes/rules/validate.ts | 2 +- .../create_signals_migration_route.test.ts | 10 +- .../signals/create_signals_migration_route.ts | 6 +- .../signals/delete_signals_migration_route.ts | 4 +- .../finalize_signals_migration_route.ts | 5 +- .../get_signals_migration_status_route.ts | 4 +- .../signals/open_close_signals_route.ts | 4 +- .../routes/signals/query_signals_route.ts | 3 +- .../routes/tags/read_tags_route.ts | 4 +- .../lib/detection_engine/routes/utils.test.ts | 93 +--- .../lib/detection_engine/routes/utils.ts | 43 +- .../create_rules_stream_from_ndjson.test.ts | 2 +- .../rules/create_rules_stream_from_ndjson.ts | 5 +- .../rules/get_prepackaged_rules.ts | 5 +- .../lib/detection_engine/rules/patch_rules.ts | 2 +- .../lib/detection_engine/rules/types.ts | 62 +-- .../lib/detection_engine/rules/utils.ts | 42 +- .../detection_engine/schemas/rule_schemas.ts | 27 +- .../detection_engine/signals/filters/types.ts | 3 +- .../detection_engine/signals/get_filter.ts | 6 +- .../build_risk_score_from_mapping.test.ts | 5 +- .../mappings/build_risk_score_from_mapping.ts | 7 +- .../build_severity_from_mapping.test.ts | 6 +- .../mappings/build_severity_from_mapping.ts | 5 +- .../signals/signal_rule_alert_type.ts | 2 +- .../build_threat_mapping_filter.mock.ts | 2 +- .../build_threat_mapping_filter.test.ts | 5 +- .../build_threat_mapping_filter.ts | 2 +- .../signals/threat_mapping/types.ts | 10 +- .../lib/detection_engine/signals/utils.ts | 2 +- .../server/lib/detection_engine/types.ts | 43 +- .../server/lib/machine_learning/authz.ts | 3 +- .../clean_draft_timelines/index.ts | 4 +- .../get_draft_timelines/index.ts | 4 +- .../lib/timeline/routes/notes/persist_note.ts | 3 +- .../pinned_events/persist_pinned_event.ts | 3 +- .../install_prepackaged_timelines/index.ts | 5 +- .../timelines/create_timelines/index.ts | 3 +- .../timelines/delete_timelines/index.ts | 4 +- .../timelines/export_timelines/index.ts | 3 +- .../routes/timelines/get_timeline/index.ts | 3 +- .../routes/timelines/get_timelines/index.ts | 3 +- .../create_timelines_stream_from_ndjson.ts | 2 +- .../timelines/import_timelines/helpers.ts | 2 +- .../timelines/import_timelines/index.ts | 3 +- .../routes/timelines/patch_timelines/index.ts | 3 +- .../timelines/persist_favorite/index.ts | 3 +- .../server/lib/timeline/utils/common.ts | 28 +- .../build_validation/route_validation.ts | 3 +- .../read_stream/create_stream_from_ndjson.ts | 5 +- .../detection_engine_api_integration/utils.ts | 2 +- x-pack/test/lists_api_integration/utils.ts | 2 +- 323 files changed, 719 insertions(+), 5578 deletions(-) rename x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_aliases.ts => packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts (80%) rename x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_count.ts => packages/kbn-securitysolution-es-utils/src/get_index_count/index.ts (71%) rename x-pack/plugins/security_solution/server/lib/detection_engine/index/read_index.ts => packages/kbn-securitysolution-es-utils/src/read_index/index.ts (55%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/src/machine_learning_job_id/index.ts create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/src/type/index.ts rename packages/{kbn-securitysolution-io-ts-list-types => kbn-securitysolution-io-ts-types}/src/default_version_number/index.test.ts (100%) rename packages/{kbn-securitysolution-io-ts-list-types => kbn-securitysolution-io-ts-types}/src/default_version_number/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-list-types => kbn-securitysolution-io-ts-types}/src/version/index.ts (78%) delete mode 100644 x-pack/plugins/security_solution/common/add_remove_id_to_item.test.ts delete mode 100644 x-pack/plugins/security_solution/common/add_remove_id_to_item.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_boolean_true.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_from_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_true.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_from_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_risk_score_mapping_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_severity_mapping_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/index.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/normalized_ml_job_id.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/postive_integer.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.test.ts delete mode 100644 x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.ts delete mode 100644 x-pack/plugins/security_solution/common/exact_check.test.ts delete mode 100644 x-pack/plugins/security_solution/common/exact_check.ts delete mode 100644 x-pack/plugins/security_solution/common/format_errors.test.ts delete mode 100644 x-pack/plugins/security_solution/common/format_errors.ts delete mode 100644 x-pack/plugins/security_solution/common/shared_exports.ts delete mode 100644 x-pack/plugins/security_solution/common/test_utils.ts delete mode 100644 x-pack/plugins/security_solution/common/validate.test.ts delete mode 100644 x-pack/plugins/security_solution/common/validate.ts delete mode 100644 x-pack/plugins/security_solution/public/lists_plugin_deps.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/errors/bad_request_error.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.test.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts delete mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_aliases.ts b/packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts similarity index 80% rename from x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_aliases.ts rename to packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts index d9e90cccc20af..885103c1fb584 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_aliases.ts +++ b/packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts @@ -1,11 +1,12 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import { ElasticsearchClient } from 'src/core/server'; +import { ElasticsearchClient } from '../elasticsearch_client'; interface AliasesResponse { [indexName: string]: { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_count.ts b/packages/kbn-securitysolution-es-utils/src/get_index_count/index.ts similarity index 71% rename from x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_count.ts rename to packages/kbn-securitysolution-es-utils/src/get_index_count/index.ts index f45ef0a9ff59f..523b41303a569 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_count.ts +++ b/packages/kbn-securitysolution-es-utils/src/get_index_count/index.ts @@ -1,11 +1,12 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import { ElasticsearchClient } from 'src/core/server'; +import { ElasticsearchClient } from '../elasticsearch_client'; /** * Retrieves the count of documents in a given index diff --git a/packages/kbn-securitysolution-es-utils/src/index.ts b/packages/kbn-securitysolution-es-utils/src/index.ts index 657a63eef15cd..cfa6820e9aac5 100644 --- a/packages/kbn-securitysolution-es-utils/src/index.ts +++ b/packages/kbn-securitysolution-es-utils/src/index.ts @@ -12,9 +12,12 @@ export * from './delete_all_index'; export * from './delete_policy'; export * from './delete_template'; export * from './elasticsearch_client'; +export * from './get_index_aliases'; +export * from './get_index_count'; export * from './get_index_exists'; export * from './get_policy_exists'; export * from './get_template_exists'; +export * from './read_index'; export * from './read_privileges'; export * from './set_policy'; export * from './set_template'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/read_index.ts b/packages/kbn-securitysolution-es-utils/src/read_index/index.ts similarity index 55% rename from x-pack/plugins/security_solution/server/lib/detection_engine/index/read_index.ts rename to packages/kbn-securitysolution-es-utils/src/read_index/index.ts index 7674ca3b48304..cc16645120b70 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/read_index.ts +++ b/packages/kbn-securitysolution-es-utils/src/read_index/index.ts @@ -1,11 +1,12 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import { ElasticsearchClient } from 'kibana/server'; +import { ElasticsearchClient } from '../elasticsearch_client'; export const readIndex = async (esClient: ElasticsearchClient, index: string): Promise => { return esClient.indices.get({ diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts index 3bf4592a581f5..37ed4b2daa510 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts @@ -24,3 +24,6 @@ export const from = new t.Type( t.identity ); export type From = t.TypeOf; + +export const fromOrUndefined = t.union([from, t.undefined]); +export type FromOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts index 639140be049f2..c6f29862206e6 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts @@ -24,6 +24,7 @@ export * from './default_to_string'; export * from './default_uuid'; export * from './from'; export * from './language'; +export * from './machine_learning_job_id'; export * from './max_signals'; export * from './normalized_ml_job_id'; export * from './references_default_array'; @@ -38,3 +39,4 @@ export * from './threat_subtechnique'; export * from './threat_tactic'; export * from './threat_technique'; export * from './throttle'; +export * from './type'; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts index fc3f70f1f2d88..0632f09e6a393 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts @@ -10,3 +10,6 @@ import * as t from 'io-ts'; export const language = t.keyof({ eql: null, kuery: null, lucene: null }); export type Language = t.TypeOf; + +export const languageOrUndefined = t.union([language, t.undefined]); +export type LanguageOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/machine_learning_job_id/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/machine_learning_job_id/index.ts new file mode 100644 index 0000000000000..9e9c25c62b938 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/machine_learning_job_id/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/* eslint-disable @typescript-eslint/naming-convention */ + +import * as t from 'io-ts'; + +import { machine_learning_job_id_normalized } from '../normalized_ml_job_id'; + +export const machine_learning_job_id = t.union([t.string, machine_learning_job_id_normalized]); +export type MachineLearningJobId = t.TypeOf; + +export const machineLearningJobIdOrUndefined = t.union([machine_learning_job_id, t.undefined]); +export type MachineLearningJobIdOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts index 83360234c65a1..ef7a225d93733 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts @@ -13,3 +13,6 @@ import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-type export const max_signals = PositiveIntegerGreaterThanZero; export type MaxSignals = t.TypeOf; + +export const maxSignalsOrUndefined = t.union([max_signals, t.undefined]); +export type MaxSignalsOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts index 0aca7dd70ba1d..98b9c33e7e3ea 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts @@ -6,6 +6,8 @@ * Side Public License, v 1. */ +/* eslint-disable @typescript-eslint/naming-convention */ + import * as t from 'io-ts'; import { Either } from 'fp-ts/lib/Either'; @@ -26,3 +28,9 @@ export const RiskScore = new t.Type( ); export type RiskScoreC = typeof RiskScore; + +export const risk_score = RiskScore; +export type RiskScore = t.TypeOf; + +export const riskScoreOrUndefined = t.union([risk_score, t.undefined]); +export type RiskScoreOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts index b35b502811ec9..be07bab64f469 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts @@ -10,10 +10,7 @@ import * as t from 'io-ts'; import { operator } from '@kbn/securitysolution-io-ts-types'; -import { RiskScore } from '../risk_score'; - -export const riskScoreOrUndefined = t.union([RiskScore, t.undefined]); -export type RiskScoreOrUndefined = t.TypeOf; +import { riskScoreOrUndefined } from '../risk_score'; export const risk_score_mapping_field = t.string; export const risk_score_mapping_value = t.string; @@ -28,3 +25,6 @@ export const risk_score_mapping_item = t.exact( export const risk_score_mapping = t.array(risk_score_mapping_item); export type RiskScoreMapping = t.TypeOf; + +export const riskScoreMappingOrUndefined = t.union([risk_score_mapping, t.undefined]); +export type RiskScoreMappingOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts index 0e4022e3ec26e..08ff6cca60a49 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts @@ -32,3 +32,6 @@ export type Threat = t.TypeOf; export const threats = t.array(threat); export type Threats = t.TypeOf; + +export const threatsOrUndefined = t.union([threats, t.undefined]); +export type ThreatsOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts index 8d64f53cb1623..4909b82d8ec54 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts @@ -21,3 +21,5 @@ export const threat_subtechnique = t.type({ }); export const threat_subtechniques = t.array(threat_subtechnique); + +export type ThreatSubtechnique = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts index ed2e771e1e118..2d56e842287d8 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts @@ -30,3 +30,5 @@ export const threat_technique = t.intersection([ ), ]); export const threat_techniques = t.array(threat_technique); + +export type ThreatTechnique = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/type/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/type/index.ts new file mode 100644 index 0000000000000..0e74037878992 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/type/index.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as t from 'io-ts'; + +export const type = t.keyof({ + eql: null, + machine_learning: null, + query: null, + saved_query: null, + threshold: null, + threat_match: null, +}); +export type Type = t.TypeOf; + +export const typeOrUndefined = t.union([type, t.undefined]); +export type TypeOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/index.ts index 1a1c1c3314821..3c60df315e430 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/src/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/index.ts @@ -16,7 +16,6 @@ export * from './default_create_comments_array'; export * from './default_namespace'; export * from './default_namespace_array'; export * from './default_update_comments_array'; -export * from './default_version_number'; export * from './description'; export * from './endpoint'; export * from './entries'; @@ -43,4 +42,3 @@ export * from './type'; export * from './update_comment'; export * from './updated_at'; export * from './updated_by'; -export * from './version'; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts index 90a8c36eb8b31..50cacb8e0259b 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts @@ -40,3 +40,4 @@ export const type = t.keyof({ export const typeOrUndefined = t.union([type, t.undefined]); export type Type = t.TypeOf; +export type TypeOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_version_number/index.test.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_version_number/index.test.ts diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_version_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_version_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/src/index.ts b/packages/kbn-securitysolution-io-ts-types/src/index.ts index 8b5a4d9e4de9a..fc0f017016e9f 100644 --- a/packages/kbn-securitysolution-io-ts-types/src/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/index.ts @@ -13,6 +13,7 @@ export * from './default_empty_string'; export * from './default_string_array'; export * from './default_string_boolean_false'; export * from './default_uuid'; +export * from './default_version_number'; export * from './empty_string_array'; export * from './iso_date_string'; export * from './non_empty_array'; @@ -26,3 +27,4 @@ export * from './positive_integer'; export * from './positive_integer_greater_than_zero'; export * from './string_to_positive_number'; export * from './uuid'; +export * from './version'; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts b/packages/kbn-securitysolution-io-ts-types/src/version/index.ts similarity index 78% rename from packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/version/index.ts index 97a81b546c841..245b64781a7f8 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/version/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; +import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; /** * Note this is just a positive number, but we use it as a type here which is still ok. @@ -16,3 +16,6 @@ import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-type */ export const version = PositiveIntegerGreaterThanZero; export type Version = t.TypeOf; + +export const versionOrUndefined = t.union([version, t.undefined]); +export type VersionOrUndefined = t.TypeOf; diff --git a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts index eda81f91cd983..6e76076bc63ef 100644 --- a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts +++ b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts @@ -17,10 +17,10 @@ import { entriesNested, } from '@kbn/securitysolution-io-ts-list-types'; -import { Filter } from '../../../../../src/plugins/data/common'; -import { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../schemas'; +import type { Filter } from '../../../../../src/plugins/data/common'; +import type { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../schemas'; -import { BooleanFilter, NestedFilter } from './types'; +import type { BooleanFilter, NestedFilter } from './types'; import { hasLargeValueList } from './utils'; type NonListEntry = EntryMatch | EntryMatchAny | EntryNested | EntryExists; diff --git a/x-pack/plugins/lists/common/exceptions/utils.ts b/x-pack/plugins/lists/common/exceptions/utils.ts index f5881c1d3cbf4..350cb581153b5 100644 --- a/x-pack/plugins/lists/common/exceptions/utils.ts +++ b/x-pack/plugins/lists/common/exceptions/utils.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; +import type { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; export const hasLargeValueList = (entries: EntriesArray): boolean => { const found = entries.filter(({ type }) => type === 'list'); diff --git a/x-pack/plugins/lists/common/schemas/common/schemas.ts b/x-pack/plugins/lists/common/schemas/common/schemas.ts index 612b7ea559e4a..83ec27d60b76c 100644 --- a/x-pack/plugins/lists/common/schemas/common/schemas.ts +++ b/x-pack/plugins/lists/common/schemas/common/schemas.ts @@ -11,18 +11,6 @@ import * as t from 'io-ts'; import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { DefaultNamespace } from '@kbn/securitysolution-io-ts-list-types'; -/** - * @deprecated Directly use the type from the package and not from here - */ -export { - DefaultNamespace, - Type, - OsType, - OsTypeArray, - listOperator as operator, - NonEmptyEntriesArray, -} from '@kbn/securitysolution-io-ts-list-types'; - export const list_id = NonEmptyString; export type ListId = t.TypeOf; export const list_idOrUndefined = t.union([list_id, t.undefined]); @@ -91,12 +79,6 @@ export const _version = t.string; export const _versionOrUndefined = t.union([_version, t.undefined]); export type _VersionOrUndefined = t.TypeOf; -export const version = t.number; -export type Version = t.TypeOf; - -export const versionOrUndefined = t.union([version, t.undefined]); -export type VersionOrUndefined = t.TypeOf; - export const immutable = t.boolean; export type Immutable = t.TypeOf; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts index 91b3a98bdd5ac..30e4ff908ee80 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts @@ -7,8 +7,6 @@ import * as t from 'io-ts'; import { - DefaultVersionNumber, - DefaultVersionNumberDecoded, NamespaceType, OsTypeArray, Tags, @@ -19,7 +17,11 @@ import { osTypeArrayOrUndefined, tags, } from '@kbn/securitysolution-io-ts-list-types'; -import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; +import { + DefaultUuid, + DefaultVersionNumber, + DefaultVersionNumberDecoded, +} from '@kbn/securitysolution-io-ts-types'; import { ListId, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts index 5fa9da0cdc597..1c197a37c0cbd 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts @@ -9,12 +9,8 @@ import * as t from 'io-ts'; import { DefaultVersionNumber, DefaultVersionNumberDecoded, - description, - id, - meta, - name, - type, -} from '@kbn/securitysolution-io-ts-list-types'; +} from '@kbn/securitysolution-io-ts-types'; +import { description, id, meta, name, type } from '@kbn/securitysolution-io-ts-list-types'; import { deserializer, serializer } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts index eea4ba9fc87d7..2cd41584ef9ff 100644 --- a/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts @@ -7,8 +7,9 @@ import * as t from 'io-ts'; import { description, id, meta, name } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; -import { _version, version } from '../common/schemas'; +import { _version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; export const patchListSchema = t.intersection([ diff --git a/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts index c58c1c253a8c4..08f15f52977fd 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts @@ -18,8 +18,9 @@ import { osTypeArrayOrUndefined, tags, } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; -import { _version, list_id, namespace_type, version } from '../common/schemas'; +import { _version, list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; export const updateExceptionListSchema = t.intersection([ diff --git a/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts index 230853e69fae4..253c4cec566f4 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts @@ -6,7 +6,8 @@ */ import * as t from 'io-ts'; -import { description, id, meta, name, version } from '@kbn/securitysolution-io-ts-list-types'; +import { description, id, meta, name } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; import { _version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts index 7bfc2af9863e2..f96496343fb7e 100644 --- a/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts @@ -19,6 +19,7 @@ import { updated_at, updated_by, } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; import { _versionOrUndefined, @@ -26,7 +27,6 @@ import { list_id, namespace_type, tie_breaker_id, - version, } from '../common/schemas'; export const exceptionListSchema = t.exact( diff --git a/x-pack/plugins/lists/common/schemas/response/list_schema.ts b/x-pack/plugins/lists/common/schemas/response/list_schema.ts index 21504d64fdeaa..5b478cd25daa6 100644 --- a/x-pack/plugins/lists/common/schemas/response/list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/list_schema.ts @@ -17,6 +17,7 @@ import { updated_at, updated_by, } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; import { _versionOrUndefined, @@ -24,7 +25,6 @@ import { immutable, serializerOrUndefined, tie_breaker_id, - version, } from '../common/schemas'; export const listSchema = t.exact( diff --git a/x-pack/plugins/lists/common/shared_exports.ts b/x-pack/plugins/lists/common/shared_exports.ts index f00afb7ac810d..3f1dc01644e21 100644 --- a/x-pack/plugins/lists/common/shared_exports.ts +++ b/x-pack/plugins/lists/common/shared_exports.ts @@ -5,16 +5,13 @@ * 2.0. */ -export { +export type { ListSchema, ExceptionListSchema, ExceptionListItemSchema, CreateExceptionListSchema, CreateExceptionListItemSchema, UpdateExceptionListItemSchema, - exceptionListItemSchema, - createExceptionListItemSchema, - listSchema, } from './schemas'; export { buildExceptionFilter } from './exceptions'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx index f771969a92025..6058d4f7b725b 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx @@ -23,7 +23,7 @@ import { CreateExceptionListItemSchema, ExceptionListItemSchema, exceptionListItemSchema, -} from '../../../../common'; +} from '../../../../common/schemas'; import { AutocompleteStart, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { AndOrBadge } from '../and_or_badge'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts index 6cd9dec0dc7a1..c4052acda6045 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts @@ -29,7 +29,7 @@ import { ListSchema, createExceptionListItemSchema, exceptionListItemSchema, -} from '../../../../common'; +} from '../../../../common/schemas'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { EXCEPTION_OPERATORS, diff --git a/x-pack/plugins/lists/public/index.ts b/x-pack/plugins/lists/public/index.ts index f940bbe02b8fb..0b67ab05f5bd4 100644 --- a/x-pack/plugins/lists/public/index.ts +++ b/x-pack/plugins/lists/public/index.ts @@ -7,11 +7,11 @@ export * from './shared_exports'; -import { PluginInitializerContext } from '../../../../src/core/public'; +import type { PluginInitializerContext } from '../../../../src/core/public'; import { Plugin } from './plugin'; -import { PluginSetup, PluginStart } from './types'; +import type { PluginSetup, PluginStart } from './types'; export const plugin = (context: PluginInitializerContext): Plugin => new Plugin(context); -export { Plugin, PluginSetup, PluginStart }; +export type { Plugin, PluginSetup, PluginStart }; diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts index 4383e93346291..607535b68c1e5 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts @@ -16,13 +16,13 @@ import { updated_at, updated_by, } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; import { deserializerOrUndefined, immutable, serializerOrUndefined, tie_breaker_id, - version, } from '../../../common/schemas'; export const indexEsListSchema = t.exact( diff --git a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts index 536269b9c0ae2..f6d6ae4effe72 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts @@ -16,13 +16,13 @@ import { updated_at, updated_by, } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; import { deserializerOrUndefined, immutable, serializerOrUndefined, tie_breaker_id, - version, } from '../../../common/schemas'; export const searchEsListSchema = t.exact( diff --git a/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts b/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts index c1f480e50c8f7..d815dbaae0432 100644 --- a/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts +++ b/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts @@ -20,6 +20,7 @@ import { tags, updated_by, } from '@kbn/securitysolution-io-ts-list-types'; +import { versionOrUndefined } from '@kbn/securitysolution-io-ts-types'; import { immutableOrUndefined, @@ -27,7 +28,6 @@ import { list_id, list_type, tie_breaker_id, - versionOrUndefined, } from '../../../common/schemas'; /** diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_endoint_event_filters_list.ts b/x-pack/plugins/lists/server/services/exception_lists/create_endoint_event_filters_list.ts index dba729437b814..9bcf6c63d065d 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_endoint_event_filters_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_endoint_event_filters_list.ts @@ -7,13 +7,14 @@ import { SavedObjectsClientContract } from 'kibana/server'; import uuid from 'uuid'; +import { Version } from '@kbn/securitysolution-io-ts-types'; import { ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION, ENDPOINT_EVENT_FILTERS_LIST_ID, ENDPOINT_EVENT_FILTERS_LIST_NAME, } from '../../../common/constants'; -import { ExceptionListSchema, Version } from '../../../common/schemas'; +import { ExceptionListSchema } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; import { getSavedObjectType, transformSavedObjectToExceptionList } from './utils'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_list.ts b/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_list.ts index de2be0cb72735..86891e5f83955 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_list.ts @@ -7,13 +7,14 @@ import { SavedObjectsClientContract } from 'kibana/server'; import uuid from 'uuid'; +import { Version } from '@kbn/securitysolution-io-ts-types'; import { ENDPOINT_LIST_DESCRIPTION, ENDPOINT_LIST_ID, ENDPOINT_LIST_NAME, } from '../../../common/constants'; -import { ExceptionListSchema, Version } from '../../../common/schemas'; +import { ExceptionListSchema } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; import { getSavedObjectType, transformSavedObjectToExceptionList } from './utils'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts b/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts index 6f6ad7c357f14..ada043403f248 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts @@ -7,13 +7,14 @@ import { SavedObjectsClientContract } from 'kibana/server'; import uuid from 'uuid'; +import { Version } from '@kbn/securitysolution-io-ts-types'; import { ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION, ENDPOINT_TRUSTED_APPS_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_NAME, } from '../../../common/constants'; -import { ExceptionListSchema, Version } from '../../../common/schemas'; +import { ExceptionListSchema } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; import { getSavedObjectType, transformSavedObjectToExceptionList } from './utils'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts index 5f2587fc1e986..c6110dc4f470c 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts @@ -15,8 +15,9 @@ import { NamespaceType, Tags, } from '@kbn/securitysolution-io-ts-list-types'; +import { Version } from '@kbn/securitysolution-io-ts-types'; -import { ExceptionListSchema, Immutable, ListId, Version } from '../../../common/schemas'; +import { ExceptionListSchema, Immutable, ListId } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; import { getSavedObjectType, transformSavedObjectToExceptionList } from './utils'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts index 576b0c4d25aa0..c6f5e3a3bc166 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts @@ -30,6 +30,8 @@ import { import { EmptyStringArrayDecoded, NonEmptyStringArrayDecoded, + Version, + VersionOrUndefined, } from '@kbn/securitysolution-io-ts-types'; import { @@ -43,8 +45,6 @@ import { PerPageOrUndefined, SortFieldOrUndefined, SortOrderOrUndefined, - Version, - VersionOrUndefined, _VersionOrUndefined, } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts index 3daa2e9157b5d..43c319cca0005 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts @@ -16,11 +16,11 @@ import { OsTypeArray, TagsOrUndefined, } from '@kbn/securitysolution-io-ts-list-types'; +import { VersionOrUndefined } from '@kbn/securitysolution-io-ts-types'; import { ExceptionListSchema, ListIdOrUndefined, - VersionOrUndefined, _VersionOrUndefined, } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts b/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts index b3ce823f9ac29..392c44cf72b00 100644 --- a/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts +++ b/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts @@ -9,6 +9,7 @@ import { Readable } from 'stream'; import { ElasticsearchClient } from 'kibana/server'; import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; +import { Version } from '@kbn/securitysolution-io-ts-types'; import { createListIfItDoesNotExist } from '../lists/create_list_if_it_does_not_exist'; import { @@ -16,7 +17,6 @@ import { ListIdOrUndefined, ListSchema, SerializerOrUndefined, - Version, } from '../../../common/schemas'; import { ConfigType } from '../../config'; diff --git a/x-pack/plugins/lists/server/services/lists/create_list.ts b/x-pack/plugins/lists/server/services/lists/create_list.ts index d139ef3ea4bb1..bd5b3c901fdc5 100644 --- a/x-pack/plugins/lists/server/services/lists/create_list.ts +++ b/x-pack/plugins/lists/server/services/lists/create_list.ts @@ -14,6 +14,7 @@ import { Name, Type, } from '@kbn/securitysolution-io-ts-list-types'; +import { Version } from '@kbn/securitysolution-io-ts-types'; import { encodeHitVersion } from '../utils/encode_hit_version'; import { @@ -21,7 +22,6 @@ import { Immutable, ListSchema, SerializerOrUndefined, - Version, } from '../../../common/schemas'; import { IndexEsListSchema } from '../../schemas/elastic_query'; diff --git a/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts b/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts index 71094a5ab49de..4d4e634a465a7 100644 --- a/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts +++ b/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts @@ -13,13 +13,13 @@ import { Name, Type, } from '@kbn/securitysolution-io-ts-list-types'; +import { Version } from '@kbn/securitysolution-io-ts-types'; import { DeserializerOrUndefined, Immutable, ListSchema, SerializerOrUndefined, - Version, } from '../../../common/schemas'; import { getList } from './get_list'; diff --git a/x-pack/plugins/lists/server/services/lists/list_client_types.ts b/x-pack/plugins/lists/server/services/lists/list_client_types.ts index b4fe52019ec7b..28732090342cd 100644 --- a/x-pack/plugins/lists/server/services/lists/list_client_types.ts +++ b/x-pack/plugins/lists/server/services/lists/list_client_types.ts @@ -18,6 +18,7 @@ import { NameOrUndefined, Type, } from '@kbn/securitysolution-io-ts-list-types'; +import { Version, VersionOrUndefined } from '@kbn/securitysolution-io-ts-types'; import { DeserializerOrUndefined, @@ -30,8 +31,6 @@ import { SerializerOrUndefined, SortFieldOrUndefined, SortOrderOrUndefined, - Version, - VersionOrUndefined, _VersionOrUndefined, } from '../../../common/schemas'; import { ConfigType } from '../../config'; diff --git a/x-pack/plugins/lists/server/services/lists/update_list.ts b/x-pack/plugins/lists/server/services/lists/update_list.ts index 374c3cd0e2def..2e1cc43826817 100644 --- a/x-pack/plugins/lists/server/services/lists/update_list.ts +++ b/x-pack/plugins/lists/server/services/lists/update_list.ts @@ -12,10 +12,11 @@ import { MetaOrUndefined, NameOrUndefined, } from '@kbn/securitysolution-io-ts-list-types'; +import { VersionOrUndefined } from '@kbn/securitysolution-io-ts-types'; import { decodeVersion } from '../utils/decode_version'; import { encodeHitVersion } from '../utils/encode_hit_version'; -import { ListSchema, VersionOrUndefined, _VersionOrUndefined } from '../../../common/schemas'; +import { ListSchema, _VersionOrUndefined } from '../../../common/schemas'; import { UpdateEsListSchema } from '../../schemas/elastic_query'; import { getList } from '.'; diff --git a/x-pack/plugins/security_solution/common/add_remove_id_to_item.test.ts b/x-pack/plugins/security_solution/common/add_remove_id_to_item.test.ts deleted file mode 100644 index 0bd88adda7264..0000000000000 --- a/x-pack/plugins/security_solution/common/add_remove_id_to_item.test.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { addIdToItem, removeIdFromItem } from './add_remove_id_to_item'; - -jest.mock('uuid', () => ({ - v4: jest.fn().mockReturnValue('123'), -})); - -describe('add_remove_id_to_item', () => { - afterEach(() => { - jest.clearAllMocks(); - }); - - describe('addIdToItem', () => { - test('it adds an id to an empty item', () => { - expect(addIdToItem({})).toEqual({ id: '123' }); - }); - - test('it adds a complex object', () => { - expect( - addIdToItem({ - field: '', - type: 'mapping', - value: '', - }) - ).toEqual({ - id: '123', - field: '', - type: 'mapping', - value: '', - }); - }); - - test('it adds an id to an existing item', () => { - expect(addIdToItem({ test: '456' })).toEqual({ id: '123', test: '456' }); - }); - - test('it does not change the id if it already exists', () => { - expect(addIdToItem({ id: '456' })).toEqual({ id: '456' }); - }); - - test('it returns the same reference if it has an id already', () => { - const obj = { id: '456' }; - expect(addIdToItem(obj)).toBe(obj); - }); - - test('it returns a new reference if it adds an id to an item', () => { - const obj = { test: '456' }; - expect(addIdToItem(obj)).not.toBe(obj); - }); - }); - - describe('removeIdFromItem', () => { - test('it removes an id from an item', () => { - expect(removeIdFromItem({ id: '456' })).toEqual({}); - }); - - test('it returns a new reference if it removes an id from an item', () => { - const obj = { id: '123', test: '456' }; - expect(removeIdFromItem(obj)).not.toBe(obj); - }); - - test('it does not effect an item without an id', () => { - expect(removeIdFromItem({ test: '456' })).toEqual({ test: '456' }); - }); - - test('it returns the same reference if it does not have an id already', () => { - const obj = { test: '456' }; - expect(removeIdFromItem(obj)).toBe(obj); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/common/add_remove_id_to_item.ts b/x-pack/plugins/security_solution/common/add_remove_id_to_item.ts deleted file mode 100644 index 1f35574038fd7..0000000000000 --- a/x-pack/plugins/security_solution/common/add_remove_id_to_item.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import uuid from 'uuid'; - -/** - * This is useful for when you have arrays without an ID and need to add one for - * ReactJS keys. I break the types slightly by introducing an id to an arbitrary item - * but then cast it back to the regular type T. - * Usage of this could be considered tech debt as I am adding an ID when the backend - * could be doing the same thing but it depends on how you want to model your data and - * if you view modeling your data with id's to please ReactJS a good or bad thing. - * @param item The item to add an id to. - */ -type NotArray = T extends unknown[] ? never : T; -export const addIdToItem = (item: NotArray): T => { - const maybeId: typeof item & { id?: string } = item; - if (maybeId.id != null) { - return item; - } else { - return { ...item, id: uuid.v4() }; - } -}; - -/** - * This is to reverse the id you added to your arrays for ReactJS keys. - * @param item The item to remove the id from. - */ -export const removeIdFromItem = ( - item: NotArray -): - | T - | Pick< - T & { - id?: string | undefined; - }, - Exclude - > => { - const maybeId: typeof item & { id?: string } = item; - if (maybeId.id != null) { - const { id, ...noId } = maybeId; - return noId; - } else { - return item; - } -}; diff --git a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts index e562d186bc424..7d24c1e157e40 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { Language } from '@kbn/securitysolution-io-ts-alerting-types'; import { Filter, IIndexPattern, @@ -17,7 +18,7 @@ import { } from '../../../lists/common/schemas'; import { ESBoolQuery } from '../typed_json'; import { buildExceptionFilter } from '../shared_imports'; -import { Query, Language, Index, TimestampOverrideOrUndefined } from './schemas/common/schemas'; +import { Query, Index, TimestampOverrideOrUndefined } from './schemas/common/schemas'; export const getQueryFilter = ( query: Query, diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts index e085d500bee0a..7b49b68ab79a1 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/common/schemas.ts @@ -8,21 +8,14 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; import { - SavedObjectAttributes, - SavedObjectAttribute, - SavedObjectAttributeSingle, -} from 'src/core/types'; -import { RiskScore } from '../types/risk_score'; -import { UUID } from '../types/uuid'; -import { IsoDateString } from '../types/iso_date_string'; -import { PositiveIntegerGreaterThanZero } from '../types/positive_integer_greater_than_zero'; -import { PositiveInteger } from '../types/positive_integer'; -import { NonEmptyString } from '../types/non_empty_string'; -import { parseScheduleDates } from '../../parse_schedule_dates'; -import { machine_learning_job_id_normalized } from '../types/normalized_ml_job_id'; + UUID, + NonEmptyString, + IsoDateString, + PositiveIntegerGreaterThanZero, + PositiveInteger, +} from '@kbn/securitysolution-io-ts-types'; export const author = t.array(t.string); export type Author = t.TypeOf; @@ -76,79 +69,6 @@ export type Filters = t.TypeOf; // Filters are not easily type-a export const filtersOrUndefined = t.union([filters, t.undefined]); export type FiltersOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const saved_object_attribute_single: t.Type = t.recursion( - 'saved_object_attribute_single', - () => t.union([t.string, t.number, t.boolean, t.null, t.undefined, saved_object_attributes]) -); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const saved_object_attribute: t.Type = t.recursion( - 'saved_object_attribute', - () => t.union([saved_object_attribute_single, t.array(saved_object_attribute_single)]) -); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const saved_object_attributes: t.Type = t.recursion( - 'saved_object_attributes', - () => t.record(t.string, saved_object_attribute) -); - -/** - * Params is an "object", since it is a type of AlertActionParams which is action templates. - * @see x-pack/plugins/alerting/common/alert.ts - */ -export const action_group = t.string; -export const action_id = t.string; -export const action_action_type_id = t.string; -export const action_params = saved_object_attributes; -export const action = t.exact( - t.type({ - group: action_group, - id: action_id, - action_type_id: action_action_type_id, - params: action_params, - }) -); - -export const actions = t.array(action); -export type Actions = t.TypeOf; - -export const actionsCamel = t.array( - t.exact( - t.type({ - group: action_group, - id: action_id, - actionTypeId: action_action_type_id, - params: action_params, - }) - ) -); -export type ActionsCamel = t.TypeOf; - -const stringValidator = (input: unknown): input is string => typeof input === 'string'; -export const from = new t.Type( - 'From', - t.string.is, - (input, context): Either => { - if (stringValidator(input) && parseScheduleDates(input) == null) { - return t.failure(input, context, 'Failed to parse "from" on rule param'); - } - return t.string.validate(input, context); - }, - t.identity -); -export type From = t.TypeOf; - -export const fromOrUndefined = t.union([from, t.undefined]); -export type FromOrUndefined = t.TypeOf; - export const immutable = t.boolean; export type Immutable = t.TypeOf; @@ -183,26 +103,6 @@ export type Query = t.TypeOf; export const queryOrUndefined = t.union([query, t.undefined]); export type QueryOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const language = t.keyof({ eql: null, kuery: null, lucene: null }); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type Language = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const languageOrUndefined = t.union([language, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type LanguageOrUndefined = t.TypeOf; - export const license = t.string; export type License = t.TypeOf; @@ -241,27 +141,12 @@ export type TimestampOverride = t.TypeOf; export const timestampOverrideOrUndefined = t.union([timestamp_override, t.undefined]); export type TimestampOverrideOrUndefined = t.TypeOf; -export const throttle = t.string; -export type Throttle = t.TypeOf; - -export const throttleOrNull = t.union([throttle, t.null]); -export type ThrottleOrNull = t.TypeOf; - -export const throttleOrNullOrUndefined = t.union([throttle, t.null, t.undefined]); -export type ThrottleOrUndefinedOrNull = t.TypeOf; - export const anomaly_threshold = PositiveInteger; export type AnomalyThreshold = t.TypeOf; export const anomalyThresholdOrUndefined = t.union([anomaly_threshold, t.undefined]); export type AnomalyThresholdOrUndefined = t.TypeOf; -export const machine_learning_job_id = t.union([t.string, machine_learning_job_id_normalized]); -export type MachineLearningJobId = t.TypeOf; - -export const machineLearningJobIdOrUndefined = t.union([machine_learning_job_id, t.undefined]); -export type MachineLearningJobIdOrUndefined = t.TypeOf; - /** * Note that this is a non-exact io-ts type as we allow extra meta information * to be added to the meta object @@ -271,158 +156,18 @@ export type Meta = t.TypeOf; export const metaOrUndefined = t.union([meta, t.undefined]); export type MetaOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const max_signals = PositiveIntegerGreaterThanZero; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type MaxSignals = t.TypeOf; - -export const maxSignalsOrUndefined = t.union([max_signals, t.undefined]); -export type MaxSignalsOrUndefined = t.TypeOf; - export const name = NonEmptyString; export type Name = t.TypeOf; export const nameOrUndefined = t.union([name, t.undefined]); export type NameOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const operator = t.keyof({ - equals: null, -}); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type Operator = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export enum OperatorEnum { - EQUALS = 'equals', -} - -export const risk_score = RiskScore; -export type RiskScore = t.TypeOf; - -export const riskScoreOrUndefined = t.union([risk_score, t.undefined]); -export type RiskScoreOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const risk_score_mapping_field = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const risk_score_mapping_value = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const risk_score_mapping_item = t.exact( - t.type({ - field: risk_score_mapping_field, - value: risk_score_mapping_value, - operator, - risk_score: riskScoreOrUndefined, - }) -); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const risk_score_mapping = t.array(risk_score_mapping_item); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type RiskScoreMapping = t.TypeOf; - -export const riskScoreMappingOrUndefined = t.union([risk_score_mapping, t.undefined]); -export type RiskScoreMappingOrUndefined = t.TypeOf; - export const rule_name_override = t.string; export type RuleNameOverride = t.TypeOf; export const ruleNameOverrideOrUndefined = t.union([rule_name_override, t.undefined]); export type RuleNameOverrideOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severity = t.keyof({ low: null, medium: null, high: null, critical: null }); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type Severity = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severityOrUndefined = t.union([severity, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type SeverityOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severity_mapping_field = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severity_mapping_value = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severity_mapping_item = t.exact( - t.type({ - field: severity_mapping_field, - operator, - value: severity_mapping_value, - severity, - }) -); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type SeverityMappingItem = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severity_mapping = t.array(severity_mapping_item); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type SeverityMapping = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const severityMappingOrUndefined = t.union([severity_mapping, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type SeverityMappingOrUndefined = t.TypeOf; - export const status = t.keyof({ open: null, closed: null, 'in-progress': null }); export type Status = t.TypeOf; @@ -445,19 +190,6 @@ export type To = t.TypeOf; export const toOrUndefined = t.union([to, t.undefined]); export type ToOrUndefined = t.TypeOf; -export const type = t.keyof({ - eql: null, - machine_learning: null, - query: null, - saved_query: null, - threshold: null, - threat_match: null, -}); -export type Type = t.TypeOf; - -export const typeOrUndefined = t.union([type, t.undefined]); -export type TypeOrUndefined = t.TypeOf; - export const queryFilter = t.string; export type QueryFilter = t.TypeOf; @@ -511,152 +243,6 @@ export type Fields = t.TypeOf; export const fieldsOrUndefined = t.union([fields, t.undefined]); export type FieldsOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_framework = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_tactic_id = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_tactic_name = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_tactic_reference = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_tactic = t.type({ - id: threat_tactic_id, - name: threat_tactic_name, - reference: threat_tactic_reference, -}); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatTactic = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_subtechnique_id = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_subtechnique_name = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_subtechnique_reference = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_subtechnique = t.type({ - id: threat_subtechnique_id, - name: threat_subtechnique_name, - reference: threat_subtechnique_reference, -}); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatSubtechnique = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_subtechniques = t.array(threat_subtechnique); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_technique_id = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_technique_name = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_technique_reference = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_technique = t.intersection([ - t.exact( - t.type({ - id: threat_technique_id, - name: threat_technique_name, - reference: threat_technique_reference, - }) - ), - t.exact( - t.partial({ - subtechnique: threat_subtechniques, - }) - ), -]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatTechnique = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_techniques = t.array(threat_technique); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat = t.intersection([ - t.exact( - t.type({ - framework: threat_framework, - tactic: threat_tactic, - }) - ), - t.exact( - t.partial({ - technique: threat_techniques, - }) - ), -]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type Threat = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threats = t.array(threat); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type Threats = t.TypeOf; - -export const threatsOrUndefined = t.union([threats, t.undefined]); -export type ThreatsOrUndefined = t.TypeOf; - export const thresholdField = t.exact( t.type({ field: t.union([t.string, t.array(t.string)]), // Covers pre- and post-7.12 @@ -707,43 +293,19 @@ export type ThresholdNormalized = t.TypeOf; export const thresholdNormalizedOrUndefined = t.union([thresholdNormalized, t.undefined]); export type ThresholdNormalizedOrUndefined = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ export const created_at = IsoDateString; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ export const updated_at = IsoDateString; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ export const updated_by = t.string; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ export const created_by = t.string; + export const updatedByOrNull = t.union([updated_by, t.null]); export type UpdatedByOrNull = t.TypeOf; export const createdByOrNull = t.union([created_by, t.null]); export type CreatedByOrNull = t.TypeOf; -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const version = PositiveIntegerGreaterThanZero; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type Version = t.TypeOf; - -export const versionOrUndefined = t.union([version, t.undefined]); -export type VersionOrUndefined = t.TypeOf; - export const last_success_at = IsoDateString; export type LastSuccessAt = t.TypeOf; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackaged_rules_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackaged_rules_schema.ts index 981a5422a0594..eed20951190b7 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackaged_rules_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackaged_rules_schema.ts @@ -7,6 +7,44 @@ import * as t from 'io-ts'; +import { + Actions, + DefaultActionsArray, + DefaultFromString, + DefaultIntervalString, + DefaultMaxSignalsNumber, + DefaultRiskScoreMappingArray, + DefaultSeverityMappingArray, + DefaultThreatArray, + DefaultThrottleNull, + DefaultToString, + From, + RiskScoreMapping, + machine_learning_job_id, + risk_score, + threat_index, + concurrent_searches, + items_per_search, + threat_query, + threat_filters, + threat_mapping, + threat_language, + threat_indicator_path, + Threats, + type, + language, + severity, + SeverityMapping, + ThrottleOrNull, + MaxSignals, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { + version, + DefaultStringArray, + DefaultBooleanFalse, +} from '@kbn/securitysolution-io-ts-types'; + +import { DefaultListArray, ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { description, anomaly_threshold, @@ -16,63 +54,24 @@ import { timeline_id, timeline_title, meta, - machine_learning_job_id, - risk_score, - MaxSignals, name, - severity, Tags, To, - type, - Threats, threshold, - ThrottleOrNull, note, References, - Actions, Enabled, FalsePositives, - From, Interval, - language, query, rule_id, - version, building_block_type, license, rule_name_override, timestamp_override, Author, - RiskScoreMapping, - SeverityMapping, event_category_override, } from '../common/schemas'; -import { - threat_index, - concurrent_searches, - items_per_search, - threat_query, - threat_filters, - threat_mapping, - threat_language, - threat_indicator_path, -} from '../types/threat_mapping'; - -import { - DefaultStringArray, - DefaultActionsArray, - DefaultBooleanFalse, - DefaultFromString, - DefaultIntervalString, - DefaultMaxSignalsNumber, - DefaultToString, - DefaultThreatArray, - DefaultThrottleNull, - DefaultListArray, - ListArray, - DefaultRiskScoreMappingArray, - DefaultSeverityMappingArray, -} from '../types'; /** * Big differences between this schema and the createRulesSchema diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackged_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackged_rules_schema.test.ts index f3bef5ad7445f..03c0947aaf50c 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackged_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/add_prepackged_rules_schema.test.ts @@ -11,9 +11,8 @@ import { AddPrepackagedRulesSchema, } from './add_prepackaged_rules_schema'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; import { getAddPrepackagedRulesSchemaMock, diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts index 9fe602bca8de4..e606e1f77fc2b 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts @@ -6,9 +6,7 @@ */ import { createRulesBulkSchema, CreateRulesBulkSchema } from './create_rules_bulk_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight } from '../../../test_utils'; -import { formatErrors } from '../../../format_errors'; +import { exactCheck, foldLeftRight, formatErrors } from '@kbn/securitysolution-io-ts-utils'; import { getCreateRulesSchemaMock } from './rule_schemas.mock'; // only the basics of testing are here. diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_signals_migration_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_signals_migration_schema.ts index f522448102405..55267c27ee37f 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_signals_migration_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_signals_migration_schema.ts @@ -7,8 +7,8 @@ import * as t from 'io-ts'; +import { PositiveInteger, PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; import { index } from '../common/schemas'; -import { PositiveInteger, PositiveIntegerGreaterThanZero } from '../types'; export const signalsReindexOptions = t.partial({ requests_per_second: t.number, diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.test.ts index f9c2d38ea4da2..186f170ad700f 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.test.ts @@ -12,9 +12,8 @@ import { ExportRulesQuerySchema, ExportRulesQuerySchemaDecoded, } from './export_rules_schema'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; describe('create rules schema', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.ts index 4dcb7351aebd6..a83e1c2c0f462 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/export_rules_schema.ts @@ -7,11 +7,10 @@ import * as t from 'io-ts'; +import { DefaultExportFileName } from '@kbn/securitysolution-io-ts-alerting-types'; +import { DefaultStringBooleanFalse } from '@kbn/securitysolution-io-ts-types'; import { rule_id, FileName, ExcludeExportDetails } from '../common/schemas'; -import { DefaultExportFileName } from '../types/default_export_file_name'; -import { DefaultStringBooleanFalse } from '../types/default_string_boolean_false'; - const objects = t.array(t.exact(t.type({ rule_id }))); export const exportRulesSchema = t.union([t.exact(t.type({ objects })), t.null]); export type ExportRulesSchema = t.TypeOf; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.test.ts index 923d54e1d6fa7..cd221c9f0a4b5 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.test.ts @@ -5,9 +5,8 @@ * 2.0. */ -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; import { FindRulesSchema, findRulesSchema } from './find_rules_schema'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.ts index 25c880290454c..b04afd14375cc 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/find_rules_schema.ts @@ -7,9 +7,8 @@ import * as t from 'io-ts'; +import { DefaultPerPage, DefaultPage } from '@kbn/securitysolution-io-ts-alerting-types'; import { queryFilter, fields, sort_field, sort_order, PerPage, Page } from '../common/schemas'; -import { DefaultPerPage } from '../types/default_per_page'; -import { DefaultPage } from '../types/default_page'; export const findRulesSchema = t.exact( t.partial({ diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/get_signals_migration_status_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/get_signals_migration_status_schema.ts index 9441cabf73bac..c0969768d8be6 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/get_signals_migration_status_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/get_signals_migration_status_schema.ts @@ -7,7 +7,7 @@ import * as t from 'io-ts'; -import { from } from '../common/schemas'; +import { from } from '@kbn/securitysolution-io-ts-alerting-types'; export const getSignalsMigrationStatusSchema = t.exact( t.type({ diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.test.ts index 2caedd2e01193..1a937473c4b11 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.test.ts @@ -5,9 +5,8 @@ * 2.0. */ -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; import { ImportRulesSchema, diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.ts index 8fa5809abe68b..70a7b8245f176 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/import_rules_schema.ts @@ -7,6 +7,47 @@ import * as t from 'io-ts'; +import { + Actions, + DefaultActionsArray, + DefaultFromString, + DefaultIntervalString, + DefaultMaxSignalsNumber, + DefaultRiskScoreMappingArray, + DefaultSeverityMappingArray, + DefaultThreatArray, + DefaultThrottleNull, + DefaultToString, + From, + machine_learning_job_id, + risk_score, + RiskScoreMapping, + threat_index, + items_per_search, + concurrent_searches, + threat_query, + threat_filters, + threat_mapping, + threat_language, + threat_indicator_path, + Threats, + type, + language, + severity, + SeverityMapping, + ThrottleOrNull, + MaxSignals, +} from '@kbn/securitysolution-io-ts-alerting-types'; + +import { + DefaultVersionNumber, + Version, + DefaultStringArray, + DefaultBooleanTrue, + OnlyFalseAllowed, + DefaultStringBooleanFalse, +} from '@kbn/securitysolution-io-ts-types'; +import { DefaultListArray, ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { description, anomaly_threshold, @@ -18,26 +59,15 @@ import { timeline_id, timeline_title, meta, - machine_learning_job_id, - risk_score, - MaxSignals, name, - severity, Tags, To, - type, - Threats, threshold, - ThrottleOrNull, note, - Version, References, - Actions, Enabled, FalsePositives, - From, Interval, - language, query, rule_id, id, @@ -50,39 +80,8 @@ import { rule_name_override, timestamp_override, Author, - RiskScoreMapping, - SeverityMapping, event_category_override, } from '../common/schemas'; -import { - threat_index, - items_per_search, - concurrent_searches, - threat_query, - threat_filters, - threat_mapping, - threat_language, - threat_indicator_path, -} from '../types/threat_mapping'; - -import { - DefaultStringArray, - DefaultActionsArray, - DefaultBooleanTrue, - DefaultFromString, - DefaultIntervalString, - DefaultMaxSignalsNumber, - DefaultToString, - DefaultThreatArray, - DefaultThrottleNull, - DefaultVersionNumber, - OnlyFalseAllowed, - DefaultStringBooleanFalse, - DefaultListArray, - ListArray, - DefaultRiskScoreMappingArray, - DefaultSeverityMappingArray, -} from '../types'; /** * Differences from this and the createRulesSchema are diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_bulk_schema.test.ts index caa57525ab349..290f190562fe2 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_bulk_schema.test.ts @@ -6,9 +6,7 @@ */ import { patchRulesBulkSchema, PatchRulesBulkSchema } from './patch_rules_bulk_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight } from '../../../test_utils'; -import { formatErrors } from '../../../format_errors'; +import { exactCheck, formatErrors, foldLeftRight } from '@kbn/securitysolution-io-ts-utils'; import { PatchRulesSchema } from './patch_rules_schema'; // only the basics of testing are here. diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.test.ts index 3dfa12acc29d5..5ac49deb32e0d 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.test.ts @@ -7,9 +7,8 @@ import { patchRulesSchema, PatchRulesSchema, PatchRulesSchemaDecoded } from './patch_rules_schema'; import { getPatchRulesSchemaMock, getPatchRulesSchemaDecodedMock } from './patch_rules_schema.mock'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; import { getListArrayMock } from '../types/lists.mock'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.ts index 920fbaf4915c5..8c801e75af08c 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/patch_rules_schema.ts @@ -7,6 +7,32 @@ import * as t from 'io-ts'; +import { + actions, + from, + machine_learning_job_id, + risk_score, + risk_score_mapping, + threat_index, + concurrent_searches, + items_per_search, + threat_query, + threat_filters, + threat_mapping, + threat_language, + threat_indicator_path, + threats, + type, + language, + severity, + severity_mapping, + max_signals, + throttle, +} from '@kbn/securitysolution-io-ts-alerting-types'; + +import { version } from '@kbn/securitysolution-io-ts-types'; + +import { listArrayOrUndefined } from '@kbn/securitysolution-io-ts-list-types'; import { description, anomaly_threshold, @@ -17,27 +43,16 @@ import { timeline_id, timeline_title, meta, - machine_learning_job_id, - risk_score, rule_id, name, - severity, - type, note, - version, - actions, false_positives, interval, - max_signals, - from, enabled, tags, - threats, threshold, - throttle, references, to, - language, query, id, building_block_type, @@ -45,21 +60,8 @@ import { license, rule_name_override, timestamp_override, - risk_score_mapping, - severity_mapping, event_category_override, } from '../common/schemas'; -import { - threat_index, - concurrent_searches, - items_per_search, - threat_query, - threat_filters, - threat_mapping, - threat_language, - threat_indicator_path, -} from '../types/threat_mapping'; -import { listArrayOrUndefined } from '../types/lists'; /** * All of the patch elements should default to undefined if not set diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_bulk_schema.test.ts index 5c1ded9a6ec50..fa167090b2f3a 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_bulk_schema.test.ts @@ -6,9 +6,7 @@ */ import { queryRulesBulkSchema, QueryRulesBulkSchema } from './query_rules_bulk_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight } from '../../../test_utils'; -import { formatErrors } from '../../../format_errors'; +import { exactCheck, formatErrors, foldLeftRight } from '@kbn/securitysolution-io-ts-utils'; // only the basics of testing are here. // see: query_rules_schema.test.ts for the bulk of the validation tests diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_schema.test.ts index 95c045b90f800..566d752a8623e 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_rules_schema.test.ts @@ -6,9 +6,8 @@ */ import { queryRulesSchema, QueryRulesSchema } from './query_rules_schema'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; describe('query_rules_schema', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.test.ts index ef7dfb9496ec3..65107079c5800 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.test.ts @@ -6,9 +6,8 @@ */ import { QuerySignalsSchema, querySignalsSchema } from './query_signals_index_schema'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; describe('query, aggs, size, _source and track_total_hits on signals index', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.ts index d7f17fd842b9f..81761dd085df6 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/query_signals_index_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { PositiveIntegerGreaterThanZero } from '../types/positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; export const querySignalsSchema = t.exact( t.partial({ diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.test.ts index 70ff921d3b334..2e4a53766448b 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.test.ts @@ -6,9 +6,8 @@ */ import { createRulesSchema, CreateRulesSchema, SavedQueryCreateSchema } from './rule_schemas'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; import { getCreateSavedQueryRulesSchemaMock, diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.ts index c7b33372e5953..dbc40763a0c6c 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/rule_schemas.ts @@ -7,8 +7,12 @@ import * as t from 'io-ts'; -import { listArray } from '../types/lists'; import { + actions, + from, + risk_score, + machine_learning_job_id, + risk_score_mapping, threat_filters, threat_query, threat_mapping, @@ -16,14 +20,20 @@ import { threat_indicator_path, concurrent_searches, items_per_search, -} from '../types/threat_mapping'; + threats, + severity_mapping, + severity, + max_signals, + throttle, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { listArray } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; + import { id, index, filters, event_category_override, - risk_score_mapping, - severity_mapping, building_block_type, note, license, @@ -35,25 +45,17 @@ import { author, description, false_positives, - from, rule_id, immutable, output_index, query, - machine_learning_job_id, - max_signals, - risk_score, - severity, - threats, to, references, - version, saved_id, threshold, anomaly_threshold, name, tags, - actions, interval, enabled, updated_at, @@ -66,7 +68,6 @@ import { last_success_message, last_failure_at, last_failure_message, - throttle, } from '../common/schemas'; const createSchema = < diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/set_signal_status_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/set_signal_status_schema.test.ts index c189821090f5d..994691ecfa571 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/set_signal_status_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/set_signal_status_schema.test.ts @@ -6,9 +6,8 @@ */ import { setSignalsStatusSchema, SetSignalsStatusSchema } from './set_signal_status_schema'; -import { exactCheck } from '../../../exact_check'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { pipe } from 'fp-ts/lib/pipeable'; -import { foldLeftRight, getPaths } from '../../../test_utils'; import { left } from 'fp-ts/lib/Either'; describe('set signal status schema', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts index 3d0c579e3c46f..63217186affe7 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts @@ -6,9 +6,7 @@ */ import { updateRulesBulkSchema, UpdateRulesBulkSchema } from './update_rules_bulk_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight } from '../../../test_utils'; -import { formatErrors } from '../../../format_errors'; +import { exactCheck, formatErrors, foldLeftRight } from '@kbn/securitysolution-io-ts-utils'; import { getUpdateRulesSchemaMock } from './rule_schemas.mock'; import { UpdateRulesSchema } from './rule_schemas'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/error_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/error_schema.test.ts index a584c9254b171..5ef7f80a09a2d 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/error_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/error_schema.test.ts @@ -9,8 +9,7 @@ import { left } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; import { errorSchema, ErrorSchema } from './error_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getErrorSchemaMock } from './error_schema.mocks'; describe('error_schema', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/import_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/import_rules_schema.test.ts index cb9876b0a165a..4c8cdbdd427af 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/import_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/import_rules_schema.test.ts @@ -10,8 +10,7 @@ import { left, Either } from 'fp-ts/lib/Either'; import { ImportRulesSchema, importRulesSchema } from './import_rules_schema'; import { ErrorSchema } from './error_schema'; import { Errors } from 'io-ts'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('import_rules_schema', () => { test('it should validate an empty import response with no errors', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_schema.test.ts index 67f3da8459410..fbbc754f597a0 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_schema.test.ts @@ -11,8 +11,7 @@ import { PrePackagedRulesAndTimelinesSchema, prePackagedRulesAndTimelinesSchema, } from './prepackaged_rules_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('prepackaged_rules_schema', () => { test('it should validate an empty prepackaged response with defaults', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_status_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_status_schema.test.ts index 5a7b1dd14c341..de44c7e5e37ad 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_status_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/prepackaged_rules_status_schema.test.ts @@ -11,8 +11,7 @@ import { PrePackagedRulesAndTimelinesStatusSchema, prePackagedRulesAndTimelinesStatusSchema, } from './prepackaged_rules_status_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('prepackaged_rules_schema', () => { test('it should validate an empty prepackaged response with defaults', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_bulk_schema.test.ts index 3501ecfc0c1ba..55d5444bccf7e 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_bulk_schema.test.ts @@ -11,8 +11,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { RulesBulkSchema, rulesBulkSchema } from './rules_bulk_schema'; import { RulesSchema } from './rules_schema'; import { ErrorSchema } from './error_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getRulesSchemaMock } from './rules_schema.mocks'; import { getErrorSchemaMock } from './error_schema.mocks'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.test.ts index 4865c0ee77d54..a8521c013f451 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.test.ts @@ -21,8 +21,7 @@ import { addThreatMatchFields, addEqlFields, } from './rules_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { TypeAndTimelineOnly } from './type_timeline_only_schema'; import { getRulesSchemaMock, @@ -30,7 +29,7 @@ import { getThreatMatchingSchemaMock, getRulesEqlSchemaMock, } from './rules_schema.mocks'; -import { ListArray } from '../types/lists'; +import { ListArray } from '@kbn/securitysolution-io-ts-list-types'; export const ANCHOR_DATE = '2020-02-20T03:57:54.037Z'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.ts index 6bd54973e064f..0924588600d38 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/rules_schema.ts @@ -10,50 +10,64 @@ import { isObject } from 'lodash/fp'; import { Either, left, fold } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; +import { + actions, + from, + machine_learning_job_id, + risk_score, + DefaultRiskScoreMappingArray, + DefaultSeverityMappingArray, + threat_index, + concurrent_searches, + items_per_search, + threat_query, + threat_filters, + threat_mapping, + threat_language, + threat_indicator_path, + threats, + type, + language, + severity, + throttle, + max_signals, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { DefaultStringArray, version } from '@kbn/securitysolution-io-ts-types'; + +import { DefaultListArray } from '@kbn/securitysolution-io-ts-list-types'; import { isMlRule } from '../../../machine_learning/helpers'; import { isThresholdRule } from '../../utils'; import { - actions, anomaly_threshold, description, enabled, event_category_override, false_positives, - from, id, immutable, index, interval, rule_id, - language, name, output_index, - max_signals, - machine_learning_job_id, query, references, - severity, updated_by, tags, to, - risk_score, created_at, created_by, updated_at, saved_id, timeline_id, timeline_title, - type, - threats, threshold, - throttle, job_status, status_date, last_success_at, last_success_message, last_failure_at, last_failure_message, - version, filters, meta, note, @@ -62,23 +76,7 @@ import { rule_name_override, timestamp_override, } from '../common/schemas'; -import { - threat_index, - concurrent_searches, - items_per_search, - threat_query, - threat_filters, - threat_mapping, - threat_language, - threat_indicator_path, -} from '../types/threat_mapping'; -import { DefaultListArray } from '../types/lists_default_array'; -import { - DefaultStringArray, - DefaultRiskScoreMappingArray, - DefaultSeverityMappingArray, -} from '../types'; import { typeAndTimelineOnlySchema, TypeAndTimelineOnly } from './type_timeline_only_schema'; /** diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.test.ts index 7099b03de58b1..58612376760ba 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.test.ts @@ -9,8 +9,7 @@ import { left } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; import { TypeAndTimelineOnly, typeAndTimelineOnlySchema } from './type_timeline_only_schema'; -import { exactCheck } from '../../../exact_check'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('prepackaged_rule_schema', () => { test('it should validate a a type and timeline_id together', () => { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.ts index 3aff1b62dfb90..b164ab9b44e4f 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/response/type_timeline_only_schema.ts @@ -7,7 +7,8 @@ import * as t from 'io-ts'; -import { timeline_id, type } from '../common/schemas'; +import { type } from '@kbn/securitysolution-io-ts-alerting-types'; +import { timeline_id } from '../common/schemas'; /** * Special schema type that is only the type and the timeline_id. diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_boolean_true.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_boolean_true.test.ts deleted file mode 100644 index 14b4f034358cd..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_boolean_true.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultBooleanTrue } from './default_boolean_true'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_boolean_true', () => { - test('it should validate a boolean false', () => { - const payload = false; - const decoded = DefaultBooleanTrue.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a boolean true', () => { - const payload = true; - const decoded = DefaultBooleanTrue.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultBooleanTrue.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultBooleanTrue"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default true', () => { - const payload = null; - const decoded = DefaultBooleanTrue.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(true); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_from_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_from_string.test.ts deleted file mode 100644 index ca3ecb2bfb904..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/deafult_from_string.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultFromString } from './default_from_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_from_string', () => { - test('it should validate a from string', () => { - const payload = 'now-20m'; - const decoded = DefaultFromString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultFromString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultFromString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of "now-6m"', () => { - const payload = null; - const decoded = DefaultFromString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual('now-6m'); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.test.ts deleted file mode 100644 index 993e96f5d3191..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.test.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultActionsArray } from './default_actions_array'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { Actions } from '../common/schemas'; - -describe('default_actions_array', () => { - test('it should validate an empty array', () => { - const payload: string[] = []; - const decoded = DefaultActionsArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of actions', () => { - const payload: Actions = [ - { id: '123', group: 'group', action_type_id: 'action_type_id', params: {} }, - ]; - const decoded = DefaultActionsArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = [ - { id: '123', group: 'group', action_type_id: 'action_type_id', params: {} }, - 5, - ]; - const decoded = DefaultActionsArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultActionsArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default array entry', () => { - const payload = null; - const decoded = DefaultActionsArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.ts deleted file mode 100644 index 49302102ddee9..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_actions_array.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { actions, Actions } from '../common/schemas'; - -/** - * Types the DefaultStringArray as: - * - If undefined, then a default action array will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultActionsArray = new t.Type( - 'DefaultActionsArray', - actions.is, - (input, context): Either => - input == null ? t.success([]) : actions.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.test.ts deleted file mode 100644 index 92c2669071f11..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.test.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { DefaultArray } from './default_array'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -const testSchema = t.keyof({ - valid: true, - also_valid: true, -}); -type TestSchema = t.TypeOf; - -const defaultArraySchema = DefaultArray(testSchema); - -describe('default_array', () => { - test('it should validate an empty array', () => { - const payload: string[] = []; - const decoded = defaultArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of testSchema', () => { - const payload: TestSchema[] = ['valid']; - const decoded = defaultArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of valid testSchema strings', () => { - const payload = ['valid', 'also_valid']; - const decoded = defaultArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = ['valid', 123]; - const decoded = defaultArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "123" supplied to "DefaultArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate an array with an invalid string', () => { - const payload = ['valid', 'invalid']; - const decoded = defaultArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "invalid" supplied to "DefaultArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default array entry', () => { - const payload = null; - const decoded = defaultArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.ts deleted file mode 100644 index a6397754b23d7..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_array.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultArray as: - * - If undefined, then a default array will be set - * - If an array is sent in, then the array will be validated to ensure all elements are type C - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultArray = (codec: C) => { - const arrType = t.array(codec); - type ArrType = t.TypeOf; - return new t.Type( - 'DefaultArray', - arrType.is, - (input, context): Either => - input == null ? t.success([]) : arrType.validate(input, context), - t.identity - ); -}; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.test.ts deleted file mode 100644 index c01efa6e55d4c..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultBooleanFalse } from './default_boolean_false'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_boolean_false', () => { - test('it should validate a boolean false', () => { - const payload = false; - const decoded = DefaultBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a boolean true', () => { - const payload = true; - const decoded = DefaultBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultBooleanFalse"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default false', () => { - const payload = null; - const decoded = DefaultBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(false); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.ts deleted file mode 100644 index 46e7bde55638a..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_false.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultBooleanFalse as: - * - If null or undefined, then a default false will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultBooleanFalse = new t.Type( - 'DefaultBooleanFalse', - t.boolean.is, - (input, context): Either => - input == null ? t.success(false) : t.boolean.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_true.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_true.ts deleted file mode 100644 index 3845150841c22..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_boolean_true.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultBooleanTrue as: - * - If null or undefined, then a default true will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultBooleanTrue = new t.Type( - 'DefaultBooleanTrue', - t.boolean.is, - (input, context): Either => - input == null ? t.success(true) : t.boolean.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.test.ts deleted file mode 100644 index 08a5354dc74bd..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultEmptyString } from './default_empty_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_empty_string', () => { - test('it should validate a regular string', () => { - const payload = 'some string'; - const decoded = DefaultEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultEmptyString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of ""', () => { - const payload = null; - const decoded = DefaultEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(''); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.ts deleted file mode 100644 index 77a06a928a2e3..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_empty_string.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultEmptyString as: - * - If null or undefined, then a default of an empty string "" will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultEmptyString = new t.Type( - 'DefaultEmptyString', - t.string.is, - (input, context): Either => - input == null ? t.success('') : t.string.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.test.ts deleted file mode 100644 index f53c6d801dc53..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultExportFileName } from './default_export_file_name'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_export_file_name', () => { - test('it should validate a regular string', () => { - const payload = 'some string'; - const decoded = DefaultExportFileName.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultExportFileName.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultExportFileName"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of "export.ndjson"', () => { - const payload = null; - const decoded = DefaultExportFileName.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual('export.ndjson'); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.ts deleted file mode 100644 index a2b2fb6eaad31..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_export_file_name.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultExportFileName as: - * - If null or undefined, then a default of "export.ndjson" will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultExportFileName = new t.Type( - 'DefaultExportFileName', - t.string.is, - (input, context): Either => - input == null ? t.success('export.ndjson') : t.string.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_from_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_from_string.ts deleted file mode 100644 index a2eb2a2b9f46f..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_from_string.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { from } from '../common/schemas'; -/** - * Types the DefaultFromString as: - * - If null or undefined, then a default of the string "now-6m" will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultFromString = new t.Type( - 'DefaultFromString', - t.string.is, - (input, context): Either => { - if (input == null) { - return t.success('now-6m'); - } - return from.validate(input, context); - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.test.ts deleted file mode 100644 index 99e15403ef3a2..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultIntervalString } from './default_interval_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_interval_string', () => { - test('it should validate a interval string', () => { - const payload = '20m'; - const decoded = DefaultIntervalString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultIntervalString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultIntervalString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of "5m"', () => { - const payload = null; - const decoded = DefaultIntervalString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual('5m'); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.ts deleted file mode 100644 index fb3a5931199a1..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_interval_string.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultIntervalString as: - * - If null or undefined, then a default of the string "5m" will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultIntervalString = new t.Type( - 'DefaultIntervalString', - t.string.is, - (input, context): Either => - input == null ? t.success('5m') : t.string.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.test.ts deleted file mode 100644 index 615f27e08b197..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultLanguageString } from './default_language_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { Language } from '../common/schemas'; - -describe('default_language_string', () => { - test('it should validate a string', () => { - const payload: Language = 'lucene'; - const decoded = DefaultLanguageString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultLanguageString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultLanguageString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of "kuery"', () => { - const payload = null; - const decoded = DefaultLanguageString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual('kuery'); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.ts deleted file mode 100644 index a40b0d8eeacaa..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_language_string.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { language } from '../common/schemas'; - -/** - * Types the DefaultLanguageString as: - * - If null or undefined, then a default of the string "kuery" will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultLanguageString = new t.Type( - 'DefaultLanguageString', - t.string.is, - (input, context): Either => - input == null ? t.success('kuery') : language.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.test.ts deleted file mode 100644 index bdfdc15150b9a..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultMaxSignalsNumber } from './default_max_signals_number'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { DEFAULT_MAX_SIGNALS } from '../../../constants'; - -describe('default_from_string', () => { - test('it should validate a max signal number', () => { - const payload = 5; - const decoded = DefaultMaxSignalsNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a string', () => { - const payload = '5'; - const decoded = DefaultMaxSignalsNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultMaxSignals"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a zero', () => { - const payload = 0; - const decoded = DefaultMaxSignalsNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "DefaultMaxSignals"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a negative number', () => { - const payload = -1; - const decoded = DefaultMaxSignalsNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "DefaultMaxSignals"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of DEFAULT_MAX_SIGNALS', () => { - const payload = null; - const decoded = DefaultMaxSignalsNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(DEFAULT_MAX_SIGNALS); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.ts deleted file mode 100644 index d9209cdba4d00..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_max_signals_number.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { max_signals } from '../common/schemas'; -import { DEFAULT_MAX_SIGNALS } from '../../../constants'; - -/** - * Types the default max signal: - * - Natural Number (positive integer and not a float), - * - greater than 1 - * - If undefined then it will use DEFAULT_MAX_SIGNALS (100) as the default - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultMaxSignalsNumber = new t.Type( - 'DefaultMaxSignals', - t.number.is, - (input, context): Either => { - return input == null ? t.success(DEFAULT_MAX_SIGNALS) : max_signals.validate(input, context); - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.test.ts deleted file mode 100644 index 9392454127586..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.test.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultPage } from './default_page'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_page', () => { - test('it should validate a regular number greater than zero', () => { - const payload = 5; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a string of a number', () => { - const payload = '5'; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(5); - }); - - test('it should not validate a junk string', () => { - const payload = 'invalid-string'; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "NaN" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate an empty string', () => { - const payload = ''; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "NaN" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a zero', () => { - const payload = 0; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a negative number', () => { - const payload = -1; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of 20', () => { - const payload = null; - const decoded = DefaultPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(1); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.ts deleted file mode 100644 index 2f2cdaf3b6cd2..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_page.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { PositiveIntegerGreaterThanZero } from './positive_integer_greater_than_zero'; - -/** - * Types the DefaultPerPage as: - * - If a string this will convert the string to a number - * - If null or undefined, then a default of 1 will be used - * - If the number is 0 or less this will not validate as it has to be a positive number greater than zero - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultPage = new t.Type( - 'DefaultPerPage', - t.number.is, - (input, context): Either => { - if (input == null) { - return t.success(1); - } else if (typeof input === 'string') { - return PositiveIntegerGreaterThanZero.validate(parseInt(input, 10), context); - } else { - return PositiveIntegerGreaterThanZero.validate(input, context); - } - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.test.ts deleted file mode 100644 index 5a550dca120e8..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.test.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultPerPage } from './default_per_page'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_per_page', () => { - test('it should validate a regular number greater than zero', () => { - const payload = 5; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a string of a number', () => { - const payload = '5'; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(5); - }); - - test('it should not validate a junk string', () => { - const payload = 'invalid-string'; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "NaN" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate an empty string', () => { - const payload = ''; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "NaN" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a zero', () => { - const payload = 0; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a negative number', () => { - const payload = -1; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "DefaultPerPage"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of 20', () => { - const payload = null; - const decoded = DefaultPerPage.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(20); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.ts deleted file mode 100644 index 124fdf25917fa..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_per_page.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { PositiveIntegerGreaterThanZero } from './positive_integer_greater_than_zero'; - -/** - * Types the DefaultPerPage as: - * - If a string this will convert the string to a number - * - If null or undefined, then a default of 20 will be used - * - If the number is 0 or less this will not validate as it has to be a positive number greater than zero - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultPerPage = new t.Type( - 'DefaultPerPage', - t.number.is, - (input, context): Either => { - if (input == null) { - return t.success(20); - } else if (typeof input === 'string') { - return PositiveIntegerGreaterThanZero.validate(parseInt(input, 10), context); - } else { - return PositiveIntegerGreaterThanZero.validate(input, context); - } - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_risk_score_mapping_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_risk_score_mapping_array.ts deleted file mode 100644 index 219b9d30b52ea..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_risk_score_mapping_array.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { risk_score_mapping, RiskScoreMapping } from '../common/schemas'; - -/** - * Types the DefaultStringArray as: - * - If null or undefined, then a default risk_score_mapping array will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultRiskScoreMappingArray = new t.Type< - RiskScoreMapping, - RiskScoreMapping | undefined, - unknown ->( - 'DefaultRiskScoreMappingArray', - risk_score_mapping.is, - (input, context): Either => - input == null ? t.success([]) : risk_score_mapping.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_severity_mapping_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_severity_mapping_array.ts deleted file mode 100644 index fe65574383294..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_severity_mapping_array.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { severity_mapping, SeverityMapping } from '../common/schemas'; - -/** - * Types the DefaultStringArray as: - * - If null or undefined, then a default severity_mapping array will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultSeverityMappingArray = new t.Type< - SeverityMapping, - SeverityMapping | undefined, - unknown ->( - 'DefaultSeverityMappingArray', - severity_mapping.is, - (input, context): Either => - input == null ? t.success([]) : severity_mapping.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.test.ts deleted file mode 100644 index c8995f6a7cef0..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultStringArray } from './default_string_array'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_string_array', () => { - test('it should validate an empty array', () => { - const payload: string[] = []; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of strings', () => { - const payload = ['value 1', 'value 2']; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = ['value 1', 5]; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultStringArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default array entry', () => { - const payload = null; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.ts deleted file mode 100644 index be4b5563ddb13..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_array.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultStringArray as: - * - If undefined, then a default array will be set - * - If an array is sent in, then the array will be validated to ensure all elements are a string - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultStringArray = new t.Type( - 'DefaultStringArray', - t.array(t.string).is, - (input, context): Either => - input == null ? t.success([]) : t.array(t.string).validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.test.ts deleted file mode 100644 index 2ee3e87e37e00..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.test.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { DefaultStringBooleanFalse } from './default_string_boolean_false'; - -describe('default_string_boolean_false', () => { - test('it should validate a boolean false', () => { - const payload = false; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a boolean true', () => { - const payload = true; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultStringBooleanFalse"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default false', () => { - const payload = null; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(false); - }); - - test('it should return a default false when given a string of "false"', () => { - const payload = 'false'; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(false); - }); - - test('it should return a default true when given a string of "true"', () => { - const payload = 'true'; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(true); - }); - - test('it should return a default true when given a string of "TruE"', () => { - const payload = 'TruE'; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(true); - }); - - test('it should not work with a string of junk "junk"', () => { - const payload = 'junk'; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "junk" supplied to "DefaultStringBooleanFalse"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not work with an empty string', () => { - const payload = ''; - const decoded = DefaultStringBooleanFalse.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "" supplied to "DefaultStringBooleanFalse"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.ts deleted file mode 100644 index 69bd4564fd3bb..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_string_boolean_false.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultStringBooleanFalse as: - * - If a string this will convert the string to a boolean - * - If null or undefined, then a default false will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultStringBooleanFalse = new t.Type( - 'DefaultStringBooleanFalse', - t.boolean.is, - (input, context): Either => { - if (input == null) { - return t.success(false); - } else if (typeof input === 'string' && input.toLowerCase() === 'true') { - return t.success(true); - } else if (typeof input === 'string' && input.toLowerCase() === 'false') { - return t.success(false); - } else { - return t.boolean.validate(input, context); - } - }, - t.identity -); - -export type DefaultStringBooleanFalseC = typeof DefaultStringBooleanFalse; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.test.ts deleted file mode 100644 index d04338586371f..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultThreatArray } from './default_threat_array'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { Threats } from '../common/schemas'; - -describe('default_threat_null', () => { - test('it should validate an empty array', () => { - const payload: Threats = []; - const decoded = DefaultThreatArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of threats', () => { - const payload: Threats = [ - { - framework: 'MITRE ATTACK', - technique: [{ reference: 'https://test.com', name: 'Audio Capture', id: 'T1123' }], - tactic: { reference: 'https://test.com', name: 'Collection', id: 'TA000999' }, - }, - ]; - const decoded = DefaultThreatArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = [ - { - framework: 'MITRE ATTACK', - technique: [{ reference: 'https://test.com', name: 'Audio Capture', id: 'T1123' }], - tactic: { reference: 'https://test.com', name: 'Collection', id: 'TA000999' }, - }, - 5, - ]; - const decoded = DefaultThreatArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultThreatArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default empty array if not provided a value', () => { - const payload = null; - const decoded = DefaultThreatArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.ts deleted file mode 100644 index 86c7ab245d6f3..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_threat_array.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { Threats, threats } from '../common/schemas'; - -/** - * Types the DefaultThreatArray as: - * - If null or undefined, then an empty array will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultThreatArray = new t.Type( - 'DefaultThreatArray', - threats.is, - (input, context): Either => - input == null ? t.success([]) : threats.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.test.ts deleted file mode 100644 index 1f29718533c13..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultThrottleNull } from './default_throttle_null'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { Throttle } from '../common/schemas'; - -describe('default_throttle_null', () => { - test('it should validate a throttle string', () => { - const payload: Throttle = 'some string'; - const decoded = DefaultThrottleNull.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = 5; - const decoded = DefaultThrottleNull.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultThreatNull"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default "null" if not provided a value', () => { - const payload = undefined; - const decoded = DefaultThrottleNull.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(null); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.ts deleted file mode 100644 index db6eb5eab32ae..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_throttle_null.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { ThrottleOrNull, throttle } from '../common/schemas'; - -/** - * Types the DefaultThrottleNull as: - * - If null or undefined, then a null will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultThrottleNull = new t.Type( - 'DefaultThreatNull', - throttle.is, - (input, context): Either => - input == null ? t.success(null) : throttle.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.test.ts deleted file mode 100644 index defb348b7e009..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultToString } from './default_to_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_to_string', () => { - test('it should validate a to string', () => { - const payload = 'now-5m'; - const decoded = DefaultToString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultToString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultToString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of "now"', () => { - const payload = null; - const decoded = DefaultToString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual('now'); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.ts deleted file mode 100644 index 05c93951bfe1e..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_to_string.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the DefaultToString as: - * - If null or undefined, then a default of the string "now" will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultToString = new t.Type( - 'DefaultToString', - t.string.is, - (input, context): Either => - input == null ? t.success('now') : t.string.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.test.ts deleted file mode 100644 index e2b2ac5015967..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultUuid } from './default_uuid'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_uuid', () => { - test('it should validate a regular string', () => { - const payload = '1'; - const decoded = DefaultUuid.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = DefaultUuid.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "DefaultUuid"']); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of a uuid', () => { - const payload = null; - const decoded = DefaultUuid.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toMatch( - /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i - ); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.ts deleted file mode 100644 index ecb8cd00ff308..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_uuid.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import uuid from 'uuid'; - -import { NonEmptyString } from './non_empty_string'; - -/** - * Types the DefaultUuid as: - * - If null or undefined, then a default string uuid.v4() will be - * created otherwise it will be checked just against an empty string - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultUuid = new t.Type( - 'DefaultUuid', - t.string.is, - (input, context): Either => - input == null ? t.success(uuid.v4()) : NonEmptyString.validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.test.ts deleted file mode 100644 index a50a9ed7815b3..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultVersionNumber } from './default_version_number'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_version_number', () => { - test('it should validate a version number', () => { - const payload = 5; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a 0', () => { - const payload = 0; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a -1', () => { - const payload = -1; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a string', () => { - const payload = '5'; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of 1', () => { - const payload = null; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(1); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.ts deleted file mode 100644 index 625973694a244..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/default_version_number.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { version, Version } from '../common/schemas'; - -/** - * Types the DefaultVersionNumber as: - * - If null or undefined, then a default of the number 1 will be used - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultVersionNumber = new t.Type( - 'DefaultVersionNumber', - version.is, - (input, context): Either => - input == null ? t.success(1) : version.validate(input, context), - t.identity -); - -export type DefaultVersionNumberDecoded = t.TypeOf; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/index.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/index.ts deleted file mode 100644 index ff69075580ad9..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './default_actions_array'; -export * from './default_array'; -export * from './default_boolean_false'; -export * from './default_boolean_true'; -export * from './default_empty_string'; -export * from './default_export_file_name'; -export * from './default_from_string'; -export * from './default_interval_string'; -export * from './default_language_string'; -export * from './default_max_signals_number'; -export * from './default_page'; -export * from './default_per_page'; -export * from './default_risk_score_mapping_array'; -export * from './default_severity_mapping_array'; -export * from './default_string_array'; -export * from './default_string_boolean_false'; -export * from './default_threat_array'; -export * from './default_throttle_null'; -export * from './default_to_string'; -export * from './default_uuid'; -export * from './default_version_number'; -export * from './iso_date_string'; -export * from './lists'; -export * from './lists_default_array'; -export * from './non_empty_array'; -export * from './non_empty_string'; -export * from './only_false_allowed'; -export * from './positive_integer'; -export * from './positive_integer_greater_than_zero'; -export * from './references_default_array'; -export * from './risk_score'; -export * from './threat_mapping'; -export * from './uuid'; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.test.ts deleted file mode 100644 index ff45aef21f837..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { IsoDateString } from './iso_date_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('ios_date_string', () => { - test('it should validate a iso string', () => { - const payload = '2020-02-26T00:32:34.541Z'; - const decoded = IsoDateString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an epoch number', () => { - const payload = '1582677283067'; - const decoded = IsoDateString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "1582677283067" supplied to "IsoDateString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a number such as 2000', () => { - const payload = '2000'; - const decoded = IsoDateString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "2000" supplied to "IsoDateString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a UTC', () => { - const payload = 'Wed, 26 Feb 2020 00:36:20 GMT'; - const decoded = IsoDateString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "Wed, 26 Feb 2020 00:36:20 GMT" supplied to "IsoDateString"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.ts deleted file mode 100644 index 9c8f490d2d59a..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/iso_date_string.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the IsoDateString as: - * - A string that is an ISOString - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const IsoDateString = new t.Type( - 'IsoDateString', - t.string.is, - (input, context): Either => { - if (typeof input === 'string') { - try { - const parsed = new Date(input); - if (parsed.toISOString() === input) { - return t.success(input); - } else { - return t.failure(input, context); - } - } catch (err) { - return t.failure(input, context); - } - } else { - return t.failure(input, context); - } - }, - t.identity -); - -export type IsoDateStringC = typeof IsoDateString; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts index 62a3c51b31bd0..70f41539e8466 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { List, ListArray } from './lists'; +import { List, ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ID } from '../../../shared_imports'; export const getListMock = (): List => ({ diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.test.ts deleted file mode 100644 index 28b70f51742a7..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.test.ts +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; - -import { foldLeftRight, getPaths } from '../../../test_utils'; - -import { getEndpointListMock, getListMock, getListArrayMock } from './lists.mock'; -import { - List, - ListArray, - ListArrayOrUndefined, - list, - listArray, - listArrayOrUndefined, -} from './lists'; - -describe('Lists', () => { - describe('list', () => { - test('it should validate a list', () => { - const payload = getListMock(); - const decoded = list.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a list with "namespace_type" of "agnostic"', () => { - const payload = getEndpointListMock(); - const decoded = list.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should NOT validate a list without an "id"', () => { - const payload = getListMock(); - // @ts-expect-error - delete payload.id; - const decoded = list.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "undefined" supplied to "id"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should NOT validate a list without "namespace_type"', () => { - const payload = getListMock(); - // @ts-expect-error - delete payload.namespace_type; - const decoded = list.decode(payload); - const message = pipe(decoded, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "undefined" supplied to "namespace_type"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should strip out extra keys', () => { - const payload: List & { - extraKey?: string; - } = getListMock(); - payload.extraKey = 'some value'; - const decoded = list.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(getListMock()); - }); - }); - - describe('listArray', () => { - test('it should validate an array of lists', () => { - const payload = getListArrayMock(); - const decoded = listArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate when unexpected type found in array', () => { - const payload = ([1] as unknown) as ListArray; - const decoded = listArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "1" supplied to "Array<{| id: NonEmptyString, list_id: NonEmptyString, type: "detection" | "endpoint" | "endpoint_events", namespace_type: "agnostic" | "single" |}>"', - ]); - expect(message.schema).toEqual({}); - }); - }); - - describe('listArrayOrUndefined', () => { - test('it should validate an array of lists', () => { - const payload = getListArrayMock(); - const decoded = listArrayOrUndefined.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate when undefined', () => { - const payload = undefined; - const decoded = listArrayOrUndefined.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not allow an item that is not of type "list" in array', () => { - const payload = ([1] as unknown) as ListArrayOrUndefined; - const decoded = listArrayOrUndefined.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "1" supplied to "(Array<{| id: NonEmptyString, list_id: NonEmptyString, type: "detection" | "endpoint" | "endpoint_events", namespace_type: "agnostic" | "single" |}> | undefined)"', - 'Invalid value "[1]" supplied to "(Array<{| id: NonEmptyString, list_id: NonEmptyString, type: "detection" | "endpoint" | "endpoint_events", namespace_type: "agnostic" | "single" |}> | undefined)"', - ]); - expect(message.schema).toEqual({}); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts deleted file mode 100644 index e2c3ee88f6a65..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { exceptionListType, namespaceType } from '@kbn/securitysolution-io-ts-list-types'; - -import { NonEmptyString } from './non_empty_string'; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const list = t.exact( - t.type({ - id: NonEmptyString, - list_id: NonEmptyString, - type: exceptionListType, - namespace_type: namespaceType, - }) -); - -export type List = t.TypeOf; -export const listArray = t.array(list); -export type ListArray = t.TypeOf; -export const listArrayOrUndefined = t.union([listArray, t.undefined]); -export type ListArrayOrUndefined = t.TypeOf; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.test.ts deleted file mode 100644 index 0d989b4de0b28..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; - -import { foldLeftRight, getPaths } from '../../../test_utils'; - -import { DefaultListArray } from './lists_default_array'; -import { getListArrayMock } from './lists.mock'; - -describe('lists_default_array', () => { - test('it should return a default array when null', () => { - const payload = null; - const decoded = DefaultListArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); - - test('it should return a default array when undefined', () => { - const payload = undefined; - const decoded = DefaultListArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); - - test('it should validate an empty array', () => { - const payload: string[] = []; - const decoded = DefaultListArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of lists', () => { - const payload = getListArrayMock(); - const decoded = DefaultListArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array of non accepted types', () => { - // Terrible casting for purpose of tests - const payload = [1] as unknown; - const decoded = DefaultListArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "1" supplied to "DefaultListArray"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.ts deleted file mode 100644 index eba48c0419ec2..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/lists_default_array.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -import { ListArray, list } from './lists'; - -/** - * Types the DefaultListArray as: - * - If null or undefined, then a default array of type list will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const DefaultListArray = new t.Type( - 'DefaultListArray', - t.array(list).is, - (input, context): Either => - input == null ? t.success([]) : t.array(list).validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.test.ts deleted file mode 100644 index c08cb70f544ee..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.test.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { NonEmptyArray } from './non_empty_array'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -const testSchema = t.keyof({ - valid: true, - also_valid: true, -}); -type TestSchema = t.TypeOf; - -const nonEmptyArraySchema = NonEmptyArray(testSchema, 'TestSchemaArray'); - -describe('non empty array', () => { - test('it should generate the correct name for non empty array', () => { - const newTestSchema = NonEmptyArray(testSchema); - expect(newTestSchema.name).toEqual('NonEmptyArray<"valid" | "also_valid">'); - }); - - test('it should use a supplied name override', () => { - const newTestSchema = NonEmptyArray(testSchema, 'someName'); - expect(newTestSchema.name).toEqual('someName'); - }); - - test('it should NOT validate an empty array', () => { - const payload: string[] = []; - const decoded = nonEmptyArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "[]" supplied to "TestSchemaArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should validate an array of testSchema', () => { - const payload: TestSchema[] = ['valid']; - const decoded = nonEmptyArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of valid testSchema strings', () => { - const payload: TestSchema[] = ['valid', 'also_valid']; - const decoded = nonEmptyArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = ['valid', 123]; - const decoded = nonEmptyArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "123" supplied to "TestSchemaArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate an array with an invalid string', () => { - const payload = ['valid', 'invalid']; - const decoded = nonEmptyArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "invalid" supplied to "TestSchemaArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a null value', () => { - const payload = null; - const decoded = nonEmptyArraySchema.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "null" supplied to "TestSchemaArray"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.ts deleted file mode 100644 index 1b5261931230d..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_array.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const NonEmptyArray = ( - codec: C, - name: string = `NonEmptyArray<${codec.name}>` -) => { - const arrType = t.array(codec); - type ArrType = t.TypeOf; - return new t.Type( - name, - arrType.is, - (input, context): Either => { - if (Array.isArray(input) && input.length === 0) { - return t.failure(input, context); - } else { - return arrType.validate(input, context); - } - }, - t.identity - ); -}; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.test.ts deleted file mode 100644 index 470f8bc81c5d6..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { NonEmptyString } from './non_empty_string'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('non_empty_string', () => { - test('it should validate a regular string', () => { - const payload = '1'; - const decoded = NonEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = NonEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "NonEmptyString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate an empty string', () => { - const payload = ''; - const decoded = NonEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "" supplied to "NonEmptyString"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate empty spaces', () => { - const payload = ' '; - const decoded = NonEmptyString.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value " " supplied to "NonEmptyString"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.ts deleted file mode 100644 index e01eabd4c434e..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/non_empty_string.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the NonEmptyString as: - * - A string that is not empty - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const NonEmptyString = new t.Type( - 'NonEmptyString', - t.string.is, - (input, context): Either => { - if (typeof input === 'string' && input.trim() !== '') { - return t.success(input); - } else { - return t.failure(input, context); - } - }, - t.identity -); - -export type NonEmptyStringC = typeof NonEmptyString; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/normalized_ml_job_id.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/normalized_ml_job_id.ts deleted file mode 100644 index 7001cb8254d2b..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/normalized_ml_job_id.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -/* eslint-disable @typescript-eslint/naming-convention */ - -import * as t from 'io-ts'; - -import { NonEmptyArray } from './non_empty_array'; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const machine_learning_job_id_normalized = NonEmptyArray(t.string); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type MachineLearningJobIdNormalized = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const machineLearningJobIdNormalizedOrUndefined = t.union([ - machine_learning_job_id_normalized, - t.undefined, -]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type MachineLearningJobIdNormalizedOrUndefined = t.TypeOf< - typeof machineLearningJobIdNormalizedOrUndefined ->; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.test.ts deleted file mode 100644 index a22266fb04f6a..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { OnlyFalseAllowed } from './only_false_allowed'; - -describe('only_false_allowed', () => { - test('it should validate a boolean false as false', () => { - const payload = false; - const decoded = OnlyFalseAllowed.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a boolean true', () => { - const payload = true; - const decoded = OnlyFalseAllowed.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "true" supplied to "DefaultBooleanTrue"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a number', () => { - const payload = 5; - const decoded = OnlyFalseAllowed.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultBooleanTrue"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default false', () => { - const payload = null; - const decoded = OnlyFalseAllowed.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(false); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.ts deleted file mode 100644 index 8150979cf2947..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/only_false_allowed.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the OnlyFalseAllowed as: - * - If null or undefined, then a default false will be set - * - If true is sent in then this will return an error - * - If false is sent in then this will allow it only false - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const OnlyFalseAllowed = new t.Type( - 'DefaultBooleanTrue', - t.boolean.is, - (input, context): Either => { - if (input == null) { - return t.success(false); - } else { - if (typeof input === 'boolean' && input === false) { - return t.success(false); - } else { - return t.failure(input, context); - } - } - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer.ts deleted file mode 100644 index 1771d0515fa20..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the positive integer are: - * - Natural Number (positive integer and not a float), - * - zero or greater - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const PositiveInteger = new t.Type( - 'PositiveInteger', - t.number.is, - (input, context): Either => { - return typeof input === 'number' && Number.isSafeInteger(input) && input >= 0 - ? t.success(input) - : t.failure(input, context); - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.test.ts deleted file mode 100644 index dfb8b90633c83..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PositiveIntegerGreaterThanZero } from './positive_integer_greater_than_zero'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('positive_integer_greater_than_zero', () => { - test('it should validate a positive number', () => { - const payload = 1; - const decoded = PositiveIntegerGreaterThanZero.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should NOT validate a zero', () => { - const payload = 0; - const decoded = PositiveIntegerGreaterThanZero.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should NOT validate a negative number', () => { - const payload = -1; - const decoded = PositiveIntegerGreaterThanZero.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should NOT validate a string', () => { - const payload = 'some string'; - const decoded = PositiveIntegerGreaterThanZero.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "some string" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.ts deleted file mode 100644 index ddfb82b748ee3..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/positive_integer_greater_than_zero.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the positive integer greater than zero is: - * - Natural Number (positive integer and not a float), - * - 1 or greater - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const PositiveIntegerGreaterThanZero = new t.Type( - 'PositiveIntegerGreaterThanZero', - t.number.is, - (input, context): Either => { - return typeof input === 'number' && Number.isSafeInteger(input) && input >= 1 - ? t.success(input) - : t.failure(input, context); - }, - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/postive_integer.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/postive_integer.test.ts deleted file mode 100644 index b0c64e70787af..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/postive_integer.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { PositiveInteger } from './positive_integer'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('positive_integer_greater_than_zero', () => { - test('it should validate a positive number', () => { - const payload = 1; - const decoded = PositiveInteger.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a zero', () => { - const payload = 0; - const decoded = PositiveInteger.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should NOT validate a negative number', () => { - const payload = -1; - const decoded = PositiveInteger.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "PositiveInteger"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should NOT validate a string', () => { - const payload = 'some string'; - const decoded = PositiveInteger.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "some string" supplied to "PositiveInteger"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.test.ts deleted file mode 100644 index c8995f6a7cef0..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { DefaultStringArray } from './default_string_array'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('default_string_array', () => { - test('it should validate an empty array', () => { - const payload: string[] = []; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate an array of strings', () => { - const payload = ['value 1', 'value 2']; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate an array with a number', () => { - const payload = ['value 1', 5]; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultStringArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default array entry', () => { - const payload = null; - const decoded = DefaultStringArray.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual([]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.ts deleted file mode 100644 index a76606911f4ae..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/references_default_array.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the ReferencesDefaultArray as: - * - If null or undefined, then a default array will be set - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const ReferencesDefaultArray = new t.Type( - 'referencesWithDefaultArray', - t.array(t.string).is, - (input, context): Either => - input == null ? t.success([]) : t.array(t.string).validate(input, context), - t.identity -); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.test.ts deleted file mode 100644 index 67e8c801391ce..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RiskScore } from './risk_score'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('risk_score', () => { - test('it should validate a positive number', () => { - const payload = 1; - const decoded = RiskScore.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should validate a zero', () => { - const payload = 0; - const decoded = RiskScore.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should NOT validate a negative number', () => { - const payload = -1; - const decoded = RiskScore.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['Invalid value "-1" supplied to "RiskScore"']); - expect(message.schema).toEqual({}); - }); - - test('it should NOT validate a string', () => { - const payload = 'some string'; - const decoded = RiskScore.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "some string" supplied to "RiskScore"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should NOT validate a risk score greater than 100', () => { - const payload = 101; - const decoded = RiskScore.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['Invalid value "101" supplied to "RiskScore"']); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.ts deleted file mode 100644 index e518bf13fd181..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/risk_score.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -/** - * Types the risk score as: - * - Natural Number (positive integer and not a float), - * - Between the values [0 and 100] inclusive. - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const RiskScore = new t.Type( - 'RiskScore', - t.number.is, - (input, context): Either => { - return typeof input === 'number' && Number.isSafeInteger(input) && input >= 0 && input <= 100 - ? t.success(input) - : t.failure(input, context); - }, - t.identity -); - -export type RiskScoreC = typeof RiskScore; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts index e8a62822bfe5a..fb063a130e83f 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Threats } from '../common/schemas'; +import { Threats } from '@kbn/securitysolution-io-ts-alerting-types'; export const getThreatMock = (): Threats => [ { diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.test.ts deleted file mode 100644 index c89c1059eedf0..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.test.ts +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - concurrent_searches, - items_per_search, - ThreatMapping, - threatMappingEntries, - ThreatMappingEntries, - threat_mapping, -} from './threat_mapping'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; -import { exactCheck } from '../../../exact_check'; - -describe('threat_mapping', () => { - describe('threatMappingEntries', () => { - test('it should validate an entry', () => { - const payload: ThreatMappingEntries = [ - { - field: 'field.one', - type: 'mapping', - value: 'field.one', - }, - ]; - const decoded = threatMappingEntries.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should fail validation with an extra entry item', () => { - const payload: ThreatMappingEntries & Array<{ extra: string }> = [ - { - field: 'field.one', - type: 'mapping', - value: 'field.one', - extra: 'blah', - }, - ]; - const decoded = threatMappingEntries.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['invalid keys "extra"']); - expect(message.schema).toEqual({}); - }); - - test('it should fail validation with a non string', () => { - const payload = ([ - { - field: 5, - type: 'mapping', - value: 'field.one', - }, - ] as unknown) as ThreatMappingEntries[]; - const decoded = threatMappingEntries.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "field"']); - expect(message.schema).toEqual({}); - }); - - test('it should fail validation with a wrong type', () => { - const payload = ([ - { - field: 'field.one', - type: 'invalid', - value: 'field.one', - }, - ] as unknown) as ThreatMappingEntries[]; - const decoded = threatMappingEntries.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "invalid" supplied to "type"', - ]); - expect(message.schema).toEqual({}); - }); - }); - - describe('threat_mapping', () => { - test('it should validate a threat mapping', () => { - const payload: ThreatMapping = [ - { - entries: [ - { - field: 'field.one', - type: 'mapping', - value: 'field.one', - }, - ], - }, - ]; - const decoded = threat_mapping.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - }); - - test('it should fail validate with an extra key', () => { - const payload: ThreatMapping & Array<{ extra: string }> = [ - { - entries: [ - { - field: 'field.one', - type: 'mapping', - value: 'field.one', - }, - ], - extra: 'invalid', - }, - ]; - - const decoded = threat_mapping.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['invalid keys "extra"']); - expect(message.schema).toEqual({}); - }); - - test('it should fail validate with an extra inner entry', () => { - const payload: ThreatMapping & Array<{ entries: Array<{ extra: string }> }> = [ - { - entries: [ - { - field: 'field.one', - type: 'mapping', - value: 'field.one', - extra: 'blah', - }, - ], - }, - ]; - - const decoded = threat_mapping.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['invalid keys "extra"']); - expect(message.schema).toEqual({}); - }); - - test('it should fail validate with an extra inner entry with the wrong data type', () => { - const payload = ([ - { - entries: [ - { - field: 5, - type: 'mapping', - value: 'field.one', - }, - ], - }, - ] as unknown) as ThreatMapping; - - const decoded = threat_mapping.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "entries,field"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should fail validate with empty array', () => { - const payload: string[] = []; - - const decoded = threat_mapping.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "[]" supplied to "NonEmptyArray"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should fail validation when concurrent_searches is < 0', () => { - const payload = -1; - const decoded = concurrent_searches.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should fail validation when concurrent_searches is 0', () => { - const payload = 0; - const decoded = concurrent_searches.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should fail validation when items_per_search is 0', () => { - const payload = 0; - const decoded = items_per_search.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should fail validation when items_per_search is < 0', () => { - const payload = -1; - const decoded = items_per_search.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "PositiveIntegerGreaterThanZero"', - ]); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.ts deleted file mode 100644 index 707b51e6b8965..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/threat_mapping.ts +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* eslint-disable @typescript-eslint/naming-convention */ - -import * as t from 'io-ts'; -import { language } from '../common/schemas'; -import { NonEmptyArray } from './non_empty_array'; -import { NonEmptyString } from './non_empty_string'; -import { PositiveIntegerGreaterThanZero } from './positive_integer_greater_than_zero'; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_query = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatQuery = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatQueryOrUndefined = t.union([threat_query, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatQueryOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_indicator_path = t.string; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatIndicatorPath = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatIndicatorPathOrUndefined = t.union([threat_indicator_path, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatIndicatorPathOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_filters = t.array(t.unknown); // Filters are not easily type-able yet - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatFilters = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatFiltersOrUndefined = t.union([threat_filters, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatFiltersOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatMapEntry = t.exact( - t.type({ - field: NonEmptyString, - type: t.keyof({ mapping: null }), - value: NonEmptyString, - }) -); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatMapEntry = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatMappingEntries = t.array(threatMapEntry); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatMappingEntries = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatMap = t.exact( - t.type({ - entries: threatMappingEntries, - }) -); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatMap = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_mapping = NonEmptyArray(threatMap, 'NonEmptyArray'); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatMapping = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatMappingOrUndefined = t.union([threat_mapping, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatMappingOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_index = t.array(t.string); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatIndex = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatIndexOrUndefined = t.union([threat_index, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatIndexOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threat_language = t.union([language, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatLanguage = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const threatLanguageOrUndefined = t.union([threat_language, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ThreatLanguageOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const concurrent_searches = PositiveIntegerGreaterThanZero; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ConcurrentSearches = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const concurrentSearchesOrUndefined = t.union([concurrent_searches, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ConcurrentSearchesOrUndefined = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const items_per_search = PositiveIntegerGreaterThanZero; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ItemsPerSearch = t.TypeOf; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const itemsPerSearchOrUndefined = t.union([items_per_search, t.undefined]); - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export type ItemsPerSearchOrUndefined = t.TypeOf; diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.test.ts deleted file mode 100644 index 2a98fd16c7107..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { UUID } from './uuid'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../../test_utils'; - -describe('uuid', () => { - test('it should validate a uuid', () => { - const payload = '4656dc92-5832-11ea-8e2d-0242ac130003'; - const decoded = UUID.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a non uuid', () => { - const payload = '4656dc92-5832-11ea-8e2d'; - const decoded = UUID.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "4656dc92-5832-11ea-8e2d" supplied to "UUID"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate an empty string', () => { - const payload = ''; - const decoded = UUID.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual(['Invalid value "" supplied to "UUID"']); - expect(message.schema).toEqual({}); - }); -}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.ts deleted file mode 100644 index 79a130b26a6fd..0000000000000 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/types/uuid.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; - -const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; - -/** - * Types the risk score as: - * - Natural Number (positive integer and not a float), - * - Between the values [0 and 100] inclusive. - * @deprecated Use packages/kbn-securitysolution-io-ts-utils - */ -export const UUID = new t.Type( - 'UUID', - t.string.is, - (input, context): Either => { - return typeof input === 'string' && regex.test(input) - ? t.success(input) - : t.failure(input, context); - }, - t.identity -); - -export type UUIDC = typeof UUID; diff --git a/x-pack/plugins/security_solution/common/detection_engine/utils.ts b/x-pack/plugins/security_solution/common/detection_engine/utils.ts index 611d23fd1ce22..6aa672881ff70 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/utils.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/utils.ts @@ -9,9 +9,10 @@ import { isEmpty } from 'lodash'; import type { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; +import { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../shared_imports'; -import { Type, JobStatus, Threshold, ThresholdNormalized } from './schemas/common/schemas'; +import { JobStatus, Threshold, ThresholdNormalized } from './schemas/common/schemas'; export const hasLargeValueItem = ( exceptionItems: Array diff --git a/x-pack/plugins/security_solution/common/exact_check.test.ts b/x-pack/plugins/security_solution/common/exact_check.test.ts deleted file mode 100644 index d4a4ad4ce76ce..0000000000000 --- a/x-pack/plugins/security_solution/common/exact_check.test.ts +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { left, right, Either } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; - -import { exactCheck, findDifferencesRecursive } from './exact_check'; -import { foldLeftRight, getPaths } from './test_utils'; - -describe('exact_check', () => { - test('it returns an error if given extra object properties', () => { - const someType = t.exact( - t.type({ - a: t.string, - }) - ); - const payload = { a: 'test', b: 'test' }; - const decoded = someType.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual(['invalid keys "b"']); - expect(message.schema).toEqual({}); - }); - - test('it returns an error if the data type is not as expected', () => { - type UnsafeCastForTest = Either< - t.Errors, - { - a: number; - } - >; - - const someType = t.exact( - t.type({ - a: t.string, - }) - ); - - const payload = { a: 1 }; - const decoded = someType.decode(payload); - const checked = exactCheck(payload, decoded as UnsafeCastForTest); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual(['Invalid value "1" supplied to "a"']); - expect(message.schema).toEqual({}); - }); - - test('it does NOT return an error if given normal object properties', () => { - const someType = t.exact( - t.type({ - a: t.string, - }) - ); - const payload = { a: 'test' }; - const decoded = someType.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it will return an existing error and not validate', () => { - const payload = { a: 'test' }; - const validationError: t.ValidationError = { - value: 'Some existing error', - context: [], - message: 'some error', - }; - const error: t.Errors = [validationError]; - const leftValue = left(error); - const checked = exactCheck(payload, leftValue); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual(['some error']); - expect(message.schema).toEqual({}); - }); - - test('it will work with a regular "right" payload without any decoding', () => { - const payload = { a: 'test' }; - const rightValue = right(payload); - const checked = exactCheck(payload, rightValue); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual({ a: 'test' }); - }); - - test('it will work with decoding a null payload when the schema expects a null', () => { - const someType = t.union([ - t.exact( - t.type({ - a: t.string, - }) - ), - t.null, - ]); - const payload = null; - const decoded = someType.decode(payload); - const checked = exactCheck(payload, decoded); - const message = pipe(checked, foldLeftRight); - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(null); - }); - - test('it should find no differences recursively with two empty objects', () => { - const difference = findDifferencesRecursive({}, {}); - expect(difference).toEqual([]); - }); - - test('it should find a single difference with two objects with different keys', () => { - const difference = findDifferencesRecursive({ a: 1 }, { b: 1 }); - expect(difference).toEqual(['a']); - }); - - test('it should find a two differences with two objects with multiple different keys', () => { - const difference = findDifferencesRecursive({ a: 1, c: 1 }, { b: 1 }); - expect(difference).toEqual(['a', 'c']); - }); - - test('it should find no differences with two objects with the same keys', () => { - const difference = findDifferencesRecursive({ a: 1, b: 1 }, { a: 1, b: 1 }); - expect(difference).toEqual([]); - }); - - test('it should find a difference with two deep objects with different same keys', () => { - const difference = findDifferencesRecursive({ a: 1, b: { c: 1 } }, { a: 1, b: { d: 1 } }); - expect(difference).toEqual(['c']); - }); - - test('it should find a difference within an array', () => { - const difference = findDifferencesRecursive({ a: 1, b: [{ c: 1 }] }, { a: 1, b: [{ a: 1 }] }); - expect(difference).toEqual(['c']); - }); - - test('it should find a no difference when using arrays that are identical', () => { - const difference = findDifferencesRecursive({ a: 1, b: [{ c: 1 }] }, { a: 1, b: [{ c: 1 }] }); - expect(difference).toEqual([]); - }); - - test('it should find differences when one has an array and the other does not', () => { - const difference = findDifferencesRecursive({ a: 1, b: [{ c: 1 }] }, { a: 1 }); - expect(difference).toEqual(['b', '[{"c":1}]']); - }); - - test('it should find differences when one has an deep object and the other does not', () => { - const difference = findDifferencesRecursive({ a: 1, b: { c: 1 } }, { a: 1 }); - expect(difference).toEqual(['b', '{"c":1}']); - }); - - test('it should find differences when one has a deep object with multiple levels and the other does not', () => { - const difference = findDifferencesRecursive({ a: 1, b: { c: { d: 1 } } }, { a: 1 }); - expect(difference).toEqual(['b', '{"c":{"d":1}}']); - }); - - test('it tests two deep objects as the same with no key differences', () => { - const difference = findDifferencesRecursive( - { a: 1, b: { c: { d: 1 } } }, - { a: 1, b: { c: { d: 1 } } } - ); - expect(difference).toEqual([]); - }); - - test('it tests two deep objects with just one deep key difference', () => { - const difference = findDifferencesRecursive( - { a: 1, b: { c: { d: 1 } } }, - { a: 1, b: { c: { e: 1 } } } - ); - expect(difference).toEqual(['d']); - }); - - test('it should not find any differences when the original and decoded are both null', () => { - const difference = findDifferencesRecursive(null, null); - expect(difference).toEqual([]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/exact_check.ts b/x-pack/plugins/security_solution/common/exact_check.ts deleted file mode 100644 index 5334989ea085b..0000000000000 --- a/x-pack/plugins/security_solution/common/exact_check.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { left, Either, fold, right } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { isObject, get } from 'lodash/fp'; - -/** - * Given an original object and a decoded object this will return an error - * if and only if the original object has additional keys that the decoded - * object does not have. If the original decoded already has an error, then - * this will return the error as is and not continue. - * - * NOTE: You MUST use t.exact(...) for this to operate correctly as your schema - * needs to remove additional keys before the compare - * - * You might not need this in the future if the below issue is solved: - * https://github.com/gcanti/io-ts/issues/322 - * - * @param original The original to check if it has additional keys - * @param decoded The decoded either which has either an existing error or the - * decoded object which could have additional keys stripped from it. - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/exact_check/index.ts - */ -export const exactCheck = ( - original: unknown, - decoded: Either -): Either => { - const onLeft = (errors: t.Errors): Either => left(errors); - const onRight = (decodedValue: T): Either => { - const differences = findDifferencesRecursive(original, decodedValue); - if (differences.length !== 0) { - const validationError: t.ValidationError = { - value: differences, - context: [], - message: `invalid keys "${differences.join(',')}"`, - }; - const error: t.Errors = [validationError]; - return left(error); - } else { - return right(decodedValue); - } - }; - return pipe(decoded, fold(onLeft, onRight)); -}; - -export const findDifferencesRecursive = (original: unknown, decodedValue: T): string[] => { - if (decodedValue === null && original === null) { - // both the decodedValue and the original are null which indicates that they are equal - // so do not report differences - return []; - } else if (decodedValue == null) { - try { - // It is null and painful when the original contains an object or an array - // the the decoded value does not have. - return [JSON.stringify(original)]; - } catch (err) { - return ['circular reference']; - } - } else if (typeof original !== 'object' || original == null) { - // We are not an object or null so do not report differences - return []; - } else { - const decodedKeys = Object.keys(decodedValue); - const differences = Object.keys(original).flatMap((originalKey) => { - const foundKey = decodedKeys.some((key) => key === originalKey); - const topLevelKey = foundKey ? [] : [originalKey]; - // I use lodash to cheat and get an any (not going to lie ;-)) - const valueObjectOrArrayOriginal = get(originalKey, original); - const valueObjectOrArrayDecoded = get(originalKey, decodedValue); - if (isObject(valueObjectOrArrayOriginal)) { - return [ - ...topLevelKey, - ...findDifferencesRecursive(valueObjectOrArrayOriginal, valueObjectOrArrayDecoded), - ]; - } else if (Array.isArray(valueObjectOrArrayOriginal)) { - return [ - ...topLevelKey, - ...valueObjectOrArrayOriginal.flatMap((arrayElement, index) => - findDifferencesRecursive(arrayElement, get(index, valueObjectOrArrayDecoded)) - ), - ]; - } else { - return topLevelKey; - } - }); - return differences; - } -}; diff --git a/x-pack/plugins/security_solution/common/format_errors.test.ts b/x-pack/plugins/security_solution/common/format_errors.test.ts deleted file mode 100644 index 149bae85fec8a..0000000000000 --- a/x-pack/plugins/security_solution/common/format_errors.test.ts +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { formatErrors } from './format_errors'; - -describe('utils', () => { - test('returns an empty error message string if there are no errors', () => { - const errors: t.Errors = []; - const output = formatErrors(errors); - expect(output).toEqual([]); - }); - - test('returns a single error message if given one', () => { - const validationError: t.ValidationError = { - value: 'Some existing error', - context: [], - message: 'some error', - }; - const errors: t.Errors = [validationError]; - const output = formatErrors(errors); - expect(output).toEqual(['some error']); - }); - - test('returns a two error messages if given two', () => { - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context: [], - message: 'some error 1', - }; - const validationError2: t.ValidationError = { - value: 'Some existing error 2', - context: [], - message: 'some error 2', - }; - const errors: t.Errors = [validationError1, validationError2]; - const output = formatErrors(errors); - expect(output).toEqual(['some error 1', 'some error 2']); - }); - - test('it filters out duplicate error messages', () => { - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context: [], - message: 'some error 1', - }; - const validationError2: t.ValidationError = { - value: 'Some existing error 1', - context: [], - message: 'some error 1', - }; - const errors: t.Errors = [validationError1, validationError2]; - const output = formatErrors(errors); - expect(output).toEqual(['some error 1']); - }); - - test('will use message before context if it is set', () => { - const context: t.Context = ([{ key: 'some string key' }] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - message: 'I should be used first', - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual(['I should be used first']); - }); - - test('will use context entry of a single string', () => { - const context: t.Context = ([{ key: 'some string key' }] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual(['Invalid value "Some existing error 1" supplied to "some string key"']); - }); - - test('will use two context entries of two strings', () => { - const context: t.Context = ([ - { key: 'some string key 1' }, - { key: 'some string key 2' }, - ] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual([ - 'Invalid value "Some existing error 1" supplied to "some string key 1,some string key 2"', - ]); - }); - - test('will filter out and not use any strings of numbers', () => { - const context: t.Context = ([ - { key: '5' }, - { key: 'some string key 2' }, - ] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual([ - 'Invalid value "Some existing error 1" supplied to "some string key 2"', - ]); - }); - - test('will filter out and not use null', () => { - const context: t.Context = ([ - { key: null }, - { key: 'some string key 2' }, - ] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual([ - 'Invalid value "Some existing error 1" supplied to "some string key 2"', - ]); - }); - - test('will filter out and not use empty strings', () => { - const context: t.Context = ([ - { key: '' }, - { key: 'some string key 2' }, - ] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual([ - 'Invalid value "Some existing error 1" supplied to "some string key 2"', - ]); - }); - - test('will use a name context if it cannot find a keyContext', () => { - const context: t.Context = ([ - { key: '' }, - { key: '', type: { name: 'someName' } }, - ] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual(['Invalid value "Some existing error 1" supplied to "someName"']); - }); - - test('will return an empty string if name does not exist but type does', () => { - const context: t.Context = ([{ key: '' }, { key: '', type: {} }] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: 'Some existing error 1', - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual(['Invalid value "Some existing error 1" supplied to ""']); - }); - - test('will stringify an error value', () => { - const context: t.Context = ([ - { key: '' }, - { key: 'some string key 2' }, - ] as unknown) as t.Context; - const validationError1: t.ValidationError = { - value: { foo: 'some error' }, - context, - }; - const errors: t.Errors = [validationError1]; - const output = formatErrors(errors); - expect(output).toEqual([ - 'Invalid value "{"foo":"some error"}" supplied to "some string key 2"', - ]); - }); -}); diff --git a/x-pack/plugins/security_solution/common/format_errors.ts b/x-pack/plugins/security_solution/common/format_errors.ts deleted file mode 100644 index 16925699b0fcf..0000000000000 --- a/x-pack/plugins/security_solution/common/format_errors.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { isObject } from 'lodash/fp'; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/format_errors/index.ts - */ -export const formatErrors = (errors: t.Errors): string[] => { - const err = errors.map((error) => { - if (error.message != null) { - return error.message; - } else { - const keyContext = error.context - .filter( - (entry) => entry.key != null && !Number.isInteger(+entry.key) && entry.key.trim() !== '' - ) - .map((entry) => entry.key) - .join(','); - - const nameContext = error.context.find((entry) => entry.type?.name?.length > 0); - const suppliedValue = - keyContext !== '' ? keyContext : nameContext != null ? nameContext.type.name : ''; - const value = isObject(error.value) ? JSON.stringify(error.value) : error.value; - return `Invalid value "${value}" supplied to "${suppliedValue}"`; - } - }); - - return [...new Set(err)]; -}; diff --git a/x-pack/plugins/security_solution/common/index.ts b/x-pack/plugins/security_solution/common/index.ts index 9f4af059632c4..1fec1c76430eb 100644 --- a/x-pack/plugins/security_solution/common/index.ts +++ b/x-pack/plugins/security_solution/common/index.ts @@ -4,5 +4,3 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -export * from './shared_exports'; diff --git a/x-pack/plugins/security_solution/common/machine_learning/helpers.ts b/x-pack/plugins/security_solution/common/machine_learning/helpers.ts index 60477d3685db7..819337d8b715a 100644 --- a/x-pack/plugins/security_solution/common/machine_learning/helpers.ts +++ b/x-pack/plugins/security_solution/common/machine_learning/helpers.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '../detection_engine/schemas/common/schemas'; +import { Type } from '@kbn/securitysolution-io-ts-alerting-types'; // Based on ML Job/Datafeed States from x-pack/legacy/plugins/ml/common/constants/states.js const enabledStates = ['started', 'opened']; diff --git a/x-pack/plugins/security_solution/common/shared_exports.ts b/x-pack/plugins/security_solution/common/shared_exports.ts deleted file mode 100644 index bf740ddce9fd6..0000000000000 --- a/x-pack/plugins/security_solution/common/shared_exports.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { NonEmptyString } from './detection_engine/schemas/types/non_empty_string'; -export { DefaultArray } from './detection_engine/schemas/types/default_array'; -export { DefaultUuid } from './detection_engine/schemas/types/default_uuid'; -export { DefaultStringArray } from './detection_engine/schemas/types/default_string_array'; -export { - DefaultVersionNumber, - DefaultVersionNumberDecoded, -} from './detection_engine/schemas/types/default_version_number'; -export { exactCheck } from './exact_check'; -export { getPaths, foldLeftRight, removeExternalLinkText } from './test_utils'; -export { validate, validateEither } from './validate'; -export { formatErrors } from './format_errors'; -export { addIdToItem, removeIdFromItem } from './add_remove_id_to_item'; diff --git a/x-pack/plugins/security_solution/common/shared_imports.ts b/x-pack/plugins/security_solution/common/shared_imports.ts index a6bad0347e641..8f858e724394b 100644 --- a/x-pack/plugins/security_solution/common/shared_imports.ts +++ b/x-pack/plugins/security_solution/common/shared_imports.ts @@ -12,9 +12,6 @@ export { CreateExceptionListSchema, CreateExceptionListItemSchema, UpdateExceptionListItemSchema, - exceptionListItemSchema, - createExceptionListItemSchema, - listSchema, ENDPOINT_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID, EXCEPTION_LIST_URL, diff --git a/x-pack/plugins/security_solution/common/test_utils.ts b/x-pack/plugins/security_solution/common/test_utils.ts deleted file mode 100644 index df9e9e12fc1d9..0000000000000 --- a/x-pack/plugins/security_solution/common/test_utils.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { fold } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { formatErrors } from './format_errors'; - -interface Message { - errors: t.Errors; - schema: T | {}; -} - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/test_utils/index.ts - */ -const onLeft = (errors: t.Errors): Message => { - return { schema: {}, errors }; -}; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/test_utils/index.ts - */ -const onRight = (schema: T): Message => { - return { - schema, - errors: [], - }; -}; - -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/test_utils/index.ts - */ -export const foldLeftRight = fold(onLeft, onRight); - -/** - * Convenience utility to keep the error message handling within tests to be - * very concise. - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/test_utils/index.ts - * @param validation The validation to get the errors from - */ -export const getPaths =
(validation: t.Validation): string[] => { - return pipe( - validation, - fold( - (errors) => formatErrors(errors), - () => ['no errors'] - ) - ); -}; - -/** - * Convenience utility to remove text appended to links by EUI - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/test_utils/index.ts - */ -export const removeExternalLinkText = (str: string) => - str.replace(/\(opens in a new tab or window\)/g, ''); diff --git a/x-pack/plugins/security_solution/common/types/timeline/index.ts b/x-pack/plugins/security_solution/common/types/timeline/index.ts index 5b6c9c532ba7c..7ae52a3990ff7 100644 --- a/x-pack/plugins/security_solution/common/types/timeline/index.ts +++ b/x-pack/plugins/security_solution/common/types/timeline/index.ts @@ -7,6 +7,7 @@ import * as runtimeTypes from 'io-ts'; +import { PositiveInteger } from '@kbn/securitysolution-io-ts-types'; import { stringEnum, unionWithNullType } from '../../utility_types'; import { NoteResult, NoteSavedObject, NoteSavedObjectToReturnRuntimeType } from './note'; import { @@ -19,7 +20,6 @@ import { success_count as successCount, } from '../../detection_engine/schemas/common/schemas'; import { FlowTarget } from '../../search_strategy/security_solution/network'; -import { PositiveInteger } from '../../detection_engine/schemas/types'; import { errorSchema } from '../../detection_engine/schemas/response/error_schema'; import { Direction, Maybe } from '../../search_strategy'; diff --git a/x-pack/plugins/security_solution/common/validate.test.ts b/x-pack/plugins/security_solution/common/validate.test.ts deleted file mode 100644 index e3fe5c55288a3..0000000000000 --- a/x-pack/plugins/security_solution/common/validate.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { left, right } from 'fp-ts/lib/Either'; -import * as t from 'io-ts'; - -import { validate, validateEither } from './validate'; - -describe('validate', () => { - test('it should do a validation correctly', () => { - const schema = t.exact(t.type({ a: t.number })); - const payload = { a: 1 }; - const [validated, errors] = validate(payload, schema); - - expect(validated).toEqual(payload); - expect(errors).toEqual(null); - }); - - test('it should do an in-validation correctly', () => { - const schema = t.exact(t.type({ a: t.number })); - const payload = { a: 'some other value' }; - const [validated, errors] = validate(payload, schema); - - expect(validated).toEqual(null); - expect(errors).toEqual('Invalid value "some other value" supplied to "a"'); - }); -}); - -describe('validateEither', () => { - it('returns the ORIGINAL payload as right if valid', () => { - const schema = t.exact(t.type({ a: t.number })); - const payload = { a: 1 }; - const result = validateEither(schema, payload); - - expect(result).toEqual(right(payload)); - }); - - it('returns an error string if invalid', () => { - const schema = t.exact(t.type({ a: t.number })); - const payload = { a: 'some other value' }; - const result = validateEither(schema, payload); - - expect(result).toEqual(left(new Error('Invalid value "some other value" supplied to "a"'))); - }); -}); diff --git a/x-pack/plugins/security_solution/common/validate.ts b/x-pack/plugins/security_solution/common/validate.ts deleted file mode 100644 index 1ac41ecbfb88b..0000000000000 --- a/x-pack/plugins/security_solution/common/validate.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { fold, Either, mapLeft } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { fromEither, TaskEither } from 'fp-ts/lib/TaskEither'; -import * as t from 'io-ts'; -import { exactCheck } from './exact_check'; -import { formatErrors } from './format_errors'; - -export const validate = ( - obj: object, - schema: T -): [t.TypeOf | null, string | null] => { - const decoded = schema.decode(obj); - const checked = exactCheck(obj, decoded); - const left = (errors: t.Errors): [T | null, string | null] => [ - null, - formatErrors(errors).join(','), - ]; - const right = (output: T): [T | null, string | null] => [output, null]; - return pipe(checked, fold(left, right)); -}; - -export const validateNonExact = ( - obj: unknown, - schema: T -): [t.TypeOf | null, string | null] => { - const decoded = schema.decode(obj); - const left = (errors: t.Errors): [T | null, string | null] => [ - null, - formatErrors(errors).join(','), - ]; - const right = (output: T): [T | null, string | null] => [output, null]; - return pipe(decoded, fold(left, right)); -}; - -export const validateEither = ( - schema: T, - obj: A -): Either => - pipe( - obj, - (a) => schema.validate(a, t.getDefaultContext(schema.asDecoder())), - mapLeft((errors) => new Error(formatErrors(errors).join(','))) - ); - -export const validateTaskEither = ( - schema: T, - obj: A -): TaskEither => fromEither(validateEither(schema, obj)); diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.test.tsx b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.test.tsx index c605a71c50e33..45d4137f8c5b0 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.test.tsx @@ -11,7 +11,7 @@ import { EuiComboBox, EuiComboBoxOptionOption } from '@elastic/eui'; import { waitFor } from '@testing-library/react'; import { getField } from '../../../../../../../src/plugins/data/common/index_patterns/fields/fields.mocks'; -import { ListSchema } from '../../../lists_plugin_deps'; +import { ListSchema } from '../../../shared_imports'; import { getFoundListSchemaMock } from '../../../../../lists/common/schemas/response/found_list_schema.mock'; import { getListResponseMock } from '../../../../../lists/common/schemas/response/list_schema.mock'; import { DATE_NOW, VERSION, IMMUTABLE } from '../../../../../lists/common/constants.mock'; @@ -28,8 +28,8 @@ const mockKeywordList: ListSchema = { }; const mockResult = { ...getFoundListSchemaMock() }; mockResult.data = [...mockResult.data, mockKeywordList]; -jest.mock('../../../lists_plugin_deps', () => { - const originalModule = jest.requireActual('../../../lists_plugin_deps'); +jest.mock('../../../shared_imports', () => { + const originalModule = jest.requireActual('../../../shared_imports'); return { ...originalModule, diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx index 3efa8c4c2d605..37e5961c8cd7e 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx @@ -9,7 +9,7 @@ import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { EuiFormRow, EuiComboBoxOptionOption, EuiComboBox } from '@elastic/eui'; import { IFieldType } from '../../../../../../../src/plugins/data/common'; -import { useFindLists, ListSchema } from '../../../lists_plugin_deps'; +import { useFindLists, ListSchema } from '../../../shared_imports'; import { useKibana } from '../../../common/lib/kibana'; import { filterFieldToList, getGenericComboBoxProps } from './helpers'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts index bd79bb0fcc8e8..13f4e5e6fd6f9 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts @@ -9,7 +9,7 @@ import dateMath from '@elastic/datemath'; import { EuiComboBoxOptionOption } from '@elastic/eui'; import type { Type } from '@kbn/securitysolution-io-ts-list-types'; -import type { ListSchema } from '../../../lists_plugin_deps'; +import type { ListSchema } from '../../../shared_imports'; import { IFieldType } from '../../../../../../../src/plugins/data/common'; import { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx index 6efbbcf64406b..3216a020c3b04 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx @@ -25,7 +25,11 @@ import { EuiComboBox, EuiComboBoxOptionOption, } from '@elastic/eui'; -import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; +import type { + ExceptionListType, + OsTypeArray, + OsType, +} from '@kbn/securitysolution-io-ts-list-types'; import { hasEqlSequenceQuery, isEqlRule, @@ -63,7 +67,6 @@ import { ErrorInfo, ErrorCallout } from '../error_callout'; import { AlertData, ExceptionsBuilderExceptionItem } from '../types'; import { useFetchIndex } from '../../../containers/source'; import { useGetInstalledJob } from '../../ml/hooks/use_get_jobs'; -import { OsTypeArray, OsType } from '../../../../../../lists/common/schemas'; export interface AddExceptionModalProps { ruleName: string; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx index 6c68dcf934b71..ed050574c3994 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx @@ -22,7 +22,11 @@ import { EuiCallOut, } from '@elastic/eui'; -import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; +import type { + ExceptionListType, + OsTypeArray, + OsType, +} from '@kbn/securitysolution-io-ts-list-types'; import { hasEqlSequenceQuery, isEqlRule, @@ -54,7 +58,6 @@ import { import { Loader } from '../../loader'; import { ErrorInfo, ErrorCallout } from '../error_callout'; import { useGetInstalledJob } from '../../ml/hooks/use_get_jobs'; -import { OsTypeArray, OsType } from '../../../../../../lists/common/schemas'; interface EditExceptionModalProps { ruleName: string; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/error_callout.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/error_callout.tsx index 2317ec353a3bf..ba8b5b522f0a7 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/error_callout.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/error_callout.tsx @@ -16,8 +16,8 @@ import { EuiSpacer, } from '@elastic/eui'; +import { List } from '@kbn/securitysolution-io-ts-list-types'; import { HttpSetup } from '../../../../../../../src/core/public'; -import { List } from '../../../../common/detection_engine/schemas/types/lists'; import { Rule } from '../../../detections/containers/detection_engine/rules/types'; import * as i18n from './translations'; import { useDissasociateExceptionList } from '../../../detections/containers/detection_engine/rules/use_dissasociate_exception_list'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts b/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts index 49cdd7103c48b..bbf83a58e3679 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/types.ts @@ -17,11 +17,14 @@ import type { ListOperatorTypeEnum as OperatorTypeEnum, ListOperatorEnum as OperatorEnum, } from '@kbn/securitysolution-io-ts-list-types'; -import { Ecs } from '../../../../common/ecs'; -import { CodeSignature } from '../../../../common/ecs/file'; -import { IFieldType } from '../../../../../../../src/plugins/data/common'; -import { OperatorOption } from '../autocomplete/types'; -import { ExceptionListItemSchema, CreateExceptionListItemSchema } from '../../../lists_plugin_deps'; +import type { Ecs } from '../../../../common/ecs'; +import type { CodeSignature } from '../../../../common/ecs/file'; +import type { IFieldType } from '../../../../../../../src/plugins/data/common'; +import type { OperatorOption } from '../autocomplete/types'; +import type { + ExceptionListItemSchema, + CreateExceptionListItemSchema, +} from '../../../shared_imports'; export interface FormattedEntry { fieldName: string; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx index f609acf9c6c63..c8a624b009c43 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.test.tsx @@ -16,11 +16,11 @@ import * as buildFilterHelpers from '../../../detections/components/alerts_table import { getExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; import { getCreateExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/request/create_exception_list_item_schema.mock'; import { getUpdateExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/request/update_exception_list_item_schema.mock'; -import { +import type { ExceptionListItemSchema, CreateExceptionListItemSchema, UpdateExceptionListItemSchema, -} from '../../../lists_plugin_deps'; +} from '../../../shared_imports'; import { useAddOrUpdateException, UseAddOrUpdateExceptionProps, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx index 614f5301c82e2..6aa68373d5eb5 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_add_exception.tsx @@ -13,7 +13,7 @@ import { ExceptionListItemSchema, CreateExceptionListItemSchema, useApi, -} from '../../../lists_plugin_deps'; +} from '../../../shared_imports'; import { updateAlertStatus } from '../../../detections/containers/detection_engine/alerts/api'; import { getUpdateAlertsQuery } from '../../../detections/components/alerts_table/actions'; import { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx index 17237f4f94c61..d38d920eee188 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.test.tsx @@ -12,8 +12,7 @@ import * as rulesApi from '../../../detections/containers/detection_engine/rules import * as listsApi from '../../../../../lists/public/exceptions/api'; import { getExceptionListSchemaMock } from '../../../../../lists/common/schemas/response/exception_list_schema.mock'; import { savedRuleMock } from '../../../detections/containers/detection_engine/rules/mock'; -import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; -import { ListArray } from '../../../../common/detection_engine/schemas/types'; +import type { ExceptionListType, ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { getListArrayMock } from '../../../../common/detection_engine/schemas/types/lists.mock'; import { useFetchOrCreateRuleExceptionList, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.tsx index 9b970e2caab15..98c207f47a45b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/use_fetch_or_create_rule_exception_list.tsx @@ -6,10 +6,10 @@ */ import { useEffect, useState } from 'react'; +import { List, ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { HttpStart } from '../../../../../../../src/core/public'; import { Rule } from '../../../detections/containers/detection_engine/rules/types'; -import { List, ListArray } from '../../../../common/detection_engine/schemas/types'; import { fetchRuleById, patchRule, @@ -18,7 +18,7 @@ import { fetchExceptionListById, addExceptionList, addEndpointExceptionList, -} from '../../../lists_plugin_deps'; +} from '../../../shared_imports'; import { ExceptionListSchema, CreateExceptionListSchema, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx index 86eca688ef082..ff242506927f1 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/exception_details.tsx @@ -16,10 +16,10 @@ import { import React, { useMemo, Fragment } from 'react'; import styled, { css } from 'styled-components'; -import { DescriptionListItem } from '../../types'; +import type { DescriptionListItem } from '../../types'; import { getDescriptionListContent } from '../helpers'; import * as i18n from '../../translations'; -import { ExceptionListItemSchema } from '../../../../../../public/lists_plugin_deps'; +import type { ExceptionListItemSchema } from '../../../../../../public/shared_imports'; const MyExceptionDetails = styled(EuiFlexItem)` ${({ theme }) => css` diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx index caff2be29ab2d..7909366e7a32e 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exception_item/index.tsx @@ -20,8 +20,8 @@ import { ExceptionDetails } from './exception_details'; import { ExceptionEntries } from './exception_entries'; import { getFormattedComments } from '../../helpers'; import { getFormattedEntries } from '../helpers'; -import { FormattedEntry, ExceptionListItemIdentifiers } from '../../types'; -import { ExceptionListItemSchema } from '../../../../../../public/lists_plugin_deps'; +import type { FormattedEntry, ExceptionListItemIdentifiers } from '../../types'; +import type { ExceptionListItemSchema } from '../../../../../../public/shared_imports'; const MyFlexItem = styled(EuiFlexItem)` &.comments--show { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx index 825bbf5f6f050..1e4cd306c4661 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_viewer_items.tsx @@ -12,8 +12,8 @@ import styled from 'styled-components'; import * as i18n from '../translations'; import { ExceptionItem } from './exception_item'; import { AndOrBadge } from '../../and_or_badge'; -import { ExceptionListItemSchema } from '../../../../../public/lists_plugin_deps'; -import { ExceptionListItemIdentifiers } from '../types'; +import type { ExceptionListItemSchema } from '../../../../../public/shared_imports'; +import type { ExceptionListItemIdentifiers } from '../types'; const MyFlexItem = styled(EuiFlexItem)` margin: ${({ theme }) => `${theme.eui.euiSize} 0`}; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx index abd45cf2945cb..936423d0c362b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/helpers.tsx @@ -12,10 +12,10 @@ import { ExceptionListItemSchema, getEntryValue, getExceptionOperatorSelect, -} from '../../../../lists_plugin_deps'; +} from '../../../../shared_imports'; import { formatOperatingSystems } from '../helpers'; -import { FormattedEntry, BuilderEntry, DescriptionListItem } from '../types'; +import type { FormattedEntry, BuilderEntry, DescriptionListItem } from '../types'; import * as i18n from '../translations'; /** diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx index 971b3fda47191..45db39d6a03ac 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx @@ -11,7 +11,7 @@ import { ThemeProvider } from 'styled-components'; import { ExceptionsViewer } from './'; import { useKibana } from '../../../../common/lib/kibana'; -import { useExceptionListItems, useApi } from '../../../../../public/lists_plugin_deps'; +import { useExceptionListItems, useApi } from '../../../../../public/shared_imports'; import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { getExceptionListSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_schema.mock'; @@ -31,7 +31,7 @@ const mockTheme = getMockTheme({ }); jest.mock('../../../../common/lib/kibana'); -jest.mock('../../../../../public/lists_plugin_deps'); +jest.mock('../../../../../public/shared_imports'); describe('ExceptionsViewer', () => { const ruleName = 'test rule'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx index da7607f40ab72..8055e771a1647 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.tsx @@ -24,7 +24,7 @@ import { ExceptionListItemSchema, UseExceptionListItemsSuccess, useApi, -} from '../../../../../public/lists_plugin_deps'; +} from '../../../../../public/shared_imports'; import { ExceptionsViewerPagination } from './exceptions_pagination'; import { ExceptionsViewerUtility } from './exceptions_utility'; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts index bf8e454e9971f..4908a88b72526 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/reducer.ts @@ -6,17 +6,17 @@ */ import type { ExceptionListType } from '@kbn/securitysolution-io-ts-list-types'; -import { +import type { FilterOptions, ExceptionsPagination, ExceptionListItemIdentifiers, Filter, } from '../types'; -import { +import type { ExceptionListItemSchema, ExceptionListIdentifiers, Pagination, -} from '../../../../../public/lists_plugin_deps'; +} from '../../../../../public/shared_imports'; export type ViewerModalName = 'addModal' | 'editModal' | null; diff --git a/x-pack/plugins/security_solution/public/common/components/links/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/links/index.test.tsx index cd19eb5a27d7b..965167f2c945e 100644 --- a/x-pack/plugins/security_solution/public/common/components/links/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/links/index.test.tsx @@ -7,7 +7,7 @@ import { mount, shallow, ReactWrapper, ShallowWrapper } from 'enzyme'; import React from 'react'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { mountWithIntl } from '@kbn/test/jest'; import { encodeIpv6 } from '../../lib/helpers'; diff --git a/x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx b/x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx index 490392c237e19..da3785648de62 100644 --- a/x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/markdown_editor/renderer.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { mount } from 'enzyme'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { MarkdownRenderer } from './renderer'; describe('Markdown', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx b/x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx index 9c30564699311..0e8edbf047528 100644 --- a/x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/threat_match/entry_delete_button.test.tsx @@ -7,7 +7,7 @@ import { mount } from 'enzyme'; import React from 'react'; -import { ThreatMappingEntries } from '../../../../common/detection_engine/schemas/types'; +import { ThreatMappingEntries } from '@kbn/securitysolution-io-ts-alerting-types'; import { EntryDeleteButtonComponent } from './entry_delete_button'; diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx index 1d576dc6da32c..cf9407a6bf463 100644 --- a/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.test.tsx @@ -20,7 +20,7 @@ import { getFormattedEntry, getUpdatedEntriesOnDelete, } from './helpers'; -import { ThreatMapEntry } from '../../../../common/detection_engine/schemas/types'; +import { ThreatMapEntry } from '@kbn/securitysolution-io-ts-alerting-types'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('123'), diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.tsx b/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.tsx index ef3e9280e6e6b..232fac4ad8433 100644 --- a/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.tsx +++ b/x-pack/plugins/security_solution/public/common/components/threat_match/helpers.tsx @@ -6,15 +6,11 @@ */ import uuid from 'uuid'; -import { - ThreatMap, - threatMap, - ThreatMapping, -} from '../../../../common/detection_engine/schemas/types'; +import { addIdToItem } from '@kbn/securitysolution-utils'; +import { ThreatMap, threatMap, ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import { IndexPattern, IFieldType } from '../../../../../../../src/plugins/data/common'; import { Entry, FormattedEntry, ThreatMapEntries, EmptyEntry } from './types'; -import { addIdToItem } from '../../../../common/add_remove_id_to_item'; /** * Formats the entry into one that is easily usable for the UI. diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/index.tsx b/x-pack/plugins/security_solution/public/common/components/threat_match/index.tsx index 8bdbe7b1a3db8..3e4f0283145e4 100644 --- a/x-pack/plugins/security_solution/public/common/components/threat_match/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/threat_match/index.tsx @@ -9,7 +9,7 @@ import React, { useCallback, useEffect, useReducer } from 'react'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; -import { ThreatMapping } from '../../../../common/detection_engine/schemas/types'; +import { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import { ListItemComponent } from './list_item'; import { IndexPattern } from '../../../../../../../src/plugins/data/common'; import { AndOrBadge } from '../and_or_badge'; diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/reducer.test.ts b/x-pack/plugins/security_solution/public/common/components/threat_match/reducer.test.ts index 8d1ae27ec6f7e..7c19b61efff02 100644 --- a/x-pack/plugins/security_solution/public/common/components/threat_match/reducer.test.ts +++ b/x-pack/plugins/security_solution/public/common/components/threat_match/reducer.test.ts @@ -8,7 +8,7 @@ import { ThreatMapEntries } from './types'; import { State, reducer } from './reducer'; import { getDefaultEmptyEntry } from './helpers'; -import { ThreatMapEntry } from '../../../../common/detection_engine/schemas/types'; +import { ThreatMapEntry } from '@kbn/securitysolution-io-ts-alerting-types'; jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('123'), diff --git a/x-pack/plugins/security_solution/public/common/components/threat_match/types.ts b/x-pack/plugins/security_solution/public/common/components/threat_match/types.ts index 0ea7727f2282a..3d4fa19ac5794 100644 --- a/x-pack/plugins/security_solution/public/common/components/threat_match/types.ts +++ b/x-pack/plugins/security_solution/public/common/components/threat_match/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ThreatMap, ThreatMapEntry } from '../../../../common/detection_engine/schemas/types'; +import { ThreatMap, ThreatMapEntry } from '@kbn/securitysolution-io-ts-alerting-types'; import { IFieldType } from '../../../../../../../src/plugins/data/common'; export interface FormattedEntry { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx index 7b9c3f35ef57b..17162a2206fc3 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx @@ -22,12 +22,12 @@ import { isEmpty } from 'lodash/fp'; import React from 'react'; import styled from 'styled-components'; +import { ThreatMapping, Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { MATCHES, AND, OR } from '../../../../common/components/threat_match/translations'; -import { ThreatMapping } from '../../../../../common/detection_engine/schemas/types'; import { assertUnreachable } from '../../../../../common/utility_types'; import * as i18nSeverity from '../severity_mapping/translations'; import * as i18nRiskScore from '../risk_score_mapping/translations'; -import { Threshold, Type } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Threshold } from '../../../../../common/detection_engine/schemas/common/schemas'; import { esFilters } from '../../../../../../../../src/plugins/data/public'; import { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx index 9c40853794743..ab84f1a65cc4b 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx @@ -10,7 +10,7 @@ import { isEmpty, chunk, get, pick, isNumber } from 'lodash/fp'; import React, { memo, useState } from 'react'; import styled from 'styled-components'; -import { ThreatMapping } from '../../../../../common/detection_engine/schemas/types'; +import { ThreatMapping, Threats, Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { IIndexPattern, Filter, @@ -39,7 +39,6 @@ import { import { buildMlJobsDescription } from './ml_job_description'; import { buildActionsDescription } from './actions_description'; import { buildThrottleDescription } from './throttle_description'; -import { Threats, Type } from '../../../../../common/detection_engine/schemas/common/schemas'; import { THREAT_QUERY_LABEL } from './translations'; import { filterEmptyThreats } from '../../../pages/detection_engine/rules/create/helpers'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts index 0e685da078226..dc5e7fea8e771 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts @@ -6,7 +6,7 @@ */ import { ReactNode } from 'react'; -import { Threats } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Threats } from '@kbn/securitysolution-io-ts-alerting-types'; import { IIndexPattern, diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/helpers.ts index b867d3d76cc70..6f5cb37d9f91f 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/helpers.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ThreatTechnique } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { ThreatTechnique } from '@kbn/securitysolution-io-ts-alerting-types'; import { subtechniquesOptions } from '../../../mitre/mitre_tactics_techniques'; /** diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/index.tsx index c39efa1409bc3..25eb7a65e0d1b 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/index.tsx @@ -11,7 +11,7 @@ import React, { memo, useCallback, useMemo } from 'react'; import styled from 'styled-components'; import { isEqual } from 'lodash'; -import { Threat, Threats } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Threat, Threats } from '@kbn/securitysolution-io-ts-alerting-types'; import { tacticsOptions } from '../../../mitre/mitre_tactics_techniques'; import * as Rulei18n from '../../../pages/detection_engine/rules/translations'; import { FieldHook } from '../../../../shared_imports'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx index d283c19bd13da..7504a5d706f18 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/subtechnique_fields.tsx @@ -17,10 +17,7 @@ import { camelCase } from 'lodash/fp'; import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; -import { - Threats, - ThreatSubtechnique, -} from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Threats, ThreatSubtechnique } from '@kbn/securitysolution-io-ts-alerting-types'; import { subtechniquesOptions } from '../../../mitre/mitre_tactics_techniques'; import * as Rulei18n from '../../../pages/detection_engine/rules/translations'; import { FieldHook } from '../../../../shared_imports'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx index 7f698740f5d3b..5a0fde1a739a3 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/mitre/technique_fields.tsx @@ -17,10 +17,7 @@ import { kebabCase, camelCase } from 'lodash/fp'; import React, { useCallback } from 'react'; import styled, { css } from 'styled-components'; -import { - Threats, - ThreatTechnique, -} from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Threats, ThreatTechnique } from '@kbn/securitysolution-io-ts-alerting-types'; import { techniquesOptions } from '../../../mitre/mitre_tactics_techniques'; import * as Rulei18n from '../../../pages/detection_engine/rules/translations'; import { FieldHook } from '../../../../shared_imports'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/helpers.ts index bc4888acc90ff..1d3135b8cb34a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/helpers.ts @@ -9,10 +9,10 @@ import { Position, ScaleType } from '@elastic/charts'; import { EuiSelectOption } from '@elastic/eui'; import { Unit } from '@elastic/datemath'; +import { Type, Language } from '@kbn/securitysolution-io-ts-alerting-types'; import * as i18n from './translations'; import { histogramDateTimeFormatter } from '../../../../common/components/utils'; import { ChartSeriesConfigs } from '../../../../common/components/charts/common'; -import { Type, Language } from '../../../../../common/detection_engine/schemas/common/schemas'; import { getQueryFilter } from '../../../../../common/detection_engine/get_query_filter'; import { FieldValueQueryBar } from '../query_bar'; import { ESQuery } from '../../../../../common/typed_json'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/index.tsx index 70d292660388d..6342d468f5962 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/index.tsx @@ -20,11 +20,11 @@ import { } from '@elastic/eui'; import { debounce } from 'lodash/fp'; +import { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import * as i18n from './translations'; import { useMatrixHistogram } from '../../../../common/containers/matrix_histogram'; import { MatrixHistogramType } from '../../../../../common/search_strategy/security_solution/matrix_histogram'; import { FieldValueQueryBar } from '../query_bar'; -import { Type } from '../../../../../common/detection_engine/schemas/common/schemas'; import { PreviewEqlQueryHistogram } from './eql_histogram'; import { useEqlPreview } from '../../../../common/hooks/eql/'; import { PreviewThresholdQueryHistogram } from './threshold_histogram'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/reducer.ts b/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/reducer.ts index 2dff858d61c79..afddca63afcc6 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/reducer.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/query_preview/reducer.ts @@ -8,10 +8,10 @@ import { Unit } from '@elastic/datemath'; import { EuiSelectOption } from '@elastic/eui'; +import { Type, Language } from '@kbn/securitysolution-io-ts-alerting-types'; import * as i18n from './translations'; import { Filter } from '../../../../../../../../src/plugins/data/common/es_query'; import { ESQuery } from '../../../../../common/typed_json'; -import { Language, Type } from '../../../../../common/detection_engine/schemas/common/schemas'; import { FieldValueQueryBar } from '../query_bar'; import { formatDate } from '../../../../common/components/super_date_picker'; import { getInfoFromQueryBar, getTimeframeOptions } from './helpers'; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/risk_score_mapping/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/risk_score_mapping/index.tsx index 79c54a1cc0225..c02f7992a9b92 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/risk_score_mapping/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/risk_score_mapping/index.tsx @@ -19,13 +19,13 @@ import { import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; import { noop } from 'lodash/fp'; +import { RiskScoreMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import * as i18n from './translations'; import { FieldHook } from '../../../../../../../../src/plugins/es_ui_shared/static/forms/hook_form_lib'; import { AboutStepRiskScore } from '../../../pages/detection_engine/rules/types'; import { FieldComponent } from '../../../../common/components/autocomplete/field'; import { IFieldType } from '../../../../../../../../src/plugins/data/common/index_patterns/fields'; import { IIndexPattern } from '../../../../../../../../src/plugins/data/common/index_patterns'; -import { RiskScoreMapping } from '../../../../../common/detection_engine/schemas/common/schemas'; const NestedContent = styled.div` margin-left: 24px; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/select_rule_type/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/select_rule_type/index.tsx index 5650c2c55488e..712166df2b539 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/select_rule_type/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/select_rule_type/index.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useMemo } from 'react'; import { EuiCard, EuiFlexGrid, EuiFlexItem, EuiFormRow, EuiIcon } from '@elastic/eui'; -import { Type } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { isMlRule } from '../../../../../common/machine_learning/helpers'; import { isThresholdRule, diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx index d83ad8f4f4d26..8b8c9441e7eae 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx @@ -19,6 +19,11 @@ import { import { noop } from 'lodash/fp'; import React, { useCallback, useMemo } from 'react'; import styled from 'styled-components'; +import { + Severity, + SeverityMapping, + SeverityMappingItem, +} from '@kbn/securitysolution-io-ts-alerting-types'; import * as i18n from './translations'; import { FieldHook } from '../../../../../../../../src/plugins/es_ui_shared/static/forms/hook_form_lib'; import { SeverityOptionItem } from '../step_about_rule/data'; @@ -29,11 +34,6 @@ import { } from '../../../../../../../../src/plugins/data/common/index_patterns'; import { FieldComponent } from '../../../../common/components/autocomplete/field'; import { AutocompleteFieldMatchComponent } from '../../../../common/components/autocomplete/field_value_match'; -import { - Severity, - SeverityMapping, - SeverityMappingItem, -} from '../../../../../common/detection_engine/schemas/common/schemas'; const NestedContent = styled.div` margin-left: 24px; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule/data.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule/data.tsx index 8a01d5b072fb6..264e499d9cf86 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule/data.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule/data.tsx @@ -10,7 +10,7 @@ import { EuiHealth } from '@elastic/eui'; import euiLightVars from '@elastic/eui/dist/eui_theme_light.json'; import React from 'react'; -import { Severity } from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Severity } from '@kbn/securitysolution-io-ts-alerting-types'; import * as I18n from './translations'; export interface SeverityOptionItem { diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts index 7eb91e259a72f..891e7f47c1b7e 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/transforms.ts @@ -6,7 +6,7 @@ */ import { flow } from 'fp-ts/lib/function'; -import { addIdToItem, removeIdFromItem } from '../../../../../common/add_remove_id_to_item'; +import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; import { CreateRulesSchema, UpdateRulesSchema, diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts index 2c3d6484aebdd..338124ad5ce65 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts @@ -7,28 +7,28 @@ import * as t from 'io-ts'; +import { listArray } from '@kbn/securitysolution-io-ts-list-types'; +import { + risk_score_mapping, + threat_query, + threat_index, + threat_indicator_path, + threat_mapping, + threat_language, + threat_filters, + threats, + type, + severity_mapping, +} from '@kbn/securitysolution-io-ts-alerting-types'; import { SortOrder, author, building_block_type, license, - risk_score_mapping, rule_name_override, - severity_mapping, timestamp_override, threshold, - type, - threats, } from '../../../../../common/detection_engine/schemas/common/schemas'; -import { - listArray, - threat_query, - threat_index, - threat_indicator_path, - threat_mapping, - threat_language, - threat_filters, -} from '../../../../../common/detection_engine/schemas/types'; import { CreateRulesSchema, PatchRulesSchema, @@ -38,6 +38,7 @@ import { /** * Params is an "record", since it is a type of AlertActionParams which is action templates. * @see x-pack/plugins/alerting/common/alert.ts + * @deprecated Use the one from @kbn/security-io-ts-alerting-types */ export const action = t.exact( t.type({ diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_dissasociate_exception_list.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_dissasociate_exception_list.tsx index 1fc6ff607c47f..8807f02774e0e 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_dissasociate_exception_list.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_dissasociate_exception_list.tsx @@ -7,8 +7,8 @@ import { useEffect, useState, useRef } from 'react'; +import { List } from '@kbn/securitysolution-io-ts-list-types'; import { HttpStart } from '../../../../../../../../src/core/public'; -import { List } from '../../../../../common/detection_engine/schemas/types/lists'; import { patchRule } from './api'; type Func = (lists: List[]) => void; diff --git a/x-pack/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts b/x-pack/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts index 70c340096f462..a7de7494e1116 100644 --- a/x-pack/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts +++ b/x-pack/plugins/security_solution/public/detections/mitre/valid_threat_mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Threats } from '../../../common/detection_engine/schemas/common/schemas'; +import { Threats } from '@kbn/securitysolution-io-ts-alerting-types'; import { mockThreatData } from './mitre_tactics_techniques'; const { tactic, technique, subtechnique } = mockThreatData; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts index 98d3dadc7bbcb..f018bc148d626 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { List } from '../../../../../../common/detection_engine/schemas/types'; +import { List } from '@kbn/securitysolution-io-ts-list-types'; import { CreateRulesSchema } from '../../../../../../common/detection_engine/schemas/request'; import { Rule } from '../../../../containers/detection_engine/rules'; import { @@ -40,7 +40,7 @@ import { mockActionsStepRule, } from '../all/__mocks__/mock'; import { getThreatMock } from '../../../../../../common/detection_engine/schemas/types/threat.mock'; -import { Threat, Threats } from '../../../../../../common/detection_engine/schemas/common/schemas'; +import { Threat, Threats } from '@kbn/securitysolution-io-ts-alerting-types'; describe('helpers', () => { describe('getTimeTypeValue', () => { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts index 29b63721513d4..5259b95a09ae6 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts @@ -9,20 +9,22 @@ import { has, isEmpty } from 'lodash/fp'; import moment from 'moment'; import deepmerge from 'deepmerge'; -import type { ExceptionListType, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; -import { NOTIFICATION_THROTTLE_NO_ACTIONS } from '../../../../../../common/constants'; -import { assertUnreachable } from '../../../../../../common/utility_types'; -import { transformAlertToRuleAction } from '../../../../../../common/detection_engine/transform_actions'; -import { List } from '../../../../../../common/detection_engine/schemas/types'; -import { ENDPOINT_LIST_ID } from '../../../../../shared_imports'; -import { Rule } from '../../../../containers/detection_engine/rules'; +import type { + ExceptionListType, + NamespaceType, + List, +} from '@kbn/securitysolution-io-ts-list-types'; import { Threats, ThreatSubtechnique, ThreatTechnique, Type, -} from '../../../../../../common/detection_engine/schemas/common/schemas'; - +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { NOTIFICATION_THROTTLE_NO_ACTIONS } from '../../../../../../common/constants'; +import { assertUnreachable } from '../../../../../../common/utility_types'; +import { transformAlertToRuleAction } from '../../../../../../common/detection_engine/transform_actions'; +import { ENDPOINT_LIST_ID } from '../../../../../shared_imports'; +import { Rule } from '../../../../containers/detection_engine/rules'; import { AboutStepRule, DefineStepRule, diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx index 03688264bcf46..25785f6bbcb2d 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/helpers.tsx @@ -12,6 +12,12 @@ import { useLocation } from 'react-router-dom'; import styled from 'styled-components'; import { EuiFlexItem } from '@elastic/eui'; +import { + Threats, + Type, + SeverityMapping, + Severity, +} from '@kbn/securitysolution-io-ts-alerting-types'; import { ActionVariables } from '../../../../../../triggers_actions_ui/public'; import { normalizeThresholdField } from '../../../../../common/detection_engine/utils'; import { RuleAlertAction } from '../../../../../common/detection_engine/types'; @@ -27,12 +33,6 @@ import { ScheduleStepRule, ActionsStepRule, } from './types'; -import { - SeverityMapping, - Type, - Severity, - Threats, -} from '../../../../../common/detection_engine/schemas/common/schemas'; import { severityOptions } from '../../../components/rules/step_about_rule/data'; export interface GetStepsData { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts index 58994c5a5f556..cf82e7cb7944e 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/types.ts @@ -5,6 +5,16 @@ * 2.0. */ +import { List } from '@kbn/securitysolution-io-ts-list-types'; +import { + RiskScoreMapping, + ThreatIndex, + ThreatMapping, + Threats, + Type, + SeverityMapping, + Severity, +} from '@kbn/securitysolution-io-ts-alerting-types'; import { RuleAlertAction } from '../../../../../common/detection_engine/types'; import { AlertAction } from '../../../../../../alerting/common'; import { Filter } from '../../../../../../../../src/plugins/data/common'; @@ -15,20 +25,10 @@ import { Author, BuildingBlockType, License, - RiskScoreMapping, RuleNameOverride, - SeverityMapping, SortOrder, TimestampOverride, - Type, - Severity, - Threats, } from '../../../../../common/detection_engine/schemas/common/schemas'; -import { - List, - ThreatIndex, - ThreatMapping, -} from '../../../../../common/detection_engine/schemas/types'; export interface EuiBasicTableSortTypes { field: string; diff --git a/x-pack/plugins/security_solution/public/lists_plugin_deps.ts b/x-pack/plugins/security_solution/public/lists_plugin_deps.ts deleted file mode 100644 index 498995b538429..0000000000000 --- a/x-pack/plugins/security_solution/public/lists_plugin_deps.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// DEPRECATED: Do not add exports to this file; please import from shared_imports instead - -export * from './shared_imports'; diff --git a/x-pack/plugins/security_solution/public/network/components/port/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/port/index.test.tsx index 9c7a0833b24bb..ef1039bfc92e3 100644 --- a/x-pack/plugins/security_solution/public/network/components/port/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/port/index.test.tsx @@ -8,7 +8,7 @@ import { shallow } from 'enzyme'; import React from 'react'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import '../../../common/mock/match_media'; import { TestProviders } from '../../../common/mock/test_providers'; import { useMountAppended } from '../../../common/utils/use_mount_appended'; diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/index.test.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/index.test.tsx index 6be0382e54cde..01065ad5bf15f 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/index.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/index.test.tsx @@ -10,7 +10,7 @@ import { shallow } from 'enzyme'; import { get } from 'lodash/fp'; import React from 'react'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { asArrayIfExists } from '../../../common/lib/helpers'; import { getMockNetflowData } from '../../../common/mock'; import '../../../common/mock/match_media'; diff --git a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx index a13621cfe3a9c..f767e793c8f21 100644 --- a/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/source_destination/source_destination_ip.test.tsx @@ -8,7 +8,7 @@ import { get } from 'lodash/fp'; import React from 'react'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { asArrayIfExists } from '../../../common/lib/helpers'; import { getMockNetflowData } from '../../../common/mock'; import '../../../common/mock/match_media'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx index 63e27bd8fa9c3..7a38c873450ca 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/certificate_fingerprint/index.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { TestProviders } from '../../../common/mock'; import '../../../common/mock/match_media'; import { useMountAppended } from '../../../common/utils/use_mount_appended'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx index bb2061f744289..802dd74c1892b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/ja3_fingerprint/index.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { TestProviders } from '../../../common/mock'; import '../../../common/mock/match_media'; import { useMountAppended } from '../../../common/utils/use_mount_appended'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/netflow/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/netflow/index.test.tsx index 5e6d804b01fde..e2c8b8854504a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/netflow/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/netflow/index.test.tsx @@ -9,7 +9,7 @@ import { get } from 'lodash/fp'; import React from 'react'; import { shallow } from 'enzyme'; -import { removeExternalLinkText } from '../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { asArrayIfExists } from '../../../common/lib/helpers'; import { getMockNetflowData } from '../../../common/mock'; import '../../../common/mock/match_media'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx index b92a4381d837b..56dbc99d47c66 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/get_row_renderer.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import { cloneDeep } from 'lodash'; import React from 'react'; -import { removeExternalLinkText } from '../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import '../../../../../common/mock/match_media'; import { mockBrowserFields } from '../../../../../common/containers/source/mock'; import { Ecs } from '../../../../../../common/ecs'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx index bd8c2d10ccfaf..5960f43174b98 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_details.test.tsx @@ -8,7 +8,7 @@ import { shallow } from 'enzyme'; import React from 'react'; -import { removeExternalLinkText } from '../../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { mockBrowserFields } from '../../../../../../common/containers/source/mock'; import { mockTimelineData } from '../../../../../../common/mock'; import '../../../../../../common/mock/match_media'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx index 469c8f6c3ec4c..098d6775cfaa4 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/suricata/suricata_row_renderer.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import { cloneDeep } from 'lodash/fp'; import React from 'react'; -import { removeExternalLinkText } from '../../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { mockBrowserFields } from '../../../../../../common/containers/source/mock'; import { Ecs } from '../../../../../../../common/ecs'; import { mockTimelineData } from '../../../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx index b7857e6bf4585..8e8ce9cb2f988 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/system/generic_row_renderer.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import { cloneDeep } from 'lodash/fp'; import React from 'react'; -import { removeExternalLinkText } from '../../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { BrowserFields } from '../../../../../../common/containers/source'; import { mockBrowserFields } from '../../../../../../common/containers/source/mock'; import { Ecs } from '../../../../../../../common/ecs'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx index 0f27dccd1aff0..04150163fb4d4 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_details.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; -import { removeExternalLinkText } from '../../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import '../../../../../../common/mock/match_media'; import { mockBrowserFields } from '../../../../../../common/containers/source/mock'; import { mockTimelineData, TestProviders } from '../../../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx index 2d20da0c5e6dc..749e450b36ae4 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_row_renderer.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import { cloneDeep } from 'lodash/fp'; import React from 'react'; -import { removeExternalLinkText } from '../../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import { mockBrowserFields } from '../../../../../../common/containers/source/mock'; import { Ecs } from '../../../../../../../common/ecs'; import { mockTimelineData, TestProviders } from '../../../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx index 4fc2f90c87da4..61155331b1a4b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/zeek/zeek_signature.test.tsx @@ -9,7 +9,7 @@ import { shallow } from 'enzyme'; import { cloneDeep } from 'lodash/fp'; import React from 'react'; -import { removeExternalLinkText } from '../../../../../../../common/test_utils'; +import { removeExternalLinkText } from '@kbn/securitysolution-io-ts-utils'; import '../../../../../../common/mock/match_media'; import { Ecs } from '../../../../../../../common/ecs'; import { mockTimelineData, TestProviders } from '../../../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts index f3bc195b5a896..e73e3eb5c56f8 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts @@ -8,8 +8,8 @@ import { createHash } from 'crypto'; import { deflate } from 'zlib'; import { Entry, EntryNested } from '@kbn/securitysolution-io-ts-list-types'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { ExceptionListItemSchema } from '../../../../../lists/common/schemas'; -import { validate } from '../../../../common/validate'; import { ExceptionListClient } from '../../../../../lists/server'; import { ENDPOINT_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../../../common/shared_imports'; diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts index 7e1accac37cf0..43d4fc49161bb 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/manifest.ts @@ -7,7 +7,7 @@ import { flatMap, isEqual } from 'lodash'; import semver from 'semver'; -import { validate } from '../../../../common'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { InternalArtifactSchema, InternalManifestSchema, diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts b/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts index e4704523a16c3..897ffe4ee48cd 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts @@ -13,11 +13,11 @@ import type { EntryMatchWildcard, EntryNested, NestedEntriesArray, + OsType, } from '@kbn/securitysolution-io-ts-list-types'; import type { ExceptionListItemSchema } from '../../../../../lists/common'; -import type { OsType } from '../../../../../lists/common/schemas'; import { ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../../../../lists/common/constants'; import type { CreateExceptionListItemOptions, diff --git a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts b/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts index 1b1370472f633..3a37bfbe9320c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts +++ b/x-pack/plugins/security_solution/server/endpoint/schemas/artifacts/lists.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { operator } from '../../../../../lists/common/schemas'; +import { listOperator as operator } from '@kbn/securitysolution-io-ts-list-types'; export const translatedEntryMatchAnyMatcher = t.keyof({ exact_cased_any: null, diff --git a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts index e2f6118f4f0a7..d7b05ffa5592e 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_client.ts @@ -10,11 +10,11 @@ import { SavedObjectsClientContract, SavedObjectsUpdateResponse, } from 'src/core/server'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { manifestSchemaVersion, ManifestSchemaVersion, } from '../../../../common/endpoint/schema/common'; -import { validate } from '../../../../common/validate'; import { ManifestConstants } from '../../lib/artifacts'; import { InternalManifestSchema, InternalManifestCreateSchema } from '../../schemas/artifacts'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/errors/bad_request_error.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/errors/bad_request_error.ts deleted file mode 100644 index c68e7845953f6..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/errors/bad_request_error.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export class BadRequestError extends Error {} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts deleted file mode 100644 index 02f8f3f7b36ab..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -// See the reference(s) below on explanations about why -000001 was chosen and -// why the is_write_index is true as well as the bootstrapping step which is needed. -// Ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/applying-policy-to-template.html - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const createBootstrapIndex = async ( - esClient: ElasticsearchClient, - index: string -): Promise => { - return ( - await esClient.transport.request({ - path: `/${index}-000001`, - method: 'PUT', - body: { - aliases: { - [index]: { - is_write_index: true, - }, - }, - }, - }) - ).body; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts deleted file mode 100644 index d76290921fac8..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const deleteAllIndex = async ( - esClient: ElasticsearchClient, - pattern: string, - maxAttempts = 5 -): Promise => { - for (let attempt = 1; ; attempt++) { - if (attempt > maxAttempts) { - throw new Error( - `Failed to delete indexes with pattern [${pattern}] after ${maxAttempts} attempts` - ); - } - - // resolve pattern to concrete index names - const { body: resp } = await esClient.indices.getAlias( - { - index: pattern, - }, - { ignore: [404] } - ); - - // @ts-expect-error status doesn't exist on response - if (resp.status === 404) { - return true; - } - - const indices = Object.keys(resp) as string[]; - - // if no indexes exits then we're done with this pattern - if (!indices.length) { - return true; - } - - // delete the concrete indexes we found and try again until this pattern resolves to no indexes - await esClient.indices.delete({ - index: indices, - ignore_unavailable: true, - }); - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts deleted file mode 100644 index 924970d304c88..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const deletePolicy = async ( - esClient: ElasticsearchClient, - policy: string -): Promise => { - return ( - await esClient.transport.request({ - path: `/_ilm/policy/${policy}`, - method: 'DELETE', - }) - ).body; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts deleted file mode 100644 index 5466fd03f534c..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const deleteTemplate = async ( - esClient: ElasticsearchClient, - name: string -): Promise => { - return ( - await esClient.indices.deleteTemplate({ - name, - }) - ).body; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.test.ts deleted file mode 100644 index abe587ec825c0..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; -import { getIndexExists } from './get_index_exists'; - -class StatusCode extends Error { - status: number = -1; - constructor(status: number, message: string) { - super(message); - this.status = status; - } -} - -describe('get_index_exists', () => { - test('it should return a true if you have _shards', async () => { - const esClient = elasticsearchClientMock.createScopedClusterClient().asCurrentUser; - esClient.search.mockReturnValue( - // @ts-expect-error not full interface - elasticsearchClientMock.createSuccessTransportRequestPromise({ _shards: { total: 1 } }) - ); - const indexExists = await getIndexExists(esClient, 'some-index'); - expect(indexExists).toEqual(true); - }); - - test('it should return a false if you do NOT have _shards', async () => { - const esClient = elasticsearchClientMock.createScopedClusterClient().asCurrentUser; - esClient.search.mockReturnValue( - // @ts-expect-error not full interface - elasticsearchClientMock.createSuccessTransportRequestPromise({ _shards: { total: 0 } }) - ); - const indexExists = await getIndexExists(esClient, 'some-index'); - expect(indexExists).toEqual(false); - }); - - test('it should return a false if it encounters a 404', async () => { - const esClient = elasticsearchClientMock.createScopedClusterClient().asCurrentUser; - esClient.search.mockReturnValue( - elasticsearchClientMock.createErrorTransportRequestPromise({ - body: new StatusCode(404, 'I am a 404 error'), - }) - ); - const indexExists = await getIndexExists(esClient, 'some-index'); - expect(indexExists).toEqual(false); - }); - - test('it should reject if it encounters a non 404', async () => { - const esClient = elasticsearchClientMock.createScopedClusterClient().asCurrentUser; - esClient.search.mockReturnValue( - elasticsearchClientMock.createErrorTransportRequestPromise( - new StatusCode(500, 'I am a 500 error') - ) - ); - await expect(getIndexExists(esClient, 'some-index')).rejects.toThrow('I am a 500 error'); - }); -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts deleted file mode 100644 index 7ca7f9818ba0b..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const getIndexExists = async ( - esClient: ElasticsearchClient, - index: string -): Promise => { - try { - const { body: response } = await esClient.search({ - index, - size: 0, - allow_no_indices: true, - body: { - terminate_after: 1, - }, - }); - return response._shards.total > 0; - } catch (err) { - if (err.body?.status === 404) { - return false; - } else { - throw err.body ? err.body : err; - } - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts deleted file mode 100644 index 6ebdac0d244cb..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const getPolicyExists = async ( - esClient: ElasticsearchClient, - policy: string -): Promise => { - try { - await esClient.transport.request({ - path: `/_ilm/policy/${policy}`, - method: 'GET', - }); - // Return true that there exists a policy which is not 404 or some error - // Since there is not a policy exists API, this is how we create one by calling - // into the API to get it if it exists or rely on it to throw a 404 - return true; - } catch (err) { - if (err.statusCode === 404) { - return false; - } else { - throw err; - } - } -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts deleted file mode 100644 index af5f874a05688..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const getTemplateExists = async ( - esClient: ElasticsearchClient, - template: string -): Promise => { - return ( - await esClient.indices.existsTemplate({ - name: template, - }) - ).body; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts deleted file mode 100644 index 113b9d368e0d9..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const setPolicy = async ( - esClient: ElasticsearchClient, - policy: string, - body: Record -): Promise => { - return ( - await esClient.transport.request({ - path: `/_ilm/policy/${policy}`, - method: 'PUT', - body, - }) - ).body; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts deleted file mode 100644 index 288377c306325..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ElasticsearchClient } from 'kibana/server'; - -/** - * @deprecated Use the one from kbn-securitysolution-es-utils - */ -export const setTemplate = async ( - esClient: ElasticsearchClient, - name: string, - body: Record -): Promise => { - return ( - await esClient.indices.putTemplate({ - name, - body, - }) - ).body; -}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts index 9c1154f19e8dc..3aee9db31bf1b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/create_migration_saved_object.ts @@ -9,7 +9,7 @@ import { chain, tryCatch } from 'fp-ts/lib/TaskEither'; import { pipe } from 'fp-ts/lib/pipeable'; import { SavedObjectsClientContract } from 'src/core/server'; -import { validateTaskEither } from '../../../../common/validate'; +import { validateTaskEither } from '@kbn/securitysolution-io-ts-utils'; import { toError, toPromise } from '../../../../common/fp_utils'; import { signalsMigrationSOClient } from './saved_objects_client'; import { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts index bdc22f2ff20ce..46de2eb133bac 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.test.ts @@ -6,13 +6,13 @@ */ import { elasticsearchServiceMock, savedObjectsClientMock } from 'src/core/server/mocks'; -import { getIndexCount } from '../index/get_index_count'; +import { getIndexCount } from '@kbn/securitysolution-es-utils'; import { updateMigrationSavedObject } from './update_migration_saved_object'; import { getSignalsMigrationSavedObjectMock } from './saved_objects_schema.mock'; import { finalizeMigration } from './finalize_migration'; jest.mock('./update_migration_saved_object'); -jest.mock('../index/get_index_count'); +jest.mock('@kbn/securitysolution-es-utils'); describe('finalizeMigration', () => { let esClient: ReturnType; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts index 7a52470e58051..ca8ae01ee2d1f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/finalize_migration.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient, SavedObjectsClientContract } from 'src/core/server'; -import { getIndexCount } from '../index/get_index_count'; +import { getIndexCount } from '@kbn/securitysolution-es-utils'; import { isMigrationPending } from './helpers'; import { applyMigrationCleanupPolicy } from './migration_cleanup'; import { replaceSignalsIndexAlias } from './replace_signals_index_alias'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts index 2a3e25ee57aa2..2cc73c36500f2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/find_migration_saved_objects.ts @@ -9,9 +9,9 @@ import { fold } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; import { SavedObjectsClientContract, SavedObjectsFindOptions } from 'src/core/server'; +import { validateEither } from '@kbn/securitysolution-io-ts-utils'; import { signalsMigrationSOClient } from './saved_objects_client'; import { SignalsMigrationSO, signalsMigrationSOs } from './saved_objects_schema'; -import { validateEither } from '../../../../common/validate'; export const findMigrationSavedObjects = async ({ options, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts index 7d66dca2ef192..66bbc01ef0d68 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/get_migration_saved_objects_by_id.ts @@ -9,7 +9,7 @@ import { fold } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; import { SavedObjectsClientContract } from 'src/core/server'; -import { validateEither } from '../../../../common/validate'; +import { validateEither } from '@kbn/securitysolution-io-ts-utils'; import { signalsMigrationSOClient } from './saved_objects_client'; import { SignalsMigrationSO, signalsMigrationSOs } from './saved_objects_schema'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts index 3ce798ec5a5c1..e81583b825e39 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/saved_objects_schema.ts @@ -7,7 +7,7 @@ import * as t from 'io-ts'; -import { IsoDateString, PositiveInteger } from '../../../../common/detection_engine/schemas/types'; +import { IsoDateString, PositiveInteger } from '@kbn/securitysolution-io-ts-types'; import { unionWithNullType } from '../../../../common/utility_types'; const status = t.keyof({ success: null, failure: null, pending: null }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts index 05d7d3e50dca7..5bd8b47c3b74a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/migrations/update_migration_saved_object.ts @@ -9,7 +9,7 @@ import { chain, tryCatch } from 'fp-ts/lib/TaskEither'; import { pipe } from 'fp-ts/lib/pipeable'; import { SavedObjectsClientContract, SavedObjectsUpdateResponse } from 'src/core/server'; -import { validateTaskEither } from '../../../../common/validate'; +import { validateTaskEither } from '@kbn/securitysolution-io-ts-utils'; import { toError, toPromise } from '../../../../common/fp_utils'; import { signalsMigrationSOClient } from './saved_objects_client'; import { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts index cd1b77862af04..d98cd7cea0f2b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts @@ -5,19 +5,22 @@ * 2.0. */ +import { + transformError, + getIndexExists, + getPolicyExists, + setPolicy, + setTemplate, + createBootstrapIndex, +} from '@kbn/securitysolution-es-utils'; import type { AppClient, SecuritySolutionPluginRouter, SecuritySolutionRequestHandlerContext, } from '../../../../types'; import { DETECTION_ENGINE_INDEX_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; -import { getIndexExists } from '../../index/get_index_exists'; -import { getPolicyExists } from '../../index/get_policy_exists'; -import { setPolicy } from '../../index/set_policy'; -import { setTemplate } from '../../index/set_template'; +import { buildSiemResponse } from '../utils'; import { getSignalsTemplate, SIGNALS_TEMPLATE_VERSION } from './get_signals_template'; -import { createBootstrapIndex } from '../../index/create_bootstrap_index'; import { ensureMigrationCleanupPolicy } from '../../migrations/migration_cleanup'; import signalsPolicy from './signals_policy.json'; import { templateNeedsUpdate } from './check_template_version'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts index 1a4f00a570424..5260c9487de8a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/delete_index_route.ts @@ -5,15 +5,18 @@ * 2.0. */ +import { + transformError, + getIndexExists, + getPolicyExists, + deletePolicy, + getTemplateExists, + deleteAllIndex, + deleteTemplate, +} from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_INDEX_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; -import { getIndexExists } from '../../index/get_index_exists'; -import { getPolicyExists } from '../../index/get_policy_exists'; -import { deletePolicy } from '../../index/delete_policy'; -import { getTemplateExists } from '../../index/get_template_exists'; -import { deleteAllIndex } from '../../index/delete_all_index'; -import { deleteTemplate } from '../../index/delete_template'; +import { buildSiemResponse } from '../utils'; /** * Deletes all of the indexes, template, ilm policies, and aliases. You can check diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts index b333ef999a6ae..b6f711fc319fb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/get_index_version.ts @@ -6,8 +6,8 @@ */ import { get } from 'lodash'; +import { readIndex } from '@kbn/securitysolution-es-utils'; import { ElasticsearchClient } from '../../../../../../../../src/core/server'; -import { readIndex } from '../../index/read_index'; export const getIndexVersion = async ( esClient: ElasticsearchClient, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts index 01d07f68aa489..6af4397a4193a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/read_index_route.ts @@ -5,10 +5,11 @@ * 2.0. */ +import { transformError, getIndexExists } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_INDEX_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; -import { getIndexExists } from '../../index/get_index_exists'; + +import { buildSiemResponse } from '../utils'; import { SIGNALS_TEMPLATE_VERSION } from './get_signals_template'; import { getIndexVersion } from './get_index_version'; import { isOutdated } from '../../migrations/helpers'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts index f006d9250d369..04fd2aeaebb2d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts @@ -7,9 +7,11 @@ import { merge } from 'lodash/fp'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_PRIVILEGES_URL } from '../../../../../common/constants'; -import { buildSiemResponse, transformError } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { readPrivileges } from '../../privileges/read_privileges'; export const readPrivilegesRoute = ( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.ts index 4f9bd7d0cfd6c..03d357ab10bb9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.ts @@ -6,13 +6,14 @@ */ import moment from 'moment'; +import { transformError, getIndexExists } from '@kbn/securitysolution-es-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import type { AppClient, SecuritySolutionPluginRouter, SecuritySolutionRequestHandlerContext, } from '../../../../types'; -import { validate } from '../../../../../common/validate'; import { PrePackagedRulesAndTimelinesSchema, prePackagedRulesAndTimelinesSchema, @@ -24,7 +25,6 @@ import { ConfigType } from '../../../../config'; import { SetupPlugins } from '../../../../plugin'; import { buildFrameworkRequest } from '../../../timeline/utils/common'; -import { getIndexExists } from '../../index/get_index_exists'; import { getLatestPrepackagedRules } from '../../rules/get_prepackaged_rules'; import { installPrepackagedRules } from '../../rules/install_prepacked_rules'; import { updatePrepackagedRules } from '../../rules/update_prepacked_rules'; @@ -33,7 +33,7 @@ import { getRulesToUpdate } from '../../rules/get_rules_to_update'; import { getExistingPrepackagedRules } from '../../rules/get_existing_prepackaged_rules'; import { ruleAssetSavedObjectsClientFactory } from '../../rules/rule_asset_saved_objects_client'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; import { AlertsClient } from '../../../../../../alerting/server'; import { FrameworkRequest } from '../../../framework'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts index cd0e1883e78f5..500c74e47ea7d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_bulk_route.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { validate } from '../../../../../common/validate'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { getIndexExists } from '@kbn/securitysolution-es-utils'; import { createRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/create_rules_type_dependents'; import { createRulesBulkSchema } from '../../../../../common/detection_engine/schemas/request/create_rules_bulk_schema'; import { rulesBulkSchema } from '../../../../../common/detection_engine/schemas/response/rules_bulk_schema'; @@ -17,7 +18,6 @@ import { throwHttpError } from '../../../machine_learning/validation'; import { readRules } from '../../rules/read_rules'; import { getDuplicates } from './utils'; import { transformValidateBulkError } from './validate'; -import { getIndexExists } from '../../index/get_index_exists'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { transformBulkError, createBulkErrorObject, buildSiemResponse } from '../utils'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts index 1e34bbbbe4749..9b7e7bb42f423 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/create_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError, getIndexExists } from '@kbn/securitysolution-es-utils'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { SetupPlugins } from '../../../../plugin'; @@ -12,8 +13,8 @@ import type { SecuritySolutionPluginRouter } from '../../../../types'; import { buildMlAuthz } from '../../../machine_learning/authz'; import { throwHttpError } from '../../../machine_learning/validation'; import { readRules } from '../../rules/read_rules'; -import { getIndexExists } from '../../index/get_index_exists'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { updateRulesNotifications } from '../../rules/update_rules_notifications'; import { ruleStatusSavedObjectsClientFactory } from '../../signals/rule_status_saved_objects_client'; import { createRulesSchema } from '../../../../../common/detection_engine/schemas/request'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts index 9739eb7ba9e00..1e7ba976d6915 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_bulk_route.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { validate } from '../../../../../common/validate'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { queryRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/query_rules_type_dependents'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts index 3bd7c7f8730b3..76fb9ac0c77e3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/delete_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { queryRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/query_rules_type_dependents'; import { queryRulesSchema, @@ -15,7 +16,8 @@ import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { deleteRules } from '../../rules/delete_rules'; import { getIdError, transform } from './utils'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { deleteNotifications } from '../../notifications/delete_notifications'; import { deleteRuleActionsSavedObject } from '../../rule_actions/delete_rule_actions_saved_object'; import { ruleStatusSavedObjectsClientFactory } from '../../signals/rule_status_saved_objects_client'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/export_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/export_rules_route.ts index 8fe20e4db612c..cb1c1feba5295 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/export_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/export_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { exportRulesQuerySchema, ExportRulesQuerySchemaDecoded, @@ -18,7 +19,7 @@ import { ConfigType } from '../../../../config'; import { getNonPackagedRulesCount } from '../../rules/get_existing_prepackaged_rules'; import { getExportByObjectIds } from '../../rules/get_export_by_object_ids'; import { getExportAll } from '../../rules/get_export_all'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; export const exportRulesRoute = (router: SecuritySolutionPluginRouter, config: ConfigType) => { router.post( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts index 005266f5c178f..ccf0a59e87c74 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { findRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/find_rules_type_dependents'; import { findRulesSchema, @@ -13,7 +14,8 @@ import { import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { findRules } from '../../rules/find_rules'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { getRuleActionsSavedObject } from '../../rule_actions/get_rule_actions_saved_object'; import { ruleStatusSavedObjectsClientFactory } from '../../signals/rule_status_saved_objects_client'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.ts index cb436b89af01f..bd6e8fc9e7aad 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/find_rules_status_route.ts @@ -5,11 +5,13 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { RuleStatusResponse } from '../../rules/types'; -import { transformError, buildSiemResponse, mergeStatuses, getFailingRules } from '../utils'; +import { buildSiemResponse, mergeStatuses, getFailingRules } from '../utils'; + import { ruleStatusSavedObjectsClientFactory } from '../../signals/rule_status_saved_objects_client'; import { findRulesStatusesSchema, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_prepackaged_rules_status_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_prepackaged_rules_status_route.ts index 33f9746fe9245..cd02cc72ba40c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_prepackaged_rules_status_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/get_prepackaged_rules_status_route.ts @@ -5,14 +5,16 @@ * 2.0. */ -import { validate } from '../../../../../common/validate'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { PrePackagedRulesAndTimelinesStatusSchema, prePackagedRulesAndTimelinesStatusSchema, } from '../../../../../common/detection_engine/schemas/response/prepackaged_rules_status_schema'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_PREPACKAGED_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { getRulesToInstall } from '../../rules/get_rules_to_install'; import { getRulesToUpdate } from '../../rules/get_rules_to_update'; import { findRules } from '../../rules/find_rules'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts index b37cc41f1439e..8e322405280d3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/import_rules_route.ts @@ -10,7 +10,8 @@ import { extname } from 'path'; import { schema } from '@kbn/config-schema'; import { createPromiseFromStreams } from '@kbn/utils'; -import { validate } from '../../../../../common/validate'; +import { transformError, getIndexExists } from '@kbn/securitysolution-es-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { importRulesQuerySchema, ImportRulesQuerySchemaDecoded, @@ -29,16 +30,15 @@ import { buildMlAuthz } from '../../../machine_learning/authz'; import { throwHttpError } from '../../../machine_learning/validation'; import { createRules } from '../../rules/create_rules'; import { readRules } from '../../rules/read_rules'; -import { getIndexExists } from '../../index/get_index_exists'; import { createBulkErrorObject, ImportRuleResponse, BulkError, isBulkError, isImportRegular, - transformError, buildSiemResponse, } from '../utils'; + import { patchRules } from '../../rules/patch_rules'; import { getTupleDuplicateErrorsAndUniqueRules } from './utils'; import { createRulesStreamFromNdJson } from '../../rules/create_rules_stream_from_ndjson'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts index 7d7124259af06..7eb01e8b0d402 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_bulk_route.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { validate } from '../../../../../common/validate'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { RuleAlertAction } from '../../../../../common/detection_engine/types'; import { patchRulesBulkSchema, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts index fd5c33f126fef..780c248183ab9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/patch_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { RuleAlertAction } from '../../../../../common/detection_engine/types'; import { patchRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/patch_rules_type_dependents'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; @@ -18,7 +19,8 @@ import { SetupPlugins } from '../../../../plugin'; import { buildMlAuthz } from '../../../machine_learning/authz'; import { throwHttpError } from '../../../machine_learning/validation'; import { patchRules } from '../../rules/patch_rules'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { getIdError } from './utils'; import { transformValidate } from './validate'; import { updateRulesNotifications } from '../../rules/update_rules_notifications'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts index b2dd9ea8fb796..ac45e5d2ed3b2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/read_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { queryRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/query_rules_type_dependents'; import { queryRulesSchema, @@ -14,7 +15,8 @@ import { buildRouteValidation } from '../../../../utils/build_validation/route_v import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { getIdError, transform } from './utils'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { readRules } from '../../rules/read_rules'; import { getRuleActionsSavedObject } from '../../rule_actions/get_rule_actions_saved_object'; import { ruleStatusSavedObjectsClientFactory } from '../../signals/rule_status_saved_objects_client'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts index d088795a118b3..4c59ae2ba442e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_bulk_route.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { validate } from '../../../../../common/validate'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { updateRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/update_rules_type_dependents'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { updateRulesBulkSchema } from '../../../../../common/detection_engine/schemas/request/update_rules_bulk_schema'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts index b883b7b3462e7..aad0068758f7d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/update_rules_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { updateRulesSchema } from '../../../../../common/detection_engine/schemas/request'; import { updateRuleValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/update_rules_type_dependents'; import type { SecuritySolutionPluginRouter } from '../../../../types'; @@ -12,7 +13,8 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../common/constants'; import { SetupPlugins } from '../../../../plugin'; import { buildMlAuthz } from '../../../machine_learning/authz'; import { throwHttpError } from '../../../machine_learning/validation'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { getIdError } from './utils'; import { transformValidate } from './validate'; import { updateRules } from '../../rules/update_rules'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts index b841507bc7a6b..f2788ab1bd4c9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils.test.ts @@ -32,7 +32,7 @@ import { createRulesStreamFromNdJson } from '../../rules/create_rules_stream_fro import { RuleAlertType } from '../../rules/types'; import { ImportRulesSchemaDecoded } from '../../../../../common/detection_engine/schemas/request/import_rules_schema'; import { getCreateRulesSchemaMock } from '../../../../../common/detection_engine/schemas/request/rule_schemas.mock'; -import { ThreatMapping } from '../../../../../common/detection_engine/schemas/types/threat_mapping'; +import { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import { CreateRulesBulkSchema } from '../../../../../common/detection_engine/schemas/request'; import { getMlRuleParams, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts index ac9ac960d6f06..d27208de487df 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/validate.ts @@ -7,11 +7,11 @@ import { SavedObject, SavedObjectsFindResponse } from 'kibana/server'; +import { validateNonExact } from '@kbn/securitysolution-io-ts-utils'; import { FullResponseSchema, fullResponseSchema, } from '../../../../../common/detection_engine/schemas/request'; -import { validateNonExact } from '../../../../../common/validate'; import { RulesSchema, rulesSchema, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts index aed15b66b9bb5..f10907f7c0c02 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.test.ts @@ -13,13 +13,19 @@ import { getCreateSignalsMigrationSchemaMock } from '../../../../../common/detec import { getIndexVersionsByIndex } from '../../migrations/get_index_versions_by_index'; import { getSignalVersionsByIndex } from '../../migrations/get_signal_versions_by_index'; import { createMigration } from '../../migrations/create_migration'; -import { getIndexAliases } from '../../index/get_index_aliases'; +import { getIndexAliases } from '@kbn/securitysolution-es-utils'; import { getTemplateVersion } from '../index/check_template_version'; import { createSignalsMigrationRoute } from './create_signals_migration_route'; import { SIGNALS_TEMPLATE_VERSION } from '../index/get_signals_template'; jest.mock('../index/check_template_version'); -jest.mock('../../index/get_index_aliases'); +jest.mock('@kbn/securitysolution-es-utils', () => { + const original = jest.requireActual('@kbn/securitysolution-es-utils'); + return { + ...original, + getIndexAliases: jest.fn(), + }; +}); jest.mock('../../migrations/create_migration'); jest.mock('../../migrations/get_index_versions_by_index'); jest.mock('../../migrations/get_signal_versions_by_index'); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts index 99732930234ae..6dd2534870dc2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts @@ -5,16 +5,16 @@ * 2.0. */ +import { transformError, BadRequestError, getIndexAliases } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { SetupPlugins } from '../../../../plugin'; import { DETECTION_ENGINE_SIGNALS_MIGRATION_URL } from '../../../../../common/constants'; import { createSignalsMigrationSchema } from '../../../../../common/detection_engine/schemas/request/create_signals_migration_schema'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; -import { buildSiemResponse, transformError } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { getTemplateVersion } from '../index/check_template_version'; import { isOutdated, signalsAreOutdated } from '../../migrations/helpers'; -import { getIndexAliases } from '../../index/get_index_aliases'; -import { BadRequestError } from '../../errors/bad_request_error'; import { signalsMigrationService } from '../../migrations/migration_service'; import { getIndexVersionsByIndex } from '../../migrations/get_index_versions_by_index'; import { getSignalVersionsByIndex } from '../../migrations/get_signal_versions_by_index'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts index 2f0749388522b..65ed42a0a166e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts @@ -5,12 +5,14 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { SetupPlugins } from '../../../../plugin'; import { DETECTION_ENGINE_SIGNALS_MIGRATION_URL } from '../../../../../common/constants'; import { deleteSignalsMigrationSchema } from '../../../../../common/detection_engine/schemas/request/delete_signals_migration_schema'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; -import { buildSiemResponse, transformError } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { signalsMigrationService } from '../../migrations/migration_service'; import { getMigrationSavedObjectsById } from '../../migrations/get_migration_saved_objects_by_id'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts index 93567f77d17de..20931a8ba7233 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts @@ -5,15 +5,16 @@ * 2.0. */ +import { transformError, BadRequestError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { SetupPlugins } from '../../../../plugin'; import { DETECTION_ENGINE_SIGNALS_FINALIZE_MIGRATION_URL } from '../../../../../common/constants'; import { finalizeSignalsMigrationSchema } from '../../../../../common/detection_engine/schemas/request/finalize_signals_migration_schema'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; -import { BadRequestError } from '../../errors/bad_request_error'; import { isMigrationFailed, isMigrationPending } from '../../migrations/helpers'; import { signalsMigrationService } from '../../migrations/migration_service'; -import { buildSiemResponse, transformError } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { getMigrationSavedObjectsById } from '../../migrations/get_migration_saved_objects_by_id'; export const finalizeSignalsMigrationRoute = ( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts index cd7cd017b8c2d..d800cead20cdc 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/get_signals_migration_status_route.ts @@ -5,18 +5,18 @@ * 2.0. */ +import { transformError, getIndexAliases } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_SIGNALS_MIGRATION_STATUS_URL } from '../../../../../common/constants'; import { getSignalsMigrationStatusSchema } from '../../../../../common/detection_engine/schemas/request/get_signals_migration_status_schema'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; -import { getIndexAliases } from '../../index/get_index_aliases'; import { getIndexVersionsByIndex } from '../../migrations/get_index_versions_by_index'; import { getMigrationSavedObjectsByIndex } from '../../migrations/get_migration_saved_objects_by_index'; import { getSignalsIndicesInRange } from '../../migrations/get_signals_indices_in_range'; import { getSignalVersionsByIndex } from '../../migrations/get_signal_versions_by_index'; import { isOutdated, signalsAreOutdated } from '../../migrations/helpers'; import { getTemplateVersion } from '../index/check_template_version'; -import { buildSiemResponse, transformError } from '../utils'; +import { buildSiemResponse } from '../utils'; export const getSignalsMigrationStatusRoute = (router: SecuritySolutionPluginRouter) => { router.get( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts index d92d39f91baa4..fd001595fb9c7 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { setSignalStatusValidateTypeDependents } from '../../../../../common/detection_engine/schemas/request/set_signal_status_type_dependents'; import { SetSignalsStatusSchemaDecoded, @@ -12,7 +13,8 @@ import { } from '../../../../../common/detection_engine/schemas/request/set_signal_status_schema'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_SIGNALS_STATUS_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; export const setSignalsStatusRoute = (router: SecuritySolutionPluginRouter) => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts index 9e542f6974ffc..91172a277bf54 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts @@ -5,9 +5,10 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_QUERY_SIGNALS_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; import { buildRouteValidation } from '../../../../utils/build_validation/route_validation'; import { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/tags/read_tags_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/tags/read_tags_route.ts index 31ee4f5f42a5d..817e4b95aabce 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/tags/read_tags_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/tags/read_tags_route.ts @@ -5,9 +5,11 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { DETECTION_ENGINE_TAGS_URL } from '../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../utils'; +import { buildSiemResponse } from '../utils'; + import { readTags } from '../../tags/read_tags'; export const readTagsRoute = (router: SecuritySolutionPluginRouter) => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts index cca7e871f5b8b..3c3eda5b19e44 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.test.ts @@ -6,15 +6,13 @@ */ import Boom from '@hapi/boom'; -import { errors } from '@elastic/elasticsearch'; import { SavedObjectsFindResponse } from 'kibana/server'; import { alertsClientMock } from '../../../../../alerting/server/mocks'; import { IRuleSavedAttributesSavedObjectAttributes, IRuleStatusSOAttributes } from '../rules/types'; -import { BadRequestError } from '../errors/bad_request_error'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { - transformError, transformBulkError, BulkError, createSuccessObject, @@ -35,95 +33,6 @@ import { getQueryRuleParams } from '../schemas/rule_schemas.mock'; let alertsClient: ReturnType; describe('utils', () => { - describe('transformError', () => { - test('returns transformed output error from boom object with a 500 and payload of internal server error', () => { - const boom = new Boom.Boom('some boom message'); - const transformed = transformError(boom); - expect(transformed).toEqual({ - message: 'An internal server error occurred', - statusCode: 500, - }); - }); - - test('returns transformed output if it is some non boom object that has a statusCode', () => { - const error: Error & { statusCode?: number } = { - statusCode: 403, - name: 'some name', - message: 'some message', - }; - const transformed = transformError(error); - expect(transformed).toEqual({ - message: 'some message', - statusCode: 403, - }); - }); - - test('returns a transformed message with the message set and statusCode', () => { - const error: Error & { statusCode?: number } = { - statusCode: 403, - name: 'some name', - message: 'some message', - }; - const transformed = transformError(error); - expect(transformed).toEqual({ - message: 'some message', - statusCode: 403, - }); - }); - - test('transforms best it can if it is some non boom object but it does not have a status Code.', () => { - const error: Error = { - name: 'some name', - message: 'some message', - }; - const transformed = transformError(error); - expect(transformed).toEqual({ - message: 'some message', - statusCode: 500, - }); - }); - - test('it detects a BadRequestError and returns a status code of 400 from that particular error type', () => { - const error: BadRequestError = new BadRequestError('I have a type error'); - const transformed = transformError(error); - expect(transformed).toEqual({ - message: 'I have a type error', - statusCode: 400, - }); - }); - - test('it detects a BadRequestError and returns a Boom status of 400', () => { - const error: BadRequestError = new BadRequestError('I have a type error'); - const transformed = transformError(error); - expect(transformed).toEqual({ - message: 'I have a type error', - statusCode: 400, - }); - }); - - it('transforms a ResponseError returned by the elasticsearch client', () => { - const error: errors.ResponseError = { - name: 'ResponseError', - message: 'illegal_argument_exception', - headers: {}, - body: { - error: { - type: 'illegal_argument_exception', - reason: 'detailed explanation', - }, - }, - meta: ({} as unknown) as errors.ResponseError['meta'], - statusCode: 400, - }; - const transformed = transformError(error); - - expect(transformed).toEqual({ - message: 'illegal_argument_exception: detailed explanation', - statusCode: 400, - }); - }); - }); - describe('transformBulkError', () => { test('returns transformed object if it is a boom object', () => { const boom = new Boom.Boom('some boom message', { statusCode: 400 }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts index c2acbf9c5cc0a..130084da21591 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts @@ -6,8 +6,8 @@ */ import Boom from '@hapi/boom'; -import { errors } from '@elastic/elasticsearch'; import { has, snakeCase } from 'lodash/fp'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { SanitizedAlert } from '../../../../../alerting/common'; import { @@ -17,53 +17,12 @@ import { SavedObjectsFindResult, } from '../../../../../../../src/core/server'; import { AlertsClient } from '../../../../../alerting/server'; -import { BadRequestError } from '../errors/bad_request_error'; import { RuleStatusResponse, IRuleStatusSOAttributes } from '../rules/types'; export interface OutputError { message: string; statusCode: number; } - -/** - * @deprecated Use kbn-securitysolution-es-utils version - */ -export const transformError = (err: Error & Partial): OutputError => { - if (Boom.isBoom(err)) { - return { - message: err.output.payload.message, - statusCode: err.output.statusCode, - }; - } else { - if (err.statusCode != null) { - if (err.body?.error != null) { - return { - statusCode: err.statusCode, - message: `${err.body.error.type}: ${err.body.error.reason}`, - }; - } else { - return { - statusCode: err.statusCode, - message: err.message, - }; - } - } else if (err instanceof BadRequestError) { - // allows us to throw request validation errors in the absence of Boom - return { - message: err.message, - statusCode: 400, - }; - } else { - // natively return the err and allow the regular framework - // to deal with the error when it is a non Boom - return { - message: err.message ?? '(unknown error message)', - statusCode: 500, - }; - } - } -}; - export interface BulkError { id?: string; rule_id?: string; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.test.ts index 248afda7ff5c3..c5b3e98c4c44e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.test.ts @@ -8,7 +8,7 @@ import { Readable } from 'stream'; import { createPromiseFromStreams } from '@kbn/utils'; import { createRulesStreamFromNdJson } from './create_rules_stream_from_ndjson'; -import { BadRequestError } from '../errors/bad_request_error'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { ImportRulesSchemaDecoded } from '../../../../common/detection_engine/schemas/request/import_rules_schema'; type PromiseFromStreams = ImportRulesSchemaDecoded | Error; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.ts index 5e3c3c8b1cb98..0c2d81c18646b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/create_rules_stream_from_ndjson.ts @@ -11,15 +11,14 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { fold } from 'fp-ts/lib/Either'; import { createSplitStream, createMapStream, createConcatStream } from '@kbn/utils'; -import { formatErrors } from '../../../../common/format_errors'; +import { exactCheck, formatErrors } from '@kbn/securitysolution-io-ts-utils'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { importRuleValidateTypeDependents } from '../../../../common/detection_engine/schemas/request/import_rules_type_dependents'; -import { exactCheck } from '../../../../common/exact_check'; import { importRulesSchema, ImportRulesSchema, ImportRulesSchemaDecoded, } from '../../../../common/detection_engine/schemas/request/import_rules_schema'; -import { BadRequestError } from '../errors/bad_request_error'; import { parseNdjsonStrings, filterExportedCounts, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_prepackaged_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_prepackaged_rules.ts index b91557c6d7b1b..f2d28d13fa926 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_prepackaged_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/get_prepackaged_rules.ts @@ -8,14 +8,13 @@ import * as t from 'io-ts'; import { fold } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; -import { formatErrors } from '../../../../common/format_errors'; -import { exactCheck } from '../../../../common/exact_check'; +import { exactCheck, formatErrors } from '@kbn/securitysolution-io-ts-utils'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { addPrepackagedRulesSchema, AddPrepackagedRulesSchema, AddPrepackagedRulesSchemaDecoded, } from '../../../../common/detection_engine/schemas/request/add_prepackaged_rules_schema'; -import { BadRequestError } from '../errors/bad_request_error'; // TODO: convert rules files to TS and add explicit type definitions import { rawRules } from './prepackaged_rules'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts index bccd1f2fb73ca..b9a88bc36a812 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/patch_rules.ts @@ -6,7 +6,7 @@ */ import { defaults } from 'lodash/fp'; -import { validate } from '../../../../common/validate'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { PartialAlert } from '../../../../../alerting/server'; import { transformRuleToAlertAction } from '../../../../common/detection_engine/transform_actions'; import { PatchRulesOptions } from './types'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts index 2990a0f728027..e670535c26ae5 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/types.ts @@ -14,55 +14,70 @@ import { SavedObjectsFindResponse, SavedObjectsClientContract, } from 'kibana/server'; +import { + MachineLearningJobIdOrUndefined, + From, + FromOrUndefined, + RiskScore, + RiskScoreMapping, + RiskScoreMappingOrUndefined, + RiskScoreOrUndefined, + ThreatIndexOrUndefined, + ThreatQueryOrUndefined, + ThreatMappingOrUndefined, + ThreatFiltersOrUndefined, + ThreatLanguageOrUndefined, + ConcurrentSearchesOrUndefined, + ItemsPerSearchOrUndefined, + ThreatIndicatorPathOrUndefined, + Threats, + ThreatsOrUndefined, + TypeOrUndefined, + Type, + LanguageOrUndefined, + SeverityMapping, + SeverityMappingOrUndefined, + SeverityOrUndefined, + Severity, + MaxSignalsOrUndefined, + MaxSignals, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { VersionOrUndefined, Version } from '@kbn/securitysolution-io-ts-types'; + +import { ListArrayOrUndefined, ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { UpdateRulesSchema } from '../../../../common/detection_engine/schemas/request'; import { RuleAlertAction } from '../../../../common/detection_engine/types'; import { FalsePositives, - From, RuleId, Immutable, DescriptionOrUndefined, Interval, - MaxSignals, - RiskScore, OutputIndex, Name, - Severity, Tags, - Threats, To, - Type, References, - Version, AnomalyThresholdOrUndefined, QueryOrUndefined, - LanguageOrUndefined, SavedIdOrUndefined, TimelineIdOrUndefined, TimelineTitleOrUndefined, - MachineLearningJobIdOrUndefined, IndexOrUndefined, NoteOrUndefined, MetaOrUndefined, Description, Enabled, - VersionOrUndefined, IdOrUndefined, RuleIdOrUndefined, EnabledOrUndefined, FalsePositivesOrUndefined, - FromOrUndefined, OutputIndexOrUndefined, IntervalOrUndefined, - MaxSignalsOrUndefined, - RiskScoreOrUndefined, NameOrUndefined, - SeverityOrUndefined, TagsOrUndefined, ToOrUndefined, - ThreatsOrUndefined, ThresholdOrUndefined, - TypeOrUndefined, ReferencesOrUndefined, PerPageOrUndefined, PageOrUndefined, @@ -79,31 +94,16 @@ import { Author, AuthorOrUndefined, LicenseOrUndefined, - RiskScoreMapping, - RiskScoreMappingOrUndefined, - SeverityMapping, - SeverityMappingOrUndefined, TimestampOverrideOrUndefined, BuildingBlockTypeOrUndefined, RuleNameOverrideOrUndefined, EventCategoryOverrideOrUndefined, } from '../../../../common/detection_engine/schemas/common/schemas'; -import { - ThreatIndexOrUndefined, - ThreatQueryOrUndefined, - ThreatMappingOrUndefined, - ThreatFiltersOrUndefined, - ThreatLanguageOrUndefined, - ConcurrentSearchesOrUndefined, - ItemsPerSearchOrUndefined, - ThreatIndicatorPathOrUndefined, -} from '../../../../common/detection_engine/schemas/types/threat_mapping'; import { AlertsClient, PartialAlert } from '../../../../../alerting/server'; import { Alert, SanitizedAlert } from '../../../../../alerting/common'; import { SIGNALS_ID } from '../../../../common/constants'; import { PartialFilter } from '../types'; -import { ListArrayOrUndefined, ListArray } from '../../../../common/detection_engine/schemas/types'; import { RuleParams } from '../schemas/rule_schemas'; export type RuleAlertType = Alert; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts index 5c8450201d096..a31f9bec2cd58 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/utils.ts @@ -6,53 +6,53 @@ */ import { pickBy, isEmpty } from 'lodash/fp'; +import { + FromOrUndefined, + MachineLearningJobIdOrUndefined, + RiskScoreMappingOrUndefined, + RiskScoreOrUndefined, + ConcurrentSearchesOrUndefined, + ItemsPerSearchOrUndefined, + ThreatFiltersOrUndefined, + ThreatIndexOrUndefined, + ThreatLanguageOrUndefined, + ThreatMappingOrUndefined, + ThreatQueryOrUndefined, + ThreatsOrUndefined, + TypeOrUndefined, + LanguageOrUndefined, + SeverityOrUndefined, + SeverityMappingOrUndefined, + MaxSignalsOrUndefined, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { ListArrayOrUndefined } from '@kbn/securitysolution-io-ts-list-types'; +import { VersionOrUndefined } from '@kbn/securitysolution-io-ts-types'; import { DescriptionOrUndefined, AnomalyThresholdOrUndefined, QueryOrUndefined, - LanguageOrUndefined, SavedIdOrUndefined, TimelineIdOrUndefined, TimelineTitleOrUndefined, - MachineLearningJobIdOrUndefined, IndexOrUndefined, NoteOrUndefined, MetaOrUndefined, - VersionOrUndefined, FalsePositivesOrUndefined, - FromOrUndefined, OutputIndexOrUndefined, IntervalOrUndefined, - MaxSignalsOrUndefined, - RiskScoreOrUndefined, NameOrUndefined, - SeverityOrUndefined, TagsOrUndefined, ToOrUndefined, - ThreatsOrUndefined, ThresholdOrUndefined, - TypeOrUndefined, ReferencesOrUndefined, AuthorOrUndefined, BuildingBlockTypeOrUndefined, LicenseOrUndefined, - RiskScoreMappingOrUndefined, RuleNameOverrideOrUndefined, - SeverityMappingOrUndefined, TimestampOverrideOrUndefined, EventCategoryOverrideOrUndefined, } from '../../../../common/detection_engine/schemas/common/schemas'; import { PartialFilter } from '../types'; -import { - ConcurrentSearchesOrUndefined, - ItemsPerSearchOrUndefined, - ListArrayOrUndefined, - ThreatFiltersOrUndefined, - ThreatIndexOrUndefined, - ThreatLanguageOrUndefined, - ThreatMappingOrUndefined, - ThreatQueryOrUndefined, -} from '../../../../common/detection_engine/schemas/types'; export const calculateInterval = ( interval: string | undefined, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts index 79b862d6419c2..2af481b195a07 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/schemas/rule_schemas.ts @@ -7,15 +7,26 @@ import * as t from 'io-ts'; -import { listArray } from '../../../../common/detection_engine/schemas/types/lists'; import { + actionsCamel, + from, + machine_learning_job_id_normalized, + risk_score, + risk_score_mapping, threat_mapping, threat_index, threat_query, concurrentSearchesOrUndefined, itemsPerSearchOrUndefined, threatIndicatorPathOrUndefined, -} from '../../../../common/detection_engine/schemas/types/threat_mapping'; + threats, + severity, + severity_mapping, + throttleOrNull, + max_signals, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { listArray } from '@kbn/securitysolution-io-ts-list-types'; +import { version } from '@kbn/securitysolution-io-ts-types'; import { author, buildingBlockTypeOrUndefined, @@ -23,7 +34,6 @@ import { enabled, noteOrUndefined, false_positives, - from, rule_id, immutable, indexOrUndefined, @@ -36,32 +46,23 @@ import { query, queryOrUndefined, filtersOrUndefined, - max_signals, - risk_score, - risk_score_mapping, ruleNameOverrideOrUndefined, - severity, - severity_mapping, tags, timestampOverrideOrUndefined, - threats, to, references, - version, eventCategoryOverrideOrUndefined, savedIdOrUndefined, saved_id, thresholdNormalized, anomaly_threshold, - actionsCamel, - throttleOrNull, createdByOrNull, updatedByOrNull, created_at, updated_at, } from '../../../../common/detection_engine/schemas/common/schemas'; + import { SIGNALS_ID, SERVER_APP_ID } from '../../../../common/constants'; -import { machine_learning_job_id_normalized } from '../../../../common/detection_engine/schemas/types/normalized_ml_job_id'; const nonEqlLanguages = t.keyof({ kuery: null, lucene: null }); export const baseRuleParams = t.exact( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts index e1618d217d0dc..f653fde816c62 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts @@ -7,9 +7,10 @@ import type { estypes } from '@elastic/elasticsearch'; import { Logger } from 'src/core/server'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListClient } from '../../../../../../lists/server'; import { BuildRuleMessage } from '../rule_messages'; -import { ExceptionListItemSchema, Type } from '../../../../../../lists/common/schemas'; +import { ExceptionListItemSchema } from '../../../../../../lists/common/schemas'; export interface FilterEventsAgainstListOptions { listClient: ListClient; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts index 86940e9b77084..3d6a1f8da7f4d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/get_filter.ts @@ -5,15 +5,14 @@ * 2.0. */ +import { BadRequestError } from '@kbn/securitysolution-es-utils'; +import { Type, LanguageOrUndefined, Language } from '@kbn/securitysolution-io-ts-alerting-types'; import { assertUnreachable } from '../../../../common/utility_types'; import { getQueryFilter } from '../../../../common/detection_engine/get_query_filter'; import { - LanguageOrUndefined, QueryOrUndefined, - Type, SavedIdOrUndefined, IndexOrUndefined, - Language, } from '../../../../common/detection_engine/schemas/common/schemas'; import { ExceptionListItemSchema } from '../../../../../lists/common/schemas'; import { @@ -22,7 +21,6 @@ import { AlertServices, } from '../../../../../alerting/server'; import { PartialFilter } from '../types'; -import { BadRequestError } from '../errors/bad_request_error'; import { QueryFilter } from './types'; interface GetFilterArgs { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.test.ts index 88ce9de15cff8..82f3ff46b347d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.test.ts @@ -5,10 +5,7 @@ * 2.0. */ -import { - RiskScore, - RiskScoreMappingOrUndefined, -} from '../../../../../common/detection_engine/schemas/common/schemas'; +import { RiskScore, RiskScoreMappingOrUndefined } from '@kbn/securitysolution-io-ts-alerting-types'; import { sampleDocRiskScore } from '../__mocks__/es_results'; import { buildRiskScoreFromMapping, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.ts index 84d45f22b7f44..7253b24e66088 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_risk_score_from_mapping.ts @@ -5,12 +5,9 @@ * 2.0. */ +import { RiskScore, RiskScoreMappingOrUndefined } from '@kbn/securitysolution-io-ts-alerting-types'; import { get } from 'lodash/fp'; -import { - Meta, - RiskScore, - RiskScoreMappingOrUndefined, -} from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Meta } from '../../../../../common/detection_engine/schemas/common/schemas'; import { SignalSource } from '../types'; export interface BuildRiskScoreFromMappingProps { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.test.ts index cfd4b81ae3bc8..4ccf24a307cc4 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.test.ts @@ -5,10 +5,8 @@ * 2.0. */ -import { - Severity, - SeverityMappingOrUndefined, -} from '../../../../../common/detection_engine/schemas/common/schemas'; +import { Severity, SeverityMappingOrUndefined } from '@kbn/securitysolution-io-ts-alerting-types'; + import { sampleDocSeverity } from '../__mocks__/es_results'; import { buildSeverityFromMapping, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.ts index 44e41fbd0c9c0..652b6b2221900 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/mappings/build_severity_from_mapping.ts @@ -6,13 +6,14 @@ */ import { get } from 'lodash/fp'; + import { - Meta, Severity, SeverityMappingItem, severity as SeverityIOTS, SeverityMappingOrUndefined, -} from '../../../../../common/detection_engine/schemas/common/schemas'; +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { Meta } from '../../../../../common/detection_engine/schemas/common/schemas'; import { SearchTypes } from '../../../../../common/detection_engine/types'; import { SignalSource } from '../types'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts index 6e24e96c6e36d..d00bcc2a9f11e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts @@ -12,7 +12,7 @@ import { chain, tryCatch } from 'fp-ts/lib/TaskEither'; import { flow } from 'fp-ts/lib/function'; import * as t from 'io-ts'; -import { validateNonExact } from '../../../../common/validate'; +import { validateNonExact } from '@kbn/securitysolution-io-ts-utils'; import { toError, toPromise } from '../../../../common/fp_utils'; import { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts index e39b78b4f4a44..f49e3dec93600 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ import type { estypes } from '@elastic/elasticsearch'; -import { ThreatMapping } from '../../../../../common/detection_engine/schemas/types/threat_mapping'; +import { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import { Filter } from 'src/plugins/data/common'; import { ThreatListDoc, ThreatListItem } from './types'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.test.ts index 1c0300ee0cc74..a96eb50af3c50 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.test.ts @@ -5,10 +5,7 @@ * 2.0. */ -import { - ThreatMapping, - ThreatMappingEntries, -} from '../../../../../common/detection_engine/schemas/types/threat_mapping'; +import { ThreatMapping, ThreatMappingEntries } from '@kbn/securitysolution-io-ts-alerting-types'; import { filterThreatMapping, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts index 18204bb678a47..22e21ef40cb3e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/build_threat_mapping_filter.ts @@ -7,7 +7,7 @@ import get from 'lodash/fp/get'; import { Filter } from 'src/plugins/data/common'; -import { ThreatMapping } from '../../../../../common/detection_engine/schemas/types/threat_mapping'; +import { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types'; import { BooleanFilter, BuildEntriesMappingFilterOptions, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/types.ts index 360fb118faa84..82fc0dd3abd0a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/types.ts @@ -5,11 +5,6 @@ * 2.0. */ import type { estypes } from '@elastic/elasticsearch'; -import { ListClient } from '../../../../../../lists/server'; -import { - Type, - LanguageOrUndefined, -} from '../../../../../common/detection_engine/schemas/common/schemas'; import { ThreatQuery, ThreatMapping, @@ -19,7 +14,10 @@ import { ConcurrentSearches, ItemsPerSearch, ThreatIndicatorPathOrUndefined, -} from '../../../../../common/detection_engine/schemas/types/threat_mapping'; + LanguageOrUndefined, + Type, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { ListClient } from '../../../../../../lists/server'; import { AlertInstanceContext, AlertInstanceState, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts index bd37cf62c74b0..c2e3fe83b8893 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts @@ -14,6 +14,7 @@ import { isEmpty, partition } from 'lodash'; import { ApiResponse, Context } from '@elastic/elasticsearch/lib/Transport'; import { SortResults } from '@elastic/elasticsearch/api/types'; +import { ListArray } from '@kbn/securitysolution-io-ts-list-types'; import { TimestampOverrideOrUndefined, Privilege, @@ -27,7 +28,6 @@ import { } from '../../../../../alerting/server'; import { ExceptionListClient, ListClient, ListPluginSetup } from '../../../../../lists/server'; import { ExceptionListItemSchema } from '../../../../../lists/common/schemas'; -import { ListArray } from '../../../../common/detection_engine/schemas/types/lists'; import { BulkResponseErrorAggregation, SignalHit, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/types.ts index 85c8483a0b988..03ec7928115b7 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/types.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/types.ts @@ -5,54 +5,55 @@ * 2.0. */ +import { + From, + MachineLearningJobIdOrUndefined, + RiskScore, + RiskScoreMappingOrUndefined, + ThreatIndexOrUndefined, + ThreatQueryOrUndefined, + ThreatMappingOrUndefined, + ThreatLanguageOrUndefined, + ConcurrentSearchesOrUndefined, + ItemsPerSearchOrUndefined, + ThreatIndicatorPathOrUndefined, + ThreatsOrUndefined, + Type, + LanguageOrUndefined, + Severity, + SeverityMappingOrUndefined, + MaxSignals, +} from '@kbn/securitysolution-io-ts-alerting-types'; +import { Version } from '@kbn/securitysolution-io-ts-types'; + +import { ListArrayOrUndefined } from '@kbn/securitysolution-io-ts-list-types'; import { AnomalyThresholdOrUndefined, Description, NoteOrUndefined, - ThreatsOrUndefined, ThresholdOrUndefined, FalsePositives, - From, Immutable, IndexOrUndefined, - LanguageOrUndefined, - MaxSignals, - MachineLearningJobIdOrUndefined, - RiskScore, OutputIndex, QueryOrUndefined, References, SavedIdOrUndefined, - Severity, To, TimelineIdOrUndefined, TimelineTitleOrUndefined, - Version, MetaOrUndefined, RuleId, AuthorOrUndefined, BuildingBlockTypeOrUndefined, LicenseOrUndefined, - RiskScoreMappingOrUndefined, RuleNameOverrideOrUndefined, - SeverityMappingOrUndefined, TimestampOverrideOrUndefined, - Type, EventCategoryOverrideOrUndefined, } from '../../../common/detection_engine/schemas/common/schemas'; -import { - ThreatIndexOrUndefined, - ThreatQueryOrUndefined, - ThreatMappingOrUndefined, - ThreatLanguageOrUndefined, - ConcurrentSearchesOrUndefined, - ItemsPerSearchOrUndefined, - ThreatIndicatorPathOrUndefined, -} from '../../../common/detection_engine/schemas/types/threat_mapping'; import { LegacyCallAPIOptions } from '../../../../../../src/core/server'; import { Filter } from '../../../../../../src/plugins/data/server'; -import { ListArrayOrUndefined } from '../../../common/detection_engine/schemas/types'; import { AlertTypeParams } from '../../../../alerting/common'; export type PartialFilter = Partial; diff --git a/x-pack/plugins/security_solution/server/lib/machine_learning/authz.ts b/x-pack/plugins/security_solution/server/lib/machine_learning/authz.ts index 85c1eea7a957a..d5e8e951397c2 100644 --- a/x-pack/plugins/security_solution/server/lib/machine_learning/authz.ts +++ b/x-pack/plugins/security_solution/server/lib/machine_learning/authz.ts @@ -7,6 +7,7 @@ import { i18n } from '@kbn/i18n'; +import { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { KibanaRequest, SavedObjectsClientContract } from '../../../../../../src/core/server/'; import { ILicense } from '../../../../licensing/server'; import { MlPluginSetup } from '../../../../ml/server'; @@ -16,8 +17,6 @@ import { hasMlAdminPermissions } from '../../../common/machine_learning/has_ml_a import { isMlRule } from '../../../common/machine_learning/helpers'; import { Validation } from './validation'; import { cache } from './cache'; -import { Type } from '../../../common/detection_engine/schemas/common/schemas'; - export interface MlAuthz { validateRuleType: (type: Type) => Promise; } diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts index 113860f369f78..62770408af2fe 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/clean_draft_timelines/index.ts @@ -6,9 +6,11 @@ */ import uuid from 'uuid'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { ConfigType } from '../../../../..'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; + import { TIMELINE_DRAFT_URL } from '../../../../../../common/constants'; import { buildFrameworkRequest } from '../../../utils/common'; import { SetupPlugins } from '../../../../../plugin'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts index f3f813ace411d..cd7770dcd5b48 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/draft_timelines/get_draft_timelines/index.ts @@ -5,9 +5,11 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { ConfigType } from '../../../../..'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; + import { TIMELINE_DRAFT_URL } from '../../../../../../common/constants'; import { buildFrameworkRequest } from '../../../utils/common'; import { SetupPlugins } from '../../../../../plugin'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts index cb7d984ade40b..32fd87f39620b 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/notes/persist_note.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { NOTE_URL } from '../../../../../common/constants'; @@ -13,7 +14,7 @@ import { SetupPlugins } from '../../../../plugin'; import { buildRouteValidationWithExcess } from '../../../../utils/build_validation/route_validation'; import { ConfigType } from '../../../..'; -import { transformError, buildSiemResponse } from '../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../utils/common'; import { persistNoteSchema } from '../../schemas/notes'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts index 53ac002721c6e..ee407468f0c30 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../types'; import { PINNED_EVENT_URL } from '../../../../../common/constants'; @@ -13,7 +14,7 @@ import { SetupPlugins } from '../../../../plugin'; import { buildRouteValidationWithExcess } from '../../../../utils/build_validation/route_validation'; import { ConfigType } from '../../../..'; -import { transformError, buildSiemResponse } from '../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../utils/common'; import { persistPinnedEventSchema } from '../../schemas/pinned_events'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts index bb447948df24a..438ce71edd089 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/prepackaged_timelines/install_prepackaged_timelines/index.ts @@ -5,15 +5,16 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINE_PREPACKAGED_URL } from '../../../../../../common/constants'; import { SetupPlugins } from '../../../../../plugin'; import { ConfigType } from '../../../../../config'; -import { validate } from '../../../../../../common/validate'; -import { buildSiemResponse, transformError } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { installPrepackagedTimelines } from './helpers'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts index f35ddf1a76c7d..432a441e61e07 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/create_timelines/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINE_URL } from '../../../../../../common/constants'; @@ -13,7 +14,7 @@ import { ConfigType } from '../../../../..'; import { SetupPlugins } from '../../../../../plugin'; import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { createTimelineSchema } from '../../../schemas/timelines'; import { diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts index 7617881b90b7f..13fbc22aba5d3 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/delete_timelines/index.ts @@ -5,13 +5,15 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; import { ConfigType } from '../../../../..'; import { deleteTimelinesSchema } from '../../../schemas/timelines/delete_timelines_schema'; import { SecuritySolutionPluginRouter } from '../../../../../types'; import { SetupPlugins } from '../../../../../plugin'; import { TIMELINE_URL } from '../../../../../../common/constants'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; + import { buildFrameworkRequest } from '../../../utils/common'; import { deleteTimeline } from '../../../saved_object/timelines'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts index 9e1eabc4450bd..0d60129b1fcd6 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/export_timelines/index.ts @@ -5,10 +5,11 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import { TIMELINE_EXPORT_URL } from '../../../../../../common/constants'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { ConfigType } from '../../../../../config'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { exportTimelinesQuerySchema, diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts index 8d94cd2ef2cce..921ae2352a565 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timeline/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINE_URL } from '../../../../../../common/constants'; @@ -13,7 +14,7 @@ import { ConfigType } from '../../../../..'; import { SetupPlugins } from '../../../../../plugin'; import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; -import { buildSiemResponse, transformError } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../../utils/common'; import { getTimelineQuerySchema } from '../../../schemas/timelines'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts index 51a02db681b0c..4599916092611 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/get_timelines/index.ts @@ -10,13 +10,14 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINES_URL } from '../../../../../../common/constants'; import { ConfigType } from '../../../../..'; import { SetupPlugins } from '../../../../../plugin'; -import { buildSiemResponse, transformError } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { buildFrameworkRequest, escapeHatch, throwErrors } from '../../../utils/common'; import { getAllTimeline } from '../../../saved_object/timelines'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts index aeb7463377b1f..d016fe8a24ff2 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/create_timelines_stream_from_ndjson.ts @@ -11,6 +11,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { createConcatStream, createSplitStream, createMapStream } from '@kbn/utils'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { parseNdjsonStrings, filterExportedCounts, @@ -19,7 +20,6 @@ import { import { ImportTimelineResponse } from './types'; import { ImportTimelinesSchemaRt } from '../../../schemas/timelines/import_timelines_schema'; -import { BadRequestError } from '../../../../detection_engine/errors/bad_request_error'; import { throwErrors } from '../../../utils/common'; type ErrorFactory = (message: string) => Error; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts index a19276652e78b..70d93d7552b1c 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/helpers.ts @@ -10,12 +10,12 @@ import { Readable } from 'stream'; import uuid from 'uuid'; import { createPromiseFromStreams } from '@kbn/utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; import { ImportTimelineResultSchema, importTimelineResultSchema, TimelineStatus, } from '../../../../../../common/types/timeline'; -import { validate } from '../../../../../../common/validate'; import { createBulkErrorObject, BulkError } from '../../../../detection_engine/routes/utils'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts index 603aad16dd9c6..65ffd10c5168b 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/import_timelines/index.ts @@ -8,6 +8,7 @@ import { extname } from 'path'; import { Readable } from 'stream'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINE_IMPORT_URL } from '../../../../../../common/constants'; @@ -15,7 +16,7 @@ import { TIMELINE_IMPORT_URL } from '../../../../../../common/constants'; import { SetupPlugins } from '../../../../../plugin'; import { ConfigType } from '../../../../../config'; import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; -import { buildSiemResponse, transformError } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { importTimelines } from './helpers'; import { ImportTimelinesPayloadSchemaRt } from '../../../schemas/timelines/import_timelines_schema'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts index b0142625f5e08..e3ad9bc7cb048 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/patch_timelines/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINE_URL } from '../../../../../../common/constants'; @@ -13,7 +14,7 @@ import { SetupPlugins } from '../../../../../plugin'; import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; import { ConfigType } from '../../../../..'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { patchTimelineSchema } from '../../../schemas/timelines/patch_timelines_schema'; import { buildFrameworkRequest, TimelineStatusActions } from '../../../utils/common'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts index 2cc3888696248..0de64171e0fb8 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/timelines/persist_favorite/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { TIMELINE_FAVORITE_URL } from '../../../../../../common/constants'; @@ -13,7 +14,7 @@ import { SetupPlugins } from '../../../../../plugin'; import { buildRouteValidationWithExcess } from '../../../../../utils/build_validation/route_validation'; import { ConfigType } from '../../../../..'; -import { transformError, buildSiemResponse } from '../../../../detection_engine/routes/utils'; +import { buildSiemResponse } from '../../../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../../utils/common'; import { persistFavorite } from '../../../saved_object/timelines'; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts b/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts index c4ddefd925b37..be086732ddcd0 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts @@ -11,9 +11,9 @@ import fs from 'fs'; import { Readable } from 'stream'; import { createListStream } from '@kbn/utils'; import { schema } from '@kbn/config-schema'; -import { isObject } from 'lodash/fp'; import { KibanaRequest } from 'src/core/server'; +import { formatErrors } from '@kbn/securitysolution-io-ts-utils'; import { SetupPlugins, StartPlugins } from '../../../plugin'; import type { SecuritySolutionRequestHandlerContext } from '../../../types'; @@ -40,32 +40,6 @@ export const buildFrameworkRequest = async ( export const escapeHatch = schema.object({}, { unknowns: 'allow' }); -/** - * @deprecated Use packages/kbn-securitysolution-io-ts-utils/src/format_errors/index.ts - */ -export const formatErrors = (errors: rt.Errors): string[] => { - const err = errors.map((error) => { - if (error.message != null) { - return error.message; - } else { - const keyContext = error.context - .filter( - (entry) => entry.key != null && !Number.isInteger(+entry.key) && entry.key.trim() !== '' - ) - .map((entry) => entry.key) - .join(','); - - const nameContext = error.context.find((entry) => entry.type?.name?.length > 0); - const suppliedValue = - keyContext !== '' ? keyContext : nameContext != null ? nameContext.type.name : ''; - const value = isObject(error.value) ? JSON.stringify(error.value) : error.value; - return `Invalid value "${value}" supplied to "${suppliedValue}"`; - } - }); - - return [...new Set(err)]; -}; - type ErrorFactory = (message: string) => Error; export const throwErrors = (createError: ErrorFactory) => (errors: rt.Errors) => { diff --git a/x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts b/x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts index caba0eb9f0152..5dfa74c14bf72 100644 --- a/x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts +++ b/x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts @@ -8,8 +8,7 @@ import { fold } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; import * as rt from 'io-ts'; -import { formatErrors } from '../../../common/format_errors'; -import { exactCheck } from '../../../common/exact_check'; +import { exactCheck, formatErrors } from '@kbn/securitysolution-io-ts-utils'; import { RouteValidationFunction, RouteValidationResultFactory, diff --git a/x-pack/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts b/x-pack/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts index 02749cf093695..b0b70aeb3ea34 100644 --- a/x-pack/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts +++ b/x-pack/plugins/security_solution/server/utils/read_stream/create_stream_from_ndjson.ts @@ -12,15 +12,14 @@ import { fold } from 'fp-ts/lib/Either'; import * as t from 'io-ts'; import { createMapStream, createFilterStream } from '@kbn/utils'; -import { formatErrors } from '../../../common/format_errors'; +import { exactCheck, formatErrors } from '@kbn/securitysolution-io-ts-utils'; +import { BadRequestError } from '@kbn/securitysolution-es-utils'; import { importRuleValidateTypeDependents } from '../../../common/detection_engine/schemas/request/import_rules_type_dependents'; import { ImportRulesSchemaDecoded, importRulesSchema, ImportRulesSchema, } from '../../../common/detection_engine/schemas/request/import_rules_schema'; -import { exactCheck } from '../../../common/exact_check'; -import { BadRequestError } from '../../lib/detection_engine/errors/bad_request_error'; export interface RulesObjectsExportResultDetails { /** number of successfully exported objects */ diff --git a/x-pack/test/detection_engine_api_integration/utils.ts b/x-pack/test/detection_engine_api_integration/utils.ts index 0f57728f99d67..d8466f013a110 100644 --- a/x-pack/test/detection_engine_api_integration/utils.ts +++ b/x-pack/test/detection_engine_api_integration/utils.ts @@ -12,8 +12,8 @@ import { SuperTest } from 'supertest'; import supertestAsPromised from 'supertest-as-promised'; import { Context } from '@elastic/elasticsearch/lib/Transport'; import { SearchResponse } from 'elasticsearch'; +import { NonEmptyEntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { PrePackagedRulesAndTimelinesStatusSchema } from '../../plugins/security_solution/common/detection_engine/schemas/response'; -import { NonEmptyEntriesArray } from '../../plugins/lists/common/schemas'; import { getCreateExceptionListDetectionSchemaMock } from '../../plugins/lists/common/schemas/request/create_exception_list_schema.mock'; import { CreateRulesSchema, diff --git a/x-pack/test/lists_api_integration/utils.ts b/x-pack/test/lists_api_integration/utils.ts index 0512cede0a84f..29846a79d6b02 100644 --- a/x-pack/test/lists_api_integration/utils.ts +++ b/x-pack/test/lists_api_integration/utils.ts @@ -9,12 +9,12 @@ import { SuperTest } from 'supertest'; import supertestAsPromised from 'supertest-as-promised'; import type { KibanaClient } from '@elastic/elasticsearch/api/kibana'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { getImportListItemAsBuffer } from '../../plugins/lists/common/schemas/request/import_list_item_schema.mock'; import { ListItemSchema, ExceptionListSchema, ExceptionListItemSchema, - Type, } from '../../plugins/lists/common/schemas'; import { ListSchema } from '../../plugins/lists/common'; import { LIST_INDEX, LIST_ITEM_URL } from '../../plugins/lists/common/constants'; From 6bb55f824e59a307598efa2fb2683e1016239deb Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Tue, 18 May 2021 01:24:12 -0600 Subject: [PATCH 140/144] Reduce limits of security solutions to max + 15kb (#100247) ## Summary With recent package changes and fixes we are down to 61kb for page load bundle. General rules are max kilobytes + 15kb for buffer so that would mean we should lower it to be 76kb. Resolves #95870 --- packages/kbn-optimizer/limits.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 5748984c7bc6e..348ecb7eea7f2 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -68,7 +68,7 @@ pageLoadAssetSize: searchprofiler: 67080 security: 95864 securityOss: 30806 - securitySolution: 187863 + securitySolution: 76000 share: 99061 snapshotRestore: 79032 spaces: 57868 From 15abf24339ccb69b2c2c185c4a5de2472195be82 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Tue, 18 May 2021 10:13:39 +0200 Subject: [PATCH 141/144] [Lens] Debounce axis name inputs mob programming (#100108) --- .../dimension_panel/dimension_editor.tsx | 42 +++------------ .../definitions/ranges/ranges.test.tsx | 11 ++++ .../shared_components/label_input.tsx | 15 ++---- .../indexpattern_datasource/query_input.tsx | 12 ++--- .../lens/public/pie_visualization/toolbar.tsx | 13 ++--- .../shared_components/debounced_value.ts | 52 +++++++++++++++++++ .../lens/public/shared_components/index.ts | 1 + .../axis_settings_popover.tsx | 14 +++-- 8 files changed, 89 insertions(+), 71 deletions(-) create mode 100644 x-pack/plugins/lens/public/shared_components/debounced_value.ts diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index d84d418ff231c..8e26713630281 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -7,7 +7,7 @@ import './dimension_editor.scss'; import _ from 'lodash'; -import React, { useState, useMemo, useEffect, useRef } from 'react'; +import React, { useState, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiListGroup, @@ -44,6 +44,7 @@ import { ReferenceEditor } from './reference_editor'; import { setTimeScaling, TimeScaling } from './time_scaling'; import { defaultFilter, Filtering, setFilter } from './filtering'; import { AdvancedOptions } from './advanced_options'; +import { useDebouncedValue } from '../../shared_components'; const operationPanels = getOperationDisplay(); @@ -53,39 +54,8 @@ export interface DimensionEditorProps extends IndexPatternDimensionEditorProps { currentIndexPattern: IndexPattern; } -/** - * This component shows a debounced input for the label of a dimension. It will update on root state changes - * if no debounced changes are in flight because the user is currently typing into the input. - */ const LabelInput = ({ value, onChange }: { value: string; onChange: (value: string) => void }) => { - const [inputValue, setInputValue] = useState(value); - const unflushedChanges = useRef(false); - - // Save the initial value - const initialValue = useRef(value); - - const onChangeDebounced = useMemo(() => { - const callback = _.debounce((val: string) => { - onChange(val); - unflushedChanges.current = false; - }, 256); - return (val: string) => { - unflushedChanges.current = true; - callback(val); - }; - }, [onChange]); - - useEffect(() => { - if (!unflushedChanges.current && value !== inputValue) { - setInputValue(value); - } - }, [value, inputValue]); - - const handleInputChange = (e: React.ChangeEvent) => { - const val = String(e.target.value); - setInputValue(val); - onChangeDebounced(val || initialValue.current); - }; + const { inputValue, handleInputChange, initialValue } = useDebouncedValue({ onChange, value }); return ( { + handleInputChange(e.target.value); + }} + placeholder={initialValue} /> ); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx index 08bcfcb2e93be..cfbe0f8903daf 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.test.tsx @@ -46,6 +46,17 @@ jest.mock('@elastic/eui', () => { }; }); +jest.mock('react-use/lib/useDebounce', () => (fn: () => void) => fn()); + +jest.mock('lodash', () => { + const original = jest.requireActual('lodash'); + + return { + ...original, + debounce: (fn: unknown) => fn, + }; +}); + const dataPluginMockValue = dataPluginMock.createStartContract(); // need to overwrite the formatter field first dataPluginMockValue.fieldFormats.deserialize = jest.fn().mockImplementation(({ params }) => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/label_input.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/label_input.tsx index b9870dc8bfec3..81f1b669a53a2 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/label_input.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/shared_components/label_input.tsx @@ -5,10 +5,10 @@ * 2.0. */ -import React, { useState } from 'react'; -import useDebounce from 'react-use/lib/useDebounce'; +import React from 'react'; import { EuiFieldText, keys } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { useDebouncedValue } from '../../../../shared_components'; export const LabelInput = ({ value, @@ -27,20 +27,13 @@ export const LabelInput = ({ dataTestSubj?: string; compressed?: boolean; }) => { - const [inputValue, setInputValue] = useState(value); - - useDebounce(() => onChange(inputValue), 256, [inputValue]); - - const handleInputChange = (e: React.ChangeEvent) => { - const val = String(e.target.value); - setInputValue(val); - }; + const { inputValue, handleInputChange } = useDebouncedValue({ value, onChange }); return ( handleInputChange(e.target.value)} fullWidth placeholder={placeholder || ''} inputRef={(node) => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/query_input.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/query_input.tsx index 50941148342c3..6c2b62f96eaec 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/query_input.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/query_input.tsx @@ -5,11 +5,11 @@ * 2.0. */ -import React, { useState } from 'react'; -import useDebounce from 'react-use/lib/useDebounce'; +import React from 'react'; import { i18n } from '@kbn/i18n'; import { IndexPattern } from './types'; import { QueryStringInput, Query } from '../../../../../src/plugins/data/public'; +import { useDebouncedValue } from '../shared_components'; export const QueryInput = ({ value, @@ -26,13 +26,7 @@ export const QueryInput = ({ onSubmit: () => void; disableAutoFocus?: boolean; }) => { - const [inputValue, setInputValue] = useState(value); - - useDebounce(() => onChange(inputValue), 256, [inputValue]); - - const handleInputChange = (input: Query) => { - setInputValue(input); - }; + const { inputValue, handleInputChange } = useDebouncedValue({ value, onChange }); return ( void; }) => { - const [localValue, setLocalValue] = useState(value); - useDebounce(() => setValue(localValue), 256, [localValue]); - + const { inputValue, handleInputChange } = useDebouncedValue({ value, onChange: setValue }); return ( { - setLocalValue(Number(e.currentTarget.value)); + handleInputChange(Number(e.currentTarget.value)); }} /> ); diff --git a/x-pack/plugins/lens/public/shared_components/debounced_value.ts b/x-pack/plugins/lens/public/shared_components/debounced_value.ts new file mode 100644 index 0000000000000..5447384ce38ea --- /dev/null +++ b/x-pack/plugins/lens/public/shared_components/debounced_value.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useState, useMemo, useEffect, useRef } from 'react'; +import _ from 'lodash'; + +/** + * Debounces value changes and updates inputValue on root state changes if no debounced changes + * are in flight because the user is currently modifying the value. + */ + +export const useDebouncedValue = ({ + onChange, + value, +}: { + onChange: (val: T) => void; + value: T; +}) => { + const [inputValue, setInputValue] = useState(value); + const unflushedChanges = useRef(false); + + // Save the initial value + const initialValue = useRef(value); + + const onChangeDebounced = useMemo(() => { + const callback = _.debounce((val: T) => { + onChange(val); + unflushedChanges.current = false; + }, 256); + return (val: T) => { + unflushedChanges.current = true; + callback(val); + }; + }, [onChange]); + + useEffect(() => { + if (!unflushedChanges.current && value !== inputValue) { + setInputValue(value); + } + }, [value, inputValue]); + + const handleInputChange = (val: T) => { + setInputValue(val); + onChangeDebounced(val || initialValue.current); + }; + + return { inputValue, handleInputChange, initialValue: initialValue.current }; +}; diff --git a/x-pack/plugins/lens/public/shared_components/index.ts b/x-pack/plugins/lens/public/shared_components/index.ts index 482571696a4d3..ae57da976a881 100644 --- a/x-pack/plugins/lens/public/shared_components/index.ts +++ b/x-pack/plugins/lens/public/shared_components/index.ts @@ -9,3 +9,4 @@ export * from './empty_placeholder'; export { ToolbarPopoverProps, ToolbarPopover } from './toolbar_popover'; export { LegendSettingsPopover } from './legend_settings_popover'; export { PalettePicker } from './palette_picker'; +export { useDebouncedValue } from './debounced_value'; diff --git a/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx b/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx index d9c60ae666484..d995e1a055e68 100644 --- a/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useState } from 'react'; +import React from 'react'; import { EuiFlexGroup, EuiFlexItem, @@ -17,7 +17,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { XYLayerConfig, AxesSettingsConfig } from './types'; -import { ToolbarPopover } from '../shared_components'; +import { ToolbarPopover, useDebouncedValue } from '../shared_components'; import { isHorizontalChart } from './state_helpers'; import { EuiIconAxisBottom } from '../assets/axis_bottom'; import { EuiIconAxisLeft } from '../assets/axis_left'; @@ -149,15 +149,13 @@ export const AxisSettingsPopover: React.FunctionComponent { - const [title, setTitle] = useState(axisTitle); - const isHorizontal = layers?.length ? isHorizontalChart(layers) : false; const config = popoverConfig(axis, isHorizontal); - const onTitleChange = (value: string): void => { - setTitle(value); - updateTitleState(value); - }; + const { inputValue: title, handleInputChange: onTitleChange } = useDebouncedValue({ + value: axisTitle || '', + onChange: updateTitleState, + }); return ( Date: Tue, 18 May 2021 12:33:16 +0200 Subject: [PATCH 142/144] Migrate from Joi to @kbn/config-schema in "home" and "features" plugins (#100201) * add a link for issue to remove circular deps * features: migrate from joi to config-schema * update tests * migrate home tutorials to config-schema * migrate home dataset validation to config schema * remove unnecessary type. we cannot guarantee this is a valid SO * address Pierres comments --- src/plugins/home/server/services/index.ts | 1 - .../lib/sample_dataset_registry_types.ts | 56 +--- .../sample_data/lib/sample_dataset_schema.ts | 92 ++++-- .../services/sample_data/routes/install.ts | 10 +- .../sample_data/sample_data_registry.ts | 9 +- .../home/server/services/tutorials/index.ts | 1 - .../services/tutorials/lib/tutorial_schema.ts | 220 +++++++------ .../tutorials/lib/tutorials_registry_types.ts | 90 +----- .../tutorials/tutorials_registry.test.ts | 2 +- .../services/tutorials/tutorials_registry.ts | 9 +- .../usage_collector/get_usage_collector.ts | 4 +- x-pack/plugins/apm/server/plugin.ts | 1 + .../feature_registry.test.ts.snap | 20 +- .../server/feature_privilege_iterator.js | 1 + .../features/server/feature_registry.test.ts | 33 +- .../plugins/features/server/feature_schema.ts | 306 +++++++++++------- 16 files changed, 440 insertions(+), 415 deletions(-) diff --git a/src/plugins/home/server/services/index.ts b/src/plugins/home/server/services/index.ts index 7f26c886ab4b6..5674a3501f064 100644 --- a/src/plugins/home/server/services/index.ts +++ b/src/plugins/home/server/services/index.ts @@ -15,7 +15,6 @@ export type { TutorialsRegistrySetup, TutorialsRegistryStart } from './tutorials export { TutorialsCategory } from './tutorials'; export type { - ParamTypes, InstructionSetSchema, ParamsSchema, InstructionsSchema, diff --git a/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts b/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts index 4d9dc3885e67d..09af7728f74d2 100644 --- a/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts +++ b/src/plugins/home/server/services/sample_data/lib/sample_dataset_registry_types.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { SavedObject } from 'src/core/server'; +import type { SampleDatasetSchema } from './sample_dataset_schema'; +export type { SampleDatasetSchema, AppLinkSchema, DataIndexSchema } from './sample_dataset_schema'; export enum DatasetStatusTypes { NOT_INSTALLED = 'not_installed', @@ -26,57 +27,4 @@ export enum EmbeddableTypes { SEARCH_EMBEDDABLE_TYPE = 'search', VISUALIZE_EMBEDDABLE_TYPE = 'visualization', } -export interface DataIndexSchema { - id: string; - - // path to newline delimented JSON file containing data relative to KIBANA_HOME - dataPath: string; - - // Object defining Elasticsearch field mappings (contents of index.mappings.type.properties) - fields: object; - - // times fields that will be updated relative to now when data is installed - timeFields: string[]; - - // Reference to now in your test data set. - // When data is installed, timestamps are converted to the present time. - // The distance between a timestamp and currentTimeMarker is preserved but the date and time will change. - // For example: - // sample data set: timestamp: 2018-01-01T00:00:00Z, currentTimeMarker: 2018-01-01T12:00:00Z - // installed data set: timestamp: 2018-04-18T20:33:14Z, currentTimeMarker: 2018-04-19T08:33:14Z - currentTimeMarker: string; - - // Set to true to move timestamp to current week, preserving day of week and time of day - // Relative distance from timestamp to currentTimeMarker will not remain the same - preserveDayOfWeekTimeOfDay: boolean; -} - -export interface AppLinkSchema { - path: string; - icon: string; - label: string; -} - -export interface SampleDatasetSchema { - id: string; - name: string; - description: string; - previewImagePath: string; - darkPreviewImagePath: string; - - // saved object id of main dashboard for sample data set - overviewDashboard: string; - appLinks: AppLinkSchema[]; - - // saved object id of default index-pattern for sample data set - defaultIndex: string; - - // Kibana saved objects (index patter, visualizations, dashboard, ...) - // Should provide a nice demo of Kibana's functionality with the sample data set - savedObjects: Array>; - dataIndices: DataIndexSchema[]; - status?: string | undefined; - statusMsg?: unknown; -} - export type SampleDatasetProvider = () => SampleDatasetSchema; diff --git a/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts b/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts index eb0b2252774b5..3c1764b2b8df1 100644 --- a/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts +++ b/src/plugins/home/server/services/sample_data/lib/sample_dataset_schema.ts @@ -5,22 +5,27 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +import type { Writable } from '@kbn/utility-types'; +import { schema, TypeOf } from '@kbn/config-schema'; -import Joi from 'joi'; - -const dataIndexSchema = Joi.object({ - id: Joi.string() - .regex(/^[a-zA-Z0-9-]+$/) - .required(), +const idRegExp = /^[a-zA-Z0-9-]+$/; +const dataIndexSchema = schema.object({ + id: schema.string({ + validate(value: string) { + if (!idRegExp.test(value)) { + return `Does not satisfy regexp: ${idRegExp.toString()}`; + } + }, + }), // path to newline delimented JSON file containing data relative to KIBANA_HOME - dataPath: Joi.string().required(), + dataPath: schema.string(), // Object defining Elasticsearch field mappings (contents of index.mappings.type.properties) - fields: Joi.object().required(), + fields: schema.recordOf(schema.string(), schema.any()), // times fields that will be updated relative to now when data is installed - timeFields: Joi.array().items(Joi.string()).required(), + timeFields: schema.arrayOf(schema.string()), // Reference to now in your test data set. // When data is installed, timestamps are converted to the present time. @@ -28,37 +33,66 @@ const dataIndexSchema = Joi.object({ // For example: // sample data set: timestamp: 2018-01-01T00:00:00Z, currentTimeMarker: 2018-01-01T12:00:00Z // installed data set: timestamp: 2018-04-18T20:33:14Z, currentTimeMarker: 2018-04-19T08:33:14Z - currentTimeMarker: Joi.string().isoDate().required(), + currentTimeMarker: schema.string({ + validate(value: string) { + if (isNaN(Date.parse(value))) { + return 'Expected a valid string in iso format'; + } + }, + }), // Set to true to move timestamp to current week, preserving day of week and time of day // Relative distance from timestamp to currentTimeMarker will not remain the same - preserveDayOfWeekTimeOfDay: Joi.boolean().default(false), + preserveDayOfWeekTimeOfDay: schema.boolean({ defaultValue: false }), }); -const appLinkSchema = Joi.object({ - path: Joi.string().required(), - label: Joi.string().required(), - icon: Joi.string().required(), +export type DataIndexSchema = TypeOf; + +const appLinkSchema = schema.object({ + path: schema.string(), + label: schema.string(), + icon: schema.string(), }); +export type AppLinkSchema = TypeOf; -export const sampleDataSchema = { - id: Joi.string() - .regex(/^[a-zA-Z0-9-]+$/) - .required(), - name: Joi.string().required(), - description: Joi.string().required(), - previewImagePath: Joi.string().required(), - darkPreviewImagePath: Joi.string(), +export const sampleDataSchema = schema.object({ + id: schema.string({ + validate(value: string) { + if (!idRegExp.test(value)) { + return `Does not satisfy regexp: ${idRegExp.toString()}`; + } + }, + }), + name: schema.string(), + description: schema.string(), + previewImagePath: schema.string(), + darkPreviewImagePath: schema.maybe(schema.string()), // saved object id of main dashboard for sample data set - overviewDashboard: Joi.string().required(), - appLinks: Joi.array().items(appLinkSchema).default([]), + overviewDashboard: schema.string(), + appLinks: schema.arrayOf(appLinkSchema, { defaultValue: [] }), // saved object id of default index-pattern for sample data set - defaultIndex: Joi.string().required(), + defaultIndex: schema.string(), // Kibana saved objects (index patter, visualizations, dashboard, ...) // Should provide a nice demo of Kibana's functionality with the sample data set - savedObjects: Joi.array().items(Joi.object()).required(), - dataIndices: Joi.array().items(dataIndexSchema).required(), -}; + savedObjects: schema.arrayOf( + schema.object( + { + id: schema.string(), + type: schema.string(), + attributes: schema.any(), + references: schema.arrayOf(schema.any()), + version: schema.maybe(schema.any()), + }, + { unknowns: 'allow' } + ) + ), + dataIndices: schema.arrayOf(dataIndexSchema), + + status: schema.maybe(schema.string()), + statusMsg: schema.maybe(schema.string()), +}); + +export type SampleDatasetSchema = Writable>; diff --git a/src/plugins/home/server/services/sample_data/routes/install.ts b/src/plugins/home/server/services/sample_data/routes/install.ts index e5ff33d5c199d..d0457f0a6d301 100644 --- a/src/plugins/home/server/services/sample_data/routes/install.ts +++ b/src/plugins/home/server/services/sample_data/routes/install.ts @@ -7,7 +7,12 @@ */ import { schema } from '@kbn/config-schema'; -import { IRouter, Logger, IScopedClusterClient } from 'src/core/server'; +import type { + IRouter, + Logger, + IScopedClusterClient, + SavedObjectsBulkCreateObject, +} from 'src/core/server'; import { SampleDatasetSchema } from '../lib/sample_dataset_registry_types'; import { createIndexName } from '../lib/create_index_name'; import { @@ -148,8 +153,9 @@ export function createInstallRoute( const client = getClient({ includedHiddenTypes }); + const savedObjects = sampleDataset.savedObjects as SavedObjectsBulkCreateObject[]; createResults = await client.bulkCreate( - sampleDataset.savedObjects.map(({ version, ...savedObject }) => savedObject), + savedObjects.map(({ version, ...savedObject }) => savedObject), { overwrite: true } ); } catch (err) { diff --git a/src/plugins/home/server/services/sample_data/sample_data_registry.ts b/src/plugins/home/server/services/sample_data/sample_data_registry.ts index ca75d20dc1d3f..dff0d86409974 100644 --- a/src/plugins/home/server/services/sample_data/sample_data_registry.ts +++ b/src/plugins/home/server/services/sample_data/sample_data_registry.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import Joi from 'joi'; import { CoreSetup, PluginInitializerContext } from 'src/core/server'; import { SavedObject } from 'src/core/public'; import { @@ -55,11 +54,13 @@ export class SampleDataRegistry { return { registerSampleDataset: (specProvider: SampleDatasetProvider) => { - const { error, value } = Joi.validate(specProvider(), sampleDataSchema); - - if (error) { + let value: SampleDatasetSchema; + try { + value = sampleDataSchema.validate(specProvider()); + } catch (error) { throw new Error(`Unable to register sample dataset spec because it's invalid. ${error}`); } + const defaultIndexSavedObjectJson = value.savedObjects.find((savedObjectJson: any) => { return ( savedObjectJson.type === 'index-pattern' && savedObjectJson.id === value.defaultIndex diff --git a/src/plugins/home/server/services/tutorials/index.ts b/src/plugins/home/server/services/tutorials/index.ts index 92f6de716185d..f745d0190efd5 100644 --- a/src/plugins/home/server/services/tutorials/index.ts +++ b/src/plugins/home/server/services/tutorials/index.ts @@ -12,7 +12,6 @@ export type { TutorialsRegistrySetup, TutorialsRegistryStart } from './tutorials export { TutorialsCategory } from './lib/tutorials_registry_types'; export type { - ParamTypes, InstructionSetSchema, ParamsSchema, InstructionsSchema, diff --git a/src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts b/src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts index 0f06b6c3257c2..5efbe067f6ece 100644 --- a/src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts +++ b/src/plugins/home/server/services/tutorials/lib/tutorial_schema.ts @@ -5,121 +5,153 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +import { schema, TypeOf } from '@kbn/config-schema'; -import Joi from 'joi'; - -const PARAM_TYPES = { - NUMBER: 'number', - STRING: 'string', -}; - -const TUTORIAL_CATEGORY = { - LOGGING: 'logging', - SECURITY_SOLUTION: 'security solution', - METRICS: 'metrics', - OTHER: 'other', -}; - -const dashboardSchema = Joi.object({ - id: Joi.string().required(), // Dashboard saved object id - linkLabel: Joi.string().when('isOverview', { - is: true, - then: Joi.required(), - }), +const dashboardSchema = schema.object({ + // Dashboard saved object id + id: schema.string(), // Is this an Overview / Entry Point dashboard? - isOverview: Joi.boolean().required(), + isOverview: schema.boolean(), + linkLabel: schema.conditional( + schema.siblingRef('isOverview'), + true, + schema.string(), + schema.maybe(schema.string()) + ), }); +export type DashboardSchema = TypeOf; -const artifactsSchema = Joi.object({ +const artifactsSchema = schema.object({ // Fields present in Elasticsearch documents created by this product. - exportedFields: Joi.object({ - documentationUrl: Joi.string().required(), - }), + exportedFields: schema.maybe( + schema.object({ + documentationUrl: schema.string(), + }) + ), // Kibana dashboards created by this product. - dashboards: Joi.array().items(dashboardSchema).required(), - application: Joi.object({ - path: Joi.string().required(), - label: Joi.string().required(), - }), + dashboards: schema.arrayOf(dashboardSchema), + application: schema.maybe( + schema.object({ + path: schema.string(), + label: schema.string(), + }) + ), }); - -const statusCheckSchema = Joi.object({ - title: Joi.string(), - text: Joi.string(), - btnLabel: Joi.string(), - success: Joi.string(), - error: Joi.string(), - esHitsCheck: Joi.object({ - index: Joi.alternatives().try(Joi.string(), Joi.array().items(Joi.string())).required(), - query: Joi.object().required(), - }).required(), +export type ArtifactsSchema = TypeOf; + +const statusCheckSchema = schema.object({ + title: schema.maybe(schema.string()), + text: schema.maybe(schema.string()), + btnLabel: schema.maybe(schema.string()), + success: schema.maybe(schema.string()), + error: schema.maybe(schema.string()), + esHitsCheck: schema.object({ + index: schema.oneOf([schema.string(), schema.arrayOf(schema.string())]), + query: schema.recordOf(schema.string(), schema.any()), + }), }); -const instructionSchema = Joi.object({ - title: Joi.string(), - textPre: Joi.string(), - commands: Joi.array().items(Joi.string().allow('')), - textPost: Joi.string(), +const instructionSchema = schema.object({ + title: schema.maybe(schema.string()), + textPre: schema.maybe(schema.string()), + commands: schema.maybe(schema.arrayOf(schema.string())), + textPost: schema.maybe(schema.string()), }); +export type Instruction = TypeOf; -const instructionVariantSchema = Joi.object({ - id: Joi.string().required(), - instructions: Joi.array().items(instructionSchema).required(), +const instructionVariantSchema = schema.object({ + id: schema.string(), + instructions: schema.arrayOf(instructionSchema), }); -const instructionSetSchema = Joi.object({ - title: Joi.string(), - callOut: Joi.object({ - title: Joi.string().required(), - message: Joi.string(), - iconType: Joi.string(), - }), +export type InstructionVariant = TypeOf; + +const instructionSetSchema = schema.object({ + title: schema.maybe(schema.string()), + callOut: schema.maybe( + schema.object({ + title: schema.string(), + message: schema.maybe(schema.string()), + iconType: schema.maybe(schema.string()), + }) + ), // Variants (OSes, languages, etc.) for which tutorial instructions are specified. - instructionVariants: Joi.array().items(instructionVariantSchema).required(), - statusCheck: statusCheckSchema, + instructionVariants: schema.arrayOf(instructionVariantSchema), + statusCheck: schema.maybe(statusCheckSchema), }); - -const paramSchema = Joi.object({ - defaultValue: Joi.required(), - id: Joi.string() - .regex(/^[a-zA-Z_]+$/) - .required(), - label: Joi.string().required(), - type: Joi.string().valid(Object.values(PARAM_TYPES)).required(), +export type InstructionSetSchema = TypeOf; + +const idRegExp = /^[a-zA-Z_]+$/; +const paramSchema = schema.object({ + defaultValue: schema.any(), + id: schema.string({ + validate(value: string) { + if (!idRegExp.test(value)) { + return `Does not satisfy regexp ${idRegExp.toString()}`; + } + }, + }), + label: schema.string(), + type: schema.oneOf([schema.literal('number'), schema.literal('string')]), }); +export type ParamsSchema = TypeOf; -const instructionsSchema = Joi.object({ - instructionSets: Joi.array().items(instructionSetSchema).required(), - params: Joi.array().items(paramSchema), +const instructionsSchema = schema.object({ + instructionSets: schema.arrayOf(instructionSetSchema), + params: schema.maybe(schema.arrayOf(paramSchema)), }); - -export const tutorialSchema = { - id: Joi.string() - .regex(/^[a-zA-Z0-9-]+$/) - .required(), - category: Joi.string().valid(Object.values(TUTORIAL_CATEGORY)).required(), - name: Joi.string().required(), - moduleName: Joi.string(), - isBeta: Joi.boolean().default(false), - shortDescription: Joi.string().required(), - euiIconType: Joi.string(), // EUI icon type string, one of https://elastic.github.io/eui/#/icons - longDescription: Joi.string().required(), - completionTimeMinutes: Joi.number().integer(), - previewImagePath: Joi.string(), - +export type InstructionsSchema = TypeOf; + +const tutorialIdRegExp = /^[a-zA-Z0-9-]+$/; +export const tutorialSchema = schema.object({ + id: schema.string({ + validate(value: string) { + if (!tutorialIdRegExp.test(value)) { + return `Does not satisfy regexp ${tutorialIdRegExp.toString()}`; + } + }, + }), + category: schema.oneOf([ + schema.literal('logging'), + schema.literal('security'), + schema.literal('metrics'), + schema.literal('other'), + ]), + name: schema.string({ + validate(value: string) { + if (value === '') { + return 'is not allowed to be empty'; + } + }, + }), + moduleName: schema.maybe(schema.string()), + isBeta: schema.maybe(schema.boolean()), + shortDescription: schema.string(), + // EUI icon type string, one of https://elastic.github.io/eui/#/icons + euiIconType: schema.maybe(schema.string()), + longDescription: schema.string(), + completionTimeMinutes: schema.maybe( + schema.number({ + validate(value: number) { + if (!Number.isInteger(value)) { + return 'Expected to be a valid integer number'; + } + }, + }) + ), + previewImagePath: schema.maybe(schema.string()), // kibana and elastic cluster running on prem - onPrem: instructionsSchema.required(), - + onPrem: instructionsSchema, // kibana and elastic cluster running in elastic's cloud - elasticCloud: instructionsSchema, - + elasticCloud: schema.maybe(instructionsSchema), // kibana running on prem and elastic cluster running in elastic's cloud - onPremElasticCloud: instructionsSchema, - + onPremElasticCloud: schema.maybe(instructionsSchema), // Elastic stack artifacts produced by product when it is setup and run. - artifacts: artifactsSchema, + artifacts: schema.maybe(artifactsSchema), // saved objects used by data module. - savedObjects: Joi.array().items(), - savedObjectsInstallMsg: Joi.string(), -}; + savedObjects: schema.maybe(schema.arrayOf(schema.any())), + savedObjectsInstallMsg: schema.maybe(schema.string()), +}); + +export type TutorialSchema = TypeOf; diff --git a/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts b/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts index b0837a99d65ad..4c80c8858a475 100644 --- a/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts +++ b/src/plugins/home/server/services/tutorials/lib/tutorials_registry_types.ts @@ -6,8 +6,18 @@ * Side Public License, v 1. */ -import { IconType } from '@elastic/eui'; -import { KibanaRequest } from 'src/core/server'; +import type { KibanaRequest } from 'src/core/server'; +import type { TutorialSchema } from './tutorial_schema'; +export type { + TutorialSchema, + ArtifactsSchema, + DashboardSchema, + InstructionsSchema, + ParamsSchema, + InstructionSetSchema, + InstructionVariant, + Instruction, +} from './tutorial_schema'; /** @public */ export enum TutorialsCategory { @@ -18,82 +28,6 @@ export enum TutorialsCategory { } export type Platform = 'WINDOWS' | 'OSX' | 'DEB' | 'RPM'; -export interface ParamTypes { - NUMBER: string; - STRING: string; -} -export interface Instruction { - title?: string; - textPre?: string; - commands?: string[]; - textPost?: string; -} -export interface InstructionVariant { - id: string; - instructions: Instruction[]; -} -export interface InstructionSetSchema { - readonly title?: string; - readonly callOut?: { - title: string; - message?: string; - iconType?: IconType; - }; - instructionVariants: InstructionVariant[]; -} -export interface ParamsSchema { - defaultValue: any; - id: string; - label: string; - type: ParamTypes; -} -export interface InstructionsSchema { - readonly instructionSets: InstructionSetSchema[]; - readonly params?: ParamsSchema[]; -} -export interface DashboardSchema { - id: string; - linkLabel?: string; - isOverview: boolean; -} -export interface ArtifactsSchema { - exportedFields?: { - documentationUrl: string; - }; - dashboards: DashboardSchema[]; - application?: { - path: string; - label: string; - }; -} -export interface TutorialSchema { - id: string; - category: TutorialsCategory; - name: string; - moduleName?: string; - isBeta?: boolean; - shortDescription: string; - euiIconType?: IconType; // EUI icon type string, one of https://elastic.github.io/eui/#/display/icons; - longDescription: string; - completionTimeMinutes?: number; - previewImagePath?: string; - - // kibana and elastic cluster running on prem - onPrem: InstructionsSchema; - - // kibana and elastic cluster running in elastic's cloud - elasticCloud?: InstructionsSchema; - - // kibana running on prem and elastic cluster running in elastic's cloud - onPremElasticCloud?: InstructionsSchema; - - // Elastic stack artifacts produced by product when it is setup and run. - artifacts?: ArtifactsSchema; - - // saved objects used by data module. - savedObjects?: any[]; - savedObjectsInstallMsg?: string; -} export interface TutorialContext { [key: string]: unknown; } diff --git a/src/plugins/home/server/services/tutorials/tutorials_registry.test.ts b/src/plugins/home/server/services/tutorials/tutorials_registry.test.ts index 94f5d65610083..a82699c231ad4 100644 --- a/src/plugins/home/server/services/tutorials/tutorials_registry.test.ts +++ b/src/plugins/home/server/services/tutorials/tutorials_registry.test.ts @@ -92,7 +92,7 @@ describe('TutorialsRegistry', () => { const setup = new TutorialsRegistry().setup(mockCoreSetup); testProvider = ({}) => invalidTutorialProvider; expect(() => setup.registerTutorial(testProvider)).toThrowErrorMatchingInlineSnapshot( - `"Unable to register tutorial spec because its invalid. ValidationError: child \\"name\\" fails because [\\"name\\" is not allowed to be empty]"` + `"Unable to register tutorial spec because its invalid. Error: [name]: is not allowed to be empty"` ); }); diff --git a/src/plugins/home/server/services/tutorials/tutorials_registry.ts b/src/plugins/home/server/services/tutorials/tutorials_registry.ts index f21f2ccd719c5..05f5600af307a 100644 --- a/src/plugins/home/server/services/tutorials/tutorials_registry.ts +++ b/src/plugins/home/server/services/tutorials/tutorials_registry.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import Joi from 'joi'; import { CoreSetup } from 'src/core/server'; import { TutorialProvider, @@ -42,10 +41,10 @@ export class TutorialsRegistry { ); return { registerTutorial: (specProvider: TutorialProvider) => { - const emptyContext = {}; - const { error } = Joi.validate(specProvider(emptyContext), tutorialSchema); - - if (error) { + try { + const emptyContext = {}; + tutorialSchema.validate(specProvider(emptyContext)); + } catch (error) { throw new Error(`Unable to register tutorial spec because its invalid. ${error}`); } diff --git a/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts b/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts index d5f8d978d5252..310486bfdfffd 100644 --- a/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts +++ b/src/plugins/vis_type_vega/server/usage_collector/get_usage_collector.ts @@ -7,7 +7,7 @@ */ import { parse } from 'hjson'; -import { ElasticsearchClient, SavedObject } from 'src/core/server'; +import type { ElasticsearchClient } from 'src/core/server'; import { VegaSavedObjectAttributes, VisTypeVegaPluginSetupDependencies } from '../types'; @@ -27,7 +27,7 @@ const getDefaultVegaVisualizations = (home: UsageCollectorDependencies['home']) const sampleDataSets = home?.sampleData.getSampleDatasets() ?? []; sampleDataSets.forEach((sampleDataSet) => - sampleDataSet.savedObjects.forEach((savedObject: SavedObject) => { + sampleDataSet.savedObjects.forEach((savedObject) => { try { if (savedObject.type === 'visualization') { const visState = JSON.parse(savedObject.attributes?.visState); diff --git a/x-pack/plugins/apm/server/plugin.ts b/x-pack/plugins/apm/server/plugin.ts index 44334889128c4..cf5be4369f79e 100644 --- a/x-pack/plugins/apm/server/plugin.ts +++ b/x-pack/plugins/apm/server/plugin.ts @@ -108,6 +108,7 @@ export class APMPlugin plugins.home?.tutorials.registerTutorial(() => { const ossPart = ossTutorialProvider({}); if (this.currentConfig!['xpack.apm.ui.enabled'] && ossPart.artifacts) { + // @ts-expect-error ossPart.artifacts.application is readonly ossPart.artifacts.application = { path: '/app/apm', label: i18n.translate( diff --git a/x-pack/plugins/features/server/__snapshots__/feature_registry.test.ts.snap b/x-pack/plugins/features/server/__snapshots__/feature_registry.test.ts.snap index 3043de27534f1..c91a891d4825f 100644 --- a/x-pack/plugins/features/server/__snapshots__/feature_registry.test.ts.snap +++ b/x-pack/plugins/features/server/__snapshots__/feature_registry.test.ts.snap @@ -1,21 +1,21 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`FeatureRegistry Kibana Features prevents features from being registered with a catalogue entry of "" 1`] = `"child \\"catalogue\\" fails because [\\"catalogue\\" at position 0 fails because [\\"0\\" is not allowed to be empty]]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with a catalogue entry of "" 1`] = `"[catalogue.0]: Does not satisfy regexp /^[a-zA-Z0-9:_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with a catalogue entry of "contains space" 1`] = `"child \\"catalogue\\" fails because [\\"catalogue\\" at position 0 fails because [\\"0\\" with value \\"contains space\\" fails to match the required pattern: /^[a-zA-Z0-9:_-]+$/]]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with a catalogue entry of "contains space" 1`] = `"[catalogue.0]: Does not satisfy regexp /^[a-zA-Z0-9:_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with a catalogue entry of "contains_invalid()_chars" 1`] = `"child \\"catalogue\\" fails because [\\"catalogue\\" at position 0 fails because [\\"0\\" with value \\"contains_invalid()_chars\\" fails to match the required pattern: /^[a-zA-Z0-9:_-]+$/]]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with a catalogue entry of "contains_invalid()_chars" 1`] = `"[catalogue.0]: Does not satisfy regexp /^[a-zA-Z0-9:_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with a management id of "" 1`] = `"child \\"management\\" fails because [child \\"kibana\\" fails because [\\"kibana\\" at position 0 fails because [\\"0\\" is not allowed to be empty]]]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with a management id of "" 1`] = `"[management.kibana.0]: Does not satisfy regexp /^[a-zA-Z0-9:_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with a management id of "contains space" 1`] = `"child \\"management\\" fails because [child \\"kibana\\" fails because [\\"kibana\\" at position 0 fails because [\\"0\\" with value \\"contains space\\" fails to match the required pattern: /^[a-zA-Z0-9:_-]+$/]]]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with a management id of "contains space" 1`] = `"[management.kibana.0]: Does not satisfy regexp /^[a-zA-Z0-9:_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with a management id of "contains_invalid()_chars" 1`] = `"child \\"management\\" fails because [child \\"kibana\\" fails because [\\"kibana\\" at position 0 fails because [\\"0\\" with value \\"contains_invalid()_chars\\" fails to match the required pattern: /^[a-zA-Z0-9:_-]+$/]]]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with a management id of "contains_invalid()_chars" 1`] = `"[management.kibana.0]: Does not satisfy regexp /^[a-zA-Z0-9:_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "catalogue" 1`] = `"child \\"id\\" fails because [\\"id\\" contains an invalid value]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "catalogue" 1`] = `"[id]: [catalogue] is not allowed"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "doesn't match valid regex" 1`] = `"child \\"id\\" fails because [\\"id\\" with value \\"doesn't match valid regex\\" fails to match the required pattern: /^[a-zA-Z0-9_-]+$/]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "doesn't match valid regex" 1`] = `"[id]: Does not satisfy regexp /^[a-zA-Z0-9_-]+$/"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "management" 1`] = `"child \\"id\\" fails because [\\"id\\" contains an invalid value]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "management" 1`] = `"[id]: [management] is not allowed"`; -exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "navLinks" 1`] = `"child \\"id\\" fails because [\\"id\\" contains an invalid value]"`; +exports[`FeatureRegistry Kibana Features prevents features from being registered with an ID of "navLinks" 1`] = `"[id]: [navLinks] is not allowed"`; diff --git a/x-pack/plugins/features/server/feature_privilege_iterator.js b/x-pack/plugins/features/server/feature_privilege_iterator.js index f813eeebc9550..842c30d643b67 100644 --- a/x-pack/plugins/features/server/feature_privilege_iterator.js +++ b/x-pack/plugins/features/server/feature_privilege_iterator.js @@ -6,5 +6,6 @@ */ // the file created to remove TS cicular dependency between features and security pluin +// https://github.com/elastic/kibana/issues/87388 // eslint-disable-next-line @kbn/eslint/no-restricted-paths export { featurePrivilegeIterator } from '../../security/server/authorization'; diff --git a/x-pack/plugins/features/server/feature_registry.test.ts b/x-pack/plugins/features/server/feature_registry.test.ts index eb9b35cc644a7..0eb00b43d6f5d 100644 --- a/x-pack/plugins/features/server/feature_registry.test.ts +++ b/x-pack/plugins/features/server/feature_registry.test.ts @@ -158,7 +158,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerKibanaFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"category\\" fails because [\\"category\\" is required]"` + `"[category.id]: expected value of type [string] but got [undefined]"` ); }); @@ -175,7 +175,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerKibanaFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"category\\" fails because [child \\"id\\" fails because [\\"id\\" is required]]"` + `"[category.id]: expected value of type [string] but got [undefined]"` ); }); @@ -192,7 +192,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerKibanaFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"category\\" fails because [child \\"label\\" fails because [\\"label\\" is required]]"` + `"[category.label]: expected value of type [string] but got [undefined]"` ); }); }); @@ -209,7 +209,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerKibanaFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"privileges\\" fails because [\\"privileges\\" is required]"` + `"[privileges]: expected at least one defined value but got [undefined]"` ); }); @@ -248,7 +248,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerKibanaFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"subFeatures\\" fails because [\\"subFeatures\\" must contain less than or equal to 0 items]"` + `"[subFeatures]: array size is [1], but cannot be greater than [0]"` ); }); @@ -488,11 +488,12 @@ describe('FeatureRegistry', () => { }; const featureRegistry = new FeatureRegistry(); - expect(() => - featureRegistry.registerKibanaFeature(feature) - ).toThrowErrorMatchingInlineSnapshot( - `"child \\"privileges\\" fails because [\\"foo\\" is not allowed]"` - ); + expect(() => featureRegistry.registerKibanaFeature(feature)) + .toThrowErrorMatchingInlineSnapshot(` + "[privileges]: types that failed validation: + - [privileges.0]: expected value to equal [null] + - [privileges.1.foo]: definition for this key is missing" + `); }); it(`prevents privileges from specifying app entries that don't exist at the root level`, () => { @@ -1278,7 +1279,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerKibanaFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"reserved\\" fails because [child \\"privileges\\" fails because [\\"privileges\\" at position 0 fails because [child \\"id\\" fails because [\\"id\\" with value \\"reserved_1\\" fails to match the required pattern: /^(?!reserved_)[a-zA-Z0-9_-]+$/]]]]"` + `"[reserved.privileges.0.id]: Does not satisfy regexp /^(?!reserved_)[a-zA-Z0-9_-]+$/"` ); }); @@ -1394,9 +1395,11 @@ describe('FeatureRegistry', () => { const featureRegistry = new FeatureRegistry(); expect(() => { featureRegistry.registerKibanaFeature(feature1); - }).toThrowErrorMatchingInlineSnapshot( - `"child \\"subFeatures\\" fails because [\\"subFeatures\\" at position 0 fails because [child \\"privilegeGroups\\" fails because [\\"privilegeGroups\\" at position 0 fails because [child \\"privileges\\" fails because [\\"privileges\\" at position 0 fails because [child \\"minimumLicense\\" fails because [\\"minimumLicense\\" is not allowed]]]]]]]"` - ); + }).toThrowErrorMatchingInlineSnapshot(` + "[subFeatures.0.privilegeGroups.0]: types that failed validation: + - [subFeatures.0.privilegeGroups.0.0.privileges.0.minimumLicense]: a value wasn't expected to be present + - [subFeatures.0.privilegeGroups.0.1.groupType]: expected value to equal [independent]" + `); }); it('cannot register feature after getAll has been called', () => { @@ -1575,7 +1578,7 @@ describe('FeatureRegistry', () => { expect(() => featureRegistry.registerElasticsearchFeature(feature) ).toThrowErrorMatchingInlineSnapshot( - `"child \\"privileges\\" fails because [\\"privileges\\" is required]"` + `"[privileges]: expected value of type [array] but got [undefined]"` ); }); diff --git a/x-pack/plugins/features/server/feature_schema.ts b/x-pack/plugins/features/server/feature_schema.ts index 204c5bdfe2469..51d3331ac7da1 100644 --- a/x-pack/plugins/features/server/feature_schema.ts +++ b/x-pack/plugins/features/server/feature_schema.ts @@ -5,7 +5,7 @@ * 2.0. */ -import Joi from 'joi'; +import { schema } from '@kbn/config-schema'; import { difference } from 'lodash'; import { Capabilities as UICapabilities } from '../../../../src/core/server'; @@ -14,7 +14,11 @@ import { FeatureKibanaPrivileges, ElasticsearchFeatureConfig } from '.'; // Each feature gets its own property on the UICapabilities object, // but that object has a few built-in properties which should not be overwritten. -const prohibitedFeatureIds: Array = ['catalogue', 'management', 'navLinks']; +const prohibitedFeatureIds: Set = new Set([ + 'catalogue', + 'management', + 'navLinks', +]); const featurePrivilegePartRegex = /^[a-zA-Z0-9_-]+$/; const subFeaturePrivilegePartRegex = /^[a-zA-Z0-9_-]+$/; @@ -22,144 +26,211 @@ const managementSectionIdRegex = /^[a-zA-Z0-9_-]+$/; const reservedFeaturePrrivilegePartRegex = /^(?!reserved_)[a-zA-Z0-9_-]+$/; export const uiCapabilitiesRegex = /^[a-zA-Z0-9:_-]+$/; -const validLicenses = ['basic', 'standard', 'gold', 'platinum', 'enterprise', 'trial']; +const validLicenseSchema = schema.oneOf([ + schema.literal('basic'), + schema.literal('standard'), + schema.literal('gold'), + schema.literal('platinum'), + schema.literal('enterprise'), + schema.literal('trial'), +]); // sub-feature privileges are only available with a `gold` license or better, so restricting sub-feature privileges // for `gold` or below doesn't make a whole lot of sense. -const validSubFeaturePrivilegeLicenses = ['platinum', 'enterprise', 'trial']; - -const managementSchema = Joi.object().pattern( - managementSectionIdRegex, - Joi.array().items(Joi.string().regex(uiCapabilitiesRegex)) +const validSubFeaturePrivilegeLicensesSchema = schema.oneOf([ + schema.literal('platinum'), + schema.literal('enterprise'), + schema.literal('trial'), +]); + +const listOfCapabilitiesSchema = schema.arrayOf( + schema.string({ + validate(key: string) { + if (!uiCapabilitiesRegex.test(key)) { + return `Does not satisfy regexp ${uiCapabilitiesRegex.toString()}`; + } + }, + }) +); +const managementSchema = schema.recordOf( + schema.string({ + validate(key: string) { + if (!managementSectionIdRegex.test(key)) { + return `Does not satisfy regexp ${managementSectionIdRegex.toString()}`; + } + }, + }), + listOfCapabilitiesSchema ); -const catalogueSchema = Joi.array().items(Joi.string().regex(uiCapabilitiesRegex)); -const alertingSchema = Joi.array().items(Joi.string()); - -const appCategorySchema = Joi.object({ - id: Joi.string().required(), - label: Joi.string().required(), - ariaLabel: Joi.string(), - euiIconType: Joi.string(), - order: Joi.number(), -}).required(); - -const kibanaPrivilegeSchema = Joi.object({ - excludeFromBasePrivileges: Joi.boolean(), - management: managementSchema, - catalogue: catalogueSchema, - api: Joi.array().items(Joi.string()), - app: Joi.array().items(Joi.string()), - alerting: Joi.object({ - all: alertingSchema, - read: alertingSchema, +const catalogueSchema = listOfCapabilitiesSchema; +const alertingSchema = schema.arrayOf(schema.string()); + +const appCategorySchema = schema.object({ + id: schema.string(), + label: schema.string(), + ariaLabel: schema.maybe(schema.string()), + euiIconType: schema.maybe(schema.string()), + order: schema.maybe(schema.number()), +}); + +const kibanaPrivilegeSchema = schema.object({ + excludeFromBasePrivileges: schema.maybe(schema.boolean()), + management: schema.maybe(managementSchema), + catalogue: schema.maybe(catalogueSchema), + api: schema.maybe(schema.arrayOf(schema.string())), + app: schema.maybe(schema.arrayOf(schema.string())), + alerting: schema.maybe( + schema.object({ + all: schema.maybe(alertingSchema), + read: schema.maybe(alertingSchema), + }) + ), + savedObject: schema.object({ + all: schema.arrayOf(schema.string()), + read: schema.arrayOf(schema.string()), }), - savedObject: Joi.object({ - all: Joi.array().items(Joi.string()).required(), - read: Joi.array().items(Joi.string()).required(), - }).required(), - ui: Joi.array().items(Joi.string().regex(uiCapabilitiesRegex)).required(), + ui: listOfCapabilitiesSchema, }); -const kibanaIndependentSubFeaturePrivilegeSchema = Joi.object({ - id: Joi.string().regex(subFeaturePrivilegePartRegex).required(), - name: Joi.string().required(), - includeIn: Joi.string().allow('all', 'read', 'none').required(), - minimumLicense: Joi.string().valid(...validSubFeaturePrivilegeLicenses), - management: managementSchema, - catalogue: catalogueSchema, - alerting: Joi.object({ - all: alertingSchema, - read: alertingSchema, +const kibanaIndependentSubFeaturePrivilegeSchema = schema.object({ + id: schema.string({ + validate(key: string) { + if (!subFeaturePrivilegePartRegex.test(key)) { + return `Does not satisfy regexp ${subFeaturePrivilegePartRegex.toString()}`; + } + }, + }), + name: schema.string(), + includeIn: schema.oneOf([schema.literal('all'), schema.literal('read'), schema.literal('none')]), + minimumLicense: schema.maybe(validSubFeaturePrivilegeLicensesSchema), + management: schema.maybe(managementSchema), + catalogue: schema.maybe(catalogueSchema), + alerting: schema.maybe( + schema.object({ + all: schema.maybe(alertingSchema), + read: schema.maybe(alertingSchema), + }) + ), + api: schema.maybe(schema.arrayOf(schema.string())), + app: schema.maybe(schema.arrayOf(schema.string())), + savedObject: schema.object({ + all: schema.arrayOf(schema.string()), + read: schema.arrayOf(schema.string()), }), - api: Joi.array().items(Joi.string()), - app: Joi.array().items(Joi.string()), - savedObject: Joi.object({ - all: Joi.array().items(Joi.string()).required(), - read: Joi.array().items(Joi.string()).required(), - }).required(), - ui: Joi.array().items(Joi.string().regex(uiCapabilitiesRegex)).required(), + ui: listOfCapabilitiesSchema, }); -const kibanaMutuallyExclusiveSubFeaturePrivilegeSchema = kibanaIndependentSubFeaturePrivilegeSchema.keys( +const kibanaMutuallyExclusiveSubFeaturePrivilegeSchema = kibanaIndependentSubFeaturePrivilegeSchema.extends( { - minimumLicense: Joi.forbidden(), + minimumLicense: schema.never(), } ); -const kibanaSubFeatureSchema = Joi.object({ - name: Joi.string().required(), - privilegeGroups: Joi.array().items( - Joi.object({ - groupType: Joi.string().valid('mutually_exclusive', 'independent').required(), - privileges: Joi.when('groupType', { - is: 'mutually_exclusive', - then: Joi.array().items(kibanaMutuallyExclusiveSubFeaturePrivilegeSchema).min(1), - otherwise: Joi.array().items(kibanaIndependentSubFeaturePrivilegeSchema).min(1), - }), - }) +const kibanaSubFeatureSchema = schema.object({ + name: schema.string(), + privilegeGroups: schema.maybe( + schema.arrayOf( + schema.oneOf([ + schema.object({ + groupType: schema.literal('mutually_exclusive'), + privileges: schema.maybe( + schema.arrayOf(kibanaMutuallyExclusiveSubFeaturePrivilegeSchema, { minSize: 1 }) + ), + }), + schema.object({ + groupType: schema.literal('independent'), + privileges: schema.maybe( + schema.arrayOf(kibanaIndependentSubFeaturePrivilegeSchema, { minSize: 1 }) + ), + }), + ]) + ) ), }); -const kibanaFeatureSchema = Joi.object({ - id: Joi.string() - .regex(featurePrivilegePartRegex) - .invalid(...prohibitedFeatureIds) - .required(), - name: Joi.string().required(), - category: appCategorySchema, - order: Joi.number(), - excludeFromBasePrivileges: Joi.boolean(), - minimumLicense: Joi.string().valid(...validLicenses), - app: Joi.array().items(Joi.string()).required(), - management: managementSchema, - catalogue: catalogueSchema, - alerting: alertingSchema, - privileges: Joi.object({ - all: kibanaPrivilegeSchema, - read: kibanaPrivilegeSchema, - }) - .allow(null) - .required(), - subFeatures: Joi.when('privileges', { - is: null, - then: Joi.array().items(kibanaSubFeatureSchema).max(0), - otherwise: Joi.array().items(kibanaSubFeatureSchema), +const kibanaFeatureSchema = schema.object({ + id: schema.string({ + validate(value: string) { + if (!featurePrivilegePartRegex.test(value)) { + return `Does not satisfy regexp ${featurePrivilegePartRegex.toString()}`; + } + if (prohibitedFeatureIds.has(value)) { + return `[${value}] is not allowed`; + } + }, }), - privilegesTooltip: Joi.string(), - reserved: Joi.object({ - description: Joi.string().required(), - privileges: Joi.array() - .items( - Joi.object({ - id: Joi.string().regex(reservedFeaturePrrivilegePartRegex).required(), - privilege: kibanaPrivilegeSchema.required(), + name: schema.string(), + category: appCategorySchema, + order: schema.maybe(schema.number()), + excludeFromBasePrivileges: schema.maybe(schema.boolean()), + minimumLicense: schema.maybe(validLicenseSchema), + app: schema.arrayOf(schema.string()), + management: schema.maybe(managementSchema), + catalogue: schema.maybe(catalogueSchema), + alerting: schema.maybe(alertingSchema), + privileges: schema.oneOf([ + schema.literal(null), + schema.object({ + all: schema.maybe(kibanaPrivilegeSchema), + read: schema.maybe(kibanaPrivilegeSchema), + }), + ]), + subFeatures: schema.maybe( + schema.conditional( + schema.siblingRef('privileges'), + null, + // allows an empty array only + schema.arrayOf(schema.never(), { maxSize: 0 }), + schema.arrayOf(kibanaSubFeatureSchema) + ) + ), + privilegesTooltip: schema.maybe(schema.string()), + reserved: schema.maybe( + schema.object({ + description: schema.string(), + privileges: schema.arrayOf( + schema.object({ + id: schema.string({ + validate(value: string) { + if (!reservedFeaturePrrivilegePartRegex.test(value)) { + return `Does not satisfy regexp ${reservedFeaturePrrivilegePartRegex.toString()}`; + } + }, + }), + privilege: kibanaPrivilegeSchema, }) - ) - .required(), - }), + ), + }) + ), }); -const elasticsearchPrivilegeSchema = Joi.object({ - ui: Joi.array().items(Joi.string()).required(), - requiredClusterPrivileges: Joi.array().items(Joi.string()), - requiredIndexPrivileges: Joi.object().pattern(Joi.string(), Joi.array().items(Joi.string())), - requiredRoles: Joi.array().items(Joi.string()), +const elasticsearchPrivilegeSchema = schema.object({ + ui: schema.arrayOf(schema.string()), + requiredClusterPrivileges: schema.maybe(schema.arrayOf(schema.string())), + requiredIndexPrivileges: schema.maybe( + schema.recordOf(schema.string(), schema.arrayOf(schema.string())) + ), + requiredRoles: schema.maybe(schema.arrayOf(schema.string())), }); -const elasticsearchFeatureSchema = Joi.object({ - id: Joi.string() - .regex(featurePrivilegePartRegex) - .invalid(...prohibitedFeatureIds) - .required(), - management: managementSchema, - catalogue: catalogueSchema, - privileges: Joi.array().items(elasticsearchPrivilegeSchema).required(), +const elasticsearchFeatureSchema = schema.object({ + id: schema.string({ + validate(value: string) { + if (!featurePrivilegePartRegex.test(value)) { + return `Does not satisfy regexp ${featurePrivilegePartRegex.toString()}`; + } + if (prohibitedFeatureIds.has(value)) { + return `[${value}] is not allowed`; + } + }, + }), + management: schema.maybe(managementSchema), + catalogue: schema.maybe(catalogueSchema), + privileges: schema.arrayOf(elasticsearchPrivilegeSchema), }); export function validateKibanaFeature(feature: KibanaFeatureConfig) { - const validateResult = Joi.validate(feature, kibanaFeatureSchema); - if (validateResult.error) { - throw validateResult.error; - } + kibanaFeatureSchema.validate(feature); + // the following validation can't be enforced by the Joi schema, since it'd require us looking "up" the object graph for the list of valid value, which they explicitly forbid. const { app = [], management = {}, catalogue = [], alerting = [] } = feature; @@ -343,10 +414,7 @@ export function validateKibanaFeature(feature: KibanaFeatureConfig) { } export function validateElasticsearchFeature(feature: ElasticsearchFeatureConfig) { - const validateResult = Joi.validate(feature, elasticsearchFeatureSchema); - if (validateResult.error) { - throw validateResult.error; - } + elasticsearchFeatureSchema.validate(feature); // the following validation can't be enforced by the Joi schema without a very convoluted and verbose definition const { privileges } = feature; privileges.forEach((privilege, index) => { From 3c166a14724800623206844404117e088a800c3f Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Tue, 18 May 2021 12:36:35 +0200 Subject: [PATCH 143/144] [Lens] Specify Y axis extent (#99203) --- .../__snapshots__/expression.test.tsx.snap | 49 ++++ .../__snapshots__/to_expression.test.ts.snap | 40 +++ .../xy_visualization/axes_configuration.ts | 18 +- .../axis_settings_popover.test.tsx | 23 ++ .../axis_settings_popover.tsx | 227 +++++++++++++++++- .../xy_visualization/expression.test.tsx | 140 +++++++++++ .../public/xy_visualization/expression.tsx | 82 +++++-- .../lens/public/xy_visualization/index.ts | 2 + .../xy_visualization/to_expression.test.ts | 5 + .../public/xy_visualization/to_expression.ts | 44 ++++ .../lens/public/xy_visualization/types.ts | 52 ++++ .../xy_visualization/xy_config_panel.test.tsx | 84 +++++++ .../xy_visualization/xy_config_panel.tsx | 92 ++++++- .../public/xy_visualization/xy_suggestions.ts | 3 + 14 files changed, 834 insertions(+), 27 deletions(-) diff --git a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/expression.test.tsx.snap b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/expression.test.tsx.snap index aa22bbb0c15c6..f9b4e33072c81 100644 --- a/x-pack/plugins/lens/public/xy_visualization/__snapshots__/expression.test.tsx.snap +++ b/x-pack/plugins/lens/public/xy_visualization/__snapshots__/expression.test.tsx.snap @@ -52,6 +52,13 @@ exports[`xy_expression XYChart component it renders area 1`] = ` title="c" /> 0) || + (extent.upperBound !== undefined && extent.upperBound) < 0); + const boundaryError = + extent && + extent.lowerBound !== undefined && + extent.upperBound !== undefined && + extent.upperBound <= extent.lowerBound; + return { inclusiveZeroError, boundaryError }; +} diff --git a/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.test.tsx b/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.test.tsx index 48cc45dfacdca..047c95846cd27 100644 --- a/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.test.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.test.tsx @@ -32,6 +32,7 @@ describe('Axes Settings', () => { toggleAxisTitleVisibility: jest.fn(), toggleTickLabelsVisibility: jest.fn(), toggleGridlinesVisibility: jest.fn(), + hasBarOrAreaOnAxis: false, }; }); @@ -91,4 +92,26 @@ describe('Axes Settings', () => { ); expect(component.find('[data-test-subj="lnsshowEndzones"]').prop('checked')).toBe(true); }); + + describe('axis extent', () => { + it('hides the extent section if no extent is passed in', () => { + const component = shallow(); + expect(component.find('[data-test-subj="lnsXY_axisBounds_groups"]').length).toBe(0); + }); + + it('renders bound inputs if mode is custom', () => { + const setSpy = jest.fn(); + const component = shallow( + + ); + const lower = component.find('[data-test-subj="lnsXY_axisExtent_lowerBound"]'); + const upper = component.find('[data-test-subj="lnsXY_axisExtent_upperBound"]'); + expect(lower.prop('value')).toEqual(123); + expect(upper.prop('value')).toEqual(456); + }); + }); }); diff --git a/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx b/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx index d995e1a055e68..43ebc91f533a4 100644 --- a/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/axis_settings_popover.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, @@ -14,9 +14,13 @@ import { EuiSpacer, EuiFieldText, IconType, + EuiFormRow, + EuiButtonGroup, + htmlIdGenerator, + EuiFieldNumber, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { XYLayerConfig, AxesSettingsConfig } from './types'; +import { XYLayerConfig, AxesSettingsConfig, AxisExtentConfig } from './types'; import { ToolbarPopover, useDebouncedValue } from '../shared_components'; import { isHorizontalChart } from './state_helpers'; import { EuiIconAxisBottom } from '../assets/axis_bottom'; @@ -24,6 +28,7 @@ import { EuiIconAxisLeft } from '../assets/axis_left'; import { EuiIconAxisRight } from '../assets/axis_right'; import { EuiIconAxisTop } from '../assets/axis_top'; import { ToolbarButtonProps } from '../../../../../src/plugins/kibana_react/public'; +import { validateExtent } from './axes_configuration'; type AxesSettingsConfigKeys = keyof AxesSettingsConfig; export interface AxisSettingsPopoverProps { @@ -79,6 +84,16 @@ export interface AxisSettingsPopoverProps { * Flag whether endzones are visible */ endzonesVisible?: boolean; + /** + * axis extent + */ + extent?: AxisExtentConfig; + /** + * set axis extent + */ + setExtent?: (extent: AxisExtentConfig | undefined) => void; + hasBarOrAreaOnAxis: boolean; + dataBounds?: { min: number; max: number }; } const popoverConfig = ( axis: AxesSettingsConfigKeys, @@ -134,6 +149,8 @@ const popoverConfig = ( } }; +const noop = () => {}; +const idPrefix = htmlIdGenerator()(); export const AxisSettingsPopover: React.FunctionComponent = ({ layers, axis, @@ -148,10 +165,45 @@ export const AxisSettingsPopover: React.FunctionComponent { const isHorizontal = layers?.length ? isHorizontalChart(layers) : false; const config = popoverConfig(axis, isHorizontal); + const { inputValue: debouncedExtent, handleInputChange: setDebouncedExtent } = useDebouncedValue< + AxisExtentConfig | undefined + >({ + value: extent, + onChange: setExtent || noop, + }); + + const [localExtent, setLocalExtent] = useState(debouncedExtent); + + const { inclusiveZeroError, boundaryError } = validateExtent(hasBarOrAreaOnAxis, localExtent); + + useEffect(() => { + // set global extent if local extent is not invalid + if ( + setExtent && + !inclusiveZeroError && + !boundaryError && + localExtent && + localExtent !== debouncedExtent + ) { + setDebouncedExtent(localExtent); + } + }, [ + localExtent, + inclusiveZeroError, + boundaryError, + setDebouncedExtent, + debouncedExtent, + setExtent, + ]); + const { inputValue: title, handleInputChange: onTitleChange } = useDebouncedValue({ value: axisTitle || '', onChange: updateTitleState, @@ -234,6 +286,177 @@ export const AxisSettingsPopover: React.FunctionComponent )} + {localExtent && setExtent && ( + <> + + + { + const newMode = id.replace(idPrefix, '') as AxisExtentConfig['mode']; + setLocalExtent({ + ...localExtent, + mode: newMode, + lowerBound: + newMode === 'custom' && dataBounds ? Math.min(0, dataBounds.min) : undefined, + upperBound: newMode === 'custom' && dataBounds ? dataBounds.max : undefined, + }); + }} + /> + + {localExtent.mode === 'custom' && ( + <> + + + + + { + const val = Number(e.target.value); + if (e.target.value === '' || Number.isNaN(Number(val))) { + setLocalExtent({ + ...localExtent, + lowerBound: undefined, + }); + } else { + setLocalExtent({ + ...localExtent, + lowerBound: val, + }); + } + }} + onBlur={() => { + if (localExtent.lowerBound === undefined && dataBounds) { + setLocalExtent({ + ...localExtent, + lowerBound: Math.min(0, dataBounds.min), + }); + } + }} + /> + + + + + { + const val = Number(e.target.value); + if (e.target.value === '' || Number.isNaN(Number(val))) { + setLocalExtent({ + ...localExtent, + upperBound: undefined, + }); + } else { + setLocalExtent({ + ...localExtent, + upperBound: val, + }); + } + }} + onBlur={() => { + if (localExtent.upperBound === undefined && dataBounds) { + setLocalExtent({ + ...localExtent, + upperBound: dataBounds.max, + }); + } + }} + /> + + + + + )} + + )} ); }; diff --git a/x-pack/plugins/lens/public/xy_visualization/expression.test.tsx b/x-pack/plugins/lens/public/xy_visualization/expression.test.tsx index fe0513caa08a8..3fab88248d4a5 100644 --- a/x-pack/plugins/lens/public/xy_visualization/expression.test.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/expression.test.tsx @@ -283,6 +283,14 @@ const createArgsWithLayers = (layers: LayerArgs[] = [sampleLayer]): XYArgs => ({ yLeft: false, yRight: false, }, + yLeftExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, + yRightExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, layers, }); @@ -681,6 +689,114 @@ describe('xy_expression', () => { }); }); + describe('y axis extents', () => { + test('it passes custom y axis extents to elastic-charts axis spec', () => { + const { data, args } = sampleArgs(); + + const component = shallow( + + ); + expect(component.find(Axis).find('[id="left"]').prop('domain')).toEqual({ + fit: false, + min: 123, + max: 456, + }); + }); + + test('it passes fit to bounds y axis extents to elastic-charts axis spec', () => { + const { data, args } = sampleArgs(); + + const component = shallow( + + ); + expect(component.find(Axis).find('[id="left"]').prop('domain')).toEqual({ + fit: true, + min: undefined, + max: undefined, + }); + }); + + test('it does not allow fit for area chart', () => { + const { data, args } = sampleArgs(); + + const component = shallow( + + ); + expect(component.find(Axis).find('[id="left"]').prop('domain')).toEqual({ + fit: false, + }); + }); + + test('it does not allow positive lower bound for bar', () => { + const { data, args } = sampleArgs(); + + const component = shallow( + + ); + expect(component.find(Axis).find('[id="left"]').prop('domain')).toEqual({ + fit: false, + min: undefined, + max: undefined, + }); + }); + }); + test('it has xDomain undefined if the x is not a time scale or a histogram', () => { const { data, args } = sampleArgs(); @@ -1761,6 +1877,14 @@ describe('xy_expression', () => { yLeft: false, yRight: false, }, + yLeftExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, + yRightExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, layers: [ { layerId: 'first', @@ -1835,6 +1959,14 @@ describe('xy_expression', () => { yLeft: false, yRight: false, }, + yLeftExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, + yRightExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, layers: [ { layerId: 'first', @@ -1895,6 +2027,14 @@ describe('xy_expression', () => { yLeft: false, yRight: false, }, + yLeftExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, + yRightExtent: { + mode: 'full', + type: 'lens_xy_axisExtentConfig', + }, layers: [ { layerId: 'first', diff --git a/x-pack/plugins/lens/public/xy_visualization/expression.tsx b/x-pack/plugins/lens/public/xy_visualization/expression.tsx index 5416c8eda0aa9..006727b05b905 100644 --- a/x-pack/plugins/lens/public/xy_visualization/expression.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/expression.tsx @@ -55,7 +55,7 @@ import { import { EmptyPlaceholder } from '../shared_components'; import { desanitizeFilterContext } from '../utils'; import { fittingFunctionDefinitions, getFitOptions } from './fitting_functions'; -import { getAxesConfiguration } from './axes_configuration'; +import { getAxesConfiguration, GroupsConfiguration, validateExtent } from './axes_configuration'; import { getColorAssignments } from './color_assignment'; import { getXDomain, XyEndzones } from './x_domain'; @@ -135,6 +135,18 @@ export const xyChart: ExpressionFunctionDefinition< defaultMessage: 'Y right axis title', }), }, + yLeftExtent: { + types: ['lens_xy_axisExtentConfig'], + help: i18n.translate('xpack.lens.xyChart.yLeftExtent.help', { + defaultMessage: 'Y left axis extents', + }), + }, + yRightExtent: { + types: ['lens_xy_axisExtentConfig'], + help: i18n.translate('xpack.lens.xyChart.yRightExtent.help', { + defaultMessage: 'Y right axis extents', + }), + }, legend: { types: ['lens_xy_legendConfig'], help: i18n.translate('xpack.lens.xyChart.legend.help', { @@ -345,6 +357,8 @@ export function XYChart({ gridlinesVisibilitySettings, valueLabels, hideEndzones, + yLeftExtent, + yRightExtent, } = args; const chartTheme = chartsThemeService.useChartsTheme(); const chartBaseTheme = chartsThemeService.useChartsBaseTheme(); @@ -445,6 +459,33 @@ export function XYChart({ return style; }; + const getYAxisDomain = (axis: GroupsConfiguration[number]) => { + const extent = axis.groupId === 'left' ? yLeftExtent : yRightExtent; + const hasBarOrArea = Boolean( + axis.series.some((series) => { + const seriesType = filteredLayers.find((l) => l.layerId === series.layer)?.seriesType; + return seriesType?.includes('bar') || seriesType?.includes('area'); + }) + ); + const fit = !hasBarOrArea && extent.mode === 'dataBounds'; + let min: undefined | number; + let max: undefined | number; + + if (extent.mode === 'custom') { + const { inclusiveZeroError, boundaryError } = validateExtent(hasBarOrArea, extent); + if (!inclusiveZeroError && !boundaryError) { + min = extent.lowerBound; + max = extent.upperBound; + } + } + + return { + fit, + min, + max, + }; + }; + const shouldShowValueLabels = // No stacked bar charts filteredLayers.every((layer) => !layer.seriesType.includes('stacked')) && @@ -597,24 +638,27 @@ export function XYChart({ }} /> - {yAxesConfiguration.map((axis) => ( - axis.formatter?.convert(d) || ''} - style={getYAxesStyle(axis.groupId)} - /> - ))} + {yAxesConfiguration.map((axis) => { + return ( + axis.formatter?.convert(d) || ''} + style={getYAxesStyle(axis.groupId)} + domain={getYAxisDomain(axis)} + /> + ); + })} {!hideEndzones && ( legendConfig); expressions.registerFunction(() => yAxisConfig); expressions.registerFunction(() => tickLabelsConfig); + expressions.registerFunction(() => axisExtentConfig); expressions.registerFunction(() => gridlinesConfig); expressions.registerFunction(() => axisTitlesVisibilityConfig); expressions.registerFunction(() => layerConfig); diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts index 89dca6e8a3944..b88d38e18329c 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.test.ts @@ -52,6 +52,11 @@ describe('#toExpression', () => { tickLabelsVisibilitySettings: { x: false, yLeft: true, yRight: true }, gridlinesVisibilitySettings: { x: false, yLeft: true, yRight: true }, hideEndzones: true, + yRightExtent: { + mode: 'custom', + lowerBound: 123, + upperBound: 456, + }, layers: [ { layerId: 'first', diff --git a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts index 02c5f3773d813..dea6b1a7be0c5 100644 --- a/x-pack/plugins/lens/public/xy_visualization/to_expression.ts +++ b/x-pack/plugins/lens/public/xy_visualization/to_expression.ts @@ -149,6 +149,50 @@ export const buildExpression = ( ], fittingFunction: [state.fittingFunction || 'None'], curveType: [state.curveType || 'LINEAR'], + yLeftExtent: [ + { + type: 'expression', + chain: [ + { + type: 'function', + function: 'lens_xy_axisExtentConfig', + arguments: { + mode: [state?.yLeftExtent?.mode || 'full'], + lowerBound: + state?.yLeftExtent?.lowerBound !== undefined + ? [state?.yLeftExtent?.lowerBound] + : [], + upperBound: + state?.yLeftExtent?.upperBound !== undefined + ? [state?.yLeftExtent?.upperBound] + : [], + }, + }, + ], + }, + ], + yRightExtent: [ + { + type: 'expression', + chain: [ + { + type: 'function', + function: 'lens_xy_axisExtentConfig', + arguments: { + mode: [state?.yRightExtent?.mode || 'full'], + lowerBound: + state?.yRightExtent?.lowerBound !== undefined + ? [state?.yRightExtent?.lowerBound] + : [], + upperBound: + state?.yRightExtent?.upperBound !== undefined + ? [state?.yRightExtent?.upperBound] + : [], + }, + }, + ], + }, + ], axisTitlesVisibilitySettings: [ { type: 'expression', diff --git a/x-pack/plugins/lens/public/xy_visualization/types.ts b/x-pack/plugins/lens/public/xy_visualization/types.ts index 0622f1c43f1c3..ea28b492477c1 100644 --- a/x-pack/plugins/lens/public/xy_visualization/types.ts +++ b/x-pack/plugins/lens/public/xy_visualization/types.ts @@ -211,6 +211,54 @@ export const axisTitlesVisibilityConfig: ExpressionFunctionDefinition< }, }; +export interface AxisExtentConfig { + mode: 'full' | 'dataBounds' | 'custom'; + lowerBound?: number; + upperBound?: number; +} + +export const axisExtentConfig: ExpressionFunctionDefinition< + 'lens_xy_axisExtentConfig', + null, + AxisExtentConfig, + AxisExtentConfigResult +> = { + name: 'lens_xy_axisExtentConfig', + aliases: [], + type: 'lens_xy_axisExtentConfig', + help: `Configure the xy chart's axis extents`, + inputTypes: ['null'], + args: { + mode: { + types: ['string'], + options: ['full', 'dataBounds', 'custom'], + help: i18n.translate('xpack.lens.xyChart.extentMode.help', { + defaultMessage: 'The extent mode', + }), + }, + lowerBound: { + types: ['number'], + help: i18n.translate('xpack.lens.xyChart.extentMode.help', { + defaultMessage: 'The extent mode', + }), + }, + upperBound: { + types: ['number'], + help: i18n.translate('xpack.lens.xyChart.extentMode.help', { + defaultMessage: 'The extent mode', + }), + }, + }, + fn: function fn(input: unknown, args: AxisExtentConfig) { + return { + type: 'lens_xy_axisExtentConfig', + ...args, + }; + }, +}; + +export type AxisExtentConfigResult = AxisExtentConfig & { type: 'lens_xy_axisExtentConfig' }; + interface AxisConfig { title: string; hide?: boolean; @@ -404,6 +452,8 @@ export interface XYArgs { xTitle: string; yTitle: string; yRightTitle: string; + yLeftExtent: AxisExtentConfigResult; + yRightExtent: AxisExtentConfigResult; legend: LegendConfig & { type: 'lens_xy_legendConfig' }; valueLabels: ValueLabelConfig; layers: LayerArgs[]; @@ -425,6 +475,8 @@ export interface XYState { legend: LegendConfig; valueLabels?: ValueLabelConfig; fittingFunction?: FittingFunction; + yLeftExtent?: AxisExtentConfig; + yRightExtent?: AxisExtentConfig; layers: XYLayerConfig[]; xTitle?: string; yTitle?: string; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx index e3e8c6e93e3aa..0bafbead7d543 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.test.tsx @@ -161,6 +161,90 @@ describe('XY Config panels', () => { expect(component.find(AxisSettingsPopover).at(1).prop('endzonesVisible')).toBe(false); expect(component.find(AxisSettingsPopover).at(2).prop('setEndzoneVisibility')).toBeFalsy(); }); + + it('should pass in information about current data bounds', () => { + const state = testState(); + frame.activeData = { + first: { + type: 'datatable', + rows: [{ bar: -5 }, { bar: 50 }], + columns: [ + { + id: 'baz', + meta: { + type: 'number', + }, + name: 'baz', + }, + { + id: 'foo', + meta: { + type: 'number', + }, + name: 'foo', + }, + { + id: 'bar', + meta: { + type: 'number', + }, + name: 'bar', + }, + ], + }, + }; + const component = shallow( + + ); + + expect(component.find(AxisSettingsPopover).at(0).prop('dataBounds')).toEqual({ + min: -5, + max: 50, + }); + }); + + it('should pass in extent information', () => { + const state = testState(); + const component = shallow( + + ); + + expect(component.find(AxisSettingsPopover).at(0).prop('extent')).toEqual({ + mode: 'custom', + lowerBound: 123, + upperBound: 456, + }); + expect(component.find(AxisSettingsPopover).at(0).prop('setExtent')).toBeTruthy(); + expect(component.find(AxisSettingsPopover).at(1).prop('extent')).toBeFalsy(); + expect(component.find(AxisSettingsPopover).at(1).prop('setExtent')).toBeFalsy(); + // default extent + expect(component.find(AxisSettingsPopover).at(2).prop('extent')).toEqual({ + mode: 'full', + }); + expect(component.find(AxisSettingsPopover).at(2).prop('setExtent')).toBeTruthy(); + }); }); describe('Dimension Editor', () => { diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx index eccf4d9b64345..3037513ccd56e 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx @@ -6,7 +6,7 @@ */ import './xy_config_panel.scss'; -import React, { useMemo, useState, memo } from 'react'; +import React, { useMemo, useState, memo, useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { Position, ScaleType } from '@elastic/charts'; import { debounce } from 'lodash'; @@ -27,14 +27,22 @@ import { VisualizationToolbarProps, VisualizationDimensionEditorProps, FormatFactory, + FramePublicAPI, } from '../types'; -import { State, SeriesType, visualizationTypes, YAxisMode, AxesSettingsConfig } from './types'; +import { + State, + SeriesType, + visualizationTypes, + YAxisMode, + AxesSettingsConfig, + AxisExtentConfig, +} from './types'; import { isHorizontalChart, isHorizontalSeries, getSeriesColor } from './state_helpers'; import { trackUiEvent } from '../lens_ui_telemetry'; import { LegendSettingsPopover } from '../shared_components'; import { AxisSettingsPopover } from './axis_settings_popover'; import { TooltipWrapper } from './tooltip_wrapper'; -import { getAxesConfiguration } from './axes_configuration'; +import { getAxesConfiguration, GroupsConfiguration } from './axes_configuration'; import { PalettePicker } from '../shared_components'; import { getAccessorColorConfig, getColorAssignments } from './color_assignment'; import { getScaleType, getSortedAccessors } from './to_expression'; @@ -123,11 +131,44 @@ export function LayerContextMenu(props: VisualizationLayerWidgetProps) { ); } +const getDataBounds = function ( + activeData: FramePublicAPI['activeData'], + axes: GroupsConfiguration +) { + const groups: Partial> = {}; + axes.forEach((axis) => { + let min = Number.MAX_VALUE; + let max = Number.MIN_VALUE; + axis.series.forEach((series) => { + activeData?.[series.layer].rows.forEach((row) => { + const value = row[series.accessor]; + if (!Number.isNaN(value)) { + if (value < min) { + min = value; + } + if (value > max) { + max = value; + } + } + }); + }); + if (min !== Number.MAX_VALUE && max !== Number.MIN_VALUE) { + groups[axis.groupId] = { + min: Math.round((min + Number.EPSILON) * 100) / 100, + max: Math.round((max + Number.EPSILON) * 100) / 100, + }; + } + }); + + return groups; +}; + export const XyToolbar = memo(function XyToolbar(props: VisualizationToolbarProps) { const { state, setState, frame } = props; const shouldRotate = state?.layers.length ? isHorizontalChart(state.layers) : false; - const axisGroups = getAxesConfiguration(state?.layers, shouldRotate); + const axisGroups = getAxesConfiguration(state?.layers, shouldRotate, frame.activeData); + const dataBounds = getDataBounds(frame.activeData, axisGroups); const tickLabelsVisibilitySettings = { x: state?.tickLabelsVisibilitySettings?.x ?? true, @@ -210,6 +251,40 @@ export const XyToolbar = memo(function XyToolbar(props: VisualizationToolbarProp : !state?.legend.isVisible ? 'hide' : 'show'; + const hasBarOrAreaOnLeftAxis = Boolean( + axisGroups + .find((group) => group.groupId === 'left') + ?.series?.some((series) => { + const seriesType = state.layers.find((l) => l.layerId === series.layer)?.seriesType; + return seriesType?.includes('bar') || seriesType?.includes('area'); + }) + ); + const setLeftExtent = useCallback( + (extent: AxisExtentConfig | undefined) => { + setState({ + ...state, + yLeftExtent: extent, + }); + }, + [setState, state] + ); + const hasBarOrAreaOnRightAxis = Boolean( + axisGroups + .find((group) => group.groupId === 'left') + ?.series?.some((series) => { + const seriesType = state.layers.find((l) => l.layerId === series.layer)?.seriesType; + return seriesType?.includes('bar') || seriesType?.includes('area'); + }) + ); + const setRightExtent = useCallback( + (extent: AxisExtentConfig | undefined) => { + setState({ + ...state, + yRightExtent: extent, + }); + }, + [setState, state] + ); return ( @@ -282,6 +357,10 @@ export const XyToolbar = memo(function XyToolbar(props: VisualizationToolbarProp } isAxisTitleVisible={axisTitlesVisibilitySettings.yLeft} toggleAxisTitleVisibility={onAxisTitlesVisibilitySettingsChange} + extent={state?.yLeftExtent || { mode: 'full' }} + setExtent={setLeftExtent} + hasBarOrAreaOnAxis={hasBarOrAreaOnLeftAxis} + dataBounds={dataBounds.left} /> diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts index d5120cfae973c..4554c34b97c55 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts +++ b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts @@ -527,6 +527,9 @@ function buildSuggestion({ xTitle: currentState?.xTitle, yTitle: currentState?.yTitle, yRightTitle: currentState?.yRightTitle, + hideEndzones: currentState?.hideEndzones, + yLeftExtent: currentState?.yLeftExtent, + yRightExtent: currentState?.yRightExtent, axisTitlesVisibilitySettings: currentState?.axisTitlesVisibilitySettings || { x: true, yLeft: true, From 574b4559e7402e6fe6890277736b1ea91fae18d3 Mon Sep 17 00:00:00 2001 From: Thom Heymann <190132+thomheymann@users.noreply.github.com> Date: Tue, 18 May 2021 11:37:18 +0100 Subject: [PATCH 144/144] Simplify deleting spaces (#99960) * Simplify deleting spaces * Fixed i18n * Fix functional tests * Update x-pack/plugins/spaces/public/management/spaces_management_app.tsx Co-authored-by: Larry Gregory * Fix snapshots Co-authored-by: Larry Gregory Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../confirm_delete_modal.test.tsx.snap | 93 ----- .../confirm_delete_modal.scss | 3 - .../confirm_delete_modal.test.tsx | 83 +++-- .../confirm_delete_modal.tsx | 317 ++++++------------ .../edit_space/delete_spaces_button.tsx | 43 +-- ...sx.snap => spaces_grid_page.test.tsx.snap} | 0 ...ges.test.tsx => spaces_grid_page.test.tsx} | 0 .../spaces_grid/spaces_grid_page.tsx | 49 +-- .../management/spaces_management_app.tsx | 52 +-- .../translations/translations/ja-JP.json | 12 - .../translations/translations/zh-CN.json | 13 - x-pack/test/accessibility/apps/spaces.ts | 4 - .../page_objects/space_selector_page.ts | 4 - 13 files changed, 201 insertions(+), 472 deletions(-) delete mode 100644 x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap delete mode 100644 x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.scss rename x-pack/plugins/spaces/public/management/spaces_grid/__snapshots__/{spaces_grid_pages.test.tsx.snap => spaces_grid_page.test.tsx.snap} (100%) rename x-pack/plugins/spaces/public/management/spaces_grid/{spaces_grid_pages.test.tsx => spaces_grid_page.test.tsx} (100%) diff --git a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap deleted file mode 100644 index 5bf93a1021c05..0000000000000 --- a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap +++ /dev/null @@ -1,93 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ConfirmDeleteModal renders as expected 1`] = ` - - - - - - - - -

- - - , - } - } - /> -

- - - -
-
- - - - - - - - -
-`; diff --git a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.scss b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.scss deleted file mode 100644 index 887495a231485..0000000000000 --- a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.scss +++ /dev/null @@ -1,3 +0,0 @@ -.spcConfirmDeleteModal { - max-width: $euiFormMaxWidth + ($euiSizeL * 2); -} diff --git a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.test.tsx b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.test.tsx index 36d282a1cd653..59c7dde71aedb 100644 --- a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.test.tsx +++ b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.test.tsx @@ -6,10 +6,10 @@ */ import React from 'react'; +import { act } from 'react-dom/test-utils'; import { mountWithIntl, shallowWithIntl } from '@kbn/test/jest'; -import type { SpacesManager } from '../../../spaces_manager'; import { spacesManagerMock } from '../../../spaces_manager/mocks'; import { ConfirmDeleteModal } from './confirm_delete_modal'; @@ -22,25 +22,53 @@ describe('ConfirmDeleteModal', () => { }; const spacesManager = spacesManagerMock.create(); - spacesManager.getActiveSpace.mockResolvedValue(space); - const onCancel = jest.fn(); - const onConfirm = jest.fn(); expect( shallowWithIntl( - + ) - ).toMatchSnapshot(); + ).toMatchInlineSnapshot(` + + +

+ + + , + } + } + /> +

+

+ +

+
+
+ `); }); - it(`requires the space name to be typed before confirming`, () => { + it('deletes the space when confirmed', async () => { const space = { id: 'my-space', name: 'My Space', @@ -48,34 +76,23 @@ describe('ConfirmDeleteModal', () => { }; const spacesManager = spacesManagerMock.create(); - spacesManager.getActiveSpace.mockResolvedValue(space); - const onCancel = jest.fn(); - const onConfirm = jest.fn(); + const onSuccess = jest.fn(); const wrapper = mountWithIntl( - ); - const input = wrapper.find('input'); - expect(input).toHaveLength(1); - - input.simulate('change', { target: { value: 'My Invalid Space Name ' } }); - - const confirmButton = wrapper.find('button[data-test-subj="confirmModalConfirmButton"]'); - confirmButton.simulate('click'); - - expect(onConfirm).not.toHaveBeenCalled(); - - input.simulate('change', { target: { value: 'My Space' } }); - confirmButton.simulate('click'); + await act(async () => { + wrapper.find('EuiButton[data-test-subj="confirmModalConfirmButton"]').simulate('click'); + await spacesManager.deleteSpace.mock.results[0]; + }); - expect(onConfirm).toHaveBeenCalledTimes(1); + expect(spacesManager.deleteSpace).toHaveBeenLastCalledWith(space); }); }); diff --git a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx index 100b5b6493e30..f3ed578a94962 100644 --- a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx +++ b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/confirm_delete_modal.tsx @@ -5,224 +5,127 @@ * 2.0. */ -import './confirm_delete_modal.scss'; - -import type { CommonProps, EuiModalProps } from '@elastic/eui'; -import { - EuiButton, - EuiButtonEmpty, - EuiCallOut, - EuiFieldText, - EuiFormRow, - EuiModal, - EuiModalBody, - EuiModalFooter, - EuiModalHeader, - EuiModalHeaderTitle, - EuiSpacer, - EuiText, -} from '@elastic/eui'; -import type { ChangeEvent } from 'react'; -import React, { Component } from 'react'; - -import type { InjectedIntl } from '@kbn/i18n/react'; -import { FormattedMessage, injectI18n } from '@kbn/i18n/react'; +import { EuiCallOut, EuiConfirmModal, EuiSpacer, EuiText } from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React from 'react'; +import useAsync from 'react-use/lib/useAsync'; +import useAsyncFn from 'react-use/lib/useAsyncFn'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; import type { Space } from 'src/plugins/spaces_oss/common'; +import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import type { SpacesManager } from '../../../spaces_manager'; interface Props { space: Space; spacesManager: SpacesManager; - onCancel: () => void; - onConfirm: () => void; - intl: InjectedIntl; -} - -interface State { - confirmSpaceName: string; - error: boolean | null; - deleteInProgress: boolean; - isDeletingCurrentSpace: boolean; + onCancel(): void; + onSuccess?(): void; } -class ConfirmDeleteModalUI extends Component { - public state = { - confirmSpaceName: '', - error: null, - deleteInProgress: false, - isDeletingCurrentSpace: false, - }; - - public componentDidMount() { - isCurrentSpace(this.props.space, this.props.spacesManager).then((result) => { - this.setState({ - isDeletingCurrentSpace: result, - }); - }); - } - - public render() { - const { space, onCancel, intl } = this.props; - const { isDeletingCurrentSpace } = this.state; - - let warning = null; - if (isDeletingCurrentSpace) { - const name = ( - - ({space.name}) - - ); - warning = ( - <> - - - - - - - +export const ConfirmDeleteModal: FunctionComponent = ({ + space, + onSuccess, + onCancel, + spacesManager, +}) => { + const { services } = useKibana(); + + const { value: isCurrentSpace } = useAsync( + async () => space.id === (await spacesManager.getActiveSpace()).id, + [space.id] + ); + + const [state, deleteSpace] = useAsyncFn(async () => { + try { + await spacesManager.deleteSpace(space); + services.notifications!.toasts.addSuccess( + i18n.translate('xpack.spaces.management.confirmDeleteModal.successMessage', { + defaultMessage: "Deleted space '{name}'", + values: { name: space.name }, + }) ); - } - - // This is largely the same as the built-in EuiConfirmModal component, but we needed the ability - // to disable the buttons since this could be a long-running operation - - const modalProps: Omit & CommonProps = { - onClose: onCancel, - className: 'spcConfirmDeleteModal', - initialFocus: 'input[name="confirmDeleteSpaceInput"]', - }; - - return ( - - - - - - - - -

- - - - ), - }} - /> -

- - - - - - {warning} -
-
- - - - - - - - - -
- ); - } - - private onSpaceNameChange = (e: ChangeEvent) => { - if (typeof this.state.error === 'boolean') { - this.setState({ - confirmSpaceName: e.target.value, - error: e.target.value !== this.props.space.name, - }); - } else { - this.setState({ - confirmSpaceName: e.target.value, - }); - } - }; - - private onConfirm = async () => { - if (this.state.confirmSpaceName === this.props.space.name) { - const needsRedirect = this.state.isDeletingCurrentSpace; - const spacesManager = this.props.spacesManager; - - this.setState({ - deleteInProgress: true, - }); - - await this.props.onConfirm(); - - this.setState({ - deleteInProgress: false, - }); - - if (needsRedirect) { + if (isCurrentSpace) { spacesManager.redirectToSpaceSelector(); + } else { + onSuccess?.(); } - } else { - this.setState({ - error: true, + } catch (error) { + services.notifications!.toasts.addDanger({ + title: i18n.translate('xpack.spaces.management.confirmDeleteModal.errorMessage', { + defaultMessage: "Could not delete space '{name}'", + values: { name: space.name }, + }), + text: (error as any).body?.message || error.message, }); } - }; -} - -async function isCurrentSpace(space: Space, spacesManager: SpacesManager) { - return space.id === (await spacesManager.getActiveSpace()).id; -} - -export const ConfirmDeleteModal = injectI18n(ConfirmDeleteModalUI); + }, [isCurrentSpace]); + + return ( + + {isCurrentSpace && ( + <> + + + + + + )} + +

+ + + + ), + }} + /> +

+

+ +

+
+
+ ); +}; diff --git a/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx b/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx index d03b878cb19ab..92b68426d172e 100644 --- a/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx +++ b/x-pack/plugins/spaces/public/management/edit_space/delete_spaces_button.tsx @@ -95,44 +95,13 @@ export class DeleteSpacesButton extends Component { showConfirmDeleteModal: false, }); }} - onConfirm={this.deleteSpaces} + onSuccess={() => { + this.setState({ + showConfirmDeleteModal: false, + }); + this.props.onDelete?.(); + }} /> ); }; - - public deleteSpaces = async () => { - const { spacesManager, space } = this.props; - - this.setState({ - showConfirmDeleteModal: false, - }); - - try { - await spacesManager.deleteSpace(space); - } catch (error) { - const { message: errorMessage = '' } = error.data || error.body || {}; - - this.props.notifications.toasts.addDanger( - i18n.translate('xpack.spaces.management.deleteSpacesButton.deleteSpaceErrorTitle', { - defaultMessage: 'Error deleting space: {errorMessage}', - values: { errorMessage }, - }) - ); - return; - } - - const message = i18n.translate( - 'xpack.spaces.management.deleteSpacesButton.spaceSuccessfullyDeletedNotificationMessage', - { - defaultMessage: 'Deleted {spaceName} space.', - values: { spaceName: space.name }, - } - ); - - this.props.notifications.toasts.addSuccess(message); - - if (this.props.onDelete) { - this.props.onDelete(); - } - }; } diff --git a/x-pack/plugins/spaces/public/management/spaces_grid/__snapshots__/spaces_grid_pages.test.tsx.snap b/x-pack/plugins/spaces/public/management/spaces_grid/__snapshots__/spaces_grid_page.test.tsx.snap similarity index 100% rename from x-pack/plugins/spaces/public/management/spaces_grid/__snapshots__/spaces_grid_pages.test.tsx.snap rename to x-pack/plugins/spaces/public/management/spaces_grid/__snapshots__/spaces_grid_page.test.tsx.snap diff --git a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_pages.test.tsx b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.test.tsx similarity index 100% rename from x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_pages.test.tsx rename to x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.test.tsx diff --git a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx index ac57a566e2a00..a4f797e441ab5 100644 --- a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx @@ -180,53 +180,16 @@ export class SpacesGridPage extends Component { showConfirmDeleteModal: false, }); }} - onConfirm={this.deleteSpace} + onSuccess={() => { + this.setState({ + showConfirmDeleteModal: false, + }); + this.loadGrid(); + }} /> ); }; - public deleteSpace = async () => { - const { spacesManager } = this.props; - - const space = this.state.selectedSpace; - - if (!space) { - return; - } - - this.setState({ - showConfirmDeleteModal: false, - }); - - try { - await spacesManager.deleteSpace(space); - } catch (error) { - const { message: errorMessage = '' } = error.data || error.body || {}; - - this.props.notifications.toasts.addDanger( - i18n.translate('xpack.spaces.management.spacesGridPage.errorDeletingSpaceErrorMessage', { - defaultMessage: 'Error deleting space: {errorMessage}', - values: { - errorMessage, - }, - }) - ); - return; - } - - this.loadGrid(); - - const message = i18n.translate( - 'xpack.spaces.management.spacesGridPage.spaceSuccessfullyDeletedNotificationMessage', - { - defaultMessage: 'Deleted "{spaceName}" space.', - values: { spaceName: space.name }, - } - ); - - this.props.notifications.toasts.addSuccess(message); - }; - public loadGrid = async () => { const { spacesManager, getFeatures, notifications } = this.props; diff --git a/x-pack/plugins/spaces/public/management/spaces_management_app.tsx b/x-pack/plugins/spaces/public/management/spaces_management_app.tsx index da0f9157f310d..c97ec5fbcc227 100644 --- a/x-pack/plugins/spaces/public/management/spaces_management_app.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_management_app.tsx @@ -14,7 +14,10 @@ import type { StartServicesAccessor } from 'src/core/public'; import type { RegisterManagementAppArgs } from 'src/plugins/management/public'; import type { Space } from 'src/plugins/spaces_oss/common'; -import { RedirectAppLinks } from '../../../../../src/plugins/kibana_react/public'; +import { + KibanaContextProvider, + RedirectAppLinks, +} from '../../../../../src/plugins/kibana_react/public'; import type { PluginsStart } from '../plugin'; import type { SpacesManager } from '../spaces_manager'; @@ -36,22 +39,23 @@ export const spacesManagementApp = Object.freeze({ title, async mount({ element, setBreadcrumbs, history }) { - const [startServices, { SpacesGridPage }, { ManageSpacePage }] = await Promise.all([ + const [ + [coreStart, { features }], + { SpacesGridPage }, + { ManageSpacePage }, + ] = await Promise.all([ getStartServices(), import('./spaces_grid'), import('./edit_space'), ]); - const [ - { notifications, i18n: i18nStart, application, chrome }, - { features }, - ] = startServices; const spacesBreadcrumbs = [ { text: title, href: `/`, }, ]; + const { notifications, i18n: i18nStart, application, chrome } = coreStart; chrome.docTitle.change(title); @@ -119,23 +123,25 @@ export const spacesManagementApp = Object.freeze({ }; render( - - - - - - - - - - - - - - - - - , + + + + + + + + + + + + + + + + + + + , element ); diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index c46b59bce2f8e..a2615ae9713a2 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -22650,13 +22650,6 @@ "xpack.spaces.management.confirmAlterActiveSpaceModal.reloadWarningMessage": "このスペースで表示される機能を更新しました。保存後にページが更新されます。", "xpack.spaces.management.confirmAlterActiveSpaceModal.title": "スペースの更新の確認", "xpack.spaces.management.confirmAlterActiveSpaceModal.updateSpaceButton": "スペースを更新", - "xpack.spaces.management.confirmDeleteModal.allContentsText": "すべてのコンテンツ", - "xpack.spaces.management.confirmDeleteModal.cancelButtonLabel": "キャンセル", - "xpack.spaces.management.confirmDeleteModal.confirmDeleteSpaceButtonLabel": "スペース {spaceName} を削除", - "xpack.spaces.management.confirmDeleteModal.confirmSpaceNameFormRowLabel": "削除するスペース名の確定", - "xpack.spaces.management.confirmDeleteModal.deleteSpaceAndAllContentsButtonLabel": " スペースとすべてのコンテンツを削除", - "xpack.spaces.management.confirmDeleteModal.redirectAfterDeletingCurrentSpaceWarningMessage": "現在のスペース {name} を削除しようとしています。続行すると、別のスペースを選択する画面に移動します。", - "xpack.spaces.management.confirmDeleteModal.spaceNamesDoNoMatchErrorMessage": "スペース名が一致していません。", "xpack.spaces.management.copyToSpace.actionDescription": "1つ以上のスペースでこの保存されたオブジェクトのコピーを作成します", "xpack.spaces.management.copyToSpace.actionTitle": "スペースにコピー", "xpack.spaces.management.copyToSpace.cancelButton": "キャンセル", @@ -22721,8 +22714,6 @@ "xpack.spaces.management.customizeSpaceAvatar.selectImageUrl": "画像ファイルを選択", "xpack.spaces.management.deleteSpacesButton.deleteSpaceAriaLabel": "スペースを削除", "xpack.spaces.management.deleteSpacesButton.deleteSpaceButtonLabel": "スペースを削除", - "xpack.spaces.management.deleteSpacesButton.deleteSpaceErrorTitle": "スペースの削除中にエラーが発生:{errorMessage}", - "xpack.spaces.management.deleteSpacesButton.spaceSuccessfullyDeletedNotificationMessage": "{spaceName} スペースが削除されました。", "xpack.spaces.management.deselectAllFeaturesLink": "すべて選択解除", "xpack.spaces.management.enabledFeatures.featureCategoryButtonLabel": "カテゴリ切り替え", "xpack.spaces.management.enabledSpaceFeatures.allFeaturesEnabledMessage": " (表示されているすべての機能) ", @@ -22738,7 +22729,6 @@ "xpack.spaces.management.manageSpacePage.avatarFormRowLabel": "アバター", "xpack.spaces.management.manageSpacePage.awesomeSpacePlaceholder": "素晴らしいスペース", "xpack.spaces.management.manageSpacePage.cancelSpaceButton": "キャンセル", - "xpack.spaces.management.manageSpacePage.clickToCustomizeTooltip": "クリックしてこのスペースのアバターをカスタマイズします", "xpack.spaces.management.manageSpacePage.createSpaceButton": "スペースを作成", "xpack.spaces.management.manageSpacePage.createSpaceTitle": "スペースの作成", "xpack.spaces.management.manageSpacePage.customizeSpacePanelDescription": "スペースに名前を付けてアバターをカスタマイズします。", @@ -22773,7 +22763,6 @@ "xpack.spaces.management.spacesGridPage.deleteActionName": "{spaceName} を削除。", "xpack.spaces.management.spacesGridPage.descriptionColumnName": "説明", "xpack.spaces.management.spacesGridPage.editSpaceActionName": "{spaceName} を編集。", - "xpack.spaces.management.spacesGridPage.errorDeletingSpaceErrorMessage": "スペースの削除中にエラーが発生:{errorMessage}", "xpack.spaces.management.spacesGridPage.errorTitle": "スペースの読み込みエラー", "xpack.spaces.management.spacesGridPage.featuresColumnName": "機能", "xpack.spaces.management.spacesGridPage.identifierColumnName": "識別子", @@ -22783,7 +22772,6 @@ "xpack.spaces.management.spacesGridPage.someFeaturesEnabled": "{totalFeatureCount} 件中 {enabledFeatureCount} 件の機能を表示中", "xpack.spaces.management.spacesGridPage.spaceColumnName": "スペース", "xpack.spaces.management.spacesGridPage.spacesTitle": "スペース", - "xpack.spaces.management.spacesGridPage.spaceSuccessfullyDeletedNotificationMessage": "「{spaceName}」スペースが削除されました。", "xpack.spaces.management.spacesGridPage.tableCaption": "Kibana スペース", "xpack.spaces.management.toggleAllFeaturesLink": " (すべて変更) ", "xpack.spaces.management.unauthorizedPrompt.permissionDeniedDescription": "スペースを管理するアクセス権がありません。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 90aa517c68232..a6cf8e5ddb865 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -23009,14 +23009,6 @@ "xpack.spaces.management.confirmAlterActiveSpaceModal.reloadWarningMessage": "您已更新此工作区中的可见功能。保存后,您的页面将重新加载。", "xpack.spaces.management.confirmAlterActiveSpaceModal.title": "确认更新工作区", "xpack.spaces.management.confirmAlterActiveSpaceModal.updateSpaceButton": "更新工作区", - "xpack.spaces.management.confirmDeleteModal.allContentsText": "所有内容", - "xpack.spaces.management.confirmDeleteModal.cancelButtonLabel": "取消", - "xpack.spaces.management.confirmDeleteModal.confirmDeleteSpaceButtonLabel": "删除空间 {spaceName}", - "xpack.spaces.management.confirmDeleteModal.confirmSpaceNameFormRowLabel": "确认要删除的工作区名称", - "xpack.spaces.management.confirmDeleteModal.deleteSpaceAndAllContentsButtonLabel": " 删除空间及其所有内容", - "xpack.spaces.management.confirmDeleteModal.deletingSpaceWarningMessage": "删除空间会永久删除空间及{allContents}。此操作无法撤消。", - "xpack.spaces.management.confirmDeleteModal.redirectAfterDeletingCurrentSpaceWarningMessage": "您即将删除当前空间 {name}。如果继续,您将会被重定向以选择其他空间的位置。", - "xpack.spaces.management.confirmDeleteModal.spaceNamesDoNoMatchErrorMessage": "空间名称不匹配。", "xpack.spaces.management.copyToSpace.actionDescription": "在一个或多个工作区中创建此已保存对象的副本", "xpack.spaces.management.copyToSpace.actionTitle": "复制到工作区", "xpack.spaces.management.copyToSpace.cancelButton": "取消", @@ -23082,8 +23074,6 @@ "xpack.spaces.management.customizeSpaceAvatar.selectImageUrl": "选择图像文件", "xpack.spaces.management.deleteSpacesButton.deleteSpaceAriaLabel": "删除此空间", "xpack.spaces.management.deleteSpacesButton.deleteSpaceButtonLabel": "删除空间", - "xpack.spaces.management.deleteSpacesButton.deleteSpaceErrorTitle": "删除空间时出错:{errorMessage}", - "xpack.spaces.management.deleteSpacesButton.spaceSuccessfullyDeletedNotificationMessage": "已删除 {spaceName} 空间。", "xpack.spaces.management.deselectAllFeaturesLink": "取消全选", "xpack.spaces.management.enabledFeatures.featureCategoryButtonLabel": "类别切换", "xpack.spaces.management.enabledSpaceFeatures.allFeaturesEnabledMessage": " (所有可见功能) ", @@ -23099,7 +23089,6 @@ "xpack.spaces.management.manageSpacePage.avatarFormRowLabel": "头像", "xpack.spaces.management.manageSpacePage.awesomeSpacePlaceholder": "超卓的空间", "xpack.spaces.management.manageSpacePage.cancelSpaceButton": "取消", - "xpack.spaces.management.manageSpacePage.clickToCustomizeTooltip": "单击可定制此工作区头像", "xpack.spaces.management.manageSpacePage.createSpaceButton": "创建工作区", "xpack.spaces.management.manageSpacePage.createSpaceTitle": "创建一个空间", "xpack.spaces.management.manageSpacePage.customizeSpacePanelDescription": "命名您的工作区并定制其头像。", @@ -23134,7 +23123,6 @@ "xpack.spaces.management.spacesGridPage.deleteActionName": "删除 {spaceName}。", "xpack.spaces.management.spacesGridPage.descriptionColumnName": "描述", "xpack.spaces.management.spacesGridPage.editSpaceActionName": "编辑 {spaceName}。", - "xpack.spaces.management.spacesGridPage.errorDeletingSpaceErrorMessage": "删除空间时出错:{errorMessage}", "xpack.spaces.management.spacesGridPage.errorTitle": "加载工作区时出错", "xpack.spaces.management.spacesGridPage.featuresColumnName": "功能", "xpack.spaces.management.spacesGridPage.identifierColumnName": "标识符", @@ -23144,7 +23132,6 @@ "xpack.spaces.management.spacesGridPage.someFeaturesEnabled": "{enabledFeatureCount} / {totalFeatureCount} 个功能可见", "xpack.spaces.management.spacesGridPage.spaceColumnName": "工作区", "xpack.spaces.management.spacesGridPage.spacesTitle": "工作区", - "xpack.spaces.management.spacesGridPage.spaceSuccessfullyDeletedNotificationMessage": "已删除“{spaceName}”工作区。", "xpack.spaces.management.spacesGridPage.tableCaption": "Kibana 工作区", "xpack.spaces.management.toggleAllFeaturesLink": " (全部更改) ", "xpack.spaces.management.unauthorizedPrompt.permissionDeniedDescription": "您无权管理工作区。", diff --git a/x-pack/test/accessibility/apps/spaces.ts b/x-pack/test/accessibility/apps/spaces.ts index a08ae474497e5..6242896c263ba 100644 --- a/x-pack/test/accessibility/apps/spaces.ts +++ b/x-pack/test/accessibility/apps/spaces.ts @@ -111,14 +111,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.spaceSelector.clickManageSpaces(); await PageObjects.spaceSelector.clickOnDeleteSpaceButton('space_b'); await a11y.testAppSnapshot(); - // a11y test for no space name in confirm dialogue box - await PageObjects.spaceSelector.confirmDeletingSpace(); - await a11y.testAppSnapshot(); }); // test starts with deleting space b so we can get the space selection page instead of logging out in the test it('a11y test for space selection page', async () => { - await PageObjects.spaceSelector.setSpaceNameTobeDeleted('space_b'); await PageObjects.spaceSelector.confirmDeletingSpace(); await a11y.testAppSnapshot(); await PageObjects.spaceSelector.clickSpaceCard('default'); diff --git a/x-pack/test/functional/page_objects/space_selector_page.ts b/x-pack/test/functional/page_objects/space_selector_page.ts index 57ca0c97c63da..0a41e4b90287f 100644 --- a/x-pack/test/functional/page_objects/space_selector_page.ts +++ b/x-pack/test/functional/page_objects/space_selector_page.ts @@ -167,10 +167,6 @@ export function SpaceSelectorPageProvider({ getService, getPageObjects }: FtrPro await testSubjects.click(`${spaceName}-deleteSpace`); } - async setSpaceNameTobeDeleted(spaceName: string) { - await testSubjects.setValue('deleteSpaceInput', spaceName); - } - async cancelDeletingSpace() { await testSubjects.click('confirmModalCancelButton'); }
vP>U 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

kzqvy$vdY_d|cR~k)PH#vsr#wK#adWr*7L6EH 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 literal 87132 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¨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 AMF0Q* delta 17725 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 diff --git a/docs/user/dashboard/images/lens_advanced_3_3.png b/docs/user/dashboard/images/lens_advanced_2_3.png similarity index 100% rename from docs/user/dashboard/images/lens_advanced_3_3.png rename to docs/user/dashboard/images/lens_advanced_2_3.png diff --git a/docs/user/dashboard/images/lens_advanced_3_1.png b/docs/user/dashboard/images/lens_advanced_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1473b203924a3a52d4c3775c59f128518f3f9a27 GIT binary patch literal 14003 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 twM4)rw6FdL_GBE?_{{kfN;cEZ@ literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_advanced_3_1_1.png b/docs/user/dashboard/images/lens_advanced_3_1_1.png deleted file mode 100644 index c3fb697666b4624d1795b41fd29542e6b5b24050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26894 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 UgS0dz_~8X*1$FsPvgSem12`xLMgRZ+ diff --git a/docs/user/dashboard/images/lens_advanced_3_2.png b/docs/user/dashboard/images/lens_advanced_3_2.png index 20da2ed706dfd2abf4df700a273115a9b143989e..15f2f0228a0fc6080142b845db0039768c1787a4 100644 GIT binary patch literal 35299 zcmaI71yof{7dL+Hr5ou65$Wy@K@mv-kxnUTxO81W8Uz99l15sjyO9>8ySuwC-__^w zec$iO8ydq7pkz1RZ|J$HUX60joZ<^M`<6qKOem35UFT z3I2d5jao4ExrmE%b&cc0tm*BM(c4I&~zz3S|5V~{1Qy7mUV^vQ^V$^0rxLO2MF8Zk|j^@S6n zxZ;WP-kA?mE`uTlxqP_*MM@KmJ_F;tdp4giQSpQn`pt^w7lC^W1BB)d#CI98r!7xK zSnNcDnW_u6V=`YVSQ&4+N;uhuq&{aF>*&$yr9P)#KWofPbl6zGq5sH}u}e(5n8GIp zNmUC3QMgkuF?ggR)xln`vL=x;4S!}nHjUzW%l%1!gXe{w3-!pE1y?~wZT>#kp)G^y^brcRMRmgvB=weJ*^W<&(z8`EIq(16$x zp|~_Oe|m$=jf!_VJZu2b)@* zTBSMQ06#q>e>KU?s!>E7l{#Q^+386B$m)pj>i!D(&i#(fi`WPEAyV?m7H%=BEh6^g z^yn9fvW&EGk1p_b(1=l8QN=!7%Fuq2;(bz&8xVrliMjG@g>1#en6e^pN@|ZD`_oH0 zwiv=60R&1bF*!N3qZ*@9qokvXsyN$Ev_2IpS2LhQFW|ii!-wf zvzGF3OIzP+W|k`%MLnx*cMhZqGzw$xidc~f&3mU3uhz#@6^9Ym6IT-!78Vp%8pcBq z7}ihFPl&^!uezstC-Wv-Th+Tz?w9C}_Kx^_jC0UATjUF#T=y|NOVt@|ZN7bqeWv|v zJiQ+;LbE&HYJXKP{FMn&+y4B`|63@xj(fGEpJUPq*ZOWB0y8>u9&pP75! z928;}j=tGf?|4)BX0m`vrKxx(|Ai{go71#9=@TiE(AX{}c?gaxv52vX;iB^PjM0P|&#BeNxp@IR8 zz9d~;WP2kACpng{i4Q5cE7>{Ol~=-wtLmZ4-yMXuh9=$pl=%UxW9pT zD|>%|(ckmja3qo`@biRg4T%m@@Q!eya`*B~nU2_UT3eWrnAEnH4;_U*>IyN9d;k4M z!MMeU=Az($+b4&}V`+RO{CK(gA4IYIu{e2Vc@B9+3gn8n1H6NRW=LjyW>JHd8~PhU z8*esh*g}X{!xh5!i3C_*%QN&t`d{_$Y7~5~{551zJ zz6m{k%oLRrLjFkpvOF?n#ngJE_p`t3s+Fp>sy(f#rwgZ%W=qPgsy$8YEQc%0zPId4 zI-%NY?u@J*&HU_py;R$A+>AfZG+_Bzt!V76Ik9=DQ;Abcc!m78e*OecR%Z=FE3DlZ zmbUR8=fYjNNoCt1Th*FuTi;rp2J?Dq`@`_X}dFJ0Xqtes# zk@a=Un9Ix;UMzSWHZ3$+W4IvS(%gQIDv9dMU)T&NOF1-NB$7xq$TX-hXlP0HjqnY8 z7y~+>-=WFSHp%?fKtDFA51G-KSW=gQ^%PY3$vh-`c#VQrUZ{L@%sI4cS_P&Bbl-(A zu`sY_NiN*#e?Weob=#wEez3#z#WN!MgzsRC?C_#9qK|a=$v!Rd^Xlh6vo~ZYLp-SW z@tfFhUPrhq=qp$iJ6fw+JMRSxw$zT+4qX)T{}f`uG$-W;F(f&UZP;si;<(DK*Z9DL~XCG9;sfi0ixu0)t?hK|$)JR)DWyf>fs9m=nB8~g-@?wLwuF^3jXJ;xC!Zs{=*w9$& zHGJ217jSx~X6P1xG&Xur910eU>nnWuYWOXIi&Fr?$BKwxRX#eOO!=-SbP0y0V#TF_`D_ z<$e*RhMnGhNuq&QZfA8)@mfFGLNbfQ)V&HUz}jYK=E8Ys*QJ=Dl(?j&q0OoTraC_A zKY9>pL{84nB|vEBQR6v zeuoR}B1NRp_1D3#d981!r%~m#jMSL$$#VR~!e2nkao8Efb{a7fw zmAMtZls%9z*jLr_mfUQuC;LucmiJ&d+D0CHhs`&xJ$dlesJ;#f>d6ORntv%un&Ww-V9hu8tJ2gRR_H5 zkY&s1B!3=hwv~9lN=x$woz3s!!oub*_!@NGGinh2Q0Ii<#y(7s4Ks=W&Bi~W`_tX$+%byZb5R(GnNU@%!_{(6|o z`Lx~u7JoaNklw!eebcn*rfJ;!!kgh1;l{2p@j7cW_iFt}^5@~#7CTQ<*v_Uz<3lY! ziNw^Y_KEg|*`Q8I&Fz9vvlV3+iN}rj?fp^kN|ZMBrLVE~`&)|3I#;&^;?abYG9rVN zmOw90*8cb(ow{hQ5Q0`C3`IpGw@RFpD12aR3R5ach~FRzo%@2G^`d z-isGc7Kxx8Q`~yUnR{5A+(gek5q6en3?5?U)KP9LG}W!^>Ad28EEsbTsq(bG4OQT8 z)T6(xM`5`DNy-mR=}ORgOp%-95sZ{H1{+yl!_=Q$Vvf-M2We`%E9=ik3* z`0<-ZR;fLCPw>*LKuGi`!NSC%^wnol^Ct2q6&?)ouerYKRYKoC#^U-4GoQ`<2y59 zRhbw6vcvDhXe}TRdtnX^S65edR~~jdM{^D?At50SPHqlvZZy!mg5|HG;IUrv5r&j027pEv(6 z=Nl(eM`=47c##nC|2EgZ%>VoHUq(@m-!=aqOZ;QzKTqLy7DpH5_)nXOqgN>sYr>n6 z!csS()XXSKgs}rBp@dvrS1mWOG7cF=$a1diC@=$TG!j% z%{%4^AfP=xi@|*b{u1ghRDM!gT2h*~x$9w_T^~Fn@ERw>?=bw9Q6u@LriuTfpJKjbJ9uj3gn?#D+E5!%K=KhR z883R

F%k>R~t_{o@Dkf5ZZW7U}3$_VGKch+B8OsxM}%ZDL*I8rLwY)fB;U zNWOpsfrj?XP+YZ@`KwnkIEfI5?f<1dZ!);5sz}jUF|x3<)WL~|7ZrJA6Y~QJi-klX zpi=BvP*OegxLL0OZ>-SdHX@%~V1~5P@UJodXps-N*<6Rc$;-=|_#j1t_gEYZOiq=~ zubtl`0!T1n*B!~i!rzwvt8$o%pK1SFdZ|oJQ0~{qKq47zWPi3wor+mfC+>70yQR1gS)Xw=oniNQWVp7r3u_}SG!~iNZDj>s-QiIfB zO+*kB^>XiLRj*Ri_?Q3a4Oa^iceHC*2gqiTbTuZjQI(_KWc{yZM}!4mwJm0*oF8VYZA>IW zg($Fr1a_V68*gubpoqpx6WqnY0Nl(tru>huJuhq(#eia8?U6_x8=+apq64`YiGXID zP2a26|1~X5E?69(bua{-mH19EjWEPZT4%G=W;GJKjQtN4yaDRKPMd?SdM$Dj5*0um zN^2*kAz*kI_KjBJjYib}6sr!P4(3$?6?8FVYY%@kv6`OsfTB};*9Y!D!OD(~y3yQ=y~CTb{X!e^pL9 z{X*OS*U3hB(Rq=H2a?5xn_3Ynp>3ofL}ScMJ5XGOuhj(Il3irg-S~u*p)R1?_%1Ms z%kxWNH765$%hZ!xqL#9^daPAgYSa0_+Y?nL`pimcr?gKn{<^`)yWf%#0o1F?N+<#< zCW>V7_1gy`TrC97QY2gzZqpZ^@xNJZVh`<%=c)xa>NF=8=NeO?64mGSzZJIHiZNx; zvkYMFH1@TTg)NB-Npm?*eC1a7E6SZYnuC1=V8oYt25=sW8*bwf z9pSfB=XIa$>wJohaVm;W)H)?1)r3t@;rdb-DSc)d3Y`YO5f%+( z!m7i^lsq!63IO^pg(Q7bVOMLr3DQJz3$@LldhVcqJweh*orYQ$0IYZEp-VP2E=1*o z;91+p7LZ%xfedKI)z(QM!d;yMbYhqg=uu8yHoLWL)HfZPPbuYQyTYlr>rqZO;>566 zJ!f$eR@+I9wH}c9Yk@6-UKC;gIA*TxWL>I0pqTgcgZBj^gX5G$SK1{8A92u8f9M#c zv+Xyjhb;WsMCP;4<7g!nmLG**ZyLW>oCy4@qA1deqZA#$uK!I`%D37F?6ZOotnz8I z*RAsNf;frClY;+JIxyoVV0=TCl%%QmSw2FJp3$CFq{zldG>n-JB&_*T=wv3$L-_B= z;J1+}smoq~A{hZhZ1m1`|D?(d!6SsTrzHr9OhCOHjTHd(cKrWmFq?g9_{x8>Z8?>v8km?mf9M2j zPDcS#iNp$XLG%E>*>1V@-(g*`2(Diumy?Sj$l81o;X^+vP$7fa{qP7#$!q&v^>WLZ zP}%=<2?DrEU@Yj$r0z)RY?)RL+!~1WfTVpECXp2FbzTND%asUMo}#BykLv zCQf|F^h?1}`*f54-?udW}KD%j>_fJvJ9A|`g zSUeyRDxnFg1SGXkIFE&EjZs>Ex{6uTd*233pPNe$8lfE8!S0tCHlmat#^Ww`jM$rx zFvkkjdXR|+JLMLWLStK8^}0l?6J}HeH|947*W7sqwhYqeGE==|etRfLGGZDp7(+>4 z;>j_IFAat&tsV)m(j)t3+^f=XnO5!fYg-SX%FtJrwt9;0?po@jn#Wl`ygXA+zUk*B zP_9IW>Qp%9jywAK!D@rg>u#=#ii+mx%K57!U+ofM1->XR&c1!U0uf(pgB?^ys+4gO z=kfWd4<(EB6l+$Ds?T^lw@kwVo@GxvZPau3_j@Ll>SfJJ6sIS3FZT@aiVWlw-E*m# z4U^)GD>OiPn)IWwXPVFYQZ^o7C#gj<2Mq_-AB9dhiMz!Zu55gzkw9ZuQj|A<66 zGkx2bmBqSVwVn{U>ln13zBAU4)fV+kqGX}8Y7(nkr`l$=TRkoz1)Fl`P%jO8xqKJ< zxK`iuVvowhThet;_WGXXwyyd))xQ1y3K^7zjSXvbpmLaXZ`US6%gA9d@eAed3KWgGRd>R}KNYpzJ!B-hm#uLdz?_T7`vS10C!=~n5m zvBd#d=T%Ho2C5;6c}vepn+*y3;kqM79y|Td@;6rMLt&oLk7#{x#7_B*TR#< z`clumDZ_i`0n+?5!xp#xflY%5f#JLB!;M?&JmmGW13lXzvC}x@)nA-JI5a4it@Aa> zo3QI|?y$hO0bZ!qbzONITZ>fhnQxye^Yon+628H0N2HYTjUK7nLjF+G%39CV&=(PFtB+zklX4Q+&eN}Z zWM;D>e@--yP0nZIeB{TGxRE_=lg$t;e=*~8v9Hl{cfslEJy135k3xMNaP86FxkT3P zecoV#Eg&)P9-NcqfOWUqgrhgtbs?T~vkEzF?=M5y{6H;zyMOO=8jf(`l6lp;syyp3 zl#y)OpU@y$>v}omO^kASb-dKTm}XzHEZb^_eIK|z#WkJzWf$T{>3efNi9g6v)Cal#! zzo}36ent%$cBF^Hh2Zhwp&o;KjU;4tBoLmUFvE`2?};bmdZ?J#xtLH;R>^S4g!kZP^}L`a&5`YUnuLi!sltI_+B@NU4dw%xQA^d9u5%`~d~$ z^kuW>J$3R-Tn_yQ=B4OI0YzMeGfn z+u>t&;pG7Ix!U1<51I3y`>NttrH!>1dt*W@5KEFqg`wYT|aU zD#iVJ+`*^9mONQc=mZ?#gqOcd$d9%*ShK)~BXN;KhjVVkhrrt7aM*Zj=ky@0EJIXr z`f;|7TKMIXGWf^3N1L@L;1V|mB<_mgzHw0(ZDs*x>>hUS3+OJw^GZnFkKN6Bk$35H z{g4Ibg(nn}gxQ$%?UrWhAy?CK8W1mrdAql`tx>(|2Na%cb~XDNa&l+RD4IU~{`rS0 zi!AI-t#e!#e!$Wl?`E2FSlc}til2Gqo8es;&Ig9pRZFK1e(%kg>0n|@y>8}aLO!{nwHbveiQO{g zI^{!dRj57bWz+-pIXh+m5WgFZoV0G1&1)|t%Z%@Bi!K8o50eJOok zjnjA?YqRP(FMLm|LEgi=-GHS8ajIX?9$iYB)7e8G`)N>?V6c=G7H5X{@#iW@FWgk} z_!n)6Ai-a^?ee8AMt4$_LE4HVY=O3Y#}n<3u`6qhJ_U|tKE0jPGq<@cBJ~(Z;!(~* z@U;?|CDdD|zTX_9vx=6`YMUfOG8D>`3P4U|Qp=lOCOaR&!B`i|w!^F!aBlJfI%i^t zqZ-)@hBN&T28Je9!b^89C9a~{nmBBKjVJJyEA%x(U@K4M2a-1R@wOtZkm5}>pS9fF zkRw>sJj;2p@>IzTG#VJ!6$DTYZB_i0=c*8g4 zdpMO6<3aLWNtNBqC%fS;_w6Doq@7zA9!g#8NwA=Jq13A75yn?2ttc8adg7y|GuRF@ z`a5cj)Ov?c%4*xh5>_QMTdC8fvrFsfz7%AHno$S^YC>v`2iG;kTWg4sQ;3y&+HHOuIZgf%^vZ7kijE7j)n zZkE{YFZZiRR?jQ+-q@GFoOkXym#Tw%D9)CST`e~WPl)HrP09VvADk1COY!SZWp&ld%Kr;PXYt z2rD89ytSL_U)m$KO{?iknk_XQGVca*gV-cz1}6=cX�CB=l|TdW(Er{?J@egJ?2B zJagP`ZotW1J7IL(8Kox(Wg0@k9@nkFQj8PxLW$;ewj~Z02UN~p=a02_g-j8zF7HNl~>Am#*3O__`YcGJpa4&E60DbNG7*4*84`DxS<7>I&kno8%|&5si6sY~JQ5ADz0NpQ=S zm8cO6(x2|XB8$NB+K;T6Cy~zyL_(f7uqXRo9(mg39)9c5PUkcq>DrrD6{4GVwvLEf zcNT_dc21r8$;>d_1eOoU+(9iPdwm8JZL-wH+Pcli=j;Q%c~~bH_RqIy-upXEn=d z`YpAST+Orxh7)W$pT9R~J^jc83wxr^s+8oQ-NTEF^~@YgLA_3syS<0| zYaztJGM~B(@`sS}Qv70%%@4&tldVKLEj@pgXzG^YYBF90*gDi1&OnM0G$oKZ#ef+O zey@rpzd(-1t%mX_t>qYynRfS$jhb}6w7sPRmdm@6(~i+~7Is@{0X|^Gh%uHi)32KT zI{6(swB@F&d81rdKAs(6GNU?3%<+M;jl(?+TcfOyNQM)ipse-!Dt0(#hXe_Flkhz* z*tW&UTyKxRBU5b@^gZuRaBv`*uVlsIRi-xj0B!zOY+YZZMC^1z+ zUff+q@To7b5ygm7i=XPDCL05IKfP6kq9aH$NzCp(RRiKqD&a1mOfQ~^a0Ci2^%bL6 zI$0Hw?l#$>29<~Ozk3YP$-3pnM`4Wn@r=aZ?+c01fwc%G;wDz`arp`VWAFKS#|}a) zdXjB9S{M#l9AT9~M?95}pD5g++grKcw@jeLHrP{NVM{;jBr93`nzKv5xA7(+L-BXp zwZH-whKRrzXuc!N?8G0ynMmy~F*4!Hi&a&87vb*|!@mPzfgIz{-H*&flIJH%4p-zq z^A9!GV$J^owlY}ER+fn^6Z;7Ot`|5OU7YzPoC5j+quTFp8{Uy%oLz3}b8n6QtaRw; z3jw!^?3a1Y=LR=!T?krgwhM0{&>UbzD0(cf3&a3Cdx;JJt_B|_YH(G*Yr&Y3w68IP z0OfmO*Mqq41xCBya&i^-{shcTbbvy>rFm zj%gEFLiqbrHa*fCl<4%cmCdmZvY@mRkpMIy`yG&9CAlWve{L=* zUTPJ3MI1I<^mRu4f;c}D`X{%1^YCoHp8$*m8yWQZN*S*jQgZ}f(n18XW(6v&30R?R ztcIGX-#e<|MkeX-x0l}q$LH!9E_a-;8`%bgy{cRcnho0T^ZcDI@&eDI8K-^_03B5E zv=DAUf1`fqxGVU8$k!hXfUQ1YO&f{{n8^3_q5v!UwY$x-b05%|-g?~`_eg^Sdb@TA zazoeTHWA)GT>Ubb`-X2^H|B0=Ddk!ifi!BT_j4PFC?_+v9w#<gAoMn0mAT1%)_ETcE)CRX)d% z=PFh(;;J?eNK((IbRW8!SCnGwnZxlSIP|e=MBU=xE1VRPtmVURk2d+PKFzCd5+q;% z&{`DJc@=P`P2E@1aJ@@g6OR3u!RL52Uob#W5{tXI{k%`4m0QA%_wiO_5nXV<^mWgq zT=TZLr?LAvd>GV`te?1D*g|ovax>0x!6RZ_qX>{(orrCG;K?P4#Q}bq%&TykVLw3f zDXj$#J=(75A_Ap_Yiofm^uk+&G%o%}9y`;GGb=eQn4p{y0u%ptT>E9+%H{a%-L-gd z6%v<2+isf2^jbYwE#i=H=WpGh9owgu{gDlk70x{wsU%S$->51l(_8ZBRvzy5BnB2? z$9Vp7=b@fWTUK)!dXXmE_tOgqy%~iaGpQsJ=)vbV{WX%DqZL; zKhh_l*5a7^_Fhv0fdr*P#P?Ayo8RCd7_}g!+9I84_ZOez#6bXcvvG6cb-=W1hfNHt z*XbTPK4(0lLF&3GR*!*XcDEyZ^|BD8f-JC_@C%+Qpx2Wb8MO&g+>PSGr!vo6NpGLJ zFYn&XpgW!JyQU0_KlD8nTkp)?S8U84nlO}$^8zx9nF0~Exdd-o>sc7EffZOM`D?>( zmkcRexvocD4^sgqsT=hv4AuiF2f}QKzzaoi>l7DcwZq0J;TNe7jFg=M3F=1PdGu+r zp0}3%fYix^G0{lFEXkW3mo>9acs~8L-X{-=WaQD>$#CRGF_(uVA=uQD7^NpeV$td< z$yiMk;S#eN-&Q=jG^d)q_l0A2V3T?wuVbOWa4duGW>~wML~%x8*&AP?7K$+g^p{aM zwzhyn?8S>7Qpz|D8%sIF4`YoR= zHhnLy-5Oq=skzvEFWIx6kdC>iOKQK6HxD>RX6V|qdh#b!?g)5zz3WMiY~F2?M1Pp9 zM;1)OAw6R?w7%_c1$vEM$7&^#ECx7;+iNzSuRg$r1Dz+M!pnW{zMX=gWi8hq-OnzS z8>F}Dd%3tI$$7N9*3qFiWHd&y836?!Z*@wh3`{jtc?_Im=p7>LH zxXmKc2UrC2fnOU4D&R@sfG8HovfpC7oP=>NU>gi|3{g>0;M*bGbiq6uxQ|h!X-g~R zJzG66H+RS802L0g0M8kN33PmJS$+3_lz~8M??i&iMRCtsr(s0E$tGCP=8*aAny-D@ z7Xc}cH=IgWq9XnC)H-@0V}DlHHI1>*cJx|}h$M9l?ZMEg?tCGDX6f*UG9FIG;7y55 z-mF&RoBjmBD-nl=CamsL5GGe8v0f{KZA-#*J2>m`ozZrRtlmz1px>LL=OR-N0a4=4 zay<*_BsgoE;SH4Vu?h_;=qmZBd9QO@%WN8;Iq7IGpUxw%LnDF}O?1zkAFUButuFWs zi@q~BL<~lupP=mUup?2v7$!ErXeQAG-!f1GAxXnqj(EXxESjQ3htl^odKS~Z^3O_v z5L0F)F()@pH>&XZtQ7FlaiE?X$tJrA`1~7%$$otZR8|m@Ybt60bo zM}Q8z7SOapDQk*Pqr5SRF)KdIoQ3<}1r38m@9AJCp{!3gpv9c3uKcaixg zDvBMXUB+}j-0*m(kOM1s5CJwCy9e(J-T)LF$c&MLlP=DREtzu?<)qFwKRlMu4OCIC zd~f-8SoM-VDubw=Ox` z;6(+^E;Ro@0IseF4zYmawf$XRxt$>Il^^E&DKz3$@^7ryvLqg8xeS}tda!M;(HFT3 zPP@^5&yx{od>C~duM1jf5oj95KBDaX%=T0zwq?ek=^k6gVC%a!U~ZP=^Nx3t0%Xv*Tx(@8p3cfBpXYme(RM_vd6OvSdyq zJf?8jI$9@jQEyU3f8##qBD%czdC3RpOGsqmmX}Nxbh0{VmYv;iZFcY=;O3jJb&xpd zAopPE2$TtdY0l~fl&s}*@gb*+N^wlU#_!dK1v_(F^HTWUr^PYw?|zQUBXb;>%*rt9 z(f#@9Wf~u@L*lXL#SjX;GlsnORr%FCWOx3cFj3K%%| z9}vNsA6lAkoLLUs(L^$cr~1U6q<(!yPH)K9N#^5r9;;cSB3^$OG;LzZ8NIrKaWo-v zU}L!7;lI$apX{`$2XR-)U<4?com%w&u`<$gqpBekR@wRZ zv_40z-S>b%ENRwv7yK7r_J6*?PS_XYT*NNAn$UleBs?eYMoC67v<~lokS5x17wK^b zk;l~^?=P<14ck6@9}%|!tn8-c_&Jazis`8J7lR%@ z=El%pS>83(hYb7W{4i^wQZ7nxM@vad9fXxv^jj$F4%3v zTMA0db2+cTa|)%|-Bq5{I!W13g3P!jbyC8TiNyu zUJM%CSPc8h<@s2}<=+#1z))=qYSNk<5}0~SLm_Hmctn<~-h;vkj`><-MIpl*NJ=gJ zWaKHrOTW)(li?7(o%$Odsq^M?&b~IQ%qI8xyNwmo67|_?fwVCmlg!m(QQAGYMH*6 zZ^IyBwbyWI4A#~m?Kt7x6r3X`Sq-}->A*H@>fu(pcC4#L_?TfeyIFKllABtqJF)`8 zH4HxX9-Qy8*@{Pm4mPpf-)tfP_uMICE+hcaSJ*Ys`fOaxpl6U6*eDWbg##=6?0=&# z!cki7r;`n=e}fc=>{7CK5%pS+cpTuny4d>WpXF|hmDLo05SP|bjimZ=J`A2go#Jgy zuII}1FW(OP+~2^dw?`c%;Csv0YH+*(E^sPR`3vr20hp2R@X&0G=5RC@4{yJw!O4-CWeP4e1F|fEYl_5>~#$XgaC{e32L9;)!fJ?)I|OZx>)%Qx>&=6lAwer zS44p@1B5Aw2`2`Nmf4wEx6ge-`-9>8mT1sx3#53dzi1jk0(ja$25?;{i`$SjVobTD z8RxnS`n4FNNMgAb)GWl8A3o7b#4kVf&iO3(W7AIFi$cOy8V-~x7;gNlWSBhMVk5>N zl~$!>`RWd@P-$(-?&=_+52hl0vQ&c88B<{o0)LolK=OZ4Tq>-;u@XdRQ1Q+m)fbO0 zYJL{rF<`OMpe*9-+T-DLx!gf!J#O%S;;%anLRTUwfFVrTf)I;Gz=#urX4k&{K=c~oZJ<%R)N+}q{W@~J@j71(=4zVWIakL-Ys6_>HO zvtRmI^}XYn3;*(X(PZLrta)NJk*I)v3wKJf)Qq4oN+9RIAXX)i`+^!avkEHGNgEOp zO6y_X5MRGWF?YaCLXxeXaNe&+P@;`HH!MfIAdc32Z?s*=4GGw31!XLUEdmV)>!NHbj`srpImS}RPdtm-sQr#Q* zfnxV?g~=hxffyElAuHyl;Y%-rZiRiO#tsVY61ITY|0qy2FLYRZ?P}Xw$Kp6 zqP#sM+U@bmFyg$0+4Zi1El&sFP&mcKlY_jhVypVKFSpqcY{h|>{~(Y;N+j8bZ>La9 zK_$=N$TPSZam@zg7KizZ_WGAtJe>KwS?bN_+@@PIB-4W=D7z!IH8jj#$;-!nG|>l0j{A zrU3DOy2x6oB>ymME~-71P0!EE;djxvHEyB%E2*#7XE5VizoqLbBq&j;wtvL&g$fCF z_V)yfcRs_tdOm9Jp0_bLfj~v+o^pW5pFk|$9Cg`z}Xr3 z(c7Ls4z<@{`thuDv$%*RjQRE~1k2YkL|s^(>|cOxbP9O7Rgd4&sR+xdiU5f$03(?K zAa6~5Pl?N3tREiFD!`(l(J&0}`MQi(S0$myr;%_dj0F7y(v1R#0+|P`^dbMva=m zBkUCcz@?*g3ZoxBe>r{3I@{c(T-}9o^#jHI=3+mE=T5E(@T)W%bUdP8VrXv7xT;M$ zZsSk2me*>WevbC1W&GNia4%S~!~4y#c$g$&d9RD{``=TduMq-By;(W(H4@C!E6)08 z9mKuTBpGB4shBIBGx;4;88}z59`8{R=PZF=Mstl*I0oX3(u==@S=Yz%|DcTh+F59Z z54(%y>JOoiTk=X<)&^7NXaQi)V46YoG4!o219bBi5bZ=my=m5j+20AyH@`klI56Bp zIkPa; z@QZdhX@X5pn3afAgMF~g(S#r#|h_0^mj;5K4-(HnMei*nL*X+qv)A(WPT#kK~dkjw(s$X zsJC$^oZDR7-Q8ogU^(e47>Fx*zv3mQgUTd&8D>@gx~&Bn($O7Zeg|GcIQ50X6+S%7n#)$o&wp`x8U$q4f1Egr+MDsuJlC!1dg zMzzn{Gm4=12&kz7cImSOsBtNj%`loz)(x0<(*K0==ea=o&)4klGdgd@`+hD3m*<2E zBd?6*%GF4`nVy@xA?U>bz>Q}lk_In8e4)f{9n~L}!^ey|(caM(k73-kanN5$i!Eo- z;0hGNXiBV~D9HXJx2r^wz}m9BgLDgWlA0hm9S`wY;6$RctG;a?6Yd8UdXnetdUtoK@c<&euuh0ZYjPmWvC$le6`VA~Cnf#xxel03Okk6dk zbByh;o*P*qR$SM5^iMBGebefze>>ZolW{&3&l{4!>4o+LtNUZVqp*!;{hx*@b!Ltx zg7;5W%Rn&ALZctAIPgjwBs3jFec^Wp8>CfS+5GHw^{osZPb}>y(#n`RMl7yR)=Nua zgP}GOrA)isCV$Yu+5uq2^VIXGCyTF7^caV|7G=p_>SKi%**w{9zu0!ny5LDim-N#F zPo$49eOR-5$Jr~oY+<=;dxJ_`VFJNylCkCv6I9ZK;gqVqel zWHoi^Z|ShSnWOQ5b>i^YAO6V);P_GlkfbkO2(su}4?jiUuiNq$25Kc^o6N2My1FD1 zdJaH?OO54We1}^wb_?M%ZRxz8#lw*p7f<`RJW(VGM_B8A|K+HC--#)2^93N8Kw`Z{ zq&eqrKY4stwSW<2{s$&+QG)&s>?cm}z69~0bMh7k%S?g%7{JiVaW{mah9+(`(9Vf%_N^q`}ZvFl1 zYm&ti!d^7M=p11r5Ja=Ggb2f(IAXXKcG>GKH3*UZ*L6yiK$@Vp#hT0X66jZ;iOv%g zDZ~XxDiQka)5wpP9Z5OIr}ho&EYXAj942c#h#x&hB)Nxwgm2K1F*IAEQDcB9Mpi@M_ z5Eu#^Cs(H5M91`R41s^oq~v#fy2;SQqi?8mOB*Kn#o7vPS2PH+Io!p#2Yje!6{f?m4 zY*xZ2?o0RpLLJFJ697Mr0w_QOcN~CBKLTJV-_W_h<+%0w0cpgRuP+yzmTfs_!bO8( z5V2R>X|!M)k^t?=3FUjw5i&JlD)E{ROYk}CqUqetyG_!6J`|F)dTTh8D&#k=TnvTs zqDg0P0y17C1J@2P7j^N@u_|$-6$F|EBmwLhR+NG42sMU3Mwh7 zbSMo&2#z#JDJfD?($YgnC<3C=rP5u}sYrKsch}JI9OM4K@AW)i_`o%1@4aHL_^q|h z$!7;xj?EyJR*|>5BLBL&Vkm&ZBnF>LX-yN^zADVwBWMWXJUs(L!Mwwje8r!y)>LWf z0S8n7$9M&|H`EqWF$xFBmPu*MiDmTMPxe>(Dn2casQ#0d@|E@k(XskOt+V3m%0H73 zmafkNRElfa1NP?5tSddo%D)`f=j~oX0Z#9IyMJ+7=hdM2MjK}Gq(k*jQyFK~; zCXN`$jtpBvApkftl;ic12M%1L!O+GbEDPB^zc%=`Lq7)?v6ZTnd!rRN{?( z_H#aM$}k@U(!DuI0Wu1*Bho~GB5fq!fe!0KEMAJdKc8AlYb zLVx-TA@{Rv_DNE5a?V|=07lS_owvT9ks=3ETa;hi@ERsUr4g*E|TxOQB{(2Ps+tB4W6yxF}4V{ovsgZ1x!d zae6iT?mMz38}||5K(d4QE5u?uTs~m-U3GGDyssz()l7c_weygNW^%uTNX~UiHb%bp z__$1$@`{7m6vqSD;x&Nv6iZ-oc?I}E4u>7l5rTa%=O@<#-e%+eXDFd8+vf;1Uv3Ph zprqus*0d5v$(?4{{dM1%P~2+q8IM}ZLd~oyV1*Aa*6ZXj0`|#$Zpcl(#KfNu<=LG7 z=)47hMtI&^Ut2rcJ|+6YfAb{vn$wkAY2chucOR()?5v@we3h%jqx+-P&IhK?QWf%j zsrLfFun}m4eH9kaj3ftitk~T?pR3}4EmH(!@6H$;MPI>=5da%_fXQTGoAcQQ?K0?%@qYnry=BUnj?=MyW z{n7Ng?&AD(NmYOGe}f-)$c_#w?;cFl23hNSi#g!nO#isyBU9xsOm#!zjE{t7!8BGZ zld_Rq2BIULvOyw;Yy8Z27+?t-s^uxjFTz7bAAOlYtnAPMCSyAa902kfT?p{a@I? z{t#TCrVgAabeLnDgonSTiqnGK-=3+$I@JKmkt3?bR`-_-nY|rWm1Fu=K%J?Ju_yjh z4xzaKJi`^;p$3W@zvTZ#{E}oyfb41#4$7#~Wx%H!khtc0YtW%8g5lY_girJ}9Pegk zHIvkue84l?lNPzBT-ExSsC5a){PKbn`2Sm@_)0Pk3W(N%rkFs@w;9<^8<>H&Bso7h zuK=)R^W{Fng0mo{s|IUjTrLrRA3^4#Qh{_sr6i@M zt}*JB{5tGIyWi9IO(aTd{ps=R3+fv{Yry`B7|>Gt_`1~Q0T5`1Pe_3z>j3`K@xj!( zc^fY?uB%!%d~XE$=1FkgTenE-J3jqU;<3C}3I>x&lTJ65Up zr)$~ZQ;X{XcK`p|!ezdDXibHRhC$6h%K-IHx4zdb_nmY7iO2N+R=NTjzdo^Sj|x_b zF<9MfnVHtre<@QO)DVDghyO~#J!p_sz-=d4`AQCiT*aJdy-^F4?UeRr!mVp~>bZQ9 zqd$qOTX*Y>Asd1;JSL09MK1ApTs&4A%;|TqPCTu|@|d%w{-?+Q@aav`uPaeNWy2T> zyler_;qT;k?JO`an~j8kB$vxu2-0I+PCWAbO?C};qJiCW;Rw# z)~~ARjN4XX`O~(9S4|;w)0e``GW=k)vIQ<8` ze!t!<80*ZCnehOy_JKjB$;B^_{6c*j=Y!|Rq{}$4#}wdjqOZOgaAwk|YQIUZA3JhY zGsW_|MTpkadac6jcoQ%Je$v}lw@lef=6vDVUIeaISr(E0)OxXD zSFt)|J;7m%oMXb^Y8fJ~#C%jl{vZBytZp!yyhT|zZGrNF}o*irNou$D#}cq{6Ua4 z6?PHd@gwEF$!e9W1#RcjOdmh*Gonp@gC59qG~zw~<%NlN*4Xu0?XI(3<{)RD%D_PJ zk0uKnQY@o>l$9Z~tRgJN7CBW}9H9EH1s>lqN_YddVYl`8qj`2-vuuv{p5dp)3q(dnZu# zaqGO-eRtvxdClI@`}VoHRQ$186@iBUfK&bZT>#GU#Rbte^{cySOcm!BiC?5#ZzU7h z=eu|6l1*-$w;w-?F%^$8PH=HfZL1hb%3Unr!U9dG0 zceeF)b>G0kpWQ(E_pI&$&o+ZfX6wEnA@mc2*Imho|P}eZ$u1;`(G^h_U zeXw@Obr@HOUM^6DOn+RmGVE|^q;xU;AruImEWxCiKGZ*%m)>hlv)3J|w9zoJ7Ic!@ zTj*zm0Fr9*x!NVF?057uKhoWZNE9&LtCK8qA9!is9@W);SQI&wVzxZ-dLLP|bYtO~ zGuNMy-0pU;%mL3c zy$=7*;k2RkeDbFFlthaBixHc(E2iAHl?Qt)Yb6jZ5%ct2O&`h2N7{$IUG*Hg4I=Td ztJVD_W z8cm_p*Gi9Kt9Q(+qfji^MB$y9_`MLy#m#%0Xouq4aE8Z`D!xSh->fMn8u|gyIusHB zn}b~g`-qemeWOG64p*uSXP&I6ZCqu2XRGiH)dQh5P(tNLv0+TbMJB8G>A1~jlSPN@ zx<4q89s@_k8xM4A^-VQlNee$JHdUmnxa^+wrOCSSR=-SfX_4%3E{ceLySdRJSYn|z zeqBk4XZe=@PXTEM^iOlZPkkd}uf)N)JbqQlNFG|=^^}z+vq)pJ#5}qj3$`y3L+qHx z&>g4B*%Dlm*87sE-zi{iXs3&fdBVJ-tZuZ z(tQ~1loIK{Oy^e7lHl+NMz~z`MSs5+P za{3V~Z8|0!kK{&6jYIe*TfAbLu-ca3`DE_1!}XnQOuqzGXfWYgSKx(N^kBW|MU{0L;Yqi5`+(z`G6EZ>S8S&8 z%ON4C^la?ss*=S?9MjbH*~8UqUHTMR$6l8mLf8TQT*pG5?6UAs~BYqhtCJl|FQti<9nb<^D;jlS~ab3n#brPbVfhppKo#hTS8_J@KG`W4Cc*4m+#s^n)&_v!14K8ibMiZrt}B`_Q%ZkT!L@f`9<8&HGws2n*_4D z>KUgd#1r))SW7q1H5YLCRZFG*=96o&@up24c+cWY@w$fmHiS!&|(pSx~5bUKG6 zpI4WEsm1T7#`~@^J6mZCUD_6{j=9x+7!f~%Pd9Psed!dm4$0Y^Uy}d~k3J_>D~Z;) zCWs4_Y|qtBx_zy%8X$U89!L_R zE2QqR$IkjK{cQ*>EgTM2@U8onMWbnDWpy1I$f>`?`xuZY*>A4K{_;#X0Be&_OwBz2XV*h19oMlHS%~Sz;!eb31mA-saT53DHBXQ)*=-AVH(pisS+xVqcPZFzV&<^U=@@}Vkr`gA= zjEPl4EjXpmCcVCXYz!@fZ8N<;&fD5@6nV>M_h>1qDU7GF2`jIrU$zc6VY~r@K_rsM z;L>!M5ZT7r#)6v z^mVx`I7qzkA*FKH>2zYeXMGkv^k^YA(QY@-ZBr7vNFK~S6AMFLF_f$G8kDQs1}?VN zGz1S6wH_#(kHv=A_3ldjQN0}>46<&Arw>bI`V&qYVLvky%Rj`ZvVVf>0tEQ`_lGme zt-gDNakL*HODIFE8Bg1X#Or22B=!yoSy%PEA z{eCG{tLi6i1A_;f_Pgc;)3Ke}$sAsKM+q|aO4N;Br?N`wRyp6TmF;Qnh&WUpmQzpP zzF2@YxwS|P!@8LQxB9g%Hot6y2*J1CZ;95|AB=~NE0Dg0#roXdn#}b4R_(WE>X_b# zNc_?%@SN!#!+-o|pu=p}L{kf--Xx`1BtWn0Mo0e**gjx5>blU-0>zBv)L0#MT(?h4 zXYI_JjCAP}eKs&4uA|l?1*JIO-e}Tjv4jRnu50ULAnGtj6MJQDQMkK@FQLI=cdC|z zLo=sDy4R9>oGG2WBe8lpUK2TMRDzzEq{OsCi^rhF0Ci0sF0#99lv!OZ`U*iCiQ%>m z7yO9f?ua_#3XL+4!2PA-_-z&UJEQRkZMQNsP>MzXHyF7H@#CoSf4>iWO+@64<#3$t z`l>S^?S$P?oW!-=T6YvBfh{+?NY@EXnqmdv;~-bW^aakQVJrh|J8$%0A!4H_K}^j< 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 literal 46401 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 literal 155414 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±P54WXc}{A%;>-lo$|N>UEam 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⋙?GDU4y-QBA>99 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 literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_advanced_5_2.png b/docs/user/dashboard/images/lens_advanced_5_2.png new file mode 100644 index 0000000000000000000000000000000000000000..820bc3bd4dfa9e32f3ac2c64ed2d45f0c6010376 GIT binary patch literal 87132 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¨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�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

J|cNWfx8(5Fon6pQtm|I~j32%_#vJx&7@ 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%0A+b-Ch@#MJ8POFDf21^lo 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

tbNT=OO{S9b(c?n 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⃥zZT&_fh19tpub^p~f*OW8!;m{JZ(0Dno|lKtFK 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

6^2y$;L3;m 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 Nhe( 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

5R$c+9S3d*K$MqHDnpVB{ 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

8H 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 -rvCi%pAo-T4W>F&%_YfhHEeiBDw|y^ zntdi+URwGz$^Aw3Q}=a~yPWJX=?Zb*XsmMCyfz#@=Z@Y%QZ`Oisqf^0t03}izsV0e z=+BRLT2peYN0wAjT}|aCcD-y4?PqN;x%wwTi&#*E%ZWU@?QA6jzIMOfDz~V*)ON-u z3sJ;(8C=!`lw6TuHn_5oi@r3-x~$?GR-yPWC*So)=k*fxyd=vE8xaF(UDXfH`q&QI z2F37lzXN_oG5)YoFPI+zfGL43~E4tMLA& zvhN~h6ow=wlPAkpn5aSwzj9%(jDO`N`uyfM%Wv-QmfsuxEPTN7d+zd|Mj&4whN#`s ze*GoJD+p^^>R&)4(O~5x|LXI+O~kOKn89C0#^w9xX7H2(4f$SO`Lj;S%%58%!4yeK zdcS>^vh+J}mHq3_`u+gxkD?|0r_VvchQLbKVP#By8 z1D*ezeg5x7`g@W7SMW!2Q`i61JLzKqO6QL(fO~)MDs!6u+ZXKbMFJY5|80@FRPPBHsJ*R?SPc8m=z&Logn@(73j%~%ns$JIEO=O-o<{tQ z*NHIQ>q|Em^&1}9m)jt6zfQ_yDoxr`Uz7@$%32}5bm|CTj! zy(m+nhXRM4;=G5&yJxW0Ex|nBH%vg~B~$48^}Y0)Rj<}1xN+6KR_Z!RLG zlRc*!RD>{4i2m6o;O}eo@7m{&=%BxApTBFL|NqoJe_y5le3ky)>iym7{SWlx6JW#+ zNNT}C&M(`7iRMcXkQg9o>2T8Nd(G?N&&SPAIcJeBj+1YaG4M)|rm^1&ab@vVV9Cc2U9L}09 zED+9FG5KgPYZ|sn@4AwhP6=CPljzC#yIQeIV_c#?CZHi)4NR88!kNsXiXaRuiBDu6hX5c z3rgJSKONpft`B+J-?W`&75*EK)UQ=iAKt&DYiM98nA(h-a+!J3mL$q%XYbzB;y?eM zy?}r*I>;6i16`O6YLi(V$+JJ+Vj9e7;9`@ZS|=z0X~%62|D# z{MyxUfT?P#ozbQA>cesat|?*?50ZPP-A}f<3sQzo92f+?vkKaXVNRy1c1{inUbbXz z&jU?m7n(qNqSS(^BBVi|f6TD%=ekfkZE?NJw5w9D$c7Q1w#EhB(;FUfMzB6~IS2fu z01YQT*zjtID5BJ7V>@vC;b*5Y!FZ|CalqMCB;up>4Iq8Zr1h@W#}M-5=f}6wT|AF> zGJ>n`cBm$}G)Z8LNk;>Pw0+a2w7jx%zb%w)SK=HF;ZwuKZtj-{TB%RkiIg9EX~GuB zW5yV1q!*5BxdE!={5z_IVCc0G28hyMLY2%@uLnm*Maj;jhQ<`s$C;p~nsZ?(ImXe^ z(H&S(U>M}6WqqS;X8OM6{HxJ)8YIvNE9En~1Wi>;SmwxuHK5t(h4XJ0)NaMqVjBIO zy((<<7Sd_+L$8y2Zlk>xKKq1qCvFEc6NT@NZrmy{Lxjr`L2dyix5Cx9S5Rkf+$>DD z>LlPjcYA_?%C}4t8mzNN;SZ;=CRw%fl&bUnoF~^QW2nxrY*$g@9*MvD_ML32=Q?@( zH9#rmFJ{NO)!w%n&Ci2bt7~{1{OH*G1ZEm^(pSu|TICnH8h?mn2C2ipD#J&c=mN^bp;B^T0Wmv^gXf7xViHNPfw(yeQ^ctDQc-ehOe zrVK&Qo@DGBUe#^D)Qk|4)_?uOBtDLBGoJ>2q(-s`xF)S1s0piryJ3$U4bFb>pDr7# z%%=olV!LSF+K319t)SJ(7gKF(H_NXIntT$esKF-cD|M+V?j77kaoV+}+r5!Emzj55CugYv-QSxkx z^EE8ZpZ@U>bmKgvR37V^SQCg<+!^ugo74TMc-yL}^b#OcUEuc-^vh$#!94k{c=?ns66#_Ovx>h>S@RUVqLJ4 zr%7HL4m4LCW)O6by6#OH@9Wa4K60Jf73iAUe_D9FUgutGUAyU5bs`=B+TDqy-{F2- zrHqR60O|(=9{!}@`1K*46agY5{|N{)QNAK29sCGUU-|s}ci?42TlYfMSS#mx-N$$S z@G^2KG5t3)V*|Kiju<^sJY36L7pLZ<<8z)Q{1C5M8yWO0=T;mOG;X_We-fB6Cc)tD zC_eu_zPc$Z-!U6aC1P0#%m~nN(;7WA&(U~;ahOG=(g2*t@k{MVXHE*v2$s~f8Xo#x z=wIwa^spSR_k(Y8+Dq3h>e0?m;}rG)$ZktB2!x7wRUY!smPU1UFAHbD=LAu5hwHg) zSme-Sy+D~R+_CpIZ&m@hi1SQN!P5w!9_0?vio`++edhSfS6);<*R*vgQ2B9|t7WjH zPFS<)m-8}*vqGlS!xa)iN_Z1QDr;I|x96&GzP_cgAYcv5ujB4m(R*Cmu!T}TT7JDU zy8lz#8H_a=J2|%@bG&=?^k!#32_o}1iN_l_?qrw(|AhI4Dq!`odXVzvi>mWPnwvhl zRONEV4}W^yoM417mV=P~)rX&zGXSQlYU`A!ByFI(f6;#?Z$NfL(?hLacJ=5IKv5q5 zB_u`aF4gd`NCRfwecY;mAqD;xK_t{)GYY9g2XT_?Wgpz9yY^@q?-+mYVPjTw;?DO} z`|*WgqapnLDK1*;LjCpY1QaJ65{e9#gBfvw+pHwLxmq*dZhB;2gpcaES6Oc_4 z^5j#>{`un$IHoqLOyDGT90(c~cAswHFiVMl<^6rl_O6mI0#c@d^!462rQ`-Z%|~^j zVMgT2%(J8BMj#2=TJ5(6=jaUnRa%IgKFp%p8hhVovvUVphaM+84%KSUpJzZ{1<2ak zuWfe<867Rs)U+r;P1e?Hy+2omi^J9Q@L0ZsKEWRd*?zzz(?sNi5^ zZ^EJPN!`Y|c#o0T4Ec=<`(5Om+yx)#o!68T1y1;CNOib)ug9Ja(ydh4?q0bPqi1#Ez3V;xQn`Sa6#_gfaX}nB_?EYvw1z%@A-HzQE^e z+1=ofqtU3jkF}X&@ZMp#+@MFiMLDHY4jYnHixafa3xC)UPpmj7z)F?jO}fuqu-|w01k@db+Hf6xirY}K$om4{ITt1tpC!e3KoAMSnWj8)RbjaNweG7%c~*=Rx=>?ukUiI!}(1 zX?%;L6aN=ON7NvqbJ?LyyT-un$6brzY?GI?kVD7x9bwe#c$bZ-ITMib7R(XTprWB$ zck^62!3-SHm!#MUwMA}9~me?^4%6Bo|ha9fEI z=yaJmWnBt=qy~(EFJiR-uqp=Pga31I6_seXgYA9V>D)g;+ou;Jc9%k^e@wirV4Hnp z`t=5_lKYPZh@RK~*(5ld@Sm6jQ7j!hgD>qKBMMoh^MSFf z2$?S|+aAiku+f_qlU_ghn1lp3mE_qNsGP6g_VyzVHgRPpzx{~j;&}vi9~9sXv<)X2 zH^K07`*2l>on_#j(T_K#>wqU>H{|5AQPDrT0tFCh*qh#y?Dck@%gdi1lB=W~(bZXp zCoZw%?@@|+9y{r@1s@eW8|?C*CQD-P1C>ASgJ}kjGtmXg?U|n{N|D#-qZ185c>bTTaeVUV?60L} z2$6-!eluVD+0=r%v-AXeRBZXzYr@tn8oHk0d={iI{<~-2PzfBf2}?;{vb{pblPxN~ zzR4PTB8sZ4Re$*X+;#2j0@rF+r};4n{brr@BKz+--S@t2ud%E(U)&paC!&U|T|a() zv(~FOp{m#g;nP%O**e%#Bd=nR7vb*=Q2oXmSHME>{jm^yk~EjkD`6J`Zla66%g_zP z-kx{v&CkEsYKyl;4#{4)JjQsog8SyusqjHAiSay$6+)JtIUw`qz93D#zWu%)p9H+> zgXx^=Yftyw!wFZA`}YLXy=JuGIbj@Y|Kn78L}hWXjj4d-gigVyzS`@j+j7?XR%ynF4S7;a>XY>eobM>(7pKkbXKg_3Gtg zweeO;HaTQJSO_6g=@F2+jEhHf(*~fpj;3>yv88rv`!FdudyCQQB#X`jH-~1YM9*c$ zwS+vsEh=mR{v;uldxNWPEjzOrU9X;}6O?~8+r&Ay5vkKQ^8y-sG|yz?l9yM{G3HQk z0evRV1yOPwMpWJdA&+a>WJfrgKpa?{P`XyVn$M(hwrzw}=uIYr);GLy(d6Y5S63SY z&-tdJrJ;w+qFxrLE>ZpjpnFMwOb7HvFL4NOQgv-TWqavYN(hq1GdFhOPP%Az#x<}~ z+4vlqKTEFCIcnQHXav0z&0}+o!}a40hvN~02KjZ{x{ff#$Oj{ugfJj8Jx}~ep~bFt zDbHQL10~sYc4s=r+MQMRN+f;Nu+mYMrfS!!8SssrO07KizgET3A{eINsmoQnY;U!1 zH3%oEuzcz%q57vBcj@`NH^KN4dB|^`bQC+4%C)Z9SXEY-#bsO?UhgAaj683?P50G8 zLLB06Qif+I7wxz1HUrSfY((fgw#}*AN8Mz(`lxlWZfk4MxvWC_;y4(u@ml&bhUdbQ zb^;ok%CjruZmXOQ(9HY1CqiM4n|Cm!$8P)UcgzSyIb#g)!oluAlKlc}8WJ-oxpZ&a zHtc(;e?7^_6NriGA);CA(YfI=gDHf)Smdg~6y@v)zHYdrbvlAC<@8`MUBSxprlrm1 zt;4L>$%polGCc{F{6}wVii&W1E7TM8@#M2dxob&!IQZYD1$?LSd*#uQ(ei166@I3Ry1!+C8cSDM7)Om*I9Q$; zukx8}_l=83D+T9Oi(3nUPh-jr#UQC{O7sl2xZ{nA|VyJvs%r z5VRzHuMD=KJf8_yRQE1BtH)U?BLd;%TZ`<@PL*PHDj>7u`K#=Tbw5SLNaH$~QaIkzU%%wsCX=pQnlMe*= z$xfG6!2 z@V2sE;NY;xgfyhIrOB3q1X@NWR2j7ZgDi-|s;AuE&l|})l|CgUPigB@yf=}pMR1ps zfRn*oQC(m81t#AXnVuHQm^F1d1tl|~VcLtCh~MbEK%|hR_7nSiv6iHt@EOJEJy@G4*UWz12HF6ibCtt#-ciVvq7`IX(lEnTce44r3<~ZyiN72 z$6kBA7Zl&$LN{~Es1sjhUCi|l_~g)=vixGN<((GKDzy^gHGE}ArQ6Mv=ax~6<6;6Y zbNBm~FSR}zoLXhYPLC(8j8Bc50E3&Sbp|TGBB>&~CLJ|1eE7`L)bGM2hVVmO1CQ3| z{#Ab8htk%e!ar2u-Nwxu6&EQ!iN?J&6%jf{^}JqQSOUda2z)2Bgr_2FH^D5IT~?JlK%qW!c>%*&h=e;1|-F`udIxW}KY{7v8Xg zGP_6N`|*ZXq06+#41&3O_I;NQ98#Cp-b657f~YghsHD8G`+R;I0hyRI4QBvo0WNM^ zFtrtOH*ZBic&;=e*PsDyta8`@ywH~!U}K{gGdP33^ixXr=W@<|=Q|8-9EBaRu~?3s zW?JYYO9W=rD>u7(LQ!}H0Lf0%QnX-_AkUlyzYXdot!Q0mknHTG4-YfgRxPk*>+33(j9HP%bW z-+K5mj&?F`vHle~3;!<8JLgRp-wk%i;iWdAhX#ver3y|aVi)}F7Q`$%ryn*(OHz>b zv>ZzMc-7O*Q{Tw5FJGk1wO$=7wW8%-e-_79Vs{ux{JD;dqHR3;{J5pTwb>_*oyL$x z_2m0Gd`>nx8q@a8jsh~&oDuzVp5Mn4W0WLW;PYgqj(wd4KA3*9{0_ zoE`p>b^LhB{`(Vn{z(fV%Id3I9BniEe1u|tXzRs8Nuxd3KFQ(je4C^DtFXH_U)wx8 zR2KZUL>5)Y<`Nc4uqEq1Zgey`Cu`9;QhA@9C>t_LV;H8ZYtcKm-f#EVLOn37L{Q** zHp^CEXZ5Acxwi-N+kpcoso6s7eB9B?W013HE&?aUKzWrg;<`$bcImLB6<%GzSI{>g zvebE+%A~J|9Md4B zA|JAbLX-Ju2c;spx9hIYA_LYTq;sU0S=DKNU{?bV?@$tYqpW5t?a-fn)ed2C*dyAHd->z3n~|VFg)3Bc|ADo*1>U=}{$h&Y?Cqrl2aHLW$XO&}xA8LC>@s7i z*DdcGZlojWN;tO&Qc>+;SulQ1w$B0ZI5#fh(y&nlndX6ms(-cQ8t|nOdixDw{K|9UnJ?>-gF>1TXG!l> z5h3l~r@X2~Oa6oGuFh7DHDI8idHg-rEU7|836s&#^z+5O_Wn9Sn?5>9!=S=AOt_V? z2Dr_vt4v}7Lt@$zt9&B*(S0|wuX#B=Tx}R3zpjL&ks0)Yj$X|^U3s!+@iLr0zMyXN z+VM^aH~P!mwOyYJThhkj#KF$i8!b43;)Oga%vIDZvK3G+X@~Ng^t$kzSBLhwl4a6Gt{z>pO0*=TWSiQ- z($5M4sSj;USRM?{imzsr?W2}VtcK5Dky29<*F)4f-h?0UZ5JxcGSys3qh?W!hSn>t zy2e{&A{FI$BkMk?cuWPyN6Fj82Zym^y{HQcm~H&ekq8*9$#oN^JGEmmk~jQ*<{3mt z0RC+J&JxP;q=fsf!lA@oo3D8sDdT1J_fx(28ME)wt3!KLbUEk5>-i$A)vE1yBiKSR z^Xx28wFkN*2a@~yl^+o5tqO9y@WQ7{oiUqtnP-sOm-m7j9U9xbwQ{lZ; zku3isLf3&{oUMQymc;j%wkTb(Jw|J|;5%XxX0CIqS{$vl@L-)m@1BB))$Y|G*?Zw( z!UA6IU)t35m;`Q@d+Ux9II+3qZ>2jBq-EW|PD$F;xW=azl?qi(938<|Mb=a&(nfxq zjj0dGv?uo3cpi7yX$?Z&%imkoZ$$|7yxU@Om#AThF{mmf@i8oI)=6->8b8SdwT3bU(14n&k z#WHsXjO~SMTT!t6sUxJm`+A%pg?g&H5_XIRcM#5FCdl)eLEonGv%q5 z5|_gmUw=I(yw-PNRaYIpc5-~zY&?j&ZZ<5@?x}0{YWC@TC z2a-?E)lA}T)VHZoPbkqZB-YOg;uG&6J5mJRA|Ojm-SUx2B7#F+%!O5JO!NSeU%?AL z^9bIZN?v^OUC(8_LlLqvCKRaPa$!@N&Q*8u;);fWXLYoBK`;JYBnf#y=gzY8GMHQ_ zw3Gnu%kQ){75w>#^)JRmWv(@jdu_0v{Ta^fA`;NYEZ0SLK6~WKFS*h{Zv!Gg9E^vf z$bEbx4?7eNOgPlL3ZgSxpWV8KI{@Y{npgieG!{%w5J~F@$?rInWVk4;-mlrn++sz<()of5`FgOW^Rph(?7l1&mYSW}ZCw^4 zq~`Ou`dTwY6pBuG%tH#&eKq^q7X6WpRifTaKykaEo4oYm0x>`P+)*%fxj{Ad(;s1w zA9EHXz22AC;{{nY`s7&&i|o)1$ubKJIj%{oh(yc|7%>9OMF?j%3zKH95z}j*j|*;f z7H{_a+P3xDRekup6m7okWyabDOk~$L0I=PZVCb%;6a2kGh#%w|0J535PhUx-={JrW zBDgZ0>YA#R0w$ZVWlGD8@Way*W@66?yuH1~|0c;Du7I>l- z(xHIf%CRXfXgKV3I;(Kv{!(DBGMUjX<#`x_IqFZoeA=U~{h~^U_wAy7>L(~zUpX)V zmqXJ>OdCwGQ~*N(YpB4;%AjOPI=nAnFmS))Z_-Ffu-c@_ox;-zZ~N`$n8!qW>xOpX zGomE2#uuB9aJCUE_Ml?>SuCB>{_4&z26qTiJAX--vU6WNqaf7jIKJu^3-q2luta zF485XB4A8sOBD0KH9pkjTj0HG5Vr=Rzi5;`Lv}@nwvC?mjOKGK>dpd)enDESB$&aW zyMtO;Gr`x5XA9&d1qinQ`s+q3F0;~EbEwc!%Uchl&grAoJYzt)aY;W__Rd@j zvhlwLlE55B90oI#DlYp$Y;0>!>lJd6Oi2TGG|eBcHf%eWH`#YZN^)e=fsE=^^}IYa zD?-7S&12ae{P{;jRw5egLC0h0o!AmmlFhRr7-+r}q)6KN^u$r9tk!uHLc#yu!s+z#wS=;r6oZw8{$yUcW1 zRZTqvUpWcouaUErJb;-BLORW+KA$h&>zxLz1Ksl3&2qa1!$oWO`~(}~Y~_RwMz=3} zw8G|IBD#`j6|wGHpVV@2+aRvmZ)t9edf(!eS!ja>%9EN>bx&yi@Jd3bx4vm$4vU=1 z0!u#K?Wpl4h~2*Y{?+#cawUm1F0G?v+vRP;5#r^YX1u!eu}NWJ@+CgUYi_z9l+pza z+BWSJHxUt7B&srPTQ?W~c(7j2n(%O6~_eok9dw{4<} zlzo$}R~5g~X`stG#1&FLs(Rhg0DqTn;!;SB%}qFX;$8`&sTPa+8Wt#5+86|A+16b_ z=a;7J36+fU87V^V#q9;G7dV}2Wrk!feMov?hk)>~Ht?s^R0zAziAx{@EQN^Gq43SaqpwpEpWK_BrS4$~7%~HgDD<%r_f(K@_Ja|&b3L7ggRfV4F@hH8`5ybp+ zkB{}1C{_1`;R@KXOUSU>_*;T*TjRFS5@`naiD}n;ru|zmqT}ODe>13Ip7L)+;uR@@ zsajk8eq)>bJBF}j?>NMlC5DJsTb()iB{BML!=A@b$HhXS79vsD=e)|Mtyqu#DDH-n ziM?qvLr0CqT^Rh}z3|4epSx~8K_t>jhOxT9EA1NQ(TK#xg- z1Fb<7jhf|Pq5zkW4Q_T$4th`6Z;amMTE___GNjIJx71VE#!PslRH7<2SOnZ%fp{`} zM_+x2;`MXs1#Dn>Ib3x+ADzEFK1Q0xL!U1Z@Ri+4cVxOMb7?yjnJl4t!I;Lp&nu6e zHL3hgUq5Id1Dwusx1Ca6L8C*MZnVv@Jhi`Yl|B!8e)F+}3jSN=5aW42I~5k>!HSya zGftcDS}Aofar&s(P{psL0zY#du?QEt+#nBO_Y&ES>vAefuaiUBQ>z|duq5pPk)qZkB8d?rw8=sSEa22A}da$NOpNrbD?B zDVb-ZEHoeTdYOWwp7q7}e0r>?r-K8hAu*M?TN6oKp@)3k?=zqp8`72W&KI5d>R~Sn z&8ytKg&Ur4^jy1H4%k&qqtbgr$mZmRs5m3W=|%#`ob(|i>97=7o3HqSm=XTrZN-xm zp&!tYP1&9|xnw5`B-R})^m^k#1Z*XwR_#%YQ_`vpv$$SZcUh9^I*=n>aEBt0udmm`JffmNs5xe5~mnnGU0N zK@8#pXby)W?Jnf7Gk5*6!_sD8ZzA8FThY(N!*4+BoP@R#zG5#BZr60UHo&SBxb&94T4 z&3!GAxw#fFu#JMWtrrcxlCad>>y}{$eDv_jJ(*-P17l??Y_@=~?I;-;)hDamfI24pVjMHV=}UQaWZk?eK{AD=SAm-VSxW&z4Y zVHw7kAMy!PVG6)4aI}@#7?ZIKCzd|j-+hiRHHQk{17V2c`E;-#g)`&#iEaZVBWVsx zFy(OrA{@~CaDXJ4Z_@qBQ7=5EWlF5s2BR2;?Djx5cBPVVSrLHDl{eNb4S(#9d}|1L+ORT2nvq@Xlf|p z>%k_OE+c|Uv@ipb;%rk`{!wE6`%5g=o!xAZxPMgObg^}?{L;XV0rG*5C75`wt^d~0 zk%2`f>VSu)O)=KGL6KqO9kWxba{ue7Vg~XMNuZtoD7tmtJ6cRE<*kLHD!C~w$L(`a z{72u6O-Mel_5|%DE{i{g-tXC=7BJ2T`w9m1d|tz!uOCvC+0ojIZ4?8V7<^r;2G%e2 z*9{7c^{a6-Oo+iG-B76IK2vr>uBBz!;Kv?o`^II}nBJf5@N$7^x0y?8!!znDWzS8% zCN@{$ou+b1-4pV6jd=9$jD~$JxG6ZwcgUx%(SxvycpwY1cLf!*^bM+>Vnae4i#wq6 z$pcgAjlj5fPCrt+8y~np?L4@^o$D(`3OXg(cWfK49l*?<;=K*ywh5gLn7KShdBCo= zYwOjg3Rhea9?ffjYA;H?hD1;}7~EjtOA=eg4iJ7FtqXc)Y*@;FPfB3DfCGxo?!aF~ zr^)wB(|bS;N^u{wYXl=VKB!~A0ZMR<%MTRqMyw>4aaOPmn%-HHHr{OzPaG$ixfLo9 zW2ibWCEU0yxMZ;20Q2Y!^gmWYAQA+->W|za3G2`JEpq|eP;m?Z z5f&E|LBIMhzt$TuGLnERl2MYs7!c^K0~2R0@UZ;>OsWv1tQTG1r3{_WmYr2 zZuzANJ)d~GAZI%StKZ9AR%b>>^h=cfXfyDnmOfmN`Cr)`pp^f|FUZR2ohhcO5&G+4 zrJ3mGYe;|);H&@9!^$vJ-APx>D`!b^n?Bp$S_Q<5qd>elyUy$6i%=w|K-mLzgS4%4 zh(^%XV*7wT{M!K0`KNF4`%{Yy6;r*Dog?)Nlo{CMT4Dz&AZ{SLBl@Bhu?#zSYbQ8y+7b@0 z_!s}k0{Hz~JXg5EMyw{4^6O)>^>j-?jz~!+=-RakFL{@OK_GGJh!-wA0Mww62z*E^ zLkXVx$`<8__>DlYX>N;0xzIJ5FC6mCvtpkpp`_-&&G*P+CI;O%6Bc5BZ^$>y#WnF7 z{DdH~mJOBKG{PAjj zu*AOm_ep;p<|^pflo08AaZf-NOV`^6cweHx%9pxbs|mXK#;}x1uEkrd8oS?O8VV_J zWWk%lOp;wYhbP63$haw;>;+!u8%?DD+fnlmPf+Fo_SB*N{fN$Tw(AG^GCe6Ej^3n^ z26sRX>}_ok|EX4Dv3uHA@63wb(8JAB5V+e!r-7g*B zP0W0SL(n@qUX7R;hcFzf_%21Rf$X#@+)PZB{r(FZ&^!WPiX`aL5Xa5FVm$LcyyVwiTY^=-VmHK2 ziEe9(e_kN@d{*%Y9$}1!i!+1~dwU00o8kPhR~?_W%}qAqDCnH+y@v1jSaKecbTl(yA7+9J-Z6dF^Q&Uk3w?&?E#* zK0HRP+FIA!Oj(bc#1thSL2bLZ8>|D=hqllz(cFp}r0dTqon zzp1P6^c^1fJrShl=BHsa!*tLAbGKZeGH{6g`iaLFdXTDA>D(-{U$f`1y68E$chdE~ zd{{jmnO*1JqctZ(52R-A#qJ&nYY%LTvJsPi|J7h>tM}8AC-Q7{0cCOm*Ku=mEVQR1r6gCZ} z8F1Hph1mOd_CL%(&MH%_5hBikA{0|u+m{U-Qm5Q!Bx0wq<~(}7S2Nwtch%Ds;5KG( z4{s3>oya)%9v`9!#5IUHW^(Fc#f&>fLU_I}mDjHKA^P^}QcH2#74W1B=Ro*ES;?7e z^64IOxv)#$(@s)3<$E`NF1FW^Iqwa8HRHX)m|KHyZ1F~~o>h49+^}xv1P?o;hU@so zIqyZRteBC*I-lP{CJeNk_m=Q$f6lV+g_ZOoj^mxbLfj{k{pk$R6J_z+ZARyDZxG9W zE;^;>+&lzq{T0h!oplJO4S5AwqxneMU&9N!z+_tJ1RrhT%+0+Xfz;YMotjuBK4DX* zT|RfqmXbZ7a5_9ab)M|)eRw+mAw#=M$F`;`p8@7GGg^22wtP4`UTZXedjhMf-thVv zJ~NY}p;WUT$8Pk*cLwt_6D+HF-&_&8xgT&neMnW1Wl0=-vL)?Q~$fjgPoo^A*Kw7Ex4b{q=#3nCWx(iIwF zI>(`8Pmz_dlfr$-1$51Z=Ql~tG{e#&$VX+n3yh7L;O55#)%#~syk!VT6>nZk3F0n@ zNW9%>em5z{i4;4Jz0Vq#Mg`*&-ZRWhxPm457ayHJwVB3zZRYi}F6p5dagWkpuULDC zxfAx2cJu3nOJgtm89oKJUjgJ81Fl^EO#gE@2J}6()W6VxuG9p9GIFpA??ChX7eJzD zFnN^MPTzhdYI+2#(7H`U`1r!2hOXe)di|1T!)my{|Cl&|6OsSvb9nfSQI4mlN8lZb zlHc?SfE{EG&8Ig#euSy@dd*|8_ zbFfr}@?GT8$+jcXIi8cZz4R8(N&|Pp#D@F#dL(qSl`_W(Hj=AVjydmt*jS?GzF$n6 zUqE6f#RRQ(H4t?-fxK7(=eMChopZ40!jI&A%`jie_etxc51O+~`&A*mkLF(Lz>1zg z(M|%}?K|TQ-j}1-BX(F4URT#046rkwU#;7pR5u$L;sK0+vxm#31tZ@p1JPy+dLJg? zdivc&bbY(0XBfoTt2qR-yP8HC9Ni@Cb;8rik4!13Sp7m4R-|{d&+9RJw#9zw*rTA9 zuL&f`%#9vi01(j)G%laSC(|pd8|zL!p^t{7s*W8$Jy@Ht;sSS&&I4Nt+GE`w_ZQc| zvi697=Gis4#BUZ~s`cgrnDYHWM$BM!%(&pxqc%14QOh2Ep+=$uR{2u*rXmdE=BFi*VsHobvZCC{rL|Q=vB$QC3yM_jlQo2*Rr5QpR1OcUU2t0kLGH z)w{u@ukhIdz+Dglb+vy{=+ch&e?72s(g$sss)pH_p5F7adnJRchM`axIz)Oey~uEV z;imRi*hgOeDxFQp%S_i@I&R}JU_e7>yp~x(KOMb%qD4R?XxN?#y!El1HuZIOa}E3` zpU_MH5F%%@4UCvbrBdgTFi&97Ym8>^KbpShKRlf6ThlB!;n2(A5T{@?F$UDqrz@23 z-8iGG@8nKsTaiq*NAgWPc|RVJ<_33+v8~W`8*R7%_aUH;f_8E-%eBi*(6q z9w1*Ys}ZQs&3}< z)Asju1o;*>phEkN>vNf}ERJ3^+2qZ?0w#!5F;MyDXC+1RV|@<$<)HV_4mxiBPdPo= zO0wM+T_FkiR~1Zj|FHGDS08}C`r3la_niu~g6!4-6sZ!!1iVl0!VI%ZtRmCAQXyf? zPHbN}PEqU=ZXtRX>EV|yk+${g(jT*Xih?lnf(8NBt9aX>IHH>pjDVxIzqCgkhU@?X zAaz`)bC$BSoQGZo_&vNAfz$rTV;1dFeHlZe{oy$T5j;6jS^lqqF;xgXw9J2;IQ6p! z3a3xJmD6#AHDU%=_<(c%9P{PtD+yR>tnJ7ugV=juX+bxJ=cUS;&nwqMe02fg5*pVP z-_pa7N0dG-%(dUn9fzj?$@`d?XS z@=E|cX>C_|HRqWJ?F+!4wG3yjfAKxxVz1AB!X6=f?%JFrBC$O5x)hp(tlk_na$8iU z9KgT_^@2{`fyc z+s2|2LRIRKo{2$-LhDb$hdbXQn~$dnx2_TT=T|tEFl1dBDmD=BpiAcJZpxIAfLxp z3^spzLJcV8XmF)EYLbx@{^M>36++^&(bCbD> zY^MMte+HP6@bhG9(EIBp#2iAhx12!a_{e?eqmQuVHzqF7pEF9-ly7PMpnc2kj8oD@9n;&> zNWt+?OV%q?i_OL1M9+uC+xNL^^Pv;?m$?M*sk3xZX07(;H}-f4PB;sll=jn z>QX(#VMFqWOwI$*u$ch?pp)SDmhRP^*2KMdV6yY%xd|zzHiw_`*ws)q0OkH9N90lV z=0>)(w|&EQc^TCB>hfai9_sMJ?9Y`11K8Zz-TtlS%NeF(CCFToE!xTL(f)FBd%v7q z=bu1Zf2EKVGHf1m+O29--0FE~`&nBD=TU536{$5>2jl@NK`e*1JyAk!lvHmn>#= z?Jxn04X7x6QBf3TIy(Qt`Rp#BV9}cE7l1}6;|n`zgeseBsd10J%wma#11T^-Gf0->ogmM=3t2)eEl-{43F1vI<0WuUm(YRCQ(EhyjL&4+N(ZT9@ zAM&*84u3G%JvJ49jmMJuDId61#v*)Gsh_d_X|(P=n^!Q!1q!_Amh}I))%kx4Uj>8_ zim7}(0~DTt-Y7Ue2%lH?ib|)-tt=YSzXxQPRgWVD=IlvN57KG3$|o<;;kXT&3IIfA zy}FO*d-EVZc4z#ph5mv0HS?ZLq@}CjR5dM$gC4kZdd|Bmj(KO^lmf0?1D8Z?xV&># zytBs!_I)u?BKKS;wIazy=BlTU%6zU`SkCh-C!hqms%q0a;4Q@MyWIQvX4D^o4c$@= zRUu^}y|~hYi6CLmmnDb$(6bQc=3`?Y1C`VKdl-yWcg-=-sbmt7MX_Nq;E9sVs49RN zP1s!3mpJ+sFq#Lp!%|`W8hn1(#Pl-&+SWW-Ry9+nrc{w&X4L0$C857LCqaMYihg3( zNFrpa4aaTr8IYSYO8mz;Q5x|Fl%V-NQ?ZjS9_!lDC{DkNDRxMac6x9Ddw1 zhmoY%6YVKmpKRwN8-KnQ+z)%%j-6sRH`zF~`(46j{yI1aUM}Z7qGbHKa}qIQ-?XBw z^R}ncWQk;E`d->TK0bJCuw{V=vQ@+?l9t3xKZzG+Lib6n77%_aMm=LXbGaC1*gmub z2W8^VnT9_fX)g;AY25+FmWHZqeJ$|%d?3gEPT2+&3OE;0Lq#HhWm*h^j`JtUi~zC* zi`ZPbmmy5S)s+6j=nmwwUx1mdH50|JP!N?CLjVA~3$U%(R(D+@ZJ!K_BRTKTi83-M#e{{i)-LHhsxI|u&EG)CgL|wx19=J=cI(gR_ z_st#$Ri|V*>Hj9@Zv7WIcOr1DKmGOV{9E`aIFi73@U^1QSxu8$nbV~wxy?E%&9fI9 zU{xeTXNrDuJ>d$9@}~sORP0G(bRRP#6`MN0EGn!4#1|1yK-P$WUkB0TP^LUPJ27_h%ji20EI z;kHv>x@`uyH7Z&)^wckJnb2Trv;CiAv5=PdciyWbZ3;A{4>|u;=L=1#)c5H$WW5$U z4BncXSLE|~^`&KDuW_ICt5KBD&QjygbK;3ii4SZXo+C--Y353xlL(0HN>4Xce<(w? zBN|d82Fz{yReR90=o(q`2$}$F%?HT7(9zVz-F!ejFka8&M9M|}RqFQXj`330hZ+T* zxo<4ZYmM@$ax527aInGt9cj6hYU& zs%uQn`m;{oQXl`E15-`S!}~Mu9VIzaKD8(+xq9i{7< zpG#?;($VEbY{gb*g8ptdy0X)sH?=8Q+8vp@ks5_Z(SfaF-?+{Lr06=0Idv7EFOOgr zXSN5(n@)}k-yWauqNyW1({CiKmq0QtBQKfm3FQs7DjzfMoW90mZQ*O1skS91{oswp zhA1m#H2ar#32CU{hu;;=Xu}$-x$HJ=DVPD26UqUhQ460NDusnMqXX3_Y*wH!LH-uy zTcX$CN+w}8m}+SbaWYz^>&;82u-cxf9-uJ43A`1N|L_*+fA;E%MpsH3E#NH*|DCr0 z%3y`lV%!)x{vdCk^-hFVico-tEvynP5OC+D_c^{R`v6g~tshze{dAA`ai_eyDO(8HIa1bZiR+-y^{g~z2M+*$UYp3=o@_U|+ys>UyqyZ(J$L%xN%4r5w}>Ut?1EBf>r5^<_w)^231o+K0{?fF9=?U{2$iP#}7QZ z^LQY4U!D9jf1bU*GMn$ww>ep5@C5c=k+T^>56lxOfOmt9&c}bBf%n7znCOrDX0As7 z>ggilUqzPa3^5Z!@PUrSG#uCc4~K{M|K;!ib?v;tAAhpQ{J~2v!6zB9(O(k@_9pHH z>?c?4|9l)(^He3bBbl}wP2AyRFR}-c7iG4Y2UIH+EkI;)Qaa#+#s{rPW`O+59q?JZ zF1?`R#)EVKQF2HKb3^57U+dlu4&WaK66nu>{kTe(p(P!~zq;HX9_v`J+4)@ppPzb% z09}{mc>Es`cGvH95J2G6Ht!t3Q6ked**;(F^cto(!K1auHgg^g zT#N;VZclG!b9~MO^(Fuv2k>{6x`UU#$8ibLn&i9~%)j~ybVSGJ;U9Sn=Ow%*N?VTZ z0FKse&L)1NE}8fGuOiV)G*b#S<}%~)^{?$(T=xBJ3poJ*_}(0d%;VN`pU8uZZHN- zC^8BdA}_0F3Y&^;VIv0!0J>C<^S^l)031>q$U`1^FKU5zf;2eUV3kRI>g#n`+aiX% zl?G(bJ{VyC;-lGm9c}1~k)?Cw^m6s(a_Fra#W$Gv0-;88fXhcI&(E|C%mXq74tJ#g zZ@6Cp1Dn&T{MG-Bj0P#aK_g9pas=>zi+|u(UI)oOE$OnPy3SP>0;g^|<^!PWiHAiq z0Qh&Ry~rr>8`jt-H|RT%Jaxv%Z?H;!C_&89BwvL zrKpW<_2e0Rf%u$^Pw1A^Y*$PgFyZe}^a7YkTXz3p{*I(Ke+3nq(W3E-J-;`~jQn7z z>}nHAq`YB=(u(PMP33k|_uxc>nQeEBIO+?Fo`A-qHU8h|H)p(W z46=X24`v*o@q>E8zblaO>ELpW#+_Wj?HDDQnU5hm=6x&`pHpNjt3=d%1Q7mAHvLnM zt`qCsGw1s*Oh=zQmH=bR0-X5&xLUcpN)$1e$leZey^yS#^(iZ9wqk{$>>J(~TCEP7 zr~CG#d+glbY=Ey;pU`ibN0yH`08o7ZOw~^Imi}+R#8=YjXGr>kGDoDgv(z42k#m|A zr+I9!1EMj>WRLy1-DdZrn+^wWyUxD8J-rxy_>)sE&;(ZtFdt9 zcwx|@2kfv61{1J8>iL!mG%md_wo$H!RW&oGo27OQhx0T}5plu908k##*BOlF{Hqml zpslF4_`i-@3fEQs1aui;s{^1Iv!o#kOuv7Tk(t_OZ8keYRumoTTHdrCH7nKb-fTeU zICuY7yIqb=o7<&Ocz107Xoeg)a~;FAB2HbG1w+N#v*p7h6JYbj9d6WRQF<-tCz%v; zrT#|LI|Qfx6+;FLB;cdg9}RTQ^c$;5&s>p`VdIs~BXLQmY&GC~wu1&zhXI4z8`>`V`N4 zkFO@vl0*nPJzVHglziS_E$e#wj84=EYf*xDsxa_jYA)viRBJc4myAZKj$MdqyFW(B zH$9^x@D^;NeAP(jn|jhhxKeYQ#)7V?lE;Su^VWT{1Q$JO`g@C`Ke@=wiu$cNKsz(N z)^?1EGE%O2m67~PA$QW5AZrHjC;RCdOSCArBUu6Nn%OhjS6|M@J~N$V(G066m_-zL z*beBz(#EJkJ2!gGVvaw56Ryv+wAu#rZ!$BKX0dS>wCm^s0uUP#NPLRRLZuPA%Gv9G5HZ^qD<$Y z?!RbQ57qCK4mdvs1yCF*Ad}#Wi@;(-BB`vpHc7v- zWR)N%z_VOc^RC1Liv5)9VD<(=?H(lfSmN5l_Pk6>PY6%Oxx3T;Jps4p>tylB6OG!f zm6}oW$24#+%Z=IK8J)G+RYj%hdoL@ZOJou8$s5c>SPGUv$bPz-2!_<`i77m9YKz z2#4EqD08B7`adx1|M8KL=>{OfSTi~2)g3H+T6qZbk%PInyKo#0r1Fn~F3#l|)+cDH zhi_TyT=~Gv{-u-KX*ADoIvG5xhNcVZK<1dtL3--Kw#jMWANSSO)NIXDIr1YDod>n# zd;j^d6~qizi?xmhYUW{a8uPk{ihVUTm2DbS-KpE$*>_juZ<>%w;?QC#8Jb#A%{Lii z^p`L~l^*Q?`2XaiPJ^g@1=JkpM{U_+k1&x+^oK=x7M7u z<*flYa{c^|Wy$`L2#}$LC7%iq`09_;$wiE^wi`5jH>>vE^YmfMwoo1h=6g~@H)N-2_^LBtxOI2;Z1`Hy$}=OY)69~r0FR0x%~8E?H3w8k3N<#}m( zbDs6Hw=MiAa!2Jb#ir7(Vrqnl2#BGvq;>pjdLI8JkkP(|Ud8DTf5=7E)ct_DJn}kr z1aE&p71!6#Tsp5lpE03<*+cY7LWskAMKJ&IefY(TiDnH)iJY|UG}|XCB%g;=y`A3S zus4Sp!I;k{Ewpb1t@fDy;>ig$$^un||NdA&Hc4P%j1J8|z5jhX3R{7+tgQ195VoFG zSI!UB*4^fv?>nTq{^<^0eZ(Bo;L0iNH5*7ZO%sHweDp{iP5MQ5LR2!m0CJ#zz9J(w zdI3oPm=T@WfYkrPRYKp^uRry>NBAqMQd#Db|LdH?Jv8CxKGW|vy^84mHU8zFE}g;g z`;3TNH+cIO>X#ph3>x#k`lojs&P4JCm^ku}kHP$hgSZ%eD{}mb92v-d~Ebpu7Cf&+3%?D>@X&6BaxD=idNQJXtJ&4OMUWr-h7d z#R4>${`tzELx26dWZFEVXMbCeXb76Hqxpw1CL$8~&;JVeZk+5dLSKpe)hDLET(FYw z7pLiu>(|jOr*8ktV_58>wGU$MNc)m=_DDyijV&5sT)V*>^v!?YrFv)ItvX8Pa!mQF zJP4?-Oar8mdpEHvbpet_{3iG<-t`R;Q{a~qMDwp!UI2C!=l!QmK_MKX@Rtj|6ICGs zY+QllNZ*yuXZc$6C& z3FZUIrhpQ~flFQQcw8rm-W17td32REsX@ZkvB`TTh)4rh_mt3n|29&#u+Py$QM{Bx z$aTvd0=0~c+Dk&F=bT@h!Yu6bY}DbJHp7n&>qF#$NPV9FvZcv&F)UbsHNcB-C-;Pf~ZJ|iEZn~N; z$wu?LA`v;wJRy|&i3G|hrwC!_-F`sExfMd?Q;nQ;vbRI*uf*$*)Vpqfawm&x_-No` z>sz1r4C2&a?&{rMtTk=Ee?T^BTW1>YYC{sijI&5PSg#bSM~b3&aYq1wVqe+Wj4< z;97?ts@zby_fu^PZwK&%Tml&q9!k=%=;Ds+Y&2J{L^^OaU58u>-si5GBl!9IH z%yCVx=dYF__`u+!frJu|)%APisHmqZx@1?=tD6(!^BPO(wn10}4$w%5&*gZt%gU>5 zJ~(HC%k~CLJZMnGTiwSQqC7o$(J}@0tS#M{T+BSHnrWb#jWC~u58})SvI9$$CYC5 z?XDUrc!iRS_I7`A^;(;UuSW3Z8fs^%e90?qj8m^=dqXGByv~!y(RGGc4=jU{%ArER zG+mUB)_K>;SXyvu5n2nBHZQf`kF&Pa9<4-)Xf@4*3_|xNX(R1-F6a%Czq);`&_EGX z)r|8DA*b*>&a=OM2Jc7hfHLMetr}d{Kh5IxB!JFnhVB7pUH*n&y3!BdqVgsB^MaHx zJAL25WJ?_8v8JaZh~&SW@z*e4z7$P6874rV&>L9e*FrBt`~(3hh*POU1DLizPXT$c z7Ne)^L|@>$TRwo!sN&f)uCw*KXMvP8un``(J6t=U`yoNg(oV?M1wM!!mnG=SE|6CM zu{FxL#?)D>gY>`O*MNyGjQsMN< z%Mm8~nI$D*WRMxn&Y~SP7}9jPaeF2!zy$!!$H7rU***(GDJB)bytXzTZQt!i@fZjA z+S}j?lwW2PEXBUXUQJQ+e%qZsX4{5K7cj(iiWk6j>DEViTsNB{jn_;2w*BsUgP_rX zvXRD?^19H`vXedqDXm3@U5%dWPlR+(D$y_;wUDhJO1w8cjQ!@#Gi!qZvspS!eZZ@Q zmE(kk%kcB$d)f9dL;B$*p2o-Mt~0}!L+cYA@f`-~bErOe3Eq!$orurA@rOY5fI2z& zx?*jY1;ah>kxuW!4{mKNzEA^LoFAob+B#57?DxTzyKjGNq69AQiiFv(-|piiBvOB( z=(Vntqr=| z@e}*zeK9^b&U;|)6gQOHvpMiKYs*o*@Zuh6IyTY!(#plJKq7eww^aHsEdbxcw%vZI zWDhChat(c77~DGj`{&}l@_gcooff3s#A6P;qObYjN#+{3wJ#rgyf_oeAS>rO7*%5$ zuiu6og%F@}VZn(bSYmCT;efup`ew!3sg;EH`&r=C{8ZM8ej?Ycj~LdJtd*IrAJZFn z=RM0vn*wWza_wpc%&O~(icb8~8|)iT(&66oY{-`D;KLd<&yrYH&n=&@wP2CUV&VPs zzN96hYA?H_@wm@0e6E)uH4%rx+`Ic=!hY;1DN?Jo39|gLM5C$Y_lG;64 z07a^=u4`hx`^K>jqLWu^G0^SP6l6MFy?FOyEyR6`W?~==^~pc5AVJqBP2p`@CBYcI z@cDwbS9%+WdA#|77u>cg-EyX7TRmk84`%xVqBTR$MRgtS1o1lc)fc^|JkGhYfN^vH zjr@5g-ram@77KTs47gkg8p<6GC%nB=)4+@jY#BaF>;QE7c=FQ?Xx2bSHNtL3rhKP2 z{5LvE+-B{md<8~?uXxz2EcdY^+pDtr!iX6J8y;j z42p2;lg=nBI&;bS*nNJOzva@KAeS-xTm-hV_xh3ELbG;KU2w+yWqg%<;&eNs8Ww7< z@4VeyV^t-^t7(r5^GO-79#3Q6(Z3qwWIe9^QU7eyiuDj?#Kd}pcc!L3?_ersDsC)C zIVoq;c?&zv!25y{yj)H=U7c?&mOpzresOC=PX5F{FdCSK6$>8pvMy?Hzf%e|F}Qz^4n@o(K-Sk;xA;istLRT zltDTrrhv&I{~WH5g})P6&!#~qkmH1fVptdW81?V-03DLoo+}M3B6{vUh9WpGk!qL5 zo5gj7#QGm<5C-l8INDDNwMtOEWSP^^XH?~rX_`_Mbv9Ke(soA)b+Ze*75YCv`#r_h zYwH(#f7YeLvg40)EVfy#7;)5VZGV>JJMnh?MRXyVI3PCtnY6@v>sIs=g3Vcv9ZwwT zd8aIP?9jqoMHh@WDaWm1xCh?n>j)o1Tcoh-QAKAD@k8hO!=tmt1?7P6OeK}Y5aE3f z-ssXK#UrXODJ2`4-{*|mfF8$jYhS72!q;@-TNX!!yz`gepvAdL_L8WqKjXO}Yiu|-_2fXoflDyMQbkVJ9z zEJIc@U#tqmqLjRiFy&<|nqEAbH`j=Pwu@%n+I{lyj*FJ1JE8x6l%(mi+e9U@FL-=_ z9_vD2ZPDR+TmjN;Ua()^?NWaZ*Wy{Tf1=N(S^P{-7y-}Q8xgfy7haN=T*>du1iZGw z5L-+P`C2EeeS*V1FLPU6a0RSM`nId*#=;rnqRq}fX{s)Mj7tr*Zabe6{6~PFp>u>Mn6ncrKK@S(~@CRU!g`eo42eN zv|Yz!*a{ILy@(4%)smzoRXc>6Kl?a2Hr=FVNdl?eOZi;tAEy|0qIw9~Z^f<71DJFl zzZHv^pMYa~_1MKC^xfBSc`Ys@T6`@sbSo%jGnmVJ9~PA@c794$P_Fnc%eDWb8&a2a zH{mNTg~&J+9NFQU20)>N-C*o0HH#ypf-5So?^M>a|h~+}F89V3{4|L_eQ0 z4yq`=+D&fAvs~>^pl}+v$1w2~9P?qq(Z5E)TlWGRI?q;7))DqN)g1{`9gk>b!+4%> zd{SC52+Mw=tQLJN+Ng%&ZeN`!eI6QcUIKQ8wiFwN;LSD|&YcG(FGO{G0>DlMa8JYq z4}|!x&Dxg!cj0ifN+B4AP3e3kWH%(rD*ZZXC_{wuWkxVJ)eE|Smv z9i&q}*NS9Cj-_P|>eFe zGI%b+i?gHZ>#O5*IA_;2M+FZjiaOyMB%YB@2W=-I0U)id?GY4x2ov(3DmYz&OrQH*WFRX%J1Py0* z&j6yw`!1p=x^c?!*KzmZzEM=p(ahDFAEI9#F4w2*9JDEq(}fk%33=|W@Se+i$xwM@ zFmLYUs9fg1-G;h(kt?p~L2mKXt>LS_CQkx_W&Geu(y3G>N85JO+XIwlTEtYU6c5gJ18u-Aa>!&>@->!dW z&1^bL0w*mRO@iWCffp$ZIqZ+M=MFED%(h|;&Zwur+Z)`_r- zgc%8qkovy6&8m6{`M#UXv-X_|*81YLoHx>BUVpT|W3#j(nN;`L6>EcMR#L?o3O1px z>9elO$q74!Z^A-Kcb;!<4APehXC*1b-Ci*zM#+zbKfmL7*&F3)B*n^WyX}LLtK5bG z*`5(o18D;uKN}3B+B9Y#z;@QKM-MyrROo~Ma;Q1B0pEMs2UaNjtOak@7oWG?X&_=g znft_Ul0+><$KMq`KUPYLqR28{I!IRM;Y2VB&c^hVqe5CoqbXl7A zZt=2-z#~D%z6@gpCtf9iazraHUO1f(-#&wmT1T%LD2ATG>`k_om+-5kQn4hBMwWY6 zb_RUdE-ZM%^Fh8IOU$U_Y3U~fqs1W)i%XGrvjey_uR0SHL%-$`7nCgACZyA?+ih_Z z6tf!e!OgXH*v00>DY%u(m7RDC;vf22{Kmjry391myiTu&num*p*7k=1aWWJf-*9`G zW5}i&Td`FRJY2D_J&}Jk^jsNQJ6-u?F6LXw(6>er8U)nV4YXkXb4+w4+4|s!^WifH zk#+OM&TYk?SrB)&6&R=H!F1E(wSI27}9t8-WacX&P~e|s96 za&tm7ZNK`#$CMR~id&Y^+F41RX~)u8wK8dpUaJvWJM}5%n2)F$T8%olH$eDxCiBcq z@0Oo3JolcS&LjifclPnd1Olh}F5VrduRdl^G(_${;rnQzR?#PGL(QHSXwS-Ll)PwP zy?bgW3Ra=gI27Ylvz(Ye)N2%WWqv+;z)&Yb)Mxq5fV1o=vObED@ruaOnxv?u-p?(} zhAXiwX;a<#P|x@v+5r30Bgcxgml1W@#Ih)7|+)1?_;Sx<|vONU*flZ=g4 zJ=Cf2c=kfox6c-JQi*aBx5vhCMh;)X;Ki;)TCzj=WV=sNYvBVoO8CIY@)*cXxvbrk zOK_Bq!4&+l8w%x=R(5gavgiR1ak)xhQ^weTY0!oj#u_Vg6L;3SrDL_Bep;OyX5n;O z*n0W#z~{WApB;)~{xe{z2RoSCEwFjrbQh{p!fP!%H=~Grw-?On)rNcq?w(c>551Hx z-VANf7l`JQZChyJhdg^BpFeE}@jR7c-B8sV=G?I2mB{H0(+@uGbS#K6RE0`=^Jqim zy}zD5V92&32(Y|qDRLl`*6t&a}m zr2`oFI%>b~QVDvSo8#*Y_e6+ZLseelbbFgv@h*KZ%lV1UA`;E5>Sjj*2{+b*iob^BeQF=-jB}9IWeDsSCeY8Z+@~ zb{1vrIUk)CiYnqnTrNpoElSn`o{-L=BIN=V5CuA9-B?R6Qleqfbvzts)^qHCjR6n8 z6YfFtgN@;BJfE{1>g%VDoMd60AB4PpNSxA(>P~uczECg`ybdv>;{pHYWf6PV)3?Xo4ao>@4AV z8|S4fif9;&^fkU+JDo`Ptx##Gf7FJT*#@P#x|ic!A267F<(?JJ$p_(J2+YE5{lyY zS$)?yVRwicU%tsdYt*;o~T(xQ$q~T(|US-5}cKV*_ z`BG8{sn-FyTnq7&gE1uL3B2a9-o^H8U4=b_<%j<1tK+dMTUGk8+~K|;x##8is2u%Q zsRAy^_Tj&LIe!F?ib0OEEZAuy&_uXT0LPv;qnOpCg+lwZSFk!euLJ z%e+4xzOrAg%T4<>Nv_b3FR{_SOxj(=*BjnYP!Un(MwCTB;Blk%=~MQ1>yN?J3@7y@ z7#R-FAa=Hd-rEnp7v(Q0YluIQg9p}c>Vqd-^#-bRWijty_zi)cwOSa}J`}h`NO1ix zUw$9xMa{)h7m=A_s{X@?uZC08O?IN3XQ?@0O|Ao$Y8j#>Nw{L0S2}^xdaRhnV zb}iu}(;ID51-EY#U_Q))cs3T+HZZGn5*NV;4o!T_`|ActqvIADO`dA=bwNe)uGlgvfk`>lj4L-YVA`4|(QEz5W|UyPK~Q@G zjLo;UE<=$Gk$SW`7{>U{oG}mE4NCeva9(7BFcb@~{Phbguk{Q%Nm_sC9s1^NTXCvD zwLmK=iibqvd6)EzI&bh4@~WkD)!>3gGz9Ru#3AfZ(EzqVNYa-tOJuf>5_qdUt;mbsN3k~skf-{M6v1!)}F24Ul*7nB-p8vv32s3=TrI0 zATF{uOZ!9&E9^1Rj}^kXVXeLkBHby2PQt2j&y9;Rv%AuK4+&lG$5TJ%9D}g zcbuf$DkTZck>#oCB6Q)4KF19I^ZR+y87 zLpa;JL&9<=s>8L5M$-OIZb9IH=z&^yT5(z>d+Wsme??vUw(_fTn&f(nDQg$B#F`O8{=^6@t>y9U@U1ul>xRI-CLYo`3BwL5^c?diH#JzRrR@gjC!>Oz9 z1yvoA1adp#5$A*;mP!{*H8zT8Q)oJ`g>+5Vb(bFxv2$GWMZtSj_^0R3bAKI^Uj80G(8XAFbjP zpY~*aa}g_)z%I>C{xOWO3<{bnsoCI^HAp=4$KY`{gy-kCTMsa=GxRAdi7kYj(H!FM z8Et&V!tKFNq4W-1nS`YfoYOferS5bVr0TpF`$0zi?!^aNC%Z8n2l+ht)hN_;A_{^5 zg)bb@r_V6VWA_rSVZ3&aCqU3X!?O&A&)?;sRTWrNxK&Q`t|N%#`V;@TXe6zoG?%O% zo+Gbf_CDguCcq^ZW*A_5{*5n{S#}wF)_0%u{Egzex=cmu^D(KqquAlH7XAs{palD9 z!&tXMqjs4yw)MLm;q%)d4ni)BXLSsOiXkSenyVMbF>V^2*fr_{R(2D`{Q5(Uz|P&E z6%rJ}xT_y_n^jq675-_B0E@8zvhX!(D7{tAQTR3?w~N_^Y;CZLlA^+xj62U9haa=C z%7!0}hdFrZy+!;nBlyn$=xo_kOUJS)Sj;dmbclGJ?jPpm(SiCZ(~ z-({}8)Sj7Ba3s=0r4Jb9b$fy~_uIpv$gSHe)TiA|iHx_-Cd$b12Jpv>hDhux&6AFs zlsnU6S}esedG7ymA8WbwH)hJPLf`%6OEjG*Bb!cf7d1o;_!@bO{bXszP^{RW?F`y7 zxM>^hGR=08A~D_!gqhx!1o)PFv6l2tJmG@DL+kefg?^xZh6%#6>6=fwJ06oduP+E5 zwcC4ve!eKfC5fQT5;LqS!}eTrzN@HggYUQ;({u)=xk1aRD?dsnKzfEtvD$pRXg$9k zHS`>-YlImB7s4dK;vr3{{iN8mLI3XYp_HW6jzi!JJ+nw_tov(Td5`bDmcW7~*q!mo z4zqu+PUhz4SU>Lh8cxc3NE1moPFYqkFu)1P=T;5BPyQJnh0z< z)~Y^xaAO(9*Bi<4@iuLw`YPLdYy8Z&dC5go#@%B>le$bD(V>(k>~A&*8B#O*bH)U` z2!$8D-e zS)j5Q=F6#pm`M8{QW$(UMlF5)!=8VSkyzxHat^fSxS=)}7YS~oDB~!nGOFounrGKA zkrZ&Q?=F4IXH9#fvj?Xpuj>Pz%ji~}&#>eztX$*WYiE+jl8Fdmd5e4D*V}h(3YBJo zpo8XAct0ZM+~e`Adu2CgsXw-P85?4gk0y}X_wiNJ7{%SE^CNUfHY;({wyH&|7qu&V zG|AHL^}sgi4Zf~ky=VbW!lrRN!3}#GdL4_;kl2pwqt%P>e!Z=^5QuZ<)_f;D=xnT) zFdk0O%9u3-Kt5m#{=7{~M$grAwnY1PhnBpbr|$dEk6BZ?Zg&D+ky2K;)scbA4=iowrjLZ#eve3%n2Yme-Pxky$ zmTZX2t4vYQ)b5oO_$7LUAbUlc?ImT*^_vJc{?YIcOWw^krTI(SNrLbVX_rlEFNLub z!mo!sVuCDQh~x%NmYmuwyL`h~KjGL9LLztP!ib?v7)^?mZ{PS9jVdF%EIpfrL%0?C zgF_?FD2&Jt%`vUSG|BB5RJ5nb3-NL#m)F|5UH5Vn?*}JcBcV@QZ znK~F8U35~i-)`_ z8x3~>c6b}}6$Voo{%%_p_1cGoVdqOC>Z@)__vQSW^QLygFyH4-0bI zkPUYq7#k8}R6dweg-XUPGc>B$h8o5SOyL|w1`!Cj4y-5!#Qkcq)yDBc^=@h(!9{)V^hfnc-UcWRss zO1_9&*DW;Tl>*!DN{dDKRDYGa zk-iP+%~a7*>3M=6a%=R$u;z&nBE>;q4r!_x$|n31(yfp(%^K8OUGG zTi_fPZ6*l4nYBfI`RJh}-Gc$rgA}jq(7RL~in~ke<fwk2FsI80iu&Myr0m1*<061#hC<-2`qyK zZN=Ar%%KvnTNhPfvvAi6yfSA>XetBchg!NH?YRK}i#u;{;y0 z^pbZ&MG1))P6G@dD>@G@S-B+h$38NoNyS!4cIdWBYaNJnq1Rp;X18xbBv?ClWLhFW zxWkeM1#g7jbzBo8@QSEATNtZ$594P^3a3VSC6XdPDtfoQASzAxnZ8aWZbQ*TKu*L# zT=PxSFiw%}efxsjJhWVK#h%mV(^=Z!vNpHd{vyc{{P?>>|I|g*fx;*NGJ64ZQd{+j%@dSnN^PIP~^@a56`UIuK!I zq?!juALMDi@WfeBq%C{MzK83Ze*4j@`S6nw+k{PysdQFdQNfgqRD{TrK+eFejvs|N z{Oq(o;$Gq56HiGd5+jeI`B>X<@W1}dqo87ODhNB&ghcQ0nRYHZPB3geHG1zjE+H9| zO-iFkc$4rUpCT54!}b%ZPWCdkCz20i2H;UbmaI;nx)h?U0~bh8vbqQLp97zF(k1;Y zn9bv}$Rkc{HH(LrEl*=5IuOvQTBnWxy4ARkdBh$(%==0LA`j7^XmU7d7uycDX6bzu zOudkH(4&fc{{e^LL@3O5kK%DY9$q2VuFB2q;;6IfPdRc+dSD}t$xnN?9CvGXV;c9J zDRB@FKV2;AxuV#3ZGD}4qs$kc!NeJD|1lte()H!bBu3s*MHGbcU-(3T)#k))jL6YfYpg*nd!pTnjAZk)S3 zG^8#a6Y8X9L$?+gI?T!q?`are>a--SJyQfu^_UpeL$2}-{C%GTyVlrDM{x%k3%g#G zJ-0oIjrC9+Sx3ryuVDqYI$ELY$z;86TNY-nq_s}^_Q$$Pu@9RybvM%Rn3XzlKbm8q zYyzE@d&UBmHgAslU<7-R8ueDHW->JdAj0WM0d3gWk#RT>_t6CVaMzto0l|7b(0>+xHlX(NlEa6!s8(Tv6eez$D))DoGVOx5 zBKL);?oP-iJQ(YG7a6rB9AHf@xLV;Q(8{=S>(BuBf0BB!XLnI{8=tV)@oW6l3l0ra z1<9OS&kS@L<_WZ8hyq9r4*$Q#-a0DEE_xd_5Qc}EVU+Gx5RmQ;krGirI;4~uIwXXl zQ$e~LDV6RNknS8hhMb{c7~&hA=eO4Tz3=zx`dIfr+)I|{-uvupUuT~kAevet(wQI2 zcc}0bW&~Ygw~RiLBWLj>ev1P2)KJd#UTq7DgjMKdw5Xbs@A*iR*fs(3dHlOng8W%Q0N5kDiA&8#gtw+!g4#Z$3Xx#HI`A1O^42rLaYqC~ zDKRzlZoT_=W?_q zxz?;)Uo$$Dh;lqG$uy(TSaQ)eFec>Ofnf5V{3i^huNj0yBfW1J z7n7hB=HFx=_7#95i0{RoY|@2+sUw8aReq{HYkzu_79}t9BDmALPar{8XZ}cqEba-g z^(j$-YO39fB&%Z7NaRPr*piT9qHMc9164S9*%NXs%Mp_d_z{w03LDU%kFAtrsfky4>cX1g*MybeOJ~q(~ts#beiQJz~K!9%CsS={yT3lsntelFH zitlN4qZ5%-?{#oA=%d2D^b(I*A}K5|DzVob^H9F?iH@OSi?@Wa?nfP?Zlbn+h|e>@ zuBp-h_fIZB+PUl>;qqowcd6F_ytp-?dYao!(uHra0s$I?u$FXWNYpPn8^$!_ICM(P z6ywu}wyA(T6s=RW*n%9r7*5-KC2B;mD?AC{R7M&!1_~B^v&&F5ERx)vxbJ7iy8J3= zny^3)mH{Y@B*W1#NnILounj@GON{jmEJwI(rotC&r}E#7PLP7`A#6iLKn-7zbWd10 z4s5{8Un|Wz*YR-{oN)z(u{ax&biP_jSVV*~5W2Uy;QbJox}WucQ=`a(Or{2YL3D)9 z>5$}Ko()1zBEu7s$%(AK77GK!?L@kV4kJ?Cjw~V@t%NwbSsC!K3FEk0N*Ui- zeS{r2KHwh^=bwiX4<$aod$3o>GQAQD^~0qnCG3StM1r&Rv1mhZM3b!UvQ7$p&Tx!; ze56%sXin(XeeNZ07_{Z=uaVBxn>x-DaEN%}q^xhw5TU5b^jpHNZg~_RUzoNR0F6?d z)ivS{dwzmIXK-t{cO8Z~F4eOSotZO6S+4yy7-(ak z5cVvZ_nKOCEGKZ(SGUelTUaXuSLQgrmA(-w*@9(vJ*t>iMCJYvuHW)rp0k4d^ zV(OY|Tgsvrd_Q0ZJ5Q#d1~~A7(W#_Lu`RiCM%$++;z(S&`gU`>K!Q{0*ZP>jDr>y> z0#dtgizn@xOV|=#oiPv@?-QNbezS_r>0FPxSculD!R4$gy6=NQcL=#pe>+obd3RCC z1TWX_>~Erc`ix}{$+<)FC_yy<2f6+ME!dXE!bNb~V(ms&RbMIHk5TNz`tba98=LvC zruT*3^9|&x>IIw(^2FsAO;fsHLYomRX>YDJd7{`{C+aZ9o7RRt8$t$8XKCpyC8LLP zetnYc=bf~NwiWyZdqa*DxN14^Wa~kVPiBlQm{nH)d{xdTRH#&CYZM{GuIQ86(%Rsl z*&nDld>+ow~9U-RZ>=k{9K#$+Nzt&1>m# zm)5jW=vixk=Yz(=hHm=i)pfo!Nvy&E?w5DrD*F8(Ov3iXK)TX`HSi^md+1LQHT*^? z?y#8Sca$$~ZGKD((S>LT zGM~^;#$BQpA&K=B@D?|Cur*b1Pdv^MdiS+Z1Vfa{qli})-c~DGz2`!Z3|gC$=UA&5 zDk#{(qTxY+pF7Pe)ajyd#2)pDb^OfXly#BeSQH7xf1MrG(^?YEs(R#N)T>xs0jJp^ zidYd}epDPA>#HHDQflq85 zOaHmoj34;|rRGlecv@kxqsrQ|Uty2VTr|_C`ucGt7HCjB0cP%J@TR5_5c#j-1BkUQ z)<0oVRFkrNHWmf`_qGZ;TLoz^lMQzpb#tPSyr~BDx8#FuOR78kEVtTQ4;`cB|}MWygh=Vw{}5V}C% z>X```n#xGYz#qk>R(r8Ls{o&UzB4T=_uHt^UgRsy-po{LT$q>O0LInNnav61GQ_n@ zBk$nZhf+R7s6yNIEM%U_i9$?i^^$>4En1PaM@<47)HSoPhY)q?m{^3^s_ipXMbVvV zQIrreO0L`deRjpyLB95f0urO0-!|$W5ig5oYza=|1leRQS!|NBJraKVd21)CPqR@ zwt)LK+de1a_5dKZVLIM!tpqb!lpE&Mb3T}?Ut zT9W1W&xKs|+W?S^*|vTOjGZP8RYb5oRjW;<&t6Vq;NX*KcBX%h8yqzq=Y@W^lgrxa zoXVEtP;zltY(D_9`-Uumr{{oE;c<<0Z#ui1L2=lh+@}p4-pjr8yZ?CTp$zUC z81Ts79m)ZfAcz`WW^&N+>B5%Ur&`vJOk_5A!AkZ^>Fn%Rxc35ixn{e*{bSAAn+zY< z??xN5?1N`#K01V?d!e-6+kqnhG2lA~bxAwUf)Htw!8= nOR~ai5`y2G%Io)Y=}>(>tS4#Rxe%MSUGwT) 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 literal 468464 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 f5w}g!L7b;d@MrmSzRT1#M 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%0Ah`iNz0nR>=a~!tPH5Vpg;ne}V0sEWR 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

J4ywXx*A^2Cg%o z=-&p=Me=d~ceMCI)w*#FN2ZAU%ctvPw^YHtDxsn{|maQ8Pe z(3ZLl?Q4(js$hT=lDpiF(R3M)}L_ zml7v`sCW*e2SE}Wi=u}pt4y9UUjD`O@giQJQ0ph%L9$hDI#9yUr~A;$a(KKsu{{N=CSQRCy)zslelYQ6JrpM8Ujj-k%E;rlI#TQErr!zR#1o#nF8?8u_^!6d(+~lbJyXu`wv6m)3*2FmK|vW_VY|%<3E*WguVnX0Oq&Hc#OzGv z2BJ~QuGQx=4us_K59VH7eKvY-#SUJs)R%0hk?-sn>}EKQUXVS2P^rd~XB9f)>gmrm z`EF5x#HYu5lc2Hu!>Vqy^sFo~j@aj1fb^+hV&*dT#jjn#-afLG4sT2BL=Qb2G9g`< z$=1>!F3K{?`Kn66Li&i!Sj5uJ5m!h|&7wETx}wx!wK@x0+!s*CMCEZkacv7!RAmb? z7OG*LiP|5{<>GCKY?om{K4(uVCjd_=D0u(Gn@T(o@2QXh$U2+bwEf|<0%SXSFY{s+ z^>%;PIQt3tV)^k~T#Dr!-O~#o!V0Xp#KvUpcXJ}Imw6pQxO`9|X5{MPO4O9%$lLqi zuKBz^itQ++rB)rJU@wYHPw}QQmzYGr&Sbuc)H=*BFKGPVwwtxO>8RNTv)hzRpEg3> z!*WmMqQ;-)h`s&aJJrB9k~aSKr9tc85)01_ITLa<&0h7S?g5FW@c5;%{r7GUzm;dHN~9$ z&ay)0x!&L^5YQ*z@eYRRDtK|wIfx6*zDF_4W%^%Sr+vHknNL@X@^p_9R&rvEUFg~- zg~}gQ)$1}z65Y=DDKs64w-I{O1Q}RpN0~Gqw0LxWm&uaL3E8^wWpicp+VP3#!DY+y zgX`(-beco2T$U{moQx8JQhJ8l)3cQd|Uir9w#?S~2UYyDJ$s;#jqC9A4)k2KfUg!h`3Uz zb(>M}9)M=%js_NuduREiXg1c$DMkvZmU+;ilKVlk;!JLDeXUKH9G@K@BQ|Wk%(N`14jW2 zYp=@7=&$W4K;SF_ZFwrSRvP=g5~OfMz9jebgYu1~w1JTTeb8B}QZi-l>?UIzkH)=SKt@2~v+jXwZ>i}|Tutf(M&wS`brSsQ~G^^~Y#-k8oc3cDB7rNL_mtOEQ zjCsBE!U23Sb5Z81thw*?R*d<~&R_r6kZ{Nlwfd`nXiM$DXFpy%NwI%LZ+39|5FkgV zrY!K!L^-lC|Cy)g*PNs^Mrs4q$)1&Ep&|f4`w*TN#2WX_A=z>g(7rU>X;YG1xM`-p@ZFZzWk&4@e?0XU68T9PC4TCpej*P1jy zNCp)0$?W~H4SO-}x($1Gu-fS&J!iMVW7vBSgRw3+RgpD2#%Xr{}kcfSqp8g(UnzxI{Jk|2a(hJ?f| zRET^=S_Z9$GTC@*ms_8vnOg9T-haaciMFa?4b|8takldZ@Y1imReb>t9<&;hyWrl9 z+O6Z22ckkQ%J#dCj9>@mm8vclx4GjVav@fUmpx3S$;dzha)o~_06_p-)%Hw1Gtd^uZ$Q|b!z9*= z=*6$0GlTRUQ-P<1F5+_Y$1+)0%s?9aUn`OR!l>Mn1{^WqH!@PCv=OXzD$*DV0?g`- zq0n7rTutugp`P+e@R+72h>a))O01ztT`gD=bpuE-8r;u96RcY?s4E+upbW;O59v?OjIR(y_9!|Gv^q?G@w<2DT zhwYD?W&D7gJD-CfpZ^gh)0-%_coEj$81Qr#$kKl3(GnW{*hdV8mG7j>ga&b4?--7bUZ* zlyPK;hWDcTi*6fl+U5jn5(Nc8xx}Yno$fk$*~9Pe)B;Y&WnAMj;rkomO~7so(I_@> zjC-G*pgA8=cA~ZDuFsD5LloPA%GjS70z6A=pC?grXA0pYAnUEPTb%J;8KSt;OGd#Fg@RA0wmG9i6QyW4pe=L^EL>B163jcf@mOugfs=2c~i zdXc}4E@7P#CH*;TOs|q-OP}?Sm_AX(;aW?KG~PJJMY6jEH)e-^kk;}P=*)a7gfVj( zIXH+pCd>=*lHdd5eS`4zr6h)w0|!w&6O{!75{_ki(s~S{K;hNW@+GBahaHx<;DEJa zBhOS|yW$%Kq%-yPJR-F#sf;{|-qHVZqC6eD?-?-7L~i#%z+;_09lJD62fs^EL`}Z` z+*N)k@#`m&zqVcOBq_30$2A&lK!+hxm?T$8=Rugp-1C}8SDV>Jp_})7Y)T{qeul?G z=Lyzt&^oWj4@*wWugEv+8$)N%4CN3Y;T}S5OZ+cEhMqvMs4PD2x<`0dw#krahMz=( z-iO1Pcl36FwA+I{au@b%1F%nmlm`WU1C}EaM1DE7ue3(7`NI0(33Q)r z$}a9KOie)_bA4}Sm0^h=u%r1$U1m8(nvY_r*8xo7U7chU6BK{045@F6uZe$Cjzy99 zyvBKiK>N;Y_qr&+x61V^6|be?LKWm4`O6=jJE@nc&re!X2$f{~%F&6&)@3;<;r?%p zgWg`fCc{JgN#^fNs^wovtPDD!RieQ@G!LlM0(+IDIRUh@MezY zmZ1gI;Tg@S8X6oi>8-!@GSvDh8|s*-+BP+Z5_V!NMarzy*!Vkht}7}OR_GH|>}B`QKHZ6W@HCflZ1!;t z6WOh~WeN`b2piwQLHf!7!nheV3$1CmmDo~qQfHrLW2N<+Gklkm{x1rn8s@fPm!XGG ze_Bajd(k7GO4&jt>&<5vEbRKFu=6P`b9|+);6Iy&vlxe@wSRtUU=fAes;AkW7vY%f z$10lFQIacGEwv^2gjhrA_z|dLzMVDSACPO1XbW+pkVi7D?A&bS0Kp=Gk@V zI!|M+I67-02Ntb5*~1|nJPAcS==Wwtkk%=byo7({9vn4S3MN#SJ{mVijAXZu%} zo1`EtJMU?Zy_2S^JAMh)ZknPVmd9v{A_FOmg2n(lfy_qE2cO2g}(KTM-6_+;z zhlKoBJW#U)?hS>pW=O;e(8VyH^fg&Fl+q2*m>Rx~9k)=EB z$VAx2|M_u`;p=k$N#>NJQx#ItB?{WrdX8)~^U2W%7RUm)(J>wQCVmmYG{MZFnUf92&MX+ipDO!UYCU)^~olk zRHJG1CsI~cCdfGYi_-_%&&BGv4lR?}4C{vE+#P)f&k)!G5Y40m0`-w!vUvVuOZmLd zmI&Ez7F%!=fz*jLiMJF)!my5hhBk9bqmlPcMMlVlB(wntl=)MU<^V#seK@fc7an7zT>Z;|TTP5>k* zqDW-p{BRy?&cbwgYjEEFa9xZOb+=yhm;rdMMq+0=bV$MHgp7MBce|Zncw6-?-RZos zWHIP&`fws}?a3F)XJ0WYh~*zp3@PhsM>_VWq288LHeGKxG|zezWD5@Hy*pm75r5cf zUfS8?gOju-JWImb8R5s68pF>DR~(gzIeN6|AR zI}%q{HrThifeTfCL~JZ)Q#at}TK)0f=_anVPItLD=%;B(-8LcE#NFT5iJ7Hjdh?2g zp}zy?d4D)K5oZQt7NHjG*BKfvRfo}@6=}5}jXz~Gwgl0Uw*R+6CEo?q|y2P;2SLHys$cvM{lC!L4PeDdE|(iWimu4s$gHol8RBw6a*8RHLjyZzA+fu zC%R=hfYN_?0>-Oe2iS$O0*E_ZWpv$OmV8rK49q=9rnEqQZv<6RnP$uw=9AM+S3~mxWI|@q#AXZB#v{> zuPAeSHSha2SM)AwBmoDpjvy(dj}=ln`-EPZeYd$!e<}1~vNzS550)n}iMuNj>%!Wg zQ~^%%Zf+dE(>Zne5Ea)h2VSVMfRwFUEt=B0)kp#H)nL6VHwt*g30i7+eM6BVVd){0 z_;R5htVf$x+HCK%<+?tH8T@52mWtz;HLwjjk&#B+za9WG(GN!g}Qdeo2?OVw0ja)3tVXpY;1twK_e)Iww__OMmE zMsG&9WXH!ccuC)^2c~Vv7a#;X^@T9l;e@f9XOEs{wr%&94C^jBWab(eBh>iC>}T`k z8L^Q3#yk(f$G)7o)PD+q;<$9@CuF{11Zq7HRkjWhVmXXZB9AcQ$C|QwLP*SC=pKoN z`X{~FST_V0aYL`^jg*essi*Y@ls8Y~g-^q4$GKBC)%y4XLysr(Sv zk&3O?*XxG{;Y=_-?s%jLN?vaN3=rko+w23}s^F2`2JijFIN3=E^GtZ`S+`Z&!7ds! zzE$_25F`v*VMyzPKbvIC{jw8Gz)1MrZlPY>rliuF%Uz@Yf*6trt-4kb_3LWGMI6OM zPt@Bk{yE{zI&XjdwB=8`zy9xyknxb%yf`H$qf(8p;sw2&p~He)q=_ZzE)vbElnK`< z8dg}D<9M6VzI=(iRp<^Mo)Fzpdqn3<4xZ}Lk~V#lPp5fp!dYf|fz`gI)_3#Y>gj0E zb>#b!ue7oEmeuQY)f>kdwkO{MkFL?Ro+LthW9fOo0!<#ubi@A%n0Pq0e|C6qi;n2y zI9d}yiLSK2%a)pLi>SD)14SrM`RbLX{990>?dgRJU$lDSV4Q3)^l1tdt<|$P z;gqajFXs%Dns6)>1k$!2tua z?q;a-7Vkge;}8V9P=?U(%<$87-}$&_c>hgkJ%1%uY^{i-c6@p$m+P%+2uuXHR_5#H z(vyL$Mk1;$TPe0Bc!~gI@N}0_EZv=7_t;=quLP7Kl7yE>efO7LfTE)_lUj_nstQkQ za&YB{vnC45@=Coo%4dWEo4$;ZY+SMdakd5nMYNxJNHD3iWx|zai`=cZg)Vku6q3;^ zH`LC^65nGcJYryIG5!GZI5k$CpG*>E5}W`&U-kQ-si4}is*R_pu@uR?7x(6ri|$nA zrn3qAyTgcB%NdRZE4WQT3M#j^0u?ymrY2YT%ERSz~|mAJTyA;FpR zRN#L^MddcOg`vVGOyIbUa<`WVhK&>g_N6~qS_5?#f5!RI*Z>2Wuo9DCqJrJ*{#a>6 z+OO`I|5*o03czH6xVCg;`+}8EZ-z!mV%+u!jDjm7=wI;ntd(K4I6Fc`)K7Vv*yu)^ zHI@Md0#`kUVlRC?3tlLjV#(1Turauf!y(TAJSy%YXvGL}*OxaR64hT3L#OYYpUv9s z{K`c^txh)AS6f_eXQe<2je}%wzrABzYA$z_41}I2eEH;4Z9{L-!%hJ?G;NgW^)&T9 ze#wk?%E%M%`f#wiRdf*?G@_5s7E{XJ?rTZW{3%L?Cr#yF#;z95wjG8A^qX;0Ts=tQ z{p2AcbLu}dFF;+=uq4s8rbOz`!gMIP>?a{LL29k-H^3hJ00c5Z8XH1^`px#{uK_cI z0U2g(h#JPSj946FU!HXsA|CCp7N6R+u3|ZWd>YgP$=c8zV+eD)b?M^xF?G z%dDtal*mAE+l?7C77t)BRq3;8b`e8jWmtpl6im2LcRLau`0tWHrz-Y-Fri%-^zQL@ z-u-`NhZnWJ>rtYAALS1b<9Hd6{XhK-*OCQMHk=?CLg%DaQ98BG7I4@?5J_uVV0c*A zXA+yy&&f?-4Yc-V%T6S>f-Wf}Q*;IXcsy@37=ahnu#Mx2KZ6B(kO;(w0rVl55TzY5 z7Sx|$zYNJ8q2c?dKUIJ#z~^SbF10vqx`lT#4Cgl-0@8=W*P=h|%}zo8aiDDn=hHwbrj-A9vSr$mkp5&ep2Drp^rlin?5%K>8#jVs-WTb%2q_ctMqy zo1HI})RZRwnb^8*E6KcnF6A7Cb&szd#{90@Bdn`0>^UU1oJLYI8;6ti^gUmX+`Ztu z#*Vw%admcUO7VsUZTJ9)IteR&Ed5(tEF46C+u5m;3P|2i#$ zjA6#TIChZ#YPY-l&pFS32&RSRoJE!mT&(IphjHzw079)jW*^Sul6ThOo-T>AMZ~Ro zUz~I3W0HLugq-x zC}!A+?PLw7jFf!~%>NL#V11(R;!oX^{-CxzhSy4FY>xMm;n_~zyH-={&@$*mb|E)i z9mMqX7{a+n9Y%DDjZj+Fk*N+jE?Z32lcDk+tDuKhbNE1h_q{YLU?2WB<71VIYwQs;_iCG(&wOzhPrfcPL+sag zEGb~b@KxfS<&p<5cK1!ziq4e6u5arR?@X3c+j;pqxf4^}gYD=)C|f zzq~X+C)>bij1)%ts2dx&{7|+3%FtG`n|pF=k@2SW9c9&1;~PfRER5Jfv_^R=H@V@p zJm)-9-d{j|iT4H(ybO|YKbojyFEw6qT9Yf3>M9@0R29^ceA9`nSVVu?VR&b2jxi~B zgtTv6LP6ae-1aL3LRFu#=zvVupLbNmc!fA4i-6*uCMjtA(MB_y-jln@-T$hUS|7|$ z7lkWiyQ24X1QdKbqcORztIR^HY{Ut@)_buRleR!Eb%ZtoIz{|AW{)~o6sTA;!TRxWmbSdYNO07Mt4~lx~1ZvrNbFTez19T0kZ(zB9j=`|OPDj6)!N!d?x`V%( zLSGQOt$P)wogkPgdvE`2>UZX>s>|81HhnJb>-qQnM>z%k!4MC@9Qe`2#{WaP!Q)cU zonB}DWlSrJPha}YE1Sf!K@jaGhKR?l)iflA?MC-M7K=@qJgc*|Cn!jU4}EMuzEKK7 z@DxVGFBEWugKTwQeAN+4Q(lH0q#Rx7sxN=`u8I5S@cc&Nsp80zuf5u`eEL;DHiy~k z1|A(TtDi`Re3Pl)20JWAA%$Qg^QEB=FtiiXH(8CheS-2>NyxLmWL=_{g8?kQXtNx7 zUoRZ8{di`kxJ%wQ#{9w5DT(``!_Qm`jT5E0bJzs`exCZ!28fGV0X4fOmU66!wa}>YRw(r@8BmShrIG%Y1co_I zKyw&En;AOtNN=(cT{B(fZL(}CJHKW-CZI8kP0!+B-APS`aeavd;1!B_UgYl*so-E4 z@yJz=fC_hzezy50EYHQoKk@8GLYQDu?5OPp;Pd(fyYrR5HtZY2GFtr$v1({BU&#i3 zI5q_W+vo*90T_)hgylO~J@3wVM*y~TkD9!eMvBc@&OhT6=mWv%1xUy~E3~HLKLhsu zF1f#%EeQslXy70P6rEad5o@!>^)6QIo1R1bAS(G7dPmOFJY4g&rMi1xOq$Fb2N%_3-ZhRNz_)mPg7>ieeixgGvPlP8;vX4dRI4U%ww#58&Ow-GZ}J2F1cVv7wVr0mJ6nLARbqN?W-ghGAzQ9!q$DErfSn0N z@az`oOfOhsHe|5uI^wz_1pz|XB2?iTep-ogTY^(BY%ob~Ua*Tx^`WGAPAh@%^{DwhD{j9w=6m2GnFxl`?y%p5*@msX{=z2p zuR=X~;cr(K4jKBPZ~maz!s_eoSD~+<0LM`Bua)NhaP|K5gA*?rFC6IU4VSEwGozC2Vf$ zts~>-dv7kM&MyT)0DlGf>|(E8HyBJls5fGx)1EUkePnXzsn+I3i?lEZCZ^%%^}vi@ zEpz)Tt@p)}EIU%)XXO{#KZ2{dN*AVwgRG#Fpt5-HVG64kEisRmP{SGP$5(T2+7y0{ z!@J#ukuZF6&xO5P+k) zHV78dg_EnxeuQi}@KrN2Z>Gh{Gxu`F0%`M!Z=peT`F?S6t(3vvh_L`t)1td>bppwi0n8KZxa`S8}DbcEiz{-2x}J&^Ky7V@U-0)sD3J zsw3`qeB2T@t#az7JA6tDkFvgo0y;;Ag_PW_Z#x%DsVbfcDN9$-ihr;&3YKTdkbYId z?8Ur5I-y7bv&uba>7rE#Y?N}`6T?BeFykPvL(!n!_cG04fl#CwQ+hRtw1N3Go9lYp;P?%Bg=45iof@Jj|GC2*c&{mim$Y!y-&dLE_+Z=z&`7j<%r@7_~ z1ge$Jp0P13e0t-0tlLs8j)SD8puW9UxIL7`>gn=w@uv`;iud7rPU)H;n!xv(%lV6M zezjyBL3CjoyaE4|vg3=&GJQK<9dKy~4?a#nLw;vTK=Cm;VXH5(0aU zhJHn@j=jK{1HtY_Py`;>qahBc9>?TwzBl^lukAzotYWaN7(><_;kilQ3ZxlFuAYy;`ad%_>q zc@Tgw7KxYByb82)>Z6*vFyT-aK$B{aM^=&FSU7nu({FDri(*p(HfqpGb|K zqpdX`cm(uy{>@3SD!%@cADOo0U!EQ zon;kOOiwzK@UvZJEU#i5N30VNxL=Ct+AT%&|EnjkRwuePq1TGyW7Di?lxT$&oY#{{ zYc6Rll3a2sDBrd<3kOTDwH>sG6(N+;|B&$G<+yn=v`jE;C`P|Z0Bv2vB{mKRcf%;< z@05xK$tnuI^3Y@yM#a(n5p^C5wuu@wwKh!_#4p`UNf7P-98=iP7FSCa{Av`L^z$zg zjhKP%Y{&Aq_x&-fLAxs9aTP=f4sn-C>MD4{Hmo)Zlf-x7_FA>^KX+dl~{r z^&Lk`(nMdGN|cdiSSADnjUR#R`87(6r%h~u*dspzv5iMP;IWDH+sF%nXhw2M^P;~8fbs!2 z4&cPOrIGwnmfC{F?G^SQSwNtH|33m6y|RE6c~trFzr^b&&5l&N`-!@)91_ zTm)6z9F#0eAeBQX#gTT(z}~kS`I2Q&o>MX<;M7m;NebB53t!O1T{(QqiBISi>)JT~ zf}3tf2B!Dl`+=Xa`GQ;wMPk}6LZ>{b*D-8m^t;}uE1d7}f*0joCF=w<F;;>v z@ZvYi>z{b`CteCTpkem^1gJD>4hd*Ro51;s1z)KN{YBZ2(kNjg(m~2i2&Kz~gC8!? zuXM>TfM?1hT9OI(Cm0a3(+z~_0}g~3Cqo5bP*}m1cu%8f>#kNO0SVDaa3EbXy@@UzZB=HoxB_EKF-UAnr`2)=}D;1 z5H&_g*8kMZdR%a-N9rpqrZv_sj>IYqDZjb!PqfKWF;_8tpVyWhYdt$c?Du%@{I|>d zL?(KqRIM@@YCJw1NTF7|eml6Yy)!Mc(P#&^h2j$HNVo8mRLXNxnj&3ZHr#_#ZOWHUYxoSKcVoFnhjoM5m2# zPueGMFlQ4BOHSYKSji*o+8D&3f^UbX9xZ(Ix=LZW;IE4`h%TABDkl>R99Hl@;Jl6S zT(Khnvkf!nC;ib*2M+;Qqm(ADl)h~$t7MMO6<_mIgg>jFA9-6;Y`(w2wyg50#kP}g zf$-DZad_jhmzizpk%`Suk$MUR$z5DdAQM6g^<3tce_PKNf6=^tPi64)-P}YHu)3zwMnQ)UeLLf-W} z_Sq9H;hHF2nC^Py-X17n0Ljb2!1U?~qs!%g(2zLGON5V2lJ5J8wLDIQQgAFlw$7=Q zeu+TRQRj<}(BMp}?rR@M+%fDy$iE|BbLe_M8Rpp8>$#${t)2q0)=ZARKp zBI>c~1(LXQXt$R6OY- z+i#3YI5XT8V3BWSFBSGDcw}yq$8yj0Vb(gyE>%ziH#yBMojUm`Enm4&BwsU9WS%Y_ zUf$t{I7kPrDMuLkk;&QIXUu19&jIyc8{2ml`qe^Vld{WK4dHZe1S(Rd$_bSeztz3& zN~G`vxuHy|57sZE{E+Vi+plnhRM(p^Joj%YI89RDYxx7VP-p`{Ok0%O$@JHBApx7k z3Z7`ZlA>=z129i!4go1{kgFNdzx~&h3Q=DyK69shKv!?sZA&v)OV}FTf5f1Poh9)l zEjezW%D_d?RflB`nOvT={F@e)=s9^u*%4^#RuahmxQILUX3qh$^;lN-7A0YWNaD&k zd8hD@5g`RseO}d_h<-SUdo3TwotgcLWH-qzld{DRW=l_7Ahzgpxqu_I9%VoDv4^E_ z{b97Ku>s~B9D`8< z`V&rZn@x}9U~#pNaOSQqF3wlcF$NZ2*n? zM1oPFh8)^OKOEs+y-@z(xs>raL>m5cxTj@_{%5c(JHMZaSSi9a3Y0yG-r)>(GPgi) zL9f^MNDK{P4Q+}AWM%L7e!EW&EOXH5jCPBrz`K0N9PtF!YckIpl@78m2FO;jN4t4$ z8P^6q%AQrLW*W1rxT&^2WjWW4I}6MG>U(`z(s80!gwr?ch6nIP%769^V}!>E2dFU6 z%Sk*Fx60deYKc(`R+7OQgN6?|BQP?fm zH+|>&&BjR3{Y?U)#mZ!#pJCfn7S`m$i8zK)^r7;7Jz%3+chmUpmLI7>hOx+*6I2O& z7fBWMBwK+2l=OIWT1bV3$>?%TMD4oudSH?Ym%deEl)P74S*zE5VnsoZyLm{>{m0&* z$F?_uQ*{fgds9!T_A&d%Tb(z=m!z&9oXBsg19JcW^6@{vNx?tLkEyK!rUb>0n-G(} zD+qJ-Q}RZFiA4K;5DOA_kY|2B)m>n@ea!&t^o&DSC_{V?j?^i^K5o?csRLBIZ{G0p z+}f&8T2UzIwS79-wkt!`^qHi@P~|rRP2CPOK|156wU3SXCH_J4+n77Yy7`5rl6{DZ zv##?um#VG;3f8?^_wklXq63!)2~*0Iy!f%FV3S^)ab-YP2WS#IsOoUQCOjQ0*z23G zC(wD1)u=(w?~p2A*gh{XPx!yd%MVB<`?+m#{DXQw`0d2;Zy#Kdj(0QH1;P@}eH^=r zU`nnW*N@;v2|XC+#YfMeqzBTUtBKP5RgM+a7E&I}SzQ@ap?TqMbe>Ise49B}4`RsS;D@m^_7}V*iMoa&wj>rLSMva7Xd5qSXZvm9IvdsCnJPf- z2E4w=hlq}eT2cvlLRijgD+nd@wgdX~8Y`l0JVU2DXfjc^jb?!=lZfFCm!YoG$BrPr z_+Sy=rWfbn688gRs}ZSB{L`m??2KYy84)Sb({!b(>CxG>YY8&}HBdFK4YRW;yU&Q9 zH#sGV@vZ^0rhd@Y8`&EhTRYxEC zVNZqc`mhLGDpnE+G2h(^7dH##)}^Vb4bXq*hgpX!x&lnST8@Mc#D+fFk2Sd+r(o6) zK*vaxEGA0jwyaSiOC^V5(XsuyUM$X~J6I4=U+uK~YJYBv6ruFUM{N9z33Z259T7t; zb#^beI}_Z-uLa<~?x;AaeCb@pTi(XH!dszgJr0Iq|6&xEMp_|^Z%lgt!w%NSF7V>A zQ&^ypT;n@)DRN~zVg{a17~h)py`S^n%XqajgNFZrj={DJw0}7$7a!8KaznubZ*f4j zBS@%|jGi||*5G}!+^D)flTXKPeJs=&7t6*^uztH%14E9PK4?8(-ytXn6)dN_)$BR#rAGwpSVQAX%8sy4Dv>SjrylMOt=0+jR8?njD9yLd4wm1 zPRLq0&_=X0IGyw-hfkTjuOV;gG6Ie04ihQR*$tZdcSVOwyWc)qPMBB8*+1fMv^ClD z?OyeI#MJg33g$c^ESI+lq&=CK*K=!-~tspB=#A+;Gu)DVIV5 zLASW8a95?LbLIN$x)K4D|58QNKuN#YF1-sCRmwMNKjpEQ@wg~C{e9ttK^I@f(p0Il z<_dC{O{qJnLRclI!ERsP^)+=Acnsu|QVAqY$V3=u6WX~)ThyUgd}baDP6xk$g=mxV zDUfvSI`A;nn10(d=IoI-mkeBgBe8Du4W)SpM)Rz#H@e-C#iR6SqXKI8&$!_l>o}Xt zs(dP)jrAkcZZ!ki!n%24=iumZGogRaBe0WzP_+nB6iBFny9X8?9~yHK9PKz{I0MkX z#Jf_!T6wWHboLZMNb=of%}k4EXXi(po?7~*&M#As5HDZi$q#Ys+6gR7dqjqlg|nNT-qq2MZZ1uR|^Vs&<-Z3`U3!c z+ZX>pd0r#<==!CJ{6=%Rf)ATO<$yePSEBm&1E)196cn7Z;TGqxEymy&EWXADM^FNP zIe$379j=6Y6$PTS4WldoUE1$a-#wbry)JO$PPy2uqePW(Lam-b_zfI)aRFoQia)T6 z0WblQudVEK4wODkxluIeL3_9l$OtITh z6Akvflp)8RY1Mc?3h%R=GnY}fCV{v`Pyvsc11KmGdnTJNG0HUXDds(oEAONV<>Sbb zm=b#<+*#*9#;jB#Tf*)l@|%K|j@Wj}p%6+J)kF#XZ?+bE*^H_?FsM7>sPj^*m!^lx z2=`gyjrTq;qU%k7>lUpRKA?-6wj)aUte0w(U|}zIeTIUEr*k+EALnFmA>pAZ*Ddyv zv=du~CzPFGiaQ?GhgyY+ur@+$d!US|IiD6=^@05g_1x7V(>Jo1Idy&VDFmdvZ6AlP% zeC31EXo@BIo(_F;`BiyNHp>2>r6yUh@UJFO^?TXlOM&^D2Qf$b?M-f3QhagIztDH6tf|_3IKy>-x{%5P4p{!ce2|YBw8xbmTIdjd{V|yvD-}~WcbTi({ z`u66jOgd60f=l_mqpmPLZExKk7+T)S0ZQA3ROLWO&>>rWVEd@lJu;qE=E2=!oVpGf zgr2G2eIKc=qIt>#Oa9IDNJzj!mkr|~pofuvx4CBq! z8Wbn|Ku$}2Uf=H4_W^ZbW^;PyT!inZdu5<6I1ABBWcWwNC{=^|0O~uAj z$mPRJ7z^?wIzbe&gIZPy96Mq|1XgBVGAzu55w*tXtUNBJV8~)_KRouV~rMkGI{l)hBe++u6aYuiLuyl=S+joqunMZQxf_+9MQherHh+o2wdO+!Vl4PVF}^>Gh`!4!7V8RY4+0y_3#? zjYOz$?N>xnL#Oh(RPUPlBNPN;K1T*t+O^Psq3LaFq0DFoVcYH<5b5pkBCvC9_zm35EJ-FL}^c%saX*u9<|tJEU+Hge&Ny$ z`l8_X{nmqBDCk!s$Yz!M!|r#;E4RN*#X%KDr$)58Zb+xj%8$<6#uA3@R^%3Le&uH@ z%4A|P0m`kk$N%!Fol%0{d>^@f`E_)_RU$}l+Z~|qjy~`hw+VO!GS4EHAw3+1iQ1qu zD(`TM|8^VT!$`G6fdk3vt%$8#y=l4J%PaWUYhdJk=Fg75M<(CMh4Qu0A^Etcb7^2* z&G-N31z<-8=11|bwp|cERlsBamFcqD5ASW&NxPBKqj=uTI~D#Tq(HX^V<8uUajFQ^+!mT22|;Y1}3Rcbcn3ytx4d=rQ|7!Xvq#cI|`^59JB9^$S3o zQ#X06Yc3w0JMHa}eSB>6B`Iu(64w8X1mXZ$|BtV) z0E%nb+Qr===-?XM8C-)TIE3I%aCgt(1Pz4X?!g^`ySw`kJh(f&$vId4S2y?8>?)>e zHhXt3>He1VT8t*zaJ4mM%wr~-%v_%f&@gh)2{-VCBHN#{lPX?~?F&#uqbr_`mR_{s z052n|zxyKK!eS0W6?gBvei8_VDjL_!_R&5(km1zK<8ZuKEVOxhJ;Ht92zu_Nsika*gVlsUdE`2kf)8mPc zXE}+OL&?Aso`-XDyHzwPcc;b%jgb9GRijSyM%Ov-dfoq}d!b`qF&Va&O$SMaZ`aqn z)g$JsN$xtuSTS3^HF9m5Xbdeal1g{u@Y{L=XyI=})#?neHE#rNRl+yqu%%&c8So54 zfRbM&Y8=?VMX_NRnj<~5WH@0AR6FzwjR-?TUQz=c0g)Yfza!Z_2Py+n`W5JssI*(C znh}NAhp|mI>;fqSJDw>28CY2Ud|d#EwE1;!C?>;Mpz9k?Vx0Fl%X#K(sf{eZl8)kf z^*S`^+z)le^tO~pkrkm`7W&BzfC4+WWabBLQkhp(PqdzqUW5C_i|`=QMH(5O1 zb4O8{bw?mH&Egu6-2sM~Y3zHvc+;9>G7b;wd2+~5J3POiI~I9f6Kxj$^g)Ga%Yu1U z?cV4dQ_E_w_9OHQkXKmnieXbp=*s1ubRw4WT;o#_LCD!~(FGuuZlqV2@N%vmjUDEI z6`86#fTN&noc{;MynP$zc@&>?I0xduE8mN*cWg3SVtK$w*R`}=hBlhHsa=@UycH6H zCa5ApcOsXeOg;l#Cec2;-5S4nbP%_JNsJ?lSQ;~zfmCaLE*X8*CS57E>YhMXp`}B! z#*do?_d}-Z5@^_mLg4}7W1hr{cUVYPs#L;-RH~5X672zPx)}PhK9B^8e4NhoVJow~ zY|M=jex3Hw9v-V*J4LXer>5Y7^p)k>ZmN4Zcj12ICoU*#G4&n(px&lUE#H@cGnw<* z2mLhyWISYf(%+TIXTCgqIQxDrB_sI!Yi~0U_^h%NbC5g*CP+iSWLiL=qN7KvW--on z&B#?%7k3JDXVaJ1k%_cv!FGDH4gPKG?191z0la-4hQ(y#{<2^o=%xP?(oy;S>$2_brxm= zDt@%YZ_cX?WA&>ossp{wm&JfsDQ;(Nij>ONwM<;E`x$jsv0ohzR()nFXQwe!o1jbI z+A~p7bPK^-0_atitBo~M?3+$qw3EsdR}b$KAO_*~++6_BE-%!&ExR47-(qF)mmJ4* zP}L*TE6$NSt{RQ~yR3AW6Cy$im~j$1K~{2Tej$l`~~N05&N%qA5j9qH)nI)1&$=>AJKH;bqi> z573rV(J9|H^O*^Oy3ZubJinX?dvp|RG?tSKPU@w)$W>=cR#y!~9Ea6Xr%H*OC#mVY zd?A|I6yuZzx-_g>)fDj=Q0WdAnA_EiM>@)gQ<$W#4`|=t^~C4q_$_?gpc$W>Ogj(b z8{n3tVtfqjcwQLm6Rw7PGd%}VET8%8TSjdFJ$?%p8*WU*w)2j~tpH%D}3-io=!CL{8CzhA+eiZk!| zR<@3-3zadar%a)@N*rhbzU!*sWEJP_V_Ft&fFP96^+A^~O_9GgU@Zjug+%BQ>7i&;SU>r|Kgrnn42W zFz|kz(87@N!UcEc!bS((d863^WAT3M;m;el(m*Vz>7Mw7SjnGF4#y&=6S*oUJGB}7 zV{mJsE4yv*{$JWT=q_O6GF_*9iZ|tU((33$`G`afwJP)00DOvwr=_tkNAXJmp+iFf zK@3yt`b-_j2qq`&biW!oy%$ncUP@oT4MI9#Ewwmq+LgW0=%@Lz8VQ|A8ABl%7f2x` zFtkTVutga=dOuy>;byh~;^}OQItjwmm~Ra36@Jwk7wQBCrrFc1;GzoXHy{@DWBR{SN= zR@m3Zb{mKxk#QQS8%df>=<`w3!9RnCr~_q#Z3hkpFXyZ4Q&&XAcYV}MG*wfKm8lHg zh5M`V-?pM(Isi_m+5plOAa3L&D$81G%J*iCe?Pvj$u4ClO%*Nr|M-yP59CRtf+!1M;o7HT3XXKbiOUJ+FUn$&-xH% zos_uK`8FH&xN@{oYG?Wx85^#r0bw(*eR$1iRZKf>Rmhxg$d?V0N*1s4S3-K?f`xF< zgx~Aj57*FJ^KF;efb1y(ONH$poN$l7{G*jnlxvvKprn_^I(yV@bls(XupL^VV7&?9 ztS$LES@j7fzsmWw`qAf6Vunm~yNG*VBV}qG&6R^s(#`7+BUHcSdrdonK}Du!ah-*E z)bG0{vMqSuwJQU6Ft>B~UXwoICvghN;^2{lc(bDUtK>uqohaZ95kQeev^9sDbnXfv z3~;GKBfnNy^0Ib&9^0Mrbt-`6z+R|6nrV8Y{s|pTiX_I^q=ti&tZuXMGhk5v zB+)w#|MOW`lfVIAjy|yD$)F;UnB_&D0;Iv46dLcy-$_8~uWZP1|Ju2O=2NUQEQk9W z0kw~O5lG=^-0W^?{-IwdnDNMlVh{0}2n8ceFPt~oIla|losW^tP@u)Hk--r~dWZKT zpW(%f!cz}MCBpHr`#O#lCh<*zYSO#P31dF74e@{K2j)gPhorWzMhQyi@%LNs>@qX} zVxhjJiH!3w4D8Utr($mj7VFRJn^chz*F`!o3x;U0pP>1|0yA8rFHcEN zyML@PLlIrnGa0LvkBg5_IA@N+WWjK_-XH_Im1d|#u~@Cl^wLR(FhPKh5Th(W{6(iIaR-~QbAP{?7T zaQa9P@c=ys>l9g)@!4BZhBKJDudM*x8jhk^q~DCAiLi<1Udn%#*HDFybSw%mIDhPQ zjUzC-oQ=uY*K$bWGVVnV-T8}BWKiAY*y+cYRj2mP)2)kQ$wY-Yd5zMztT_{;sz=^LLLd42o&3_=OD5vVn>@ z*4`2Z>F5oo9vhs&^%>D?+pN^wEf;dP{(()y*TebMaZ-`+zP=`D>v;U4@%wd5@(4a96k z-+*f~*4@e>8$mw<&P&1=F7J3%4i8h+9IQBxX7q*IU=2J0tfIl-!`zCggr{f|E`lqt zWVD$f^^!Lb58Dw)LT}CyVihrq}t@?mkhDN8toGKMADgv zr-^AJ8}imfASQ9=B*lNab<{Unoj1(7yJQ6Yy6vi;cmT9eUNo-;#yAuQ2k*|8BQebE z9$NSdh4Gia&gykO_^!DLhQ7CtYCv#g?dqwHU$&pMUc7R5n=>I8I*vWC?61*TJJ}@K zYNG($tq3!Op+`fG3J$z^2oN1u7sw_LKru9Lts`>Q@%7|!hvy}{7!9};v6)84MeZUV z3o#+_UaRuy*VSY&s`MP|G~{<$Ts-=0-r^=y7)g(e(@YuQZTMWBd0n6xT9$1(8%_@& zvcHE12ZT40lg@C{#A;SUAT=#0M*&PbzMK2x2CuQt@csgEFj8K~yPaz-k!)qiG_LvGAWzp5>s>z^BZI~pa9tNXSOC4A(PgXF&L z#67KQ|Fjnf;Gr@*4im2CgBJ;FloaV>7mih=$zs5raT0`yHhdq=w|}e;mg6L+HlKKN zMYMrjOjDt@q>lL-IeAJ~Eymwe;fm^$uA_V^n3KrRu;5bS#>zKj+Y94*WZUE^fN~bO zerFiI`mX00eOP>90XWxH7x3vl=N$dnH~)f4I4@j=sYKRSFfs;tS3ITGRW*w`K%Liw zg^vn*u=&sNF``kU79p?KLD5XVLf@=f3p3X9kyd~4!#ng=MEEQNY4FAM)dZz_lQgCG zhIeoTrQCl!t16rSqOIh57SbKdYkAvuoffR6!uUzqH9z-+<;k_3UH>xhXIw%-q#BrZ_jqB#Dk0A~3t1d6Sn>~FZU03=ffsEi6y#~*tvm>QMv}mu?tDDxc z4=)Oy>+Z;!2Cq!&?f?&KO9t1d{bs&^C&N!}d^^w8a}Uoz3pj!>v~BT8DZ|MTKr7u3pn^KU&KYmsu)W6F=?tVh-{QA2RBBcJ#?@EZWe^o+UH3!ytA<%qVHMTMaTr+uJWEF?q#EPcJ zE26ONN82p=Xt3y9#OIZ`Ay!jk4unt;78i@=-4Quen)BUkpB>#CxE%95fKS%utZ$ZI z-w`dR#0Qbhw#>ht#XNszG^F((eA4b8RO+igcF4&1b(aB1F%f=Yjboz|t|}3^uGjz2 zo~fFdIzQKxahf)`nt6PhGw6HNUjMXK<W}(K?l2i-Rh$s{%N>Pg~ARSuk$)+a4dG z_lSEKmWq5_{p$1deM2rI)sS0LNvYmePjL&mKbiG#!wslXe&9FgYiOu=as& zY5v!*n~| zsNQ))^{=e>5cB!JeJ_$CgGJ31AzfD#G|*dRPA4({e8gE+mF9 z`MYiH+V?Nfe9Lb zdDr!%^@;{d|LZY-)dY3IxqXKWFwYRBS{=@Qu)9fUE}Y8#UrjQLnLx+UR!8r~y=Wj6 zUvk)fGXIZ}LW+(K{SLNPoKL^@W%{o~zV&(wIkeN3FBteB>J#G}5E{QV+4I`)7p1eh~dw9R9GirZyRVo7~CHC(NCA~w7&jBFhF`)Ea@#t5u zpVJZuDeTi9t~7L*Gh!g)*LVCRq4~alyakUM#(cGd5|l%@N-Cg^jRpN57bpp7paUD1 zj)ew>isC;mWhiJOAj+rQnEyM%e}B)SfFU2(1(UlsW(U*K(rOz^1ki#bs69qYf;P5$Qp%=+KYq#%Q-LSo`{=#f+({`{Z+-f{QNa5-Ao@B9^$#z2EI z4VeJ4<$m&FCyFOBp7Rddb&UPV9IvK)#UCaEnVvE;a@u#0$+xz!AF$HuPBZc~CQMn;&` zA{Kx8AGsp@fvOG#$UUkIIO8H_;IPnd|AkE0a44U76F|9Ay2j~2e-LFn0Z@${80c{t zo2j0@G>iJQRSWy4AwpvVN#K6+IH)ruI`Lw>d-#JuLwF|*HwH0`BYNzp%uG(^b7gy4*^HB2ECEcz1#K^KV~Kl7O$w^DiSlI*i( zgM_&Ix z7iAAP6suX{aeXB#aI6?MrXmZ|A8-4LJkX)?wIVuN;Sc2dOb?OF&%3VEDiQywy`PZM zBq792le}H3`-2#KRfhcdbpo|y8s|?mgeWD1F=RTnT7P)&7$3~LZ)KNic2h;5|GO4l z85lnn;4^XrOd0=S$`B>Z?5HR8exza4D2=VCj7v{H8b0MgHAqg@D!{MleOWp{`VQYGMWVXt!7gObGP!fVnWH*UZesG|c$nyJ?-(Y;8|Z4_AAx+KTbV zj|E4o52;5_M|?eo^jeVLO0{Ph9qn0!I)%vT68#??d#(=`P1?ytZ1UsZ=|mCFMydSl zq`<5eb~w$lU8?PUzTLzu(J73cE!A38RaHf4L9~Ect#Pj)75188{7`N)Tk^hcYirAJ z+UwuzFUVO@3?bUt57`Ck@2U5G>Ue&7$VNVLQz$~&x#6*%V^GEfE*H9N4XDhMV~`4% znyC(HUj3Ral?Xm}B=5T`Kqdt`Of==^=W7L@Z+DjcNOXh_ic4T7 zXK=(73GdP^AN}ItqVsACcBRDxn2LIHjC9$=$$-v7aQ>h+Mzptny?QjYVIkdp%`On} zssZ(2Zm=%W5Bp#G1#%V#ZziMqG?3a^KwsGB(1zgj!Qk4TVue;{*;$QpzG_U1D9QKz zd)-QV2Qz~~*UB~fd^KVriZ*tV>G7CNm50(9+Feg~ zK^HebE*PG5H<0dYMuy!cy?k}UdWH?6O6_!;uOJDBO{JcfrO9sJ!SmBk^24Yz+@nzP zZ(RdlzI4}kUX)ZFQZ!#Lm9&O2?gma^j*E!S(J7?-JP>}IkUj9Wx5tA?z+m|oj>s~F zEU~$!dP?b0zn2y~Png{ZkjbKws7cpL2#fA5DP5_8?N*q$+a|hg#N$=?4b&ahPm1rV z_^gj>YZ<^rzvsL4w(yym6@=&nrVq;zCI(d%?a$wYoteYKnLM_iVxuaoWM>GYksly^ z?rh91*c~A-<|JYA{9pQK9wElu^%)Ideqd!G`VUP`?zl4shb4)veL~*yo)40a0@(1? zHn%Ytq^Jq->MPML_?_>|L(W54*1I0?t}E7pOvYC3u7{X5ZF`5_#|9X>1#cu!qrNVC zBq>(Oeb<7thd^isb5X+PaF~h)Fe1MHdnp9_P*i&Cqlk_cM3L<1FyLT@2Gw4U92y3< zzxiHqKF zWI%r+=FZ&=RP=$y3Vj`jJW&;w_{6I}|My=w*nU@j<|f_BGBA%*IsLC!y1YV)Gt@sAy82%X7xM?LMucJx5D@*N3<|!spZ~ZETPGJ3l`&;hT7l3$dPY?40k_F(JN>HFB z&A13(-qn?5U|<4qm|de(4a(ny9d8-5+U0AWPjV% z)l+ey$RKdfWU~rx7tpfPo0NIh()4OR6Qr&1cT4wG*Ji!6 zr3sC4Z4>AA6#J476<2NFY>KNar|~me&RV)z)PYTlp@@&|kLM*U`scZ2I_;ecn01gP z=G3)rwz;zW#JfK_{ThDBfm!dGYso?v{N9g2PBvr0-tq4?Nt1 zJK2zhI_JVvM950VsdG9?^>Er9qhyiYwcY+;7tW$tIZP%NFzoX~#iDNklpItTa9wu>` zHDsy}O*^g_2BQy4A}>DWq;Cu+-E5aT29%d~Ms*BHcx^Z{UZVKwuS|+Hvn9rUrA68; zR*(AKIwtqOk8|!0A<%jUn1;~m^MN+e1D6g$foU^oWJT)^W6AsG0#uBHdHc(wH6Q0h z-FQp=c@DPL5Ys4oAA`;STWTZ6d3!JR_0d z^?OKtcv{1m3Buq-vVL;mE`(^obP7qUPJj0t$YDffE+1dLgPIFL<(P@kK$`Y-$`mH`L!H>hzF-dPe|8lU)B zeFpXLovEU7$HHFxh}y#YEep6N*`Tpaa4$N?UKHYG>+zw{E2j6{1&(7+ zzpQm?K9x4?g5=gfnK43N|ZvZm9#xaw+YexGZ_~|g`{;JF@!n%|wIvawK zL_!Pax;*bcT6{<}n8RCAgPo6sNUtqRc`JhR{W6Dr#kbwN;PpJ#8s7&Dov@s^lkAJi zRk;HV7Tt@a>p}DK;2@nMxZ&yA4mXOlU9}I5F!x|&-o26O?OMDY+LkTRf zqL9Me+ijz%FYUbq@>pMv=fbiDJ4-}cwHAqRT!PD zME)3``Iyk2!oC|d8vXWAqH|Q(lE!#OLzcpE)Pg~A+R^z^wTI=a1!t*9ti>knqEmgM zhjZ)l=GpIB-DG|ad9IQwnEmwA=1V0OMlHxoQK=#m2}zA}B7`{DA-uuP|+^7AXEol^YCAl_xwUxx3pkv9NEYN{v5))F&zAHn+i&33TI z4X8&u$9ji2D+hpeF_JC*X9V=JSLF(!7<@m*`nTteTKl3{ugyM`YMOCB>xOUsn%uZ_WO1S)_V9q{Th&vD8&4SiWd28u7ECrp}duy zj5+Un6Mb>U=C`im+1Z~qK$J=$wIPdqXZaeNEZVs-B3;z*C9P*o)GA47 zYOYjkHvx^Cm_3*hV(*xHAHKV%pmRusJ$-zE2a+qw@@;xB zc8hVE4nUDiRKzG1@mKlWtls!64wwq4l6K)!++6RQwR%HB3JR&m#dwzNns9-`yn%ye zJ*VPstFC1>!Xt>ASmgZHbB89&IicjRyI!zy0t+Sy@%t@whZU{Q-#!GIf|E!L1I7<( z9H(~-Vf|PT*5(O>#ZRuonMDmwM%xiV!i#~>y15hq+Ft6z?=h|@eCt?nmlCizCO zvTtAz6+{3fls_Z=9MdK*RV(!Mytg(~WPdgeilX|Xk^mP761sYR( zm@<^n&5Sko#ZS;TnnV`t>p6PN3WPomqx^QBLVJZ;fjKC<(`n1orX6?O5e7bn-ZMHy z8_LdLBs2hbNF{j7Y$R7}qWcJtD(!tH=`N(+?!SfA4Askep(55rGx45*@O#XiKZ*-N z3S6UNg}(6Nmr&{KPdP$-24HZYcLtLy7I~Ybq_%~ER06%HU@QbS?7k%p4JIB#7o|a)PRQ@cHJ^S$m0&T@ zb zMLivtx+i>##GP6$j=gy|%G_5pXKHrKc;N)5Fxa=A8qfxt6Lp<9qPMXck1w~quYOtH zT(!@iV5fMv9W4dxnT%(92TR8z9+U47XIJFe{{wXXe=b)DuJ4eerw2m-+Z?@)Pvv@+ zxNk}H_u%(QNGH8gk>SV}+Z{_S1{oSTs0JHw4xT7eOrV7udccqeIS1f8}`_#k;-N0C~^G?Ro;mCf$c+t{5Vl*U2&?`c_6 zd*XK7{>rD|>Qr9)E9ax7y7;KBdJps*nS~DM^CGKaa9>hjD7)oK6^T!^?o1;&9kG6e z7@SeCEX;RtVqNv|5*!Ok>tnrA~(nFE2lo9 zO>rkF#-(_zbbMJqPcFLkc!B+lgxmTnI9@a3;{696L8AnSgp;4^=W2clKajm{q1SXh z+odOSt+JqGG&pwm{^tQ2J*#E?1`KO3UT(||+3IKS}Z_?9njBKG2~I}Dbz z%Z!)2DblWE#$lZq94aej&3*PG{ggMY^DSWv<~J z&Y0_D&WT<{5#~|Eenx6G;^bim%=c$sZ|_OuQKSuQUWZd(rwWzakc#mfA}b*wd}6F3 zC6z+sA$T6{f+N*;*&Ngy9D_0Gg8&{Y^$Q6+V*4Ubcmxb9+VF7fvY24m?of=8X2A}TJqGG+)aqdwGi z9hfERea=bUm_vADhN=|_%LPgD6McA^X*>&0!J1Yp4n89j{LR~Gok{R>uJ~4kl87CF zxHCyao;F?QIpJV*c-Ok`i)5Y{$}oCpXGlm<$3WN7KY1*c)DdUK^fXTwb$dhjJlE;3 zcDw#68a(SCewM0T)PwXk;`!*!sOVrPv*#!K6Bpt|ZKv2XSaz}+%hkjZ_=I%Wno6ryJ$CCpAr(;X_| zSL{oSw_s3JTsUzdALC65IjyAI2)D?u-Lz|PvRcEhd77lSU;AwU?r+@CH~*@4oYGmpKqo@0fa ziB6!?rDM~ON;(<@>yLG5_#K{Zf(QF$0ND>1z;)mFlfyx|l#=T>0&pwS&!9eid9Y0X zp-ZMR2BOSeL+rXI%_@r>-1yRtocalY$V6#D(-hrpKjaazi9Qknm3@qPkSYY#-lXu_ z{`^Qo7myYW3cNYUdbsyYCD$M=)352v2*myzLL{C4{ABN6Z3hg208YwnlZ>N)yYL6o z2NDfT%m1s@%WfTj&z+&ncgRegfsAeEMzB$(RvbDl70uE5zwM8=IMDT`zDH5Wyrh^9 z$thm*dcv`#0%*l)mb{Kr>X{~7O<7E}@uI@dSWBg)f_C5zpJ#-;Y$p*#E|_O7^J&p^ zOC`$vxD+g%$O(A|VeYTN>@3Q-#s`pIRUI5AeFWFz=F-#(KQY;m&TX?}gKX8b(mGw> z>J?jGp0mppwh4iiC(#oMNef;Z!LF6Pa7tUJQ3R(^1*pF$omD(KVd#DV<^2a_#~pI} zmT~D#jt&8^h|5(|4plJ4m&~)(zTfoXVTgc^Bj$0dH zAWtzbj0Fu6V}5!sW8uwQn|!|}100_!KUqP<#TdU^bzg7bTk~1=#1L~FR?hRQEMjDL zP?r?{Ku%N7+4)r()=C0CKdjFLY$$*{%`%W2LT07YvNNN2?#1wm*CDTf*QKn4h5Hp< zaW!G&4O`4vxTvsAL%{xp#pdu)Gu=#Z%7m|7PIhu|UwRnb%mNQ(HINimrZAeX6UnK9 zK7t)R#MUB7vjtL4*I1c24pmVO}0d*u(0szCJsOLa-(BS1d@ECAs!7br3DQU%4QGe zW!uPjM<+6e=kxQ!iR@Y93={Q0?CuXj%%?@ZZmbS<6MM(f;BqDPxdlh2@uU)z`v$dsn&?*ojb$U*i^ngm2XJ7_6P8w4rv_sS zpJ=dQ&l&qqwUgFe)^-u@BB7hdcUaQ+_pKN6^yHG{)7DRGf(iJHDZ zlw4@9jA{++tw!l4(A_*aj9w+_)DYKHnIB3nfu#wJ&NOx9VzCO(bY z#HGrs!BW8qtAHh3)G(k0n2^V~sP*Pq#;yqL%`H)B7_!;X8K_?=ew2kB$D`HJ6}kli z1@;f!{BSu25BJ|6>D0Ot!9HyfB+*)o5pvjMRaJ&=PAi!&MzAMWn%Ts5bh@=Z+VfwP zmo3+CY&;^^o4uRvRhsYz7MZDJW?NE;!Xic#S^&ZcrA9pK;nXm!keT6(1PSpa9ChS# z&|@rM5qZcnL~&&ra^9o!WQ(C@7r0PsUsgvAd@vZ5@v?q1FG{=#+7}TuA2iO}FY0uuWx$hiy_?B*@R^f9$8q+SMmK7_8bJN~mjp-gYd3y%>Qw zUm4$j51NVUcOp{y_VO6n!V~^Oy4ntc!I^G>d7nF;pm*EAsPsuVpvTA(};}-ZK@ozPU&_yG7|c zun7W?4~YgvVr|m9I{jjC=~`fM`_=8urbu=$h=ITb@AyHaagm#xmocfZezK(koshKay91dQvkyh?}RQS59A^UnCkj$h~+auAanr-x+D z{YFFq4v@+YZAw0)6g!7S2qZMPvqwUxpmK|Qg%1!}?5g@f5fkpijDXQ6!TBRD`o)A~ z@J1KW2xb^rklyV#cB*6yc~2CHza17vwiz{<%(u2MH%;Fr@dlZGN@M`vU^16(&L1j- zR6`98AzG1i*}K$)y(vbY{{BW24G>A~Dh{=)w22gx&lU8ILW|ZbwetkRCi+d?3~8ij z0%a|ZeN8iXbU@^A+UZ<#Qmj8}u9TMdIa|#3%CHUBMNDDFFg7Ho1tA(`TlMn|^1N z+Fq(i5vo6ld>Y5yI0W4fIqd>_nV8joYPM|2Bq{0NT%e-?%9PPA&`}`U#9%!;UMbZS z3OD6rOfN|lA&}Q@>9EXLM3Uo6jL%pd!W3H(VwJ7DhZG4=I=eA=uw+I<)1l{}M+zm{ z+fcg^uupEIBB2H?lVx(pmTfN|oL?^mD;L|rktM3iA95-4Q#OAh?(T&!0uy>+7%RlAPgIIfEKp(pyx*18yAQR@5i;= zX#CAOXI?3Hw{W*HZ+$;9f~zRLips+Z=z*zGG+=zWp&dFTTb!ZC3a^Q*6Y-zHS`gN6 zRfMDxO z%i*^Zi{7;2Cp0f&6opUNSU9d4`I?t^wUXBz5jud|y>kASnv!UYdo?!OVowR$P)G1M zsJK!o#B$GKs`1PF&OBcsy3s-iI9QH$WLKTYH^_hcDl>>zcl1G^zhkmk z(tGz}LnhOq&$`ZfwhQjaiZAxD(Ir_%ug@3^?)DK`C?xFQG9iCYjG-Ex%uR(W=o92@ z>(;y7cg;SDodD4pCMjUC`Mcmm*>Cs%F*X4#6 z*ya6g7YqDG=4e(%L_h|*%3$PPI1RZ*&)jJRyN->ZrY!6jQ0}{34E6!=Gw`GK9hWxr zRojE&t}NG7dj{zdM{&?&L%WC_Ul!H2!3*&b0tQ+4x)FE}-UKa%jY=%?hB3+m4bXzm z4a2c-f~~6Pr~h2C{-CARl3MfhLzSVCc-}zruZ0kjb(Lj-rCH~dE_~5d;>X_Lc4E=6 zw(`0h76M;bb+tABx(mW8Lyqwa*%ICGYm&)*%!^(BK$_vIdb=kCrT(l%N?vA9=Q7YEV`c1Yk4!XNlZj^K%feiR6I1QE3jPpK!0qySjPcQK<;fap1+}@ z-o6Vuz2b4|4i8e zK3yD^su&F7G-87?jk1X3>ftTS46c`^4a3xr zYd6ec(|_kLF(kt&elYkQyj~*^VEP>{3rmHfpR_qTTROn?S=F&WvU|C^p%*eT>d-4!VY>*1-PlIcujXEuX^`%(+zyCW5++dVVI6! zcg#CgCWOF83WvC{BxQ|FhY24}wEnJv=~If_z2Ay-BJAE=+4bbO60v?FDLSQ%Mbjn@ ziCb~dCE#xNlY38;1U(bjYJMC|IU2rsvxHK@|NVX0=e#72zAd6_^QhU5D(f4&y{GHJPgoj~LX_PDr2^O6F z{=Pe{G3EeKeloA==e~b6xbKjzw$>NVl33@A;xTxVZTa)7k`{DXASiGNVHz>OwY<5! zu0b!G2qcY&KRqJ&&E_p^|7MJc1@kwfIEb#`kadeNW<%!d|7c{Lji_>Bi2BWoV2-E2 zKcgHJ_?nolGZumyZCE%x4E@tigl|ur3rNWH1F!?A*&QZ4#36POa{V_Woex$h7lwA( zeU(nzjMk9>xnHOen#OSLvT2?UFyk z`pJvH3zWd-ai~)Z%EkR`T*Rjrz{@`TEjxj&z8UEU#`2|z#|!(xC)3#~w$@+BHCvu9 zMMiG!6&cU&D0Qe-w(@U^ql{VVuMIoj8xaDpkDo@zA95`-mmpDrsQtnjyL)l}V*OUD zJ-k5E_z9g`4l-Doiss`}jb^p=hY7wenm7>beGUan4l+knVp-0?eES5%Z7iB=0NCB9 z)&+f}=FCwXQYWS>b^487ImW+@>KtJ$(ZySKBcSW5<&gE^_qRV?lYDL}KXq%jsVkxU zD^W_B6Ou*RhBX1n=%dK~@LOMjHAM zCgz?0lWQ=!u_4$3EfC&2yt?6a)GOcEy$;5xWUlr~qFVt6upujKe+3o?kn#oPJ!yVi zyl`1A{RpFcQ`SVM+*QN6UyQ423ssI}C<%M`a*T6&@Ep~FE;~`MoKO_)B()6~Y|j0) zQs5Jd9O1qvVINxkHMl1Y1}<0Jawv-$aB!XmNIDMdk7IPH|sB#;V#O7ID}S73!VOCKw}<cDcT)caKHzXmfl*#=W_4WI_lhdhs%S?_bK=!B6e*9p>F%89Td&)mHs~JK#C6 zz}>$fu<+-G@KUP;b<^$75RsUIjo77OfxLRvWkYRRT$CinSO^=NH`CJKvD4yfqEM#a z=+w2$ealIQoER{i=s4@y#9XARZP>onJQcf;Xs)046o8M=6?r&xUT(5Z9M6@Zcn$Gw zZq%X!mg`R{=k-%#b75x!wE}`UX8Lw=ulgVf1W#D75WDGPB+Lo(M0jnN4hL~<{D*J+@63W5(pF*hcHY+J z5(OKR*1IGBHuLJ@=O&bkP+25UHS3!prWP~8E|GN<^swOdW+F*F>9;A zBH)KAV&H;XuorbiBC)OuHg|SL2A#ZZ^ouS)!g~F9RWLWpGON(vVVU@E4$;PR6#qhn z4)1+OJzkjdcSdZb4RgisMDQ<{EX?VNVjSio{GzE(v4a{302O9z#NbTZ6qH*>`BefU^!as_~G|^ zutG5MY?Xx>UKj@>&bcH0PrLD0fk|r(i6o13mjpYBAo+E;ok(^eGAR(M zegAvW{GENzjg6aRN~g4dbULOoI!AX% zmvl~%P#j!JK+2H=0RdqkEg%Tef{c(5q+qb^*jvp7=={B0v~2A&?7cXD%c3wvtH+lJWiV*x@UX2w^F0q?3WJBOt2u-gZX zUm#%#;!>O=7&JHOY2D?{LWgx`)K-Vj7;ng1*Z~O`#IyR_L$%?7*BVkgGW!k)g;MLz64n;b24Fq|xKdq@IxC>Jn-N7FPb$&%7o^d;8 zgSw)sgTErt-})RaVO~9v^(0EJygNJ^I&RM>OW=4D{U@b<5we@yu)=Th+o^Ozh1c$n z1qaAH|4|z+x3`^o64LU=F0Qi{*3nA8S!x~NwE{=GSYtaybo3^*SFCuXr9EeBHDxA4I_) zM)cspKCW*RJ~s3CJWIAGbLb@A%ZA5h zOL1O`o=q2Zl(tpPKY*}4?ELp5#X(feBgzp>Ow3kr=VOCnbrQc}*UQ*HCBkAgxLStRh@iPi%NuK_l~kA> z3TyF|ZEeS_B|8>yjAmx0Tt=>X3TeN6T@E_Cblr{ZJqxsH4>X=y46T5A`D21?khiQd zS7i&9dyrql;CmnMRuxRS(I8?~Eg~HvHa)er?APnRTt65D_Mg+{o%7nkzv-C01pJ9n%8}cH3_SGYR zgFf=I26svH6{8i9XTwn`qi6v=*wrW1BCfizJ8=I)mRb@q%K+9XSaW*U%JCTfe-_I`7&1O zxlyN=ZzD&3u?jgkewbEtyCh+7N-Up)ZKj(Js%iBCXMDT}NQH{%V=9TWUW=xkP(i z0)AsCRQh;UU7NADgvbIY?wML15$_LuCGb++MQoyGecP7D#Vb!ger-@YHSskT5mQap z2Q8V2WoLo1alNWy8-8lqZ;CbY*^zTnRdacnZHhFp??pV!A6=K%p!Enb8sz28JA(g= zm;dl#4Xq+jY&gnbiX)*PcJd+wD{VJb61KfW@pK5ZwPm0Tg`zyUft)V)rx$MFP~tQZ zbU^kkuoNH=LAfw(G=_o90QH2M(#8kviGJqu8CSaqjAOlxs`q2_7MPJkkn zS~!dTsQRl6wWaN_6}*Ri)CWKoZaN$p}fi(u?IpF8Q8X zMYgKVBur)6vh9SX8Pp<^%~+1dom>leZnNp|L?G=BghMS*%l*fmiP(plGx+7UDd@J_XIsS zWN?&kOOP>_{q&g=sj(eRtq5NUm{h+HbOYEOMiVMsY6hfG$cXirvE>JOPFgin=xIo* zpHM{gmhgD9hz)xa0*SOXEHdb%;ZB{YP}+n8%+ajjz}4T#7BwAqoaAPp_Wc6D9HkYu z_&DJ@{>rAY^#Z>o1c2Ivjlf0i#T)~t#v$Oq-NGG}591<0Sufnsd)#G0;_f{Lt$sxU zG&?~vxOqxHBm%$=AgfLr}8SBGrfJ<=O;&WRP%P9!{S$;(p`odYS#kVMNb(x z%D#n{#lM0NXK5>03U(diZ>^^=kGyXZsnV~|-&y7o6HWd&XfE1%2nr-D|Ng|(14U{b z_u%{9e*lNG(&sB!196VV`w37I0bbq#N-9bLEGwoKS4%+y1I%p1_IYd=uzL_d?vN87 z@%#ji&Nc{~Z<0qS86$!?SaM8_{zo8L++Hi}sFc!;1kWEM8OFZZud1Tn*F$QAR?k9; z2EGV<;9pbSV*4xje5U_?OzI$8Rg3`%6IFii_7`SIx$+B1Pv)v~`|cwJPl2JUr2o5- zW;s!1s6(>q{{=vSB27J@_`8}{ZZ#2e%^brH&*ibwWd7}Eo*5Tv5^OMRK3}xWD-@U$ zJ)jDZ`z*B~vJK~4)D>V@EU+Q?vC~t<2DX$vj6Re&;oFED|7+fMf9tm&F9GA4=^GAy z?1Q@x{bI{yag-g5k~Q~X)p>dO6XoA)?)4@6T`#r&2STub9NpDbePbr$WBA}ftX6U& z8aFn9Q7ku(I*Gqv?zc|-a{{ zgWaCKALYKfGc{at%hgq<%tvx!xZ)hie+WNM_}64ZUssB-uZFSBMH&{{4K>Zsrp1!D z$@lx>MK^1>=>BNtKT-hmHjc<`wEm4lKrMR3Qs<5MWIwxA1{;fFEise%)yc&q{MfII z)njEv!)D<=?@CNRsBOBLore|w2;Lz$Hab|HlSu}lSAyP5F+$u8fQm;`ZPSNRxR}D0$;mV>77NvH9;b{vwDh)XHQ8yP_y-$e@b?= z#xgPUxz1{<(Q3Qqc4*WBxLw(t5AO}so{*13hr&y@;bQUKI~7T4LU=J8EtFIo%k%>a zF=#^}W7hrq1KQR8>y1>~6h|aEO>%z6OVa&tnD}nccl^jhGvmO@6;GpSqB^p>tV_~B zL~_e2YhW3uO}lUaCon9)o8=JJ2ZS2jQ~4gAC#Dnfo?Ao+w|@qnP&xs z@NfPLBw8WB47VJ#nH9SOes@VGEh$5j^UVfx*6REGlJu4aRA$Pfm4Fw1<+6%S;qcp&m8R&oj0VV!>Z@>)#YgKJ>Dh zSqpUXtqqaNSQdnXNR=^9|8ad#HE*8vf=cr`*atT6IK4r(srgMsR{l@2`A;*j0CFCU zjE{D>U#`Jm?XtNT{)y*yE#-(z#Ij7dOcd#i*qGMW+VfTpKw&dr@dyT84JmU=ijOwp zi|iOjg~~*Iy41=Lv5hc}aHc!D_U#UYZqrw`A6;Jzz@%+6M22lbw z$K8jAA{j%?Ei^a?_CrxkrV97@aKrWUX>C_*x7<6$`f6J21aZ77n26oI+_*M%jqY=< zmhEJNp}Zf~qucB-ghs>{X$10D#kfSSyc|8(qHv;jyUT%BmZAt`S%!|*ec4H aV;mTa%I>+uOx?eLhpLj6VyV1!@P7cgyV=A5 diff --git a/docs/user/dashboard/lens-advanced.asciidoc b/docs/user/dashboard/lens-advanced.asciidoc index 6b090f6017f5d..e49db0c0d026d 100644 --- a/docs/user/dashboard/lens-advanced.asciidoc +++ b/docs/user/dashboard/lens-advanced.asciidoc @@ -1,11 +1,11 @@ [[create-a-dashboard-of-panels-with-ecommerce-data]] -== Tutorial: Create a dashboard of panels with ecommerce sales data +== Time series analysis with Lens -You collected sales data from your store, and you want to visualize and analyze the data on a dashboard. +The tutorial uses sample data from the perspective of a shop owner looking +at sales trends, but this type of dashboard works on any type of data. To create dashboard panels of the data, open the *Lens* visualization builder, then create the visualization panels that best display the data. - -When you've completed the tutorial, you'll have a dashboard that provides you with a complete overview of your ecommerce sales data. +Before using this tutorial, you should be familiar with the <>. [role="screenshot"] image::images/lens_advanced_result.png[Dashboard view] @@ -14,36 +14,52 @@ image::images/lens_advanced_result.png[Dashboard view] [[add-the-data-and-create-the-dashboard-advanced]] === Add the data and create the dashboard -To create visualizations of the data from your store, add the data set, then create the dashboard. +If you are working with your own data, you should already have an <>. +To install the sample sales data: . From the {kib} *Home* page, click *Try our sample data*. . From *Sample eCommerce orders*, click *Add data*. +Then create a new dashboard: + . Open the main menu, then click *Dashboard*. . On the *Dashboards* page, click *Create dashboard*. +. Set the <> to *Last 30 days*. + [float] [[open-and-set-up-lens-advanced]] === Open and set up Lens -Open the *Lens* editor, then make sure the correct fields appear. +*Lens* is designed to help you quickly build visualizations for your dashboard, as shown in <>, while providing support for advanced usage as well. -. From the dashboard, click *Create panel*. +Open the *Lens* editor, then make sure the correct fields appear. -. On the *New visualization* window, click *Lens*. -+ -[role="screenshot"] -image::images/lens_end_to_end_1_1.png[New visualization popover] +. From the dashboard, click *Create visualization*. -. Make sure the *kibana_sample_data_ecommerce_* index appears. +. Make sure the *kibana_sample_data_ecommerce* index appears. [discrete] -[[view-the-number-of-transactions-per-day]] -=== View the number of transactions per hour +[[custom-time-interval]] +=== View a date histogram with a custom time interval + +It is common to use the automatic date histogram interval, but sometimes you want a larger or smaller +interval. *Lens* only lets you choose the minimum time interval, not the exact time interval, for +performance reasons. The performance limit is controlled by the <> +advanced setting and the overall time range. To see hourly sales over a 30 day time period, choose +one of these options: -To determine the number of orders made every hour, create a bar chart, then add the chart to the dashboard. +* View less than 30 days at a time, then use the time picker to select each day separately. + +* Increase `histogram:maxBars` from 100 to at least 720, which the number of hours in 30 days. +This affects all visualizations and can reduce performance. + +* If approximation is okay, use the *Normalize unit* option. This can convert *Average sales per 12 hours* +into *Average sales per 12 hours (per hour)* by dividing the number of hours. + +For the sample data, approximation is okay. To use the *Normalize unit* option: . Set the <> to *Last 30 days*. @@ -75,183 +91,258 @@ image::images/lens_advanced_1_2.png[Orders per day] . Click *Save and return*. [discrete] -[[view-the-cumulative-number-of-products-sold-over-time]] -=== View the cumulative number of products sold on weekends +[[add-a-data-layer-advanced]] +=== Monitor multiple series within a date histogram -To determine the number of orders made only on Saturday and Sunday, create an area chart, then add it to the dashboard. +It is often required to monitor multiple series within a time interval. These series can be have similar configurations with few changes between one and another. +*Lens* copies a function when you drag and drop it to the *Drop a field or click to add* +field within the same group, or when you drag and drop to the *Duplicate* field on a different group. +You can also drag and drop using your keyboard. For more information, refer to <>. -. Open *Lens*. +To quickly create many copies of a percentile metric that shows distribution of price over time: -. From the *Chart Type* dropdown, select *Area*. +. From the *Chart Type* dropdown, select *Line*. + [role="screenshot"] -image::images/lens_advanced_2_1_1.png[Chart type menu with Area selected] +image::images/lens_advanced_2_1.png[Chart type menu with Line selected] -. Configure the cumulative sum of the store orders. - -.. From the *Available fields* list, drag and drop *Records* to the visualization builder. +. From the *Available fields* list, drag and drop *products.price* to the visualization builder. -.. From the editor, click *Count of Records*. +. Create the 95th percentile. -.. From *Select a function*, click *Cumulative sum*. +.. In the editor, click *Median of products.price*. -.. In the *Display name* field, enter `Cumulative orders during weekend days`, then click *Close*. +.. From *Select a function*, click *Percentile*. -. Filter the results to display the data for only Saturday and Sunday. +.. In the *Display name* field, enter `95th`, then click *Close*. -.. From the editor, click the *Drop a field or click to add* field for *Break down by*. +. To create the 90th percentile, duplicate the `95th` percentile. -.. From *Select a function*, click *Filters*. +.. Drag and drop *95th* to *Drop a field or click to add*. -.. Click *All records*. +.. Click *95th [1]*, then enter `90` in the *Percentile* field. -.. In the *KQL* field, enter `day_of_week : "Saturday" or day_of_week : "Sunday"`, then press Return. -+ -The <> displays all documents where `day_of_week` matches `Saturday` or `Sunday`. +.. In the *Display name* field enter `90th`, then click *Close*. + [role="screenshot"] -image::images/lens_advanced_2_1.png[Filter aggregation to filter weekend days] +image::images/lens_advanced_2_2.gif[Easily duplicate the items with drag and drop] -. To hide the legend, open the *Legend* menu, then click *Hide*. +.. Repeat the duplication steps to create the `50th` and `10th` percentile, naming them accordingly. + +. To change the left axis label, open the *Left Axis* menu, then enter `Percentiles for product prices` in the *Axis name* field. + [role="screenshot"] -image::images/lens_advanced_2_2_1.png[Legend menu] +image::images/lens_advanced_2_2_1.png[Left Axis menu] + -You have an area chart that shows you how many orders your store received during the weekend. +You have a line chart that shows you the price distribution of products sold over time. + [role="screenshot"] -image::images/lens_advanced_2_2.png[Line chart with cumulative sum of orders made on the weekend] +image::images/lens_advanced_2_3.png[Percentiles for product prices chart] -. Click *Save and return*. +. Add the filter for the redirect codes. [discrete] -[[add-a-data-layer-advanced]] -=== Create multiple key percentiles of product prices - -To view the price distribution of products sold over time, create a percentile chart, then add it to the dashboard. - -. Open *Lens*. - -. From the *Chart Type* dropdown, select *Line*. - -. From the *Available fields* list, drag and drop the data fields to the *Drop a field or click to add* fields in the editor. - -* Drag and drop *products.price* to the *Vertical axis* field. +[[add-a-data-layer]] +==== Multiple chart types or index patterns in one visualization -* Drag and drop *order_date* to the *Horizontal axis* field. +You can add multiple metrics to a single chart type, but if you want to overlay +multiple chart types or index patterns, use a second layer. When building layered charts, +it is important to match the data on the horizontal axis so that it uses the same +scale. To add a line chart layer on top of an existing chart: -. Create the 95th percentile. +To compare product prices with customers traffic: -.. In the editor, click *Median of products.price*. +. From the *Available fields* list, drag and drop *products.price* to the visualization builder. -.. From *Select a function*, click *Percentile*. +.. In the *KQL* field, enter `response.keyword>=500 AND response.keyword<600`. -.. In the *Display name* field, enter `95th`, then click *Close*. +.. From *Select a function*, click *Average*. -. To create the 90th percentile, duplicate the `95th` percentile. +.. In the *Display name* field, enter `Average of prices`, then click *Close*. -.. Drag and drop *95th* to *Drop a field or click to add*. +. From the *Chart Type* dropdown, select *Area*. -.. Click *95th [1]*, then enter `90` in the *Percentile* field. +. Create a new layer to overlay with custom traffic. -.. In the *Display name* field enter `90th`, then click *Close*. +. In the editor, click *+*. + [role="screenshot"] -image::images/lens_advanced_3_1.gif[Easily duplicate the items with drag and drop] - -. Create the 50th percentile. - -.. Drag and drop *90th* to *Drop a field or click to add*. +image::images/lens_advanced_3_1.png[Add new layer button] -.. Click *90th [1]*, then enter `50` in the *Percentile* field. +. From the *Available fields* list, drag and drop *customer_id* to the *Vertical Axis* of the newly created layer. -.. In the *Display name* field enter `50th`, then click *Close*. +.. In the editor, click *Unique count of customer_id*. -. Create the 10th percentile. +.. In the *Display name* field, enter `Unique customers`, then click *Close*. -.. Drag and drop *50th* to *Drop a field or click to add*. +. In the *Series color* field, enter *#D36086*, then click *Close*. -.. Click *50th [1]*, then enter `10` in the *Percentile* field. +. For *Axis side*, click *Right*, then click *Close*. -.. In the *Display name* field enter `10th`, then click *Close*. +. From the *Available fields* list, drag and drop *order_date* to the *Horizontal Axis* of the newly created layer. -. To change the left axis label, open the *Left Axis* menu, then enter `Percentiles for product prices` in the *Axis name* field. +. From the new layer editor, click the *Chart type* dropdown, then click the line chart. + [role="screenshot"] -image::images/lens_advanced_3_1_1.png[Left Axis menu] -+ -You have a line chart that shows you the price distribution of products sold over time. -+ -[role="screenshot"] -image::images/lens_advanced_3_3.png[Percentiles for product prices chart] +image::images/lens_advanced_3_2.png[Change layer type] + +The visualization is done, but the legend uses a lot of space. Change the legend position to the top of the chart. + +. From the *Legend* dropdown, select the top position. . Click *Save and return*. [discrete] -[[add-the-response-code-filters-advanced]] -=== View the moving average of inventory prices +[[percentage-stacked-area]] +=== Compare the change in percentage over time -To view and analyze the prices of shoes, accessories, and clothing in the store inventory, create a line chart. +By default, *Lens* shows *date histograms* using a stacked chart visualization, which helps understand how distinct sets of documents perform over time. Sometimes it is useful to understand how the distributions of these sets change over time. +Combine *filters* and *date histogram* functions to see the change over time in specific +sets of documents. To view this as a percentage, use a *stacked percentage* bar or area chart. -. Open *Lens*. +To see sales change of product by type over time: -. From the *Chart Type* dropdown, select *Line*. +. From the *Available fields* list, drag and drop *Records* to the visualization builder. -. From the *Available fields* list, drag and drop *products.price* to the visualization builder. +. Click *Bar vertical stacked*, then select *Area percentage*. -. In the editor, click the *Drop a field or click to add* field for *Break down by*. +For each category type that you want to break down, create a filter. + +. In the editor, click the *Drop a field or click to add* field for *Break down by*. . From *Select a function*, click *Filters*. -. Add a filter for shoes. +. Add the filter for the clothing category. .. Click *All records*. -.. In the *KQL* field, enter `category.keyword : *Shoes*`. +.. In the *KQL* field, enter `category.keyword : *Clothing`. + +.. In the *Label* field, enter `Clothing`, then press Return. + +. Add the filter for the shoes category. + +.. Click *Add a filter*. + +.. In the *KQL* field, enter `category.keyword : *Shoes`. .. In the *Label* field, enter `Shoes`, then press Return. -. Add a filter for accessories. +. Add the filter for the accessories category. .. Click *Add a filter*. -.. In the *KQL* field, enter `category.keyword : *Accessories*`. +.. In the *KQL* field, enter `category.keyword : *Accessories`. .. In the *Label* field, enter `Accessories`, then press Return. -. Add a filter for clothing. +Change the legend position to the top of the chart. -.. Click *Add a filter*. +. From the *Legend* dropdown, select the top position. -.. In the *KQL* field, enter `category.keyword : *Clothing*`. ++ +[role="screenshot"] +image::images/lens_advanced_4_1.png[Prices share by category] -.. In the *Label* field, enter `Clothing`, then press Return. + Click *Save and return*. + +[discrete] +[[view-the-cumulative-number-of-products-sold-on-weekends]] +=== View the cumulative number of products sold on weekends + +To determine the number of orders made only on Saturday and Sunday, create an area chart, then add it to the dashboard. + +. Open *Lens*. + +. From the *Chart Type* dropdown, select *Area*. + +. Configure the cumulative sum of the store orders. + +.. From the *Available fields* list, drag and drop *Records* to the visualization builder. + +.. From the editor, click *Count of Records*. + +.. From *Select a function*, click *Cumulative sum*. + +.. In the *Display name* field, enter `Cumulative orders during weekend days`, then click *Close*. + +. Filter the results to display the data for only Saturday and Sunday. + +.. From the editor, click the *Drop a field or click to add* field for *Break down by*. + +.. From *Select a function*, click *Filters*. + +.. Click *All records*. + +.. In the *KQL* field, enter `day_of_week : "Saturday" or day_of_week : "Sunday"`, then press Return. ++ +The <> displays all documents where `day_of_week` matches `Saturday` or `Sunday`. ++ +[role="screenshot"] +image::images/lens_advanced_5_1.png[Filter aggregation to filter weekend days] + +. To hide the legend, open the *Legend* menu, then click *Hide*. ++ +[role="screenshot"] +image::images/lens_advanced_5_2_1.png[Legend menu] ++ +You have an area chart that shows you how many orders your store received during the weekend. -. Click *Close* +. Click *Bar vertical stacked*, then select *Area*. + [role="screenshot"] -image::images/lens_advanced_4_1.png[Median prices chart for different categories] +image::images/lens_advanced_5_2.png[Line chart with cumulative sum of orders made on the weekend] + +. Click *Save and return*. [discrete] -[[add-the-moving-average]] -==== Add the moving average +[[view-customers-over-time-by-continents]] +=== View table of customers by category over time + +Tables are an alternative type of visualization for time series, useful when you want to read the actual values. +You can build a date histogram table, and group the customer count metric by category, like the continent registered in their profile. + +In *Lens* you can split the metric in a table leveraging the *Columns* field, where each data value from the aggregation is used as column of the table and the relative metric value is shown. + +To build a date histogram table: + +. Open *Lens*. + +. From the *Chart Type* dropdown, select *Table*. -To focus on the general trends rather than on the peaks in the data, add the moving average, then add the visualization to the dashboard. +.. From the *Available fields* list, drag and drop *customer_id* to the *Metrics* field of the editor. -. In the editor, click the *Median of products.price*. +.. From the editor, click *Unique count of customer_id*. -. From *Select a function*, click *Moving average*. +.. In the *Display name* field, enter `Customers`, then click *Close*. -. In the *Window size* field, enter `7`, then click *Close*. +.. From the *Available fields* list, drag and drop *order_date* to the *Rows* field of the editor. + +.. From the editor *Rows*, click the *order_date* field just dropped. + +. Select *Customize time interval*. + +. Change the *Minimum interval* to `1 days`, then click *Close*. + +.. In the *Display name* field, enter `Sale`, then click *Close*. + +To split the customers count by continent: + +. From the *Available fields* list, drag and drop *geoip.continent_name* to the *Columns* field of the editor. + [role="screenshot"] -image::images/lens_advanced_4_2.png[Moving average prices chart for different categories] +image::images/lens_advanced_6_1.png[Table with daily customers by continent configuration] . Click *Save and return*. [discrete] === Save the dashboard +By default the dashboard attempts to match the palette across panels, but in this case there's no need for that, so it can be disabled. + +[role="screenshot"] +image::images/lens_advanced_7_1.png[Disable palette sync in dashboard] + Now that you have a complete overview of your ecommerce sales data, save the dashboard. . In the toolbar, click *Save*. diff --git a/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_1_1.png b/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_1_1.png deleted file mode 100644 index 1c752972791af6f6979f8d30719b2246ed22b328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226952 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%0AP46xaA>dm7+G^(PHui9yn@ zNMgXjlzz`y55i_I*IYz+mUou&*(s!M9u^u_H*{?6Fh}I9S!;~JrBu^7rnPN8RuX+N zC5B(=rP?O8SUsvG7T`s;I2Ky2k@wgBhXlSov95r`8a`1peY?E4+UGN56jkS}~J0{%C4MjnV2md`Uy1 z=&p5|*uKr-F21tG-Ucj6&2fA zjPqeloXNZX=Z#>Q$0u_6nzeRvv1H}{REGfnST0@pR@rmO$yFcx43!k{c!6`CMXTS^ zJ+G-76fq|itMcD3*_9U}{NcVykh-Of*=qM*%hg(<))e2{YZ2vS(I}iq#kvp2T$QCV zF{2l+klnoKWh0tly?!)+Saevo$|6daiQoH@T&L2EOUQaMtic8S?h3Q?y>&0g{#OXR zNAlmr#l3Lp0%wwivRLA#`kl7npz4o#j$~GCjc~g))}klbnx$G%i4Ligzq9FKetK;o zNd(}V3$$*5h;75`y!s(Y9V3F5zlu%A2$==sUW^T;@Hfk zE6wqC|F-?}OMgoBH!5ETod0=Iqd(!6|7AziOqC^-a>8M7wDm;cFS;KCX;NvRu!mMN z6<>8HNrDM{L#cU|*WMp3aO!5sQ&=+a`0KU$5KN$Q0>f#AoUl0k)XEO^q_m)^75@Pj zgO-Lw-X91Xtp`&;0a#g7XT-VWl^}CLGAU!bW6ncc?`(albM5D;afzXZkBRk@y|!PPE<`af18Nx^v@Hz3^n=r_i$O z2Z#PPCNwDqx*X9WpCH}2|! z^&P+aPfY&ST|ham^?kClbf`2_2HBN;t)P5LyzwNy{lI>gse-x{oh5feWL%$H&L{mEVHZEiKsvO}ZIf7B8qr zBeC2~jFOkD0^qIutn+1RGZxq4(gR!F#ebF0MwnNA8%}RErQ=8x?kIVmF26_?m?}{Zg};p?}G{3cLhy?!LL)s9?N~J^1ZlM6#<$0>Qx-5o4-N$*(9W5 z-)H#{x^2M+fq(q{_{BlG?oRh4Cq1!%vs+?V8K#A6bE$S=YcwtVCf?`jM01gZwYQqu zhm`&&pNXVv{|nVM#G6`K@EDHJrpoAZ&IFpTC(!pg=&DMH9C))fBP05tcF~E90_4F0 z8fj$RovNT|zU(V(Nr8Pc_|0Oc4h3tyiyo^v3y%I+izHbd7NBa z35(um`dgmu-(0jJ?Z%sRskfF|r6g{qSE_J~&y5h{9|4HIl}ITS92Y#(AQ+klv(+8L zk?>V{n)Wj}wwHq$VYUIXV#e)+20x+PCp+GPCz4IXP>FK~TK-k?%dMhPy=H}Gq3D_Qb==OrvYEAs&DS6 z23HL32^yiKJmqcMD+B!(7F?GGq3Ac5rX%hJSB$sIj$_aJrD$UHH0Frhja1Je zu`FW(?s^Faz20C(AL(EhiI~gdEd-Q7W=hXFyoj1!L=@h(jLu8_8~%*wgDQh`rZ)jG zAk+Gyx#vrNtXLDO3g_PSYe?$Wt0f|j-yrx9y0hxS%RvsQ>oGo>vv182K#Gs)r*(M3 zvc`yjxpekTh+m|6)84@IR5wiX*=BaMO0GIF0A|~?UD8MbS0|)7ZwT}Lr(u!3vvg91 zfyAe;G=9xV#d#Wk1H;Xe-2vX>9^}pYqebII$f)B}U1oF!F=O^176K2}qc(6WcP0X^ zEDhH#`b5e%AK_6vaRL9S~85Kn!s-n0I10)2v?V;A(p)4G;J50rYBex!ho;&xNn1JzM$X%uJoG2@-K z$59UkT`eYH;dTXg&l_RE-YCHKBWPW7dw2do3#R-Gk|p3~TsKLxM}SQ2sI_ckR6x)S zV%#*Zk&v&+7M5^*nBn&-t>;y7tCMKab@0A^{}q z=tsv-HO|-I<@2l*n-%ZVyigv{D^>B+AN`s|pVCqg$~$V$%a~*K=&NoQP8fUWcsI$Z z4IOS~#_P0|;$pw3@Qc!1bSDWqU)o1Zt?XyblP|^d84jcTuL%}HgWlVwYBydl)z-cE ztvgmbTxJ|sKLZwht{L`ZeKi7{Tbd-%xR$$JptBnkQIlXUxSV~1rNWH%MZAzXOZCoI z#TXnfoGl%!0~qUDX?zFPXxaedx8sQ8iF3^S&j}`3WG;?}xepOv%M@_LJJs4#JRViz z8Tk@tuxbMU+lCY&aeq>w_4<(6e(%RBeW_`Sk3-CT2KQq}9bQ)==#CTH;0i^MFw2zV zC6`WBx(G}#r=WjB`O$>0`{d+XDhR1eRpf$i#mw|AT^z-hKKD`k={h`SqNtQQNlOW6m8 zzKYQ-su?Pvxe*{1fWF^zoMlT>v>9^)KldJmZx)yvq?4ZAAi3DDkiL7UFLpxcP@WbS zjA*9qRjs8eYua?&4Rl*Md1b~1;FO}@{ZIByA0|N+MLv2&a^Bo2% z<116((P@GSU1Q=Dk1u(ajyB^AS4$^;5Mic*f$LF6rB`_k5+HYh?eUtr?5!5DO_JeBu~ znw=AvN2Kb_7cJm8D#tonZ7ou$TPqBjtPFN0G4z2x=XnK=!kJP1P0j#HowxNu#j=Sd z4mwTjdjGzr)_)VH4@+=nDLg7ka%;Uy5IJ`X4UP6bE@yS0J62E58js#J@Hn^|5s|<~ zXi1Qa&@}Xgs}XZXxAPAe$AvraN0x;%$qu<3uUs*xE&!ww?dtYuOE#9rLx{yAr49n4 z8?k*w`uc?*3uL?_F-q`@Z(w|w&1=V`S{qoBu;5?i&qF9}M6NPjrGVf!^QOt+m^9YI z2Ys!ZeWQ9rMne0!JS(%r zT>hY4PChZ8U#D13SwZLnaxc7i+T8UUaoQl&fdX!Gt$XSHL6PZ)kNU>G zv8HwcE?Utzb%=ErL-5V{3fdrbS8mhuFS`p5@@5j{nlU74&33ZsEdIr2I$(qKp8Zuy=+*t{g`$UJ!LY42x;17E zORk(ysWWWorkGEBRjdeehb-sJ2rb><$9%QPW>%6l>Qv7}Usj*Il}JeUbqS8&{!ORW zva6Jh5aStq&0R0E+wrd&BYm7%ZHrz;&(S4J8{4A&1-5Rt=?ez+sVri<$QJf&s@+%O zI)I`fg@H)CG}BzbswkE;6ulIih2vz zr%P#DLRPQTXB@wdRUmP!EbpeZs<5Rs*(ZV)cYx1MT`T>6>+E8Lx!QID7nKKnrcZEDlqSZ$2>7jioRUf&=2mK&1o#xTdOESA=}a6-M-+2!IBi<-`xo* z=OGIZkH?@sD1wO0&HTY`nvgZ1RZ1Ww_Q=zP6=i4vvnyUU8L}>?q7H zdx3j2{+V#U<-*SyW$K&=Vul0g1imWNV&0L0AdN|PQpC)DqEO!iNQg#7oy$mhE}ELo z_>Kp4dB!A`!kv|5u8yJ?6PpBy8$~~N00>>P- zsQWG+U7yi@#V?RZC$0bvjpezBKDCBQx2*6cJFF6525n|TD)4*m4*^au5gO>}FO~X@ zZA@}0yy*x}KR4CA`V9jV>$ai1ay5!ZpHL5y&XZK-N2D+Q$y`d1mKTK|Bw#k+AZSAY zG^eyB1STPI!Yh8xB+FjyG+lQ98ICJPHJ^m-5q3T#qFFrRgy*OfWmNEjileVFJe4~I z0uFYVty-E%*y|d)N;{q{Djm_k^$t?^Oq=FHwl)q8y5C z;nZzN_AQz^u*<2w5CQg|)efsl5x34wQ{KZ!n3&K|2c$hVc&y_eiFoo(fx-Q`zR$%Y ztePcPYbo}=gxjrz;La%71>PhAt2-MjlG*2QZLqBS`R9M8!FT;XNX)|3Ln0u|9MPa} zZAo{OZ?H*sj_C~;W`oURQkSZthG?$2^-sH41)Y1B#&gzgydJ)0w)#W-qxA2fi5d50 zl1~C8^yX|1X~(|R+HjIN29z32QLM`%9?cq>E?bLC@EsvITTtdYwN;LuKIlvXI6P1F zIeg!+7MtX5`Tq6d_a?rN`#!uCRZT}QNk5TThcr<48(%cbkZSJ~ zuL1oD!e*pOGojxmR6lc^fd8gUNI82Rh%~D0&?lEACwP+zKG5vF5i{ z#y;Ya;S(Qqg?rr4I~nHto?%>@KaH6;%Q^tAb4{&(RJ%5?e1pFzpjEGkQC;I~im;pF zpaoO0Hh&qKd|iidXA6qfqF}X*&v!Qj$>b4__v#b^oT`q{4?laE3P_ULX*)WY5(@8X zBP#t!D9%Z!c4)t+;Ik?}Q6+ZW9g0{W6=$9euQ~MF-^{vH!`Us))OTIw<37bj-)i4N zgJB?fmvBfHe&ND->n&%}9pS7rX5>l*!2+c&pSL1s!uZ{0_!pU#m6V+^8lUq%>Jf|1 zlJskGy4nKw@aS7WdQ+&eZ_~lJ{`}zsJS=w%S5mhU;tWcQE8)v@jr~DVaiv;=n7xRc ziT>N{m(_`NXV}6|WM+82N&E?mKAsO#To>K<5RNI!jQl5&woy_NzO9yhB6^Sf z?pf^l2EM`t8vhezzo&m54D)(oy4NEFvfbl*pC{-2)n|Q z%1v6c`Bu6i2}a!9KjjF|pQ$_;vhIARv9<-Zye{mr)A((2MUb*@<|9HR@YzkX9KUr+ zBN}PGGmNIZbUy?N+RbY=sc*I5NSri@U|SaNgr+!9e2f@AS7f&MC?c&~(Tn{#0NJREr z(&NgZiKPZVo5`aZ?qUGZiKl*gnH@_aORsM1gS(XI~;Kbp(hL9nF9M zuI7;1*Bc`2`U!_jszvH<@{yrXyvld+{y-TQcbs$eJrfANj^-{)t5 zr6l_ZoNFj?(iSSQ{aQvpx^F5Yd9dG&W|y@o&70PrSmT-$+$`B{hh5XnVdCe04=($ykJ;&wJ z?VeM=iBuNQqwQMere9}sz^l!35a#u*@ef#<~VJmNGNC^Q^fTbXAMrDC2$P+z6 zieKT|(~hu+{tN)=1x{jB*oFe>9jtseC?$~!pP!B8av&Jmg{&nz5-B(Sjr$(Rf zA|ervuR`n_mUU{4V>b2qcbsVXKG*327zZBo@l?IhviZ+$i;yIyVT6JHr6}KAoxNU# z$BXOEq4}z>zN3$Q;_iXm#8Sg&^8gSfF5UN8I?wIColfWo4sR7Zd}N-koK&;3vu~H% z1P7V5Q1U9d9rm({1ykxK0iW>t#Zjfmok{HTF1XC4cnvLHV|(cG_uq}SV$OM%)m&lT| z>k>4tQp9;u&(%8$ak_`bEd}1@5P2;wH@l#7(DOsC^J!G;kt~C{d>Bb{GR)3EyjXwv zK0_AaywWuGu5nkN(T3`>V%Uo`5^ZsaW+dZ-HpNNfV{?;*t3aGLq|5nd(lUAkUcGF? zi3=qES@_v?gxGp~{`^JLRX!ju&GB)X^Yky`;NB+3;it7109YvK>LO1k%&rNo0sa|R z!juf1)E4wz^z!g`WoY(t+gG95lnqLiEp0j$2YysvIGNWzc38msZ~HeOKEO@9X)o+6&B#H%B8%{9nSQ-AxO8E8hLi0)N7t?hQzx{2N%IJ|3!>Z z68Hz+_2rt4MVRk?*(clBcBigfzY<&n6kDw}!xxsm8T|;C5~b$Qutllx#nDdn4E>t# z-!<~nxB2NmXwdyG_03s0qf+ak#-bic>znS4fsC-K3h}NOc_Fu&ogi6{53P2=??H>8 zheL+b=}(4$FsiRBc_OB!6_5_zP}>zy)8@}{kPX2&A6pwAq4UOoBbvMEh(#ERxPuRs zgB*0a;aoTceXt@WayG+GPt#PpZXQ7HkXhVdFH~;Y2!N|ElE={TSss-~BOP3fUD9{^ z`S|)t77IUdEU2%;c4tR^Y3lWEpe2@*-_XZLoK4|Y<1dA5rbEnMHtu^`TJA`rbe1K0 zKBlhe$l$EVC*Q*2YxYaBL?_d6a)X?6GZcRNd&cz@P4Dq}{JSDD+*xe;{dS6(|r4Noi&J^@3w{=#@u1Uw@k0eC&H?lA6%es_xFF-}&?Hz*Aw1KS_xF z_rNw9f~sCA6<88N&}x2~tD}p`t6o(tQtIX$&Z2q~l_+f6-PpXh5|O7>W5e#-QwX`* zovU?)@otBLS3H*QSkZ@$G<>oyTuS#JkE(x}YR4tD&F z=6#*Sd#4lipz*;CuW>*laDSm>NW8%JZt9EI`h44EIJwVYj*|EIOGVQZkNRC&FSj^w zJC1n8l0Wgi*K2lcSGYFw4*q$L;$KhLQ7pMml?%m0k^a}dLkwWggz$p9VSpPu9PzY; z6^uF~XuW$Led)*2%9R)-Xk$rx`24MCDJ{IeY&TP?|l^=^gM)mly5An2b)qYr^%!GFirCGZP#4AYQ0ISL86hhpZ{vP{3 zkt)hb>Q~*$7y6Z^m);{XiA_e_-nB*y%5!D0K|6CncH&=nh1L?#v5&?-Q!>uD1Umcy!VbUA-up*%Gj8Nw{Wt~pq_F5Gd2TOb6()77u zyx!|JJ^|hU#{3%ziNWCH6;5eRb~y=Ng2X6<%o#2Q~4 zVpP*6nb&-e9+vM>Ryh%+w$kM_$qi;A28CMc}To=uwH1VZArvK@Mr)fo~5GerbfEpwAQyTO@`St zicT^z(vIza{W3TyE-I?F9Iyqy#J_g&k@~PIwvA6O5JT!!F+-=ienwMUp_jmq@RUZQ z{Ub^Qh-&v{9k2OTzPUcV?~t;5DLwPLU;_jSFi5B)2W)r{g4gH*zYg0rawKXbW0K#MI#~?Ga7vpZMfxss0IXO1GKdfR8FD_4)2T@#R)}CaH^;s zjTw^bhvsRX{&RoUaQLO=g_CYDZEQok@GLLc5!v+YmaOyw$O}ZeSsZ*K(u+-xv?bZ68XUu1viz9+@z z?Lg-CU?9K|-qYuNxC^xG33|9mJmkfvP%kE1B-U%)YGwEP_^Kn|=o zpN@AQMTemg%(UAm+0xi}wC!zbznhtrK1_&sJ0E;v`1C8M@ z+tIMpB(ZRop;SfXt#PQ*7Rx}gO6gI>sQSfqhq1S62GN9d!-8CS;DZL-t&mk2As(TD z)7QMczTu#Stg+TwTk;?6OKR_2WHf>3x0+w_PE9eQP1`Yn!)b$@o?Z0T;xOZjFl+#zBb`q5t zQC_#*w^sV4c%RnSLPS@ao|+Q?n1qvY#*s{E_)WbjpZ>Ij&N&`n)|B}41})8>6hn>ER9)$<-0u)tEuDvB@q1^ zU;R`VKc}1NUE2c%$!E{tajZl`MmB1K#Fz)UE1;Ud=aMzgD%xWuq;?v^cq)k(rQ z`_I4iaEGn39cL-E?By>d}wExOiRIhIzOyH-wl2QBU>#UxfRAPLu&Zr=6*@(d$acLN4Xp z{w9dxc+%ByL}RgvFd{_~PAOeKBLO2?e$&o`^#e5=ggze4n6Oq0Hsd0Ygg{et_Ec-3 z5@9VmHGz8`80E{)eaI@aBNl^SeZ;xuUxsmORWx31E3YS*!geeo!e%Mqr`t&Wz_ac~ zw(kEz_W$=P7`Z<6qh3C}ypvbT+1lYMAGvrufYmoEi|}Gn>a|< z`Sf`?ReWc^Vx{P9S4{7*AR|rrGiMG7kLf#w+Bq+I?hZPtJO|`TorSDeykO)wn6{T1 zf$&JZrmmSzOZ-@*!g0aboVPKQt?cDvXt5;mTj=bKd7+ltFg#dPCo9A5rqC50NI*9WCn8)qCS5v5r@fu?jTFAAlht&{y=2~b- z;be9etx(n?PUP8N!c%?s<-|PA*LCvPK;6Zy|8g<@8#@A|3miyBv^Xc;eOB08Es=0{ z9wux!9y>#8z|K>#*VJ1*=2S4$S~h!cub^%3v&%4%fD7oZm1G!?|K656VM>R9|C&3? zeU%r;FcGm^*}T!(}(=MR%~hm44Um8fES&9)gE+r51;ot(zn4RNq?8{X&qW*;~+jX!xuP z3*;L?!)f{+_QsGF@_m*jX8ZBIJ%dwc&CowXq-t@08zqfXSTy&1S8}ToG?sVgQHYgxN zPsNd3z&a#>(l~7^l#QlDHZuPR76P*19x4ZUe3f zcr$ZYwws2T{cGy8k7QP}0?GIjKRDJY-c^~P=?@{4p?exLWsCDK=qyhEo{azg zWLv1k{cHEHe=h??!KeSh_4zkH@b7G{_>`0WelvviUHluQ#8m*D-`k!YqC4X8IM6BI zf+v!o%Io6ZTSZ0oQE3MFtv<+9x?G^o|F`KP=_#g_dPH3nXX(8Pr2*?F^H)obJ~{Wj z+C6iTZnUd1LZrR!u1g0SNyql}#0{j0q$Squ$SwKa!mYDP6kZA6>zF#t*2f7%XU^F* z!Y7LjlxMJ}x4yTHadr*p*!(OOFuANhQ!2^Mb5_<7EAEX1^VGZqf!p+|DpQZusGiO5 z93{CY+ajVkVd68qaJsWkRh;ZnZ}%Ut31}>Q9_b34<{ol=8XA{Ys#_~rBCAE;__ffP zWccf7bWo9Ku*e_$Qw!B%$`5*+Bh9f4&6-av6oZ8{O2kZ8dENm8mu1b(jlz7GSk37u zqzWj!-B*|dZw|SSXL3N6(v@$=i>&U2(~W#Bco;9v>zwEzbB?8rN(BaeU0@)*Y`*H z^5L{2SMOZfqCEoV%;%YHA6|VR?)*S3njUB9%!q^Rj+YmGEE!n)9fT@KC*;!w#BiJt>RYJzNoDVq;mvWcW2CkGIM2at3=Gnodgmhg z&bt(QH%cpOt{);ghr3+KURlgWsK6sz(^ckt4WSbACu+Old8}WQbh{#Af`ciQ;<&RQ zd*?iZsS?4UW9+V<-f+b3cJ_8_ZJs}4iC7szl9CgE}8F z4Vz3u_X2e0r=yB<$k{uxXc% z2lRFOF(_>sDaokV0lpkuak4S;)6gVv2f?eM9DR%HZaxX+TOr`|aEHe_)wY8*0j#sb z3Q09~3tL+x$pOMI0((g&I0d=}7@s7{G6rbU5Ynle9yrr+&eSjacJ(X)!~RiY|LvPM**Lm}Tq*UQ{${369kE~5{1H2Q zLCId*D}0+QdLt&hFBuFthEP@xKKvsydDe6wUNrdh0sPN>xI8)l2}G8BYZVMvzFt1eM7XIu)h z^Yy;hEMzTIy^(<9*(S^M*EgGRZ%Pvj{#MZyxHyaDtNeGhrp8Z6;`>gUf6J_z?GB#H zUp``!%>^-OqHAuVb(}R*LP^V|$80TBq~V}j7oC^p6G2WG@M_D@_xd$b@`@e=9q1iD z3skop&#$#SS|7ASkwU;vBN0zyvs(`PtOXs0DZwUx>W{nW><`I%Y4f7{`omkWha3$T z>vQucVz~W)C=Q#I#NFT)IM($5$5CVKU6WKz^F9?j*>r!X@372kP*EdkSpQ+s(3dNF zBh7bY!m+JQKp!MxGu;M9rT?bcX?pe8wi~q*%*ZkdomzM^sLLqBn#Lc3qq=$9jXf4= zBl5+~(RUmqk5J?)q zW-2#v1JB$?92#{E0m8mF_y#qX$pE%vrU<6DJ zL+F9>52lHvPTu+cr5}BJo;bLYll223O>f(PJ-p2_yJD2Ny_^CaAE`=-X^Yz1w}^db z@H{3B7BGF)0d2WVq$3eEro4AKU2ZtsMGefef&y1zhC8vQ0TEA66XS7$R)P}&bEXVDQ$S_a z_vfQQu|SFA5Nn0%m%q`MbapTxHA>p&c%)}%JXLkVswQW-qZE}hDOKl5;5L*3iQM)f z3#So?y*WyQ6zKf=E{G$=w3y$%PV>1eD5BdU*PfrkU7Pq^mFtDIS3MH?v3xi2m{5jb zSVmSPO!-T*fgjmJP;iyM@SHc;iWi0;Bi*;Jw&?AR*DLYH>q(Y8Ymn5#PP0Bo78yaii~h zP3&W@OSHM5&Gg#GT1(c3jnpfUkAsGil0&PpS92@YiGHHk;45vlg{n~Dr`)Yi93x>g z0`q48{yIPijv^q|Q~Lh5#`BWh&zzy%_O*YOC2_WFC6xr8(8L<&Q%B^A$cGX`M@MQ2D9zpIz;~Dzlo0$DuDR+Be^8pvou*S*-25?{{KkHC-kdPJ8iO$VM#^ zusb_LVb}jl8H!n;klfW{!1~JEHk^QIVd%SpE`N+X4tw+F+g<}Nc|*F|d?yMgTsp#Q zhizRY-%uy}0#d|GDN~#$tDEL`hT1Y#oJ8#ArN?rWS0;&7Gx*Niq%VF)A&;Vu-UavN z;%LW(9NanP)1I&?FDENCQe#|FD`N@uyBuC52d)Ne>K z@ZJR&@wRmfZ^+@I69s58tEf`wuuH*WxGfrejL54P;~i>72KZlg#f3Qx^{K1QD_>ux zyt!6I_XB!8^$hr@ys7kIGrzXJb@k77$TQsVUaax*9S@r(3S9Q;)EY{41A^GmNCUT(Aw z>}RoWTm$3yQ0%`}{5Kw_MtQ7MZv?y&!`z5`>3axnG8e%SvBbPZx3qE4mS@nFZBg%8 zmyLG_cHIios3OKb>2GyJSyHz_2i-fG&mg<@@0V60G6?_{uMH!7zO78U%=0M>ul7pS z!w8=c3BC3}kLCy_5f`=9;ap8zxuK7jw!CNs^BJ4Z*Yox~;y7?1(j+%Fhf&g= zQG`BtWCJ6)T{7oSd<=^q*`u>H+?VEzq<_p~Fc5LlwE48oroQ61I|(!FjBJ&=ZC+ua z^;kCo-_DaI%T`!YNtK}t%a4zLyYwqh9bR8@N?c(te0$3%RkWZ(mIPcDLq95;vUi;b_r zu@G~>Ri?d&Nb_%voPfb(vHrVLI52>A`LoxysC4_{?Ugf~DFsZW=bkrW(QSnb^kk>} zbJzD-PYK3aE?w7|M{%`PaRzSlKp)D(`|Ugp`+AV=VzBULbnU!pvuSV8VuV9Fp7KpA ztFZFB14X23GjdUr(QCf8b#i<@(Io22tIZw{==QWH#@C|RqZM=Eak6JA;c;3cPeErv z4w4{j*A!8R*qOwrgMvsFw~-RhH)qCKAvcdl(5$;u=VTEH^|J;v%|k)+AG+);wMT}2 zzi+d%d%t+;QevS>q4mPwzEbJO>qE1uRL$6`lC;vQgwUzE_FuZY2w?2&)$Uu}Z`cH` zgvo}=zO{BR#gQUAx|L8=m4c&0`qncQW>vT{QTO0)7ngeOyP;vH2Pq<|uxRC)cxuhI&Y_q*E`RuV|FYY4(D@vdhJ8b1H4Fj#Rx^zWVKrWLygz*nYqL7Y$1We>hZm zR(gcDh_EegKCH?EO1M8i*?MbUvimlgCA_a;b;~yJ=26k4>!5Aav)7!qi4TPx|H^S_ z6eb3CJuono!#g*HgZQ28Qi>hea zGMDZ>{9`X093J!IW6#|-+;f?~s8~WHtMz@C1ND@iSr1Y5jB~9&4u?=<4V0R5p5AM@ zf?0};&cs*>>~?Q6Rvl!jpAh0CB|eVKg~AHPxIlstMkHB|t9}ozU%dfaedbgb=KFD# zeeH3Pv+>b2HJ>7y>`B0om@={^h++$jEfk`ybGOAA0bYw-e=PjSPABHkG*P0zaM!FG zy~!7?H>XkmnTAn-BW|dIr}d^A$8gm4X&s|cdoaQ5k1zh3^@y?RtxoO#LYyO=D=GTbS7y_zL#Jo@n@dh_Y!80IyZW|an4 zk9Ls;*Ylm%$9D_~%?P_&759xDV{NI_ORmv%J&)#siq>TBOCsyaAVqy1lKSm8dSq4Tod0%l)ZRz<~D)pyI6bVA2 zkXkrOa@XJGqZrDFs}1jtK7jI zVzm5*Reyp&Ue%YJZ1%S=Xz6PNhD7z-r|KELR5lByS5dKu={J0|vL9zD2XlW+C#8kJ znyNJ8l&s?xtAnbVU%@YLB8Bf(@-&2D&MTlTYaZKfa~%)Jxub;lr5Kct|E_Pi`7)Wx z>vYL3rX8Eo@Wq32ns;Z8ye+M^6jz|R@mE9u9yPIJcYJqmazbadt>3H}_G7uWqW~lf zOu6Qab}icdQKk0x_G6rAU3@3yJzjRC6ru1ts?u1ECwSR7{)PPYl5gweJ!+&~;}?Sv zH8*MA3Ejq_SegN~i;j5tLHRZGuP`4yh=4!1kR4`%xaF2nu&U`-}@5WO}9StY4eWSZ*H zIxGoS84KCY%B?*8B}E)(LC;g$H$kR@Q_U8_!l*+H}^M=!YgjG=*^~;;VIK9MA30(Lkzzu2$(o8w$}E zv;I=tI^{0M=+LdENqXNx^QVbxCT#fcXxM4 zkl+v;0t9z=8Qe9vy9IZ53+^+xySu}D^PKaZ?*~k;S*yEu?_Kv*Rar4SDda&$(uLxI zDtp1CYPCp-CChTGT~=|zs`EEEl@_3u#N+Hn=w6*pleY5&OOwZ6x!UlSi0N=pLvP~q-0m9^9b(a5GF$#+scHvSg;FsQBvCMYSe6{(a!2wK{g29D57KYm zZ9^TMq$K4leh9WAqBlU=$vbKmMsnkt&a_o^*L9KyXD-}h za93CY`+VNE1vx@q|4j*(){PxB6AI`tZML6&tNA@u<_>t}esmlhoMS50cOMvX8~6;; zUaqGe`XqJV#|FL{ASdKAY;`?y=;A!jSHggu@h&2qzZ7u~$-o4B=BM|0}R7fn5yNqd@EB|nb>%{ltH z->8XhSNod3TKWv+8#+U#Yn=(?28PL=z94n>IUmnmQVq(b`8`nMdZ0&<^T=)Y&-{T? zJKL6SUn$tPK99aDx1Dbm*61{JvnErMghg)rDK7T@MO{D`b4t?TiwGt%J9sdfk19=3 z2Xh$1r5E-kS#z`AK5WuSyvc90`g{Aw*r(-`hY|q`J zfi&r7rK(uJ5kAO^ilop86*}=UAARP|BxNQ^$E*f6e4E&q)%)R$$K=T2(fQl!U!${# zwmR2Ujdb^tcnzMIL%6Sevj>Ir8P?I_FR|kzpwUL&as2YLZiL+0^A2s~2PsxW@f3nsSH<{%ApQDrxRuVP=F%Hk3+G50EDL;)Tyi z*P1ATPx7YQZ5I|iq-Jy5J$I>a;L;gF%{7k>fX6)ZpJI`m;>VfN?Eeoy6ET!g96OAGpi7{~^O zr4)bKbC+3&8%C_!Qy{i)AvZvGJkQN*6D8oHnE7TC>7aNZ;dqI@k*K}wjMXXK1|Tqt zIj`v&J2ey{QeJXT<3I9M&d6~kq)gP=aBX`ex5TwxJ+0|F^B}KW^ExHwIHjPIwTT(= z3oB`KZdjQw9)|&*)H9xCSXVo>Qxe6imdKknopLw%`FeZjVn$%bAe`qj9b1qR_e={L z_mfgs7I+5xA^z!wy4V>SH+j&xl>xGaJ{2iW6bWvA_%~V4k9l=%t{;wnyd!*pJ&X-z z$BX=-OFVBk7A5LFKc#1Gb|c2{M3m!xvCJVkb+*F)Lg9#fe;a%0L-913+cWd7GK)BW zxYaDt7dgg2VMm2Z@}(q?UDL-#8Gs2(XFg@Kp}|!Ts}tyk&pGBZtwyChGp@|xexcXw zwM&x8ZIs8={QVsxgkJ(5EtKt@`e;T?N#yrH5Ap6U>N%B2y?y6L;4a}7hbF!#5fi2- zF1UFQ|8{jrMUq$%Lm7Xw_p>iSG8p`tdVl9nL8V!xvH16A)sD6DPIIYZ6=JJwJX!Pu zo72;zyBFABo?##@pU(KbBvbIo`{dR&3l|{%o6Z#v4Moi5?k3+woCH_NWJ%156}ZL+B3cz}@>`kS6= z#;^&;v(oReH@K>ZplCHR#Q;9I9h@g&92u+47h#7T(+?@+UOopW()54~Ux=#L>^#E4 zo=UHG+UPLL;eA~UDxPc~dOvzN4F+6o^+irC58$Wi@lPeyjJ0XVVG3*h3r359givsw z_l^8=;heq0%DQUPZFNYXFmrPTq-cf0!XuV+W~3FE=Xm{$e*TT_|3`K9DtzYYrDA&Y zvFxuJY+{q_t~4Fl2rQ+?BqYUXFN*sg!_VqnRE%^(KZ=J?!PDyy!ek|aA zPmA1={_#^^I2y5l{H)Mw#Pj}Cr<&ItH8ht0Cnb1bHRao!t++Niu!1xi1pj8|hr z%?3EZ4{Tyo5pnm}>uGPY4nMZ15S9Esm6%Rp>-lzF9ck9KxQU%~sMnRt?H$0S{|XD4 z#vP3zP28L;R+)lYdO*ItbCL9W!hYtqD;rxY`C0^_ZrP4rI!N42=L2z~O*xkUL)M;` zR%@Cd2h6%?{!WFNcSs_^)fP!3xBbN#2fqzN0}#Gh0~#CYc7o)x(-M-o)zVn5wi2ms zeI6AMRHak=j~0`&*D}$3Y^^qBKjE3oMSS(~x!0&V0a?BRM(zowsti38Euh4`X2TD( zk*H7lC=-qdw50m^=VpK0+*oQ#oof1;Ky&o$?#}X!&A%+|NqTNtdiAR%mcQKdmTs^V zKLL6tcr>JhxBcEZfT*1&Q7SMzGxzTNIE-jv{M|1fwFlGeL6)%1YWYWnN@4qcQo7?w z(x@=Tk7*Kn?>zDwe&58yD3RxKoU{*!07v&EZR>r|mTI$frE>D>tS1)f^!{dlmP`$c zFVQ+M(%{{qxk$>XS25hF(`XSPym*gEI($#pq-KSt#Fx zp-E@u7f&cZ7u57@*6P1EE4h;6Nqw{;w6Li37ReIijxq;b9r(tP2(N*YIO^WLV3)x2 ztTS0WoV1cRelwRUlp`y>eFm#!>$&_E4*jCO;G6M$9=-$o%~9UpgBGHBc|J0|rbNRc zD3>46N`c))3!Nf=esa(H$bFqOW9->9Uq_f|uIfN*1#eaRhERi#>^xP$S~bmFUF_Jv z!H&o4-a6Gp^KBrL-?~KcHEd~q4$@d(C?6leZalo~iQC**QDd?H*aPvmCc5n^*shh1 zsh~)&yg=QCiFsVU$7y}HL}t$ojPQKwV|f@%oYpBG`yyN>!DQ zR*yruLN3Q-lXtC{9%-#(VF5^X8gl^KGx;rmzP~i?6PoR+Yps+5OTDh06(eW!J(dh< zLurnu3PC?Ami*&t7Cxpkwcp75v%uPn;z3$ParvkjrF3lF^eez5^%rnB{T>G^nACgE z57){V!N`)PXz(`kaJK~ zAiKvC;(CL7lzN$}=0{o0D<4^p*VKxhbCa~9FF43tm|%bXQRpb6*giC-RvhM~eH79K z{*2vpEltS#!YJtQIte+51wL0gV-L~oK5o`DP;hvk`JC!k7fU)nJQbq1=V|=?DLdUL zIep~}0~kgLv=*5?EQ!_BjT&EBeRp?viCJ!S#7^3k26d}oD5MhWrI00EQ~ijxNBd#5 zP?j&^GoWMOS9g>>y_y-npN4+JIUJc-~qz1Wn8-Bg64P?C#O5@p*%i zXk+>OwfNiSk2_wl#OAD5cOjC!mx``nt?j5i#Xp*7$3nOgFpNBO3v6o-(h{pl>_Ll< zFLlx9lpaGFqG2LFmn8;SvNKm-{EnM@Z62>aGsaxb80O_hkVty-q#Yk)=Kf^L1`OqA zf{vfJ_7V3UZT0)(IemS1ZGRh^+U>HSXG|J_pCi3oPE|dpm2oN>-GGE@mESkMy8%w? zH7E>d^p#mfB^U9P{#Pi0NSw3?a32jm`x&`t;hq9y&XQ?=CE#wysg9$Kc}jY)7i(vC za2p(N6-5)KGdXW-9voi;9p6h&10A2@6cb97GV@OnOFC*(MSOMGtKozKsRGyym1nN< zJhw#JkLOEe)tZ+T;7);6ry`bY}cq2TjAPsQJ7&>1S>Qv?6ghXMtse2BQ0qpNCO1X zWIkCfwAN+H_OA^Czvym;ekQcJJ7UNBNGa0?C%~6f?uLh=DS#joQby;04Z+?}F^BpO zlQZ^09?1R5lNsD^KLHTmJs~|Z!%AZa%2(Mkg3EqFf*i<5-?R2>V_c*8@ti4g4#$*& zIQzZiu3C?uFldKaw|V07w&SSa;D&k(I)j9dIwka5PSGzeZrP?N4hsT!RJ<*n5wpn* zq#74R!4uscyRP7XX=+qn$ADlrhxfjT< za5+#@HkJ!4Hh%e#z{c+;>wo{n2Q4-ipNx>6XE|qhaVebGR*Hy;U2b%BT;O%iaZe0{ zem5Jf($QzKo%soeno;n;=n>pl&k|7nnE(y=lkY3j&lzqNi(sU(el5xwW%YCrCjTNF z8$lJ$Fvf@F+OzcDs#ByPzn0FIMkQE1a&-4MOd)CNh1>yD@otE2IA;ZN)R{f7?|vSJ z>prlegwm9mAtHC2$rBghHEiX7((3Wc9y6_Nn6}&UE0+vKt%G+6G zJ)IA)f>O;Ui^!9n>&>zU;@+`uoJS5)4gBbhIEpEPf9)V3d;=2|vv(-p8umCa{_0FS zFxTgGj{Wipx>H$H=etFh<1P&@4-&k(%v~`{bupj%O2^CnDJf_36_`>BV@1ni`pLig zX+t#@Pzf^-hW^ONj=>Z0^#`EIVz%FR=U>nZL}jk}jm-$;ggV#q|Tfwsv?yT@~e)Q@B|3%MS|&uR`>zTwdmFBq$Ke$MgEp_TYo zRl<;g{ZC>b(dYthW~J9+WV>HMO(pH$)=S=2w&u&$szP#%9bLjhq#9DM)fMT9BScet zo&UoHg{Wl!sjy+A|5Q-O%iWUzeWr%;wcd}k)@A3pl~5?%gPJLJ2YTC{>R>b}`?DTV z&g)ZN{z{W~56Vvqrw6&huky3dQ!YXgy$t21?Ipgi;i5S5WToD!-#3REQk;sDZW? zw6-C+N$REZ5oF))oSp7(?P73YH}~qrsYp#9F5?RPOR(1QB%kb|;~rsg9SNvgB?9ej zD8312v}q9qgq7FgkrM4^gZF0asE%^&RUCvn@OMuzJA zM>5%VwRya=#lJ?lF}*uj5t9B_4S7aoF<4pKtv@V?s`OiC*%rZ8{~UVef*t*r!7lpq z92#N9pkJ%QmS}Hmc0I3lZMq&?Y6M4M^O=-o%0JwV$qGO zx_1E3Zdl_-3_FKv&b1`}s2{#Wy(;e16N_xX4@`RRkm9v@82podqY~O&<#e^igD#DCKdTmGwlNL&5o|% z&y{^eV*6UnU#ADC-apMHLZD;{rk9$p7#jJL_TA4OzYWDb;~NH;?{K`)P}{Li3;ni{ z0MI70_7>P^A(S!Be8S7W@CQ7hngZkm{U0@{y>2gY5G?@&&vg&StDC<7yTqrfrK!4- zumW>a;Zn0pdx8j<-~1<2X-nUb!*t%^@6R3j1JwVKzF@XB#u@nO4u1yaYsYb%^sse{%o<7Xq@L)jb<6oDaXzPl2B@KxP3 zz8&(5n;gIGg?oC0eIi#AU&@nv8DlS+Gi8bjwUP&EX71&tZ;ReR0`}QEy2u}?(gYCh z(U%*V`*gft|FEx&sX{Ne*RMrjDvK(tWJ;{pO+S&0aTxSJ z4tjp{fJ0Sbvk7=@^BZelg}iKSG6%#_rlE;peBWDgM&?*}0CWTTkOHCV6#6a->DwzM z#fU@k-&fmRQ<)3!SHfST27Bn0&|n7#=^N7zBSN)zDz7*H|9ux20}iqdi++3RDOl-s z$wGXHxOw-HgSd|pU*98EP#$Q1|MdGD-IIw7z$q2g`2aOOUY6}n55tI;d)@!lC|8Ah zER{kb^y%$|QeXhMX74P2RQ}WaE zwI6MAZud6J51&Ess7rzCb?zYZFZciE-2XE+%asmj6?;0I#)&3{y{J+NrONERDgN8!p&HR6_ z>z{%VwbDw4M~Wh=D(0kvqr6{(xr71V2H>VYH~RB5Nc#Wg3;+FxD+Ic$>6OAasKMRu zyZ?K^o=9lKKu4pinu3cS(hK^?=uF{L{K%b*omL6Le!VkM9pZPiTv?RFz3s>(RQx&m zvM6ZLceuTs-XJeOTjX;-l@Ei=%Wn=JF_%gU51T)30hFIVQXNE80ALNBHv*3ynrZv0 z$LW87`kj08#&ZCYl%C`hxT|IP7CiFq`w`7z))$3>2!N*s5TYKj^pAvH*;DEYJsNz2 z0{X+W14|%u3$VhR9WIHVlKk&cT@=$m3ZnvEkDl;=I~J5l>&xENHXYdL!Z?B+*@q&< z>|cCe4&Xsn@I89|ogiD(`5fwNAQOR1aFRh{Z?56@FdX8052RK-P3Vsv*vA?jIWR-( zh_(IB;kU%%b=hY^$;^dFMM7^^`JEf^!zS3;+V#kO_%$~nO;CX0#xos9=!kHCmRl_& zjD1{6br}pa?=kaz(#4F_eCYV^T>rsR|1OAJhvfL@U6bZ3{U+jv81>d@Pa-!zF?f3m zjh4~&L%#D5fgIaR>98f({0~3cDY~+M)2C4I1m|?)oaql*`X{znrTL-UOkVq0SL{>U z_ZNj`$Of&(btE?1tGTZxf2q;3A^WdS1W4(`f0Rl4Z_)n01j)yT@9v!+P>pdoa6FGn zin;8o%_k(^{c`CrFO79!Wm_~q`8$i@5>My${A;!q711+<+kX0X|B>>zfWBrh zpR)=52s-$Vp;v2|@W|;AEV7>%Ug`aK(PTt9Oy_kSN%^Sop|b=|@o9Vom{yha99H!B zqFKiwzrTCGB74ZCGDA*_AR7MA0CZnS&XVbPw{Ep}2-qXL2N$&DbVQgoUuhYY$}-=6 ze~Om&+i0*SR|x0Hx;P}UG#i|l*8B5pwFS&-D~Jne{s1SqK!iw2+zK!zA3$CE2r>5h z4y5Y;ISxSHx7H_fu5JMaM9!kL4vOyLAmSJ@)zc8o?VmY zdhzf4;9rpag*L0LXYpe7>cW(jN6!9~_S|q>?$$GXDj%_c3*8(KwcoWMK)QdFp2rzT z^BN0h~8+nIv>-W$Y9x2eEKg>I}u1FG6Za&jJ z6&fneMgp&oC`sj2PG_acy4PK^=PmA!Ex{k88`)kbmd$qWQXO^U&OF9I8&IQ@CY>t+ zUY)Jt3BH4bz^wNT@o1q}9%0WjZf5MB?6=E!S})R=pg~i~oU4dt&#?u37Ao>jv{R%f zJGWX)(7{KyGTp|cq?Sr&yYaj!Zri?h7fTuaoFcLTAJW@InWDYOx#Xlhj}``Ar`f+Y zHkLlnJpc4ZI7MvUW?p+MJ9mNoS#9rHk#cDFb~%3_2A3{{CluQL6J;M?c8PJXHp8FU#T~(c`J*I?zhUJPL zqU=?YN68^gRAMu3XT*sD4AaL`!TljnGTD2E{Bk*6d%7{_(p^{pfxFd5o)!@bwVBj4 z1CsgZHl2&pS(HN^F;U}#x9zq>qmXWPJXh41-f*Zr-$1C<-e?(@jS`4UJoW8xNRK(( zu&jiBb9T%>3@P(TTQJ$(>wZ`1jGa9ltDY02Dx<8^V%XW7X9A`hr9eyMLXK_EVR%guzmo-pCNH-VS^`Yzb#Gzow_#JZ=QV z+DqI^iD#Cp%fx;j zxKV_j(5PHM3w!@Bsz=5z_gCnm#Kvf-Sz^Y3n%@?~`Ct`!f7T3@gsXSAJHGLRcliqC z=HTok~fp&C_(aN?;b`LAZW^Cg2@amxc^QW>5^ghe901lX(ZZ`{(N|22JKU ze*L%zH#c#zq#bw-boEA`f(G|u*Mqh62BiMT6A*PLy0^IXK}s_=PJmUWlbN}+YDE_F zMQ9sAxDjtgn2!h%AM#mzv)9EB7UZJ)=BEC#zsZqXX+ymWyof`;)_e-utV1EY@`U%f ziC?PFtkScT3`J{UtZqG%S^wZTn4WDfbc%2c`r5niStiP!ZQM)zjJy_~8y2yBlY?^u zo0dP_?=6BIhy9W@czl8Rw(w|kbw}C=MM9snFE|~5`$Fy$Hx%Hsg>gi9bH!Ao#h3Jc zGhXv1@zinAzK)J;SOi&<_t^}0{Ka=Tn^`O*pmWPEDGtKSw-h3)qBeUGZFdCOo=|Nm zlps)`gAj6X-Ei8rfsBy(+QBT8W`3aOfH9aVH6_=0P8`p1UrFd976F{r-?NRt$MML< ztIKGso*cPvbDwc(+Z^2Q+Q8)XH{+Mqz7ER;^R$6|{7n$h3=pY;(7CJ*Rw7Z?(t( zM*X}pwDPcilWet$1u`>9Jhm@a9U`U$CPC6_qNErre-z*F813k#FWNPnE!S(8{~5~m zG}A9Ue|@}c;lKU5bhFRcxekZ2#~Un!cRm>51$f$yx80~8!ieTDpR#av)rz`ToXX-i zG3%HKslytI(z(#%57|W4ZMBG)&(~X?<4~G9ImNxFSb!u!7;qUJzbCLNkw6rn@ETBE z>m*#u7smZvul8hS{V{F`l4089Ly)=$Q+f%iZutJ!{4qyZqsW1rQLoIuP!TKul@6_|VPu~MavG#OXX@ubd-*IUhC*{CD@}iOSGX*FrkJ!}vg1;dkb8eN zT3{}wE*jNqva#^~lkZRsagz2xMym<8mftzZT9W>&XCJ{au>!x^AWS zu5XS0B}vTjqMPjRpD!ltj+!JqF+6S$$E}AVzq-BUd*T_~G51?r;r9t=7mClG{{{*aNj5NR z{lAN5Jvgd1t6_WResxoY5aUc$iZR+UGLVho!}nVp;_GW-4+w_Pz`U|mTWDSfxqlsB zV{y<#wd?o(TF33eDfa$Iph(XJhQtg)(Z1!2Y>|6?%Kc2nkhp``Fvw|Wn+iZi#bHD@ zoe7renZ&Jzr0SJ#*mhe$1r0GZ!r&EU3%alL!5}buM(!y_k)gs$g(A&GEpN&m>?$zI7?bEL!@fK(v)a)#yi#T{++!6=%q#N$Zfoj?H$ z;S<$YV7n}^?{_E}lvFNzU=SXnNbd9ro_TDXUi@(hKjj)_ks)%xA2|cBTvj}m8w1j% zGIv;x3Y!zdoMzS)c)#mfIJ7Ia<(uX)W+HK+_+lT$ZY~^`nqS@Q1vnb3eW*xZ^iITY zyM!V53A&xtLP}a%#abcEl0IVYtdiKYNJqlU4URqMyNf(2^2p3DLosxVHs4p0CdxUl zvyHCBk$!x0lLd2=k3qa5{X3*g3N|B=Cs@V*U6a^EAjmMe+O#Z>zPxIOo2{?U(1E!R zI~qEPkcNPvPrco76Rlqz4^DMpc`6th-4(4@Ho_(3h(C~_eD0k$o+lA(D%dF_S?ny?S~kjo1F5WeHt=+FN)pjmGtAL z)ng(lNn%flC$9&q_Ep|B-5PWNlI@JK7vGO2?lRp;9WGIWa|Kqw^!>vGE8 z@b-Gg$3u9LjK8qftO!3aSNf;8f5m0grb)1!3j(plu4G}1tQ2?`}!^JqV+)L zsU`_HCpkgEO*1(UnX0C@pH^wtB?u??I!MsACbr=}8oqXL^g*(lkS znz?==|DPq5T6^_~UR?iB3 zmtWYpi23uu5o(p7k@sSS$+Odq-WqAG`B2yMH|NZ6fl)_KFRPcH2K#)RQJ)F8f#Q@j3M zaNBj&l*>$;91p$TE-5)Fe9iS6*zjOTgw&Pt1lC-$?`7KC0<+*WN;N(k6pAK3-=uCv z*Z0HSlx+k7E2aRk6f`x5!A0c!OfN8y02D!!%1(diB6O)Z-(LIp4@T_Rop@dkLe?dM5YC?ht3%Cri} zMAYNCr3_cXbIQq}DdH6!xLN2d40!WNeM5V<%i~?n^ofL5bOI~ftoeT#T-BHVda;A6+(XA4pfF3+Cjs)7&J6p1e$U*F_TT_|0X9lhA> zcx--yzZrvrva9NlNqLQSeunuDA0M0Q#}Ai`!)CJ&dG)1*mjYPf6wiH5ZPDw*oPR?} zX0q?%Px;hcv#WfR57w?UJo=;8&d*yzy_90`N1T2a%M@_U=z2Lhb+a6|Mism;Q9VB# z&)rlAgy;yym)*C`+!h|q!Z%0Qz-k4;>@4Qg_(XLSH@nw3noD@)^^E_^0EKkRoQonXk3mp5NH-XM~4m4NIVS4_|I4a-o-^|nSfR`MHB!o@=VK6V1mdAe9 zsF3=Sj8EMF3K9^WJT}FPV$*^kn$6Or=T;D6>xYNmZ+uSb`C~0{ToUbg;1SMsRZF|2 zT1TJPaCK zf1dZaOig5`S?eDIEK`xhP5XTak3uHj4`EEsyB;@MPVL)QMUK{|{oagv5P}Uw5?=0K ze-hM^H@lu{biC%gRzVskn|((}81-7?Pr?;>jE^PodHz8tgq3+EQFD;qqK@r_k>wms z3$#FtR6La^?I~nrq?vPgzQUuqlv35Clm#0~{~0yh5+>qDVspzKlQz<=E#Rjho0WQq zopqF@%YPiU6twsS=n3+2c+w9qnSROUanL7}zUAsDy$wT`s!9aNs?* zSGpW-FTD~2GN|BpdQXrnUV16xU6}Mh*^TATe)8-^T6){P3Wmv!V(FS1OJOj9&}UBA z!^$js;HF%tg9qXcn=8#tEfMyU`%?|j_5=?hw_Rj1z4io$>F?~9IO{JtzHOO{)hf%? zT`x`*1~n=2!imdENNP;FzzL0R8~hRbJYfCoZs}5Xwq5OQCU@Q3Ts^a1>!5~gZMjZc zr*+tGkgP+MYF%{ZHx`4s6%x-aJ4@wT!AeJL8o^!fQw5NKvtHGY?+PQ559N*Fiwv4c zZVX|jN&XA3iL8}BLOA^LfcHZ!XBUbfxd!za3?UBlF$=Yl>AKSLr8|N4=@~zu z+gmpqgsf}J()az&C@2@`#)9Nze}87qU6Inl*WKoqy9xy@Kvsg`~<-`m_}MC~Mg3-e8dssN;QW zMfx#CBcHx4p>wK%s~b@eVpHG9ome{AT%luNllp6Jt=??Z!T_DL@Kk|AcK+wgJ4TqV zAdtldxTMq4`R@c+P2TElvy+srQ7un@j%4|z)vU;u!!Ue(_FACS^gB|Tg>b50%N#>8 zYZW(3F6`~49vgp+tZzr>J+(%Sn*y%b%Rhw5_>IFU&l2Cim#fW}jf%WYEzTKSwOLpj zhzvI+JcFGM3W7J*AQ! z3bkHc_eiW|H|;zDz~RzPmpY44PA;mp(;GzMUFgl)(YYU@(WzxbDC$_>wY*E&@!Vc< zwu3T#>jR#BdEW@jwTez|n!x8=qL{_~Y<~YYSuatV)B&##ibuj-!?MAADuWUGpb7Z) zM&o7~g;M3yHYY-YUm-DcNZ~z|Y5*`c=K46kjH2qy7yec2P^XaDH1pb#_u@S;Jozw` zI#9XzeKITVZ>~th`vQOgGh8x z43B0r4!Uz}GLyz2_aC{YQuUPD3>^d%Ug(j(cD*+{CNdkpo^W2Z1%J3JKTr}jb z5n!(~{A*`i-iC3m=9w#V75y5QSFznn|NU7Xogyz<`5a5)6@&Z--oz_?DQB?v{k0R) zBI2;{6Lk>{=!H%FHtasX@iIRt z?p)V`KnVhP9HmYQkOkr%dQlG3^yQ^dmSz#r4c9#};~)~gL5${l{$o^qw!@XzZc$&? zAI_^&lo!@<@bzgW6QG}(K<&q#goNB)Nw95qEDQNDvgr(M%s{E(zz|P3T8YhAf>Y>? zL?w}P82C;$%hslOg>D&Vj@6>kkwpe=hX-Oho@bA-@Yt9 z&$6z~U3Ks4MUn?dhG%O^ggC+nd44ejQche4?XwUHdqt<+T0Q`+l~xJYy_T_+gvtXL zISHA^uxS=0_iv!WlJflA-CRdx zs*+D(V$V@BS~EhX3cHB_Bebx$z1tWbn^vS;p*YjD{w&e+Mmo{jA73VSqjzQ(ImF&= zb1`i!WlSP@j4voE)EnA$jemZ{28g8~S7_9vh!&zX58~ww$uWM$nDC}yPbd<=5*kZl zvPzq*Q_K$_q=m0_jk-1Yp*^vh#W<4gR^5oB+xRik%=lH!0vNekPjW2O>f)tSa$ zyWx-?01Ml$EWk@nI^GFbo}rCaevL7Rpn#*A`P`J#^|}Z1quN$w6JlC*) zi4qrF3a*!9PNdD^B>rZ=ma1YkA57{VJvlD5V7JzPUG4$rWomB}40NxxIq}69zouQg zYSGkDIpp==-KMQlZ2bbBNFen;cacVZoiaZ}B5kxqv@zO*A^AwO$ol)^DP738n)JbF zCn}w`Q(l~y%;A%O+N;xmz#_y=`j^FLM(TwzOx}7H^-nL7UY@(njmQj)`XNC#M{%UA zMI{B)SL@`$Gq(Nb7&i>@r%Ij0h0T2v_4~rNpu&$~RsX^8;pn>$@WzQVTntr&d1lig z$xNq_NNN0*{7m6_eJGS)6~W?JsGH`o7=5IiziNp~M1g=FefgYd#K@Sjx#gvP_lb8d z?v{@-v`+bNIDL$PI|7t)GX+9f!|9VZ{K+Av4jJ*}D$NmQmzfn~IOP_v@0rXf0bQz% zNh-wXZf%p?WmlgnrI%gUx)k4#T?$2K{8Likd#sAHpGKGUffm4>^NR7PgryPnF`WEJ8!4F-ByY9&mIKrZe?{UwNxYxC42cj zwq_FGE~W$pb-&nJG11{S1$2Uc@me-&kjz5+arz`B)2pr2TLmW0JY|6@n}qLXU<4G# z_6h1=NjxSlT6Z;giA}MG?;0Jp`>UzP{!mvWGyNLG_jrT#dh{9*Iho&NIE9U;cDoB_ z)x$$Vu{$%PNb*su(J2hzN^qAcOr7W5oEGskC{>_7A7f;lmrB=eJy84EsiM)rLkq-W zP)Ez6kzriD?mQo%eF-EfEko#$!XwhqanZT%cCloZ$s=u6_KR&BJ<2O`uXIJm z66JtNtHcd$jv{B(@igI;nUO|q1rm%Q=ijDGZNfu+JH(=Y0Yq}LOW#T3ieQD9(cOP` z*gH=OxrFe%8LLbsGo~u~NLO6$2^NxJ6r~z;O^1Gd1u8J{r+0OX4?N6`+smjqR-sG{ zMd3cO&uNsp2TbjboF>&vVIqyhwF5OfLyJ@Sk7jCKq@kc-K`<~xT9!(p_sOv3JHMAG zuqSA9e1?Ak8amb;-kZ9Cniz%bE=w}R40_D@XGEJvb{7uW_h6rRuoR4Ho){FbxbOXB zjtG3d8pMffQ(!T@4HMA}G2tq1Uz%%4&I;If``G1-kE+l99^#r(6-W$wWBiI<=sNT7EIzbAP%9;XW zO*~J}_<&N!@ixB#fn2=cWKfrw^%k+h$Q$1cUT55Oj$AKVq7CB&-ChJz^(_PQP1E!#I?|D+;=mh95pJibPO84*;ia6kJrMG&aJ|NQhQ} zy4a?(9+}*_C8hi));@|&WBWhGCO9)+1zA#*j@!&Znj2-4umZBwMnt*#!Rzr{46)I? zIoE;{a(?q@SN<0>nK-W`FV5lZD!UkJ3o~c$CzqUi$bD=46Mp$ljh}Oc(H0<@$pR3?DQ!6Aj1;X6ofoMPAa}T;M`85*vV4`}B#;7M$EVDz!wjs|QKLTvJDM94^Y{I?xZe(4j9L?nQ-DSyt zHg4PpQtU74el5HPDaO}SqSOOIK`}l5nVOYeqfm6XYRVJ|&`I9- z1CcDbvl}O~1(hZywG?jNZ{pG|ipRgW=kF$|Ia$K26(QywS~e)zb~J7&i@FlWpNmAH z1Wx!FTmf8e>0z6IRn$+)Ijx@AN-R`d+H&>I5i@cQ6zo4%e?_$-qVaJBdHQt{ZHj7&I(;Gyyau=Ws~ zNbp8qYCOkgRJr7{+TcJ0i5thh2tWo`d1a0wEveTQ31AqHo>u&iUfe(Hz_>VKo{%Q&&3wL$T3)>Im*> z6v{Dm!X*~CGTYg+#6o6#;xjwr;O&0;o#*;|dEO~PvkoRhuxWWFGMy+a)}b?KZE)qo z%2X|p`SN<}?u(GR?(H_ZVD~q3%vZ#rY?^bJAA$AObo zMni!HJl3S%@FfKc#Hwj6mH2gX+@AhnWN$JcTxO+e8@KXc8ZJ&EK1fJmi17^yahTjY zRLQ`+bFd^VTQ!kmd)cLb%mGpcF$$gG!>tl4N)9y9BBs%V7TGluA`%zoB*{lEy6}B{ z_IzH7zV~7=3r=Nn{Kx30HdCr1mz!syJYSSns<5idS1h3C3l3>RWjg0da%vObTo__( zrzF{T597-=afGt_Q|4s239nZTpd{t6d=hv)#_mK;7sj?A1MA~2%Mm*H6KnAUK`_?U z_2CN^F$IQ^P07>0@|1|cJR>g1>z3Ztc z4xlUy8&3W#h*%1SQNRa5r7D+>s9@ObfjuLKKSOKIy%Qr1Ck>iBZH(kRc3UzgD!m=K zpRd?XcLCQ!*n=4wkKH%j8ssffJJ{9$GZ^Wgm0AQ%+$Otye|qCL(Kez8gbunl7Ue5g zweBk7tlbezYqg4L!j8ljJeU7#D_|C>=q2Vh%Mu2^cmp5m4}e-4GFwp<)1T6lD1{gX zGjPL#7f6l=T@=-Vlw6A2kV8BC@9>RQF8$5z-VX z(2JD02gxoQORA~8KUrKgo6K{2E%b~*SR zaD6$Sg7|756KAq+)TkH;`p?jwhiWYxUzVHCxv^ZFbZgK>8qHm%zv{GV8h9*ZSIl!~wiuG1+Y3~9u~U68e~nx&ijz%udw zwjj(+Ur;edar7q-3FQ&uAvVnj)*hRk#C|&755o(Ics#p6BwdkNWj7r{wc7i~KDRgN zL?E7udUI&$>q)ri9(mNm%~091MXWjoOZ4=)Qc0B9@Nw-i?G2UVhhUllp&vV=D&1v5 z;xpy0?6Yx?TF&Mj{>s2rX8T*)Uz5&1e3Qj2=3aNGE_s~OdBUc_-JG9mx^DvS&sUXn zR^rZAjT+9+oEerS(Kl$fdjjpVphR2;)v}-iprfg|U_TS`I7lULQVq-MOqRkRrQk=C zZs@z~3u^Q0U2OWwTlSeuVWLLxNj!TM?Km511XzuP2$$AbAi0 zlaihf7LGaBlQ7`3eLsChvYuz1{QuZ`%c!`TC0rPn;O=h0Ex5Z&aCevBA-F?u7~I{0 zTX1&^F2UV`4m#+ayze>Rch+6^=d3-uckS9;-PKQ3Jw;%JrH8XRAV||H4QZ>uHdXoY zz4v>jmB82YdEc!wdqHMhQ1U|-8v-?G1(3z`~+{KSK-H|c{)748FuN+?{!7yB)=Se&?C9*yJ3XPp?! zA#zT4-yUL!$T~8LDC~Y{5>c4J5(|{s+KuP+J0!+q!;mIN>wbfA+xbC%PfaGsK7)^U zU{U|c;!zgdy+J{NCbv+7zNUfq%!l)^nfS{m-paVgI~Ankc-V@MNva%_2j&;fy#WuwOhRYC6o-LD5w4slmR7aOaK6Ytk;a;5uV70SjPbBHlz-+y=|Dkj zO51L?XqPiCrAU6ajaFxIq6WfVaAn3lm+M@iy}%m}lgttU?PD2R^bjtnIQ}|#aJ)Nz zXzRKHEM(|;wGG5b_7a`*ZKAE?fhnwA1KvWuTB0J4r!p5fuiV^{7Ld%NLp`1~2}8?F zJkPT20Gyf0#-`$>^3YKQguh<-=u)77+ufqF`8WenLmT4UPao zct+q1{LaBIo!8#W;)V78`-w6K#xC0k$jS*Snt3qk7%bVTn5VDUJjRCv=Gmfx)WE_% z>H^bY3y{WliYH0u!b@d)zXO7;#_!i%ulM@rhu{Kze7`pk9*)k5Ca9pB(#kMM4xpe; zId$uz(%&`wnD;LAfz2O%fmbtLX)+Qd{$b0td)=khvSO^OfGcdH1}-RZe6|70xbPu)Om ze{kg_v-S

QMSa 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 z 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 NN*XsyZrpqL{{RflGZX*- diff --git a/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_1_2_1.png b/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_1_2_1.png index 9408cd736b27eea6e72ca5fed36b06e24c208f8f..fa404d50b4dd1f5b86e9b7cdead35db60300b93d 100644 GIT binary patch literal 49847 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


heS`b@DLDs@*XD&&E7d~KT}d5 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 z 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

-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%0ATAKG-*ok1 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≤XMYW84bi6Avsckn+eEwa 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 literal 278650 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

~svt#AMQ zEqaPQ4bsW`VCo diff --git a/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_2_1_2.png b/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_2_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a524dd1e456f6f0b2f3569d86c146dd996d7e782 GIT binary patch literal 33931 zcmcG$XIN89)HZDI!m%PEa6}M76%dea10*yFH9$b68LCJ#R23Bk0fB^G6xbjTKzau& zHGqcRf(RrKq$LCh^&1q=InVWd&-MLyuh$=ByEA+Cnl&?P-D|CT^5Ukp+TjDI4{Y1E z?Xdcd>xgaJb`5OXwgbCw2e@<7y})PNwkHVn>sRz2^i2&0x*j(otvhb$nvMx({fu7A ze+narei03JbRgVuh!AHze=1;mqH&sC8hEC-+Ki#StdYV37xW1_RF z{z;Ly6#}~-ab6?#64U9}ua1b;8kzXHA%8Q~-8`JK5-$*1`+tcs@fa#9!z1z**_1@` z9_Z>B4b2`H-?sI*;)|xyrs#xUBEQPjgC`%~>&^)Ur<^O*Lupy3jCpJSlIMnz0OZAi zo}dfbvC1jM-t0C1E$0n37=-IAzKC!mnK#XCsl#m=k=5#;zf_cv6ws_&-fxP|w3ZbM*$h<4=?SJb4wi``^yj1bvp4 zZZg&?$=*ht!l;`)f1Y^d`4;Pupqh2{cIv-EVG%ds zzo+yK76HEk8m#r%`}XKI?- zQ|=^(dCjF1%nn=Phz0k91pep)4ok^*V^%!cSTP*ypYgZrRMXvh;aMzEo1A@QM2TCX z&mR$*m;wa&EeiN1O8oA)XT>_RaXsxg(AU=bC!U3)5wsTqtv8BfZzuab^FG0MF3fo* zxu{O+e)OT&d(D%41qWV5ph`t`!9%}?vN>#3-}HfxfzG6Wi|S!XXhSV@2I(3+MfTBb z8v7^Jjazm2*9c^ecYB-J12*_XSUWi+_Cn5gzuRuC(R-Ud@#`e3{m~1e?})}kPQT|l z5vUu^Rjdkgm(Z9XJ63)=?4cwnT0`7lS-<&gA?tD5glJ%9b1 z#@JcfWlWjE{y!=J<0^WpF#+L)EW#4LSGdj?ovX8GWqHui91&5lad?H~)$w*CeidK# z*%pQ)3C%PyI@Nq+U>l^hlkEEu!hxY@xK+eDL+0zz^c2!p_&)=K!`#InHZhAirSW7n#WV7zAj>4k`g(PTLmKT~ z=s#WcRX}d7A91=Di8KBQdIqS}q~Xzkc#@*to(JvWRJ&Tu(8W{tS7*HYUSmyi5Q5`i z1g6FJ>Js>J8AN%Fs2p?w_B^M0an{eC7s_EvP7#>Ys!ul$PStbhiaExs{wwk_+eDPD zm=zyi@@(=kw5E2xG;9)aO)illd-}=4OP>$w9%B6@|oS)*Lr( zyL)4pu7&JyErtM;pDjHg^x*ICjr?gr5urr^sIybb!f(xgd0`{|!rGVMCYeDckyP1? zeNKL2j)nhuecu-hmRMI;_c1WcfZ*$v*ni;@j@V0w zm2ka5wgeRM@wv1{^S-DMu+q28`TU>=6qTXUmODhKyeDqjlvbpr49#OyzWO{XD7a52 z<;eTd1t9swGY{;)KdH8<;glcC3w)VKEExHm8eQUY4*Ii|VZQc@gRZg2K!o;k+lwKT z$IzhfWQ6^wC}p}b_ga!*Rp*|{8EWtc%@_syuU}^rSpISsfh2U?vb!8;0uY(&Bf{GACy86s`xt96;%rB?entq#KlT7V zQE3WiTdg1tsB|e@o?pszQ?AGE$u*ZrzCcHmV4Qz^unI#|D8s%mcGWs+3XYSfyq|@h z5ewfykNjsMm#3qMGyE-IJwp^)ziMfjss_V(tE~-LP422Hb)xLeHIH6IlWG*4zy$wx z{X~YwFVlB=f;?3ln?d4q@$oK;fO*F9e@7+xHtF~}RwKMd$6wrNlN=R>h9e^4$jbsK z_!kBTMoX!Ua!u8=`{qB3rNRd0+nuY|*VA*!iKy8vSaz$i>Ac275%M5K*qFRL3zoyY z4I&I7xNx3}=9JcTJNwV{?SqQiqli=9cyD_PnKrAbZwJP)5tRIg749S$d7@3Y7V$-!r%?#+$2*|JusPDgB?e;+u# z=i^~m`RpiHNZg;tFoE!ivPRcb`4uO1G$zez_0Kax4RVFg4 za0Wg#;10H~+qq5-jZZ*CBi;YFY~X?q{BhX;?)~TTAM5~RIPhmhKKZxx|8Vd(;oJW- z0mkURgSq^V9sl<|j=FH?QDxuit3#Jduh{ZN=4!r|V5dLj|K(xR^rDEBPoV;Bi@B6% zUIDE)&ZA-imXz8N!fGPyqNEfVcneuL0Wg=ZdK3sv5_xOvA1I$DSSI{J9quOO6=d(1!_6OtPHHO;xRE zoL3A}J)Il+%-a^%DW#glCnjh?+5JZ>ZCtmbwv>F~_Y!E;pSV92|UhgV1iPe zJY>GBny38f9Lr{_3+e{gkK+U8eWNhU5Zx)wKf$bY*&6c>UTl6Ew%OosGckjf{8h#r zv^-Ens-9OIywSqxX#g__(RV%%Vks-(otw=*>aNVy^cpYQiuqPz`>N-wl{wG>h2dEU z6Qn^-YjLv;2t2oKd$_kaUtcioxViy+&Vt1)D6CyCaY{Sxo%DO-4Cv&s8_4%JR> z=!Ri+&0BONhsKZ|U#B4C?{q!~GnbOZW1N|UojbVMa5jB8^>`y&o_D5QbSomud&0Zb z*KgZ(V`*+{F7PI{Mckm8jk1$P~LBGw{1ZBL8Fr)5Y7hX zo-i%o12bR?z?dIN!)`|N+fsxegka~>+dff5IRp6Eb~{NBb!~p}H35+&9aU3vD^n11 zzpas39@`-dec`kI&zp&YP-_Sz3eC5Cxn(|6squU87i+Op#RnG20Wz8}DIFK9C?b)# zCGX`lNS~Tkh>ZhtBnaIP)P-le!$e>r8NX%W5rGi=A&BK}*$0f`+v|dmon$6PJVqJ* zM{i%N5GHeKFe$M^sWMSDFo+g*4=P%f-BPMG42NLP#lpdZ)Gnax5J9L-$Q)Sk&Ed4b zAcP2*YN-k=wfPg668ETc@L#L-H3ZL8>ek%_>2u-X6NR>X{}~|yhj^g|^F^8tU5DX3 zOs{XP5Cj~$0Z(*rf{6&_z5b6LQ^g?Kt*u^VA^oGeupC{eh{u>|3lo91#wZ3sSw`>= ztA*GuAcb$_^*sgPt#^Ju_4f~ipgU0O(ZWa1M4%HNvVwxxev5PYAeI=!hLBu~BC_E+ zx9&AZAz<--aC9*kX@4p<%V^7h{6+LauOOCJ^AIM3K=4Ni&^%gK{2xmx0IkO-9#;o} z&x2@Uv=da6*0LqE{m+_}3T#vvju?Gg18q=j3iDOn8nZb(xg3k2BOpVV?}RV}S-1UX zJHSg3%R~s<#JMGyeKevvzvu-*kTw1Hu;cXLe85_|3vDf~J&-;F0mS=f%Yan_|FE?t zDvQD{qqU#n|K6f&rRqi44^;@6Lme$)9anRMZ3hQ`*zJEMvBx2B{IVM4+q zOn~>_z3ug}?3^4Cfd}s&TyFNdx%950;@RA`_d1&k4-Lyn!Fq@S#XM!@&eS(FthV>} z^YyJ>9gbxyB>J_LCE!4e*TVZvbebg8&{ms)Fg2>*cUvw z)?;HYUwIm;sLa;2RJBjoO137{8r`dv)!`H3NM<=Bcnqg$vR{5d!fE?;b9i=~03`7j zROHHB^xxa~_zIs5a-fnPD0A^5e(0S_j>AMlL6myRl!1X!eDcR~IvYE`h{Sm@EAu-E zZpC3`S@5_w@Uk3D27}=hL!(hzFtV5|CvKm#41ri%+L5XNr@@M~+C0@*der*PJu;O2 zrB3}&GCb;IadGiWt8GVc2z8L0QuJm-#=hR*%}DbYZmS&fuX!M&f&LjJMdpbDN`tT| zt}Xfe+Hqt#!nEQGven;;($r`n5h0mmJDN`6(ms-u#Nila&7vEyL@C=hOb4B$R0$w|oNzP*Y#tV;YD!jC(It=f5|6 z!TTBWNZ{2RV|a@NpVCi~ygdJR%9vGV7B^o@i|l*Gqzr{%TIIfytL-Zh?CD`4`MMoP zq=h2k8;hL+$lQ2w+v&}0icUr{bi+;DwheVb*{zjy1&Ht%;L^ z7~dZe(^EEz)h`zxNQUW@p*0>0Pt~w1*)((ytt+_JtkQc6e>_*Zj^QXcAj+B`;a;N9 zNa#K2@pFKqEYAM02meOyp%Rb5^Y()%mAd$PjfVQQ?n{_zYX&)|3d~r&*3v|G437Lt zV#gRg0*(HWhNh{tSiI9$?Fjf7IGluhR{H?vZMj;~sN7;wExm3seYiN{>{xHytIv`A zD$8}%wVXvs)MZBevN_Vlr6x)8=B5BuM@=>Ew6~(yLT9Re z%{i*7GCz7A>@6;}*II;8l?=*v16TBe58%jhg46Q!q7jxb}m8o@Tk3|Ap!=l88 zk=7__b?EJ!CYW_EEFxB6zN6S%=SOz;UJ0|-rtr+W<1#~9iAuKgD9%=PM);^DjZ@#H z^|O^6R_rNZ%9_NdlfCx>n>imJL{()vQ8^N87vd~LW5cBUNhd;mGE4b?#){L~V$lus z1_cGhk%ao$QjmQ6CS^;y!){*V#POrFX;z}WWKXbD>(A9DwiAkx`TWifqvLZ0R{4Hu zkr+y-IM$A~Q?JT{@Mjw$!%j&}SLR1Xnaxyd{iv=X_9y-yv#`T@*S{H6#VN!;q|DA>pJ>sVTrS+IB0L0%}}aOg#)arV)+-F zDig&HYQ?5Dl|?`~^!7S%SXc#Q^Xq(ZI9<9IR7351yPMv`!^^?p8!i%iqB z{O03h3jO|9KJ2vT31`SL(?%7WdA`5@aE>gBl1OZ*j9}wbv`O)KYVB~bypD%EUpT`G z9u*F2Kh=%-D6bD6`+x!%PP5iKOeuF|vFXPL6QxE?wILzNgUHiJTMVwjC#~_|t9kAV z#;js_PJ==RkJ9%u2H;&cKTV|wH|xiSgB@wzYOMtCGQsQKCfO%$mrz{8Pi8lV6qq}$ z?JwAsDDSUc#+flDnjF~Fz(Xk%tMTxS$R9Z$Pf5mFN7U!`aUC?d?e|>bXw4Z3q5@Z^ z8Tvwf7CTZ{mhB1cgX~b1Ff~m$c126Qw0o@n4AD!PeuE3cK}I1cRx}S^ONlgLsniuW zs}E#xIFv7wfo)wGGop(k1=v;qIfQZE8J3~c=o!WQ1>A*p6d0QCqFA$y+?*Y$P{RO~B4_hA`nD^)wi0D^|l<10*|gpn&r6ks~K;$OHmg`ePc&9_&q z?NAux@)c#IZ8Try9XQrx)ak=$G4&Ytw$8b1v(&1VncUZMH{m7CRDQ0tZ70Q(3GM0fLXk)$BXbAd@u5~tXOsve z5kU829G-IyF-N|`usY|&l~p`|^{=Q~txo13L=509s&-Kb`_W71oWJL&niz699T8 z&(Q0)PUm8q?3~IbW`XrKeTP*QpSjQXw1qkOjuEKw^y{Z+T(oza6|YUOy&vqbQ6M3B z?qVU1no8!*&ztKZa z0RD@uhHF z+Dx5xfn3!h;}CUn(%W}n2*Wja&)^+^>+}I$?Eu@IvPrPHTKTZj! zT$~9qt-j(^S?a?9VA#hcw5c|0Tf6fD}d#p}UY&-1NdM2ban2Q|=c z;zq+fiTAAx9Y}oHCnXLWv)x?-$c-rmwW312He4UN^0gFWRoPs-xn`1Y5e6D-oAD=5 zud!WKK6~Mr#gk8kP12qIIw>Q8Bsn;$pX} z*2;#PRa$1g?aBMF5UQ%Zr%N(4zmVudH?SIezq-~hNC=MloHYmAD6Z>YTX{3lw6CO94Aj|CyVFpw&g6Km2SMh&E7^cp=AO@)MsL#HQ+zq7|DYS zC^AeEfJ9Vk8f2UY7nG|GIXJD2H$eI}mn2%6D~n6M`PwQJ+QV>xJ?+DfuIVJ7R8P)d z-~lTs_pAmT#oHMq2!ZxhjZS!wY{bIQIsIm^}K*Z-?;2jmu$OP?d{-lZP(@{ za)YKty8Hx0H?{xL&KsgPC2g|9?&HdjSC-8w%;JfhkuF3bWfB<+l6r} zhjUoR+Tl*p&vp%CL6qJ#WS>ZDO4u`hR53^=18S{_cf0guph}E8+a1lYur!RDX&HDl z5a$NH%j^dL+aY)7#Nfjgk<9lN=kb_?N-2`q+Sp8xtS7e9* z+c!1Fv%FwIU0fd5+0~)>DWTCg7#-^!qo_5*{*4FfP$-OZUkxoUIQ6C1Ge^8!J=1503LCgL)baKL>0JMuclAQ>7}=N7}_H}J(C_>j>1Tkc5;Nq&37$%3LhoJ7MGhj z_`%#24}J2HEO;PU|FBrai1g54b-ia`ZK09X`b|Fqa`XPkML$dCh>V#$L))O9)%B4B z4lzgMLg^X09_)eF!=&nEq<<(AHeSfHcSm{Gv)%5M<+8qm%Pq@%3*46+a>f+=RzI(* z3=D8+bp<6PTheVgX&JKhxZ*ymL3>|2Eb-*oV7ugCkLsIYhP9R@cMaO14k4fqjCvaA7~C<1kp#yfPK5q1Ua~98;))?8QkPb*&7M1QuE^ zEQ6{1^9twtzehfdr0t;9fmms>8jmZlDt_8>`u%EgzZp%c7JL3@&*U2Yk*5^~#wxxz zEZ)6Cik=Zj#u9s7*_b|-UcxGK6Gf`9VnZdYlCSa{lM>U<-=dh=5#_^_i{Gj2HQ%%P zwBKy!D=8I}-q^Lqriwf3s}8ws6E37xWWA>o?$f~abAvq$54md z`n_wbh8vrDFKS)sOhBCeQq_!OK4a9dauJfV(=`*PsylT#O-ZW=s=|&TvvB}2;?50~ zmxV_hbK(vGYVJyRrvJ6ywKl`ZdBz~k$T=nEKFEs9Dw(xoJciCkdo9keHF4iboOvH) z4=WZeyET2m+1IB_oHO@Wn0u)DS^s9!l^s>Sg6Ma%Am{QKVJ9+}SQ{0qd}ni zAXho9*>uOcgEc}D)2}qTH?(o;Ce$!+@%FSBrQ%Kp80YlG_+0Vm^dr7B0rydN$Gv%INmSh!nD8Q=9aH{IUQ{z1`{w{`J9Pi#&i2tO) zSukC^P<7Mxo+H?feq#XNNtc(2Cx1Pol2``c~-{Cuvx?y~1h86&U%Vno{ZVDqm*P2>-{VCIcJw zp+nr~Cbtu9362?ngF%N6wKDNw-pUcyISuE?bGZc3{F3ZcDVHJ1P@r!M%WT9t5kYT?#t8`bk5)n%{hJH{bJ}LKP zQ-u71)w;J&@&@O(zrG}tivR-=nP~fAZPN2e>Ee7i zFUVRKJamBvn$%%Df6)7y7e=^BQo=&T$UcGE=5^HsjU`7k(Yo2ll>1S! zSeTT|wu54Dw3;x~H8_->FW*(9{KKanQxXyA)<}T_0F@sn@ORd*7raW>R?7+ubtJg); zN2$6hQ@aG9JQAs2T9&W4k-sSSQ>OOkJXA%(l$U0vJNYtwhh!Iwdp;{nwz2WPctxIi zWOAsi2($N!s2L2W-YwS{iEodwN0EyIJx|_lLp}cY^53_a zUt5&T{JG$GqKaycJBtpb?_H#9yEwP#!M=O`&nteUtRLy{(T{{W;u0Gz85UEkb2>Sp#uTr7 zkMRos+IvkMy)-9-j<_O%f3z?vGs1=JQ`T}NSM7wIp&G(=$_Ot~LEe#ygJ)u{V%YO- z!Xol{N3MrGvM-lO;Apq%&C`*dUBx^t<}VS2y2eHbnavg20p^Ux^81|_rn3mhBluY^ z8>B3`5oADqY@u^9_*=cR_9=O%`%T}Dk;TrpYJ6<4uv%l1nF(VXEmBt}f9#4c;T>15 zHw*D*EVw%nD4vQcaBFMaMm<^LWU#=8^Km-+H0kB(=e0~t4njDm=0;d(UT&5 z8<*bsP)Jkq3q^Ba?+m@58j;_;p&1n9TB5mFdx5ndU^n1#)YAzhMt;%?B;U?H%FL=T zWGVa=TUv8A-EL*aPgU401}$mze@e_YJZVejeoJxJCB&L$Vbi_MFSWQwF$R0oz4r4( zhICdEEGj{C)Z*LFkH@OYjWtM^h|zeLX}4PWuo$=kNGQ4^i~IUae52h}k^y(dKY@y- zTUf|2;T59Y?>`13`rc?{7Vp6?>=>+Y?9Ls0VMxEI@tl4qz<1eC!gD<$*|xRRW1maX zo<MykRS)x70~<&^T~ zY`GI}@Ik2kW`)`Zg%6IrRpy*5NC?=&8a)%5YYO)ARF?v_4+*y@=Sh{uVgu6CbB+r2n>sOH_tE(zz}=ontDPZg-r zL;*5E7nH-dH6LtAsJ<-cUl#dU&R^OfaG-f_h2rfncj~1{nK4j0WlYSkQyxO%+4EA` zfY}DtfU#+zwIjSs)NYb$<=&(4wNB2a$ucuKA;NCTfLCkj22FhOfT*J(yfdtUR%%>p zTAs9L|1VTkgoU4-zjQb=lrUjtiznqT^vvHvoi%A`%25<0xTeccuB){s7b&J_WV+{2 z?|oDJK#|?n@#3&zLrQidKN7?&%vXk>geg**EAAOsqJ4PA-EX(0{Ck;C^-GxN<o&}MdJWIrap8+wcdzfi319 z-ZAQS7j>lLT*cHsJhv>VC?(8J&T?HLhRED#g}#ReOhF+)`ZA zZOliOa3j1k!*W@j*eYbDS4C3JFsJ}@n+VK&U3DaYf>y6nnR0K{lT`QeLOfomRm*31 zq5Ejpf~IYUx^-2fg`@e?&e+&Ow(-HYCY4wvZ$shK?vWNB8IK62&DA%mlM?gf*!=|V zcP$7zl*30VL``2`yK7?nWpt_rb-H=kC$v`Q2tWVxfycm}nt(j$xY;uX;Xu%t3&G z*-p4Bu9dlGW`O1U4TtDXCIILAF;3+Yt4>4f{s*hCD7Dz87&p-a{bj$*Rg-3!y4-+! zVRf_@Inc>hrbXw?VR&ZMvF^eXO&6$H6PLS%ASsZqdDb8DCO6kSO2=?aFQZgS%z0eS zGAAcH9+Y#+Tdp@fOAfeRH`0`k>+ZgvJITVAJieT!XJ%z( z;Te9Ie!zdlyPihY=4YzOvU#Vf>U=eNEY6paR$=aWo!qD8bWW;~!_^5FVO=|kNy8W1 z=K4AO;mpQnxREVUaMxvB?r&$+b>r@K-f2?g-Dxk85hQ2v(Oj?|e0S`z4;R~5wX{W# zbo)}?M9>86Sw*GT+hR+57^B|desVNknv}SI%o2v|L&*xLO2Iq{bN546KRGF}l3$mG zL|UV%cpr&X?#le9<;NeO(Xmoh^oT-oDM_$`T-}w4OrZ1z-RZiW8!ev~dN7)zNTGiJ{+VylnEVnf;G8%;Khy7Z(k|&~gTje-^*t9#)u|TzxZS}~<+-Hm;$sb`dQR20F#9VGaTf}= zDo8~qLrI!vH=PIFid}P0RDTPH7^>CqQ@s4%*r5+b&d!*U=>nDuEQ^vARXTL+$NMwU z*HopMLVLdEYoN8*KwUfeWMj7h)EHv(;d?Ot=R@Hhe6#*i@4(rE0sWpdU&GhrSG7OL zISLagUa1L$UDy24FUK=;Eox!*C)$#YuFrFUx?Gxa!%xJz)yz&*2T|i>{{%Z_^sGd5 zk+j1y|A^uGJ>*1q)2PcMJ%bZ&CKGzEl;K`wMPkSt7gS7d@TaUS(^98+dHn}i1eC%f z@MR?IngvhnTdN(f!iBj*+VVLEGtN0TmJ=67)x)cDUA~*WOOmH#8U3D+t1*rwA;?x?j&K!kg8Q{aUMEh^p6cO4Ms; z%hvdPI*FXYA|E9qwaP5oQ%qIgmRD;AdYMyEaK@d*ACLpG?E1V(cx$DCUze`h8<0Bi ztLdgy?B2~fs$y+3ZEI0KPA25$Wh)<@QRWZY-3xMWAhW--~07OIh*I%i0GHK&c9YX1DPvb2f{)n^+j1 zyr&;yy5AkK?3~JIZ=+RjS{(sMH<~C*Kbc(*ZytYmZgfx(TE25ZNlY(3$a~2_$2z4;jAAew@lG^qjE`(3iZpb&BUIN7< z_wIRiI=*sVBi{EE5N{jQv5`7&BTcD^#S#~e9OGb{zH+JhBxP z6_pvrE6dker8u>C2&DujV-#>@K=DR7%8PcD3=Mi8tuDbD8kE<(>O=IU+FJZFeh*8; zpfE1Qu8e-v>B6jlUtLWr-&+Dq&c|2i3t$Om_5-q)wc_=eM^h&7osY~Y*$qp2i!7%V z5`MXr*C85cb@j{|@|f5`OS$!Zn@0kATq1LVKL~(OJVoi<^0L=t?iYTe0=LA>7{1+z)Kh(++?|mXHB@D9Hc}oMi{60Yc$)g!&bW(#@5Q zuC=vFkj)bln?%7o1ATd!#vqFVYKv5k+D#L>|F<>_MWDln4}+X%s?du=o2%58#|zK_ zHG+@}^2GOh|zYc3x(`;mY#Cb=xJFz3D)4aL@Q94AtN#Hq?d7l8|0<$ zq5aLGF+hoM(!jc|xwW~P zFT;xYxGtsHSzTC4VYZQlxBNZYm}rKPvPPHHOt?)29q{~LVx#{+M+1^fNi#~*LJ1u_0<^XLASmjX7MT5tRf&KihWFQR_Ezj9^^ z2>t2$|31d}HIjdT*_IamHvp#4*-_=QT=aZyTL!4}cXxM7a(y+2H#Y%7OdT-Gudx-8 zwFUiqxz$^fD*u|W1pA7be~_)dWX8e;%>EX$)c0G2@p)^NAiWbehyU63^0QYIy-fh4Te9d0p~7L z=WKeS^sFr3COeN@l@ADCp@0WyT7A~f^=e%#U4p}*I{a_{O3gBp3UA%Zv zzxw>f$cApQyE|1Em|iUwGbGX-)aQi5qw|ctFTj|9>>8?YmGlh}=XOaY=YpcY`4N>j z24RU3?j9@aCtN9Fx--|aU_*|Mg96Mf^DQVrylv5q_#dEc$RxO-@)~UF za-G(ax>5`v$$AnDOe66Ro9uFV=iZ;4%#F;@&i0gW_-tH55+NR%84}YEYq{iFGZIY% zhPkuIWzqbRdw1>fVf~p=Kv2{?>PT-9;fR9c5CpX{bgN4FO*ayzs*;w!GXa>HET4f{{sNY^8$HM6lYg6XFBFgCLtEdRIfP>iL zrkJP5;xl(619x{|R9Xw*Fh|Hacm3%N8n9}>lm!PRL0mfVfVJeivc5BLO#!Fr?Ik$^ z!dn|_RJe}hDIdU-RRuV!W2#zdddAh68-rgLS%@FDvRDxP-_H+bvJaX?A_%(m--&4K#@k>77 z+OLv#xl;OP))k8C!I6!~%3Q%4Qk{F*6X6;e*pk|w6ZRdC%yR?x85tO$TAO5D7p|(S zqmO5oyt(;yb~yE5Y_wGiO?!QC(EWmNDDL=m4odsfxYP9y-FZ(oGrIEQBV%J>qQjVQp>*X+&${|Cy`o5X|vyJq&c3V4Lh^S6@`Ii*m zxXgJvCo|)vY8a&rpctj;)m3kjXSNhl=BVNOwO!tA8j5xvjpHejjd5b14E~`;3m|Rj>JljcCIB{`1_}r8q%mk zl68$NPpPKC=2zO-06BN6H`^j|2yavunwJ~TP7yQCnjT!~zoI;|iG%GPuy?kqo6PY3 zv~@nnuBv4-e8*2yg03qQXMu?2CFC))yKV1B?7ysZ$*?z#5Ubg)K0tq|<6a|)z zoF~Kz($hfM35P(YWo=KZk((JT;=7{E0Tr!f>UaX$an}^_@jS_8`4AuAf&<>2HJ_#u znu69&ds~(i%-GCSk6G>3O*caErfVmURGceQ68~BKc!e4T^4$q~X@_hSXZqjF+z2JaH}eKqLS*kF(Ns zrQ&-AT8sWj-4c^tfP?Xtt5)-JVs*!IvE;EqW~&SFG{!PlS?>hk@yehND||0JOH^Q7 z=u&%K=+&Ys^-xJI)Rn&tties9S#oAao4hzj>vD)GL+9bLGj`APnKF=}A!l_7;QZ^H zOO&-R+U_&JKuX%Irz8(4T-Q5YrY|;1QN#%kN;+&%D z3?<-MtXNL`8xll<*KYU>S3DLS(kVAGY;WP1867&@y=^SVgh2oWwhLS%XI(Z-DR~h} z4h%U-T4UCSgus)={P)_S4(bC9OT(w$_c18+oA8=rDoTGBQwr_zifv;CAFKTvS(Vov zST-35)y+YZm;f4m=IP2qUh(E12}1*b-T$pt-b5Bdbvy2Qg0TkxQd1ox;7faDx5qx< zk!$mg9Az@(o!5KmAQ8wT=ezh=rFoNul5x1&c@{*|_&g@4Q^U=;mF(u9jI&VoY3+ynS?qT(`Ng7=9R#n{6KfeiWcY8w`(u@^r8Bq3^TS@e2x%_AFZEYL$WRfAE$s=X zceTa@X^186%Vn>IDS0N%#A|G2lbr8-$_sUKPfe6}>g(^16aq+2ug_xvT(Py@Tf+CV z%YK-q^Fqlx1TgK|bZZ@vVbP2CWQA<42fTdm6%MS7s_S0g)PGv(k1S77PSu(~kiMKB z9_*TPCkJKXe`uUgm-XTS4z)P{hX2k^CxV1mq#gpC3sA3}ud?uSm%hgEbbL8<-tux? z{QNQB%JtZ$G$njFJ$l^qGzSOcLF9(IVv@&X*VO!cp_fq6O99tFO>q24`)$T{3|9Z< z#8HHiRl>OEU8l6u(s%HrBp+U8Okajc+ZC%@2KSvvO_8-X@_J|b65pmD24p|*Ln?*J zjbHue^8BF_uYhshQjetIyk&o5^~ERH&qIE&V+(w=@enjlaT{>YS@I8Rqkv zMwD=&>M+AtFVYZc{%3R#vQD1abHCEHyH}tAo6i64r0j6XbckiW)`H|}dxnagL}AJh z?j=HT?E&~f0_m5|eWLB^eKYK2PmlJfU4~|0hb3*r@$Ofvn{V$`U?a;L!8@7Q7FFKK zE-#JX;_Nqg^+^Lq-%BarX9_^>1aGNsCDrY-r`oa!z@W=K zcv(V(=FlaJmy{Hnteh{oTm4u_#>BgaiaL;(ArT>+I}LIKdG5ccAC|jw!ZULPdBdg0 zbm36Q+qv0ZHVacnH8zFnE>W>JGC8Jujj0i^6WT-LE-B~0%x-*3eqF4lhQySU1hSL{ zo|77ZA*(nEqOka#%~r3cPXju(4Kw-(52LM5%Ooq$)k|6<(}xYOED08wd$gv0mrGi+ z5x#gq_yQm@Ae(qI{N}gO$gbHxg0YQa<-%&p*|vwp4nLNLlZI4nVo7! zTVt5P^|t=2*W=V+jMpBelAf>H*({A~^Cyl`RRKH3T6<9(lib>Q6Fq_mV|b`+%JxTMtP_lq9ymMz{R4ig#k;hHaZC#g`*AY}!95yX9GT&?C-cbpc zW99B#d9*mO0**B@B;kzov$0AHukzxNqU`7Ji3w$kRtBw#_964zg9|WOqGyWoYiue% zzLFpkOGe%^Ydk2Mmyl_nq$%ARIL9UTbob@qP_}*l zb$7>oS8^9Agf?UkNw!f*Wymu2y-h;dhh}VbYnOzvZ-t4$kUh&#DY7#eO4jT%wlIY7 z`(D%X9`EmXe$VfD-uM0M?T`ED?wGl*Yp(0O&hz{IY^RCISnr(%wfOzQNhImn_Q^Lr z#5Nqw?rE{h=_PRZ9us5EgHr*ICB7iNzXr0CZoo1}BG>x~ijUyQCE_xSECT|yv=mRt zOsgQqS7K$!lF|9>`a2+x zU9Q#?-S}c&9PAwQQLT&cE(WZlWSUz4aK!-gfDm(D|q6S~*y6xm?{~+u%Vl zb4xT6wi4sG&1dK5*;M`(ab-BwHif^5e%qiddMzZ;4?KAy5?)QTrF&>n&&KRp_g!Nu z_dO-WFq`e-wQEMf2O;D&buHn|J9Bj7kqd?UlSVGc#y!P#3Z501vR8}C))@9D1Jf!P zkhf^c5I7B~E)eN4I1uhmO`8(!_LpBXS|s5G1Ib`YbT&Ryy0Xzd|yb*cNZW%{$TWRXs0F3=fDMnqf32MPX$tRc3Iv zKM9ylZOB=$+3GD_2Bq8ThLoO(A|wOjm7ibjdsnIM8q*4cs7s5C*z&6(?3AS24BH6< zbXCMG)ToZ@Mo6vep<_N}iuTC1qDgRqTW<0>3u$zGABn~5Q4(rY@) zkqIg?_n+oGIPW!#+$MI~+ToGegpW{%_mG)5{NL@#saU7CuGKxBT$9HibB zOhxZK57P;C%f23zy23Bpg5yPcwNfwEmg8@=J*7Dv5fMD<2`KgArZKK>UnPm9yP~Zr zkd1~v1F(CU*RI9i)!>fwWQ_YdSbNjx%P`&-#=8R~nS-|*v_T738i^UQd9?xnZt91) zm5HiJO5=X{{o+KhYG8^7txEV>3t9(NT2G7OLxf`*%kh3{yVN`gHitp^1C_~;gcwbe z&-x@-u6I35uR3Xf9#R8agj?|9@lnISN^C;EM&ue8pjL*P>*mwZLmkh( zB3U}!zn{4mzdP!)0eX$*a_+@O`;(P&tf^;DJ)ZI)@9pf`eNMyea{&r&$-qx zFtgorrp-@Mexrme zG_q+O0gzF{YeJWhEM1==V%t>uAxF_qM3mP7kcH$#^|rS1wn{E@(a-bd=pm<}Qa7d< zU5nvfhRiG=Faaya(xqGNn(P2)ULAi?+f;usw)>^(NScYM>DrU&r*8(r4%O(TD#@J6 z0L!zIcP}~p4`h+ui8j6@V4d@&eghdaz{~02c5iQ|M|lVuh!H2>-_)?%(hyU86zYRk zvrTNaFKiyRSrFk0m`qJ;y>I+n{GvJgT1D3$77*y#8OoajSC7A99&PyidHZ5GjqRnY z4B50d!KojgA0bVY;~N@ye6(5o0Ea%uRhv`BQPjDI9%tc4Gv=I=nl?q@RnG>W!dkT5 z>$$%g@rt=ATuwIKLBm+zPt$P3Z61h_)1U>!Z}t9c3(DceAVi}k8WXQBFmY${fzr4UtSTD|v8lhDg}NRCKXo_&4*xV%hj zMq)~lpXQwICLt6x>2Ivm<;Ap~%h|e#S=!G)tLsaio5I0LiL%X9ZSQ=%>eNu@+97uB z3r2i@35-g5|4um>a}Pm3^PNt`G%8hYu@9jzJ6p&yHyK@?F8;5`w!W86?Zp~QViQv> z)*MBI9yixhZ}}A65^%|QR(@^Dej1*&v6+1X^{vgYYL93F8?e%J1GHU)S4T9>%N2a*>aJdxftbIY=L3cakhU*w3c zP^b6;J=kX(CH!7>SjF%y)rdAub3;9~#Ah;lwi$@+n87OOx#A_6mp-p*VtehpLk^|0L$A{LNUJ>@vx--k=?(Qd0%Q40J=@_3{& zr^R!9--w;o8%=Q)9)1+Hbi;Vja8Jm60G6VX8`=-oyiZ33d#Y;fZ zW*_RTn zdqTabokXMYm5C?*Z#A_q40YGp?{%qGEi1&G?=h|BB@+$eHgB1g#Le72Lkf?{KUtko z5teo`vCH?!NCfZxUBRG%@^%m!SRJlcCvT+Jj#d~SDwr~(x&3p?Jy7Y1>MJfGK{?Ow-P!# zw}g8NV^UD=H=1HcsXuAeph3mN-plWZ-}Lj-b5nek6Dp%!N#<+w2ZUmbtSD7Qu|}^~ z4*kCFSVv08aSuU@(et%b#nYm8Bfnd*x1^!JJi=j&fmCjFT5HOG`Xajz9S4~c?>ZxT zcxja|%bEMk;}SnqSDzYl&pRS1@#Jh`{>h$)zDH+dOA=qm?Ov3Swr=v*|JvfStO58( za_#}5sYMHrhz1XJOsTGee-d{pX&Z6-Co1(q4$gBSXY-P|0uY4lr*PkOys)^qFqmNZ z>5XdabM7V>5q86$RX@=7h2PQ{l$%&ozj_R{6}Jj-LUZB{A9e9$?-@FC*gNLIpygka zO9z)YRPl3Wcji1Mg_2Ue>JGRm5!^PhjRRy+ z$ag{wYGyRucJC=IdT>r(WXmj7WSxZ`h)hcTrVYY7jsn$4pl0Ldztec%>9b#grGJMt z{4Z*vSf@A^B|+5F{+nJ1X=U=fu08*%@QF+VK z2-kO`+xrKV`Cp+p|J95A2OQ%sY8APPeq`B}WVj(iMsZ#qPy)jG(9IiTb- zc_K9gtiI_r(pI}aRRp|cG8B2ZVIi)(56szY0bjpi-bg4Lu-u^inq#`W2?`o#0*d9dXF8 zyYVP1H`i_Dj?`rXtAD_!2~{e+%1BX$);J-``!1$)@2wNT^r#K$T*u3zs36_MmvDTs zOjtl5>kJ2LYc*SU)ijjnSb?zqPX5%$-c?vpqN;2GH5QILd!0F z$p)&Lf&UgORRNy;Z`KBt;Rmb3nECo%y2pB|3%mGdoUQNv$!7b`dPbCya~5A+0*>(+ zTHYN=37Mz`+Y(S+$76enGfHD|`(V^{en=K}u^0tDPD1?eyhuhG zfzAiQDvRoG8?^y}hFGAGz-1u8nbjEcg=d5!dFGgI{Nct@YYTl~8ylnsFjn4RnFJhv zLsxLf5>Qtry=4i@wQG_-H5?#(MqdmI-do zJ52KllOM|}LA29&_gz~1D?Jn&3@K@IwD)9B+UgjjT$Ml)RLbhdOJWo67q}FT0b7>6 zVf3Qm01I~yU%h=SHX675S-8GR;4f9c6lX6rW)lx{Z}OA()p=q6*yhrAPJ?&)<6}CV zkM}aDU#!@79lrhoA6DkQxlKwtGW&3nD)XzDpR=@mmIIJH_b*7^FJv6K&2P5Pr3VV9 zM;2375g1aaV9EmEb`4SOL{DJIv#S<>V#|&*Ltfi<*O|64l|^r+I+&Nma(CU5zf?m{p|+R;i@o{6iTMqY`>L!i7R6KO?ZAW z$6E{`=vKCX_Ay>1;0t*CaZ-L(GdZ#W%xXr53!TGHZW=}kqUhzFGcjSlf17eTBtLJ% zr|n*u{Atb6qHBaMiYdg(4tcb>EW>CYQiEt5bKc@rP}k6Rg4N|iZzno3ln zWN#Jpe@oNO4&{*WN6j~_#4;4qcB_S6?|a-SZ~l+SgGkIT^1!ko?>pns6|blBM@iX|opqGsFKm_EVNfXPA>$gtB>?55R=7P2F#p8K&(E(ebXeyX zWZqe*Vi5e;mZv&;1IRrVR!7z;l;Z|7vV#C^E#4YR38>UpYweoDrQ zMeu`lT<&gfzISCQ1Nil5eo(bMsV88%`H=cyK&$N#@TZ`X;`fu?H7i%Rq;mp@z0Y4h zf&+ip0Iim;VMg3DW|_*BVgCzuCUVhHB2(}AZ20mD+(7+?ilo^ zMu2abydWAi?0w--A7?0)1Y*I($L|9oa{)R|K1hV1gr!>=OVxlqd$Px=dA9|ygAE9I)SkmY$^H}LPV~qxhgwm8Tdm&4|)DnSq0G2n2Y`C;r8X(*EQ|h+w?5C?j)Z-Lkj5Q4$ z$Q}M@r-pWbC313;s{`{(y2yCxebDL>x8%FJW%+-N^XPHz6totLSRgr@Q;wjLL*EY~ z=a+(>Pu05>lzUv9yOnYD0^i#}e)9u9eoeirgv`>BU$24v5yTl3KC*;@W8Q0_)?9zc zu17LEIt<4~Q-nhVRr*J85L1YNX;YcAb0Bw#w$&$;3Hbx{bys_^nrf)7ZNFMh|b zD&(3Z7QO_ZL=3!Guv!kvPYiW6+OWdynOH;YFcw~Wq z)8?o71eiv%6VQn`=*?g*llkh9P+OFdfi^vktD;u}Hhfn_p3K0aK|qr1yc-0~!)-j9 z6wvz%vkmEM$aM`C&T-3Zr0qTm!mQL90=l@36TGkXJ>S70mfEdcg=l2*nn_;)!nmQV zuCAV0_ibi}lS=0wI1tNvHN{N?D>@J3ba))uomf~(NA{;wX`$pMJ>ev`7Z^w9B!Weu zllKLXTS4uQ=n5G3AI;rXB=Tu#HPw}Zh`f4aR;CsM)@TK&@KpO&H&xUrs7K zljzErw+2$=&70~m4a*^$#h0+yZVM)Y5cmDmd1mKV5G!Cp(#C?yP8y+a`&u(oE;pKA z{|>A4h9o7gVf==SS@l&SbCgOL7O-VzBbUb>zCbtvdR0! z`U|F6e|m?R;o7==Hsa58^%ft~kQ$M>~i2wt{?B$2A~>UsL8l_7uzR!OC!*23x-y zaA;kQ9#D@6s?qQ5)Ph?|>Wp0g<&GJN-pKc4D188L zdBj4N%riWwxdhD=%tE-#GKKuJf}7=Zy(W9?6Kr$>tU;EVptp|_#VUfmQh)Wk5p)C4 z8BFa3ZC0L1oZW;s(6>#7wV)DsMBrkcPu+cOsUer@ntImGj{U)d#IXc}6$vS+@a&;k z)m)JJQHMal1+{GZ5iL=i{7nD58Y4(^Tw8f(>o(>-543E*?iPW!D)+BQYK>9+SB8JI zzo2fIxdp0Ufq892Qd$6mGXs#Z1)-yo63t7u6kzfUhcz8C3ADVC=^a`@6UAYsYzz=x zbt4?#|D|Yt_`)HlfyHv983MU_JIE@m!K}b6V5wDqHH-ff($imk8A}1n>R^AFZ+@9e zkn4c9_h;Y7M@kbu&a?nE>KXPB$^1F@DCiT%PC|Bo7!s^~ro+5IemgXlE!rRbb|PPW zISI%-{P`E{I=>pepC|m+x?58 z$*U@|^Oymv>}QXI`Ud!30Ahr+Q1gf!QL&%w!C4S8B9pHV~bLDNe+5V&l zIy_6~Y$0)291rH1YS23QZ~Y@XBcn7v!ee;+c32ojy)qP-J>5iQsfZW*b`?y5=rEig z(Hv^ogOzDUPYZz1WzEb?sJFsLAQWb1++5Zci`?>y76pT6Hw!4?eIcIK$f6XA`>5zt zwp}2aneBmflahOQm+$%ROo_~bME!$@172Yu1S1udc0c^tm}LW|6y!}F7mIzV`NNV~ zIXT{b8BnW3e5|};kakCRu15~zC1%eu=dP>QP9Y@~QdXa53F$h%B2(*a97HcPRV6eh zRKD9O2-h~pllBNd;Fb0?m5*u;%@S2NfeS#sFf1C zwNRjPhq*F4L0>%S;VuS=2ZUpj?*>{gidc+z+d!_{i<`pUQ#|RfMAi=1V{brAZ035P zJKPg*Xp2HeRWS?aJa*UpXKzH&b~xCUJ{jT6>s;Ij#I9qsP+CL5WEkDj;7iA9G=chP z6mjGjHH4reFbP8v?TJc0$1ixbfgsC_E3!hH?LU-NNghh)YivJhPwnXH*notLW~As4 z5Dipr)6#Ylw4+URTd!(=AhSmXpeK8L-do%a-j%7Ci_Y<%NgV}*6TwnHVf}2z5ue?$ zGT=%yHJjTg`%eXLUf2Rowf3S+SI8j>?WB^mpBSTwZDaXDVlbiZ8!zF&%z+x{ql!*|d0+Yg;3td0_|5 zi$%DLme8Cph)~0cMlN+xmC2B+JS7i@YT;W~U8i zabTvJVOxa+Ut9^ineC^O0P<&YXU&2hNyf6GQ}wnCT=orJu*{fx&?xX&z92UPN`QmJ zge<~5oP7rO4Kgs>C%~U=VRW-?!$YL(H!2-gy58Fc{x?5br|TEUexRT_A}f|2({zQn zQG?n@@V;jc#=^ql*(BIQqFtMj3=z~a>~bU@fms<70XKLg)zuPl#n9W+oLf)FIRC8i zbzg7hk$O*agJnCjnM2f zIn$>09x}vO@k{LI|b!Wo77S?74m7m;vBm9 zH<(Ts4$!#-G%e5yF&NI>s{61;YA0>Oku~gCnglT!a;|&qbzveY=Q~%^L?KX{jF1q^ z@$y{{AvR3A=pY1=nJi@6@aH(U+V^59Ui#M7D^M$J$7)5No4$=blfn2MLR^S>7R^=` zCem(+y=O|(@$b48wZA4Jk2Rr~AgHZIV*3gvxDg7q=bLRIxu@7 z64wDEa?TniVtVzRJ8XVDUHfZm8v2R%(2IwQQ(`;Za_7mxz43i`oiVayF;mQ|v45zr zZ6b-2@3M88Cxl=zN)=eQ>!Mf$TWh|lxkhsws42Lt#;Bd&cE*?Wb4X*RGZ&KMJx00L*JCQtNaB;N_ zI8>c_$l;y5-=Sz&HXYE@4L8;2m&t#yF(+oGQ>(;a+De6S%&8N>&8^z!^JBcQO5(xg zFNTkxCf@gd)x`GVM39%Z;ci$>8N+4-19?N4)_TDzgAA8U2p%{MiwW1HQR&PH@2MT5 zdx^>xJ8!fGk`w{;Kc7JMZt3f%&qE&^V))fr??Y7-YXTT28bOZW*5b}yz+Fy<`0kKK zJFq7oIk$S$?iquE_`()G^pyHVmAXHi491|CNA&7pSsZ>z=dOS zo|}PX7M_J9XAi{bsgtrar#aj+2n5n#ZoB7V`CgXA)CF<>B1f`I`ggfTZ4mNF0=weN%HJr-~N@n&+eeLp=D zV{D8Cw+vuj6!!O*4lN!VOd;ju6i;T5a5(U26nqAU6@yM+bY@K&VV>bXYEk3Y%K17S z)8DxdBe5aAL}WYwso`|dMkr}SPir@q&K)FMbjngY)Ucx!%skK|1#qga^Iooe~Tu4i-1n>jQf1oMiG|R>)KCRLcMAy%GdLd z7!G<(c%l*#nZ6Zh&yZw7Q3AYF0X}O}VI$2FU%@T_fFM5*~b24-MgB*A7BYd=EUCs4X#)aDj^mQn&7k zaZqHr!&5*RbJG7vL~Acd6Cuv9Z5>QK*d9v@lWavFu$jazB45^5->wsXIQaWHi^Pa< zsfKHiTsIHeQocO{4Y-c=pzzS-_^VRsX$*2hH>_-a1r&!btMe)-0%KHfZDr=#m^E7C z=_#xWl;W=^I%9CM+8ndcAvYpF%@1Z1lcbZHnvcJq=EyJ$P9yo8e#p0Tk{5jNZHItV zacN5Vj>!s6fBdTgXmePy(@6hzYcU(34fxSzwAQr8lJZsIny4IBaeb!A*UIAPCV?YVA`#M zUD_QYYEU&dPRmh3erzDi%^L`A-WV6;TsO9wp|!Q^+bG~M<(lM$2ub~_Z@@0FekOSg zf#o88eUP8O*Q$#M%?z|jFHjnw-EQ}49YwCr3G|Bo9%uwK z8&`@3KkeO6_qpGDSyOAm8R#Q{R)Kp3wAAH;+^o$sEww@JlR<#-8~qIV7)%V$svjmC z2%dxf=|2F1?@rewMdTU*;jr*ur9i1^Vr)8#LuURTP5v+7;9u*f|2<qq=&bLh|c zn>y@cvE3*~6CeT4>34G4GTyMk(_`HNh{2?ufxmhtXsYbL2^a!}@PlI>uVC$b^aL;m z)^UGc%KvCM2TPEYLE)2STd^F3k@G!h695FXnu<;);X$B1pf01B5rX zvEohYc>FO)Zh&+RQfB6w-T4L>L|-7u#2N9|1G4qtGeV0#N$mfaf1#oPIZ>3G)WRu{ zNz*zj4p-e11dmE+zUPbT!aJ&d7Hx=a>m{gC@vG&pDH}kY5^O%?dj{q(=&H|(P5cG6 zx^IxF(ZlryB(By0zb(4e=`2cuyA(E>gM)kG02pH^UX_h|{lJ*956|Xcfzlp>>m}Fp zlt(PU)ZKq43S($(eNip7sK})AK}{y;#X`XJv}u!IH2)dk#iFkFwE%Ah83r9LU5=}N zAa&13Rpo9u%w(AT_t9e=Hvj08$#1N%XQR;~)=@n<;LodtrKvakkTj3oUid+BZ4=JLOhz$@Rz)+|OvW)98vNGN{Oo}; z;(xyanWaUy@LEnXyK5xGV$Q%eIS^6cal%bl&m9!Fq=LD);u%Pdx4ugv;lyOplF)4R zfJTG8LZJ|O4X&WN|2+Lj(AHoZ0n3E^Ovu#I*MpRa_Ht{JW!kX*Vh-ca2e5n*A>)4g z*wLkG#KvnMermw?-YOR>cE8ivlW6t)N=(f;xs9VjnvVokzR;P^W?h#r*^m4lPxSoZ z+1q*qlnk)wc67uZ#@)fz5rF~#FZVk>_Ye1S9VN^(DuuJsf!>&Ymbod!JE*hj$9-XWQl0wgsF zEn!}1_S#22qR}<4Fu+k|td+=fQB4z8ge~Lk5Pyw~=<; zk*U9Qp)g9nc{(_8n$FC9X8v*ged$~Dr0r^F!Q&)8RQ>fDlKgTb+RiOItu%~;R*(Cp z2ci8j@2G$|RhiJl;u@ux83g)>ZTTe}wVwbS0kR2DJ=~FX7REtQnC_!ijQci=oVWSl zO${@-FlqIXF|a!0zYkvm`56ok#$lW%gsc>fZa_n-1F`ldXa<&^V`jb7MU}&R$O$eW zGS8V@f>;H=0Z>%81#46;HkE&SNT9iK`D47vz0cn&Shc%bu!Bs$%?TGiTIg?>uhRxKyD16lEr&;&j~_t-SimpYupV^3G!=(CpYF>+LK?CIlwMy(K9bg=4k@9aX)8@e-GS{(6qTMo3{3a# z1#FSWIqy9u=r}sUZ^xQsjru@!lZC0Y&}Ha-`tLw!kPD@X>~y!yJ{b}$ zdj=)Yt>J>1-W#o79F4?uqG0W=vW{vOgDQ&S8^nY{*sxy$Y^jPzEXmeY)LsW*1AB+Ry=>k)O9iS=v&`!L7*Tm9))m$J+Kr ziWBkLSHZFwidSvizcgOKTK=BoM^Rz!K3o!Gj1aej1MfF(-=W@0fhqY8Dfx=Ns*smcW6pYW*JbsS1yauDzBYUA!lXDv7_+g zw@T}~9(^Z3l-_2!qSFN`g9_@y zS+(8jq0i!UfuSN6baTT70p5)fkfYRDbgLU)c~}bt@+Ea`jZNernsKBmzHRdhf+FzFzTR5Pf{p8zp*PxY(RL0abW0u{QnRP*#QWWS-#TWvxlZYmI#aqjQ`19Q{1pa1{> literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_4_3.png b/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_4_3.png index b70910fdd2500c0234312571f1b1c4e55fb5647c..2cd75d2797a981a34a54fa40e04bdcb8f4ad2aff 100644 GIT binary patch literal 38374 zcmb5WbzBr&_b)0BBQQ$HAcCaCfP|nlNGRPX-Q78Kiw+_p-O?&0jUb&P(y4S0Eg;=} zH~9G8^ZxGroO7@L%&=$Y+AF?m?X?VgrYMDXgY3q&YuE5(q{Wr5UBk@3cI_WpoPR)z zSjlbrSGVFTn`vmmj3W53&Akk<-h01KU;1U@b-XT6y?*j5 zcV&I~?x8Q|bZ$jyX;>lnm%HwjdiYS)VnHpz!CZK6D9Pak{bSGMubyGO$@H&piQ-u0 z`9QAIQ(#?we~N^{t)rpfTVRc=sSpOL;LFv}-3m9~WUKZM z-~L@VLSlKNYhbrShWnj-&b>b?W+>o!z=Is{MCC{SwiMu2=5r`2QW~slMch#NyICvt zGleYY)F;M$gu(*99Rg!ijNaY&_lzu~FAKQSKQ-9R)~iF=25!uuG8mxxMuFcy(9Q3+ zn&hxrk0-*CJLJpNB(7Vn^-E~VrpL6Kr}*(x+^CT!Y7(+>sQo}6AkL%uXP01t)bdfK& z6yjHjJVg5w%)8urn=!aZP8m*HSwM%vSCU^N8GTxkWNP7y)5np0lPN8f3+?upVjwV6 z{6PQ)V}F&8mNhx%5NyKU;z1Z4eI>K$O?-Z_0qlw}NZz{}qf8|>ee9Oq{Sr+p{^Oen zOBS;nhoD^B#%i*WnV_%X7<4EKDe2AABqd^!F>GEvq)LKJ8T&&+%dLJ1Ozn?lOEdS< zD%{(og0yQP8kYQRs5!=XUo|q5PbFrq>;W)lwAA5dCmXHPyEDC*>cS zl}PYDSRbW&hX9^ih({A*jSiA8426&M+h;Q!4XiPs zdn((oERDbzj~#_hn3=&`*SDXVY~WygS;auW)hfAR!rGv>D3 zMGu=`g$}v9&uSL4Dv~H0$15Vo_Yn_c&5~hd($I2sOmaLVXO*dr+@=RPm6RPTN={km z6(kxShiU?P1p902n;+@dG@&7Sq29_-G-%a*%(Er)Xo*l|l^XAF_==b=N6#up7iUf#-II{FVZLrgs z`W`xwx`QvBMaMt7E2bN)c6fa7!Hzs6q&MYdpsBZ@sg}u*jg8-4n=_0Xhs$R=6&wFK zmd>x-i__qu;B##{v1bBcd2}os)vpkVCh5jGQQ`fL*+8hctn=>L)e5a7S@}ghA+=s*Qg9u=5VgA z=CR0w`$eS1IA3tv7Z@Ds&xE<3o$`^%sdA>xJhzB7v0fLhTu2U8lC{=cL-08ba`S2t z1@|`Wde9o}#X2{#j{qpix_He0o^~sJVx-X?Uv3f z(O0sKR{Mr`zoZ7#CHM32UiCoG!98-q!xrGEv6p3gcL=U7*2AjkSd1?0#!|#|0;f$VJ=I zn&*DCpoS+rvaOju2DQLM%D5=YB_-MTd08rcPkz8X)Nv4@6PJFQAv6};MDWivte4erlcei?t9iWBw`2C75oQQI}6vW zz$_oa=zNldEk*nMN($pQa~dpcHIrCv>6ei8ckRYC|^UMlJ)F8cKRoS#PfZ>$Kxow(R4lQZM-} zv_eva5V-FlFN1{Gav33=yQPWNXt`+}jU6e?5Xf-j{QQ6@VTh9dpHpHuKU|eV>JiB7^&Md1cBf z1%B!2VZ^-!e$`KqItIvsgC^o^*YyaXJ<$uaD4mM6iE`g1(QM{8bmrqQZ4G4a@z3D_ z&+IohljLc^mN|&PRTb(ZH@<#FXnw}NIQ@}rSMZv+`bfO$4xwufR-qR1@neGc)xo{h zrEaTjk9q0dGXg>Np9E|=t_nOFvq{HcDc&(`@m2Cdv7l@5Bg7HP&i6iZH3gMrV_}Mq< zEBD|YRef(@wlln^Dyye}&z4NG?&nK4Tmos*eg+uqPc}_bFo= zY{ZK|d(OFe?|!9AH&IjEOX%;BXHa1|clp9Wf9M^r$Mn1+ti55S*K=AFkW)go*zT)a z1X@xZmkw3nZ8Cvmvkk4vcn}HUHOGNXD7)}^xpE^6T)u>VwhVzxBl_)ZhU;9G^bSZG z_QvB4hWlUaoXX`p_<|cP@GBJy>#*giF`65%_ATxpQabl)PGj@1-FAvZM^UDgwMExm z8VoHtM6AN=NVGPaEnZCqFgyr7MAoNiuamoGjUq4nnr1CVu0f~Dyvwzm9X1|~*BG~~ z6g;_S>YbNe(Ocao7Fd(Nk-8O7s&Tq(Y$m<=QB3b&6349-`Mh8(}` zt>V;iE0M6|C~PV#4c-7$S9%3u|4MkNe=6c38ui88hf!~UB<_$Q_Ks`bXPaobVI}2eSH75VKG1Ax}talH^qJ;Fc-ToMvS>2tw0oZ9?c3OqPNgth3ObmKZL%*TVJRK-4{n6}T zo*2W?Z_*FL6)vrulV6+-Z3sle)oA>Sb9ly9Jl7@XH%?+#Xy$pGe5$`eXi_-$NkXSYSitGA>^C)rgFYFFaUKk3gHhf)wFGMUiih8>km%b8rNYT%4^5BJk{FDI9XD58)E567H%aYJx-&`yazLfg@vT>DM z@yfNs;EUrj=CnkH^qlpdal05q6QqF@N}L9))u)MU zkNWY+(Xx~I$Xv>}lkWahwU_I0O+Nhahr#Jj0iV6tVP41VuWeTg?5)0D!K`#5+lfs# z(#zn^R|Eo(1M}&$b00jlldWK_-rG;RWUIVn{|GcOJL;oub<>ZN?LM0J+Oxx+@#T%a zwmD*w!X@7V95qb`RAlirjlu3fR4@`zeF20Kp}!yQDvT88a|K&kET&SI-dc z?)Gf_itY{<3mRwAW>0%9fcBA493BnB zxX8q`;+hHQg#8-Fun~?$jVrFP1q_!6P?y9iiuuCU5vpH{!Cr=ag-b&qy)!=w*A|YQ zJ*rgw@P|%jM5|odJ>MN#L)o+VGW^{2UC?P`rOzpB8#Y-^;g8S!hW17XItsYCMWp}l3>=mE#-|_Hv5+Sro!PXpuE;;vlnsGM(pjS zC9E3evHA!oCml69?!VPu zOx%W^59FlvbDr+IvsKiWxlPK&!VkCAhVK*&0$XIOq%qVR;l0IMq^PLqTlo_J(@2Pc z({gOb%L2?;=U>@KI#h5GZuuZ~#aoPFJ)~Ou7q?*bQi#q8W0hAo!RpDXxHH^i`dsn3 zeuZ~!GK5-q!i*f_3MUH~>{WQbaly8L<7uk+G)*7{u%_J6(qB%P&-6a&(`mnQ@iMlw z6o2h;km`GO=HG6*(o~KC)t3Yy6M$ z>R*&C9w{i%FQ_uE!^9K=q!a%OqE>Pp21li;%QdL@W8}tjUz6-whAip(bmumR`0XyQ zPn{E7?oOi+vNJLtMdi~>Q0NET3Z3sS<7ZnckKLA^6@@Wq%Od5xio0K~>f>EGTL>#) z^DQI-fZDU0^Itet$ZPC-E5_~pwgqNM3#Y@FMiiX; zj{^v%9J@wNnX2KFQ01HQ+Ulo0%A|-@>Ec2E z__3E)>ILfwk|aPksYriE%+VmI*0M`wHclHU!d2t0wnnSU@^&Z(6QGkKNS>3~sz-*G z>9`hx|4Sz@StOd68O8K}cf4%+UwTL)FK6|*F1HE!>+Ah-wEsHGSFP88 zkop3^|&OF<7)^@F{r+LP@)oY zuZe>}9GQ~(metHwu$BT|Y5o9ofbhq}RX}*RDCo0snI4^)Jf*L!g5@(ao4Oln_mzC^ z4~QAej6?4WQj9%AlBj%QmPV9IBYjbyOV-S^@9HMq0uc@5?H7;GPo+GLWDxzmPtOsu zvLQ`GgwWJBMVgw>ctd{wPOb5U;Jb{!5I6dfaS|zP8Tqn7u}+;cFCn~N#MPqE{NW0z zZ(E~L&%QsRiZi1m-{NidU!Y~ND!u_`7rhsC2TDcoJw6&z(Nlqtd6@hJnZ$yM)RbMj z$?X3zmSv4zSv_7GIlhCi+1~JDOPKqR|Ayt-xJZOn;NC6+cm@^}ekB90GvHggz z)2D`&;T8BE+L#y|KbuSwCTFIthtyevaQ(s|8*H45v=q!dhDy36(W0s*RGCv8JwvH~ zn`Wa?eaQMxAaW#|nZFpPd>K5lWP$4Y1TizBs@j=s*sVBr#5pL#zWbbi=wGICT@tEv zd~_XtJ1L^==27XRP9bYH9H{;lmf$>Yd%fGq94&Kne*q(^z-@)!b2}rMVIce&?8uw~ zSHdKS3pODSO$8wWQ#0O>%5O(+Y-VC`=Y{z#bHH^d&6z%mR14=pBLE#VKjp&&xqWLV z>KtW}CR^eUZ{IyQl$4^RGg&9p_~6GiB8{mo+-FEI1iy5!+`q|KX%yU}H<{a3;E3;D zAoz4FSFA0+XSGYxtxY!_Bvfz62UDVF{Fwk4NejlBsiioyCC*HWoA<`%^;hi-Q`w^! zWo9!q+1~(Vj#J@hm4v8#S{Y#V_&G#NOA&O0NmDV-$+1F8N+B>dJl*g8HLoT+PwuDh z;ahG!NqlntuWw!ULN)P5R#4kRqDyX?QU&@(cHz?1^ex!S>+5UF{A0uJwuT6gt{K?! z0XDLk`#a0ym1o*p)GDnD!OijkoeCXK>06uIvt%}%`1jg)(S#a(Guu_IzON#F+!1xf zdj;Wrjx1eNYAoRdmoQF5N=|?ma-ER<=dLt=%+LE~%CcFGCDIlHp{H`ps5MVM5dRnk z4A{@Ase#o>B-8KjzwTJnG(&cml9Gagij;JPnpAK|1o8X5te=5_uaisTbK6FBf;hrE zoPJtroJZUn8`LqlxHp=_n$nFMw;!FI8{VfV?9(@1klpNXKYJ?Gwj6rg6l5v*;D*K5 z0L?@!)Eh`=d~U}wFMh^Q7lMXP5=#mzP%==G!X(V`pmLh}t@x*QagON3TbOqSA1ii9 z)ayOan;%c|2~28}XNV%2d8>OU=5$WxTqz})(nM#{)Fk-^$4XT-GP;Bj{;cC;j3iU^ z3S&A{&KEPVX|`hLZE|RF+AJcK<_Ve? z(t|J3Qnc6#Jd?$WBz3j7J@j5c_F^o=Txjww{Nr}Kfbj!a&$~% z|JBWSkKD)pl-uMkDT0Bc+ma!kIJ`;L&uSk{uGf z74qiWmNYA|Qrn#_D<}i8@#FC!p_PdT7Iyqvj4F5eRXQa^dj>u}<9e_3IzqDfzLWBP z21NF+n8YX*uu|Z=j`u7|-q}(k*IG_I%@N*~J*t&c{^YV&q~=$EmCQt1Jj%hB$2?}X z{KZ3Aoema69$@W8mjspkC%EnNW6e+u9U%`}K`x8yvKikQ@MOL{PeIT#5N;9QyuBJr zK&sRR7mk(AB9htjT!`)b3YFvR!SJ4oBBLWh>e;vfdhBMl7N#xr9EgwK9j-e z(>Ex8Rul{UVr%4fvI+rTKUVGSf>%2*ir9@XXO*4O+B`*Bxb6Lm;bS$gowGrt=t2NdLcUi)`Z`I>=dgK~0lWa% zV0%kRa5d*oufWWs;8$9zS?cQB2mXs9i$9kg^pUYIvpJ((<*h%tL@nzs%MZ|Wc)2pD zes^?w(uFW0QW`>|i{GAU3dsmNA#z6j@g?CJBU&Zc`XhyQ^B%NfK#VvpXw znidXTTia+G7>ETue$Jx!%>o0a`xs+x^nRJ)mkFYX-!^_B^09CR$UJoe=bYM(KA@?Mp$WHrjq2s7K5Ot0j5m>yxS39BGneOURvBGHR8QjPPgh zg1GPjIX?*>mCWz)S=G`A&;HCJHc^}$=IX6H?(!*wD|=PINX?IeG8}^_SnF3tqlqmw6y8X}%N5j9VFVZXUc_aq8>fTyv|38}90d z-zF>D?z{?X7Bo_TiQ;HkzT^IqysUn3zXWR25??|ru0^ol+Qrt(5fIkv1W$7_^4{;5 zur}PmfR~2)hwD%c1Y$=g(pOggQ<;3Oz3LlmL#SzgnMj~#$uHq)4$Wb+CK7jc;)YQ4!>U;7K;Y|g*0;aa@4ynb0 zYpEK3cI!H&zZsMhn4{pX;d`egw-egryZQae86Amt&dpM|XkJGgMa!FY!Xvv_xmKfn3rX_D}hIp4N2V)@fPY$woOW{ief>n%q7;Iy>Uw>biS-PDiI zNiI_t;v~XCJrd0>C2R1reZXYvo5{MSsi}`XUaDAilm6R9y&)AAA0kd~Iio*>Z0I~Q zZEox6ky_+6l)H{-Zz1^9kSukX6M^foEHt9){M;xBJBis=O<(Xm>k}jkIimdr+Qr)(_5ROyI$=Gfz5;)pOzP^bt)XOB0b zM_{6UJzcEH#GWahA`J{F9(e2Y*5mC97i#j=73zw-O+l*P=^XDz;FUk^5E8_VxpJ?b zaT(o4rHcXgAWQ~~u*9XM>Ug5O95lzkcr*DKKh4F9hbLoQ?a|bqS#iquZ%E2)ZZYF& zs$I(qBWuysXYxCL@;(#?3=9?D6{G*YwxyKx7CY^sPz4#moziCir!t5#to)ka#F$}> zoM-;{xvwy;UHh>0xdZ)*W@$iG9~qF4a95D@4l7C`{BbI!vTfs!LvhweA72E0Fa?u7 z@h3ccM#aI;AKR%AyN@Pv7CM~I$4-KUU{};ZYU&*08O^^xPC9)u7eE-#Nb49D2v6_n zd(R>$NcJos{K3_>q&%e=qLUI6?+_2cYQMdH*rh0q4-k!q=vs*Pr?Hn3eyzHZ zgi;8^_izX%SkxKLm(sK76s@AtDiKhIowtu-%-uF*_8-?oW@lN1Q1n_HA41QTzMekz z^--=jR8Ww^=v-uAEQwy0XG`c1|0DzA0@to3vY>**1)?8ud6e|=X{upqY@v=}GG$Kb0r4#b1qCGqO7=C>(aDVEZ44eLn^~hu z7RET7k2f~8jX@>Bl7kqhHNp_AWLXH2G7g&m{`&b{))Ef8cr;NKj>aY$37JEI9D#lw zXgO)II4)mOv|qOJvOFy}VG!df3I~P@hIYrIi!~9<+>!0(&8oQ2R6>GOriZJj>(Fw~ z;!KW1G5ShM_=tI9G#uB1IXWe=Z9Zx_NRxx|9W4qB?t{VdSv9#vY;QYGsLt?H391xe ztK6M12mGjkjKv_4LwM1~_mG}Jf+2zFP=kB#{!;gLSnCcjYO=U-zzHI`iwB zFaT0I=Qu$!hzW2k1?=;%dKAcbo6JHKX+mDmz;Z%-rf*2VUWjmCEo}?MZ#LdiWfpp5 zv`-kBl+3dckz{u_pT&RSLLE9p#rh9mkt#?pS#bf`$ZtYpj+7Mn1o!4CVS1cYcoI6lOdd@E%0=L3E z>uCO7)2k=nYq{At9~nt+n(8B$zT%e47LVRXb{O85E@rBiv_ZFjvj0(1Wo6a~m_jHL z@V|KU`LlsJ=pV}ILibOaW-J9GrGv4ToT689?#`lelW=U@tvCbXP&|Y^a+}!Fh!Yva z)XODx%%lSAtSF%Tv28vfH0x__OHiv7?1#i5_@-40@c_L#>)sM)1AL-w9_40WJ? zQq?wg7`ma}#iDI{A`H_Xh!4dWmOe$W8oA*Sz6oexxJb_1+bwCbyZ~VJKL6Mn9sAC&+@zfr2SG^dit84g>}k(4f8`Ar^ShJFmXT z6z?16LB@5kN$B5qp!cKEqTIzC=!yBS);A*`k&C`hfh>t5)3;Rl;x^yV&T$2T;V&2E z5PYPe&Cxj-TO)j>@n4gTIIaWc!%(NPU3*xW4*^_c57Sk}6D-Jm6^ey2&%Pz;Z&=Ep zNzZpX)Eh}y5twKQrm-x6c%OZIxz$&h5rxk8bVy!d5S1yeeq8vOmzq2F_#$n-$0ZY`V%}j9>6F#;3J_|%v1^=v5`e|#h`azkFt(D zyesz7H4vqZjK$G`zwa=lKlJD^ZY+f*cgrC-Qq*7+-1K~GFu^~32!_VTqfJZhq3))q zbEzP+7p04VrU*p{!AS}9Fb+|i^_#38_pLgFJ%mkG&FcZ|DNYc3|yf2*PGrz z7^8Ba!H}h_ZC`O|R+!HxO=KB%uk1sr31JxP&||AeLp8kQc7?lxjib8Ov~(ax4Q%AL zjK`T#MbdvLS%-RZpDZ~0yD~$UB#IU#sbNKn>hG8A)o|7pPkzYkAKn`ieW?VMkP0A) zj5SkA4#6C)pzs#MV&Oy$D3ve<|CvhZ;?4yz@{#E{+AXql#$-B>8e;ak_CVT}E>s8`Q$p;&-j zh9c3@Tr@D-uTUO1p9WxOiPtlz{#=eqGH4b@Whni~=d&^y1RFal_bK8jlJknUzm`Lm zVj#UdH+ckJmB}F-gKW_Src;OZm@v%g&+>pK?o>pEFR|Lu#6ZXg8?QqZvp9I5R0mioivJ37 zEPBhaf&Esw41yuLAFP121h4FqO9a7PV`!EZ;zYKX!|(x$$P?N#O3!yIj0)%gJ<7+>FxV*u48(!+^IoyYA_Pdo=&pFh8b%QcS6S|=h1u@Lss}*) zo|K~ZV+@;KUh3l1_jdS%q1k^9qyXhfy$k3(H&vNq1xH0G!+c6A^$^W>2&Fe~fMhc* zXwQ3Ca@_69G_T%BLyb9l@T!72U1J*?)-;nZcy3eFU_{vaiIvEDhUVwMb>*ALHy5cA!)^S8Z~rJHr>+Y|nn7CTOJL-n-M= zP`p@8u5{7rcbpe~vEf{Qyq7lNIDE{@6XGpM!GC3fekahOmR%&}ihtbmaI)@TMzyZN z1pR_>60aB8LVI$v;W}fY_o0dkrm;Xw60|_@y44pi7Oi2Rb766@=J(6R)m4M)BGIO( zBFuoMsCIiyl#%c{H6>-9lWB@l+VLo}NdE9DOX_J)+LWHte7e+$tqDFJ!FWp~O}XRo z3HE?a+F_E?>Z>J#P0Cf({{H^qX%FWBrLT^24ER()M?sQrM4{T|NlW2u8sU$RYvVRnC+3+(jB@7TDVpF+^1a{h4H zMf>)sfO%_H#a<01rNgMHfY75yMG(K`-_E(Gx`#aegcAM9Yo}Qhi9F;|3Gt64YgL5@&UR@%zltYLzVUE1!9)C(g$yj8)4 zGK!1^hSL^a_F_eki(cxOR|gX(&Z|%Ew(_XSK+o6YiZrvePrd~Y$;``dT?p?G3=uNt z6JNX5_)`wiNRFcsgPseHMH57z_ao4@Y}0qXv7vHY=u^4ie9SPxav$r<_e-6#?V^ib z#xyT$#S`>o%``i&k>kzKg7I<^-ucgxNNT@Xrd3sk+A0)JtnGz?;CaTo5Y{F9Fj~M` zagdspvn)uf1d@m;-5Dndl6Qx&pIZhXhs}<7bWRB@S=M4v7C`|8@7y3%{B;twNJU+N zU$uUm#4LY~77JIktUcMmreaRb$bdL_F6rrT8gE(UdShJsumIg+Lmg@H8zvap zE@>*eH>3#oyzZL^*osy%Fpl3UO^Nd`R#I^?*fY1Hcw&s zqz4}BH5Vu+1y)r9TROUQiWZ>k#G!80zEpl~Y^b|pNY0i?M{Q(yZzOsSJj3Zm82W1H z%0R>5Kfjo2%M`QU($a_dtggAobb-X4l0F&HnN4M2Oo$k5DUa>FY<6lk?A7>BI+x)o7Go`>2}j5jz9i>j+rtj;?tx3%C3384Oa&wi+%)72rNw8 zwys=;fsv6v3b0rZ?6+MEL}MBCJ8^*#r6o6fYXKOxcQh#1cr^8tPbZS8)Lw_rS9LfRx8_>Gt806Cv)`GYuvLwSQg1{PV9-Q1 z)C~Vsax@?gA03u%3Itn64B45P@k6~07}`EvXq;Gox$J`1lbX4nG%YERXThE`Q=V=0 zc2p;gnQ^CL&vCykJzOKs(5Ty$SG@`YP@vfecmoCZP(O0v9?8fcpDs|U8z^fp)>lQp-ZOUcaQ*Md}8^kNV z(ZARKsa^?Ll844o7SU@8aca@?CGe!h7|9|sWMH~gJM4LJ4^)u`ng>al5$IW+z7C^2 z=gHln#ci|ZsdxlOLhbME!NJ|s{mEdqvatQSPIa|7!{#69z8p=nN&BYUR34i~S_0U> z`}rCJVKj&HCAFJ#I;SQlH}I}szN~|=B~dAiLLnm&j_T9>?tXHDy-)qiML=)&#^q62 zQL_&Kkk4y?^wSz=%5L7iLXIpN0PWFhdKO0+2B{&f?p!8fT)H{nLmF{!mh2#0pam2F z01+yLJl4|>XV)ZvD$-tZ*QGNBJ|@;-$-sV!fJ^`oe*hT>_isOlLhBM;x&S<|2m)fa-tx|DPH`zstl4jS$G60EQ+$Ecr4G^SbON*B^rFAuWJT0XYT#=P5Ox z!&nnEkRl+BBLfm%MHja9)>%+s@kU+l?wkR^3S{ zO6;1z18RyVm%fVOb-CiYt8CW48%HlZK&7uYj(9XaqM~p;QhP%w+#b>Yn2$%8Yw<2A zUX@o^s2erq`fsWc_s#o%FSAw`K0@@?!=KRL;mVej>cmv>_l2AMf*9G1 zd<=2Fcf+fE=@d5_i);M)MtyDP5eN7F99afQ_XQMyNWv&^8AT(-`J!;&%rT!E%Fo_x z#udRAZ}latkow9uPeBkSP}`I~cNqh$C%n3IKq-$ZSp;8P*!O-AKBG@mhDt<58FI}K zwEiY-s0p5Mzt`HZE zc42sIC#V16^1F8&f6#nCJ+;-2Z{GbAz0y5 z6z>=?XI_ht9t3{(H!0kT@YwA8yfpHG=*oiwFhpq@G5x{BV?a+4Ik+*7LI}@D)82mc z;((12^~0khQIobnSrNI1Qy!yZXZND~>-gaUeP!h84q?+vl>~8Sayj|W;>K2VTdMct za9X2K(zLhUVSjsM@NjYeb@F=S=KE|voU4@>O)yi81@c?lK%zBw#J}$HQ4^`YF zzMduy(DH#B{HljZ==VpIFULk0UWv*7^7*f1{%4^-)Bo3?|DOx~W#r3Tq5u7U z|EzN5sDds2{rq>>f0V}mb8G*5CG|2^&f3Y`F8kn+U#4DPY1;0YvEdW)x%%cviPE#b z`qJ`#UHvZO`qU&Vrg|jt2iZS~Wxz^ceeven|H7@aV*QnTZ#8_nel82oe*<3}xy)3? z_a`BulP4(uO+KzSHiYALL1FNqaXbe`VE zJ)Cu|8!Yk*eX76r@MrFzjs5A&+VpwPg4c(`trKs8t7J7$ zn1R7Bp6Y!baI)^#x4QS70^^!?vc7>A)4GGsGs@!F(PKl-V5{3dCY@C~*IN{ln!oPq ze9=7Z$a7G2NO3#XGPb?iLq!gx;dtzLhy5_DgP^e5?NMp56W-Mz82M&e>~J9ECQuSAIWC=X4tOG-nc4K z>EwhnrYe_0XiQ@#pRInLgFCw6`0ye%VTR@jfCHC2!<72=(MAd)HnP2-_s8cWPp9eX zO%AiKw2p8okApf&jcGDGh;eoLSFt+d_~y|mf$;93 zSzh7Mwnp#8db7sqe2@1@7~V+BXz|uslAljDJw?#il$Udp&PqX(RJEOhE0y4#or8WlN5CL znPW_^=0KevKotbuOju>OGrdF|ZkLpyiO%lwcsJ zQRmvEP%%1Hy^@$Tpff2X6$zBWYJ1&*kYO~s;ant5&~f%V?LI1~ypRuhK{wft>reCQ$}2O!>o_!+tU1ok zZWP49S7_X)Pa>$CUAjJE>DOB;b~Zh`pWk}XWo6N$mq{?t(bj-h`~=*QJ;>6dXH ze*&SB_2%jI$(o`Pi`63vVIOgYdW+sEDJoyx#fKnH;RK5xuR9OL3m4u$oKq6qTYMAx z5ixRHNFnIpF!gB>#LOZHUhG;uwq-Vom1G~o!8&M7)U<~IWO zYrC&096b4x_f$=;0{4P$WrTB#DS!mX_?-r04kDrP#1q+QmUy?(%lfQ9YTuvBP8v)o zSpoNr(d=n2@12_Cf|;4;LZ|4DY(hS*J)<|L`}*3fvePo(G;GdxdL3RC=oEzS(H^eY zkmv8U&UPFZOr^JW41&zZmk{3bx8kS|J}p!)Hq8 z^C}I;#a*F}8?`4>2EM0$<10zcRRmOmy7tYxK82dTvGVpw`{m;s$qD>MLjAr6pXBW3 zqzfCi%qQ8jgppKJll|VuBInVrUBK7Q582tIYbeH#aec8-XIH+4IKMv4RLHlnvOY6{ z`O-{^k~-oeTvLR|{!yF!t}Wom)ZULxdSm{sQdSicZo})7-f~lA#<7NZKbT(}m!_@O zGweRmTR!P3UA3Ka2YkO2*SX+#uWqOC#Lj&Vs-f#yS9UxqkOwYJ77x@zk-)khfs&+X z9s9GOJ>hb|RALwWLPB^*FRSr$*V3hAyT}F;N$fyxg7jr_5%?~mxCnZ8WTE}6AOFs7cCxv3;U(txgNE?xO8m_J4QNKH&o zKaFgAp(xcr`NvgZ-s=k92AiaIP=1v~lB>S4|9JiR1OJAzl+Ha0pu7J`lDxdgVT>;V zdQbCmUx1s*Z|+ftGW+aJ*XLZ<=$Hj;zT4(~uvXEY7l*#t;2c!=DAu!DcO3*di{iak z?L=}|QOqU30;!Jz)b!2lt-HX!GO6x6k5^nY0)K2TR~8oZS^*hb)`?s8eO1?UFAG?vZmtoZ+5pZ7+rSz50^f;;<`xo;H ztJ=+*veUNUt2v-bIe^5s!Gl3K&7jV^RcS*-Y|7I;soT;HaG4wTx4Hun-M$ziYszy_ zdof>E+LyKkF5ir6PkT@-2$d(oem=F*avQvhLhVVQQ(v6p?^FtT@8`}L@OmGf=TeWf zP?J#&%{6Q-VoiQRg9spTXI_*cQ;AoU_xf2C)mn=CG|}3NUo)-ZnoF^0P}Vf;bqJ4t zF>PKkJ1gRc{x~R7d3>HG@>yzigSwb!r&tEOviK+`jmqhJE^u=rTwLS{YIm|F4emxq zN5h91<2$WPUM!9-@&AKydGCw2Xi*KN)-s7=ZMGNvw25N3>FQlS?DU0-)arR}0)6T3 zP0^=_k`S5r@5GW8cqjyTqjF)zo`ms>A8#C z^D6}A#JcOv+0VBC9D%CJDqTgL$$;r9`dc`;nn|1WTUlpJk3qy)gILFb3B;1aMYdEO zZ;ox~yDaAw6~tp&>O+Oks4uM6E3DnO#DwO@cN`47B$De*=g`K`sdC?Pa=9~4vx5Aa zKOewjAR;@zcNP*USCh{cod3Nmwx5cR?Do?4)@j$$vvdq5E`8o5n)z#jEI2BX-oSm^QqIk92E97PHRsPTGp}nWGRkJ=T>Q$u;PWnynE)(}F z0w6khs+|j`H|tddXUyV@%ERWIYFOkpySjn`sb1vIpPEtp05J|*@6!_29tPC5Ljd{Q z3LJGDhq}SPw$Y2mfxI*mucM0F0&h-!2k!(#SjEimm+Fl#=NRED#-Eg@O*~*a>N1t^ zyZE5sNy3ae*{4<&vp?UWgp+K6qUAvxV30yw506NElqQphzgPv6q1Jl*x`4qhs>y!F z{$lH}{|XunM@RX-BW~R%lGkt#w|gDTUX@Sg87sC_P{BJ5USsNA_W6g}3n&W*8Bpp> z@l|z)N$~(fL@8$P)w#PyqT}^nNSqx3M6nBWjBJ)@xC4mLO4m^(1}B$LWkPX)mnHBXkRw&f?4UHPPp)bVj5B@WXE?IMrt?Ko}K`Gv&x|yu;cS48Vcn-^{wD>MmxeCaDORznpQK=`M&NgT zM6#<&8!&CKhpES($dYVeyUolw%w3WjkJXIFJ88R?R%s5N{V|VwE2dKG_z!ZjQwxhA zog~+UjtCs;B}A5`>J>jv(U@*~Z+O3?yLBy&q^{nj&MWZnY>@I|Mpo>tSzGg}myHf} z!ZWQhaFUTZnZbPF4ZBGrwf0u3i@`Ye^7WCbr5poc?-_~dVFx`>8RZp4M(^R}bqs2X zKMNgB9=PpNl8@AEyj=fh7Sy6^ZGY@m?=KU2Kez5p&AillrF;fFjDL*@kg!kgtkVUHRInch#&{*RkR+N+UucP2# zk^NvseXpZfo5H&KbvtChB`hf8-suIU^im@A3Vu5GUkq_wYb-$nH))j?b#eYKOr*MG zF1%>sFj9LXLgk=I#*~30Z&iO)#Y>g5;doCQ6#q6YGvvw3lY3oJPn* zEkQt!#EWZEDrxq~63y9A{TcR^!&OK=G^X;S@@L>vr6MY+F6B3;=vT9ejcSbc5 zy);`k^nYvxiu^hpQKR&$6cF)wx`)ce*QAZ^lvk{CAMOew3O=B6?7OU_9Z~3QKzlbI zbOE`dPE?2}s#}*T&-4L>-d^6}u{vJ>J{zzcT54i)k+Rx$Xs4FDWPTe{5Omj`++P!U z=0sr={I>U^pQJ$X|7z{6!>Zi6wejr+L8N3+($dn>Ep9plM7mK@X^<`j>5>*H0qO1r zmvn=4Ejkw=-SEwYy5Iet_nhB%e%JN=;iWDX^Lb{CImSKjagY2Ib>?b z&}UVK2Rv>k|ASfI)nmO?h;K1kv}|rxe`dE`-SHyMT;OUA^|b1-=XsdRPE-_*il9N@ z(}z*lr=baT)1X)RsFja|g@t)mrc3Pm>vpz4%pzA#Bmn{Fs311^`o?x>>q2)44FXBL z8#iY{iQ2cerUC5DVLaZUXd{zgQlVk{8PkEV4%^ZnSSUVX&CN(iJ~=8u=~#cL{ZS`n z7<@1{t7$ylo5|>NeJ~j&QsbKL8C%M?El+|nOBS%U+S!SIs*LjbGA6!S0d7@v?JhPbpYG35E+?tz!D&29tWdiMhlf z;dlm%#4+L`I&D*TE9FD^53@8=6^lS6| zvW%HFHhO5N4g~`8nVj*F$A8T5GEW8E-D?@~CL}zMleob=GMdV+f)UMQWARIok{>%y zd@^W$v9SK$J)S*E*0j|Uk|WCvoeUU;ssD}S-B<7YjT`zPFiv+3vjdmsg}t1&g+K8a zI)Cp8p=_cz(GDza)e`qcz;>zfi1~**7Z>7R%^9H$klZXM1PW}1MAG*9f5y)cxb#0D zCa?^_2Y;aX5k$cNYLSxK?*lIBVY%K@Zk&ElnRAll` z#a}YSd@!@6Aqt_rh|qWdA;dmHc?mO65gMPz3gP!aO5aXLG7OC{IBdSViU$VAs7743 z?&b{$E<=gTKLoZ7F-DllLc(Z$2AvMGDyn5EN7+&4xgO#q-a#Hda>Q9X`usrk% zA1Z)RVQB4>S#O|d`Uo%Y}ZJV zmN?~uIAq<1nJ6%xx5pP3Dm_gY66V%ixI0(eEco{C2Z6b|kzxA<&Vg~i1DZkte-L_W z;8P6n2QiSp5IAb+udm$X(EsBHh_BxOj&lOi#nDI%XwUzAbNZ}RqAN6-oI&h)WX~QK zrLmms$7oIl%jYXUmEL}}`S-8>d>6zu6k>({Y7mjsoPf*!Ey=2g^qOg1Or9dewpwUn z8c#bCAq;o32NhT7varbcCrez;&q8#=v(&ilq*hgKI)lqQ9Xd2bml393jutBAde#~gorAZUWa&ni zl{vLFU4Cs)1^aW}Ob0v8`gS^2)fZ??j)TlY$Pk6BqpOGM)S94(+{V)0qmYFBP!`K66ICY}q_ z9n>WREt#~M+HE*Lgj8XIZ0p1#Y^?UoL*9K0V zw$re;+*docF|ZJvdI2J^Ys{ z%%_{+mp+J&(M^m^EFYbON?3b&_3&FI$hN6ildbccxG^O^&8q@)sb$u@p(a*ZlVii> zIrl95H7XSaV?sjo2&{4H(DJW&<$G6R}~iuZvuIh05l)8^CJB7MAcl|0fT%Dug@FHKeD@MyQzNy@{RlQ)Qu zW9*#<%@0T61p4YYNXph*!ZzaQX~a~8{Kt)7S@`!AzFs_s^|DFGC9s?etg58ZE93f- z-(L}b9NfHBaD~M)SQib=f=a1xN=83DQtjq^!B-zr9>%F^U^rQZAe)C-1^QT-r!ElfodGtUn!v~^MsX9-+f zw?hN9c`PSVoBTD7y@LvUD@J#M+Tp!Svoeg`8LHLBgH$bN${kOa^3`8h&cNPIV!2w5 zq;N#p0rE&JGd(^2@tgaT!BCOvGx3_oei9FW*0)4v= z+3%A4-72az+y=k9S{|rBieM;oEyHqQ$c3Gl+AofXR_>qb>HX3bu6H7pZ;7sGX_nP3ep76B5 zl{ilpuk$0)G7kamZvU4xA+5@_6tfys8U8!)%~7YPteNsQU>z;Fj{ajEu|WOn&Z2oq zg?WT_I`($aN7|-LbuHB!Ymd#YZ8|B|Dh>iNUb*2em-f0_r(y@qxMAbV6&H*SsbO1s zjBO0@kdWA~sLPDjXm|_qSTlKk)WqE2Q8By!Ks%>8Ft?D2#i~nZ`lGmzMkC9bEPO(C zmdtJBX}B$ z${fwp>l%j^6XauW;I~h8(KWjpytjC)85(a zsQOM$JX9n_w(YW9n&W=i1=l9Ya?3|n(Up8L7m|$*o@n{z8($CwWG#`qsU(Mjugxj?`ImFC=9O85muF^2S zSAk5ZUOk!#cupa1NUbS@nr1!46$6%{F@bGS3){L4mn$Ycyl!h0#CZerNwS@$ScKN& z&uFYHjop593@%Kb0SB6P^6z!%CS#+Yx>yE`-hLQ!N}-WI#@Q=k-3Fw}+59T)Pie91 zcxmEq%HF%sY8)SZ{$w9Ox1rxmpOrZRPug+H?HiOWtOqRp?8gwD`N5%4l_4wcgam=_ z_C59b1qVXGw9ZyO_xAlNEeeTixU{~Iu9fy)ABMJJdKcR210o0+FWaw^db$ykZ{AmF zF~hmjQH!~KG;?mc;@D_z&Xn&qS$bt+xh`OkyoQp$FI%ivUaMX-Fh{9BmKU3y8+)j{ zYf+FA_ryEzECd+pqP@|uR^?^aTSLN((a{DoPcppGW2cIJsQV(5N;~~ntRBtKpcVG7 z0PpYSsGHLArq2rNuhjmy^B0nqB`SKad+=@b%D0-g>sm*Pp#n7@tL~fns_5eiDX&=_ z9b#%9STEPA=2>l0n$vC@o0pY{L-L6oI+|ic3~6}!lS>amN{m;}lYE-7;>9ai1`G0n zX*GC~3a)jvi|j`%#>F{2%DtR{ao#Ayo0T6IM=Kor=c^Q0y>^@SVWA?J>1(faMItpNjo5+jM!kl{?)b&VZ#T*u_u6!2SHbkFPX$f^m#A)uRy*a(rpK>!kCk#WFTr$;0v{#(&k~1}?CA2J>1_#m8E6 zj9SH5I&8g8R+Y8cjSD5NH0nIe|L05b&%_g987{5` ziQ+}T03rKGR50WV#0W?XD1=BIWc?f;%GCIXZMFjMUPZy&iiOaE>G@k2VGCU-ivcXeVx$lHFblg1L*BNpR?z zr4&nuY|FLTx*>sce?5z6%9XkBxpzUPxf|EyTyc6L1)HRIL4QUR?KaGCBOXqox+zieX}ZciLq1bVG0Ac4^?32Zu+P>w0#bQ~kY ztKt?g^YTKCKU+j8wO4Q6VL;Ien`Igq(efSTF1@p>rK_(!70ayo$Hw31C?GQKK&|mN zaO5PJbC(v;R)#zJj!cRrDpi43MegOB5fC&o@J98Gd_VNa;ErwvBTiLb95SJk<1X;@ zmN(3Ul`lR7bLcZxM#Im((m~gss)bvas}~!a!xE}AwbbyeH5mRF^;emqvR+5UQxDtD zP>>>WvD7ZrxutRO&qcR#*N0j`_tvW|=E{8=>l(Ftqnj|dhx+E#hStlT6G3rQwVaPO zvrn%I?t18$wL`88(~-Nq^ZN@PdJbr*@4T(>)a^Hg?Lf*fl|%>A_$}7gNj8LejH2eY z>W;PRg38)9XIz4}-aVk@&EI@k7GA?r$tJ?Fe|yGvh4@%oU7MS$$Wl)2;UE7xj2{6l zR$i9-VSyZ7U2*QiqPkR5vKFt*TGok=X>;?8EubAPe^the=US9UQj5Pt^Y7*q+K3E& z1y3sI>QG6?I-V=0#tT!O(A;@R<*V~JEWempMcBWnQo0l8vcR*yuZ}j(>|cxMMm_ph zAb?PdzHtYB1}(qb?;Ba^|329G?e8O^nwvxA{!Kh}<7WT2;m8eM2-2N@haP{&DgR9* z^^XRB`innlIRALpQg51SYXb|L;bj}wZW$ZC$PWQCxh;_O?31TL2>MZH%&flQL&<11^lVNxCV7JqUfV5GEOI{z zx%o8Uo|9d8Xzr9ZDUAZijc`N)0XL&~=!4(z$`QEQhD>wxpM&+xUkdDa6HLn4k}oK9?x2dF!LwpqLXZyduA7cqAIhudi4 zs?(3DS-o23G5H(j*#}>$+w_p#cRWLp#K7O)rVyOweE*LJVs+|;(^8kHJdAvX_I?rK zCBDSBf!^A78DXn$G)>{?>TRen8_;ZTF+SmDf%kiY0O&y)s3?w$TOv*ek;{8e%^>qI z7DIdiD*cTx?vHkTBK&fQNIM}UB;mmgRg|U*EPqXh6GG!XFa8K}d^>#+ zR%|ZBxA_ALqvk*1vzrC>znyw#tQ*`F7Cd_BzOX$*p{bWY|F2<})Omc_(( zQyKjgtqx}F#vMvvhBh>oue~BGaMGiXZS53gr~p5@!5Da@yo)>QmmHQsh+ivWI)jfcGg9m05O4cbgU7c(RT1`GW*#^0N$xz>Z+6Ip|`vKW@Oz$r)`L-0f7nY*4 zai&t5B260{2P~urehU{x0PSF;N}NHn9F1HZh0dgh7?5dDwnsXyq@*W^EP=@ti*WDLG`oa z`A7>VR|aN9vR8hzL^bK9aZuBwxrfy&>HfTnACgTwL&Z*ERyeVJEVIUs?f^>_%&bTc7(C=mDm;E0VGpy|;d+Ppb! zrZ*sopAt2L=wJ4@(d!r+*}?6(HV%bqUW3fkyR#RIg0!gE4){&*V^ncPHf@LAvHrTX z4Rf!P>HQ|0v3x!6B-W}=HR2|!3CP`ntMRLP^;d1$#$=60p*ulu3%$~*6S`Gn=Y)55 znvSph5f@0aLf4TbUe4!$8NoEQ1$0a6z^$c`QD;HbK{xC-2$)#&rohE2F$BZYgM z3&wTJc2&9}6cQB`?bZJLiBVV6(l}dYRgL7n!yoN3(CqY+vAOMgdC18YU7w@yUKMN7 zWp&Qc?Xmr2{6+yPg=hU3WW&ck537RhLVv{fBUhV0u3GTfc_P9ZfH&@*ejzwtC1iR!wb1 z0MKK$hLw)IPDIcF)%xqcy?jTzI=6dPe(U-I+P@Y<7RhXd0u{xVQsk^5+|ga*JwQfT zFCXfE?xlCpFp~K3_pWOMf?B5K%6HjdWC6^ctwwaNmBE`#mb;K?Kr+;x@e8$v&+E=K zXq`w(ws-YHcd*US>vyiCay3U@qQ%Cq8P8mQH7wE4F^2W-Nb$8vTTMj&(mwf#svpU>VOK|+9$oPHhW`?7Q2;>0(-NsxO9+>(na*6RCO$S zzNl!nqXzBQ$_MP_|4NVoYEiY{j~fb(V#$Fzv_yl$l;SokzyFg5UoflBP;Kz!Yk>DCdHBS=XsXACi5wd!&In3}C|H)(@mfwZ;8 zBG{IY^A~UAZgcK|(Pl}ii28%Qyp*%$vPE*XRl0u}yu(_iZM;RS$_sd{W!*)nEg7J` zDC5$OukPnjBDjOQCw8RZ>e+PaNVmB;z19AX?>7Vo=x`MfK%QOZvSvHo!BLy(snYP4 zu(z-2T*yJtA73MDdT}rLC0Hqo9hjDUpK^QJ0N#mB{lgqko>j$k-#(qS!TPm=Z(#R} zzPhR552new>b=hoNC7{|*28}y$!VtPvucvMcdI$L1f89#U0gREO$H3h;SN)e_1PfW zYMpCiFvQuC&Ip-GN>k5W9d7YVmcEEWJ#7zr88pwuUin%SEj5d7LG7V+GzH0D#=NNK z-#9+X$_ZlifNb}=qjIZ`fCf6MvK^W4ibg=xa2e+IW~-Ei7Ceb0q|p$G=P!}NoyYpU z)R_{NOwz@P9~<3v@hfEzEGMD8HRaKSjo$}DjE!NU^p7T7G(FWFl0`M5vP&c7Uviq1 zduqLqiyUQ4*((KE@n7XIHhruWQBqtyiQ`88fHtEv>27a{XP1 z1=h8}7CM{9d`dq<^3hiBj@`>&1L(Z`Cc-i3RUSow6X7cg?wPZNOvi}K1kCy)SJnRb zGT9$MUX``xKvq{?yVTMu22$@ddrKJHQqMMC)S4A0z8|j3wW|JdqkK(ESYmlz=w24; zzn4UiM{=^HuW9Cc;(pZy$+zXxEvi3j`vmtg+TtoWSrPqxTGc#eUQEwKzTU=n@YL|@ zd1g{qIW#1WHY#S-w3rM?IDm(IIpF>^!HUQo*!U4<=<&>T0P$Y8zOcH=fa1e$Fa)&= zqiukMX?gwythjf?&!@S?WpceN>;!~uf#fmE8)`7BKXHDE|B0Pqorc`~E}w}bn8JBw z_pF5sVK@%O=7Lrq39Jm*JFnCbf-wzL#JFBfiP+VbQ<4h?1y;*6RY1eznn3h zNN+mHAl?I--)wrcO(MnMY|QWFl$9+Gc|f6a%=bb!jrbJUoP}xRU)euVv?t916#)Z~ z3%A2;47HK398B@^t?*ien*BEYNqg0m3TC~<2=}N|erJ%!Wqq*4J~KZm9BK89NFAWb z`jfkeV)DCxnG!HzCKziF0N1&IgOn_vG^TT%zTo<@6E|J|ft%11`p~)rm!!#aQ*mw5QHG-go61t8p}wE9S04 znA=OO7=N&tdWq2i%BBa{gl0&UN3Gi1(C%Z{b#Y^iype4xB;V~}ROgP@TnSQ=KNk7M z8K5!_S+X!n7mG`tZ*>=SKLwR(j!InqZm~LP|$2Vhxr2oLh-494PnE~711NR)pbb%#Z^53 zP26*R`4A8$)t5J3Pi_fzISN%>^oB z(@)=o4-L#P;r?8R^4(r)F&uPD3O*~i2jm{im-OC zpihW0G?jED_a*&pr4jDCetBV*->O+QQ1J4Rut88%u04~Kx|uT1)p;E+*yNTJi5^;C zo;oC`6$rku;j*}2{CqA7&lWWCGiLbfCbvZ0;sn=e=W6^D%Lv~t1JE);tmklbhl@^b zzq{8}+*EaBUbYP{8oXSZGn*QX_gB3d4G+;#Q>KJBLOZa!mgz8WwY~j&Tw>h~2#hCg zJwI5M?vPgqT+E~|?Np(Q=-T-yq6rupNK&e|3=ty%KU!Fu@@Na>Rm^`w(n#TnF<6FX-c7+PQDqe3=VmEQ=#}rRdJDcp@=R#hxpwZ!#dY^RolZ$CZ2Cc%Q_|15n{w z^VkZpZ}&h#)J>A)kD#czmn50@L0tTEDYO0#27hJL+e-!aIU_X=vG{@>9Rf=9w0e*i_H$T`5Eep05pLG7FHpj)Kp>lQ`_~a&%@1+k zf?tN(&MtJMF;s&d{MI@Y}C}v&iCWT>r*Stq-hAE)K^; zbv*HzT4v)R)UN*OES|6tu-_2@MvB0peG30p51ZHF1uFSP>-fhqznV^4rv1~UtSdbe z{6O)%#0?;i;n4)bgmb`5BrkEDzQ2NMA&BAFX;xvrIM&lKQ&OTWIb>dfIoL_t(H z;|P4H0F=G3m1Xaa1c~2-gaTq!Q|a_xTZfpc3K^S6J#5K&{+o#4bqNHo4(#^8%7QF7 zG`&av8JW(~)3+lcvYy;}L|D@3FmL=aZS>uk-f{Z+`ugqOqs^j3dfenQr9kztbv+=>Xht@O*l<^0R;eQ`sTZgka*~%dOhD@^wA0#e&7;2|uFsgBB$0 zE77L9*N2~c`=*zPMQj(u4;O*FLPak~H2(t)g~s`X4lrTcC>Og^PRu4T`Bhz=8zVv# zO(LJQ{}MXBu$B!g^Jur)f~raA-OY_NxEVKK#^XK=FZDbZ!ZCyi&NEU+X{V$s?e8yn zI`;d>vKQ5^WZq2|zF3QT%>`#MPknX*&Tocwpf~K}2@=init6<)97Z;{vHayEPY_N) z9mwfnRH=zb9~?j96)+M+1b@QU-a9iV%~MsDv#m8? zwr)SO;Qbv$Jp8xVmsndI12goY|M{qI+{mMvBZVzru(Y4c*}UUM>DHg-Q%$6g;VZxtwg zYNdK4$J+25S*!ngtiS#%8raQ0yG;#s*d*GD{uT_jWUxMad|MC-*M1Ucp`qSG5AC4t98Y@wz(k z{TtmPjH<%xNy0rRWJK|q!!C40NZRcI9Ghlqkl*+Eq`N48Y-GN~S=5Wlf2fuJ_Y2`u zK^@$m_{ADrKCNzjz&ThJ6O;b}i>;x)ap3*j40uMzOQDE|m^R4Y|2<0iLvCJd)xp;{uA*b4s6LcapRU1p@qk>lKe4fHK2fsvs*_LU@WAMUi;X$)}LVk_()uu%x_#=8Eg<@%Pe$$p;$ zTjTQ#WG@h@DMfW`vyywcy1MS(6ue&8Q#c#%UNO zdC_|)BH)~zx0LmJkE#RyN*@1v=^s1!T9GUFIHs;ulhiw?R}KUsO$ z%IkiSS5$<hr0$hH#cNO%{z{r@u-8kQWMyJ}m5a z0ErVovAzT*B41cb`rG`SRlHwrn0f$M0xyUtxM@$Ein8~cIgI=`rYe$>Cr#`Ch^S^J zn}@SHwCySs{oCT92QW1wx>>dgw|;_a&c5Kq z|EF{a%g3k!*y}+(S6AN;hvsd>g*)W;07wan8c?{e*>ZOx@DZV_aO=xg%`_(APvNsot6NqTk)`v{Xz zc~oNN4R#&S)C#jyd-p`z373)@6bNjU{?W1a(a}n~$zn81m+Oi5GEG|VRVeS4hxs%B zFo(54VsHj=DFEQOm%tzlRCO^Vdzx4->micaZ>)>lq^@7v%Qwzk!- zaP0;83`b-n&H&nqE2^y=AEu|zdXs0yzBo2!y}3i-4yLT|;lY!q3E;H4@v_xFA)}8q z!t@Ezu8!5;TnxsLdATpQg%7*>C)QFZP;o|R>K<#Q2#^!_kbbG%_m9N6o~rbSv&;qe z;jxE@`>c#Lc3`Q3XU4e`GZ3ZD-wf1U)K zc@XCItT-b47?9}vWy!;$LZn z#z5z>_pCiGj>z_5^z_u(j$a}1&*-lANqC)VaOny3v4sdHaIC7NEEHQ6 zR8mtTeEe(u{G|>rO?#=5r8`z<8cg+_`jyPTW-M|!P85r_PNMR7H%u9V7h&Zue$2cJ@J#;c502^+Y0^cYUGHV~3ZjT{ zaymGHiTedm2k7b7t~lak;klw;U5-e0&t1Daw0r3e?TQrg>ZO#vzUrd|+K<^XURh?7%mD-Q1LXav&l+JJ;WUX+5%N-M7Z+a zvuTYfH`{Zmq~F%SZLuZabJ#O5I%ABJOwRg+>_^P^!&K_aEO zav+>rJP<|ZJT7@~8I7e!c@Up5Bx6#+|B z$0KB>z<&(*eGBU2Q1O82 z)RFPd$_oFf%k!Mpd6J793@cErJJ^l?4g`OCmh5htV3tB72*rtKV1QBq*%k^Z?G|U;X^;WMnCzK!rGd8ED7h*pyJvi-EfkX07Kypa{HqvGfn1^0m1H^i>bU z`&gmnH+{&IEABRrGKe6cg{H9s-ByHj4^VT`1(M7;H(xN3E3V6?t4>2!1gc0F8ge!? zvE{PGs;@z5Bv$B|3lUIIN{G3sCk#ULCron1YhC%stDBI-sw4^NN4jG9PtYnI@tKW{ z?d-HS z`YSRS#o6L$xg%lFt*0g^)~K zq+dCTRC{BcI8m!3W5XN~`TXTDvfITTriH=ypqqu!aU-iL)lD_|Sb=}NZ5k~VecD4= z?@)@8P#9$w4Br$^Auj{eQ)#L_Xh9VnZCZ_)m+>4xl;^3`Lgy1co^8yqntC7V!t~4Z zy^2j6r>5wRu--a;4n)hPcsRZHChjfY+r4))H8_+wEI9l)5;#gS@em<)b#K$WcZ94^ zbjy37!u35gwd1y&6#OqL8Q*aOjZ!s>MV8*2OSZKE;VHK;Op0|fq2U>??5t~pv64P& zpkR1J$~RuuRAzb&g?XU59XUF}>%Bg^^%eowd}El(f^?Q?)Z&?=U;5K0EU2M<2)0 zn48>)!Utu_Lc%YpgZQ)d^I}?4GI2Q)baBb(zw06sLA_DsyyolMJeY ztvuh^NzT=DTtD`dgi>dzP!yM78(GEi6>iVhZ3av&LbGV+&VqBd^KV^kk zXYAJb1WxGmOz-6S77+u?H9@Y#8p@r&Qk&1VP#NrY6(pjLB#x1v{9v+pR^`qzgbLs9 zmeXOd$r~aRA*uz+GfK!yt~*%bAt=zmdSI)K?j|7<^4{T5p=X0~;?p>@TT*_QGp2(| z8Y65BDDx!qL!8bOsP@KkeYy<35fE#m28P7@Rz1vk#{;Nl6Y{8r%fkXwE|pw91a3gh%wrMzDp2_PYsU2hCefc~q}V zU$2$zo3QWen>lW6<*GXp^HWXiUg0zcI#EEdJ#8-?lQK6s0uuwg&L=bLwmmk}x<@be zo06}Shlcl`&W&JU%M;TdWJMgu>pDb@rx{0%B?ZNsK{$l~Ts50rNk2p*_+Rmyw ztMk95tjokVlX=$nVDB^Yw*fSE17$A>PH`S_{t)ejwrPZ|xmD(G5P_?Nhl4+ePYbO? zfvTZZR``BU=Xea6ZiDEU;V3<1Y%hQaDOK|-1gQ%}022nyp3pAlowIR~YMb^E>ofE* zY-pEs4aan%Ad7tIT5UQf-Ty?re{O#JmP-MZuSR2!reRkJPIC-4#Sp(uc7MlwDLZz; ziqUy8wcuW*x*_>V>;AsU>Ht9bX~|zaE5~2DOHnEp1zkDp>bR?~YFC1bM)VYsf3`*ONGlJ5Z&Rvt-;(%2T zL9=2)W1V2GenymNjf10@`EBt1toxhkYTh|6A!m>%Bm8J{lY$furvQZw)z;Y!56osv z#k+PRV7JV%jt?l<-%PwQ=Jc-(;lY=5usa>cNb^5hikst`*NjeU{i2d zy^1uNG-gxS`QTDPETGj#e|@}QXxc++BXY|PONO{fM;Qw%XLHi&J=tK#%uId~ELkbk zOXbTrTd+f+`-qylqerSpWYv^s0_1+F`J}g*&mL+4?r$?8scf+5$=Cc=LPA`6L6ZB& zdreFWYjmYvUE4j`wjvrR{Y}|KPDyna`k+s@72zh(S`KF_^YVaa9^&_7pb;NM@M5Ue zc9C@!ANvof%(EZQ1tr?AG@hIk8#(=*LCYd$h}(rim37ZLnZ1h?*w4 zeTItHKW$~Gd$wyvUeSkiYN;?RiVY&60q)}Y8HJ>bDef;Xlq#-5^{x6#a4r+XOw~mM z(<18XGzA-ksav(J?HB2a2{dROEOiH#HS}8!jdk?_s;|%W^~0^9yX7?5tAnq7?gGYI?2EJrdpou06ndTnR)BU;zS3(l$=$<{nmr>|RUWwu z3%^jGRMBZhvGhW}*6gTQ>vCWX&ZNxyaQo}ItO+=;eKTzw^Tf_j_W1?o_$IA2x+7ro zRh4AlUoG`f$wm9jT!L*q<}993V8YO1E)P z22mnV#VFf6(r~Hp7c>9f+X0^0e)mkw=R$TrSLbiVR==JUy`L!LQu+lsMcjMpFK?#G zfQPlhtolTWu`dbbXsFp`sPMvW``~yz*xdIQYW!?8P58zo#M}ICN&j+R`zt)FqGsb* zJ2_Ixnts!#Vg90$WZN7>YznY1am+}~eTA_3?Zyb$RSE1$DWZOIZ;6wwH{p}1p4f1> zyo1d3v&ZcyNgjTv;UF`>)9w64QU**aG8Jd_M|R#V^w(3_Q)*gr>weJxTA7X@sU}JzYlMgmAQcyNr z_iA+;Ddnop>#VJcweEPe>4Qj}D{8Xq+3n8mB1?-Wl&_)=NJ%2NJZsXi!nMjzkxG32 zHg*vU1ywb8=L9-p@WZOTnA(#r*0}SRs2@kb{OdpK_URu+TW-9S(KJ~7&_BR`&0ks? z_EzrAT_ww=d-N@>xiJP9)tEHZYdJ(^;m>%8CGKOt?Bor4#@pGcUSc-=Y~G9u2dh1V zf`Mipm^!81+szQ`2VWL;yVV8CqDjzl?q|%ZQ?;=@*q4$-uWbd>-Hg>AkuG_=`2LTt z0on%&G({^y4M!C&Wgk!3xC~kK8#p$iooT7Dc7A+xGBdgu{{U|gZV-^GO`u_GEWf%= zK6B|L0^0jtR-R7&XZ!k1uF&UfwH|4nPs}dt$XJW6PSd=`JOAxan_jz<->RmlYoAvm z5Lchyy$o&!8&2Qd!a-s|>mn)_eScSv(i=zhjD#2dcAvL79+Q&8FELwzazzb^P=vY} zM(~XeS|U!2W+jML3CcjkK-;^^G1L^5c#@OYDQVfvoo%RS1BoQ)jXfoTrKn1zX~=mZ z@Aw%qzI!%I5wiACe`lDt-aTXys!x>>p7tGW;yIt1c?jv&g1zvip_Hq?+Zow{J(8@K z#1273E{(Hou*Ne|E3XEQl|6G3a@!Ll?L+Lkszxsr(+D>sn9ylng_r#X5u;CYSk>%A zj@~t#pHRg~i+(@L`YYwD3%gKa4*S8#cQ}Oq#p0$4V>Z}!vd8FfK ze0FvkjB`6XGxUXytB) zU*xwkOY4-dF$%r!^?PTTKm~|M;M%4wZX{UovWd-ow|iAx+G*$O^P;JsKzEX8uy6Ks zC0MjLxOn>hZSCj;T|Q^)Gv(6H|L{Z9FlLe;O}vLZ;|&$`+3@QIh(nz=pME$&cv~bp z=iaw!YLN)pr4$TPmFA4^nt8WO%gQ{EwDaDrTB0k-c)z*_Y9NC!vqty@SzL>G+kJAo zP*mMT$}GV(o7<#?b00Y$ZTtui;^(iYHcXCSFOr@g$bQu+iN9Vw(S{(?dsqyN=y#Od z$_hGd7@go<1w*RoUQ#{1EaS&Q_ ziN!9Y)X=(IGn=2n8>}yTxQp`bFsPjkO{UF*vWl06hk44<)U-+A5vlI?gCoqVS>@{z zzc+^mEQhrPA2Eo8$!kfPbo3v5Az&f0cloa|g}$UYc~FZiO=7s3HfNhQ$VhLk9_+2J zc}Ogm-LfDfqjPCqZLM{nE}Z`$zAxY^lfH-kz7YrRME=A4`!=>>0WKg8rGipCfHFPv z_DHQ}i|(Mme|#Gk_H3FY%uS4)8k)^}e;+w5(zc0anw()I53YE8k%71 zFDVg03)CRGO;zYu&7;u|yA)T9!<9^tw3LS)3#J4Kfq zL@O)@8U@>3adSjNTxY9Y&^?9XWrMEhLO-6FfAPM>R!$56r=GQ=t`BojTz9N+(ZX7k zBb>G9N#%fC#4~36psa6_$EGri{()wo1`aay?&n==s(WGQV(g10oi9q30s`!yk<^Qg z#X&l$IxuhMvu_GRANL`zu5_$ICt`wJ=>&-|w;A;Zd~Hs_9jEGu^HqF9B-?@rVC z2P_&zFOF84g8L_D8`-TlNfrXh%xbcsyS%LaMy$yT_iOeV>IjAII=$1(%7aIky0fS^h5fbZ%~4 zajruLI-7MOuY=BXy%PS#q0IRBdYdP&7wd%xQu|ufmY485whBF+o)F$upvum?O_gGwRPj`HXp06_r8O1Vb zdE?Mf6tMGNqljp5_Nn9d;aTrnidvX_vv);hez>E6@B@?^%6yM(_?1b;o4!TEmz1N5Z}>v`8x7)eecp zuUwMg&t2e!`(_xT&$LpubxUr_D_cPj^ z-P?AF${sBbX2=UaWzFhdFq)6BlVs-4rl*JZlEcp0j8z9F~m{*Zy0Oz`+#T)S;%FrOiRhcDC+~|B+pY zatFgioTgl5>CnjzI73ltNU`JKPN2B=ZE)VZ0tl%p1gJ>GAQK8X7b3?U%@LW$M|~t0 z$`Kw{nRgE*s!hbKHW=4 zq~~!ToBp8bDeMb%!~tI8V)!PUcu=#}Lxpvb{CYzFa&*@H?7)tHb+&P97lpX#Wj8OY z;u8R2NgAS6m<93z5T47*7mF=MpAPtLw3&%Fd`iK(xg=l=DIgXn|= z^era5I46LCg%+b)!#fyL1J5x65;DlDjCOT>%c8qtvRVz(2SDC`$Ve!N7m6Bq{~u7x BcmV(a literal 34750 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෬s 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

>(FUAPZMDb=XhQAv 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 X+4mMVLtyk_00000NkvXXu0mjfG1b{t diff --git a/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_7_1.png b/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_7_1.png deleted file mode 100644 index e63f7e77f1e9f62d0593b4b9cda12ab6f984dd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16263 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 diff --git a/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_dashboard.png b/docs/user/dashboard/lens-end-to-end/images/lens_end_to_end_dashboard.png index 9bce65401f4c96603528d44362d037d18ab3982b..9e9a5ed3d758eb90bbdefc70a2a6c7d7060632f9 100644 GIT binary patch literal 263408 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 G! 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

X|` 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

A6(;`kHM$?^ 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�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

  • SPoBN9A1_aGKM={wxNtm0X)|*3lTNzBXq@*H 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 diff --git a/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc b/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc index 22483b2801848..1375aa8d5934e 100644 --- a/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc +++ b/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc @@ -1,10 +1,10 @@ [[create-a-dashboard-of-panels-with-web-server-data]] -== Tutorial: Create a dashboard of panels with web server data +== Build your first dashboard -You collected data from your web server, and you want to visualize and analyze the data on a dashboard. To create dashboard panels of the data, open the *Lens* visualization builder, then -create the visualization panels that best display the data. - -When you've completed the tutorial, you'll have a dashboard that provides you with a complete overview of your web server data. +Learn the most common ways to build a dashboard from your own data. +The tutorial will use sample data from the perspective of an analyst looking +at website logs, but this type of dashboard works on any type of data. +Before using this tutorial, you should be familiar with the <>. [role="screenshot"] image::images/lens_end_to_end_dashboard.png[Final dashboard vis] @@ -13,46 +13,78 @@ image::images/lens_end_to_end_dashboard.png[Final dashboard vis] [[add-the-data-and-create-the-dashboard]] === Add the data and create the dashboard -To create visualizations of the data from the web server, add the data set, then create the dashboard. +Install the sample web logs data that you'll use to create your dashboard. -. From the {kib} *Home* page, click *Try our sample data*. +. On the {kib} *Home* page, click *Try our sample data*. . From *Sample web logs*, click *Add data*. -. Open the main menu, click *Dashboard*. +Then create a new dashboard: + +. Open the main menu, then click *Dashboard*. . Click *Create dashboard*. +. Set the <> to *Last 90 days*. + [float] [[open-and-set-up-lens]] -=== Open and set up Lens +=== Open Lens and get familiar with the data -With *Lens*, you identify the data fields you want to visualize, drag and drop the fields, then watch as -*Lens* uses heuristics to apply the fields and create a visualization for you. +. On the dashboard, click *Create visualization*. -. From the dashboard, click *Create panel*. - -. On the *New visualization* window, click *Lens*. +. Make sure the *kibana_sample_data_logs* index appears. You might need to select +a different index pattern from the dropdown: + [role="screenshot"] -image::images/lens_end_to_end_1_1.png[New visualization popover] +image::images/lens_end_to_end_1_2.png[Lens index pattern selector, width=50%] + +This tutorial uses `Records`, timestamp`, `bytes`, `clientip`, and `referer.keyword`. +To see the most frequent values of a field, click the field name to view a summary. + +The main elements of *Lens* are named: -. Make sure the *kibana_sample_data_logs* index appears. +Workspace panel:: Displays your visualization. You can drag and drop onto this area. +Dimensions:: Each dimension is a function with extra options. Dimensions are grouped +for each visualization type, for example the *Vertical axis* is a group that allows +multiple dimensions. Each dimension starts empty with the label *Drop a field or click to add*. +Functions:: There are two main types of functions: *buckets* and *metrics*, which are +equivalent to what {es} provides. [discrete] [[view-the-number-of-website-visitors]] -=== View the number of website visitors +=== Create your first visualization -To determine how many users have visited your website within the last 90 days, create a metric visualization, then add it to the dashboard. +Every time you build a visualization in *Lens*, you need to: -. Set the <> to *Last 90 days*. +* *Choose your visualization.* Do you know the type of visualization you'd like to use? +If you do, select the type before dragging any fields. If you don't, you can change the +visualization type after configuring your functions. + +* *Choose your field.* Do you know the dimension group you want to use the field in? If you do, +drag and drop the field from the field list to your chosen dimension and Lens will pick a function for you. +If you don't, drag and drop the field onto the workspace panel. Skip this step if you are +using the *Filters* function. + +* *Edit and delete.* To change the function or styling options, click the dimension to open +the configuration panel. To delete a specific dimension, close the configuration panel and click +the delete button. To reset the entire visualization, click *Reset layer*. + +To put this into practice, pick a field you want to analyze, such as `clientip`. If you want +to analyze only this field, you can use *Metric* to show a big number. +The only number function that you can use with `clientip` is *Unique count*. +*Unique count*, also known as cardinality, approximates the number of unique values +of the `clientip` field. -. From the *Chart Type* dropdown, select *Metric*. +. To select the visualization type, click *Bar vertical stacked* to open the chart type dropdown, then select *Metric*. + [role="screenshot"] -image::images/lens_end_to_end_1_2_1.png[Chart Type dropdown with Metric selected] +image::images/lens_end_to_end_1_2_1.png[Chart Type dropdown with Metric selected, width=50%] -. From the *Available fields* list, drag and drop *clientip* to the visualization builder. +. From the *Available fields* list, drag and drop `clientip` to the workspace panel. +Lens selects *Unique count* because it is the only numeric function +that works for IP addresses. You can also drag and drop `clientip` onto +the empty dimension for the same result. + [role="screenshot"] image::images/lens_end_to_end_1_3.png[Changed type and dropped clientip field] @@ -68,294 +100,220 @@ image::images/lens_end_to_end_1_4.png[Flyout config open] . Click *Save and return*. -[discrete] -[[view-the-distribution-of-visitors-by-operating-system]] -=== View the distribution of visitors by operating system - -To determine the operating systems you should continue to support, and the importance of mobile traffic from iOS devices, -create a donut chart that displays the top operating systems that your visitors used to access your website within the last 90 days. +. Customize the newly added panel: -. Open *Lens*, then set the <> to *Last 90 days*. +.. Drag the bottom corner of the panel until the metric takes up one quarter of the screen +width. The row for the metric will have 4 items on it later. -. From the *Chart Type* dropdown, select *Donut*. +.. The metric visualization has its own label, so you do not need to add a panel title. -. From the *Available fields* list, drag and drop the data fields to the *Drop a field or click to add* fields in the editor. +. Click *Save* on the dashboard menu -.. Drag and drop *clientip* to the *Size by* field. +. In the *Title* field, enter `Logs dashboard`. -.. Drag and drop *machine.os.keyword* to the *Slice by* field. -+ -[role="screenshot"] -image::images/lens_end_to_end_2_1_1.png[Donut chart with clientip and machine.os.keyword fields] - -. Change the color palette. - -.. In the editor, click *Top values of machine.os.keyword*. - -.. From the *Color palette* dropdown, select *Compatibility*. - -.. Click *Close*. -+ -[role="screenshot"] -image::images/lens_end_to_end_2_1.png[Donut chart with open config panel] +. Select *Store time with dashboard* box, then click *Save*. -. Click *Save and return*. +. After the dashboard refreshes, click *Edit* again. [discrete] [[mixed-multiaxis]] -=== View the average of bytes transfer per day +=== View a metric over time -To prevent potential server failures, and optimize the cost of website maintenance, create an area chart that displays the average of bytes transfer. To compare -the data to the number of visitors to your website, add a line chart layer. +*Lens* has two shortcuts that simplify viewing metrics over time. +If you drag and drop a numeric field to the workspace panel, *Lens* adds the default +time field from the index pattern. If the *Date histogram* function is being used, +quickly replace the time field by dragging and dropping on the workspace panel. -. Open *Lens*. +To visualize the `bytes` field over time without choosing a visualization type or function: -. From the *Available fields* list, drag and drop *bytes* to the visualization builder. +. From the *Available fields* list, drag and drop `bytes` onto the workspace panel to have *Lens* automatically +create a chart. *Lens* creates a bar chart with two dimensions, *timestamp* and *Median of bytes*. + +. *Lens* automatically chooses a date interval. To zoom in on the data you want to view, +click and drag your cursor across the bars. -. To zoom in on the data you want to view, click and drag your cursor across the bars. -+ [role="screenshot"] image::images/lens_end_to_end_3_1_1.gif[Zoom in on the data] -. Change the *timestamp* interval. - -.. In the editor, click *timestamp*. +To emphasize the change in *Median of bytes* over time, use a line chart. +To change the visualization type, use one of the following ways: -.. Select *Customize time interval*. +* From the *Suggestions*, click the line chart. +* Click *Bar vertical stacked*, then select *Line*. +* Click the chart type icon above *Horizontal axis*, then click the line icon. -.. Change the *Minimum interval* to `1 days`, then click *Close*. -+ -[role="screenshot"] -image::images/lens_end_to_end_3_1.png[Customize time interval] +Most users use the automatic time interval. You can increase and decrease +the minimum interval that *Lens* uses, but you cannot decrease the interval +below the {kib} advanced settings. To set the minimum time interval: -. From the *Chart Type* dropdown, select *Area*. +. In the editor, click *timestamp*. -[discrete] -[[add-a-data-layer]] -==== Add the line chart layer +. Click *How it works* to learn about the *Lens* minimum interval -To compare the average of bytes transfer to the number of users that visit your website, add a line chart layer. +. Select *Customize time interval*. -. In the editor, click *+*. +. Increase the *Minimum interval* to `1 days`, then click *Close*. + [role="screenshot"] -image::images/lens_end_to_end_3_2.png[Add new layer button] +image::images/lens_end_to_end_3_1.png[Customize time interval] -. From the new layer editor, click the *Chart type* dropdown, then click the line chart. +To save space on the dashboard, so to save space, hide the vertical and horizontal +axis labels. + +. Open the *Left axis* menu, then deselect *Show*. + [role="screenshot"] -image::images/lens_end_to_end_3_3.png[Change layer type] -+ -The chart type for the visualization changes to *Mixed XY*. - -. From the *Available fields* list, drag and drop the data fields to the *Drop a field or click to add* fields in the editor. - -.. Drag and drop *timestamp* to the *Horizontal axis* field. - -.. Drag and drop *clientip* to the *Vertical axis* field. - -. Change the *timestamp* interval. +image::images/lens_end_to_end_4_3.png[Turn off axis name] -.. In the editor, click *timestamp* in the line chart layer. +. Open the *Bottom axis* menu, then deselect *Show*. -.. Select *Customize time interval*. +. Click *Save and return* -.. Change the *Minimum interval* to `1 days`, then click *Close*. +. On the dashboard, move the panel so that it is in the same row as the *Metric* visualization panel. The two should +take up half the screen width. -. Change the *Unique count of clientip* label and color. +. Add a panel title to explain the panel, which is necessary because you removed the axis labels. -.. In the editor, click *Unique count of clientip*. +.. Open the panel menu and choose *Edit panel title*. -.. In the *Display name* field, enter `Unique visitors` in the line chart layer. +.. In the *Title* field, enter `Median of bytes`, then click *Save*. -.. In the *Series color* field, enter *#CA8EAE*, then click *Close*. +. In the toolbar, click *Save*. [discrete] -[[configure-the-multiaxis-chart]] -==== Configure the y-axes - -There is a significant difference between the *timestamp per day* and *Unique visitors* data, which makes the *Unique visitors* data difficult to read. To improve the readability, -display the *Unique visitors* data along a second y-axis, then change the formatting. When functions contain multiple formats, separate axes are created by default. +[[view-the-distribution-of-visitors-by-operating-system]] +=== View the top values of a field -. In the editor, click *Unique visitors* in the line chart layer. +The *Top values* function ranks the unique values of a field by another dimension. +The values are the most frequent when ranked by a *Count* dimension. +The values are the largest when ranked by a *Sum* dimension. -. For *Axis side*, click *Right*, then click *Close*. +When you drag and drop a text or IP address field onto the workspace panel, +*Lens* adds a *Top values* function ranked by *Count of records* to show the most frequent values. -[float] -[[change-the-visualization-type]] -==== Change the visualization type +For this tutorial, you have picked a field and function, but not a visualization type. +You want to see the most frequent values of `request.keyword` on your website, ranked by the unique visitors. +This means that you want to use *Top values of request.keyword* ranked by *Unique count of clientip*, instead of +being ranked by *Count of records*. -. In the editor, click *Average of bytes* in the area chart layer. +. From the *Available fields* list, drag and drop `clientip` onto the *Vertical axis*. +*Lens* chooses the function for you when you drop onto a dimension, which is *Unique count* here. +Do not drop the field into the main workspace because `clientip` will be added to the wrong axis. -. From the *Value format* dropdown, select *Bytes (1024)*, then click *Close*. +. Drag and drop `request.keyword` to the main workspace. *Lens* adds *Top values of request.keyword* +to the *Horizontal axis*. + [role="screenshot"] -image::images/lens_end_to_end_3_4.png[Multiaxis chart] - -[discrete] -[[lens-legend-position]] -==== Change the legend position +image::images/lens_end_to_end_2_1_1.png[Vertical bar chart with top values of request.keyword by most unique visitors] -The visualization is done, but the legend uses a lot of space. Change the legend position to the top of the chart. +This chart is hard to read because the `request.keyword` field contains long text. You could try +using one of the *Suggestions*, but the suggestions also have issues with long text. Instead, switch +to the *Table* visualization. -. From the *Legend* dropdown, select the top position. +Click *Bar vertical stacked*, then select *Table*. + [role="screenshot"] -image::images/lens_end_to_end_3_5.png[legend position] - -. Click *Save and return*. - -[discrete] -[[percentage-stacked-area]] -=== View the health of your website +image::images/lens_end_to_end_2_1_2.png[Table with top values of request.keyword by most unique visitors] -To detect unusual traffic, bad website links, and server errors, create a percentage stacked area chart that displays the associated response codes. +Next, customize the table. -. Open *Lens*. +. Click the *Top values of request.keyword* dimension. -. From the *Available fields* list, drag and drop the data fields to the *Drop a field or click to add* fields in the editor. +.. Increase the *Number of values*. The maximum allowed value is 1000. -.. Drag and drop *Records* to the *Vertical axis* field. +.. In the *Display name* field, enter `Page URL`, then click *Close*. -.. Drag and drop *@timestamp* to the *Horizontal axis* field. +. Click *Save and return*. -. From the *Chart Type* dropdown, select *Percentage bar*. +. Move the table panel so that it has its own row, but do not change the size. -. To remove the vertical axis label, click *Left axis*, then deselect *Show*. -+ -[role="screenshot"] -image::images/lens_end_to_end_4_3.png[Turn off axis name] +NOTE: You do not need a panel title because the table columns are clearly labeled. [discrete] -[[add-the-response-code-filters]] -==== Add the response code filters - -For each response code that you want to display, create a filter. - -. In the editor, click the *Drop a field or click to add* field for *Break down by*. - -. From *Select a function*, click *Filters*. - -. Add the filter for the successful response codes. +[[custom-ranges]] +=== Compare a subset of documents to all documents -.. Click *All records*. +To compare a field on subset of documents to all documents, you need to select two or more sets of documents that add up to 100%. +For this example, we are comparing documents where the `bytes` field is under 10 Kb to documents where `bytes` is over 10 Kb, +which are two sets that do not overlap. -.. In the *KQL* field, enter `response.keyword>=200 AND response.keyword<300`. +Use *Intervals* to select documents based on the number range of a field. Use *Filters* when your criteria +is not numeric, or when your query needs multiple clauses. -.. In the *Label* field, enter `2XX`, then press Return. -+ -[role="screenshot"] -image::images/lens_end_to_end_4_1.png[First filter in filters aggregation] +Use a proportion chart to display the values as a percentage of the sum of all values. Lens has 5 types of proportion charts: +pie, donut, treemap, percentage bar and percentage area. -. Add the filter for the redirect codes. +To determine if your users transfer more `bytes` from small files versus large files, +configure dimensions with *Intervals* and *Sum*, then switch to a pie chart to display as a percentage: -.. Click *Add a filter*. +. From the *Available fields* list, drag and drop `bytes` to *Vertical axis* in the editor. -.. In the *KQL* field, enter `response.keyword>=300 AND response.keyword<400`. +. Click *Median of bytes*, select *Sum*, then click *Close*. -.. In the *Label* field, enter `3XX`, then press Return. +. From the *Available fields* list, drag and drop `bytes` to *Break down by* in the editor, then specify the file size ranges. -. Add the filter for the client error codes. +.. In the editor, click *bytes*. -.. Click *Add a filter*. +.. Click *Create custom ranges*, enter the following, then press Return: -.. In the *KQL* field, enter `response.keyword>=400 AND response.keyword<500`. +* *Ranges* — `0` -> `10240` -.. In the *Label* field, enter `4XX`, then press Return. +* *Label* — `Below 10KB` -. Add the filter for the server error codes. +.. Click *Add range*, enter the following, then press Return: -.. Click *Add a filter*. +* *Ranges* — `10240` -> `+∞` -.. In the *KQL* field, enter `response.keyword>=500 AND response.keyword<600`. +* *Label* — `Above 10KB` ++ +[role="screenshot"] +image::images/lens_end_to_end_6_1.png[Custom ranges configuration] -.. In the *Label* field, enter `5XX`, then press Return. +.. From the *Value format* dropdown, select *Bytes (1024)*, then click *Close*. -. To change the color palette, select *Status* from the *Color palette* dropdown, then click *Close*. +. From the *Chart Type* dropdown, select *Pie*. . Click *Save and return*. [discrete] [[histogram]] -=== View the traffic for your website by the hour - -To find the best time to shut down your website for maintenance, create a histogram that displays the traffic for your website by the hour. - -. Open *Lens*. - -. From the *Available fields* list, drag and drop *bytes* to *Vertical axis* in the editor, then configure the options. +=== View a the distribution of a number field -.. Click *Average of bytes*. +Knowing the distribution of a number helps to find patterns. For example, you could +look at the website traffic per hour to find the best time to do routine maintenance. +Use *Intervals* to see an evenly spaced distribution of a number field. -.. From *Select a function*, click *Sum*. +. From the *Available fields* list, drag and drop `bytes` to *Vertical axis* in the editor. -.. In the *Display name* field, enter `Transferred bytes`. +. Click *Median of bytes*, then select *Sum*. -.. From the *Value format* dropdown, select `Bytes (1024)`, then click *Close*. +. In the *Display name* field, enter `Transferred bytes`. -. From the *Available fields* list, drag and drop *hour_of_day* to *Horizontal axis* in the editor, then configure the options. +. From the *Value format* dropdown, select `Bytes (1024)`, then click *Close*. -.. Click *hour_of_day*. +. From the *Available fields* list, drag and drop *hour_of_day* to *Horizontal axis* in the editor. -.. Click and slide the *Intervals granularity* slider until the horizontal axis displays hourly intervals. +. Click *hour_of_day*, and then slide the *Intervals granularity* slider until the horizontal axis displays hourly intervals. + [role="screenshot"] image::images/lens_end_to_end_5_2.png[Create custom ranges] . Click *Save and return*. -[discrete] -[[custom-ranges]] -=== View the percent of small versus large transferred files - -To determine if your users transfer more small files versus large files, create a pie chart that displays the percentage of each size. - -. Open *Lens*. - -. From the *Available fields* list, drag and drop *bytes* to *Vertical axis* in the editor, then configure the options. - -.. Click *Average of bytes*. - -.. From *Select a function*, click *Sum*, then click *Close*. - -. From the *Available fields* list, drag and drop *bytes* to *Break down by* in the editor, then specify the file size ranges. - -.. Click *bytes*. - -.. Click *Create custom ranges*, enter the following, then press Return: - -* *Ranges* — `0` -> `10240` - -* *Label* — `Below 10KB` - -.. Click *Add range*, enter the following, then press Return: - -* *Ranges* — `10240` -> `+∞` - -* *Label* — `Above 10KB` -+ -[role="screenshot"] -image::images/lens_end_to_end_6_1.png[Custom ranges configuration] - -.. From the *Value format* dropdown, select *Bytes (1024)*, then click *Close*. +. Decrease the panel size, then drag and drop it to the first row next to the `Median of bytes` panel. There +should be four panels in a row. -. From the *Chart Type* dropdown, select *Pie*. -+ -[role="screenshot"] -image::images/lens_end_to_end_6_2.png[Files size distribution] - -. Click *Save and return*. +. You do not need a panel title because the axis labels are self-explanatory. [discrete] [[treemap]] -=== View the top sources of website traffic - -To determine how users find out about your website and where your users are located, create a treemap that displays the percentage of users that -enter your website from specific social media websites, and the top countries where users are located. +=== Create a multi-level chart -. Open *Lens*. +*Lens* lets you use multiple functions in the data table and proportion charts. For example, +to create a chart that breaks down the traffic sources and user geography, use *Filters* and +*Top values*. -. From the *Chart Type* dropdown, select *Treemap*. +. Click *Bar vertical stacked*, then select *Treemap*. . From the *Available fields* list, drag and drop *Records* to the *Size by* field in the editor. @@ -377,21 +335,15 @@ enter your website from specific social media websites, and the top countries wh .. Click *Add a filter*, enter the following, then press Return: -* *KQL* — `NOT referer : *twitter* OR NOT referer: *facebook.com*` +* *KQL* — `NOT referer : *twitter.com* OR NOT referer: *facebook.com*` * *Label* — `Other` .. Click *Close*. -[discrete] -[[add-the-countries]] -==== Add the geographic data - -To determine the top countries where users are located, add the geographic data. +Add the next break down by geography: -Compare the top sources of website traffic data to the top three countries. - -. From the *Available fields* list, drag and drop *geo.src* to the visualization builder. +. From the *Available fields* list, drag and drop *geo.src* to the main workspace. . To change the *Group by* order, click and drag *Top values of geo.src* so that it appears first in the editor. + @@ -409,6 +361,12 @@ image::images/lens_end_to_end_7_3.png[Group other values as Other] . Click *Save and return*. +. Arrange the panel so that it is in the same row as the table. + +.. Click the gear icon and choose *Edit panel title*. + +.. Enter "Page views by location and referer" as the panel title, then click *Save*. + [discrete] === Save the dashboard @@ -417,3 +375,5 @@ Now that you have a complete overview of your web server data, save the dashboar . In the toolbar, click *Save*. . On the *Save dashboard* window, enter `Web server data`, then click *Save*. + +. If this was not the first time you saved the dashboard, click *Switch to view mode* From 6d263162f0f3fe2a38ba64f5245e406ffe7df612 Mon Sep 17 00:00:00 2001 From: igoristic Date: Wed, 12 May 2021 11:24:05 -0400 Subject: [PATCH 040/144] [Monitoring] Added missing cgroup memory (#99602) * Added missing cgroup memory * Fixed tests Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/monitoring/common/types/es.ts | 13 +++++ .../components/apm/instances/instances.js | 27 +++++++---- .../components/cluster/overview/apm_panel.js | 2 +- .../monitoring/server/lib/apm/_apm_stats.js | 47 ++++++++----------- .../monitoring/server/lib/apm/get_apms.ts | 2 + .../server/lib/apm/get_apms_for_clusters.js | 6 +-- .../monitoring/server/lib/apm/get_stats.js | 3 +- .../server/routes/api/v1/apm/instances.js | 1 + .../apis/monitoring/apm/fixtures/cluster.json | 1 - .../apis/monitoring/apm/instances.js | 1 + .../apis/monitoring/apm/instances_mb.js | 1 + .../cluster/fixtures/multicluster.json | 3 -- .../monitoring/cluster/fixtures/overview.json | 1 - .../standalone_cluster/fixtures/cluster.json | 1 - .../standalone_cluster/fixtures/clusters.json | 2 - 15 files changed, 61 insertions(+), 50 deletions(-) diff --git a/x-pack/plugins/monitoring/common/types/es.ts b/x-pack/plugins/monitoring/common/types/es.ts index 81a45695002e2..f324164b09302 100644 --- a/x-pack/plugins/monitoring/common/types/es.ts +++ b/x-pack/plugins/monitoring/common/types/es.ts @@ -266,6 +266,19 @@ export interface ElasticsearchLegacySource { }; metrics?: { beat?: { + cgroup?: { + memory: { + id: string; + mem: { + limit: { + bytes: number; + }; + usage: { + bytes: number; + }; + }; + }; + }; memstats?: { memory_alloc?: number; }; diff --git a/x-pack/plugins/monitoring/public/components/apm/instances/instances.js b/x-pack/plugins/monitoring/public/components/apm/instances/instances.js index 37731f4994d2b..f58047ad6e253 100644 --- a/x-pack/plugins/monitoring/public/components/apm/instances/instances.js +++ b/x-pack/plugins/monitoring/public/components/apm/instances/instances.js @@ -30,7 +30,22 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { isSetupModeFeatureEnabled } from '../../../lib/setup_mode'; import { SetupModeFeature } from '../../../../common/enums'; -function getColumns(alerts, setupMode) { +function getColumns(alerts, setupMode, cgroup) { + const memoryField = cgroup + ? { + name: i18n.translate('xpack.monitoring.apm.instances.cgroupMemoryUsageTitle', { + defaultMessage: 'Memory Usage (cgroup)', + }), + field: 'cgroup_memory', + render: (value) => formatMetric(value, 'byte'), + } + : { + name: i18n.translate('xpack.monitoring.apm.instances.allocatedMemoryTitle', { + defaultMessage: 'Allocated Memory', + }), + field: 'memory', + render: (value) => formatMetric(value, 'byte'), + }; return [ { name: i18n.translate('xpack.monitoring.apm.instances.nameTitle', { @@ -112,13 +127,7 @@ function getColumns(alerts, setupMode) { }, }), }, - { - name: i18n.translate('xpack.monitoring.apm.instances.allocatedMemoryTitle', { - defaultMessage: 'Allocated Memory', - }), - field: 'memory', - render: (value) => formatMetric(value, 'byte'), - }, + memoryField, { name: i18n.translate('xpack.monitoring.apm.instances.versionTitle', { defaultMessage: 'Version', @@ -166,7 +175,7 @@ export function ApmServerInstances({ apms, alerts, setupMode }) { diff --git a/x-pack/plugins/monitoring/server/lib/apm/_apm_stats.js b/x-pack/plugins/monitoring/server/lib/apm/_apm_stats.js index 0dfcbfff834d8..64450405b3268 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/_apm_stats.js +++ b/x-pack/plugins/monitoring/server/lib/apm/_apm_stats.js @@ -7,6 +7,11 @@ import { get } from 'lodash'; +const getMemPath = (cgroup) => + cgroup + ? 'beats_stats.metrics.beat.cgroup.memory.mem.usage.bytes' + : 'beats_stats.metrics.beat.memstats.rss'; + export const getDiffCalculation = (max, min) => { // no need to test max >= 0, but min <= 0 which is normal for a derivative after restart // because we are aggregating/collapsing on ephemeral_ids @@ -21,13 +26,11 @@ export const apmAggFilterPath = [ 'aggregations.total', 'aggregations.min_events_total.value', 'aggregations.max_events_total.value', - 'aggregations.min_mem_rss_total.value', - 'aggregations.max_mem_rss_total.value', - 'aggregations.max_mem_total_total.value', + 'aggregations.min_mem_total.value', + 'aggregations.max_mem_total.value', 'aggregations.versions.buckets', ]; - -export const apmUuidsAgg = (maxBucketSize) => ({ +export const apmUuidsAgg = (maxBucketSize, cgroup) => ({ total: { cardinality: { field: 'beats_stats.beat.uuid', @@ -55,19 +58,14 @@ export const apmUuidsAgg = (maxBucketSize) => ({ field: 'beats_stats.metrics.libbeat.pipeline.events.total', }, }, - min_mem_rss: { + min_mem: { min: { - field: 'beats_stats.metrics.beat.memstats.rss', - }, - }, - max_mem_rss: { - max: { - field: 'beats_stats.metrics.beat.memstats.rss', + field: getMemPath(cgroup), }, }, - max_mem_total: { + max_mem: { max: { - field: 'beats_stats.metrics.beat.memstats.memory_total', + field: getMemPath(cgroup), }, }, }, @@ -82,19 +80,14 @@ export const apmUuidsAgg = (maxBucketSize) => ({ buckets_path: 'ephemeral_ids>max_events', }, }, - min_mem_rss_total: { - sum_bucket: { - buckets_path: 'ephemeral_ids>min_mem_rss', - }, - }, - max_mem_rss_total: { + min_mem_total: { sum_bucket: { - buckets_path: 'ephemeral_ids>max_mem_rss', + buckets_path: 'ephemeral_ids>min_mem', }, }, - max_mem_total_total: { + max_mem_total: { sum_bucket: { - buckets_path: 'ephemeral_ids>max_mem_total', + buckets_path: 'ephemeral_ids>max_mem', }, }, }); @@ -104,16 +97,14 @@ export const apmAggResponseHandler = (response) => { const eventsTotalMax = get(response, 'aggregations.max_events_total.value', 0); const eventsTotalMin = get(response, 'aggregations.min_events_total.value', 0); - const memRssMax = get(response, 'aggregations.max_mem_rss_total.value', 0); - const memRssMin = get(response, 'aggregations.min_mem_rss_total.value', 0); - const memTotal = get(response, 'aggregations.max_mem_total_total.value', 0); + const memMax = get(response, 'aggregations.max_mem_total.value', 0); + const memMin = get(response, 'aggregations.min_mem_total.value', 0); const versions = get(response, 'aggregations.versions.buckets', []).map(({ key }) => key); return { apmTotal, totalEvents: getDiffCalculation(eventsTotalMax, eventsTotalMin), - memRss: getDiffCalculation(memRssMax, memRssMin), - memTotal, + memRss: getDiffCalculation(memMax, memMin), versions, }; }; diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_apms.ts b/x-pack/plugins/monitoring/server/lib/apm/get_apms.ts index 05c52a56da930..b606eaf5fe793 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_apms.ts +++ b/x-pack/plugins/monitoring/server/lib/apm/get_apms.ts @@ -88,6 +88,7 @@ export function handleResponse(response: ElasticsearchResponse, start: number, e memory: hit._source.beats_stats?.metrics?.beat?.memstats?.memory_alloc ?? hit._source.beat?.stats?.memstats?.memory?.alloc, + cgroup_memory: hit._source.beats_stats?.metrics?.beat?.cgroup?.memory.mem.usage.bytes, version: stats?.beat?.version, time_of_last_event: hit._source.beats_stats?.timestamp ?? hit._source['@timestamp'], }); @@ -122,6 +123,7 @@ export async function getApms(req: LegacyRequest, apmIndexPattern: string, clust 'hits.hits._source.beats_stats.metrics.libbeat.output.read.errors', 'hits.hits._source.beats_stats.metrics.libbeat.output.write.errors', 'hits.hits._source.beats_stats.metrics.beat.memstats.memory_alloc', + 'hits.hits._source.beats_stats.metrics.beat.cgroup.memory.mem.usage.bytes', 'hits.hits._source.beat.stats.beat.uuid', 'hits.hits._source.beat.stats.beat.name', 'hits.hits._source.beat.stats.beat.host', diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js b/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js index 3ece0af0369fd..45bbe35ebd59d 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js +++ b/x-pack/plugins/monitoring/server/lib/apm/get_apms_for_clusters.js @@ -13,13 +13,12 @@ import { apmAggResponseHandler, apmUuidsAgg, apmAggFilterPath } from './_apm_sta import { getTimeOfLastEvent } from './_get_time_of_last_event'; export function handleResponse(clusterUuid, response) { - const { apmTotal, totalEvents, memRss, memTotal, versions } = apmAggResponseHandler(response); + const { apmTotal, totalEvents, memRss, versions } = apmAggResponseHandler(response); // combine stats const stats = { totalEvents, memRss, - memTotal, apms: { total: apmTotal, }, @@ -39,6 +38,7 @@ export function getApmsForClusters(req, apmIndexPattern, clusters) { const end = req.payload.timeRange.max; const config = req.server.config(); const maxBucketSize = config.get('monitoring.ui.max_bucket_size'); + const cgroup = config.get('monitoring.ui.container.apm.enabled'); return Promise.all( clusters.map(async (cluster) => { @@ -55,7 +55,7 @@ export function getApmsForClusters(req, apmIndexPattern, clusters) { clusterUuid, metric: ApmMetric.getMetricFields(), // override default of BeatMetric.getMetricFields }), - aggs: apmUuidsAgg(maxBucketSize), + aggs: apmUuidsAgg(maxBucketSize, cgroup), }, }; diff --git a/x-pack/plugins/monitoring/server/lib/apm/get_stats.js b/x-pack/plugins/monitoring/server/lib/apm/get_stats.js index df199fe3c3685..7dd1b652254cb 100644 --- a/x-pack/plugins/monitoring/server/lib/apm/get_stats.js +++ b/x-pack/plugins/monitoring/server/lib/apm/get_stats.js @@ -30,6 +30,7 @@ export async function getStats(req, apmIndexPattern, clusterUuid) { const start = moment.utc(req.payload.timeRange.min).valueOf(); const end = moment.utc(req.payload.timeRange.max).valueOf(); const maxBucketSize = config.get('monitoring.ui.max_bucket_size'); + const cgroup = config.get('monitoring.ui.container.apm.enabled'); const params = { index: apmIndexPattern, @@ -42,7 +43,7 @@ export async function getStats(req, apmIndexPattern, clusterUuid) { end, clusterUuid, }), - aggs: apmUuidsAgg(maxBucketSize), + aggs: apmUuidsAgg(maxBucketSize, cgroup), }, }; diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/apm/instances.js b/x-pack/plugins/monitoring/server/routes/api/v1/apm/instances.js index bae4edb201428..53afa4c3f01b4 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/apm/instances.js +++ b/x-pack/plugins/monitoring/server/routes/api/v1/apm/instances.js @@ -44,6 +44,7 @@ export function apmInstancesRoute(server) { return { stats, apms, + cgroup: req.server.config().get('monitoring.ui.container.apm.enabled'), }; } catch (err) { return handleError(err, req); diff --git a/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json b/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json index 1b89349785f26..42ad837963ef4 100644 --- a/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json +++ b/x-pack/test/api_integration/apis/monitoring/apm/fixtures/cluster.json @@ -2,7 +2,6 @@ "stats": { "totalEvents": 18, "memRss": 3821568, - "memTotal": 2404475016, "apms": { "total": 2 }, diff --git a/x-pack/test/api_integration/apis/monitoring/apm/instances.js b/x-pack/test/api_integration/apis/monitoring/apm/instances.js index a18569711cd63..9d0be53cff97f 100644 --- a/x-pack/test/api_integration/apis/monitoring/apm/instances.js +++ b/x-pack/test/api_integration/apis/monitoring/apm/instances.js @@ -67,6 +67,7 @@ export default function ({ getService }) { time_of_last_event: '2018-08-31T13:59:21.163Z', }, ], + cgroup: false, }; expect(body).to.eql(expected); diff --git a/x-pack/test/api_integration/apis/monitoring/apm/instances_mb.js b/x-pack/test/api_integration/apis/monitoring/apm/instances_mb.js index 4ebbd50691d12..879549659936b 100644 --- a/x-pack/test/api_integration/apis/monitoring/apm/instances_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/apm/instances_mb.js @@ -67,6 +67,7 @@ export default function ({ getService }) { time_of_last_event: '2018-08-31T13:59:21.163Z', }, ], + cgroup: false, }; expect(body).to.eql(expected); diff --git a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json index 6abd3a8ecff9d..080517f46f9c9 100644 --- a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json +++ b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/multicluster.json @@ -76,7 +76,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, @@ -173,7 +172,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, @@ -270,7 +268,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, diff --git a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json index 4f1024f2c94b0..a779546624ee1 100644 --- a/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json +++ b/x-pack/test/api_integration/apis/monitoring/cluster/fixtures/overview.json @@ -90,7 +90,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, diff --git a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json index 3e590656753f1..13535347f437c 100644 --- a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json +++ b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/cluster.json @@ -49,7 +49,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, diff --git a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json index 8f20dce44ee8a..87c269068ed33 100644 --- a/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json +++ b/x-pack/test/api_integration/apis/monitoring/standalone_cluster/fixtures/clusters.json @@ -76,7 +76,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, @@ -153,7 +152,6 @@ "apm": { "totalEvents": 0, "memRss": 0, - "memTotal": 0, "apms": { "total": 0 }, From e11848f5ea6cf63d80819eabf4d7b796c58c57ed Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Wed, 12 May 2021 11:34:16 -0400 Subject: [PATCH 041/144] [Uptime] use blob mime type for journey screenshot headers (#99832) --- .../lib/requests/get_journey_screenshot.ts | 16 ++++++++++++++-- .../server/rest_api/pings/journey_screenshots.ts | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.ts b/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.ts index 6a533d558c721..b5ff1de44000c 100644 --- a/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.ts +++ b/x-pack/plugins/uptime/server/lib/requests/get_journey_screenshot.ts @@ -14,10 +14,21 @@ export interface GetJourneyScreenshotParams { stepIndex: number; } +export interface GetJourneyScreenshotResults { + blob: string | null; + mimeType: string | null; + stepName: string; + totalSteps: number; +} + export const getJourneyScreenshot: UMElasticsearchQueryFn< GetJourneyScreenshotParams, any -> = async ({ uptimeEsClient, checkGroup, stepIndex }) => { +> = async ({ + uptimeEsClient, + checkGroup, + stepIndex, +}): Promise => { const params = { track_total_hits: true, size: 0, @@ -48,7 +59,7 @@ export const getJourneyScreenshot: UMElasticsearchQueryFn< image: { top_hits: { size: 1, - _source: ['synthetics.blob', 'synthetics.step.name'], + _source: ['synthetics.blob', 'synthetics.blob_mime', 'synthetics.step.name'], }, }, }, @@ -65,6 +76,7 @@ export const getJourneyScreenshot: UMElasticsearchQueryFn< return { blob: stepHit?.synthetics?.blob ?? null, + mimeType: stepHit?.synthetics?.blob_mime ?? null, stepName: stepHit?.synthetics?.step?.name ?? '', totalSteps: result?.hits?.total.value, }; diff --git a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts index ab8a01cfb9c3f..4d8c8f86ddf2d 100644 --- a/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts +++ b/x-pack/plugins/uptime/server/rest_api/pings/journey_screenshots.ts @@ -37,7 +37,7 @@ export const createJourneyScreenshotRoute: UMRestApiRouteFactory = (libs: UMServ return response.ok({ body: Buffer.from(result.blob, 'base64'), headers: { - 'content-type': 'image/png', + 'content-type': result.mimeType || 'image/png', // falls back to 'image/png' for earlier versions of synthetics 'cache-control': 'max-age=600', 'caption-name': result.stepName, 'max-steps': result.totalSteps, From 4b2203754e661ae9510cc7f0e12f6412acf6b120 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Wed, 12 May 2021 11:35:24 -0400 Subject: [PATCH 042/144] [Uptime] remove optional tag from timeout field in synthetics integration (#99410) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../uptime/public/components/fleet_package/custom_fields.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx b/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx index 1dbd37dc00803..0bc2fc8823cec 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/custom_fields.tsx @@ -327,7 +327,6 @@ export const CustomFields = memo( defaultMessage="Timeout must be 0 or greater and less than schedule interval" /> } - labelAppend={} helpText={ Date: Wed, 12 May 2021 09:54:34 -0600 Subject: [PATCH 043/144] [Lens] visualize in maps button (#98677) * [Lens] visualize in maps button * clean up dependency injection as suggested * add custom workspace render for geo fields * tslint and finish drag and drop for geo field * convert react class to function component * prevent page reload when clicking visualize in maps button * filter allFields instead of using condition to populate fieldTypeNames to fix tslint * clean up UI * fix jest test * globe illustration * UI cleanup * functional test * Update x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx Co-authored-by: Michael Marcialis * Update x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss Co-authored-by: Michael Marcialis * Update x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx Co-authored-by: Michael Marcialis * Update x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss Co-authored-by: Michael Marcialis * Update x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss Co-authored-by: Michael Marcialis * Update x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx Co-authored-by: Michael Marcialis * updated globe svg * remove unused * better message for drop zone screen reader * Update x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx Co-authored-by: Michael Marcialis * tslint Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Michael Marcialis --- .../lens/public/assets/globe_illustration.tsx | 26 +++++++ .../editor_frame/data_panel_wrapper.tsx | 3 + .../editor_frame/editor_frame.tsx | 1 + .../geo_field_workspace_panel.scss | 18 +++++ .../geo_field_workspace_panel.tsx | 75 +++++++++++++++++++ .../workspace_panel/workspace_panel.tsx | 42 ++++++++--- .../public/editor_frame_service/service.tsx | 2 +- .../datapanel.test.tsx | 2 + .../indexpattern_datasource/datapanel.tsx | 14 +++- .../field_item.test.tsx | 2 + .../indexpattern_datasource/field_item.tsx | 28 ++++++- .../indexpattern_datasource/field_list.tsx | 5 ++ .../fields_accordion.test.tsx | 2 + .../fields_accordion.tsx | 5 ++ .../public/indexpattern_datasource/index.ts | 33 ++++---- .../indexpattern.test.ts | 2 + .../indexpattern_datasource/indexpattern.tsx | 36 ++++++++- .../visualize_geo_field_button.tsx | 72 ++++++++++++++++++ x-pack/plugins/lens/public/types.ts | 8 +- x-pack/plugins/lens/public/utils.ts | 7 ++ .../public/xy_visualization/xy_suggestions.ts | 2 + x-pack/test/functional/apps/lens/geo_field.ts | 34 +++++++++ x-pack/test/functional/apps/lens/index.ts | 1 + .../test/functional/page_objects/lens_page.ts | 13 ++++ 24 files changed, 403 insertions(+), 30 deletions(-) create mode 100644 x-pack/plugins/lens/public/assets/globe_illustration.tsx create mode 100644 x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss create mode 100644 x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/visualize_geo_field_button.tsx create mode 100644 x-pack/test/functional/apps/lens/geo_field.ts diff --git a/x-pack/plugins/lens/public/assets/globe_illustration.tsx b/x-pack/plugins/lens/public/assets/globe_illustration.tsx new file mode 100644 index 0000000000000..af2f2c7a48e46 --- /dev/null +++ b/x-pack/plugins/lens/public/assets/globe_illustration.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as React from 'react'; +import { EuiIconProps } from '@elastic/eui'; + +export const GlobeIllustration = ({ title, titleId, ...props }: Omit) => ( + + + + + +); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx index 3296ddac7bc29..9bf03025e400f 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx @@ -15,6 +15,7 @@ import { Action } from './state_management'; import { DragContext, DragDropIdentifier } from '../../drag_drop'; import { StateSetter, FramePublicAPI, DatasourceDataPanelProps, Datasource } from '../../types'; import { Query, Filter } from '../../../../../../src/plugins/data/public'; +import { UiActionsStart } from '../../../../../../src/plugins/ui_actions/public'; interface DataPanelWrapperProps { datasourceState: unknown; @@ -29,6 +30,7 @@ interface DataPanelWrapperProps { filters: Filter[]; dropOntoWorkspace: (field: DragDropIdentifier) => void; hasSuggestionForField: (field: DragDropIdentifier) => boolean; + plugins: { uiActions: UiActionsStart }; } export const DataPanelWrapper = memo((props: DataPanelWrapperProps) => { @@ -56,6 +58,7 @@ export const DataPanelWrapper = memo((props: DataPanelWrapperProps) => { showNoDataPopover: props.showNoDataPopover, dropOntoWorkspace: props.dropOntoWorkspace, hasSuggestionForField: props.hasSuggestionForField, + uiActions: props.plugins.uiActions, }; const [showDatasourceSwitcher, setDatasourceSwitcher] = useState(false); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx index 362787ea91c4f..91b59664ada83 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx @@ -332,6 +332,7 @@ export function EditorFrame(props: EditorFrameProps) { showNoDataPopover={props.showNoDataPopover} dropOntoWorkspace={dropOntoWorkspace} hasSuggestionForField={hasSuggestionForField} + plugins={props.plugins} /> } configPanel={ diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss new file mode 100644 index 0000000000000..ca1a62cae64d6 --- /dev/null +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.scss @@ -0,0 +1,18 @@ +@import '../../../mixins'; + +.lnsVisualizeGeoFieldWorkspacePanel__dragDrop { + padding: $euiSizeXXL ($euiSizeXL * 2); + border: $euiBorderThin; + border-radius: $euiBorderRadius; + + &.lnsDragDrop-isDropTarget { + @include lnsDroppable; + @include lnsDroppableActive; + + } + + &.lnsDragDrop-isActiveDropTarget { + @include lnsDroppableActiveHover; + + } +} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx new file mode 100644 index 0000000000000..b50b6463c5a25 --- /dev/null +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiPageContentBody, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { + UiActionsStart, + VISUALIZE_GEO_FIELD_TRIGGER, +} from '../../../../../../../src/plugins/ui_actions/public'; +import { getVisualizeGeoFieldMessage } from '../../../utils'; +import { DragDrop } from '../../../drag_drop'; +import { GlobeIllustration } from '../../../assets/globe_illustration'; +import './geo_field_workspace_panel.scss'; + +interface Props { + fieldType: string; + fieldName: string; + indexPatternId: string; + uiActions: UiActionsStart; +} + +const dragDropIdentifier = { + id: 'lnsGeoFieldWorkspace', + humanData: { + label: i18n.translate('xpack.lens.geoFieldWorkspace.dropZoneLabel', { + defaultMessage: 'drop zone to open in maps', + }), + }, +}; + +const dragDropOrder = [1, 0, 0, 0]; + +export function GeoFieldWorkspacePanel(props: Props) { + function onDrop() { + props.uiActions.getTrigger(VISUALIZE_GEO_FIELD_TRIGGER).exec({ + indexPatternId: props.indexPatternId, + fieldName: props.fieldName, + }); + } + + return ( + + +

    + {getVisualizeGeoFieldMessage(props.fieldType)} +

    + + +

    + + + +

    +
    +
    +
    + ); +} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx index a31146e500434..3d5d9a6d84d81 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx @@ -338,17 +338,22 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ ); }; - return ( - + const dragDropContext = useContext(DragContext); + + const renderDragDrop = () => { + const customWorkspaceRenderer = + activeDatasourceId && + datasourceMap[activeDatasourceId]?.getCustomWorkspaceRenderer && + dragDropContext.dragging + ? datasourceMap[activeDatasourceId].getCustomWorkspaceRenderer!( + datasourceStates[activeDatasourceId].state, + dragDropContext.dragging + ) + : undefined; + + return customWorkspaceRenderer ? ( + customWorkspaceRenderer() + ) : ( + ); + }; + + return ( + + {renderDragDrop()} ); }); diff --git a/x-pack/plugins/lens/public/editor_frame_service/service.tsx b/x-pack/plugins/lens/public/editor_frame_service/service.tsx index 849baa93652cc..46dc326a015a8 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/service.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/service.tsx @@ -44,7 +44,7 @@ export interface EditorFrameStartPlugins { embeddable?: EmbeddableStart; dashboard?: DashboardStart; expressions: ExpressionsStart; - uiActions?: UiActionsStart; + uiActions: UiActionsStart; charts: ChartsPluginSetup; } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx index 6c5116436dddb..eeec7871a262c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx @@ -22,6 +22,7 @@ import { documentField } from './document_field'; import { chartPluginMock } from '../../../../../src/plugins/charts/public/mocks'; import { indexPatternFieldEditorPluginMock } from '../../../../../src/plugins/index_pattern_field_editor/public/mocks'; import { getFieldByNameFactory } from './pure_helpers'; +import { uiActionsPluginMock } from '../../../../../src/plugins/ui_actions/public/mocks'; const fieldsOne = [ { @@ -267,6 +268,7 @@ describe('IndexPattern Data Panel', () => { showNoDataPopover: jest.fn(), dropOntoWorkspace: jest.fn(), hasSuggestionForField: jest.fn(() => false), + uiActions: uiActionsPluginMock.createStartContract(), }; }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx index 4839d9388253b..a0a6b30e541a7 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx @@ -41,6 +41,7 @@ import { fieldExists } from './pure_helpers'; import { Loader } from '../loader'; import { esQuery, IIndexPattern } from '../../../../../src/plugins/data/public'; import { IndexPatternFieldEditorStart } from '../../../../../src/plugins/index_pattern_field_editor/public'; +import { VISUALIZE_GEO_FIELD_TRIGGER } from '../../../../../src/plugins/ui_actions/public'; export type Props = Omit, 'core'> & { data: DataPublicPluginStart; @@ -73,6 +74,8 @@ const supportedFieldTypes = new Set([ 'ip_range', 'histogram', 'document', + 'geo_point', + 'geo_shape', ]); const fieldTypeNames: Record = { @@ -83,6 +86,8 @@ const fieldTypeNames: Record = { date: i18n.translate('xpack.lens.datatypes.date', { defaultMessage: 'date' }), ip: i18n.translate('xpack.lens.datatypes.ipAddress', { defaultMessage: 'IP' }), histogram: i18n.translate('xpack.lens.datatypes.histogram', { defaultMessage: 'histogram' }), + geo_point: i18n.translate('xpack.lens.datatypes.geoPoint', { defaultMessage: 'geo_point' }), + geo_shape: i18n.translate('xpack.lens.datatypes.geoShape', { defaultMessage: 'geo_shape' }), }; // Wrapper around esQuery.buildEsQuery, handling errors (e.g. because a query can't be parsed) by @@ -121,6 +126,7 @@ export function IndexPatternDataPanel({ showNoDataPopover, dropOntoWorkspace, hasSuggestionForField, + uiActions, }: Props) { const { indexPatternRefs, indexPatterns, currentIndexPatternId } = state; const onChangeIndexPattern = useCallback( @@ -233,6 +239,7 @@ export function IndexPatternDataPanel({ existenceFetchTimeout={state.existenceFetchTimeout} dropOntoWorkspace={dropOntoWorkspace} hasSuggestionForField={hasSuggestionForField} + uiActions={uiActions} /> )} @@ -286,6 +293,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ charts, dropOntoWorkspace, hasSuggestionForField, + uiActions, }: Omit & { data: DataPublicPluginStart; core: CoreStart; @@ -310,7 +318,10 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ isMetaAccordionOpen: false, }); const currentIndexPattern = indexPatterns[currentIndexPatternId]; - const allFields = currentIndexPattern.fields; + const visualizeGeoFieldTrigger = uiActions.getTrigger(VISUALIZE_GEO_FIELD_TRIGGER); + const allFields = visualizeGeoFieldTrigger + ? currentIndexPattern.fields + : currentIndexPattern.fields.filter(({ type }) => type !== 'geo_point' && type !== 'geo_shape'); const clearLocalState = () => setLocalState((s) => ({ ...s, nameFilter: '', typeFilter: [] })); const hasSyncedExistingFields = existingFields[currentIndexPattern.title]; const availableFieldTypes = uniq(allFields.map(({ type }) => type)).filter( @@ -807,6 +818,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ hasSuggestionForField={hasSuggestionForField} editField={editField} removeField={removeField} + uiActions={uiActions} /> diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.test.tsx index dcc11ea426117..cf9f7c0c559e4 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.test.tsx @@ -17,6 +17,7 @@ import { dataPluginMock } from '../../../../../src/plugins/data/public/mocks'; import { IndexPattern } from './types'; import { chartPluginMock } from '../../../../../src/plugins/charts/public/mocks'; import { documentField } from './document_field'; +import { uiActionsPluginMock } from '../../../../../src/plugins/ui_actions/public/mocks'; const chartsThemeService = chartPluginMock.createSetupContract().theme; @@ -109,6 +110,7 @@ describe('IndexPattern Field Item', () => { itemIndex: 0, dropOntoWorkspace: () => {}, hasSuggestionForField: () => false, + uiActions: uiActionsPluginMock.createStartContract(), }; data.fieldFormats = ({ diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx index fce4fcda14cfc..013bb46500d0d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx @@ -54,6 +54,9 @@ import { BucketedAggregation, FieldStatsResponse } from '../../common'; import { IndexPattern, IndexPatternField, DraggedField } from './types'; import { LensFieldIcon } from './lens_field_icon'; import { trackUiEvent } from '../lens_ui_telemetry'; +import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; +import { VisualizeGeoFieldButton } from './visualize_geo_field_button'; +import { getVisualizeGeoFieldMessage } from '../utils'; import { debouncedComponent } from '../debounced_component'; @@ -75,6 +78,7 @@ export interface FieldItemProps { editField?: (name: string) => void; removeField?: (name: string) => void; hasSuggestionForField: DatasourceDataPanelProps['hasSuggestionForField']; + uiActions: UiActionsStart; } interface State { @@ -149,7 +153,13 @@ export const InnerFieldItem = function InnerFieldItem(props: FieldItemProps) { function fetchData() { // Range types don't have any useful stats we can show - if (state.isLoading || field.type === 'document' || field.type.includes('range')) { + if ( + state.isLoading || + field.type === 'document' || + field.type.includes('range') || + field.type === 'geo_point' || + field.type === 'geo_shape' + ) { return; } @@ -392,6 +402,7 @@ function FieldItemPopoverContents(props: State & FieldItemProps) { removeField, hasSuggestionForField, hideDetails, + uiActions, } = props; const chartTheme = chartsThemeService.useChartsTheme(); @@ -467,6 +478,21 @@ function FieldItemPopoverContents(props: State & FieldItemProps) { ); + } else if (field.type === 'geo_point' || field.type === 'geo_shape') { + return ( + <> + {panelHeader} + + {getVisualizeGeoFieldMessage(field.type)} + + + + + ); } else if ( (!props.histogram || props.histogram.buckets.length === 0) && (!props.topValues || props.topValues.buckets.length === 0) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx index ee0011ad0390c..13d5d25bc2ea2 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx @@ -14,6 +14,7 @@ import { NoFieldsCallout } from './no_fields_callout'; import { IndexPatternField } from './types'; import { FieldItemSharedProps, FieldsAccordion } from './fields_accordion'; import { DatasourceDataPanelProps } from '../types'; +import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; const PAGINATION_SIZE = 50; export type FieldGroups = Record< @@ -55,6 +56,7 @@ export const FieldList = React.memo(function FieldList({ hasSuggestionForField, editField, removeField, + uiActions, }: { exists: (field: IndexPatternField) => boolean; fieldGroups: FieldGroups; @@ -72,6 +74,7 @@ export const FieldList = React.memo(function FieldList({ hasSuggestionForField: DatasourceDataPanelProps['hasSuggestionForField']; editField?: (name: string) => void; removeField?: (name: string) => void; + uiActions: UiActionsStart; }) { const [pageSize, setPageSize] = useState(PAGINATION_SIZE); const [scrollContainer, setScrollContainer] = useState(undefined); @@ -155,6 +158,7 @@ export const FieldList = React.memo(function FieldList({ groupIndex={0} dropOntoWorkspace={dropOntoWorkspace} hasSuggestionForField={hasSuggestionForField} + uiActions={uiActions} /> )) )} @@ -206,6 +210,7 @@ export const FieldList = React.memo(function FieldList({ defaultNoFieldsMessage={fieldGroup.defaultNoFieldsMessage} /> } + uiActions={uiActions} /> diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.test.tsx index c8c48e2accf9b..6270b94abf565 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.test.tsx @@ -15,6 +15,7 @@ import { IndexPattern } from './types'; import { FieldItem } from './field_item'; import { FieldsAccordion, FieldsAccordionProps, FieldItemSharedProps } from './fields_accordion'; import { chartPluginMock } from '../../../../../src/plugins/charts/public/mocks'; +import { uiActionsPluginMock } from '../../../../../src/plugins/ui_actions/public/mocks'; describe('Fields Accordion', () => { let defaultProps: FieldsAccordionProps; @@ -76,6 +77,7 @@ describe('Fields Accordion', () => { groupIndex: 0, dropOntoWorkspace: () => {}, hasSuggestionForField: () => false, + uiActions: uiActionsPluginMock.createStartContract(), }; }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx index 42de7cb328b13..9f5409f9837f4 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx @@ -24,6 +24,7 @@ import { Query, Filter } from '../../../../../src/plugins/data/public'; import { DatasourceDataPanelProps } from '../types'; import { IndexPattern } from './types'; import { ChartsPluginSetup } from '../../../../../src/plugins/charts/public'; +import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; export interface FieldItemSharedProps { core: DatasourceDataPanelProps['core']; @@ -57,6 +58,7 @@ export interface FieldsAccordionProps { hasSuggestionForField: DatasourceDataPanelProps['hasSuggestionForField']; editField?: (name: string) => void; removeField?: (name: string) => void; + uiActions: UiActionsStart; } export const FieldsAccordion = memo(function InnerFieldsAccordion({ @@ -80,6 +82,7 @@ export const FieldsAccordion = memo(function InnerFieldsAccordion({ hasSuggestionForField, editField, removeField, + uiActions, }: FieldsAccordionProps) { const renderField = useCallback( (field: IndexPatternField, index) => ( @@ -95,6 +98,7 @@ export const FieldsAccordion = memo(function InnerFieldsAccordion({ hasSuggestionForField={hasSuggestionForField} editField={editField} removeField={removeField} + uiActions={uiActions} /> ), [ @@ -106,6 +110,7 @@ export const FieldsAccordion = memo(function InnerFieldsAccordion({ groupIndex, editField, removeField, + uiActions, ] ); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/index.ts index a556c6ce0c095..f8bc84643bcab 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/index.ts @@ -15,6 +15,7 @@ import { DataPublicPluginStart, } from '../../../../../src/plugins/data/public'; import { Datasource, EditorFrameSetup } from '../types'; +import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; export interface IndexPatternDatasourceSetupPlugins { expressions: ExpressionsSetup; @@ -26,6 +27,7 @@ export interface IndexPatternDatasourceSetupPlugins { export interface IndexPatternDatasourceStartPlugins { data: DataPublicPluginStart; indexPatternFieldEditor: IndexPatternFieldEditorStart; + uiActions: UiActionsStart; } export class IndexPatternDatasource { @@ -44,20 +46,23 @@ export class IndexPatternDatasource { getTimeScaleFunction, getSuffixFormatter, } = await import('../async_services'); - return core.getStartServices().then(([coreStart, { data, indexPatternFieldEditor }]) => { - data.fieldFormats.register([getSuffixFormatter(data.fieldFormats.deserialize)]); - expressions.registerFunction(getTimeScaleFunction(data)); - expressions.registerFunction(counterRate); - expressions.registerFunction(renameColumns); - expressions.registerFunction(formatColumn); - return getIndexPatternDatasource({ - core: coreStart, - storage: new Storage(localStorage), - data, - charts, - indexPatternFieldEditor, - }); - }) as Promise; + return core + .getStartServices() + .then(([coreStart, { data, indexPatternFieldEditor, uiActions }]) => { + data.fieldFormats.register([getSuffixFormatter(data.fieldFormats.deserialize)]); + expressions.registerFunction(getTimeScaleFunction(data)); + expressions.registerFunction(counterRate); + expressions.registerFunction(renameColumns); + expressions.registerFunction(formatColumn); + return getIndexPatternDatasource({ + core: coreStart, + storage: new Storage(localStorage), + data, + charts, + indexPatternFieldEditor, + uiActions, + }); + }) as Promise; }); } } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts index c291c7ab3eac0..b1ff7b36b47a3 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts @@ -17,6 +17,7 @@ import { getFieldByNameFactory } from './pure_helpers'; import { operationDefinitionMap, getErrorMessages } from './operations'; import { createMockedReferenceOperation } from './operations/mocks'; import { indexPatternFieldEditorPluginMock } from 'src/plugins/index_pattern_field_editor/public/mocks'; +import { uiActionsPluginMock } from '../../../../../src/plugins/ui_actions/public/mocks'; jest.mock('./loader'); jest.mock('../id_generator'); @@ -172,6 +173,7 @@ describe('IndexPattern Data Source', () => { data: dataPluginMock.createStartContract(), charts: chartPluginMock.createSetupContract(), indexPatternFieldEditor: indexPatternFieldEditorPluginMock.createStartContract(), + uiActions: uiActionsPluginMock.createStartContract(), }); baseState = { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx index 81eb46e816715..8fb0994c42fb9 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx @@ -45,7 +45,7 @@ import { import { isDraggedField, normalizeOperationDataType } from './utils'; import { LayerPanel } from './layerpanel'; import { IndexPatternColumn, getErrorMessages, IncompleteColumn } from './operations'; -import { IndexPatternPrivateState, IndexPatternPersistedState } from './types'; +import { IndexPatternField, IndexPatternPrivateState, IndexPatternPersistedState } from './types'; import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; import { DataPublicPluginStart } from '../../../../../src/plugins/data/public'; import { VisualizeFieldContext } from '../../../../../src/plugins/ui_actions/public'; @@ -53,6 +53,9 @@ import { mergeLayer } from './state_helpers'; import { Datasource, StateSetter } from '../types'; import { ChartsPluginSetup } from '../../../../../src/plugins/charts/public'; import { deleteColumn, isReferenced } from './operations'; +import { UiActionsStart } from '../../../../../src/plugins/ui_actions/public'; +import { GeoFieldWorkspacePanel } from '../editor_frame_service/editor_frame/workspace_panel/geo_field_workspace_panel'; +import { DraggingIdentifier } from '../drag_drop'; export { OperationType, IndexPatternColumn, deleteColumn } from './operations'; @@ -78,12 +81,14 @@ export function getIndexPatternDatasource({ data, charts, indexPatternFieldEditor, + uiActions, }: { core: CoreStart; storage: IStorageWrapper; data: DataPublicPluginStart; charts: ChartsPluginSetup; indexPatternFieldEditor: IndexPatternFieldEditorStart; + uiActions: UiActionsStart; }) { const uiSettings = core.uiSettings; const onIndexPatternLoadError = (err: Error) => @@ -197,6 +202,7 @@ export function getIndexPatternDatasource({ indexPatternFieldEditor={indexPatternFieldEditor} {...props} core={core} + uiActions={uiActions} /> , domElement @@ -320,6 +326,34 @@ export function getIndexPatternDatasource({ getDropProps, onDrop, + getCustomWorkspaceRenderer: (state: IndexPatternPrivateState, dragging: DraggingIdentifier) => { + if (dragging.field === undefined || dragging.indexPatternId === undefined) { + return undefined; + } + + const draggedField = dragging as DraggingIdentifier & { + field: IndexPatternField; + indexPatternId: string; + }; + const geoFieldType = + draggedField.field.esTypes && + draggedField.field.esTypes.find((esType) => { + return ['geo_point', 'geo_shape'].includes(esType); + }); + return geoFieldType + ? () => { + return ( + + ); + } + : undefined; + }, + // Reset the temporary invalid state when closing the editor, but don't // update the state if it's not needed updateStateOnCloseDimension: ({ state, layerId, columnId }) => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/visualize_geo_field_button.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/visualize_geo_field_button.tsx new file mode 100644 index 0000000000000..3101fb12b933a --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/visualize_geo_field_button.tsx @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { MouseEvent, useEffect, useState } from 'react'; +import { EuiButton } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + visualizeGeoFieldTrigger, + VISUALIZE_GEO_FIELD_TRIGGER, + UiActionsStart, +} from '../../../../../src/plugins/ui_actions/public'; + +interface Props { + indexPatternId: string; + fieldName: string; + uiActions: UiActionsStart; +} + +export function VisualizeGeoFieldButton(props: Props) { + const [href, setHref] = useState(undefined); + + async function loadHref() { + const actions = await props.uiActions.getTriggerCompatibleActions(VISUALIZE_GEO_FIELD_TRIGGER, { + indexPatternId: props.indexPatternId, + fieldName: props.fieldName, + }); + const triggerOptions = { + indexPatternId: props.indexPatternId, + fieldName: props.fieldName, + trigger: visualizeGeoFieldTrigger, + }; + const loadedHref = actions.length ? await actions[0].getHref?.(triggerOptions) : undefined; + setHref(loadedHref); + } + + useEffect( + () => { + loadHref(); + }, + /* eslint-disable-next-line react-hooks/exhaustive-deps */ + [] + ); + + function onClick(event: MouseEvent) { + event.preventDefault(); + props.uiActions.getTrigger(VISUALIZE_GEO_FIELD_TRIGGER).exec({ + indexPatternId: props.indexPatternId, + fieldName: props.fieldName, + }); + } + + return ( + <> + {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} + + + + + ); +} diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 94b4433a82551..51d679e7c40e5 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -33,6 +33,7 @@ import type { LensResizeActionData, LensToggleActionData, } from './datatable_visualization/components/types'; +import { UiActionsStart } from '../../../../src/plugins/ui_actions/public'; export type ErrorCallback = (e: { message: string }) => void; @@ -213,6 +214,10 @@ export interface Datasource { } ) => { dropTypes: DropType[]; nextLabel?: string } | undefined; onDrop: (props: DatasourceDimensionDropHandlerProps) => false | true | { deleted: string }; + getCustomWorkspaceRenderer?: ( + state: T, + dragging: DraggingIdentifier + ) => undefined | (() => JSX.Element); updateStateOnCloseDimension?: (props: { layerId: string; columnId: string; @@ -267,6 +272,7 @@ export interface DatasourceDataPanelProps { filters: Filter[]; dropOntoWorkspace: (field: DragDropIdentifier) => void; hasSuggestionForField: (field: DragDropIdentifier) => boolean; + uiActions: UiActionsStart; } interface SharedDimensionProps { @@ -343,7 +349,7 @@ export type DatasourceDimensionDropHandlerProps = DatasourceDimensionDropProp dropType: DropType; }; -export type FieldOnlyDataType = 'document' | 'ip' | 'histogram'; +export type FieldOnlyDataType = 'document' | 'ip' | 'histogram' | 'geo_point' | 'geo_shape'; export type DataType = 'string' | 'number' | 'date' | 'boolean' | FieldOnlyDataType; // An operation represents a column in a table, not any information diff --git a/x-pack/plugins/lens/public/utils.ts b/x-pack/plugins/lens/public/utils.ts index ab95141431541..2d8cfee2185fa 100644 --- a/x-pack/plugins/lens/public/utils.ts +++ b/x-pack/plugins/lens/public/utils.ts @@ -42,3 +42,10 @@ export const desanitizeFilterContext = ( } return result; }; + +export function getVisualizeGeoFieldMessage(fieldType: string) { + return i18n.translate('xpack.lens.visualizeGeoFieldMessage', { + defaultMessage: `Lens cannot visualize {fieldType} fields`, + values: { fieldType }, + }); +} diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts index 1616a4c141476..d5120cfae973c 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts +++ b/x-pack/plugins/lens/public/xy_visualization/xy_suggestions.ts @@ -27,6 +27,8 @@ const columnSortOrder = { boolean: 4, number: 5, histogram: 6, + geo_point: 7, + geo_shape: 8, }; /** diff --git a/x-pack/test/functional/apps/lens/geo_field.ts b/x-pack/test/functional/apps/lens/geo_field.ts new file mode 100644 index 0000000000000..2ba833177a135 --- /dev/null +++ b/x-pack/test/functional/apps/lens/geo_field.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['visualize', 'lens', 'header', 'maps', 'timePicker']); + + describe('lens visualize geo field tests', () => { + it('should visualize geo fields in maps', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.timePicker.setAbsoluteRange( + 'Sep 22, 2015 @ 00:00:00.000', + 'Sep 22, 2015 @ 04:00:00.000' + ); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.lens.dragFieldToGeoFieldWorkspace('geo.coordinates'); + + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.maps.waitForLayersToLoad(); + const doesLayerExist = await PageObjects.maps.doesLayerExist('logstash-*'); + expect(doesLayerExist).to.equal(true); + const hits = await PageObjects.maps.getHits(); + expect(hits).to.equal('66'); + await PageObjects.maps.refreshAndClearUnsavedChangesWarning(); + }); + }); +} diff --git a/x-pack/test/functional/apps/lens/index.ts b/x-pack/test/functional/apps/lens/index.ts index bfb0aad7177f4..ab7cee13ffebd 100644 --- a/x-pack/test/functional/apps/lens/index.ts +++ b/x-pack/test/functional/apps/lens/index.ts @@ -37,6 +37,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./colors')); loadTestFile(require.resolve('./chart_data')); loadTestFile(require.resolve('./drag_and_drop')); + loadTestFile(require.resolve('./geo_field')); loadTestFile(require.resolve('./lens_reporting')); loadTestFile(require.resolve('./lens_tagging')); diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 100ed8e079d37..f73440e331466 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -174,6 +174,19 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont await PageObjects.header.waitUntilLoadingHasFinished(); }, + /** + * Drags field to geo field workspace + * + * @param field - the desired geo_point or geo_shape field + * */ + async dragFieldToGeoFieldWorkspace(field: string) { + await browser.html5DragAndDrop( + testSubjects.getCssSelector(`lnsFieldListPanelField-${field}`), + testSubjects.getCssSelector('lnsGeoFieldWorkspace') + ); + await PageObjects.header.waitUntilLoadingHasFinished(); + }, + /** * Drags field to workspace * From dffa14334f1fbf01d128a3f546d7e5ba50fde9ee Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Wed, 12 May 2021 19:25:24 +0300 Subject: [PATCH 044/144] [TSVB] Replaces hardcoded ids with uuid (#97423) * [TSVB] Replace hardcoded ids with uuid * Use v4 instead * Add id on the model initialization * Change the id in case of new visualization * Add paneld to the meta object Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/application/components/vis_editor.tsx | 4 ++++ src/plugins/vis_type_timeseries/public/metrics_type.ts | 8 ++++---- src/plugins/vis_type_timeseries/public/plugin.ts | 2 -- src/plugins/vis_type_timeseries/public/services.ts | 6 +----- .../vis_data/request_processors/series/date_histogram.js | 1 + .../request_processors/series/date_histogram.test.js | 5 +++++ .../request_processors/series/normalize_query.test.js | 3 +++ .../vis_data/request_processors/table/date_histogram.js | 1 + .../request_processors/table/normalize_query.test.js | 3 +++ .../server/lib/vis_data/series/build_request_body.test.ts | 1 + 10 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx index de3163c44f95b..99f2564328402 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.tsx @@ -8,6 +8,7 @@ import React, { Component } from 'react'; import * as Rx from 'rxjs'; +import uuid from 'uuid/v4'; import { share } from 'rxjs/operators'; import { isEqual, isEmpty, debounce } from 'lodash'; import { EventEmitter } from 'events'; @@ -79,6 +80,9 @@ export class VisEditor extends Component { } public start(core: CoreStart, { data }: MetricsPluginStartDependencies) { - setSavedObjectsClient(core.savedObjects); setI18n(core.i18n); setFieldFormats(data.fieldFormats); setDataStart(data); diff --git a/src/plugins/vis_type_timeseries/public/services.ts b/src/plugins/vis_type_timeseries/public/services.ts index 17c4a6c7de153..22f99f95691de 100644 --- a/src/plugins/vis_type_timeseries/public/services.ts +++ b/src/plugins/vis_type_timeseries/public/services.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { I18nStart, SavedObjectsStart, IUiSettingsClient, CoreStart } from 'src/core/public'; +import { I18nStart, IUiSettingsClient, CoreStart } from 'src/core/public'; import { createGetterSetter } from '../../kibana_utils/public'; import { ChartsPluginSetup } from '../../charts/public'; import { DataPublicPluginStart } from '../../data/public'; @@ -17,10 +17,6 @@ export const [getFieldFormats, setFieldFormats] = createGetterSetter< DataPublicPluginStart['fieldFormats'] >('FieldFormats'); -export const [getSavedObjectsClient, setSavedObjectsClient] = createGetterSetter( - 'SavedObjectsClient' -); - export const [getCoreStart, setCoreStart] = createGetterSetter('CoreStart'); export const [getDataStart, setDataStart] = createGetterSetter('DataStart'); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js index 29cf3f274dc24..f82f332df19fd 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js @@ -68,6 +68,7 @@ export function dateHistogram( bucketSize, seriesId: series.id, index: panel.use_kibana_indexes ? seriesIndex.indexPattern?.id : undefined, + panelId: panel.id, }); return next(doc); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js index a1fd242dc150e..741eb93267f4c 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js @@ -32,6 +32,7 @@ describe('dateHistogram(req, panel, series)', () => { index_pattern: '*', time_field: '@timestamp', interval: '10s', + id: 'panelId', }; series = { id: 'test' }; config = { @@ -89,6 +90,7 @@ describe('dateHistogram(req, panel, series)', () => { intervalString: '10s', timeField: '@timestamp', seriesId: 'test', + panelId: 'panelId', }, }, }, @@ -130,6 +132,7 @@ describe('dateHistogram(req, panel, series)', () => { intervalString: '10s', timeField: '@timestamp', seriesId: 'test', + panelId: 'panelId', }, }, }, @@ -174,6 +177,7 @@ describe('dateHistogram(req, panel, series)', () => { intervalString: '20s', timeField: 'timestamp', seriesId: 'test', + panelId: 'panelId', }, }, }, @@ -230,6 +234,7 @@ describe('dateHistogram(req, panel, series)', () => { seriesId: 'test', bucketSize: 10, intervalString: '10s', + panelId: 'panelId', }, }, }, diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/normalize_query.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/normalize_query.test.js index 0194e1ce3e5d9..a3a9022a67191 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/normalize_query.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/normalize_query.test.js @@ -11,6 +11,7 @@ import { normalizeQuery } from './normalize_query'; describe('normalizeQuery', () => { const req = 'req'; const seriesId = '61ca57f1-469d-11e7-af02-69e470af7417'; + const panelId = '39d49073-a924-426b-aa32-35acb40a9bb7'; let next; let panel; @@ -48,6 +49,7 @@ describe('normalizeQuery', () => { intervalString: '10s', bucketSize: 10, seriesId: [seriesId], + panelId, }, }, }, @@ -78,6 +80,7 @@ describe('normalizeQuery', () => { intervalString: '10s', bucketSize: 10, seriesId: [seriesId], + panelId: panelId, }); }); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js index f0989cf0fa08b..3e883abc9e5e0 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js @@ -24,6 +24,7 @@ export function dateHistogram(req, panel, esQueryConfig, seriesIndex, capabiliti const meta = { timeField, index: panel.use_kibana_indexes ? seriesIndex.indexPattern?.id : undefined, + panelId: panel.id, }; const getDateHistogramForLastBucketMode = () => { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/normalize_query.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/normalize_query.test.js index e2a7e7b17b548..71381f32599e3 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/normalize_query.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/normalize_query.test.js @@ -11,6 +11,7 @@ import { normalizeQuery } from './normalize_query'; describe('normalizeQuery', () => { const req = 'req'; const seriesId = '61ca57f1-469d-11e7-af02-69e470af7417'; + const panelId = '39d49073-a924-426b-aa32-35acb40a9bb7'; let next; let panel; @@ -56,6 +57,7 @@ describe('normalizeQuery', () => { timeField: 'order_date', intervalString: '10s', bucketSize: 10, + panelId, }, }, }, @@ -87,6 +89,7 @@ describe('normalizeQuery', () => { timeField: 'order_date', intervalString: '10s', bucketSize: 10, + panelId, }); }); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts index 89d87da5f3d7e..5b865d451003a 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts @@ -157,6 +157,7 @@ describe('buildRequestBody(req)', () => { intervalString: '10s', seriesId: 'c9b5f9c0-e403-11e6-be91-6f7688e9fac7', timeField: '@timestamp', + panelId: 'c9b5d2b0-e403-11e6-be91-6f7688e9fac7', }, }, }, From 907c8a5a8689d1e10d0efd54c5e027a983743cf7 Mon Sep 17 00:00:00 2001 From: Constance Date: Wed, 12 May 2021 09:27:38 -0700 Subject: [PATCH 045/144] Fix Flash Messages live region axe issue (#99872) --- .../shared/flash_messages/flash_messages.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx index 10f80d9a6345a..cf4e1a2d6cabc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx @@ -10,6 +10,7 @@ import React, { Fragment } from 'react'; import { useValues, useActions } from 'kea'; import { EuiCallOut, EuiSpacer, EuiGlobalToastList } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FLASH_MESSAGE_TYPES, DEFAULT_TOAST_TIMEOUT } from './constants'; import { FlashMessagesLogic } from './flash_messages_logic'; @@ -25,7 +26,14 @@ export const Callouts: React.FC = ({ children }) => { const { messages } = useValues(FlashMessagesLogic); return ( -
    +
    {messages.map(({ type, message, description }, index) => ( Date: Wed, 12 May 2021 17:33:10 +0100 Subject: [PATCH 046/144] Handle session timeout and user activity (#98461) * Handle session timeout and user activity * Added suggestions form code review * Fix i18n errors * Moved session timeout calculation to server side * fixed tests * Added suggestions from code review * fix types * Removed unecessary response interceptor and improved copy * Handle scenario when session does not exist correctly * Do not show warning again if previously dismissed * Added suggestions from code review Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/security/common/constants.ts | 28 + x-pack/plugins/security/common/types.ts | 5 +- x-pack/plugins/security/public/plugin.tsx | 11 +- .../plugins/security/public/session/index.ts | 3 +- .../session/session_expiration_toast.test.tsx | 89 ++++ .../session/session_expiration_toast.tsx | 93 ++++ .../session_idle_timeout_warning.test.tsx | 25 - .../session/session_idle_timeout_warning.tsx | 67 --- .../session/session_lifespan_warning.tsx | 51 -- .../public/session/session_timeout.mock.ts | 7 +- .../public/session/session_timeout.test.ts | 403 ++++++++++++++ .../public/session/session_timeout.test.tsx | 495 ------------------ .../public/session/session_timeout.ts | 330 ++++++++++++ .../public/session/session_timeout.tsx | 255 --------- .../session_timeout_http_interceptor.test.ts | 123 ----- .../session_timeout_http_interceptor.ts | 52 -- .../routes/session_management/info.test.ts | 113 +++- .../server/routes/session_management/info.ts | 17 +- .../translations/translations/ja-JP.json | 5 - .../translations/translations/zh-CN.json | 5 - .../tests/session_idle/extension.ts | 11 +- 21 files changed, 1057 insertions(+), 1131 deletions(-) create mode 100644 x-pack/plugins/security/public/session/session_expiration_toast.test.tsx create mode 100644 x-pack/plugins/security/public/session/session_expiration_toast.tsx delete mode 100644 x-pack/plugins/security/public/session/session_idle_timeout_warning.test.tsx delete mode 100644 x-pack/plugins/security/public/session/session_idle_timeout_warning.tsx delete mode 100644 x-pack/plugins/security/public/session/session_lifespan_warning.tsx create mode 100644 x-pack/plugins/security/public/session/session_timeout.test.ts delete mode 100644 x-pack/plugins/security/public/session/session_timeout.test.tsx create mode 100644 x-pack/plugins/security/public/session/session_timeout.ts delete mode 100644 x-pack/plugins/security/public/session/session_timeout.tsx delete mode 100644 x-pack/plugins/security/public/session/session_timeout_http_interceptor.test.ts delete mode 100644 x-pack/plugins/security/public/session/session_timeout_http_interceptor.ts diff --git a/x-pack/plugins/security/common/constants.ts b/x-pack/plugins/security/common/constants.ts index 0ff04e4f731d0..6d808f2305c91 100644 --- a/x-pack/plugins/security/common/constants.ts +++ b/x-pack/plugins/security/common/constants.ts @@ -57,3 +57,31 @@ export const NAME_REGEX = /^(?! )[a-zA-Z0-9 !"#$%&'()*+,\-./\\:;<=>?@\[\]^_`{|}~ * Maximum length of usernames and role names. */ export const MAX_NAME_LENGTH = 1024; + +/** + * Client session timeout is decreased by this number so that Kibana server can still access session + * content during logout request to properly clean user session up (invalidate access tokens, + * redirect to logout portal etc.). + */ +export const SESSION_GRACE_PERIOD_MS = 5 * 1000; + +/** + * Duration we'll normally display the warning toast + */ +export const SESSION_EXPIRATION_WARNING_MS = 5 * 60 * 1000; + +/** + * Current session info is checked this number of milliseconds before the warning toast shows. This + * will prevent the toast from being shown if the session has already been extended. + */ +export const SESSION_CHECK_MS = 1000; + +/** + * Session will be extended at most once this number of milliseconds while user activity is detected. + */ +export const SESSION_EXTENSION_THROTTLE_MS = 60 * 1000; + +/** + * Route to get session info and extend session expiration + */ +export const SESSION_ROUTE = '/internal/security/session'; diff --git a/x-pack/plugins/security/common/types.ts b/x-pack/plugins/security/common/types.ts index 94e4fef6517a6..690aced63b187 100644 --- a/x-pack/plugins/security/common/types.ts +++ b/x-pack/plugins/security/common/types.ts @@ -8,8 +8,7 @@ import type { AuthenticationProvider } from './model'; export interface SessionInfo { - now: number; - idleTimeoutExpiration: number | null; - lifespanExpiration: number | null; + expiresInMs: number | null; + canBeExtended: boolean; provider: AuthenticationProvider; } diff --git a/x-pack/plugins/security/public/plugin.tsx b/x-pack/plugins/security/public/plugin.tsx index c805d9f1caf79..7d7ab36f1dadb 100644 --- a/x-pack/plugins/security/public/plugin.tsx +++ b/x-pack/plugins/security/public/plugin.tsx @@ -27,13 +27,7 @@ import type { ConfigType } from './config'; import { ManagementService } from './management'; import { SecurityNavControlService } from './nav_control'; import { SecurityCheckupService } from './security_checkup'; -import type { ISessionTimeout } from './session'; -import { - SessionExpired, - SessionTimeout, - SessionTimeoutHttpInterceptor, - UnauthorizedResponseHttpInterceptor, -} from './session'; +import { SessionExpired, SessionTimeout, UnauthorizedResponseHttpInterceptor } from './session'; export interface PluginSetupDependencies { licensing: LicensingPluginSetup; @@ -58,7 +52,7 @@ export class SecurityPlugin PluginSetupDependencies, PluginStartDependencies > { - private sessionTimeout!: ISessionTimeout; + private sessionTimeout!: SessionTimeout; private readonly authenticationService = new AuthenticationService(); private readonly navControlService = new SecurityNavControlService(); private readonly securityLicenseService = new SecurityLicenseService(); @@ -84,7 +78,6 @@ export class SecurityPlugin const sessionExpired = new SessionExpired(logoutUrl, tenant); http.intercept(new UnauthorizedResponseHttpInterceptor(sessionExpired, anonymousPaths)); this.sessionTimeout = new SessionTimeout(notifications, sessionExpired, http, tenant); - http.intercept(new SessionTimeoutHttpInterceptor(this.sessionTimeout, anonymousPaths)); const { license } = this.securityLicenseService.setup({ license$: licensing.license$ }); diff --git a/x-pack/plugins/security/public/session/index.ts b/x-pack/plugins/security/public/session/index.ts index 30e73eacd9264..9679e05fd1bd9 100644 --- a/x-pack/plugins/security/public/session/index.ts +++ b/x-pack/plugins/security/public/session/index.ts @@ -6,6 +6,5 @@ */ export { SessionExpired } from './session_expired'; -export { SessionTimeout, ISessionTimeout } from './session_timeout'; -export { SessionTimeoutHttpInterceptor } from './session_timeout_http_interceptor'; +export { SessionTimeout } from './session_timeout'; export { UnauthorizedResponseHttpInterceptor } from './unauthorized_response_http_interceptor'; diff --git a/x-pack/plugins/security/public/session/session_expiration_toast.test.tsx b/x-pack/plugins/security/public/session/session_expiration_toast.test.tsx new file mode 100644 index 0000000000000..a78bed34b2088 --- /dev/null +++ b/x-pack/plugins/security/public/session/session_expiration_toast.test.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { fireEvent, render } from '@testing-library/react'; +import React from 'react'; +import { of } from 'rxjs'; + +import { I18nProvider } from '@kbn/i18n/react'; + +import { createSessionExpirationToast, SessionExpirationToast } from './session_expiration_toast'; +import type { SessionState } from './session_timeout'; + +describe('createSessionExpirationToast', () => { + it('creates a toast', () => { + const sessionState$ = of({ + lastExtensionTime: Date.now(), + expiresInMs: 60 * 1000, + canBeExtended: true, + }); + const onExtend = jest.fn(); + const onClose = jest.fn(); + const toast = createSessionExpirationToast(sessionState$, onExtend, onClose); + + expect(toast).toEqual( + expect.objectContaining({ + color: 'warning', + iconType: 'clock', + onClose: expect.any(Function), + text: expect.any(Function), + title: expect.any(String), + toastLifeTimeMs: 2147483647, + }) + ); + }); +}); + +describe('SessionExpirationToast', () => { + it('renders session expiration time', () => { + const sessionState$ = of({ + lastExtensionTime: Date.now(), + expiresInMs: 60 * 1000, + canBeExtended: true, + }); + + const { getByText } = render( + + + + ); + getByText(/You will be logged out in [0-9]+ seconds/); + }); + + it('renders extend button if session can be extended', () => { + const sessionState$ = of({ + lastExtensionTime: Date.now(), + expiresInMs: 60 * 1000, + canBeExtended: true, + }); + const onExtend = jest.fn().mockReturnValue(new Promise(() => {})); + + const { getByRole } = render( + + + + ); + fireEvent.click(getByRole('button', { name: 'Stay logged in' })); + + expect(onExtend).toHaveBeenCalled(); + }); + + it('does not render extend button if session cannot be extended', () => { + const sessionState$ = of({ + lastExtensionTime: Date.now(), + expiresInMs: 60 * 1000, + canBeExtended: false, + }); + const onExtend = jest.fn(); + + const { queryByRole } = render( + + + + ); + expect(queryByRole('button', { name: 'Stay logged in' })).toBeNull(); + }); +}); diff --git a/x-pack/plugins/security/public/session/session_expiration_toast.tsx b/x-pack/plugins/security/public/session/session_expiration_toast.tsx new file mode 100644 index 0000000000000..ad7aa67b64b3f --- /dev/null +++ b/x-pack/plugins/security/public/session/session_expiration_toast.tsx @@ -0,0 +1,93 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; +import type { FunctionComponent } from 'react'; +import React from 'react'; +import useAsyncFn from 'react-use/lib/useAsyncFn'; +import useObservable from 'react-use/lib/useObservable'; +import type { Observable } from 'rxjs'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage, FormattedRelative } from '@kbn/i18n/react'; +import type { ToastInput } from 'src/core/public'; + +import { toMountPoint } from '../../../../../src/plugins/kibana_react/public'; +import { SESSION_GRACE_PERIOD_MS } from '../../common/constants'; +import type { SessionState } from './session_timeout'; + +export interface SessionExpirationToastProps { + sessionState$: Observable; + onExtend: () => Promise; +} + +export const SessionExpirationToast: FunctionComponent = ({ + sessionState$, + onExtend, +}) => { + const state = useObservable(sessionState$); + const [{ loading }, extend] = useAsyncFn(onExtend); + + if (!state || !state.expiresInMs) { + return null; + } + + const expirationWarning = ( + + ), + }} + /> + ); + + if (state.canBeExtended) { + return ( + <> + {expirationWarning} + + + + + + + + + + ); + } + + return expirationWarning; +}; + +export const createSessionExpirationToast = ( + sessionState$: Observable, + onExtend: () => Promise, + onClose: () => void +): ToastInput => { + return { + color: 'warning', + iconType: 'clock', + title: i18n.translate('xpack.security.sessionExpirationToast.title', { + defaultMessage: 'Session timeout', + }), + text: toMountPoint( + + ), + onClose, + toastLifeTimeMs: 0x7fffffff, // Toast is hidden based on observable so using maximum possible timeout + }; +}; diff --git a/x-pack/plugins/security/public/session/session_idle_timeout_warning.test.tsx b/x-pack/plugins/security/public/session/session_idle_timeout_warning.test.tsx deleted file mode 100644 index 48a3bb482948e..0000000000000 --- a/x-pack/plugins/security/public/session/session_idle_timeout_warning.test.tsx +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -import { mountWithIntl } from '@kbn/test/jest'; - -import { SessionIdleTimeoutWarning } from './session_idle_timeout_warning'; - -describe('SessionIdleTimeoutWarning', () => { - it('fires its callback when the OK button is clicked', () => { - const handler = jest.fn(); - const wrapper = mountWithIntl( - - ); - - expect(handler).toBeCalledTimes(0); - wrapper.find('EuiButton[data-test-subj="refreshSessionButton"]').simulate('click'); - expect(handler).toBeCalledTimes(1); - }); -}); diff --git a/x-pack/plugins/security/public/session/session_idle_timeout_warning.tsx b/x-pack/plugins/security/public/session/session_idle_timeout_warning.tsx deleted file mode 100644 index 47dce0aa9993e..0000000000000 --- a/x-pack/plugins/security/public/session/session_idle_timeout_warning.tsx +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiButton, EuiProgress } from '@elastic/eui'; -import React from 'react'; - -import { i18n } from '@kbn/i18n'; -import { FormattedMessage, FormattedRelative } from '@kbn/i18n/react'; -import type { ToastInput } from 'src/core/public'; - -import { toMountPoint } from '../../../../../src/plugins/kibana_react/public'; - -interface Props { - onRefreshSession: () => void; - timeout: number; -} - -export const SessionIdleTimeoutWarning = (props: Props) => { - return ( - <> - -

    - - ), - }} - /> -

    -
    - - - -
    - - ); -}; - -export const createToast = (toastLifeTimeMs: number, onRefreshSession: () => void): ToastInput => { - const timeout = toastLifeTimeMs + Date.now(); - return { - color: 'warning', - text: toMountPoint( - - ), - title: i18n.translate('xpack.security.components.sessionIdleTimeoutWarning.title', { - defaultMessage: 'Warning', - }), - iconType: 'clock', - toastLifeTimeMs, - }; -}; diff --git a/x-pack/plugins/security/public/session/session_lifespan_warning.tsx b/x-pack/plugins/security/public/session/session_lifespan_warning.tsx deleted file mode 100644 index e611c9aa2ac5f..0000000000000 --- a/x-pack/plugins/security/public/session/session_lifespan_warning.tsx +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiProgress } from '@elastic/eui'; -import React from 'react'; - -import { i18n } from '@kbn/i18n'; -import { FormattedMessage, FormattedRelative } from '@kbn/i18n/react'; -import type { ToastInput } from 'src/core/public'; - -import { toMountPoint } from '../../../../../src/plugins/kibana_react/public'; - -interface Props { - timeout: number; -} - -export const SessionLifespanWarning = (props: Props) => { - return ( - <> - -

    - - ), - }} - /> -

    - - ); -}; - -export const createToast = (toastLifeTimeMs: number): ToastInput => { - const timeout = toastLifeTimeMs + Date.now(); - return { - color: 'danger', - text: toMountPoint(), - title: i18n.translate('xpack.security.components.sessionLifespanWarning.title', { - defaultMessage: 'Warning', - }), - iconType: 'alert', - toastLifeTimeMs, - }; -}; diff --git a/x-pack/plugins/security/public/session/session_timeout.mock.ts b/x-pack/plugins/security/public/session/session_timeout.mock.ts index 47e16810f2c2b..15071b08ded8f 100644 --- a/x-pack/plugins/security/public/session/session_timeout.mock.ts +++ b/x-pack/plugins/security/public/session/session_timeout.mock.ts @@ -5,12 +5,13 @@ * 2.0. */ -import type { ISessionTimeout } from './session_timeout'; +import type { PublicMethodsOf } from '@kbn/utility-types'; + +import type { SessionTimeout } from './session_timeout'; export function createSessionTimeoutMock() { return { start: jest.fn(), stop: jest.fn(), - extend: jest.fn(), - } as jest.Mocked; + } as jest.Mocked>; } diff --git a/x-pack/plugins/security/public/session/session_timeout.test.ts b/x-pack/plugins/security/public/session/session_timeout.test.ts new file mode 100644 index 0000000000000..b6cd758354dfa --- /dev/null +++ b/x-pack/plugins/security/public/session/session_timeout.test.ts @@ -0,0 +1,403 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { BroadcastChannel } from 'broadcast-channel'; + +import type { ToastInputFields } from 'src/core/public'; +import { coreMock } from 'src/core/public/mocks'; + +import { + SESSION_CHECK_MS, + SESSION_EXPIRATION_WARNING_MS, + SESSION_EXTENSION_THROTTLE_MS, + SESSION_GRACE_PERIOD_MS, + SESSION_ROUTE, +} from '../../common/constants'; +import type { SessionInfo } from '../../common/types'; +import { createSessionExpiredMock } from './session_expired.mock'; +import type { SessionState } from './session_timeout'; +import { SessionTimeout, startTimer } from './session_timeout'; + +jest.mock('broadcast-channel'); + +jest.useFakeTimers(); + +jest.spyOn(window, 'addEventListener'); +jest.spyOn(window, 'removeEventListener'); + +jest.spyOn(document, 'addEventListener'); +jest.spyOn(document, 'removeEventListener'); + +const nowMock = jest.spyOn(Date, 'now'); +const visibilityStateMock = jest.spyOn(document, 'visibilityState', 'get'); + +function createSessionTimeout(expiresInMs: number | null = 60 * 60 * 1000, canBeExtended = true) { + const { notifications, http } = coreMock.createSetup(); + const toast = Symbol(); + notifications.toasts.add.mockReturnValue(toast as any); + const sessionExpired = createSessionExpiredMock(); + const tenant = 'test'; + const sessionTimeout = new SessionTimeout(notifications, sessionExpired, http, tenant); + + http.fetch.mockResolvedValue({ + expiresInMs, + canBeExtended, + provider: { type: 'basic', name: 'basic1' }, + } as SessionInfo); + + return { sessionTimeout, sessionExpired, notifications, http }; +} + +describe('SessionTimeout', () => { + afterEach(async () => { + jest.clearAllMocks(); + jest.clearAllTimers(); + }); + + test(`does not initialize when starting an anonymous path`, async () => { + const { sessionTimeout, http } = createSessionTimeout(); + http.anonymousPaths.isAnonymous.mockReturnValue(true); + await sessionTimeout.start(); + expect(http.fetch).not.toHaveBeenCalled(); + }); + + it('fetches session info when starting', async () => { + const { sessionTimeout, http } = createSessionTimeout(); + await sessionTimeout.start(); + expect(http.fetch).toHaveBeenCalledTimes(1); + expect(http.fetch).toHaveBeenCalledWith(SESSION_ROUTE, { + asSystemRequest: true, + method: 'GET', + }); + }); + + it('adds event handlers when starting', async () => { + const { sessionTimeout } = createSessionTimeout(); + + expect(window.addEventListener).not.toHaveBeenCalled(); + expect(document.addEventListener).not.toHaveBeenCalled(); + + await sessionTimeout.start(); + + expect(window.addEventListener).toHaveBeenCalledWith('mousemove', expect.any(Function)); + expect(window.addEventListener).toHaveBeenCalledWith('mousedown', expect.any(Function)); + expect(window.addEventListener).toHaveBeenCalledWith('wheel', expect.any(Function)); + expect(window.addEventListener).toHaveBeenCalledWith('touchstart', expect.any(Function)); + expect(window.addEventListener).toHaveBeenCalledWith('keydown', expect.any(Function)); + expect(document.addEventListener).toHaveBeenCalledWith( + 'visibilitychange', + expect.any(Function) + ); + }); + + it('removes event handlers when stopping', async () => { + const { sessionTimeout } = createSessionTimeout(); + + await sessionTimeout.start(); + + expect(window.removeEventListener).not.toHaveBeenCalled(); + expect(document.removeEventListener).not.toHaveBeenCalled(); + + sessionTimeout.stop(); + + expect(window.removeEventListener).toHaveBeenCalledWith('mousemove', expect.any(Function)); + expect(window.removeEventListener).toHaveBeenCalledWith('mousedown', expect.any(Function)); + expect(window.removeEventListener).toHaveBeenCalledWith('wheel', expect.any(Function)); + expect(window.removeEventListener).toHaveBeenCalledWith('touchstart', expect.any(Function)); + expect(window.removeEventListener).toHaveBeenCalledWith('keydown', expect.any(Function)); + expect(document.removeEventListener).toHaveBeenCalledWith( + 'visibilitychange', + expect.any(Function) + ); + }); + + it('clears timers when stopping', async () => { + const { sessionTimeout, sessionExpired } = createSessionTimeout(100); + await sessionTimeout.start(); + sessionTimeout.stop(); + + jest.advanceTimersByTime(200); + + expect(sessionExpired.logout).not.toHaveBeenCalled(); + }); + + it('extends session when detecting user activity', async () => { + const { sessionTimeout, http } = createSessionTimeout(); + await sessionTimeout.start(); + expect(http.fetch).toHaveBeenCalledTimes(1); + + // Increment system time enough so that session extension gets triggered + nowMock.mockReturnValue(Date.now() + SESSION_EXTENSION_THROTTLE_MS + 10); + window.dispatchEvent(new Event('mousemove')); + + expect(http.fetch).toHaveBeenCalledTimes(2); + expect(http.fetch).toHaveBeenLastCalledWith( + SESSION_ROUTE, + expect.objectContaining({ asSystemRequest: false }) + ); + }); + + it('refetches session info before warning is displayed', async () => { + const { sessionTimeout, http } = createSessionTimeout(60 * 60 * 1000); + await sessionTimeout.start(); + expect(http.fetch).toHaveBeenCalledTimes(1); + + jest.advanceTimersByTime( + 60 * 60 * 1000 - SESSION_GRACE_PERIOD_MS - SESSION_EXPIRATION_WARNING_MS - SESSION_CHECK_MS + ); + + expect(http.fetch).toHaveBeenCalledTimes(2); + }); + + it('does not extend session if recently extended', async () => { + const { sessionTimeout, http } = createSessionTimeout(); + await sessionTimeout.start(); + + expect(http.fetch).toHaveBeenCalledTimes(1); + + window.dispatchEvent(new Event('mousemove')); + + expect(http.fetch).toHaveBeenCalledTimes(1); + }); + + it('marks HTTP requests as system requests when tab is not visible', async () => { + const { sessionTimeout, http } = createSessionTimeout(); + await sessionTimeout.start(); + + visibilityStateMock.mockReturnValue('hidden'); + document.dispatchEvent(new Event('visibilitychange')); + + const [{ request: handleHttpRequest }] = http.intercept.mock.calls[0]; + const fetchOptions = handleHttpRequest!({ path: '/test' }, {} as any); + expect(fetchOptions).toEqual({ path: '/test', asSystemRequest: true }); + }); + + it('does not mark HTTP requests to external URLs as system requests', async () => { + const { sessionTimeout, http } = createSessionTimeout(); + await sessionTimeout.start(); + + visibilityStateMock.mockReturnValue('hidden'); + document.dispatchEvent(new Event('visibilitychange')); + + const [{ request: handleHttpRequest }] = http.intercept.mock.calls[0]; + const fetchOptions = handleHttpRequest!({ path: 'http://elastic.co/' }, {} as any); + expect(fetchOptions).toBe(undefined); + }); + + it('marks HTTP requests as user requests when tab is visible', async () => { + const { sessionTimeout, http } = createSessionTimeout(); + await sessionTimeout.start(); + + visibilityStateMock.mockReturnValue('visible'); + document.dispatchEvent(new Event('visibilitychange')); + + const [{ request: handleHttpRequest }] = http.intercept.mock.calls[0]; + const fetchOptions = handleHttpRequest!({ path: '/test' }, {} as any); + expect(fetchOptions).toEqual({ path: '/test', asSystemRequest: false }); + }); + + it('resets timers when receiving message from other tabs', async () => { + const { sessionTimeout, sessionExpired } = createSessionTimeout(60 * 1000); + await sessionTimeout.start(); + + jest.advanceTimersByTime(30 * 1000); + + const [broadcastChannelMock] = jest.requireMock('broadcast-channel').BroadcastChannel.mock + .instances as [BroadcastChannel]; + + broadcastChannelMock.onmessage!({ + lastExtensionTime: Date.now(), + expiresInMs: 60 * 1000, + canBeExtended: true, + }); + + jest.advanceTimersByTime(30 * 1000); + + expect(sessionExpired.logout).not.toHaveBeenCalled(); + }); + + it('shows warning before session expires', async () => { + const { sessionTimeout, notifications } = createSessionTimeout(60 * 60 * 1000); + await sessionTimeout.start(); + + jest.advanceTimersByTime( + 60 * 60 * 1000 - SESSION_GRACE_PERIOD_MS - SESSION_EXPIRATION_WARNING_MS + ); + + expect(notifications.toasts.add).toHaveBeenCalledWith( + expect.objectContaining({ color: 'warning', iconType: 'clock' }) + ); + }); + + it('extends session when closing expiration warning', async () => { + const { sessionTimeout, notifications, http } = createSessionTimeout(60 * 60 * 1000); + await sessionTimeout.start(); + + expect(http.fetch).toHaveBeenCalledTimes(1); + expect(http.fetch).toHaveBeenLastCalledWith( + SESSION_ROUTE, + expect.objectContaining({ asSystemRequest: true }) + ); + + jest.runOnlyPendingTimers(); + + expect(http.fetch).toHaveBeenCalledTimes(2); + expect(http.fetch).toHaveBeenLastCalledWith( + SESSION_ROUTE, + expect.objectContaining({ asSystemRequest: true }) + ); + + const [toast] = notifications.toasts.add.mock.calls[0] as [ToastInputFields]; + + await toast.onClose!(); + + expect(http.fetch).toHaveBeenCalledTimes(3); + expect(http.fetch).toHaveBeenLastCalledWith( + SESSION_ROUTE, + expect.objectContaining({ asSystemRequest: false }) + ); + }); + + it('show warning 5 minutes before expiration if not previously dismissed', async () => { + const { sessionTimeout, notifications } = createSessionTimeout(null); + await sessionTimeout.start(); + + const expiresInMs = 10 * 60 * 1000; + const showWarningInMs = expiresInMs - SESSION_GRACE_PERIOD_MS - SESSION_EXPIRATION_WARNING_MS; + + // eslint-disable-next-line dot-notation + sessionTimeout['resetTimers']({ + lastExtensionTime: Date.now() + 1 * 60 * 1000, + expiresInMs, + canBeExtended: false, + }); + + jest.advanceTimersByTime(showWarningInMs); + + expect(notifications.toasts.add).toHaveBeenCalled(); + }); + + it('do not show warning again if previously dismissed', async () => { + const { sessionTimeout, notifications } = createSessionTimeout(null); + await sessionTimeout.start(); + + const expiresInMs = 10 * 60 * 1000; + const showWarningInMs = expiresInMs - SESSION_GRACE_PERIOD_MS - SESSION_EXPIRATION_WARNING_MS; + + // eslint-disable-next-line dot-notation + sessionTimeout['snoozedWarningState'] = { + lastExtensionTime: Date.now(), + expiresInMs, + canBeExtended: false, + }; + + // eslint-disable-next-line dot-notation + sessionTimeout['resetTimers']({ + lastExtensionTime: Date.now() + 1 * 60 * 1000, + expiresInMs, + canBeExtended: false, + }); + + // We would normally show the warning at this point in time. However, since the warning has been + // dismissed for 10 minutes we will only show it after 10 minutes have elapsed + jest.advanceTimersByTime(showWarningInMs); + expect(notifications.toasts.add).not.toHaveBeenCalled(); + + // Advance the timer further so that a total have 10 minutes would have passed. This is the + // expiration time of the warning that was dismissed. + jest.advanceTimersByTime(9 * 60 * 1000 - showWarningInMs); + expect(notifications.toasts.add).toHaveBeenCalled(); + }); + + it('hides warning if session gets extended', async () => { + const { sessionTimeout, notifications } = createSessionTimeout(60 * 60 * 1000); + await sessionTimeout.start(); + + jest.advanceTimersByTime( + 60 * 60 * 1000 - SESSION_GRACE_PERIOD_MS - SESSION_EXPIRATION_WARNING_MS + ); + + expect(notifications.toasts.add).toHaveBeenCalled(); + + // eslint-disable-next-line dot-notation + await sessionTimeout['fetchSessionInfo'](true); + + expect(notifications.toasts.remove).toHaveBeenCalled(); + }); + + it('logs user out slightly before session expires', async () => { + const { sessionTimeout, sessionExpired } = createSessionTimeout(60 * 60 * 1000); + await sessionTimeout.start(); + + jest.advanceTimersByTime(60 * 60 * 1000 - SESSION_GRACE_PERIOD_MS); + + expect(sessionExpired.logout).toHaveBeenCalled(); + }); + + it('logs user out immediately if session expiration is imminent', async () => { + const { sessionTimeout, sessionExpired } = createSessionTimeout(SESSION_GRACE_PERIOD_MS / 2); + await sessionTimeout.start(); + + jest.advanceTimersByTime(0); + + expect(sessionExpired.logout).toHaveBeenCalled(); + }); + + it('does not log user out if session does not expire', async () => { + const { sessionTimeout, sessionExpired } = createSessionTimeout(null); + await sessionTimeout.start(); + + jest.runOnlyPendingTimers(); + + expect(sessionExpired.logout).not.toHaveBeenCalled(); + }); + + it('does not log user out if session does not exist', async () => { + const { sessionTimeout, sessionExpired, http } = createSessionTimeout(); + + http.fetch.mockResolvedValue(''); // Session endpoint return 204 No content when session does not exist + await sessionTimeout.start(); + + jest.runOnlyPendingTimers(); + + expect(sessionExpired.logout).not.toHaveBeenCalled(); + }); +}); + +describe('startTimer', () => { + it('executes callback after time elapses', () => { + const callback = jest.fn(); + startTimer(callback, 100); + jest.advanceTimersByTime(100); + expect(callback).toHaveBeenCalledTimes(1); + }); + + it('executes callback after a very long time elapses', () => { + const callback = jest.fn(); + startTimer(callback, 0x7fffffff + 100); + jest.advanceTimersByTime(0x7fffffff + 100); + expect(callback).toHaveBeenCalledTimes(1); + }); + + it('does not executes callback if stopped before time elapses', () => { + const callback = jest.fn(); + const stop = startTimer(callback, 100); + jest.advanceTimersByTime(50); + stop(); + jest.advanceTimersByTime(50); + expect(callback).toHaveBeenCalledTimes(0); + }); + + it('does not executes callback if stopped before a very long time elapses', () => { + const callback = jest.fn(); + const stop = startTimer(callback, 0x7fffffff + 100); + jest.advanceTimersByTime(0x7fffffff + 50); + stop(); + jest.advanceTimersByTime(50); + expect(callback).toHaveBeenCalledTimes(0); + }); +}); diff --git a/x-pack/plugins/security/public/session/session_timeout.test.tsx b/x-pack/plugins/security/public/session/session_timeout.test.tsx deleted file mode 100644 index 1faa105691259..0000000000000 --- a/x-pack/plugins/security/public/session/session_timeout.test.tsx +++ /dev/null @@ -1,495 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import BroadcastChannel from 'broadcast-channel'; - -import { mountWithIntl, nextTick } from '@kbn/test/jest'; -import { coreMock } from 'src/core/public/mocks'; - -import { createSessionExpiredMock } from './session_expired.mock'; -import { SessionTimeout } from './session_timeout'; - -jest.useFakeTimers(); - -const expectNoWarningToast = ( - notifications: ReturnType['notifications'] -) => { - expect(notifications.toasts.add).not.toHaveBeenCalled(); -}; - -const expectIdleTimeoutWarningToast = ( - notifications: ReturnType['notifications'], - toastLifeTimeMs: number = 60000 -) => { - expect(notifications.toasts.add).toHaveBeenCalledTimes(1); - expect(notifications.toasts.add.mock.calls[0][0]).toMatchInlineSnapshot( - { - text: expect.any(Function), - }, - ` - Object { - "color": "warning", - "iconType": "clock", - "text": Any, - "title": "Warning", - "toastLifeTimeMs": ${toastLifeTimeMs}, - } - ` - ); -}; - -const expectLifespanWarningToast = ( - notifications: ReturnType['notifications'], - toastLifeTimeMs: number = 60000 -) => { - expect(notifications.toasts.add).toHaveBeenCalledTimes(1); - expect(notifications.toasts.add.mock.calls[0][0]).toMatchInlineSnapshot( - { - text: expect.any(Function), - }, - ` - Object { - "color": "danger", - "iconType": "alert", - "text": Any, - "title": "Warning", - "toastLifeTimeMs": ${toastLifeTimeMs}, - } - ` - ); -}; - -const expectWarningToastHidden = ( - notifications: ReturnType['notifications'], - toast: symbol -) => { - expect(notifications.toasts.remove).toHaveBeenCalledTimes(1); - expect(notifications.toasts.remove).toHaveBeenCalledWith(toast); -}; - -describe('Session Timeout', () => { - const now = new Date().getTime(); - const defaultSessionInfo = { - now, - idleTimeoutExpiration: now + 2 * 60 * 1000, - lifespanExpiration: null, - provider: { type: 'basic', name: 'basic1' }, - }; - let notifications: ReturnType['notifications']; - let http: ReturnType['http']; - let sessionExpired: ReturnType; - let sessionTimeout: SessionTimeout; - const toast = Symbol(); - - beforeAll(() => { - BroadcastChannel.enforceOptions({ - type: 'simulate', - }); - Object.defineProperty(window, 'sessionStorage', { - value: { - setItem: jest.fn(() => null), - }, - writable: true, - }); - }); - - beforeEach(() => { - const setup = coreMock.createSetup(); - notifications = setup.notifications; - http = setup.http; - notifications.toasts.add.mockReturnValue(toast as any); - sessionExpired = createSessionExpiredMock(); - const tenant = ''; - sessionTimeout = new SessionTimeout(notifications, sessionExpired, http, tenant); - - // default mocked response for checking session info - http.fetch.mockResolvedValue(defaultSessionInfo); - }); - - afterEach(async () => { - jest.clearAllMocks(); - jest.unmock('broadcast-channel'); - sessionTimeout.stop(); - }); - - afterAll(() => { - BroadcastChannel.enforceOptions(null); - delete (window as any).sessionStorage; - }); - - describe('Lifecycle', () => { - test(`starts and initializes on a non-anonymous path`, async () => { - sessionTimeout.start(); - await nextTick(); - // eslint-disable-next-line dot-notation - expect(sessionTimeout['channel']).not.toBeUndefined(); - expect(http.fetch).toHaveBeenCalledTimes(1); - }); - - test(`starts and initializes if the broadcast channel fails to load`, async () => { - jest.mock('broadcast-channel', () => { - throw new Error('Unable to load broadcast channel!'); - }); - const consoleSpy = jest.spyOn(console, 'warn'); - - sessionTimeout.start(); - await nextTick(); - // eslint-disable-next-line dot-notation - expect(sessionTimeout['channel']).toBeUndefined(); - expect(http.fetch).toHaveBeenCalledTimes(1); - expect(consoleSpy).toHaveBeenCalledTimes(1); - expect(consoleSpy.mock.calls[0][0]).toMatchInlineSnapshot( - `"Failed to load broadcast channel. Session management will not be kept in sync when multiple tabs are loaded."` - ); - }); - - test(`starts and does not initialize on an anonymous path`, async () => { - http.anonymousPaths.isAnonymous.mockReturnValue(true); - sessionTimeout.start(); - await nextTick(); - // eslint-disable-next-line dot-notation - expect(sessionTimeout['channel']).toBeUndefined(); - expect(http.fetch).not.toHaveBeenCalled(); - }); - - test(`stops`, async () => { - sessionTimeout.start(); - await nextTick(); - // eslint-disable-next-line dot-notation - const close = jest.fn(sessionTimeout['channel']!.close); - // eslint-disable-next-line dot-notation - sessionTimeout['channel']!.close = close; - // eslint-disable-next-line dot-notation - const cleanup = jest.fn(sessionTimeout['cleanup']); - // eslint-disable-next-line dot-notation - sessionTimeout['cleanup'] = cleanup; - - sessionTimeout.stop(); - expect(close).toHaveBeenCalled(); - expect(cleanup).toHaveBeenCalled(); - }); - - test(`stop works properly for large timeouts`, async () => { - http.fetch.mockResolvedValue({ - ...defaultSessionInfo, - idleTimeoutExpiration: now + 5_000_000_000, - }); - sessionTimeout.start(); - await nextTick(); - - // Advance timers far enough to call intermediate `setTimeout` multiple times, but before any - // of the timers is supposed to be triggered. - jest.advanceTimersByTime(5_000_000_000 - (60 + 5 + 2) * 1000); - - sessionTimeout.stop(); - - // Advance timer even further and make sure that timers were properly cleaned up. - jest.runAllTimers(); - - expect(http.fetch).toHaveBeenCalledTimes(1); - expect(sessionExpired.logout).not.toHaveBeenCalled(); - expectNoWarningToast(notifications); - }); - }); - - describe('API calls', () => { - const methodName = 'handleSessionInfoAndResetTimers'; - let method: jest.Mock; - - beforeEach(() => { - method = jest.fn(sessionTimeout[methodName]); - sessionTimeout[methodName] = method; - }); - - test(`handles success`, async () => { - sessionTimeout.start(); - await nextTick(); - - expect(http.fetch).toHaveBeenCalledTimes(1); - // eslint-disable-next-line dot-notation - expect(sessionTimeout['sessionInfo']).toBe(defaultSessionInfo); - expect(method).toHaveBeenCalledTimes(1); - }); - - test(`handles error`, async () => { - const mockErrorResponse = new Error('some-error'); - http.fetch.mockRejectedValue(mockErrorResponse); - sessionTimeout.start(); - await nextTick(); - - expect(http.fetch).toHaveBeenCalledTimes(1); - // eslint-disable-next-line dot-notation - expect(sessionTimeout['sessionInfo']).toBeUndefined(); - expect(method).not.toHaveBeenCalled(); - }); - }); - - describe('warning toast', () => { - test(`shows idle timeout warning toast`, async () => { - sessionTimeout.start(); - await nextTick(); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - jest.advanceTimersByTime(55 * 1000); - expectIdleTimeoutWarningToast(notifications); - }); - - test(`shows idle timeout warning toast even for large timeouts`, async () => { - http.fetch.mockResolvedValue({ - ...defaultSessionInfo, - idleTimeoutExpiration: now + 5_000_000_000, - }); - sessionTimeout.start(); - await nextTick(); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - jest.advanceTimersByTime(5_000_000_000 - 66 * 1000); - expectNoWarningToast(notifications); - - jest.advanceTimersByTime(1000); - expectIdleTimeoutWarningToast(notifications); - }); - - test(`shows lifespan warning toast`, async () => { - const sessionInfo = { - now, - idleTimeoutExpiration: null, - lifespanExpiration: now + 2 * 60 * 1000, - provider: { type: 'basic', name: 'basic1' }, - }; - http.fetch.mockResolvedValue(sessionInfo); - sessionTimeout.start(); - await nextTick(); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - jest.advanceTimersByTime(55 * 1000); - expectLifespanWarningToast(notifications); - }); - - test(`shows lifespan warning toast even for large timeouts`, async () => { - const sessionInfo = { - ...defaultSessionInfo, - idleTimeoutExpiration: null, - lifespanExpiration: now + 5_000_000_000, - }; - http.fetch.mockResolvedValue(sessionInfo); - sessionTimeout.start(); - await nextTick(); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - jest.advanceTimersByTime(5_000_000_000 - 66 * 1000); - expectNoWarningToast(notifications); - - jest.advanceTimersByTime(1000); - expectLifespanWarningToast(notifications); - }); - - test(`extend only results in an HTTP call if a warning is shown`, async () => { - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalledTimes(1); - - await sessionTimeout.extend('/foo'); - expect(http.fetch).toHaveBeenCalledTimes(1); - jest.advanceTimersByTime(54 * 1000); - expect(http.fetch).toHaveBeenCalledTimes(2); - expectNoWarningToast(notifications); - - await sessionTimeout.extend('/foo'); - expect(http.fetch).toHaveBeenCalledTimes(2); - jest.advanceTimersByTime(10 * 1000); - expectIdleTimeoutWarningToast(notifications); - - await sessionTimeout.extend('/foo'); - expect(http.fetch).toHaveBeenCalledTimes(3); - }); - - test(`extend does not result in an HTTP call if a lifespan warning is shown`, async () => { - const sessionInfo = { - now, - idleTimeoutExpiration: null, - lifespanExpiration: now + 2 * 60 * 1000, - provider: { type: 'basic', name: 'basic1' }, - }; - http.fetch.mockResolvedValue(sessionInfo); - sessionTimeout.start(); - await nextTick(); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - jest.advanceTimersByTime(55 * 1000); - expectLifespanWarningToast(notifications); - - expect(http.fetch).toHaveBeenCalledTimes(1); - await sessionTimeout.extend('/foo'); - expect(http.fetch).toHaveBeenCalledTimes(1); - }); - - test(`extend hides displayed warning toast`, async () => { - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalledTimes(1); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - const elapsed = 55 * 1000; - jest.advanceTimersByTime(elapsed); - expectIdleTimeoutWarningToast(notifications); - - http.fetch.mockResolvedValue({ - now: now + elapsed, - idleTimeoutExpiration: now + elapsed + 2 * 60 * 1000, - lifespanExpiration: null, - provider: { type: 'basic', name: 'basic1' }, - }); - await sessionTimeout.extend('/foo'); - expect(http.fetch).toHaveBeenCalledTimes(3); - expectWarningToastHidden(notifications, toast); - }); - - test(`extend does nothing for session-related routes`, async () => { - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalledTimes(1); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - const elapsed = 55 * 1000; - jest.advanceTimersByTime(elapsed); - expect(http.fetch).toHaveBeenCalledTimes(2); - expectIdleTimeoutWarningToast(notifications); - - await sessionTimeout.extend('/internal/security/session'); - expect(http.fetch).toHaveBeenCalledTimes(2); - }); - - test(`checks for updated session info before the warning displays`, async () => { - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalledTimes(1); - - // we check for updated session info 1 second before the warning is shown - const elapsed = 54 * 1000; - jest.advanceTimersByTime(elapsed); - expect(http.fetch).toHaveBeenCalledTimes(2); - }); - - test('clicking "extend" causes a new HTTP request (which implicitly extends the session)', async () => { - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalledTimes(1); - - // we display the warning a minute before we expire the the session, which is 5 seconds before it actually expires - jest.advanceTimersByTime(55 * 1000); - expect(http.fetch).toHaveBeenCalledTimes(2); - expectIdleTimeoutWarningToast(notifications); - - const toastInput = notifications.toasts.add.mock.calls[0][0]; - expect(toastInput).toHaveProperty('text'); - const mountPoint = (toastInput as any).text; - const wrapper = mountWithIntl(mountPoint.__reactMount__); - wrapper.find('EuiButton[data-test-subj="refreshSessionButton"]').simulate('click'); - expect(http.fetch).toHaveBeenCalledTimes(3); - }); - - test('when the session timeout is shorter than 65 seconds, display the warning immediately and for a shorter duration', async () => { - http.fetch.mockResolvedValue({ - now, - idleTimeoutExpiration: now + 64 * 1000, - lifespanExpiration: null, - provider: { type: 'basic', name: 'basic1' }, - }); - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalled(); - - jest.advanceTimersByTime(0); - expectIdleTimeoutWarningToast(notifications, 59 * 1000); - }); - }); - - describe('session expiration', () => { - test(`expires the session 5 seconds before it really expires`, async () => { - sessionTimeout.start(); - await nextTick(); - - jest.advanceTimersByTime(114 * 1000); - expect(sessionExpired.logout).not.toHaveBeenCalled(); - - jest.advanceTimersByTime(1 * 1000); - expect(sessionExpired.logout).toHaveBeenCalled(); - }); - - test(`expires the session 5 seconds before it really expires even for large timeouts`, async () => { - http.fetch.mockResolvedValue({ - ...defaultSessionInfo, - idleTimeoutExpiration: now + 5_000_000_000, - }); - - sessionTimeout.start(); - await nextTick(); - - jest.advanceTimersByTime(5_000_000_000 - 6000); - expect(sessionExpired.logout).not.toHaveBeenCalled(); - - jest.advanceTimersByTime(1000); - expect(sessionExpired.logout).toHaveBeenCalled(); - }); - - test(`extend delays the expiration`, async () => { - sessionTimeout.start(); - await nextTick(); - expect(http.fetch).toHaveBeenCalledTimes(1); - - const elapsed = 114 * 1000; - jest.advanceTimersByTime(elapsed); - expect(http.fetch).toHaveBeenCalledTimes(2); - expectIdleTimeoutWarningToast(notifications); - - const sessionInfo = { - now: now + elapsed, - idleTimeoutExpiration: now + elapsed + 2 * 60 * 1000, - lifespanExpiration: null, - provider: { type: 'basic', name: 'basic1' }, - }; - http.fetch.mockResolvedValue(sessionInfo); - await sessionTimeout.extend('/foo'); - expect(http.fetch).toHaveBeenCalledTimes(3); - // eslint-disable-next-line dot-notation - expect(sessionTimeout['sessionInfo']).toEqual(sessionInfo); - - // at this point, the session is good for another 120 seconds - jest.advanceTimersByTime(114 * 1000); - expect(sessionExpired.logout).not.toHaveBeenCalled(); - - // because "extend" results in an async request and HTTP call, there is a slight delay when timers are updated - // so we need an extra 100ms of padding for this test to ensure that logout has been called - jest.advanceTimersByTime(1 * 1000 + 100); - expect(sessionExpired.logout).toHaveBeenCalled(); - }); - - test(`if the session timeout is shorter than 5 seconds, expire session immediately`, async () => { - http.fetch.mockResolvedValue({ - now, - idleTimeoutExpiration: now + 4 * 1000, - lifespanExpiration: null, - provider: { type: 'basic', name: 'basic1' }, - }); - sessionTimeout.start(); - await nextTick(); - - jest.advanceTimersByTime(0); - expect(sessionExpired.logout).toHaveBeenCalled(); - }); - - test(`'null' sessionTimeout never logs you out`, async () => { - http.fetch.mockResolvedValue({ now, idleTimeoutExpiration: null, lifespanExpiration: null }); - sessionTimeout.start(); - await nextTick(); - - jest.advanceTimersByTime(Number.MAX_VALUE); - expect(sessionExpired.logout).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/plugins/security/public/session/session_timeout.ts b/x-pack/plugins/security/public/session/session_timeout.ts new file mode 100644 index 0000000000000..7a23f1bb25ad2 --- /dev/null +++ b/x-pack/plugins/security/public/session/session_timeout.ts @@ -0,0 +1,330 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { BroadcastChannel as BroadcastChannelType } from 'broadcast-channel'; +import type { Subscription } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; +import { skip, tap, throttleTime } from 'rxjs/operators'; + +import type { + HttpFetchOptionsWithPath, + HttpSetup, + NotificationsSetup, + Toast, +} from 'src/core/public'; + +import { + SESSION_CHECK_MS, + SESSION_EXPIRATION_WARNING_MS, + SESSION_EXTENSION_THROTTLE_MS, + SESSION_GRACE_PERIOD_MS, + SESSION_ROUTE, +} from '../../common/constants'; +import type { SessionInfo } from '../../common/types'; +import { createSessionExpirationToast } from './session_expiration_toast'; +import type { ISessionExpired } from './session_expired'; + +export interface SessionState extends Pick { + lastExtensionTime: number; +} + +export class SessionTimeout { + private channel?: BroadcastChannelType; + + private isVisible = document.visibilityState !== 'hidden'; + private isFetchingSessionInfo = false; + private snoozedWarningState?: SessionState; + + private sessionState$ = new BehaviorSubject({ + lastExtensionTime: 0, + expiresInMs: null, + canBeExtended: false, + }); + private subscription?: Subscription; + + private warningToast?: Toast; + + private stopActivityMonitor?: Function; + private stopVisibilityMonitor?: Function; + private removeHttpInterceptor?: Function; + + private stopRefreshTimer?: Function; + private stopWarningTimer?: Function; + private stopLogoutTimer?: Function; + + constructor( + private notifications: NotificationsSetup, + private sessionExpired: ISessionExpired, + private http: HttpSetup, + private tenant: string + ) {} + + public async start() { + if (this.http.anonymousPaths.isAnonymous(window.location.pathname)) { + return; + } + + this.subscription = this.sessionState$ + .pipe(skip(1), throttleTime(1000), tap(this.toggleEventHandlers)) + .subscribe(this.resetTimers); + + // Subscribe to a broadcast channel for session timeout messages. + // This allows us to synchronize the UX across tabs and avoid repetitive API calls. + try { + const { BroadcastChannel } = await import('broadcast-channel'); + this.channel = new BroadcastChannel(`${this.tenant}/session_timeout`, { + webWorkerSupport: false, + }); + this.channel.onmessage = this.handleChannelMessage; + } catch (error) { + // eslint-disable-next-line no-console + console.warn( + `Failed to load broadcast channel. Session management will not be kept in sync when multiple tabs are loaded.`, + error + ); + } + + return this.fetchSessionInfo(); + } + + public stop() { + const nextState = { + lastExtensionTime: 0, + expiresInMs: null, + canBeExtended: false, + }; + this.toggleEventHandlers(nextState); + this.resetTimers(nextState); + this.subscription?.unsubscribe(); + this.channel?.close(); + } + + /** + * Event handler that receives session information from other browser tabs. + */ + private handleChannelMessage = (message: SessionState) => { + this.sessionState$.next(message); + }; + + /** + * HTTP request interceptor which ensures that API calls extend the session only if tab is + * visible. + */ + private handleHttpRequest = (fetchOptions: HttpFetchOptionsWithPath) => { + // Ignore requests to external URLs + if (fetchOptions.path.indexOf('://') !== -1 || fetchOptions.path.startsWith('//')) { + return; + } + + if (!fetchOptions.asSystemRequest) { + return { ...fetchOptions, asSystemRequest: !this.isVisible }; + } + }; + + /** + * Event handler that tracks user activity and extends the session if needed. + */ + private handleUserActivity = () => { + if (this.shouldExtend()) { + this.fetchSessionInfo(true); + } + }; + + /** + * Event handler that tracks page visibility. + */ + private handleVisibilityChange = (isVisible: boolean) => { + this.isVisible = isVisible; + if (isVisible) { + this.handleUserActivity(); + } + }; + + private resetTimers = ({ lastExtensionTime, expiresInMs }: SessionState) => { + this.stopRefreshTimer = this.stopRefreshTimer?.(); + this.stopWarningTimer = this.stopWarningTimer?.(); + this.stopLogoutTimer = this.stopLogoutTimer?.(); + + if (expiresInMs !== null) { + const logoutInMs = Math.max(expiresInMs - SESSION_GRACE_PERIOD_MS, 0); + + // Show warning before session expires. However, do not show warning again if previously + // dismissed. The snooze time is the expiration time that was remaining in the warning. + const showWarningInMs = Math.max( + logoutInMs - SESSION_EXPIRATION_WARNING_MS, + this.snoozedWarningState + ? this.snoozedWarningState.lastExtensionTime + + this.snoozedWarningState.expiresInMs! - + SESSION_GRACE_PERIOD_MS - + lastExtensionTime + : 0, + 0 + ); + + const fetchSessionInMs = showWarningInMs - SESSION_CHECK_MS; + + // Schedule logout when session is about to expire + this.stopLogoutTimer = startTimer(() => this.sessionExpired.logout(), logoutInMs); + + // Hide warning if session has been extended + if (showWarningInMs > 0) { + this.hideWarning(); + } + + // Schedule warning before session expires + if (showWarningInMs < logoutInMs) { + this.stopWarningTimer = startTimer(this.showWarning, showWarningInMs); + } + + // Refresh session info before showing warning + if (fetchSessionInMs > 0 && fetchSessionInMs < logoutInMs) { + this.stopRefreshTimer = startTimer(this.fetchSessionInfo, fetchSessionInMs); + } + } + }; + + private toggleEventHandlers = ({ expiresInMs, canBeExtended }: SessionState) => { + if (expiresInMs !== null) { + // Monitor activity if session can be extended + if (canBeExtended && !this.stopActivityMonitor) { + this.stopActivityMonitor = monitorActivity(this.handleUserActivity); + } + + // Intercept HTTP requests if session can expire + if (!this.removeHttpInterceptor) { + this.removeHttpInterceptor = this.http.intercept({ request: this.handleHttpRequest }); + } + + if (!this.stopVisibilityMonitor) { + this.stopVisibilityMonitor = monitorVisibility(this.handleVisibilityChange); + } + } else { + this.removeHttpInterceptor = this.removeHttpInterceptor?.(); + this.stopActivityMonitor = this.stopActivityMonitor?.(); + this.stopVisibilityMonitor = this.stopVisibilityMonitor?.(); + } + }; + + private shouldExtend() { + const { lastExtensionTime } = this.sessionState$.getValue(); + return ( + !this.isFetchingSessionInfo && + !this.warningToast && + Date.now() > lastExtensionTime + SESSION_EXTENSION_THROTTLE_MS + ); + } + + private fetchSessionInfo = async (extend = false) => { + this.isFetchingSessionInfo = true; + try { + const sessionInfo = await this.http.fetch(SESSION_ROUTE, { + method: extend ? 'POST' : 'GET', + asSystemRequest: !extend, + }); + if (sessionInfo) { + const { expiresInMs, canBeExtended } = sessionInfo; + const nextState: SessionState = { + lastExtensionTime: Date.now(), + expiresInMs, + canBeExtended, + }; + this.sessionState$.next(nextState); + if (this.channel) { + this.channel.postMessage(nextState); + } + return nextState; + } + } catch (error) { + // ignore + } finally { + this.isFetchingSessionInfo = false; + } + }; + + private showWarning = () => { + if (!this.warningToast) { + const onExtend = async () => { + const { canBeExtended } = this.sessionState$.getValue(); + if (canBeExtended) { + await this.fetchSessionInfo(true); + } + }; + const onClose = () => { + this.hideWarning(true); + return onExtend(); + }; + const toast = createSessionExpirationToast(this.sessionState$, onExtend, onClose); + this.warningToast = this.notifications.toasts.add(toast); + } + }; + + private hideWarning = (snooze = false) => { + if (this.warningToast) { + this.notifications.toasts.remove(this.warningToast); + this.warningToast = undefined; + if (snooze) { + this.snoozedWarningState = this.sessionState$.getValue(); + } + } + }; +} + +/** + * Starts a timer that uses a native `setTimeout` under the hood. When `timeout` is larger + * than the maximum supported one then method calls itself recursively as many times as needed. + * @param callback A function to be executed after the timer expires. + * @param timeout The time, in milliseconds the timer should wait before the specified function is + * executed. + * @returns Function to stop the timer. + */ +export function startTimer(callback: () => void, timeout: number, updater?: (id: number) => void) { + // Max timeout is the largest possible 32-bit signed integer or 2,147,483,647 or 0x7fffffff. + const maxTimeout = 0x7fffffff; + let timeoutID: number; + updater = updater ?? ((id: number) => (timeoutID = id)); + + updater( + timeout > maxTimeout + ? window.setTimeout(() => startTimer(callback, timeout - maxTimeout, updater), maxTimeout) + : window.setTimeout(callback, timeout) + ); + + return () => clearTimeout(timeoutID); +} + +/** + * Adds event handlers to the window object that track user activity. + * @param callback Function to be executed when user activity is detected. + * @returns Function to remove all event handlers from window. + */ +function monitorActivity(callback: () => void) { + const eventTypes = ['mousemove', 'mousedown', 'wheel', 'touchstart', 'keydown']; + for (const eventType of eventTypes) { + window.addEventListener(eventType, callback); + } + + return () => { + for (const eventType of eventTypes) { + window.removeEventListener(eventType, callback); + } + }; +} + +/** + * Adds event handlers to the document object that track page visibility. + * @param callback Function to be executed when page visibility changes. + * @returns Function to remove all event handlers from document. + */ +function monitorVisibility(callback: (isVisible: boolean) => void) { + const handleVisibilityChange = () => callback(document.visibilityState !== 'hidden'); + + document.addEventListener('visibilitychange', handleVisibilityChange); + + return () => { + document.removeEventListener('visibilitychange', handleVisibilityChange); + }; +} diff --git a/x-pack/plugins/security/public/session/session_timeout.tsx b/x-pack/plugins/security/public/session/session_timeout.tsx deleted file mode 100644 index 2288fce8d30af..0000000000000 --- a/x-pack/plugins/security/public/session/session_timeout.tsx +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { BroadcastChannel as BroadcastChannelType } from 'broadcast-channel'; - -import type { HttpSetup, NotificationsSetup, Toast, ToastInput } from 'src/core/public'; - -import type { SessionInfo } from '../../common/types'; -import type { ISessionExpired } from './session_expired'; -import { createToast as createIdleTimeoutToast } from './session_idle_timeout_warning'; -import { createToast as createLifespanToast } from './session_lifespan_warning'; - -/** - * Client session timeout is decreased by this number so that Kibana server - * can still access session content during logout request to properly clean - * user session up (invalidate access tokens, redirect to logout portal etc.). - */ -const GRACE_PERIOD_MS = 5 * 1000; - -/** - * Duration we'll normally display the warning toast - */ -const WARNING_MS = 60 * 1000; - -/** - * Current session info is checked this number of milliseconds before the - * warning toast shows. This will prevent the toast from being shown if the - * session has already been extended. - */ -const SESSION_CHECK_MS = 1000; - -/** - * Route to get session info and extend session expiration - */ -const SESSION_ROUTE = '/internal/security/session'; - -export interface ISessionTimeout { - start(): void; - stop(): void; - extend(url: string): void; -} - -export class SessionTimeout implements ISessionTimeout { - private channel?: BroadcastChannelType; - private sessionInfo?: SessionInfo; - private fetchTimer?: number; - private warningTimer?: number; - private expirationTimer?: number; - private warningToast?: Toast; - - constructor( - private notifications: NotificationsSetup, - private sessionExpired: ISessionExpired, - private http: HttpSetup, - private tenant: string - ) {} - - start() { - if (this.http.anonymousPaths.isAnonymous(window.location.pathname)) { - return; - } - - import('broadcast-channel') - .then(({ BroadcastChannel }) => { - // subscribe to a broadcast channel for session timeout messages - // this allows us to synchronize the UX across tabs and avoid repetitive API calls - const name = `${this.tenant}/session_timeout`; - this.channel = new BroadcastChannel(name, { webWorkerSupport: false }); - this.channel.onmessage = this.handleSessionInfoAndResetTimers; - }) - .catch((e) => { - // eslint-disable-next-line no-console - console.warn( - `Failed to load broadcast channel. Session management will not be kept in sync when multiple tabs are loaded.`, - e - ); - }) - .finally(() => { - // Triggers an initial call to the endpoint to get session info; - // when that returns, it will set the timeout - return this.fetchSessionInfoAndResetTimers(); - }); - } - - stop() { - if (this.channel) { - this.channel.close(); - } - this.cleanup(); - } - - /** - * When the user makes an authenticated, non-system API call, this function is used to check - * and see if the session has been extended. - * @param url The URL that was called - */ - extend(url: string) { - // avoid an additional API calls when the user clicks the button on the session idle timeout - if (url.endsWith(SESSION_ROUTE)) { - return; - } - - const { isLifespanTimeout } = this.getTimeout(); - if (this.warningToast && !isLifespanTimeout) { - // the idle timeout warning is currently showing and the user has clicked elsewhere on the page; - // make a new call to get the latest session info - return this.fetchSessionInfoAndResetTimers(); - } - } - - /** - * Fetch latest session information from the server, and optionally attempt to extend - * the session expiration. - */ - private fetchSessionInfoAndResetTimers = async (extend = false) => { - const method = extend ? 'POST' : 'GET'; - try { - const result = await this.http.fetch(SESSION_ROUTE, { method, asSystemRequest: !extend }); - - this.handleSessionInfoAndResetTimers(result); - - // share this updated session info with any other tabs to sync the UX - if (this.channel) { - this.channel.postMessage(result); - } - } catch (err) { - // do nothing; 401 errors will be caught by the http interceptor - } - }; - - /** - * Processes latest session information, and resets timers based on it. These timers are - * used to trigger an HTTP call for updated session information, to show a timeout - * warning, and to log the user out when their session is expired. - */ - private handleSessionInfoAndResetTimers = (sessionInfo: SessionInfo) => { - this.sessionInfo = sessionInfo; - // save the provider name in session storage, we will need it when we log out - const key = `${this.tenant}/session_provider`; - sessionStorage.setItem(key, sessionInfo.provider.name); - - const { timeout, isLifespanTimeout } = this.getTimeout(); - if (timeout == null) { - return; - } - - this.cleanup(); - - // set timers - const timeoutVal = timeout - WARNING_MS - GRACE_PERIOD_MS - SESSION_CHECK_MS; - if (timeoutVal > 0 && !isLifespanTimeout) { - // we should check for the latest session info before the warning displays - this.startTimer( - (timeoutID) => (this.fetchTimer = timeoutID), - this.fetchSessionInfoAndResetTimers, - timeoutVal - ); - } - - this.startTimer( - (timeoutID) => (this.warningTimer = timeoutID), - this.showWarning, - Math.max(timeout - WARNING_MS - GRACE_PERIOD_MS, 0) - ); - - this.startTimer( - (timeoutID) => (this.expirationTimer = timeoutID), - () => this.sessionExpired.logout(), - Math.max(timeout - GRACE_PERIOD_MS, 0) - ); - }; - - private cleanup = () => { - if (this.fetchTimer) { - window.clearTimeout(this.fetchTimer); - } - if (this.warningTimer) { - window.clearTimeout(this.warningTimer); - } - if (this.expirationTimer) { - window.clearTimeout(this.expirationTimer); - } - if (this.warningToast) { - this.notifications.toasts.remove(this.warningToast); - this.warningToast = undefined; - } - }; - - /** - * Get the amount of time until the session times out, and whether or not the - * session has reached it maximum lifespan. - */ - private getTimeout = (): { timeout: number | null; isLifespanTimeout: boolean } => { - let timeout = null; - let isLifespanTimeout = false; - if (this.sessionInfo) { - const { now, idleTimeoutExpiration, lifespanExpiration } = this.sessionInfo; - if (idleTimeoutExpiration) { - timeout = idleTimeoutExpiration - now; - } - if ( - lifespanExpiration && - (idleTimeoutExpiration === null || lifespanExpiration <= idleTimeoutExpiration) - ) { - timeout = lifespanExpiration - now; - isLifespanTimeout = true; - } - } - return { timeout, isLifespanTimeout }; - }; - - /** - * Show a warning toast depending on the session state. - */ - private showWarning = () => { - const { timeout, isLifespanTimeout } = this.getTimeout(); - const toastLifeTimeMs = Math.min(timeout! - GRACE_PERIOD_MS, WARNING_MS); - let toast: ToastInput; - if (!isLifespanTimeout) { - const refresh = () => this.fetchSessionInfoAndResetTimers(true); - toast = createIdleTimeoutToast(toastLifeTimeMs, refresh); - } else { - toast = createLifespanToast(toastLifeTimeMs); - } - this.warningToast = this.notifications.toasts.add(toast); - }; - - /** - * Starts a timer that uses a native `setTimeout` under the hood. When `timeout` is larger - * than the maximum supported one then method calls itself recursively as many times as needed. - * @param updater Method that is supposed to update a reference to a native timer ID that can be - * used with native `clearTimeout`. It's essential for the larger timeouts when `setTimeout` is - * called multiple times and timer ID changes. - * when timer ID changes - * @param callback A function to be executed after the timer expires. - * @param timeout The time, in milliseconds the timer should wait before the specified function is - * executed. - */ - private startTimer(updater: (timeoutID: number) => void, callback: () => void, timeout: number) { - // Max timeout is the largest possible 32-bit signed integer or 2,147,483,647 or 0x7fffffff. - const maxTimeout = 0x7fffffff; - updater( - timeout > maxTimeout - ? window.setTimeout( - () => this.startTimer(updater, callback, timeout - maxTimeout), - maxTimeout - ) - : window.setTimeout(callback, timeout) - ); - } -} diff --git a/x-pack/plugins/security/public/session/session_timeout_http_interceptor.test.ts b/x-pack/plugins/security/public/session/session_timeout_http_interceptor.test.ts deleted file mode 100644 index 4f216d331c3f2..0000000000000 --- a/x-pack/plugins/security/public/session/session_timeout_http_interceptor.test.ts +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -// @ts-ignore -import fetchMock from 'fetch-mock/es5/client'; - -import { setup } from 'src/core/test_helpers/http_test_setup'; - -import { createSessionTimeoutMock } from './session_timeout.mock'; -import { SessionTimeoutHttpInterceptor } from './session_timeout_http_interceptor'; - -const mockCurrentUrl = (url: string) => window.history.pushState({}, '', url); - -const setupHttp = (basePath: string) => { - const { http } = setup((injectedMetadata) => { - injectedMetadata.getBasePath.mockReturnValue(basePath); - }); - return http; -}; - -afterEach(() => { - fetchMock.restore(); -}); - -describe('response', () => { - test('extends session timeouts', async () => { - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, http.anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', 200); - - await http.fetch('/foo-api'); - - expect(sessionTimeoutMock.extend).toHaveBeenCalled(); - }); - - test(`doesn't extend session timeouts for anonymous paths`, async () => { - mockCurrentUrl('/foo/bar'); - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const { anonymousPaths } = http; - anonymousPaths.register('/bar'); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', 200); - - await http.fetch('/foo-api'); - - expect(sessionTimeoutMock.extend).not.toHaveBeenCalled(); - }); - - test(`doesn't extend session timeouts for system api requests`, async () => { - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, http.anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', 200); - - await http.fetch('/foo-api', { asSystemRequest: true }); - - expect(sessionTimeoutMock.extend).not.toHaveBeenCalled(); - }); -}); - -describe('responseError', () => { - test('extends session timeouts', async () => { - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, http.anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', 401); - - await expect(http.fetch('/foo-api')).rejects.toMatchInlineSnapshot(`[Error: Unauthorized]`); - - expect(sessionTimeoutMock.extend).toHaveBeenCalled(); - }); - - test(`doesn't extend session timeouts for anonymous paths`, async () => { - mockCurrentUrl('/foo/bar'); - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const { anonymousPaths } = http; - anonymousPaths.register('/bar'); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', 401); - - await expect(http.fetch('/foo-api')).rejects.toMatchInlineSnapshot(`[Error: Unauthorized]`); - - expect(sessionTimeoutMock.extend).not.toHaveBeenCalled(); - }); - - test(`doesn't extend session timeouts for system api requests`, async () => { - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, http.anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', 401); - - await expect(http.fetch('/foo-api', { asSystemRequest: true })).rejects.toMatchInlineSnapshot( - `[Error: Unauthorized]` - ); - - expect(sessionTimeoutMock.extend).not.toHaveBeenCalled(); - }); - - test(`doesn't extend session timeouts when there is no response`, async () => { - const http = setupHttp('/foo'); - const sessionTimeoutMock = createSessionTimeoutMock(); - const interceptor = new SessionTimeoutHttpInterceptor(sessionTimeoutMock, http.anonymousPaths); - http.intercept(interceptor); - fetchMock.mock('*', new Promise((resolve, reject) => reject(new Error('Network is down')))); - - await expect(http.fetch('/foo-api')).rejects.toMatchInlineSnapshot(`[Error: Network is down]`); - - expect(sessionTimeoutMock.extend).not.toHaveBeenCalled(); - }); -}); diff --git a/x-pack/plugins/security/public/session/session_timeout_http_interceptor.ts b/x-pack/plugins/security/public/session/session_timeout_http_interceptor.ts deleted file mode 100644 index 6fc7fb88578ff..0000000000000 --- a/x-pack/plugins/security/public/session/session_timeout_http_interceptor.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - HttpInterceptor, - HttpInterceptorResponseError, - HttpResponse, - IAnonymousPaths, -} from 'src/core/public'; - -import type { ISessionTimeout } from './session_timeout'; - -export class SessionTimeoutHttpInterceptor implements HttpInterceptor { - constructor(private sessionTimeout: ISessionTimeout, private anonymousPaths: IAnonymousPaths) {} - - response(httpResponse: HttpResponse) { - if (this.anonymousPaths.isAnonymous(window.location.pathname)) { - return; - } - - if (httpResponse.fetchOptions.asSystemRequest) { - return; - } - - this.sessionTimeout.extend(httpResponse.request.url); - } - - responseError(httpErrorResponse: HttpInterceptorResponseError) { - if (this.anonymousPaths.isAnonymous(window.location.pathname)) { - return; - } - - if (httpErrorResponse.fetchOptions.asSystemRequest) { - return; - } - - // if we happen to not have a response, for example if there is no - // network connectivity, we won't extend the session because there - // won't be a response with a set-cookie header, which is required - // to extend the session - const { response } = httpErrorResponse; - if (!response) { - return; - } - - this.sessionTimeout.extend(httpErrorResponse.request.url); - } -} diff --git a/x-pack/plugins/security/server/routes/session_management/info.test.ts b/x-pack/plugins/security/server/routes/session_management/info.test.ts index 29c0865b8c561..4c420f3b14346 100644 --- a/x-pack/plugins/security/server/routes/session_management/info.test.ts +++ b/x-pack/plugins/security/server/routes/session_management/info.test.ts @@ -10,6 +10,7 @@ import type { RequestHandler, RouteConfig } from 'src/core/server'; import { kibanaResponseFactory } from 'src/core/server'; import { httpServerMock } from 'src/core/server/mocks'; +import { SESSION_EXPIRATION_WARNING_MS } from '../../../common/constants'; import type { Session } from '../../session_management'; import { sessionMock } from '../../session_management/session.mock'; import type { SecurityRequestHandlerContext, SecurityRouter } from '../../types'; @@ -29,7 +30,7 @@ describe('Info session routes', () => { defineSessionInfoRoutes(routeParamsMock); }); - describe('extend session', () => { + describe('session info', () => { let routeHandler: RequestHandler; let routeConfig: RouteConfig; beforeEach(() => { @@ -63,30 +64,94 @@ describe('Info session routes', () => { }); it('returns session info.', async () => { - session.get.mockResolvedValue( - sessionMock.createValue({ idleTimeoutExpiration: 100, lifespanExpiration: 200 }) - ); - + const now = 1000; const dateSpy = jest.spyOn(Date, 'now'); - dateSpy.mockReturnValue(1234); - - const expectedBody = { - now: 1234, - provider: { type: 'basic', name: 'basic1' }, - idleTimeoutExpiration: 100, - lifespanExpiration: 200, - }; - await expect( - routeHandler( - ({} as unknown) as SecurityRequestHandlerContext, - httpServerMock.createKibanaRequest(), - kibanaResponseFactory - ) - ).resolves.toEqual({ - status: 200, - payload: expectedBody, - options: { body: expectedBody }, - }); + dateSpy.mockReturnValue(now); + + const assertions = [ + [ + { + idleTimeoutExpiration: 100 + now, + lifespanExpiration: 200 + SESSION_EXPIRATION_WARNING_MS + now, + }, + { + canBeExtended: true, + expiresInMs: 100, + }, + ], + [ + { + idleTimeoutExpiration: 100 + now, + lifespanExpiration: 200 + now, + }, + { + canBeExtended: false, + expiresInMs: 100, + }, + ], + [ + { + idleTimeoutExpiration: 200 + now, + lifespanExpiration: 100 + now, + }, + { + canBeExtended: false, + expiresInMs: 100, + }, + ], + [ + { + idleTimeoutExpiration: null, + lifespanExpiration: 100 + now, + }, + { + canBeExtended: false, + expiresInMs: 100, + }, + ], + [ + { + idleTimeoutExpiration: 100 + now, + lifespanExpiration: null, + }, + { + canBeExtended: true, + expiresInMs: 100, + }, + ], + [ + { + idleTimeoutExpiration: null, + lifespanExpiration: null, + }, + { + canBeExtended: false, + expiresInMs: null, + }, + ], + ]; + + for (const [sessionInfo, expected] of assertions) { + session.get.mockResolvedValue(sessionMock.createValue(sessionInfo)); + + const expectedBody = { + canBeExtended: expected.canBeExtended, + expiresInMs: expected.expiresInMs, + provider: { type: 'basic', name: 'basic1' }, + }; + + await expect( + routeHandler( + ({} as unknown) as SecurityRequestHandlerContext, + httpServerMock.createKibanaRequest(), + kibanaResponseFactory + ) + ).resolves.toEqual({ + status: 200, + payload: expectedBody, + options: { body: expectedBody }, + }); + } }); it('returns empty response if session is not available.', async () => { diff --git a/x-pack/plugins/security/server/routes/session_management/info.ts b/x-pack/plugins/security/server/routes/session_management/info.ts index cfd76bb8abbc0..b141f42c4b072 100644 --- a/x-pack/plugins/security/server/routes/session_management/info.ts +++ b/x-pack/plugins/security/server/routes/session_management/info.ts @@ -6,6 +6,7 @@ */ import type { RouteDefinitionParams } from '../'; +import { SESSION_EXPIRATION_WARNING_MS } from '../../../common/constants'; import type { SessionInfo } from '../../../common/types'; /** @@ -17,13 +18,19 @@ export function defineSessionInfoRoutes({ router, getSession }: RouteDefinitionP async (_context, request, response) => { const sessionValue = await getSession().get(request); if (sessionValue) { + const expirationTime = + sessionValue.idleTimeoutExpiration && sessionValue.lifespanExpiration + ? Math.min(sessionValue.idleTimeoutExpiration, sessionValue.lifespanExpiration) + : sessionValue.idleTimeoutExpiration || sessionValue.lifespanExpiration; + return response.ok({ body: { - // We can't rely on the client's system clock, so in addition to returning expiration timestamps, we also return - // the current server time -- that way the client can calculate the relative time to expiration. - now: Date.now(), - idleTimeoutExpiration: sessionValue.idleTimeoutExpiration, - lifespanExpiration: sessionValue.lifespanExpiration, + expiresInMs: expirationTime ? expirationTime - Date.now() : null, + canBeExtended: + sessionValue.idleTimeoutExpiration !== null && + expirationTime !== null && + (sessionValue.lifespanExpiration === null || + expirationTime + SESSION_EXPIRATION_WARNING_MS < sessionValue.lifespanExpiration), provider: sessionValue.provider, } as SessionInfo, }); diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index ec4824a763050..5c0dd9d672bfe 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18751,11 +18751,6 @@ "xpack.security.checkup.insecureClusterMessage": "1 ビットを失わないでください。無料のセキュリティ機能を有効にしてください。", "xpack.security.checkup.insecureClusterTitle": "データが保護されていません", "xpack.security.common.extendedRoleDeprecationNotice": "{roleName} ロールは非推奨です。{reason}", - "xpack.security.components.sessionIdleTimeoutWarning.message": "操作がないため間もなくログアウト{timeout}します。再開するには [OK] をクリックしてください。", - "xpack.security.components.sessionIdleTimeoutWarning.okButtonText": "OK", - "xpack.security.components.sessionIdleTimeoutWarning.title": "警告", - "xpack.security.components.sessionLifespanWarning.message": "セッションは最大時間制限{timeout}に達しました。もう一度ログインする必要があります。", - "xpack.security.components.sessionLifespanWarning.title": "警告", "xpack.security.conflictingSessionError": "申し訳ありません。すでに有効なKibanaセッションがあります。新しいセッションを開始する場合は、先に既存のセッションからログアウトしてください。", "xpack.security.copyTokenField.copyButton": "クリップボードにコピー", "xpack.security.copyTokenField.tokenLabel": "トークン", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 0f13968ef02d8..ea9340fd9a2a5 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -19008,11 +19008,6 @@ "xpack.security.checkup.insecureClusterMessage": "切勿丢下任何一位。启用我们的免费安全功能。", "xpack.security.checkup.insecureClusterTitle": "您的数据并非安全无忧", "xpack.security.common.extendedRoleDeprecationNotice": "{roleName} 角色已弃用。 {reason}", - "xpack.security.components.sessionIdleTimeoutWarning.message": "由于不活动,您会在 {timeout} 后自动注销。单击“确定”可以恢复。", - "xpack.security.components.sessionIdleTimeoutWarning.okButtonText": "确定", - "xpack.security.components.sessionIdleTimeoutWarning.title": "警告", - "xpack.security.components.sessionLifespanWarning.message": "您的会话将达到最大时间限制 {timeout}。您将需要重新登录。", - "xpack.security.components.sessionLifespanWarning.title": "警告", "xpack.security.conflictingSessionError": "抱歉,您已有活动的 Kibana 会话。如果希望开始新的会话,请首先从现有会话注销。", "xpack.security.copyTokenField.copyButton": "复制到剪贴板", "xpack.security.copyTokenField.tokenLabel": "令牌", diff --git a/x-pack/test/security_api_integration/tests/session_idle/extension.ts b/x-pack/test/security_api_integration/tests/session_idle/extension.ts index dfd72dae82346..71621f4e3db8a 100644 --- a/x-pack/test/security_api_integration/tests/session_idle/extension.ts +++ b/x-pack/test/security_api_integration/tests/session_idle/extension.ts @@ -59,17 +59,15 @@ export default function ({ getService }: FtrProviderContext) { describe('GET /internal/security/session', () => { it('should return current session information', async () => { const { body } = await getSessionInfo(); - expect(body.now).to.be.a('number'); - expect(body.idleTimeoutExpiration).to.be.a('number'); - expect(body.lifespanExpiration).to.be(null); + expect(body.expiresInMs).to.be.a('number'); + expect(body.canBeExtended).to.be(true); expect(body.provider).to.eql({ type: 'basic', name: 'basic1' }); }); it('should not extend the session', async () => { const { body } = await getSessionInfo(); const { body: body2 } = await getSessionInfo(); - expect(body2.now).to.be.greaterThan(body.now); - expect(body2.idleTimeoutExpiration).to.equal(body.idleTimeoutExpiration); + expect(body2.expiresInMs).to.be.lessThan(body.expiresInMs); }); }); @@ -85,8 +83,7 @@ export default function ({ getService }: FtrProviderContext) { const { body } = await getSessionInfo(); await extendSession(); const { body: body2 } = await getSessionInfo(); - expect(body2.now).to.be.greaterThan(body.now); - expect(body2.idleTimeoutExpiration).to.be.greaterThan(body.idleTimeoutExpiration); + expect(body2.expiresInMs).not.to.be.lessThan(body.expiresInMs); }); }); }); From 43f4bdf2bf8dd37b3f1c2140fd9fc081ca0642f8 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Wed, 12 May 2021 12:40:48 -0400 Subject: [PATCH 047/144] Correct types on CodeEditor (#99844) --- src/plugins/kibana_react/public/code_editor/code_editor.tsx | 6 +++--- src/plugins/kibana_react/public/code_editor/index.tsx | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/kibana_react/public/code_editor/code_editor.tsx b/src/plugins/kibana_react/public/code_editor/code_editor.tsx index 51344e2d28ab6..55e10e7861e51 100644 --- a/src/plugins/kibana_react/public/code_editor/code_editor.tsx +++ b/src/plugins/kibana_react/public/code_editor/code_editor.tsx @@ -34,14 +34,14 @@ export interface Props { value: string; /** Function invoked when text in editor is changed */ - onChange: (value: string) => void; + onChange: (value: string, event: monaco.editor.IModelContentChangedEvent) => void; /** * Options for the Monaco Code Editor * Documentation of options can be found here: - * https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.ieditorconstructionoptions.html + * https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandaloneeditorconstructionoptions.html */ - options?: monaco.editor.IEditorConstructionOptions; + options?: monaco.editor.IStandaloneEditorConstructionOptions; /** * Suggestion provider for autocompletion diff --git a/src/plugins/kibana_react/public/code_editor/index.tsx b/src/plugins/kibana_react/public/code_editor/index.tsx index 635e84b1d8c20..2440974c3b1d1 100644 --- a/src/plugins/kibana_react/public/code_editor/index.tsx +++ b/src/plugins/kibana_react/public/code_editor/index.tsx @@ -16,7 +16,7 @@ import { import darkTheme from '@elastic/eui/dist/eui_theme_dark.json'; import lightTheme from '@elastic/eui/dist/eui_theme_light.json'; import { useUiSetting } from '../ui_settings'; -import type { Props } from './code_editor'; +import { Props } from './code_editor'; const LazyBaseEditor = React.lazy(() => import('./code_editor')); @@ -26,6 +26,8 @@ const Fallback = () => ( ); +export type CodeEditorProps = Props; + /** * Renders a Monaco code editor with EUI color theme. * From 6f819638bab72e720d4e4e2c23330482984af515 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 12 May 2021 17:50:03 +0100 Subject: [PATCH 048/144] chore(NA): upgrade bazel rules nodejs to v3.5.0 (#99932) --- WORKSPACE.bazel | 6 +++--- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index d334d7979ed59..60af851ff2dc6 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -10,15 +10,15 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Fetch Node.js rules http_archive( name = "build_bazel_rules_nodejs", - sha256 = "65067dcad93a61deb593be7d3d9a32a4577d09665536d8da536d731da5cd15e2", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.4.2/rules_nodejs-3.4.2.tar.gz"], + sha256 = "10f534e1c80f795cffe1f2822becd4897754d18564612510c59b3c73544ae7c6", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.5.0/rules_nodejs-3.5.0.tar.gz"], ) # Now that we have the rules let's import from them to complete the work load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "yarn_install") # Assure we have at least a given rules_nodejs version -check_rules_nodejs_version(minimum_version_string = "3.4.2") +check_rules_nodejs_version(minimum_version_string = "3.5.0") # Setup the Node.js toolchain for the architectures we want to support # diff --git a/package.json b/package.json index 28db2c5e94de1..deb386f49c854 100644 --- a/package.json +++ b/package.json @@ -431,7 +431,7 @@ "@babel/traverse": "^7.12.12", "@babel/types": "^7.12.12", "@bazel/ibazel": "^0.15.10", - "@bazel/typescript": "^3.4.2", + "@bazel/typescript": "^3.5.0", "@cypress/snapshot": "^2.1.7", "@cypress/webpack-preprocessor": "^5.6.0", "@elastic/apm-rum": "^5.6.1", diff --git a/yarn.lock b/yarn.lock index 8c77a66cbf22b..0c05610667387 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1204,10 +1204,10 @@ resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.15.10.tgz#cf0cff1aec6d8e7bb23e1fc618d09fbd39b7a13f" integrity sha512-0v+OwCQ6fsGFa50r6MXWbUkSGuWOoZ22K4pMSdtWiL5LKFIE4kfmMmtQS+M7/ICNwk2EIYob+NRreyi/DGUz5A== -"@bazel/typescript@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-3.4.2.tgz#183cb14d1f4149cc67ed2723c4b8a7366da5ec36" - integrity sha512-JtLdPOC7rytALJBxawxTCnxVopGstk2eXFs56zHBy+JWSeqrnwujeWZyK5qZHzpag02/JtIQ/ZKkM/DQtrXC8Q== +"@bazel/typescript@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-3.5.0.tgz#605493f4f0a5297df8a7fcccb86a1a80ea2090bb" + integrity sha512-BtGFp4nYFkQTmnONCzomk7dkmOwaINBL3piq+lykBlcc6UxLe9iCAnZpOyPypB1ReN3k3SRNAa53x6oGScQxMg== dependencies: protobufjs "6.8.8" semver "5.6.0" From 3c282fa977301a4fc0cfa629cf8ee4be167ae4a3 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Wed, 12 May 2021 12:05:20 -0500 Subject: [PATCH 049/144] [kbn-crypto] Fix typo in package name (#99935) --- packages/kbn-crypto/BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kbn-crypto/BUILD.bazel b/packages/kbn-crypto/BUILD.bazel index 8f55f0e0f06a7..14e292c056db6 100644 --- a/packages/kbn-crypto/BUILD.bazel +++ b/packages/kbn-crypto/BUILD.bazel @@ -2,7 +2,7 @@ load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") -PKG_BASE_NAME = "kbn-cypto" +PKG_BASE_NAME = "kbn-crypto" PKG_REQUIRE_NAME = "@kbn/crypto" SOURCE_FILES = glob( From 6abce78d150b7f7989e84448ab76ff194af99566 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Wed, 12 May 2021 11:02:55 -0700 Subject: [PATCH 050/144] Change Snapshot and Restore doc link to point to the Kibana docs. (#99850) --- src/core/public/doc_links/doc_links_service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index 2a202a426c16c..b2eec43cc5ad7 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -347,7 +347,7 @@ export class DocLinksService { snapshotRestoreRepos: `${PLUGIN_DOCS}repository.html`, }, snapshotRestore: { - guide: `${ELASTICSEARCH_DOCS}snapshot-restore.html`, + guide: `${KIBANA_DOCS}snapshot-repositories.html`, changeIndexSettings: `${ELASTICSEARCH_DOCS}snapshots-restore-snapshot.html#change-index-settings-during-restore`, createSnapshot: `${ELASTICSEARCH_DOCS}snapshots-take-snapshot.html`, registerSharedFileSystem: `${ELASTICSEARCH_DOCS}snapshots-register-repository.html#snapshots-filesystem-repository`, From e99cfb5c0ba40efe0e9e1a52b3686fc8760d4160 Mon Sep 17 00:00:00 2001 From: Quynh Nguyen <43350163+qn895@users.noreply.github.com> Date: Wed, 12 May 2021 13:15:52 -0500 Subject: [PATCH 051/144] [ML] Stabilize anomaly chart embeddable tests (#99955) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../services/ml/dashboard_embeddables.ts | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/x-pack/test/functional/services/ml/dashboard_embeddables.ts b/x-pack/test/functional/services/ml/dashboard_embeddables.ts index db5c3f35a2e14..03b69854744d4 100644 --- a/x-pack/test/functional/services/ml/dashboard_embeddables.ts +++ b/x-pack/test/functional/services/ml/dashboard_embeddables.ts @@ -35,46 +35,40 @@ export function MachineLearningDashboardEmbeddablesProvider( async assertSelectMaxSeriesToPlotValue(expectedValue: number) { const subj = 'mlAnomalyChartsInitializerMaxSeries'; - await testSubjects.existOrFail(subj); - const input = await testSubjects.find(subj); - const actualValue = await input.getAttribute('value'); - - expect(actualValue).to.eql( - expectedValue, - `Expected max series to plot value to be ${expectedValue}, got ${actualValue}` - ); - }, - - async assertPanelTitle(expectedValue: string) { - const actualValue = await testSubjects.getAttribute('panelTitleInput', 'value'); - expect(actualValue).to.eql( - expectedValue, - `Panel title should be '${expectedValue}' (got '${actualValue}')` - ); - }, - - async setPanelTitle(panelTitle: string) { - await mlCommonUI.setValueWithChecks('panelTitleInput', panelTitle, { - clearWithKeyboard: true, + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail(subj); + const input = await testSubjects.find(subj); + const actualValue = await input.getAttribute('value'); + + expect(actualValue).to.eql( + expectedValue, + `Expected max series to plot value to be ${expectedValue}, got ${actualValue}` + ); }); - await this.assertPanelTitle(panelTitle); }, async assertInitializerConfirmButtonEnabled() { const subj = 'mlAnomalyChartsInitializerConfirmButton'; - await testSubjects.existOrFail(subj); - await testSubjects.isEnabled(subj); + + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail(subj); + await testSubjects.isEnabled(subj); + }); }, async clickInitializerConfirmButtonEnabled() { const subj = 'mlAnomalyChartsInitializerConfirmButton'; - await this.assertInitializerConfirmButtonEnabled(); - await testSubjects.clickWhenNotDisabled(subj); - await this.assertAnomalyChartsEmbeddableInitializerNotExists(); + await retry.tryForTime(60 * 1000, async () => { + await this.assertInitializerConfirmButtonEnabled(); + await testSubjects.clickWhenNotDisabled(subj); + await this.assertAnomalyChartsEmbeddableInitializerNotExists(); + }); }, async assertDashboardIsEmpty() { - await testSubjects.existOrFail('emptyDashboardWidget'); + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail('emptyDashboardWidget'); + }); }, async assertDashboardPanelExists(title: string) { @@ -84,15 +78,21 @@ export function MachineLearningDashboardEmbeddablesProvider( }, async assertAnomalyChartsSeverityThresholdControlExists() { - await testSubjects.existOrFail(`mlAnomalySeverityThresholdControls`); + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail(`mlAnomalySeverityThresholdControls`); + }); }, async assertNoMatchingAnomaliesMessageExists() { - await testSubjects.existOrFail(`mlNoMatchingAnomaliesMessage`); + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail(`mlNoMatchingAnomaliesMessage`); + }); }, async assertAnomalyChartsExists() { - await testSubjects.existOrFail(`mlExplorerChartsContainer`); + await retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail(`mlExplorerChartsContainer`); + }); }, async openJobSelectionFlyout() { From 98fa1b58f5f913373e9b2a1f621945462ac564f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Casper=20H=C3=BCbertz?= Date: Wed, 12 May 2021 20:25:06 +0200 Subject: [PATCH 052/144] [APM] Changing the palette and opacity (#99908) --- .../shared/time_comparison/get_time_range_comparison.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts b/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts index 025e8c2a9935d..67c27308e6658 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/get_time_range_comparison.ts @@ -19,9 +19,9 @@ export function getComparisonChartTheme(theme: EuiTheme) { return { areaSeriesStyle: { area: { - fill: theme.eui.euiColorLightestShade, + fill: theme.eui.euiColorLightShade, visible: true, - opacity: 1, + opacity: 0.5, }, line: { stroke: theme.eui.euiColorMediumShade, From e3f0afa4e0e3d5ecf5c5a4eb954559130cd71d11 Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Wed, 12 May 2021 15:21:22 -0400 Subject: [PATCH 053/144] Move functional tests off of legacy es client. (#99801) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/test/api_integration/apis/uptime/rest/certs.ts | 4 ++-- .../api_integration/apis/uptime/rest/helper/make_checks.ts | 7 ++++--- .../apis/uptime/rest/monitor_states_generated.ts | 6 +++--- x-pack/test/api_integration/apis/uptime/rest/snapshot.ts | 2 +- .../apis/uptime/rest/telemetry_collectors.ts | 2 +- x-pack/test/functional/apps/uptime/locations.ts | 2 +- x-pack/test/functional/apps/uptime/ping_redirects.ts | 2 +- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/x-pack/test/api_integration/apis/uptime/rest/certs.ts b/x-pack/test/api_integration/apis/uptime/rest/certs.ts index 76be0af03e908..d7c0a4eed4a72 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/certs.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/certs.ts @@ -15,7 +15,7 @@ import { makeChecksWithStatus } from './helper/make_checks'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const legacyEsService = getService('legacyEs'); + const esService = getService('es'); const esArchiver = getService('esArchiver'); describe('certs api', () => { @@ -33,7 +33,7 @@ export default function ({ getService }: FtrProviderContext) { const monitorId = 'monitor1'; before(async () => { makeChecksWithStatus( - legacyEsService, + esService, monitorId, 3, 1, diff --git a/x-pack/test/api_integration/apis/uptime/rest/helper/make_checks.ts b/x-pack/test/api_integration/apis/uptime/rest/helper/make_checks.ts index 829ae07eccf20..51338d2bb6e03 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/helper/make_checks.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/helper/make_checks.ts @@ -7,11 +7,12 @@ import uuid from 'uuid'; import { merge, flattenDeep } from 'lodash'; +import { KibanaClient } from '@elastic/elasticsearch/api/kibana'; import { makePing } from './make_ping'; import { TlsProps } from './make_tls'; interface CheckProps { - es: any; + es: KibanaClient; monitorId?: string; numIps?: number; fields?: { [key: string]: any }; @@ -76,7 +77,7 @@ export const makeCheck = async ({ }; export const makeChecks = async ( - es: any, + es: KibanaClient, monitorId: string, numChecks: number = 1, numIps: number = 1, @@ -121,7 +122,7 @@ export const makeChecks = async ( }; export const makeChecksWithStatus = async ( - es: any, + es: KibanaClient, monitorId: string, numChecks: number, numIps: number, diff --git a/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts b/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts index abd3c5d51928b..5268a2146d123 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts @@ -36,7 +36,7 @@ export default function ({ getService }: FtrProviderContext) { describe('checks with no summaries', async () => { const testMonitorId = 'scope-test-id'; before(async () => { - const es = getService('legacyEs'); + const es = getService('es'); dateRangeStart = new Date().toISOString(); await makeChecksWithStatus(es, testMonitorId, 1, numIps, 1, {}, 'up', (d) => { delete d.summary; @@ -64,7 +64,7 @@ export default function ({ getService }: FtrProviderContext) { }; before(async () => { - const es = getService('legacyEs'); + const es = getService('es'); dateRangeStart = new Date().toISOString(); checks = await makeChecksWithStatus(es, testMonitorId, 1, numIps, 1, {}, 'up', (d) => { // turn an all up status into having at least one down @@ -141,7 +141,7 @@ export default function ({ getService }: FtrProviderContext) { before('generate three monitors with up, down, mix state', async () => { await getService('esArchiver').load('uptime/blank'); - const es = getService('legacyEs'); + const es = getService('es'); const observer = { geo: { diff --git a/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts b/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts index 7a5487c611612..358e667bcb05b 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts @@ -52,7 +52,7 @@ export default function ({ getService }: FtrProviderContext) { const makeMonitorChecks = async (monitorId: string, status: 'up' | 'down') => { return makeChecksWithStatus( - getService('legacyEs'), + getService('es'), monitorId, checksPerMonitor, numIps, diff --git a/x-pack/test/api_integration/apis/uptime/rest/telemetry_collectors.ts b/x-pack/test/api_integration/apis/uptime/rest/telemetry_collectors.ts index f0f7a520d098a..fd8894d7e9164 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/telemetry_collectors.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/telemetry_collectors.ts @@ -12,7 +12,7 @@ import { makeChecksWithStatus } from './helper/make_checks'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('telemetry collectors heartbeat', () => { before('generating data', async () => { diff --git a/x-pack/test/functional/apps/uptime/locations.ts b/x-pack/test/functional/apps/uptime/locations.ts index e3f1d04640754..1e71607845ea4 100644 --- a/x-pack/test/functional/apps/uptime/locations.ts +++ b/x-pack/test/functional/apps/uptime/locations.ts @@ -11,7 +11,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default ({ getPageObjects, getService }: FtrProviderContext) => { const { uptime: uptimePage } = getPageObjects(['uptime']); const uptime = getService('uptime'); - const es = getService('legacyEs'); + const es = getService('es'); const monitor = () => uptime.monitor; const MONITOR_ID = 'location-testing-id'; diff --git a/x-pack/test/functional/apps/uptime/ping_redirects.ts b/x-pack/test/functional/apps/uptime/ping_redirects.ts index 9c39ed7017721..39d9292dbbbb8 100644 --- a/x-pack/test/functional/apps/uptime/ping_redirects.ts +++ b/x-pack/test/functional/apps/uptime/ping_redirects.ts @@ -35,7 +35,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { beforeEach(async () => { await makeChecksWithStatus( - getService('legacyEs'), + getService('es'), MONITOR_ID, 5, 2, From 537be25754c44f35527cee77d72c2a87eeb5b1d0 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Wed, 12 May 2021 12:24:25 -0700 Subject: [PATCH 054/144] [FTR][CI] Use default distribution for all tests (#94968) Signed-off-by: Tyler Smalley --- .ci/Jenkinsfile_flaky | 6 +- .ci/Jenkinsfile_security_cypress | 2 +- .ci/es-snapshots/Jenkinsfile_verify_es | 6 +- .../src/lib/indices/kibana_index.ts | 1 + test/accessibility/apps/dashboard_panel.ts | 2 + test/api_integration/apis/home/sample_data.ts | 2 +- test/api_integration/apis/search/search.ts | 20 - test/api_integration/apis/telemetry/index.js | 1 - .../apis/telemetry/telemetry_local.ts | 331 -- .../saved_objects/basic/data.json.gz | Bin 2038 -> 2469 bytes .../saved_objects/basic/mappings.json | 2773 ++++++++++++++++- test/common/services/deployment.ts | 8 - .../expressions_explorer/expressions.ts | 4 +- test/functional/apps/home/_home.js | 4 +- test/functional/apps/home/_newsfeed.ts | 14 +- .../apps/management/_scripted_fields.js | 62 +- .../functional/apps/visualize/_chart_types.ts | 2 + test/functional/apps/visualize/_tile_map.ts | 40 +- test/functional/apps/visualize/index.ts | 16 +- test/functional/config.js | 6 +- test/functional/page_objects/home_page.ts | 7 +- test/scripts/jenkins_build_kibana.sh | 43 +- test/scripts/jenkins_build_load_testing.sh | 4 +- test/scripts/jenkins_build_plugins.sh | 15 +- test/scripts/jenkins_test_setup_oss.sh | 4 +- test/scripts/jenkins_test_setup_xpack.sh | 4 +- test/scripts/jenkins_xpack_baseline.sh | 4 +- test/scripts/jenkins_xpack_build_kibana.sh | 61 - .../http/ssl_redirect/index.js | 2 +- vars/kibanaCoverage.groovy | 4 +- vars/kibanaPipeline.groovy | 42 +- vars/tasks.groovy | 8 +- 32 files changed, 2834 insertions(+), 664 deletions(-) delete mode 100644 test/api_integration/apis/telemetry/telemetry_local.ts delete mode 100755 test/scripts/jenkins_xpack_build_kibana.sh diff --git a/.ci/Jenkinsfile_flaky b/.ci/Jenkinsfile_flaky index 7eafc66465bc7..8121405e5ae24 100644 --- a/.ci/Jenkinsfile_flaky +++ b/.ci/Jenkinsfile_flaky @@ -73,11 +73,7 @@ def agentProcess(Map params = [:]) { ]) { task { if (config.needBuild) { - if (!config.isXpack) { - kibanaPipeline.buildOss() - } else { - kibanaPipeline.buildXpack() - } + kibanaPipeline.buildKibana() } for(def i = 0; i < config.agentExecutions; i++) { diff --git a/.ci/Jenkinsfile_security_cypress b/.ci/Jenkinsfile_security_cypress index 811af44d1ca56..d48b9965919dc 100644 --- a/.ci/Jenkinsfile_security_cypress +++ b/.ci/Jenkinsfile_security_cypress @@ -16,7 +16,7 @@ kibanaPipeline(timeoutMinutes: 180) { def job = 'xpack-securityCypress' workers.ci(name: job, size: 'l', ramDisk: true) { - kibanaPipeline.bash('test/scripts/jenkins_xpack_build_kibana.sh', 'Build Default Distributable') + kibanaPipeline.bash('test/scripts/jenkins_build_kibana.sh', 'Build Distributable') kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_chrome.sh')() // Temporarily disabled to figure out test flake // kibanaPipeline.functionalTestProcess(job, 'test/scripts/jenkins_security_solution_cypress_firefox.sh')() diff --git a/.ci/es-snapshots/Jenkinsfile_verify_es b/.ci/es-snapshots/Jenkinsfile_verify_es index d56ec61314ac7..dc3a3cde7d658 100644 --- a/.ci/es-snapshots/Jenkinsfile_verify_es +++ b/.ci/es-snapshots/Jenkinsfile_verify_es @@ -37,12 +37,8 @@ kibanaPipeline(timeoutMinutes: 210) { ]) task { - kibanaPipeline.buildOss(6) + kibanaPipeline.buildKibana(16) tasks.ossCiGroups() - } - - task { - kibanaPipeline.buildXpack(10, true) tasks.xpackCiGroups() tasks.xpackCiGroupDocker() } diff --git a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts index fbef255cd9ee5..51d4f28d20f2e 100644 --- a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts +++ b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts @@ -165,6 +165,7 @@ export async function createDefaultSpace({ { index, id: 'space:default', + refresh: 'wait_for', body: { type: 'space', updated_at: new Date().toISOString(), diff --git a/test/accessibility/apps/dashboard_panel.ts b/test/accessibility/apps/dashboard_panel.ts index 77b6cf2dbb6da..2a6c290172a9e 100644 --- a/test/accessibility/apps/dashboard_panel.ts +++ b/test/accessibility/apps/dashboard_panel.ts @@ -63,6 +63,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('dashboard panel full screen', async () => { const header = await dashboardPanelActions.getPanelHeading('[Flights] Airline Carrier'); await dashboardPanelActions.toggleContextMenu(header); + await dashboardPanelActions.clickContextMenuMoreItem(); + await testSubjects.click('embeddablePanelAction-togglePanel'); await a11y.testAppSnapshot(); }); diff --git a/test/api_integration/apis/home/sample_data.ts b/test/api_integration/apis/home/sample_data.ts index 99327901ec8c3..c681ad325e56f 100644 --- a/test/api_integration/apis/home/sample_data.ts +++ b/test/api_integration/apis/home/sample_data.ts @@ -43,7 +43,7 @@ export default function ({ getService }: FtrProviderContext) { expect(resp.body).to.eql({ elasticsearchIndicesCreated: { kibana_sample_data_flights: 13059 }, - kibanaSavedObjectsLoaded: 20, + kibanaSavedObjectsLoaded: 23, }); }); diff --git a/test/api_integration/apis/search/search.ts b/test/api_integration/apis/search/search.ts index bc092dd3889bb..7ef82cd5467ab 100644 --- a/test/api_integration/apis/search/search.ts +++ b/test/api_integration/apis/search/search.ts @@ -99,26 +99,6 @@ export default function ({ getService }: FtrProviderContext) { expect(resp.body.message).to.contain('banana not found'); }); - it('should return 400 when index type is provided in OSS', async () => { - const resp = await supertest - .post(`/internal/search/es`) - .send({ - indexType: 'baad', - params: { - body: { - query: { - match_all: {}, - }, - }, - }, - }) - .expect(400); - - verifyErrorResponse(resp.body, 400); - - expect(resp.body.message).to.contain('Unsupported index pattern'); - }); - it('should return 400 with illegal ES argument', async () => { const resp = await supertest .post(`/internal/search/es`) diff --git a/test/api_integration/apis/telemetry/index.js b/test/api_integration/apis/telemetry/index.js index db95bf92cd44f..5394b54062d89 100644 --- a/test/api_integration/apis/telemetry/index.js +++ b/test/api_integration/apis/telemetry/index.js @@ -8,7 +8,6 @@ export default function ({ loadTestFile }) { describe('Telemetry', () => { - loadTestFile(require.resolve('./telemetry_local')); loadTestFile(require.resolve('./opt_in')); loadTestFile(require.resolve('./telemetry_optin_notice_seen')); }); diff --git a/test/api_integration/apis/telemetry/telemetry_local.ts b/test/api_integration/apis/telemetry/telemetry_local.ts deleted file mode 100644 index f20c6a3d129dd..0000000000000 --- a/test/api_integration/apis/telemetry/telemetry_local.ts +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import expect from '@kbn/expect'; -import supertestAsPromised from 'supertest-as-promised'; -import { omit } from 'lodash'; -import { basicUiCounters } from './__fixtures__/ui_counters'; -import { basicUsageCounters } from './__fixtures__/usage_counters'; -import type { FtrProviderContext } from '../../ftr_provider_context'; -import type { SavedObject } from '../../../../src/core/server'; -import ossRootTelemetrySchema from '../../../../src/plugins/telemetry/schema/oss_root.json'; -import ossPluginsTelemetrySchema from '../../../../src/plugins/telemetry/schema/oss_plugins.json'; -import { assertTelemetryPayload, flatKeys } from './utils'; - -async function retrieveTelemetry( - supertest: supertestAsPromised.SuperTest -) { - const { body } = await supertest - .post('/api/telemetry/v2/clusters/_stats') - .set('kbn-xsrf', 'xxx') - .send({ unencrypted: true }) - .expect(200); - - expect(body.length).to.be(1); - return body[0]; -} - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const es = getService('es'); - const esArchiver = getService('esArchiver'); - - describe('/api/telemetry/v2/clusters/_stats', () => { - before('make sure there are some saved objects', () => esArchiver.load('saved_objects/basic')); - after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/basic')); - - before('create some telemetry-data tracked indices', async () => { - await es.indices.create({ index: 'filebeat-telemetry_tests_logs' }); - }); - - after('cleanup telemetry-data tracked indices', async () => { - await es.indices.delete({ index: 'filebeat-telemetry_tests_logs' }); - }); - - describe('validate data types', () => { - let stats: Record; - - before('pull local stats', async () => { - stats = await retrieveTelemetry(supertest); - }); - - it('should pass the schema validation', () => { - try { - assertTelemetryPayload( - { root: ossRootTelemetrySchema, plugins: ossPluginsTelemetrySchema }, - stats - ); - } catch (err) { - err.message = `The telemetry schemas in 'src/plugins/telemetry/schema/' are out-of-date, please update it as required: ${err.message}`; - throw err; - } - }); - - it('should pass ad-hoc enforced validations', () => { - expect(stats.collection).to.be('local'); - expect(stats.collectionSource).to.be('local'); - expect(stats.license).to.be(undefined); // OSS cannot get the license - expect(stats.stack_stats.kibana.count).to.be.a('number'); - expect(stats.stack_stats.kibana.indices).to.be.a('number'); - expect(stats.stack_stats.kibana.os.platforms[0].platform).to.be.a('string'); - expect(stats.stack_stats.kibana.os.platforms[0].count).to.be(1); - expect(stats.stack_stats.kibana.os.platformReleases[0].platformRelease).to.be.a('string'); - expect(stats.stack_stats.kibana.os.platformReleases[0].count).to.be(1); - expect(stats.stack_stats.kibana.plugins.telemetry.opt_in_status).to.be(false); - expect(stats.stack_stats.kibana.plugins.telemetry.usage_fetcher).to.be.a('string'); - expect(stats.stack_stats.kibana.plugins.stack_management).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.ui_metric).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.ui_counters).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.application_usage).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.kql.defaultQueryLanguage).to.be.a('string'); - expect(stats.stack_stats.kibana.plugins.localization).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.csp.strict).to.be(true); - expect(stats.stack_stats.kibana.plugins.csp.warnLegacyBrowsers).to.be(true); - expect(stats.stack_stats.kibana.plugins.csp.rulesChangedFromDefault).to.be(false); - expect(stats.stack_stats.kibana.plugins.kibana_config_usage).to.be.an('object'); - // non-default kibana configs. Configs set at 'test/api_integration/config.js'. - expect(omit(stats.stack_stats.kibana.plugins.kibana_config_usage, 'server.port')).to.eql({ - 'elasticsearch.username': '[redacted]', - 'elasticsearch.password': '[redacted]', - 'elasticsearch.hosts': '[redacted]', - 'elasticsearch.healthCheck.delay': 3600000, - 'plugins.paths': '[redacted]', - 'logging.json': false, - 'server.xsrf.disableProtection': true, - 'server.compression.referrerWhitelist': '[redacted]', - 'server.maxPayload': 1679958, - 'status.allowAnonymous': true, - 'home.disableWelcomeScreen': true, - 'data.search.aggs.shardDelay.enabled': true, - 'security.showInsecureClusterWarning': false, - 'telemetry.banner': false, - 'telemetry.url': '[redacted]', - 'telemetry.optInStatusUrl': '[redacted]', - 'telemetry.optIn': false, - 'newsfeed.service.urlRoot': '[redacted]', - 'newsfeed.service.pathTemplate': '[redacted]', - 'savedObjects.maxImportPayloadBytes': 10485760, - 'savedObjects.maxImportExportSize': 10001, - 'usageCollection.usageCounters.bufferDuration': 0, - }); - expect(stats.stack_stats.kibana.plugins.kibana_config_usage['server.port']).to.be.a( - 'number' - ); - - // Testing stack_stats.data - expect(stats.stack_stats.data).to.be.an('object'); - expect(stats.stack_stats.data).to.be.an('array'); - expect(stats.stack_stats.data[0]).to.be.an('object'); - expect(stats.stack_stats.data[0].pattern_name).to.be('filebeat'); - expect(stats.stack_stats.data[0].shipper).to.be('filebeat'); - expect(stats.stack_stats.data[0].index_count).to.be(1); - expect(stats.stack_stats.data[0].doc_count).to.be(0); - expect(stats.stack_stats.data[0].ecs_index_count).to.be(0); - expect(stats.stack_stats.data[0].size_in_bytes).to.be.a('number'); - - expect(stats.stack_stats.kibana.plugins.saved_objects_counts).to.be.an('object'); - expect(stats.stack_stats.kibana.plugins.saved_objects_counts.by_type).to.be.an('array'); - expect(stats.stack_stats.kibana.plugins.saved_objects_counts.by_type).to.eql([ - { type: 'config', count: 2 }, - { type: 'dashboard', count: 2 }, - { type: 'index-pattern', count: 2 }, - { type: 'visualization', count: 2 }, - ]); - }); - - it('should validate mandatory fields exist', () => { - const actual = flatKeys(stats); - expect(actual).to.be.an('array'); - const expected = [ - 'cluster_name', - 'cluster_stats.cluster_uuid', - 'cluster_stats.indices.analysis', - 'cluster_stats.indices.completion', - 'cluster_stats.indices.count', - 'cluster_stats.indices.docs', - 'cluster_stats.indices.fielddata', - 'cluster_stats.indices.mappings', - 'cluster_stats.indices.query_cache', - 'cluster_stats.indices.segments', - 'cluster_stats.indices.shards', - 'cluster_stats.indices.store', - 'cluster_stats.nodes.count', - 'cluster_stats.nodes.discovery_types', - 'cluster_stats.nodes.fs', - 'cluster_stats.nodes.ingest', - 'cluster_stats.nodes.jvm', - 'cluster_stats.nodes.network_types', - 'cluster_stats.nodes.os', - 'cluster_stats.nodes.packaging_types', - 'cluster_stats.nodes.plugins', - 'cluster_stats.nodes.process', - 'cluster_stats.nodes.versions', - 'cluster_stats.nodes.usage', - 'cluster_stats.status', - 'cluster_stats.timestamp', - 'cluster_uuid', - 'collection', - 'collectionSource', - 'stack_stats.kibana.count', - 'stack_stats.kibana.indices', - 'stack_stats.kibana.os', - 'stack_stats.kibana.plugins', - 'stack_stats.kibana.versions', - 'timestamp', - 'version', - ]; - - expect(expected.every((m) => actual.includes(m))).to.be.ok(); - }); - }); - - describe('UI Counters telemetry', () => { - before('Add UI Counters saved objects', () => esArchiver.load('saved_objects/ui_counters')); - after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/ui_counters')); - it('returns ui counters aggregated by day', async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.ui_counters).to.eql(basicUiCounters); - }); - }); - - describe('Usage Counters telemetry', () => { - before('Add UI Counters saved objects', () => - esArchiver.load('saved_objects/usage_counters') - ); - after('cleanup saved objects changes', () => - esArchiver.unload('saved_objects/usage_counters') - ); - - it('returns usage counters aggregated by day', async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.usage_counters).to.eql(basicUsageCounters); - }); - }); - - describe('application usage limits', () => { - function createSavedObject(viewId?: string) { - return supertest - .post('/api/saved_objects/application_usage_daily') - .send({ - attributes: { - appId: 'test-app', - viewId, - minutesOnScreen: 10.33, - numberOfClicks: 10, - timestamp: new Date().toISOString(), - }, - }) - .expect(200) - .then((resp) => resp.body.id); - } - - describe('basic behaviour', () => { - let savedObjectIds: string[] = []; - before('create application usage entries', async () => { - await esArchiver.emptyKibanaIndex(); - savedObjectIds = await Promise.all([ - createSavedObject(), - createSavedObject('appView1'), - createSavedObject(), - ]); - }); - after('cleanup', async () => { - await Promise.all( - savedObjectIds.map((savedObjectId) => { - return supertest - .delete(`/api/saved_objects/application_usage_daily/${savedObjectId}`) - .expect(200); - }) - ); - }); - - it('should return application_usage data', async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.application_usage).to.eql({ - 'test-app': { - appId: 'test-app', - viewId: 'main', - clicks_total: 20, - clicks_7_days: 20, - clicks_30_days: 20, - clicks_90_days: 20, - minutes_on_screen_total: 20.66, - minutes_on_screen_7_days: 20.66, - minutes_on_screen_30_days: 20.66, - minutes_on_screen_90_days: 20.66, - views: [ - { - appId: 'test-app', - viewId: 'appView1', - clicks_total: 10, - clicks_7_days: 10, - clicks_30_days: 10, - clicks_90_days: 10, - minutes_on_screen_total: 10.33, - minutes_on_screen_7_days: 10.33, - minutes_on_screen_30_days: 10.33, - minutes_on_screen_90_days: 10.33, - }, - ], - }, - }); - }); - }); - - describe('10k + 1', () => { - const savedObjectIds = []; - before('create 10k + 1 entries for application usage', async () => { - await supertest - .post('/api/saved_objects/_bulk_create') - .send( - new Array(10001).fill(0).map(() => ({ - type: 'application_usage_daily', - attributes: { - appId: 'test-app', - minutesOnScreen: 1, - numberOfClicks: 1, - timestamp: new Date().toISOString(), - }, - })) - ) - .expect(200) - .then((resp) => - resp.body.saved_objects.forEach(({ id }: SavedObject) => savedObjectIds.push(id)) - ); - }); - after('clean them all', async () => { - // The SavedObjects API does not allow bulk deleting, and deleting one by one takes ages and the tests timeout - await es.deleteByQuery({ - index: '.kibana', - body: { query: { term: { type: 'application_usage_daily' } } }, - conflicts: 'proceed', - }); - }); - - it("should only use the first 10k docs for the application_usage data (they'll be rolled up in a later process)", async () => { - const stats = await retrieveTelemetry(supertest); - expect(stats.stack_stats.kibana.plugins.application_usage).to.eql({ - 'test-app': { - appId: 'test-app', - viewId: 'main', - clicks_total: 10000, - clicks_7_days: 10000, - clicks_30_days: 10000, - clicks_90_days: 10000, - minutes_on_screen_total: 10000, - minutes_on_screen_7_days: 10000, - minutes_on_screen_30_days: 10000, - minutes_on_screen_90_days: 10000, - views: [], - }, - }); - }); - }); - }); - }); -} diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz b/test/api_integration/fixtures/es_archiver/saved_objects/basic/data.json.gz index c72f46370fa122258294d3000e630b607d3db3f1..d65e1920b2342559fefe4d358fba3f9f8c17fff9 100644 GIT binary patch literal 2469 zcmV;W30n3aiwFp8?_6L217u-zVJ>QOZ*BnXTy1aLI1>KeUtxH^9c)9A(>T$m+iQ_U z7kxt$Ek9gGArg2Wc%~%W4>fCyHC2<+95`IYk}jOQ%x0Kv z45w~Xsr%S^!>=V>6B+|sO2IM8Qbw%vDapSX6mS$AldP1XAR##( zQG-ZYU^0;@hB8w^P=+(g?#)3X&#F&2^bA#lEyyl_0_N@yJi=r*?f}Bs2~3x0eAo$`Uxg+V$f5K zr*R$vqqig!iTQ*om}c|IiNI5{vhXKBn$4vkA~l*v1<-H~cl-P5%P9m{W;0l_)MNqy zp27TyTO!|(@&m*SdT8SPy_%vs3gA$^&3iW*NqlDM20pmu9Cz9h3&M zY4TET+&cbOx!adLHl|AfGK(W#(3~4JFDpbQvBV1$EWhftPmU@)CNZ?XcVJhs7!@K7 zi;1NO4Ei{4Vd_{JrG=@%|4FA>F zz4PXzPqum(sCC$9`5aJxGIHIKvnr1N>+33-v{ zxRarCI`rHN_ryOs_1)uJv{$pRY3EI#QsDcavGwvNRay@N2jEa zEobpQJ#EAWxU}B*1=iDoHZa@R@m^rI z8^TMJlE0N|ei%*y6nXnO5cf309iW`x6J^ zgM3e=ib3Z}|KHC)eH>L3btJ5xrOg%dM;)W9|Fit#wd;H1(d6{#kHz)NG(NPaQ}d)n z%4&zXwfc7MmWE$aUkZT;ACXkZ*HZki*ARUn1(&bP_z#PZSA7-WQZk^7BYSb8+->HPt3D_)Xw0sOYq;f02u(GXXk^ct3z zX*y8)rp*#JpSPvmG>+{KI-act(F5p>I_SBAth+cOSjkjNff&kog=MujX7U|n*%!bd zF=hAfNxoQx<=QFkQ>{usQ_9r+zhEr+mjs&5LHzeL+X<7|L|vJ9o)V}Man>EF@5 zws)7G4j=Fl--(6yNe{SI=@lcGf36+v>taMD4nN|V4Q$Abf^Yh*M+jJ`8cQkA9&FHX z?^Y^?kP<3){SOwm80Vkm=^ozV5J0>kEJ$&y5iY^3plPLIhsT@Rq^ky2dZIAApfpv7 z!kRQP4Bz7z=i#C$Ro_3ijm#Er6v#xej(1WZeE)#hw~h@8Ft-rP7H?YH-d2UXY15}- zBEKX&C9_M?(mRAONK(A2K}3XrJo*gG-r)TkGg`@lGukgNww0coz1d@a`dj##;pO%uWejq8`1Tk<)Mv-)slJL0Ls^6HAElg-KvZcyc5 zs1&qvNs>v#`ExV%eRJw)gt4jE&xrL@u4olm6HaY-*5qRfe*d zaoG%qp`0FX)Ha}!jPnFRIxC&Oo>Th%c2cAorjCqbZDk-EW|$}M^jugrS4en~qI;?6 zrzq;Css$>!bhavFwR>t;cOJ>CVCxJUY$^1=IP9I{qURp>AUA#8^F05x=ev{MZyzp( z&ctz+_uOA#0)tP(y~@Ph&I>AKo-tC%JgH>59uV!1Pact})4VThvb$D3w&A9|J)t(+ zu&>>TY_RXr_tiTQZT9t>jBc|3j7`Qut>D(g;{K27F(Fb z7G|-9S$@cwZDAH$n8g-m*##C`n8g-mv4vS|VHR7M#TI6=wlIq=%(8tnwlK><6=soCsnD}H&(weV5STGlTlDEGTfF7z;w{^-@XxO7qD}k% zSKwuHW7z61k8o_Ozu4+8w)%^${$i`Y*y=B~`ped2meHZ zdm4PN8mxT};c7iR!$_2D$qlYs7uME%t0kQ)Nh{t~Guj;aK0ro9e=M1Fm+%o?I(SPMR?~VWf@qxXI literal 2038 zcmc)8`9Bkk0{~!mYVyjJV`F1!?z1_Tq={Km4ILY4Bt~z@Q7DAm=UzEtv#D8#j=7J_ zHFJ~R&3$z!_w_oOm)_6!ulPPcKB_6=0{&5P)iDrEUh?8m~SBW%KxfJJV#IIiPe&e(mFCA}1`y2k)2OZpQvIbAV$oMR> z+$a*pQ#+mtWQp603~4sseYazvI|qG=C_ll>Jo#ccuJF($K4w1rI^XaDM%u|HQ(UHs zz<4Dcr-^)^gGzP2hBuWHnKO-f&DvT|!JWa4=sp^OC;@^GpOusihtM$GGniv+>C9va z;7xw1!`qCmy%zX-pXPMBFHeUz*#HNc8GZYb-{^g@0sLh;V6iPhajPk{BEn{>P4~Rk z0|A^N2+$vTH6|lYSaVNDPmYw~F_a;o;pzM)!7U}0yLF}Wf}U(Q^t&SPs}I=Ph?ckh zpsT*c1gXuSYyU8RoqfblP?47;_ZNdM9^D#EFS4l}MhcJX@Djmcu5G7isa`|phX=O% zmv)$APX4#n>aWU6mShW&ekk@g3m!9*m!w}qWAlbmQ_aDrs`J3UXqqfq9BtpjJ_R&6 zmR5aU(2FerwpL)aKmFhrTb5~)s;))X>Ya_TM*V${*=lTC5YHiS0C=wTlS&KiS)WzZs_?Zw%LgkBWL|!2 zPZ#XIG_1mTT5boBs*|Md>@T)oD{*h-5g-blqQ0R|w_gvGntRJVLlNHNmt&rYH9V12 z-a2!W8tvuo|LHM|8V&E)6K*m(-sMfZH0n~Mf^HdqM(%0-z7Yjbvp(pmc}iG7&7aMp z{mZlwvA<+w2NC?ovaUne9yx&!ZcG++P85-s0mupQ^MfIR=GkJE-?J@1*G&U*5ZkO? z%J+c*Zo9s5+}RW&u&;A^R2hy#d8#hlD2{@~fo)mpTaEfHq4F<@n=KQ!EngIrZpW!&7+=Tc-0UhM z443?)KEgXKWliBo&T~4>c_t`Zhon^lE^sf?K*nMl6u*j(>ql&^9C@{KWSa5cBYLH-$R;7xUs7R z2|TFmYIZY7IIMSUI!lMjL{2w&2z&Zal(;2IFEHw+KOSK$k$|=`+%Eg)Z{|?vP|NPw z&o#USZeUoMYQ;ju!2BiLB&Im&;u?z1bNJMQqo{uFS2aT1q6E59ROi$#F27X-yzTjw zPgKA%`sy>hBK$uk9A>$e@W%U+spIRKFcQ_boj;yVWRsM2K1A!v9b;X4onM703e-VF zuM!&5Ru2M`ZzepsSI9aMav8PLO`gsLfqbRjm5M7a$S!Kwd?RN&EiY`8yA5+iYqo3@ zRD%YVi!(GF2>+&cK-=%1s2rp=r09(6$Il;*gxhR@k?5p3dev$(xi?9O}Z z>L<+SsU(a%@F-BHD;Q2uLuhZdFVvB0-L(ouA5ZTQm^1e5io|W7y{-J^f~$A^u0JkN zv`aSv#Vl1+e;w}~PJbG3JId{-c+%x_eNfsBc-u8dGroks+dC*ObmGS= zj97;K0Kua!;?;1EzvZN%soA_3XL2@A85k6M$1kAoczS*7{~=c!)`Rth64Lxk4ya=w zt>SYU-R-s(k0hkh1=|eIn~8~Y1m+aLK;e!I#tKI*W)yZ8kt5ELp1Y|QsdA|!s*7;s JpdnU3;6I3>=+giI diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json index e601c43431437..6dac52137ef01 100644 --- a/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json +++ b/test/api_integration/fixtures/es_archiver/saved_objects/basic/mappings.json @@ -1,148 +1,2613 @@ { "type": "index", "value": { - "index": ".kibana", - "settings": { - "index": { - "number_of_shards": "1", - "number_of_replicas": "1" + "aliases": { + ".kibana": { } }, + "index": ".kibana_1", "mappings": { + "_meta": { + "migrationMappingPropertyHashes": { + "action": "6e96ac5e648f57523879661ea72525b7", + "action_task_params": "a9d49f184ee89641044be0ca2950fa3a", + "alert": "05d57e6963593484582a4de341446974", + "api_key_pending_invalidation": "16f515278a295f6245149ad7c5ddedb7", + "apm-indices": "9bb9b2bf1fa636ed8619cbab5ce6a1dd", + "apm-telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "app_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "application_usage_daily": "43b8830d5d0df85a6823d290885fc9fd", + "application_usage_totals": "3d1b76c39bfb2cc8296b024d73854724", + "application_usage_transactional": "3d1b76c39bfb2cc8296b024d73854724", + "canvas-element": "7390014e1091044523666d97247392fc", + "canvas-workpad": "b0a1706d356228dbdcb4a17e6b9eb231", + "canvas-workpad-template": "ae2673f678281e2c055d764b153e9715", + "cases": "7c28a18fbac7c2a4e79449e9802ef476", + "cases-comments": "112cefc2b6737e613a8ef033234755e6", + "cases-configure": "387c5f3a3bda7e0ae0dd4e106f914a69", + "cases-connector-mappings": "6bc7e49411d38be4969dc6aa8bd43776", + "cases-sub-case": "2dc9dbf1fc7144e2b18fffc017358ff9", + "cases-user-actions": "32277330ec6b721abe3b846cfd939a71", + "config": "c63748b75f39d0c54de12d12c1ccbc20", + "core-usage-stats": "3d1b76c39bfb2cc8296b024d73854724", + "coreMigrationVersion": "2f4316de49999235636386fe51dc06c1", + "dashboard": "40554caf09725935e2c02e02563a2d07", + "endpoint:user-artifact": "4a11183eee21e6fbad864f7a30b39ad0", + "endpoint:user-artifact-manifest": "a0d7b04ad405eed54d76e279c3727862", + "enterprise_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "epm-packages": "0cbbb16506734d341a96aaed65ec6413", + "epm-packages-assets": "44621b2f6052ef966da47b7c3a00f33b", + "exception-list": "baf108c9934dda844921f692a513adae", + "exception-list-agnostic": "baf108c9934dda844921f692a513adae", + "file-upload-usage-collection-telemetry": "a34fbb8e3263d105044869264860c697", + "fleet-agent-actions": "9511b565b1cc6441a42033db3d5de8e9", + "fleet-agent-events": "e20a508b6e805189356be381dbfac8db", + "fleet-agents": "59fd74f819f028f8555776db198d2562", + "fleet-enrollment-api-keys": "a69ef7ae661dab31561d6c6f052ef2a7", + "graph-workspace": "27a94b2edcb0610c6aea54a7c56d7752", + "index-pattern": "45915a1ad866812242df474eb0479052", + "infrastructure-ui-source": "3d1b76c39bfb2cc8296b024d73854724", + "ingest-agent-policies": "8df93787e2927f227dc80db8b6d309b9", + "ingest-outputs": "8854f34453a47e26f86a29f8f3b80b4e", + "ingest-package-policies": "c91ca97b1ff700f0fc64dc6b13d65a85", + "ingest_manager_settings": "22d4d1288c2687ef6a8f6e83159b4542", + "inventory-view": "3d1b76c39bfb2cc8296b024d73854724", + "kql-telemetry": "d12a98a6f19a2d273696597547e064ee", + "legacy-url-alias": "3d1b76c39bfb2cc8296b024d73854724", + "lens": "52346cfec69ff7b47d5f0c12361a2797", + "lens-ui-telemetry": "509bfa5978586998e05f9e303c07a327", + "map": "9134b47593116d7953f6adba096fc463", + "maps-telemetry": "5ef305b18111b77789afefbd36b66171", + "metrics-explorer-view": "3d1b76c39bfb2cc8296b024d73854724", + "migrationVersion": "4a1746014a75ade3a714e1db5763276f", + "ml-job": "3bb64c31915acf93fc724af137a0891b", + "ml-module": "46ef4f0d6682636f0fff9799d6a2d7ac", + "monitoring-telemetry": "2669d5ec15e82391cf58df4294ee9c68", + "namespace": "2f4316de49999235636386fe51dc06c1", + "namespaces": "2f4316de49999235636386fe51dc06c1", + "originId": "2f4316de49999235636386fe51dc06c1", + "query": "11aaeb7f5f7fa5bb43f25e18ce26e7d9", + "references": "7997cf5a56cc02bdc9c93361bde732b0", + "sample-data-telemetry": "7d3cfeb915303c9641c59681967ffeb4", + "search": "db2c00e39b36f40930a3b9fc71c823e1", + "search-session": "33157cf0119e41cd4e7a1d24266beff4", + "search-telemetry": "3d1b76c39bfb2cc8296b024d73854724", + "security-solution-signals-migration": "72761fd374ca11122ac8025a92b84fca", + "siem-detection-engine-rule-actions": "6569b288c169539db10cb262bf79de18", + "siem-detection-engine-rule-status": "ae783f41c6937db6b7a2ef5c93a9e9b0", + "siem-ui-timeline": "3e97beae13cdfc6d62bc1846119f7276", + "siem-ui-timeline-note": "8874706eedc49059d4cf0f5094559084", + "siem-ui-timeline-pinned-event": "20638091112f0e14f0e443d512301c29", + "space": "c5ca8acafa0beaa4d08d014a97b6bc6b", + "spaces-usage-stats": "3d1b76c39bfb2cc8296b024d73854724", + "tag": "83d55da58f6530f7055415717ec06474", + "telemetry": "36a616f7026dfa617d6655df850fe16d", + "timelion-sheet": "9a2a2748877c7a7b582fef201ab1d4cf", + "type": "2f4316de49999235636386fe51dc06c1", + "ui-counter": "0d409297dc5ebe1e3a1da691c6ee32e3", + "ui-metric": "0d409297dc5ebe1e3a1da691c6ee32e3", + "updated_at": "00da57df13e94e9d98437d13ace4bfe0", + "upgrade-assistant-reindex-operation": "215107c281839ea9b3ad5f6419819763", + "upgrade-assistant-telemetry": "56702cec857e0a9dacfb696655b4ff7b", + "uptime-dynamic-settings": "3d1b76c39bfb2cc8296b024d73854724", + "url": "c7f66a0df8b1b52f17c28c4adb111105", + "visualization": "f819cf6636b75c9e76ba733a0c6ef355", + "workplace_search_telemetry": "3d1b76c39bfb2cc8296b024d73854724" + } + }, "dynamic": "strict", "properties": { - "config": { - "dynamic": "true", + "action": { "properties": { - "buildNum": { + "actionTypeId": { + "type": "keyword" + }, + "config": { + "enabled": false, + "type": "object" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "secrets": { + "type": "binary" + } + } + }, + "action_task_params": { + "properties": { + "actionId": { + "type": "keyword" + }, + "apiKey": { + "type": "binary" + }, + "params": { + "enabled": false, + "type": "object" + } + } + }, + "alert": { + "properties": { + "actions": { + "properties": { + "actionRef": { + "type": "keyword" + }, + "actionTypeId": { + "type": "keyword" + }, + "group": { + "type": "keyword" + }, + "params": { + "enabled": false, + "type": "object" + } + }, + "type": "nested" + }, + "alertTypeId": { + "type": "keyword" + }, + "apiKey": { + "type": "binary" + }, + "apiKeyOwner": { + "type": "keyword" + }, + "consumer": { + "type": "keyword" + }, + "createdAt": { + "type": "date" + }, + "createdBy": { + "type": "keyword" + }, + "enabled": { + "type": "boolean" + }, + "executionStatus": { + "properties": { + "error": { + "properties": { + "message": { + "type": "keyword" + }, + "reason": { + "type": "keyword" + } + } + }, + "lastExecutionDate": { + "type": "date" + }, + "status": { + "type": "keyword" + } + } + }, + "meta": { + "properties": { + "versionApiKeyLastmodified": { + "type": "keyword" + } + } + }, + "muteAll": { + "type": "boolean" + }, + "mutedInstanceIds": { + "type": "keyword" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "notifyWhen": { + "type": "keyword" + }, + "params": { + "type": "flattened" + }, + "schedule": { + "properties": { + "interval": { + "type": "keyword" + } + } + }, + "scheduledTaskId": { + "type": "keyword" + }, + "tags": { + "type": "keyword" + }, + "throttle": { + "type": "keyword" + }, + "updatedAt": { + "type": "date" + }, + "updatedBy": { + "type": "keyword" + } + } + }, + "api_key_pending_invalidation": { + "properties": { + "apiKeyId": { + "type": "keyword" + }, + "createdAt": { + "type": "date" + } + } + }, + "apm-indices": { + "properties": { + "apm_oss": { + "properties": { + "errorIndices": { + "type": "keyword" + }, + "metricsIndices": { + "type": "keyword" + }, + "onboardingIndices": { + "type": "keyword" + }, + "sourcemapIndices": { + "type": "keyword" + }, + "spanIndices": { + "type": "keyword" + }, + "transactionIndices": { + "type": "keyword" + } + } + } + } + }, + "apm-telemetry": { + "dynamic": "false", + "type": "object" + }, + "app_search_telemetry": { + "dynamic": "false", + "type": "object" + }, + "application_usage_daily": { + "dynamic": "false", + "properties": { + "timestamp": { + "type": "date" + } + } + }, + "application_usage_totals": { + "dynamic": "false", + "type": "object" + }, + "application_usage_transactional": { + "dynamic": "false", + "type": "object" + }, + "canvas-element": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "content": { + "type": "text" + }, + "help": { + "type": "text" + }, + "image": { + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "canvas-workpad": { + "dynamic": "false", + "properties": { + "@created": { + "type": "date" + }, + "@timestamp": { + "type": "date" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "canvas-workpad-template": { + "dynamic": "false", + "properties": { + "help": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "tags": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "template_key": { + "type": "keyword" + } + } + }, + "cases": { + "properties": { + "closed_at": { + "type": "date" + }, + "closed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "connector": { + "properties": { + "fields": { + "properties": { + "key": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "description": { + "type": "text" + }, + "external_service": { + "properties": { + "connector_id": { + "type": "keyword" + }, + "connector_name": { + "type": "keyword" + }, + "external_id": { + "type": "keyword" + }, + "external_title": { + "type": "text" + }, + "external_url": { + "type": "text" + }, + "pushed_at": { + "type": "date" + }, + "pushed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "settings": { + "properties": { + "syncAlerts": { + "type": "boolean" + } + } + }, + "status": { "type": "keyword" }, - "defaultIndex": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 + "tags": { + "type": "keyword" + }, + "title": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-comments": { + "properties": { + "alertId": { + "type": "keyword" + }, + "associationType": { + "type": "keyword" + }, + "comment": { + "type": "text" + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "index": { + "type": "keyword" + }, + "pushed_at": { + "type": "date" + }, + "pushed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + } + } + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-configure": { + "properties": { + "closure_type": { + "type": "keyword" + }, + "connector": { + "properties": { + "fields": { + "properties": { + "key": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-connector-mappings": { + "properties": { + "mappings": { + "properties": { + "action_type": { + "type": "keyword" + }, + "source": { + "type": "keyword" + }, + "target": { + "type": "keyword" + } + } + } + } + }, + "cases-sub-case": { + "properties": { + "closed_at": { + "type": "date" + }, + "closed_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "date" + }, + "created_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "status": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + } + } + }, + "cases-user-actions": { + "properties": { + "action": { + "type": "keyword" + }, + "action_at": { + "type": "date" + }, + "action_by": { + "properties": { + "email": { + "type": "keyword" + }, + "full_name": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "action_field": { + "type": "keyword" + }, + "new_value": { + "type": "text" + }, + "old_value": { + "type": "text" + } + } + }, + "config": { + "dynamic": "false", + "properties": { + "buildNum": { + "type": "keyword" + } + } + }, + "core-usage-stats": { + "dynamic": "false", + "type": "object" + }, + "coreMigrationVersion": { + "type": "keyword" + }, + "dashboard": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "doc_values": false, + "index": false, + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "index": false, + "type": "text" + } + } + }, + "optionsJSON": { + "index": false, + "type": "text" + }, + "panelsJSON": { + "index": false, + "type": "text" + }, + "refreshInterval": { + "properties": { + "display": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "pause": { + "doc_values": false, + "index": false, + "type": "boolean" + }, + "section": { + "doc_values": false, + "index": false, + "type": "integer" + }, + "value": { + "doc_values": false, + "index": false, + "type": "integer" + } + } + }, + "timeFrom": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "timeRestore": { + "doc_values": false, + "index": false, + "type": "boolean" + }, + "timeTo": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "endpoint:user-artifact": { + "properties": { + "body": { + "type": "binary" + }, + "compressionAlgorithm": { + "index": false, + "type": "keyword" + }, + "created": { + "index": false, + "type": "date" + }, + "decodedSha256": { + "index": false, + "type": "keyword" + }, + "decodedSize": { + "index": false, + "type": "long" + }, + "encodedSha256": { + "type": "keyword" + }, + "encodedSize": { + "index": false, + "type": "long" + }, + "encryptionAlgorithm": { + "index": false, + "type": "keyword" + }, + "identifier": { + "type": "keyword" + } + } + }, + "endpoint:user-artifact-manifest": { + "properties": { + "artifacts": { + "properties": { + "artifactId": { + "index": false, + "type": "keyword" + }, + "policyId": { + "index": false, + "type": "keyword" + } + }, + "type": "nested" + }, + "created": { + "index": false, + "type": "date" + }, + "schemaVersion": { + "type": "keyword" + }, + "semanticVersion": { + "index": false, + "type": "keyword" + } + } + }, + "enterprise_search_telemetry": { + "dynamic": "false", + "type": "object" + }, + "epm-packages": { + "properties": { + "es_index_patterns": { + "enabled": false, + "type": "object" + }, + "install_source": { + "type": "keyword" + }, + "install_started_at": { + "type": "date" + }, + "install_status": { + "type": "keyword" + }, + "install_version": { + "type": "keyword" + }, + "installed_es": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "installed_kibana": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "internal": { + "type": "boolean" + }, + "name": { + "type": "keyword" + }, + "package_assets": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "removable": { + "type": "boolean" + }, + "version": { + "type": "keyword" + } + } + }, + "epm-packages-assets": { + "properties": { + "asset_path": { + "type": "keyword" + }, + "data_base64": { + "type": "binary" + }, + "data_utf8": { + "index": false, + "type": "text" + }, + "install_source": { + "type": "keyword" + }, + "media_type": { + "type": "keyword" + }, + "package_name": { + "type": "keyword" + }, + "package_version": { + "type": "keyword" + } + } + }, + "exception-list": { + "properties": { + "_tags": { + "type": "keyword" + }, + "comments": { + "properties": { + "comment": { + "type": "keyword" + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "updated_at": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "entries": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "field": { + "type": "keyword" + }, + "list": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "immutable": { + "type": "boolean" + }, + "item_id": { + "type": "keyword" + }, + "list_id": { + "type": "keyword" + }, + "list_type": { + "type": "keyword" + }, + "meta": { + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "os_types": { + "type": "keyword" + }, + "tags": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "tie_breaker_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "exception-list-agnostic": { + "properties": { + "_tags": { + "type": "keyword" + }, + "comments": { + "properties": { + "comment": { + "type": "keyword" + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "updated_at": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "created_at": { + "type": "keyword" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "keyword" + }, + "entries": { + "properties": { + "entries": { + "properties": { + "field": { + "type": "keyword" + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "field": { + "type": "keyword" + }, + "list": { + "properties": { + "id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "operator": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "value": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + } + } + }, + "immutable": { + "type": "boolean" + }, + "item_id": { + "type": "keyword" + }, + "list_id": { + "type": "keyword" + }, + "list_type": { + "type": "keyword" + }, + "meta": { + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "os_types": { + "type": "keyword" + }, + "tags": { + "fields": { + "text": { + "type": "text" + } + }, + "type": "keyword" + }, + "tie_breaker_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_by": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "file-upload-usage-collection-telemetry": { + "properties": { + "file_upload": { + "properties": { + "index_creation_count": { + "type": "long" + } + } + } + } + }, + "fleet-agent-actions": { + "properties": { + "ack_data": { + "type": "text" + }, + "agent_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "data": { + "type": "binary" + }, + "policy_id": { + "type": "keyword" + }, + "policy_revision": { + "type": "integer" + }, + "sent_at": { + "type": "date" + }, + "type": { + "type": "keyword" + } + } + }, + "fleet-agent-events": { + "properties": { + "action_id": { + "type": "keyword" + }, + "agent_id": { + "type": "keyword" + }, + "data": { + "type": "text" + }, + "message": { + "type": "text" + }, + "payload": { + "type": "text" + }, + "policy_id": { + "type": "keyword" + }, + "stream_id": { + "type": "keyword" + }, + "subtype": { + "type": "keyword" + }, + "timestamp": { + "type": "date" + }, + "type": { + "type": "keyword" + } + } + }, + "fleet-agents": { + "properties": { + "access_api_key_id": { + "type": "keyword" + }, + "active": { + "type": "boolean" + }, + "current_error_events": { + "index": false, + "type": "text" + }, + "default_api_key": { + "type": "binary" + }, + "default_api_key_id": { + "type": "keyword" + }, + "enrolled_at": { + "type": "date" + }, + "last_checkin": { + "type": "date" + }, + "last_checkin_status": { + "type": "keyword" + }, + "last_updated": { + "type": "date" + }, + "local_metadata": { + "type": "flattened" + }, + "packages": { + "type": "keyword" + }, + "policy_id": { + "type": "keyword" + }, + "policy_revision": { + "type": "integer" + }, + "type": { + "type": "keyword" + }, + "unenrolled_at": { + "type": "date" + }, + "unenrollment_started_at": { + "type": "date" + }, + "updated_at": { + "type": "date" + }, + "upgrade_started_at": { + "type": "date" + }, + "upgraded_at": { + "type": "date" + }, + "user_provided_metadata": { + "type": "flattened" + }, + "version": { + "type": "keyword" + } + } + }, + "fleet-enrollment-api-keys": { + "properties": { + "active": { + "type": "boolean" + }, + "api_key": { + "type": "binary" + }, + "api_key_id": { + "type": "keyword" + }, + "created_at": { + "type": "date" + }, + "expire_at": { + "type": "date" + }, + "name": { + "type": "keyword" + }, + "policy_id": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + } + } + }, + "graph-workspace": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "legacyIndexPatternRef": { + "index": false, + "type": "text" + }, + "numLinks": { + "type": "integer" + }, + "numVertices": { + "type": "integer" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "wsState": { + "type": "text" + } + } + }, + "index-pattern": { + "dynamic": "false", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "infrastructure-ui-source": { + "dynamic": "false", + "type": "object" + }, + "ingest-agent-policies": { + "properties": { + "description": { + "type": "text" + }, + "is_default": { + "type": "boolean" + }, + "is_default_fleet_server": { + "type": "boolean" + }, + "is_managed": { + "type": "boolean" + }, + "monitoring_enabled": { + "index": false, + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "package_policies": { + "type": "keyword" + }, + "revision": { + "type": "integer" + }, + "status": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "ingest-outputs": { + "properties": { + "ca_sha256": { + "index": false, + "type": "keyword" + }, + "config": { + "type": "flattened" + }, + "config_yaml": { + "type": "text" + }, + "fleet_enroll_password": { + "type": "binary" + }, + "fleet_enroll_username": { + "type": "binary" + }, + "hosts": { + "type": "keyword" + }, + "is_default": { + "type": "boolean" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "ingest-package-policies": { + "properties": { + "created_at": { + "type": "date" + }, + "created_by": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "enabled": { + "type": "boolean" + }, + "inputs": { + "enabled": false, + "properties": { + "compiled_input": { + "type": "flattened" + }, + "config": { + "type": "flattened" + }, + "enabled": { + "type": "boolean" + }, + "streams": { + "properties": { + "compiled_stream": { + "type": "flattened" + }, + "config": { + "type": "flattened" + }, + "data_stream": { + "properties": { + "dataset": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "enabled": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "vars": { + "type": "flattened" + } + }, + "type": "nested" + }, + "type": { + "type": "keyword" + }, + "vars": { + "type": "flattened" + } + }, + "type": "nested" + }, + "name": { + "type": "keyword" + }, + "namespace": { + "type": "keyword" + }, + "output_id": { + "type": "keyword" + }, + "package": { + "properties": { + "name": { + "type": "keyword" + }, + "title": { + "type": "keyword" + }, + "version": { + "type": "keyword" + } + } + }, + "policy_id": { + "type": "keyword" + }, + "revision": { + "type": "integer" + }, + "updated_at": { + "type": "date" + }, + "updated_by": { + "type": "keyword" + } + } + }, + "ingest_manager_settings": { + "properties": { + "has_seen_add_data_notice": { + "index": false, + "type": "boolean" + }, + "kibana_ca_sha256": { + "type": "keyword" + }, + "kibana_urls": { + "type": "keyword" + } + } + }, + "inventory-view": { + "dynamic": "false", + "type": "object" + }, + "kql-telemetry": { + "properties": { + "optInCount": { + "type": "long" + }, + "optOutCount": { + "type": "long" + } + } + }, + "legacy-url-alias": { + "dynamic": "false", + "type": "object" + }, + "lens": { + "properties": { + "description": { + "type": "text" + }, + "expression": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "state": { + "type": "flattened" + }, + "title": { + "type": "text" + }, + "visualizationType": { + "type": "keyword" + } + } + }, + "lens-ui-telemetry": { + "properties": { + "count": { + "type": "integer" + }, + "date": { + "type": "date" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + } + }, + "map": { + "properties": { + "bounds": { + "dynamic": "false", + "type": "object" + }, + "description": { + "type": "text" + }, + "layerListJSON": { + "type": "text" + }, + "mapStateJSON": { + "type": "text" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "maps-telemetry": { + "enabled": false, + "type": "object" + }, + "metrics-explorer-view": { + "dynamic": "false", + "type": "object" + }, + "migrationVersion": { + "dynamic": "true", + "properties": { + "config": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "dashboard": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "index-pattern": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "visualization": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "ml-job": { + "properties": { + "datafeed_id": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "job_id": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "ml-module": { + "dynamic": "false", + "properties": { + "datafeeds": { + "type": "object" + }, + "defaultIndexPattern": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "description": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "jobs": { + "type": "object" + }, + "logo": { + "type": "object" + }, + "query": { + "type": "object" + }, + "title": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "fields": { + "keyword": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "monitoring-telemetry": { + "properties": { + "reportedClusterUuids": { + "type": "keyword" + } + } + }, + "namespace": { + "type": "keyword" + }, + "namespaces": { + "type": "keyword" + }, + "originId": { + "type": "keyword" + }, + "query": { + "properties": { + "description": { + "type": "text" + }, + "filters": { + "enabled": false, + "type": "object" + }, + "query": { + "properties": { + "language": { + "type": "keyword" + }, + "query": { + "index": false, + "type": "keyword" + } + } + }, + "timefilter": { + "enabled": false, + "type": "object" + }, + "title": { + "type": "text" + } + } + }, + "references": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "sample-data-telemetry": { + "properties": { + "installCount": { + "type": "long" + }, + "unInstallCount": { + "type": "long" + } + } + }, + "search": { + "properties": { + "columns": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "description": { + "type": "text" + }, + "grid": { + "enabled": false, + "type": "object" + }, + "hideChart": { + "doc_values": false, + "index": false, + "type": "boolean" + }, + "hits": { + "doc_values": false, + "index": false, + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "index": false, + "type": "text" + } + } + }, + "sort": { + "doc_values": false, + "index": false, + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "search-session": { + "properties": { + "appId": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "expires": { + "type": "date" + }, + "idMapping": { + "enabled": false, + "type": "object" + }, + "initialState": { + "enabled": false, + "type": "object" + }, + "name": { + "type": "keyword" + }, + "persisted": { + "type": "boolean" + }, + "realmName": { + "type": "keyword" + }, + "realmType": { + "type": "keyword" + }, + "restoreState": { + "enabled": false, + "type": "object" + }, + "sessionId": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "touched": { + "type": "date" + }, + "urlGeneratorId": { + "type": "keyword" + }, + "username": { + "type": "keyword" + } + } + }, + "search-telemetry": { + "dynamic": "false", + "type": "object" + }, + "security-solution-signals-migration": { + "properties": { + "created": { + "index": false, + "type": "date" + }, + "createdBy": { + "index": false, + "type": "text" + }, + "destinationIndex": { + "index": false, + "type": "keyword" + }, + "error": { + "index": false, + "type": "text" + }, + "sourceIndex": { + "type": "keyword" + }, + "status": { + "index": false, + "type": "keyword" + }, + "taskId": { + "index": false, + "type": "keyword" + }, + "updated": { + "index": false, + "type": "date" + }, + "updatedBy": { + "index": false, + "type": "text" + }, + "version": { + "type": "long" + } + } + }, + "server": { + "dynamic": "false", + "type": "object" + }, + "siem-detection-engine-rule-actions": { + "properties": { + "actions": { + "properties": { + "action_type_id": { + "type": "keyword" + }, + "group": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "params": { + "enabled": false, + "type": "object" + } + } + }, + "alertThrottle": { + "type": "keyword" + }, + "ruleAlertId": { + "type": "keyword" + }, + "ruleThrottle": { + "type": "keyword" + } + } + }, + "siem-detection-engine-rule-status": { + "properties": { + "alertId": { + "type": "keyword" + }, + "bulkCreateTimeDurations": { + "type": "float" + }, + "gap": { + "type": "text" + }, + "lastFailureAt": { + "type": "date" + }, + "lastFailureMessage": { + "type": "text" + }, + "lastLookBackDate": { + "type": "date" + }, + "lastSuccessAt": { + "type": "date" + }, + "lastSuccessMessage": { + "type": "text" + }, + "searchAfterTimeDurations": { + "type": "float" + }, + "status": { + "type": "keyword" + }, + "statusDate": { + "type": "date" + } + } + }, + "siem-ui-timeline": { + "properties": { + "columns": { + "properties": { + "aggregatable": { + "type": "boolean" + }, + "category": { + "type": "keyword" + }, + "columnHeaderType": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "example": { + "type": "text" + }, + "id": { + "type": "keyword" + }, + "indexes": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "placeholder": { + "type": "text" + }, + "searchable": { + "type": "boolean" + }, + "type": { + "type": "keyword" + } + } + }, + "created": { + "type": "date" + }, + "createdBy": { + "type": "text" + }, + "dataProviders": { + "properties": { + "and": { + "properties": { + "enabled": { + "type": "boolean" + }, + "excluded": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "kqlQuery": { + "type": "text" + }, + "name": { + "type": "text" + }, + "queryMatch": { + "properties": { + "displayField": { + "type": "text" + }, + "displayValue": { + "type": "text" + }, + "field": { + "type": "text" + }, + "operator": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "type": { + "type": "text" + } + } + }, + "enabled": { + "type": "boolean" + }, + "excluded": { + "type": "boolean" + }, + "id": { + "type": "keyword" + }, + "kqlQuery": { + "type": "text" + }, + "name": { + "type": "text" + }, + "queryMatch": { + "properties": { + "displayField": { + "type": "text" + }, + "displayValue": { + "type": "text" + }, + "field": { + "type": "text" + }, + "operator": { + "type": "text" + }, + "value": { + "type": "text" + } + } + }, + "type": { + "type": "text" + } + } + }, + "dateRange": { + "properties": { + "end": { + "type": "date" + }, + "start": { + "type": "date" } } - } - } - }, - "dashboard": { - "properties": { + }, "description": { "type": "text" }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { + "eqlOptions": { "properties": { - "searchSourceJSON": { + "eventCategoryField": { + "type": "text" + }, + "query": { + "type": "text" + }, + "size": { + "type": "text" + }, + "tiebreakerField": { + "type": "text" + }, + "timestampField": { "type": "text" } } }, - "optionsJSON": { + "eventType": { + "type": "keyword" + }, + "excludedRowRendererIds": { "type": "text" }, - "panelsJSON": { + "favorite": { + "properties": { + "favoriteDate": { + "type": "date" + }, + "fullName": { + "type": "text" + }, + "keySearch": { + "type": "text" + }, + "userName": { + "type": "text" + } + } + }, + "filters": { + "properties": { + "exists": { + "type": "text" + }, + "match_all": { + "type": "text" + }, + "meta": { + "properties": { + "alias": { + "type": "text" + }, + "controlledBy": { + "type": "text" + }, + "disabled": { + "type": "boolean" + }, + "field": { + "type": "text" + }, + "formattedValue": { + "type": "text" + }, + "index": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "negate": { + "type": "boolean" + }, + "params": { + "type": "text" + }, + "type": { + "type": "keyword" + }, + "value": { + "type": "text" + } + } + }, + "missing": { + "type": "text" + }, + "query": { + "type": "text" + }, + "range": { + "type": "text" + }, + "script": { + "type": "text" + } + } + }, + "indexNames": { "type": "text" }, - "refreshInterval": { + "kqlMode": { + "type": "keyword" + }, + "kqlQuery": { "properties": { - "display": { + "filterQuery": { + "properties": { + "kuery": { + "properties": { + "expression": { + "type": "text" + }, + "kind": { + "type": "keyword" + } + } + }, + "serializedQuery": { + "type": "text" + } + } + } + } + }, + "savedQueryId": { + "type": "keyword" + }, + "sort": { + "dynamic": "false", + "properties": { + "columnId": { "type": "keyword" }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" + "columnType": { + "type": "keyword" }, - "value": { - "type": "integer" + "sortDirection": { + "type": "keyword" } } }, - "timeFrom": { + "status": { "type": "keyword" }, - "timeRestore": { - "type": "boolean" + "templateTimelineId": { + "type": "text" }, - "timeTo": { + "templateTimelineVersion": { + "type": "integer" + }, + "timelineType": { "type": "keyword" }, "title": { "type": "text" }, - "uiStateJSON": { - "type": "text" + "updated": { + "type": "date" }, - "version": { - "type": "integer" + "updatedBy": { + "type": "text" } } }, - "index-pattern": { + "siem-ui-timeline-note": { "properties": { - "fieldFormatMap": { + "created": { + "type": "date" + }, + "createdBy": { "type": "text" }, - "fields": { + "eventId": { + "type": "keyword" + }, + "note": { "type": "text" }, - "intervalName": { + "timelineId": { "type": "keyword" }, - "notExpandable": { - "type": "boolean" + "updated": { + "type": "date" + }, + "updatedBy": { + "type": "text" + } + } + }, + "siem-ui-timeline-pinned-event": { + "properties": { + "created": { + "type": "date" }, - "sourceFilters": { + "createdBy": { "type": "text" }, - "timeFieldName": { + "eventId": { "type": "keyword" }, - "title": { + "timelineId": { + "type": "keyword" + }, + "updated": { + "type": "date" + }, + "updatedBy": { "type": "text" } } }, - "search": { + "space": { "properties": { - "columns": { + "_reserved": { + "type": "boolean" + }, + "color": { "type": "keyword" }, "description": { "type": "text" }, - "hits": { - "type": "integer" + "disabledFeatures": { + "type": "keyword" }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } + "imageUrl": { + "index": false, + "type": "text" }, - "sort": { + "initials": { "type": "keyword" }, - "title": { + "name": { + "fields": { + "keyword": { + "ignore_above": 2048, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "spaces-usage-stats": { + "dynamic": "false", + "type": "object" + }, + "tag": { + "properties": { + "color": { "type": "text" }, - "version": { - "type": "integer" + "description": { + "type": "text" + }, + "name": { + "type": "text" } } }, - "server": { + "telemetry": { "properties": { - "uuid": { + "allowChangingOptInStatus": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "lastReported": { + "type": "date" + }, + "lastVersionChecked": { + "type": "keyword" + }, + "reportFailureCount": { + "type": "integer" + }, + "reportFailureVersion": { + "type": "keyword" + }, + "sendUsageFrom": { "type": "keyword" + }, + "userHasSeenNotice": { + "type": "boolean" } } }, @@ -187,28 +2652,147 @@ } } }, - "namespace": { + "type": { "type": "keyword" }, - "references": { + "ui-counter": { "properties": { - "id": { - "type": "keyword" + "count": { + "type": "integer" + } + } + }, + "ui-metric": { + "properties": { + "count": { + "type": "integer" + } + } + }, + "updated_at": { + "type": "date" + }, + "upgrade-assistant-reindex-operation": { + "properties": { + "errorMessage": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" }, - "name": { + "indexName": { "type": "keyword" }, - "type": { - "type": "keyword" + "lastCompletedStep": { + "type": "long" + }, + "locked": { + "type": "date" + }, + "newIndexName": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "reindexOptions": { + "properties": { + "openAndClose": { + "type": "boolean" + }, + "queueSettings": { + "properties": { + "queuedAt": { + "type": "long" + }, + "startedAt": { + "type": "long" + } + } + } + } + }, + "reindexTaskId": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "reindexTaskPercComplete": { + "type": "float" + }, + "runningReindexCount": { + "type": "integer" + }, + "status": { + "type": "integer" } - }, - "type": "nested" + } }, - "type": { - "type": "keyword" + "upgrade-assistant-telemetry": { + "properties": { + "features": { + "properties": { + "deprecation_logging": { + "properties": { + "enabled": { + "null_value": true, + "type": "boolean" + } + } + } + } + }, + "ui_open": { + "properties": { + "cluster": { + "null_value": 0, + "type": "long" + }, + "indices": { + "null_value": 0, + "type": "long" + }, + "overview": { + "null_value": 0, + "type": "long" + } + } + }, + "ui_reindex": { + "properties": { + "close": { + "null_value": 0, + "type": "long" + }, + "open": { + "null_value": 0, + "type": "long" + }, + "start": { + "null_value": 0, + "type": "long" + }, + "stop": { + "null_value": 0, + "type": "long" + } + } + } + } }, - "updated_at": { - "type": "date" + "uptime-dynamic-settings": { + "dynamic": "false", + "type": "object" }, "url": { "properties": { @@ -222,13 +2806,13 @@ "type": "date" }, "url": { - "type": "text", "fields": { "keyword": { - "type": "keyword", - "ignore_above": 2048 + "ignore_above": 2048, + "type": "keyword" } - } + }, + "type": "text" } } }, @@ -240,28 +2824,43 @@ "kibanaSavedObjectMeta": { "properties": { "searchSourceJSON": { + "index": false, "type": "text" } } }, - "savedSearchId": { + "savedSearchRefName": { + "doc_values": false, + "index": false, "type": "keyword" }, "title": { "type": "text" }, "uiStateJSON": { + "index": false, "type": "text" }, "version": { "type": "integer" }, "visState": { + "index": false, "type": "text" } } + }, + "workplace_search_telemetry": { + "dynamic": "false", + "type": "object" } } + }, + "settings": { + "index": { + "number_of_replicas": "0", + "number_of_shards": "1" + } } } -} +} \ No newline at end of file diff --git a/test/common/services/deployment.ts b/test/common/services/deployment.ts index 510124ce3d1b7..65466ca966ad2 100644 --- a/test/common/services/deployment.ts +++ b/test/common/services/deployment.ts @@ -30,14 +30,6 @@ export function DeploymentProvider({ getService }: FtrProviderContext) { return getUrl.baseUrl(config.get('servers.elasticsearch')); }, - /** - * Helper to detect an OSS licensed Kibana - * Useful for functional testing in cloud environment - */ - async isOss() { - return config.get('kbnTestServer.serverArgs').indexOf('--oss') > -1; - }, - async isCloud(): Promise { const baseUrl = this.getHostPort(); const username = config.get('servers.kibana.username'); diff --git a/test/examples/expressions_explorer/expressions.ts b/test/examples/expressions_explorer/expressions.ts index 39afa177501d5..4c240653b5fdd 100644 --- a/test/examples/expressions_explorer/expressions.ts +++ b/test/examples/expressions_explorer/expressions.ts @@ -22,7 +22,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) { await retry.try(async () => { const text = await testSubjects.getVisibleText('expressionResult'); expect(text).to.be( - '{\n "type": "error",\n "error": {\n "message": "Function markdown could not be found.",\n "name": "fn not found"\n }\n}' + '{\n "type": "render",\n "as": "markdown",\n "value": {\n "content": "## expressions explorer",\n "font": {\n "type": "style",\n "spec": {\n "fontFamily": "\'Open Sans\', Helvetica, Arial, sans-serif",\n "fontWeight": "normal",\n "fontStyle": "normal",\n "textDecoration": "none",\n "textAlign": "left",\n "fontSize": "14px",\n "lineHeight": "1"\n },\n "css": "font-family:\'Open Sans\', Helvetica, Arial, sans-serif;font-weight:normal;font-style:normal;text-decoration:none;text-align:left;font-size:14px;line-height:1"\n },\n "openLinksInNewTab": false\n }\n}' ); }); }); @@ -30,7 +30,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) { it('renders expression', async () => { await retry.try(async () => { const text = await testSubjects.getVisibleText('expressionRender'); - expect(text).to.be('Function markdown could not be found.'); + expect(text).to.be('expressions explorer rendering'); }); }); diff --git a/test/functional/apps/home/_home.js b/test/functional/apps/home/_home.js index 056f3ec6f993c..24e672463964d 100644 --- a/test/functional/apps/home/_home.js +++ b/test/functional/apps/home/_home.js @@ -11,6 +11,7 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const browser = getService('browser'); const globalNav = getService('globalNav'); + const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects(['common', 'header', 'home']); describe('Kibana takes you home', function describeIndexTests() { @@ -25,7 +26,8 @@ export default function ({ getService, getPageObjects }) { }); it('clicking on console on homepage should take you to console app', async () => { - await PageObjects.home.clickSynopsis('console'); + await PageObjects.common.navigateToUrl('home'); + await testSubjects.click('homeDevTools'); const url = await browser.getCurrentUrl(); expect(url.includes('/app/dev_tools#/console')).to.be(true); }); diff --git a/test/functional/apps/home/_newsfeed.ts b/test/functional/apps/home/_newsfeed.ts index 449aeea013341..5b8b5a22cf439 100644 --- a/test/functional/apps/home/_newsfeed.ts +++ b/test/functional/apps/home/_newsfeed.ts @@ -11,7 +11,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const globalNav = getService('globalNav'); - const deployment = getService('deployment'); const PageObjects = getPageObjects(['newsfeed']); describe('Newsfeed', () => { @@ -38,16 +37,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('shows all news from newsfeed', async () => { const objects = await PageObjects.newsfeed.getNewsfeedList(); - if (await deployment.isOss()) { - expect(objects).to.eql([ - '21 June 2019\nYou are functionally testing the newsfeed widget with fixtures!\nSee test/common/fixtures/plugins/newsfeed/newsfeed_simulation\nGeneric feed-viewer could go here', - '21 June 2019\nStaging too!\nHello world\nGeneric feed-viewer could go here', - ]); - } else { - // can't shim the API in cloud so going to check that at least something is rendered - // to test that the API was called and returned something that could be rendered - expect(objects.length).to.be.above(0); - } + // can't shim the API in cloud so going to check that at least something is rendered + // to test that the API was called and returned something that could be rendered + expect(objects.length).to.be.above(0); }); it('clicking on newsfeed icon should close opened newsfeed', async () => { diff --git a/test/functional/apps/management/_scripted_fields.js b/test/functional/apps/management/_scripted_fields.js index fdbc419c16241..c7a4c8c51bf44 100644 --- a/test/functional/apps/management/_scripted_fields.js +++ b/test/functional/apps/management/_scripted_fields.js @@ -27,7 +27,6 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - const deployment = getService('deployment'); const log = getService('log'); const browser = getService('browser'); const retry = getService('retry'); @@ -187,16 +186,14 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await filterBar.removeAllFilters(); - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'Average of ram_Pain1' - ); - } + await filterBar.removeAllFilters(); + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + '@timestamp', + 'Median of ram_Pain1' + ); }); }); @@ -277,15 +274,12 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'Top values of painString' - ); - } + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + 'Top values of painString' + ); }); }); @@ -367,15 +361,12 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'Top values of painBool' - ); - } + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + 'Top values of painBool' + ); }); }); @@ -460,15 +451,10 @@ export default function ({ getService, getPageObjects }) { }); it('should visualize scripted field in vertical bar chart', async function () { - const isOss = await deployment.isOss(); - if (!isOss) { - await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); - await PageObjects.header.waitUntilLoadingHasFinished(); - // verify Lens opens a visualization - expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( - 'painDate' - ); - } + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain('painDate'); }); }); }); diff --git a/test/functional/apps/visualize/_chart_types.ts b/test/functional/apps/visualize/_chart_types.ts index 4ee6e3dac21b6..71bdc75d41d9c 100644 --- a/test/functional/apps/visualize/_chart_types.ts +++ b/test/functional/apps/visualize/_chart_types.ts @@ -35,6 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visualize.clickAggBasedVisualizations(); const expectedChartTypes = [ 'Area', + 'Coordinate Map', 'Data table', 'Gauge', 'Goal', @@ -43,6 +44,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'Line', 'Metric', 'Pie', + 'Region Map', 'Tag cloud', 'Timelion', 'Vertical bar', diff --git a/test/functional/apps/visualize/_tile_map.ts b/test/functional/apps/visualize/_tile_map.ts index 3af467affa1fb..719c2c48761f9 100644 --- a/test/functional/apps/visualize/_tile_map.ts +++ b/test/functional/apps/visualize/_tile_map.ts @@ -125,26 +125,26 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('Fit data bounds should zoom to level 3', async function () { const expectedPrecision2DataTable = [ - ['-', 'dr4', '127', { lat: 40, lon: -76 }], - ['-', 'dr7', '92', { lat: 41, lon: -74 }], - ['-', '9q5', '91', { lat: 34, lon: -119 }], - ['-', '9qc', '89', { lat: 38, lon: -122 }], - ['-', 'drk', '87', { lat: 41, lon: -73 }], - ['-', 'dps', '82', { lat: 42, lon: -84 }], - ['-', 'dph', '82', { lat: 40, lon: -84 }], - ['-', 'dp3', '79', { lat: 41, lon: -88 }], - ['-', 'dpe', '78', { lat: 42, lon: -86 }], - ['-', 'dp8', '77', { lat: 43, lon: -90 }], - ['-', 'dp6', '74', { lat: 41, lon: -87 }], - ['-', 'djv', '74', { lat: 33, lon: -83 }], - ['-', '9qh', '74', { lat: 34, lon: -118 }], - ['-', 'dpq', '73', { lat: 41, lon: -81 }], - ['-', 'dpp', '73', { lat: 40, lon: -80 }], - ['-', '9y7', '73', { lat: 35, lon: -97 }], - ['-', '9vg', '73', { lat: 32, lon: -97 }], - ['-', 'drs', '71', { lat: 42, lon: -73 }], - ['-', '9ys', '71', { lat: 37, lon: -95 }], - ['-', '9yn', '71', { lat: 34, lon: -93 }], + ['-', 'dn', '1,429', { lat: 36, lon: -85 }], + ['-', 'dp', '1,418', { lat: 41, lon: -85 }], + ['-', '9y', '1,215', { lat: 36, lon: -96 }], + ['-', '9z', '1,099', { lat: 42, lon: -96 }], + ['-', 'dr', '1,076', { lat: 42, lon: -74 }], + ['-', 'dj', '982', { lat: 31, lon: -85 }], + ['-', '9v', '938', { lat: 31, lon: -96 }], + ['-', '9q', '722', { lat: 36, lon: -120 }], + ['-', '9w', '475', { lat: 36, lon: -107 }], + ['-', 'cb', '457', { lat: 46, lon: -96 }], + ['-', 'c2', '453', { lat: 47, lon: -120 }], + ['-', '9x', '420', { lat: 41, lon: -107 }], + ['-', 'dq', '399', { lat: 37, lon: -78 }], + ['-', '9r', '396', { lat: 41, lon: -120 }], + ['-', '9t', '274', { lat: 32, lon: -107 }], + ['-', 'c8', '271', { lat: 47, lon: -107 }], + ['-', 'dh', '214', { lat: 26, lon: -82 }], + ['-', 'b6', '207', { lat: 60, lon: -162 }], + ['-', 'bd', '206', { lat: 59, lon: -153 }], + ['-', 'b7', '167', { lat: 64, lon: -163 }], ]; await PageObjects.tileMap.clickMapFitDataBounds(); diff --git a/test/functional/apps/visualize/index.ts b/test/functional/apps/visualize/index.ts index 747494a690c7e..4dff3eada1f24 100644 --- a/test/functional/apps/visualize/index.ts +++ b/test/functional/apps/visualize/index.ts @@ -14,8 +14,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { const log = getService('log'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - const deployment = getService('deployment'); - let isOss = true; describe('visualize app', () => { before(async () => { @@ -28,7 +26,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { defaultIndex: 'logstash-*', [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', }); - isOss = await deployment.isOss(); }); // TODO: Remove when vislib is removed @@ -66,11 +63,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_data_table')); loadTestFile(require.resolve('./_data_table_nontimeindex')); loadTestFile(require.resolve('./_data_table_notimeindex_filters')); - - // this check is not needed when the CI doesn't run anymore for the OSS - if (!isOss) { - loadTestFile(require.resolve('./_chart_types')); - } + loadTestFile(require.resolve('./_chart_types')); }); describe('', function () { @@ -98,11 +91,8 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_linked_saved_searches')); loadTestFile(require.resolve('./_visualize_listing')); loadTestFile(require.resolve('./_add_to_dashboard.ts')); - - if (isOss) { - loadTestFile(require.resolve('./_tile_map')); - loadTestFile(require.resolve('./_region_map')); - } + loadTestFile(require.resolve('./_tile_map')); + loadTestFile(require.resolve('./_region_map')); }); describe('', function () { diff --git a/test/functional/config.js b/test/functional/config.js index 1048bd72dc575..4a6791a3bc62f 100644 --- a/test/functional/config.js +++ b/test/functional/config.js @@ -14,6 +14,7 @@ export default async function ({ readConfigFile }) { return { testFiles: [ + require.resolve('./apps/status_page'), require.resolve('./apps/bundles'), require.resolve('./apps/console'), require.resolve('./apps/context'), @@ -23,7 +24,6 @@ export default async function ({ readConfigFile }) { require.resolve('./apps/home'), require.resolve('./apps/management'), require.resolve('./apps/saved_objects_management'), - require.resolve('./apps/status_page'), require.resolve('./apps/timelion'), require.resolve('./apps/visualize'), ], @@ -36,13 +36,15 @@ export default async function ({ readConfigFile }) { ...commonConfig.get('esTestCluster'), serverArgs: ['xpack.security.enabled=false'], }, + kbnTestServer: { ...commonConfig.get('kbnTestServer'), serverArgs: [ ...commonConfig.get('kbnTestServer.serverArgs'), - '--oss', '--telemetry.optIn=false', + '--xpack.security.enabled=false', '--savedObjects.maxImportPayloadBytes=10485760', + '--xpack.maps.showMapVisualizationTypes=true', ], }, diff --git a/test/functional/page_objects/home_page.ts b/test/functional/page_objects/home_page.ts index 05f7fb7eecb3d..f03f74ef8c61d 100644 --- a/test/functional/page_objects/home_page.ts +++ b/test/functional/page_objects/home_page.ts @@ -12,9 +12,7 @@ export function HomePageProvider({ getService, getPageObjects }: FtrProviderCont const testSubjects = getService('testSubjects'); const retry = getService('retry'); const find = getService('find'); - const deployment = getService('deployment'); const PageObjects = getPageObjects(['common']); - let isOss = true; class HomePage { async clickSynopsis(title: string) { @@ -72,10 +70,7 @@ export function HomePageProvider({ getService, getPageObjects }: FtrProviderCont async launchSampleDashboard(id: string) { await this.launchSampleDataSet(id); - isOss = await deployment.isOss(); - if (!isOss) { - await find.clickByLinkText('Dashboard'); - } + await find.clickByLinkText('Dashboard'); } async launchSampleDataSet(id: string) { diff --git a/test/scripts/jenkins_build_kibana.sh b/test/scripts/jenkins_build_kibana.sh index fa0c9522ef5fb..32fb98929e21c 100755 --- a/test/scripts/jenkins_build_kibana.sh +++ b/test/scripts/jenkins_build_kibana.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash +cd "$KIBANA_DIR" source src/dev/ci_setup/setup_env.sh if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then @@ -12,16 +13,50 @@ export KBN_NP_PLUGINS_BUILT=true echo " -> Ensuring all functional tests are in a ciGroup" node scripts/ensure_all_tests_in_ci_group; +echo " -> Ensuring all x-pack functional tests are in a ciGroup" +node x-pack/scripts/functional_tests --assert-none-excluded \ + --include-tag ciGroup1 \ + --include-tag ciGroup2 \ + --include-tag ciGroup3 \ + --include-tag ciGroup4 \ + --include-tag ciGroup5 \ + --include-tag ciGroup6 \ + --include-tag ciGroup7 \ + --include-tag ciGroup8 \ + --include-tag ciGroup9 \ + --include-tag ciGroup10 \ + --include-tag ciGroup11 \ + --include-tag ciGroup12 \ + --include-tag ciGroup13 \ + --include-tag ciGroupDocker + # Do not build kibana for code coverage run if [[ -z "$CODE_COVERAGE" ]] ; then - echo " -> building and extracting OSS Kibana distributable for use in functional tests" - node scripts/build --debug --oss + echo " -> building and extracting default Kibana distributable for use in functional tests" + node scripts/build --debug --no-oss echo " -> shipping metrics from build to ci-stats" node scripts/ship_ci_stats \ --metrics target/optimizer_bundle_metrics.json \ --metrics packages/kbn-ui-shared-deps/target/metrics.json - mkdir -p "$WORKSPACE/kibana-build-oss" - cp -pR build/oss/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build-oss/ + linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')" + installDir="$KIBANA_DIR/install/kibana" + mkdir -p "$installDir" + tar -xzf "$linuxBuild" -C "$installDir" --strip=1 + cp "$linuxBuild" "$WORKSPACE/kibana-default.tar.gz" + + mkdir -p "$WORKSPACE/kibana-build" + cp -pR install/kibana/. $WORKSPACE/kibana-build/ + + echo " -> Archive built plugins" + shopt -s globstar + tar -zcf \ + "$WORKSPACE/kibana-default-plugins.tar.gz" \ + x-pack/plugins/**/target/public \ + x-pack/test/**/target/public \ + examples/**/target/public \ + x-pack/examples/**/target/public \ + test/**/target/public + shopt -u globstar fi diff --git a/test/scripts/jenkins_build_load_testing.sh b/test/scripts/jenkins_build_load_testing.sh index a635e34bcbeda..dd9cedea9c4d4 100755 --- a/test/scripts/jenkins_build_load_testing.sh +++ b/test/scripts/jenkins_build_load_testing.sh @@ -64,8 +64,8 @@ installDir="$KIBANA_DIR/install/kibana" mkdir -p "$installDir" tar -xzf "$linuxBuild" -C "$installDir" --strip=1 -mkdir -p "$WORKSPACE/kibana-build-xpack" -cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ +mkdir -p "$WORKSPACE/kibana-build" +cp -pR install/kibana/. $WORKSPACE/kibana-build/ echo " -> Setup env for tests" source test/scripts/jenkins_test_setup_xpack.sh diff --git a/test/scripts/jenkins_build_plugins.sh b/test/scripts/jenkins_build_plugins.sh index 962a126ab2700..131bf0121fa14 100755 --- a/test/scripts/jenkins_build_plugins.sh +++ b/test/scripts/jenkins_build_plugins.sh @@ -4,10 +4,19 @@ source src/dev/ci_setup/setup_env.sh echo " -> building kibana platform plugins" node scripts/build_kibana_platform_plugins \ - --oss \ --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ --scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \ --scan-dir "$KIBANA_DIR/test/common/fixtures/plugins" \ --scan-dir "$KIBANA_DIR/examples" \ - --workers 6 \ - --verbose + --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ + --scan-dir "$KIBANA_DIR/test/common/fixtures/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_functional/plugins" \ + --scan-dir "$XPACK_DIR/test/functional_with_es_ssl/fixtures/plugins" \ + --scan-dir "$XPACK_DIR/test/alerting_api_integration/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_api_integration/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_api_perf/plugins" \ + --scan-dir "$XPACK_DIR/test/licensing_plugin/plugins" \ + --scan-dir "$XPACK_DIR/test/usage_collection/plugins" \ + --scan-dir "$XPACK_DIR/test/security_functional/fixtures/common" \ + --scan-dir "$XPACK_DIR/examples" \ + --workers 12 diff --git a/test/scripts/jenkins_test_setup_oss.sh b/test/scripts/jenkins_test_setup_oss.sh index 53626ce89462a..29d396667c465 100755 --- a/test/scripts/jenkins_test_setup_oss.sh +++ b/test/scripts/jenkins_test_setup_oss.sh @@ -3,11 +3,11 @@ source test/scripts/jenkins_test_setup.sh if [[ -z "$CODE_COVERAGE" ]]; then - destDir="$WORKSPACE/kibana-build-oss-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" + destDir="$WORKSPACE/kibana-build-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" if [[ ! -d $destDir ]]; then mkdir -p $destDir - cp -pR "$WORKSPACE/kibana-build-oss/." $destDir/ + cp -pR "$WORKSPACE/kibana-build/." $destDir/ fi export KIBANA_INSTALL_DIR="$destDir" diff --git a/test/scripts/jenkins_test_setup_xpack.sh b/test/scripts/jenkins_test_setup_xpack.sh index b9227fd8ff416..31acc4f4865e2 100755 --- a/test/scripts/jenkins_test_setup_xpack.sh +++ b/test/scripts/jenkins_test_setup_xpack.sh @@ -3,11 +3,11 @@ source test/scripts/jenkins_test_setup.sh if [[ -z "$CODE_COVERAGE" ]]; then - destDir="$WORKSPACE/kibana-build-xpack-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" + destDir="$WORKSPACE/kibana-build-${TASK_QUEUE_PROCESS_ID:-$CI_PARALLEL_PROCESS_NUMBER}" if [[ ! -d $destDir ]]; then mkdir -p $destDir - cp -pR "$WORKSPACE/kibana-build-xpack/." $destDir/ + cp -pR "$WORKSPACE/kibana-build/." $destDir/ fi export KIBANA_INSTALL_DIR="$(realpath $destDir)" diff --git a/test/scripts/jenkins_xpack_baseline.sh b/test/scripts/jenkins_xpack_baseline.sh index 2755a6e0a705d..93363687b39a9 100755 --- a/test/scripts/jenkins_xpack_baseline.sh +++ b/test/scripts/jenkins_xpack_baseline.sh @@ -17,8 +17,8 @@ installDir="$KIBANA_DIR/install/kibana" mkdir -p "$installDir" tar -xzf "$linuxBuild" -C "$installDir" --strip=1 -mkdir -p "$WORKSPACE/kibana-build-xpack" -cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ +mkdir -p "$WORKSPACE/kibana-build" +cp -pR install/kibana/. $WORKSPACE/kibana-build/ cd "$KIBANA_DIR" source "test/scripts/jenkins_xpack_saved_objects_field_metrics.sh" diff --git a/test/scripts/jenkins_xpack_build_kibana.sh b/test/scripts/jenkins_xpack_build_kibana.sh deleted file mode 100755 index b5fd7492d7961..0000000000000 --- a/test/scripts/jenkins_xpack_build_kibana.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env bash - -cd "$KIBANA_DIR" -source src/dev/ci_setup/setup_env.sh - -if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then - ./test/scripts/jenkins_xpack_build_plugins.sh -fi - -# doesn't persist, also set in kibanaPipeline.groovy -export KBN_NP_PLUGINS_BUILT=true - -echo " -> Ensuring all functional tests are in a ciGroup" -cd "$XPACK_DIR" -node scripts/functional_tests --assert-none-excluded \ - --include-tag ciGroup1 \ - --include-tag ciGroup2 \ - --include-tag ciGroup3 \ - --include-tag ciGroup4 \ - --include-tag ciGroup5 \ - --include-tag ciGroup6 \ - --include-tag ciGroup7 \ - --include-tag ciGroup8 \ - --include-tag ciGroup9 \ - --include-tag ciGroup10 \ - --include-tag ciGroup11 \ - --include-tag ciGroup12 \ - --include-tag ciGroup13 \ - --include-tag ciGroupDocker - -# Do not build kibana for code coverage run -if [[ -z "$CODE_COVERAGE" ]] ; then - echo " -> building and extracting default Kibana distributable for use in functional tests" - cd "$KIBANA_DIR" - node scripts/build --debug --no-oss - - echo " -> shipping metrics from build to ci-stats" - node scripts/ship_ci_stats \ - --metrics target/optimizer_bundle_metrics.json \ - --metrics packages/kbn-ui-shared-deps/target/metrics.json - - linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')" - installDir="$KIBANA_DIR/install/kibana" - mkdir -p "$installDir" - tar -xzf "$linuxBuild" -C "$installDir" --strip=1 - cp "$linuxBuild" "$WORKSPACE/kibana-default.tar.gz" - - mkdir -p "$WORKSPACE/kibana-build-xpack" - cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ - - echo " -> Archive built plugins" - shopt -s globstar - tar -zcf \ - "$WORKSPACE/kibana-default-plugins.tar.gz" \ - x-pack/plugins/**/target/public \ - x-pack/test/**/target/public \ - examples/**/target/public \ - x-pack/examples/**/target/public \ - test/**/target/public - shopt -u globstar -fi diff --git a/test/server_integration/http/ssl_redirect/index.js b/test/server_integration/http/ssl_redirect/index.js index bcd1b6f25ea51..8abe700e26149 100644 --- a/test/server_integration/http/ssl_redirect/index.js +++ b/test/server_integration/http/ssl_redirect/index.js @@ -17,7 +17,7 @@ export default function ({ getService }) { await supertest.get('/').expect('location', url).expect(302); - await supertest.get('/').redirects(1).expect('location', '/app/home').expect(302); + await supertest.get('/').redirects(1).expect('location', '/spaces/enter').expect(302); }); }); } diff --git a/vars/kibanaCoverage.groovy b/vars/kibanaCoverage.groovy index 74d3a67f4a1b8..63585a9f764e3 100644 --- a/vars/kibanaCoverage.groovy +++ b/vars/kibanaCoverage.groovy @@ -194,12 +194,12 @@ def runTests() { 'kibana-intake-agent': workers.intake('kibana-intake', './test/scripts/jenkins_unit.sh'), 'kibana-oss-agent' : workers.functional( 'kibana-oss-tests', - { kibanaPipeline.buildOss() }, + { kibanaPipeline.buildKibana() }, ossProks() ), 'kibana-xpack-agent' : workers.functional( 'kibana-xpack-tests', - { kibanaPipeline.buildXpack() }, + { kibanaPipeline.buildKibana() }, xpackProks() ), ]) diff --git a/vars/kibanaPipeline.groovy b/vars/kibanaPipeline.groovy index 6cccdfaefecba..31cd129d87749 100644 --- a/vars/kibanaPipeline.groovy +++ b/vars/kibanaPipeline.groovy @@ -303,33 +303,23 @@ def doSetup() { } } -def buildOss(maxWorkers = '') { - notifyOnError { - withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) { - runbld("./test/scripts/jenkins_build_kibana.sh", "Build OSS/Default Kibana") - } - } -} - def getBuildArtifactBucket() { def dir = env.ghprbPullId ? "pr-${env.ghprbPullId}" : buildState.get('checkoutInfo').branch.replace("/", "__") return "gs://ci-artifacts.kibana.dev/default-build/${dir}/${buildState.get('checkoutInfo').commit}" } -def buildXpack(maxWorkers = '', uploadArtifacts = false) { +def buildKibana(maxWorkers = '') { notifyOnError { withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) { - runbld("./test/scripts/jenkins_xpack_build_kibana.sh", "Build X-Pack Kibana") + runbld("./test/scripts/jenkins_build_kibana.sh", "Build Kibana") } - if (uploadArtifacts) { - withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') { - bash(""" - cd "${env.WORKSPACE}" - gsutil -q -m cp 'kibana-default.tar.gz' '${getBuildArtifactBucket()}/' - gsutil -q -m cp 'kibana-default-plugins.tar.gz' '${getBuildArtifactBucket()}/' - """, "Upload Default Build artifacts to GCS") - } + withGcpServiceAccount.fromVaultSecret('secret/kibana-issues/dev/ci-artifacts-key', 'value') { + bash(""" + cd "${env.WORKSPACE}" + gsutil -q -m cp 'kibana-default.tar.gz' '${getBuildArtifactBucket()}/' + gsutil -q -m cp 'kibana-default-plugins.tar.gz' '${getBuildArtifactBucket()}/' + """, "Upload Default Build artifacts to GCS") } } } @@ -443,14 +433,10 @@ def withDocker(Closure closure) { ) } -def buildOssPlugins() { +def buildPlugins() { runbld('./test/scripts/jenkins_build_plugins.sh', 'Build OSS Plugins') } -def buildXpackPlugins() { - runbld('./test/scripts/jenkins_xpack_build_plugins.sh', 'Build X-Pack Plugins') -} - def withTasks(Map params = [:], Closure closure) { catchErrors { def config = [setupWork: {}, worker: [:], parallel: 24] + params @@ -466,8 +452,7 @@ def withTasks(Map params = [:], Closure closure) { }, // There are integration tests etc that require the plugins to be built first, so let's go ahead and build them before set up the parallel workspaces - ossPlugins: { buildOssPlugins() }, - xpackPlugins: { buildXpackPlugins() }, + plugins: { buildPlugins() }, ]) config.setupWork() @@ -487,8 +472,11 @@ def allCiTasks() { tasks.check() tasks.lint() tasks.test() - tasks.functionalOss() - tasks.functionalXpack() + task { + buildKibana(16) + tasks.functionalOss() + tasks.functionalXpack() + } tasks.storybooksCi() } }, diff --git a/vars/tasks.groovy b/vars/tasks.groovy index 1d33fd1249681..e6061de2987ba 100644 --- a/vars/tasks.groovy +++ b/vars/tasks.groovy @@ -55,8 +55,8 @@ def xpackCiGroupDocker() { kibanaPipeline.downloadDefaultBuildArtifacts() kibanaPipeline.bash(""" cd '${env.WORKSPACE}' - mkdir -p kibana-build-xpack - tar -xzf kibana-default.tar.gz -C kibana-build-xpack --strip=1 + mkdir -p kibana-build + tar -xzf kibana-default.tar.gz -C kibana-build --strip=1 tar -xzf kibana-default-plugins.tar.gz -C kibana """, "Extract Default Build artifacts") kibanaPipeline.xpackCiGroupProcess('Docker', true)() @@ -75,8 +75,6 @@ def functionalOss(Map params = [:]) { ] task { - kibanaPipeline.buildOss(6) - if (config.ciGroups) { ossCiGroups() } @@ -115,8 +113,6 @@ def functionalXpack(Map params = [:]) { ] task { - kibanaPipeline.buildXpack(10, true) - if (config.ciGroups) { xpackCiGroups() xpackCiGroupDocker() From ea7582361d6e14320a353f2d86bca768e711ec3d Mon Sep 17 00:00:00 2001 From: Constance Date: Wed, 12 May 2021 12:33:10 -0700 Subject: [PATCH 055/144] [App Search] Schema reindex job errors view (#99941) * Set up ReindexJobLogic * Update ReindexJob view with load behavior & shared SchemaErrorsAccordion --- .../schema/reindex_job/reindex_job.test.tsx | 48 ++++++- .../schema/reindex_job/reindex_job.tsx | 32 ++++- .../reindex_job/reindex_job_logic.test.ts | 120 ++++++++++++++++++ .../schema/reindex_job/reindex_job_logic.ts | 64 ++++++++++ 4 files changed, 261 insertions(+), 3 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.test.tsx index 9e8386e2e8337..1755fbea5fb7b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.test.tsx @@ -5,26 +5,72 @@ * 2.0. */ +import { setMockValues, setMockActions } from '../../../../__mocks__'; import '../../../../__mocks__/react_router_history.mock'; +import '../../../../__mocks__/shallow_useeffect.mock'; +import '../../../__mocks__/engine_logic.mock'; import React from 'react'; import { useParams } from 'react-router-dom'; import { shallow } from 'enzyme'; +import { Loading } from '../../../../shared/loading'; +import { SchemaErrorsAccordion } from '../../../../shared/schema'; + import { ReindexJob } from './'; describe('ReindexJob', () => { const props = { schemaBreadcrumb: ['Engines', 'some-engine', 'Schema'], }; + const values = { + dataLoading: false, + fieldCoercionErrors: {}, + engine: { + schema: { + some_field: 'text', + }, + }, + }; + const actions = { + loadReindexJob: jest.fn(), + }; beforeEach(() => { (useParams as jest.Mock).mockReturnValueOnce({ reindexJobId: 'abc1234567890' }); + setMockValues(values); + setMockActions(actions); }); it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(SchemaErrorsAccordion)).toHaveLength(1); + expect(wrapper.find(SchemaErrorsAccordion).prop('generateViewPath')).toHaveLength(1); + }); + + it('calls loadReindexJob on page load', () => { shallow(); - // TODO: Check child components + + expect(actions.loadReindexJob).toHaveBeenCalledWith('abc1234567890'); + }); + + it('renders a loading state', () => { + setMockValues({ ...values, dataLoading: true }); + const wrapper = shallow(); + + expect(wrapper.find(Loading)).toHaveLength(1); + }); + + it('renders schema errors with links to document pages', () => { + const wrapper = shallow(); + const generateViewPath = wrapper + .find(SchemaErrorsAccordion) + .prop('generateViewPath') as Function; + + expect(generateViewPath('some-document-id')).toEqual( + '/engines/some-engine/documents/some-document-id' + ); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.tsx index 19da08d446300..576b4ae11603b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job.tsx @@ -5,15 +5,24 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect } from 'react'; import { useParams } from 'react-router-dom'; +import { useActions, useValues } from 'kea'; + import { EuiPageHeader, EuiPageContentBody } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FlashMessages } from '../../../../shared/flash_messages'; import { SetAppSearchChrome as SetPageChrome } from '../../../../shared/kibana_chrome'; import { BreadcrumbTrail } from '../../../../shared/kibana_chrome/generate_breadcrumbs'; +import { Loading } from '../../../../shared/loading'; +import { SchemaErrorsAccordion } from '../../../../shared/schema'; + +import { ENGINE_DOCUMENT_DETAIL_PATH } from '../../../routes'; +import { EngineLogic, generateEnginePath } from '../../engine'; + +import { ReindexJobLogic } from './reindex_job_logic'; interface Props { schemaBreadcrumb: BreadcrumbTrail; @@ -21,6 +30,17 @@ interface Props { export const ReindexJob: React.FC = ({ schemaBreadcrumb }) => { const { reindexJobId } = useParams() as { reindexJobId: string }; + const { loadReindexJob } = useActions(ReindexJobLogic); + const { dataLoading, fieldCoercionErrors } = useValues(ReindexJobLogic); + const { + engine: { schema }, + } = useValues(EngineLogic); + + useEffect(() => { + loadReindexJob(reindexJobId); + }, [reindexJobId]); + + if (dataLoading) return ; return ( <> @@ -39,7 +59,15 @@ export const ReindexJob: React.FC = ({ schemaBreadcrumb }) => { )} /> - {reindexJobId} + + + generateEnginePath(ENGINE_DOCUMENT_DETAIL_PATH, { documentId }) + } + /> + ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.test.ts new file mode 100644 index 0000000000000..b872ad3c914c6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.test.ts @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { LogicMounter, mockFlashMessageHelpers, mockHttpValues } from '../../../../__mocks__'; +import '../../../__mocks__/engine_logic.mock'; + +import { nextTick } from '@kbn/test/jest'; + +import { ReindexJobLogic } from './reindex_job_logic'; + +describe('ReindexJobLogic', () => { + const { mount } = new LogicMounter(ReindexJobLogic); + const { http } = mockHttpValues; + const { flashAPIErrors } = mockFlashMessageHelpers; + + const MOCK_RESPONSE = { + fieldCoercionErrors: { + some_erroring_field: [ + { + external_id: 'document-1', + error: "Value 'some text' cannot be parsed as a number", + }, + ], + another_erroring_field: [ + { + external_id: 'document-2', + error: "Value '123' cannot be parsed as a date", + }, + ], + }, + }; + + const DEFAULT_VALUES = { + dataLoading: true, + fieldCoercionErrors: {}, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('has expected default values', () => { + mount(); + expect(ReindexJobLogic.values).toEqual(DEFAULT_VALUES); + }); + + describe('actions', () => { + describe('onLoadSuccess', () => { + it('stores fieldCoercionErrors state and sets dataLoading to false', () => { + mount({ fieldCoercionErrors: {}, dataLoading: true }); + + ReindexJobLogic.actions.onLoadSuccess(MOCK_RESPONSE); + + expect(ReindexJobLogic.values).toEqual({ + ...DEFAULT_VALUES, + dataLoading: false, + fieldCoercionErrors: MOCK_RESPONSE.fieldCoercionErrors, + }); + }); + }); + + describe('onLoadError', () => { + it('sets dataLoading to false', () => { + mount({ dataLoading: true }); + + ReindexJobLogic.actions.onLoadError(); + + expect(ReindexJobLogic.values).toEqual({ + ...DEFAULT_VALUES, + dataLoading: false, + }); + }); + }); + }); + + describe('listeners', () => { + describe('loadReindexJob', () => { + it('sets dataLoading to true', () => { + mount({ dataLoading: false }); + + ReindexJobLogic.actions.loadReindexJob('some-job-id'); + + expect(ReindexJobLogic.values).toEqual({ + ...DEFAULT_VALUES, + dataLoading: true, + }); + }); + + it('should make an API call and then set schema state', async () => { + http.get.mockReturnValueOnce(Promise.resolve(MOCK_RESPONSE)); + mount(); + jest.spyOn(ReindexJobLogic.actions, 'onLoadSuccess'); + + ReindexJobLogic.actions.loadReindexJob('some-job-id'); + await nextTick(); + + expect(http.get).toHaveBeenCalledWith( + '/api/app_search/engines/some-engine/reindex_job/some-job-id' + ); + expect(ReindexJobLogic.actions.onLoadSuccess).toHaveBeenCalledWith(MOCK_RESPONSE); + }); + + it('handles errors', async () => { + http.get.mockReturnValueOnce(Promise.reject('error')); + mount(); + jest.spyOn(ReindexJobLogic.actions, 'onLoadError'); + + ReindexJobLogic.actions.loadReindexJob('some-bad-id'); + await nextTick(); + + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + expect(ReindexJobLogic.actions.onLoadError).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.ts new file mode 100644 index 0000000000000..8cc76f7f6e94f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/reindex_job/reindex_job_logic.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { flashAPIErrors } from '../../../../shared/flash_messages'; +import { HttpLogic } from '../../../../shared/http'; +import { EngineLogic } from '../../engine'; + +import { ReindexJobApiResponse } from '../types'; + +export interface ReindexJobValues { + dataLoading: boolean; + fieldCoercionErrors: ReindexJobApiResponse['fieldCoercionErrors']; +} + +export interface ReindexJobActions { + loadReindexJob(id: string): string; + onLoadSuccess(response: ReindexJobApiResponse): ReindexJobApiResponse; + onLoadError(): void; +} + +export const ReindexJobLogic = kea>({ + path: ['enterprise_search', 'app_search', 'reindex_job_logic'], + actions: { + loadReindexJob: (id) => id, + onLoadSuccess: (response) => response, + onLoadError: true, + }, + reducers: { + dataLoading: [ + true, + { + loadReindexJob: () => true, + onLoadSuccess: () => false, + onLoadError: () => false, + }, + ], + fieldCoercionErrors: [ + {}, + { + onLoadSuccess: (_, { fieldCoercionErrors }) => fieldCoercionErrors, + }, + ], + }, + listeners: ({ actions }) => ({ + loadReindexJob: async (id) => { + const { http } = HttpLogic.values; + const { engineName } = EngineLogic.values; + + try { + const response = await http.get(`/api/app_search/engines/${engineName}/reindex_job/${id}`); + actions.onLoadSuccess(response); + } catch (e) { + flashAPIErrors(e); + actions.onLoadError(); + } + }, + }), +}); From 5dec3db8c304b17238045a4cd5ed2124b736a11b Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Wed, 12 May 2021 15:38:43 -0400 Subject: [PATCH 056/144] [Uptime] Clear `selectedFilters` state when action payload is blank (#99851) * Clear `selectedFilters` state when action payload is blank. * Add tests. * Fix import error. --- .../state/reducers/selected_filters.test.ts | 76 +++++++++++++++++++ .../public/state/reducers/selected_filters.ts | 6 +- 2 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/uptime/public/state/reducers/selected_filters.test.ts diff --git a/x-pack/plugins/uptime/public/state/reducers/selected_filters.test.ts b/x-pack/plugins/uptime/public/state/reducers/selected_filters.test.ts new file mode 100644 index 0000000000000..f69af7bd1b5a3 --- /dev/null +++ b/x-pack/plugins/uptime/public/state/reducers/selected_filters.test.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { selectedFiltersReducer } from './selected_filters'; +import { + getSelectedFilters, + setSelectedFilters, + SelectedFilters, +} from '../actions/selected_filters'; +import { createAction } from 'redux-actions'; + +describe('selectedFiltersReducer', () => { + let state: SelectedFilters; + + beforeEach(() => { + state = { + locations: [], + ports: [], + schemes: ['http'], + tags: [], + }; + }); + + it('returns state by default', () => { + expect(selectedFiltersReducer(state, createAction('fake action')())).toEqual(state); + }); + + describe('setSelectedFilters', () => { + it('returns null for null payload', () => { + expect(selectedFiltersReducer(state, setSelectedFilters(null))).toBeNull(); + }); + + it('sets state to the action payload if state is null', () => { + expect( + selectedFiltersReducer( + null, + setSelectedFilters({ + locations: [], + ports: [5601], + schemes: [], + tags: [], + }) + ) + ).toEqual({ locations: [], ports: [5601], schemes: [], tags: [] }); + }); + + it('merges state and action payload', () => { + expect( + selectedFiltersReducer( + { + locations: [], + ports: [], + schemes: [], + tags: [], + }, + setSelectedFilters({ + locations: [], + ports: [5601], + schemes: [], + tags: ['prod'], + }) + ) + ).toEqual({ locations: [], ports: [5601], schemes: [], tags: ['prod'] }); + }); + }); + + describe('getSelectedFilters', () => { + it('returns the state', () => { + expect(selectedFiltersReducer(state, getSelectedFilters())).toEqual(state); + }); + }); +}); diff --git a/x-pack/plugins/uptime/public/state/reducers/selected_filters.ts b/x-pack/plugins/uptime/public/state/reducers/selected_filters.ts index fc24241331169..b5e3544b66156 100644 --- a/x-pack/plugins/uptime/public/state/reducers/selected_filters.ts +++ b/x-pack/plugins/uptime/public/state/reducers/selected_filters.ts @@ -19,14 +19,12 @@ export function selectedFiltersReducer( action: Action ): SelectedFilters | null { switch (action.type) { - case String(getSelectedFilters): - return state; case String(setSelectedFilters): - if (state === null) return { ...action.payload }; + if (action.payload === null) return null; return { - ...(state || {}), ...action.payload, }; + case String(getSelectedFilters): default: return state; } From 4803f28ef365e098165ffffb0a78003ee8452fa2 Mon Sep 17 00:00:00 2001 From: Constance Date: Wed, 12 May 2021 13:29:07 -0700 Subject: [PATCH 057/144] [App Search] Add red alert icon to Schema nav link if engine has schema reindex errors (#99976) * Add hasSchemaErrors selector * [Cleanup] Remove now-unused setIndexingStatus action - Was previous used onSuccess after schema was manually updated in the UI, but we now re-fetch all engine detail data instead (to get additional document/boost/relevance tuning info) and no longer need that specific setter * Add red alert/warning icon to Schema nav link * [Polish] Fix mobile UI when nav icons are present --- .../components/engine/engine_logic.test.ts | 41 +++++++++---------- .../components/engine/engine_logic.ts | 14 +++---- .../components/engine/engine_nav.test.tsx | 6 +++ .../components/engine/engine_nav.tsx | 15 ++++++- 4 files changed, 45 insertions(+), 31 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.test.ts index b9ec83db99f70..5435450f1bfdb 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.test.ts @@ -43,6 +43,7 @@ describe('EngineLogic', () => { engineName: '', isMetaEngine: false, isSampleEngine: false, + hasSchemaErrors: false, hasSchemaConflicts: false, hasUnconfirmedSchemaFields: false, engineNotFound: false, @@ -87,28 +88,6 @@ describe('EngineLogic', () => { }); }); - describe('setIndexingStatus', () => { - describe('engine', () => { - it('should set the nested obj property to the provided value', () => { - mount({ engine: mockEngineData }); - const mockReindexJob = { - percentageComplete: 50, - numDocumentsWithErrors: 2, - activeReindexJobId: '123', - }; - EngineLogic.actions.setIndexingStatus(mockReindexJob); - - expect(EngineLogic.values).toEqual({ - ...DEFAULT_VALUES, - engine: { - ...mockEngineData, - activeReindexJob: mockReindexJob, - }, - }); - }); - }); - }); - describe('setEngineNotFound', () => { describe('engineNotFound', () => { it('should be set to the provided value', () => { @@ -228,6 +207,24 @@ describe('EngineLogic', () => { }); }); + describe('hasSchemaErrors', () => { + it('should be set based on engine.activeReindexJob.numDocumentsWithErrors', () => { + const mockSchemaEngine = { + ...mockEngineData, + activeReindexJob: { + numDocumentsWithErrors: 10, + }, + }; + mount({ engine: mockSchemaEngine }); + + expect(EngineLogic.values).toEqual({ + ...DEFAULT_VALUES, + engine: mockSchemaEngine, + hasSchemaErrors: true, + }); + }); + }); + describe('hasSchemaConflicts', () => { it('should be set based on engine.schemaConflicts', () => { const mockSchemaEngine = { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts index 768a9e545b878..8fbf45bc85e52 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts @@ -8,7 +8,6 @@ import { kea, MakeLogicType } from 'kea'; import { HttpLogic } from '../../../shared/http'; -import { IIndexingStatus } from '../../../shared/schema/types'; import { EngineDetails, EngineTypes } from './types'; @@ -18,6 +17,7 @@ interface EngineValues { engineName: string; isMetaEngine: boolean; isSampleEngine: boolean; + hasSchemaErrors: boolean; hasSchemaConflicts: boolean; hasUnconfirmedSchemaFields: boolean; engineNotFound: boolean; @@ -26,7 +26,6 @@ interface EngineValues { interface EngineActions { setEngineData(engine: EngineDetails): { engine: EngineDetails }; setEngineName(engineName: string): { engineName: string }; - setIndexingStatus(activeReindexJob: IIndexingStatus): { activeReindexJob: IIndexingStatus }; setEngineNotFound(notFound: boolean): { notFound: boolean }; clearEngine(): void; initializeEngine(): void; @@ -37,7 +36,6 @@ export const EngineLogic = kea>({ actions: { setEngineData: (engine) => ({ engine }), setEngineName: (engineName) => ({ engineName }), - setIndexingStatus: (activeReindexJob) => ({ activeReindexJob }), setEngineNotFound: (notFound) => ({ notFound }), clearEngine: true, initializeEngine: true, @@ -55,10 +53,6 @@ export const EngineLogic = kea>({ { setEngineData: (_, { engine }) => engine, clearEngine: () => ({}), - setIndexingStatus: (state, { activeReindexJob }) => ({ - ...state, - activeReindexJob, - }), }, ], engineName: [ @@ -79,6 +73,12 @@ export const EngineLogic = kea>({ selectors: ({ selectors }) => ({ isMetaEngine: [() => [selectors.engine], (engine) => engine?.type === EngineTypes.meta], isSampleEngine: [() => [selectors.engine], (engine) => !!engine?.sample], + // Indexed engines + hasSchemaErrors: [ + () => [selectors.engine], + ({ activeReindexJob }) => activeReindexJob?.numDocumentsWithErrors > 0, + ], + // Meta engines hasSchemaConflicts: [ () => [selectors.engine], (engine) => !!(engine?.schemaConflicts && Object.keys(engine.schemaConflicts).length > 0), diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.test.tsx index 1781883aa6532..d913e3921bf1b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.test.tsx @@ -78,6 +78,12 @@ describe('EngineNav', () => { describe('schema nav icons', () => { const myRole = { canViewEngineSchema: true }; + it('renders schema errors alert icon', () => { + setMockValues({ ...values, myRole, hasSchemaErrors: true }); + const wrapper = shallow(); + expect(wrapper.find('[data-test-subj="EngineNavSchemaErrors"]')).toHaveLength(1); + }); + it('renders unconfirmed schema fields info icon', () => { setMockValues({ ...values, myRole, hasUnconfirmedSchemaFields: true }); const wrapper = shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx index 530accb501c41..4738209cee4a2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx @@ -70,6 +70,7 @@ export const EngineNav: React.FC = () => { dataLoading, isSampleEngine, isMetaEngine, + hasSchemaErrors, hasSchemaConflicts, hasUnconfirmedSchemaFields, engine, @@ -128,9 +129,19 @@ export const EngineNav: React.FC = () => { shouldShowActiveForSubroutes data-test-subj="EngineSchemaLink" > - + {SCHEMA_TITLE} + {hasSchemaErrors && ( + + )} {hasUnconfirmedSchemaFields && ( { to={generateEnginePath(ENGINE_RELEVANCE_TUNING_PATH)} data-test-subj="EngineRelevanceTuningLink" > - + {RELEVANCE_TUNING_TITLE} {invalidBoosts && ( From febaafecc0edc9872c7914f313dba01ee7ce874e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Casper=20H=C3=BCbertz?= Date: Wed, 12 May 2021 22:30:48 +0200 Subject: [PATCH 058/144] [APM] Add iOS agent icon (#99911) --- .../apm/public/components/shared/AgentIcon/get_agent_icon.ts | 4 ++++ .../apm/public/components/shared/AgentIcon/icons/ios.svg | 1 + .../apm/public/components/shared/AgentIcon/icons/ios_dark.svg | 1 + 3 files changed, 6 insertions(+) create mode 100644 x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios.svg create mode 100644 x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios_dark.svg diff --git a/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts b/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts index f916292b7f080..d848c0d3ccd7a 100644 --- a/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts +++ b/x-pack/plugins/apm/public/components/shared/AgentIcon/get_agent_icon.ts @@ -14,6 +14,8 @@ import defaultIcon from '../span_icon/icons/default.svg'; import dotNetIcon from './icons/dot-net.svg'; import erlangIcon from './icons/erlang.svg'; import goIcon from './icons/go.svg'; +import iosIcon from './icons/ios.svg'; +import darkIosIcon from './icons/ios_dark.svg'; import javaIcon from './icons/java.svg'; import nodeJsIcon from './icons/nodejs.svg'; import ocamlIcon from './icons/ocaml.svg'; @@ -31,6 +33,7 @@ const agentIcons: { [key: string]: string } = { dotnet: dotNetIcon, erlang: erlangIcon, go: goIcon, + ios: iosIcon, java: javaIcon, nodejs: nodeJsIcon, ocaml: ocamlIcon, @@ -44,6 +47,7 @@ const agentIcons: { [key: string]: string } = { const darkAgentIcons: { [key: string]: string } = { ...agentIcons, + ios: darkIosIcon, php: darkPhpIcon, rum: darkRumJsIcon, rust: darkRustIcon, diff --git a/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios.svg b/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios.svg new file mode 100644 index 0000000000000..d5b999a7ff042 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios_dark.svg b/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios_dark.svg new file mode 100644 index 0000000000000..16ea340ba150f --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/AgentIcon/icons/ios_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file From 4a56a01a08b27c45e48e7096942ca2374caafa63 Mon Sep 17 00:00:00 2001 From: Kaarina Tungseth Date: Wed, 12 May 2021 15:48:13 -0500 Subject: [PATCH 059/144] [DOCS] Adds runtime fields (#99395) * [DOCS] Runtime fields * [DOCS] Runtime fields * Adds examples and Lens changes * Review comments * Adds redirects * Review comments * Revert "Review comments" This reverts commit 537732a5cf9e92b69533601d07759fcc4b0b6f1b. * Review comments * Fixes broken link * Removes duplicate link Co-authored-by: Kaarina Tungseth --- docs/concepts/index-patterns.asciidoc | 79 +----- docs/concepts/index.asciidoc | 5 +- .../field-formatters/color-formatter.asciidoc | 9 +- .../duration-formatter.asciidoc | 4 +- .../string-formatter.asciidoc | 15 +- .../field-formatters/url-formatter.asciidoc | 27 +- docs/management/images/colorformatter.png | Bin 117834 -> 43985 bytes .../management/manage-index-patterns.asciidoc | 264 ++++++++++++++++++ docs/management/managing-fields.asciidoc | 134 --------- docs/maps/trouble-shooting.asciidoc | 2 +- docs/maps/vector-tooltips.asciidoc | 2 +- docs/redirects.asciidoc | 16 +- .../dashboard/images/manage-runtime-field.gif | Bin 0 -> 894958 bytes .../dashboard/images/runtime-field-menu.png | Bin 0 -> 30400 bytes docs/user/dashboard/lens.asciidoc | 25 ++ docs/user/management.asciidoc | 8 +- 16 files changed, 349 insertions(+), 241 deletions(-) create mode 100644 docs/management/manage-index-patterns.asciidoc delete mode 100644 docs/management/managing-fields.asciidoc create mode 100644 docs/user/dashboard/images/manage-runtime-field.gif create mode 100644 docs/user/dashboard/images/runtime-field-menu.png diff --git a/docs/concepts/index-patterns.asciidoc b/docs/concepts/index-patterns.asciidoc index 158fa6282e6fa..03bad72a317c6 100644 --- a/docs/concepts/index-patterns.asciidoc +++ b/docs/concepts/index-patterns.asciidoc @@ -10,10 +10,9 @@ or all indices that contain your data. It can also point to a You’ll learn how to: -* Create an index pattern -* Explore and configure the data fields +* Create index patterns * Set the default index pattern -* Delete an index pattern +* Delete index patterns [float] [[index-patterns-read-only-access]] @@ -133,77 +132,23 @@ To exclude a cluster, use `cluster_*:logstash-*,cluster_one:-*`. Once an index pattern is configured using the {ccs} syntax, all searches and aggregations using that index pattern in {kib} take advantage of {ccs}. - -[float] -[[reload-fields]] -=== Explore and configure the data fields - -To explore and configure the data fields in your index pattern, open the main menu, then click -*Stack Management > Index Patterns*. Each field has a {ref}/mapping.html[mapping], -which indicates the type of data the field contains in {es}, -such as strings or boolean values. The field mapping also determines -how you can use the field, such as whether it can be searched or aggregated. - -When a new field is added to the index, the index pattern field list is updated -the next time the index pattern is loaded, for example, when you load the page or -move between {kib} apps. - -[role="screenshot"] -image:management/index-patterns/images/new-index-pattern.png["Create index pattern"] - -[float] -=== Format the display of common field types - -Whenever possible, {kib} uses the same field type for display as -{es}. However, some field types that {es} supports are not available -in {kib}. Using field formatters, you can manually change the field type in {kib} to display your data the way you prefer -to see it, regardless of how it is stored in {es}. - -For example, if you store -date values in {es}, you can use a {kib} field formatter to change the display to mm/dd/yyyy format. -{kib} has field formatters for -<>, -<>, -<>, -and <>. - -To customize the displayed field name provided by {es}, you can -use *Custom Label* . - -A popularity counter keeps track of the fields you use most often. -The top five most popular fields and their values are displayed in <>. - -To edit the field display, click the edit icon -(image:management/index-patterns/images/edit_icon.png[]) in the index pattern detail view. - -[role="screenshot"] -image:management/index-patterns/images/edit-field-format.png["Edit field format"] - [float] -[[default-index-pattern]] -=== Set the default index pattern +[[delete-index-pattern]] +=== Delete index patterns -The first index pattern you create is automatically designated as the default pattern, -but you can set any index pattern as the default. The default index pattern is automatically selected when you first open <> or create a visualization from scratch. +When you delete an index pattern, you are unable to recover the associated field formatters, scripted fields, source filters, +and field popularity data. Deleting an index pattern does not remove any indices or data documents from {es}. -. In *Index patterns*, click the index pattern name. -. Click the star icon (image:management/index-patterns/images/star.png[Star icon]). +WARNING: Deleting an index pattern breaks all visualizations, saved searches, and other saved objects that reference the index pattern. -[float] -[[delete-index-pattern]] -=== Delete an index pattern +. Open the main menu, then click *Stack Management > Index Patterns*. -This action removes the pattern from the list of saved objects in {kib}. -You will not be able to recover field formatters, scripted fields, source filters, -and field popularity data associated with the index pattern. Deleting an -index pattern does not remove any indices or data documents from {es}. +. Click the index pattern you want to delete. -WARNING: Deleting an index pattern breaks all visualizations, saved searches, and other saved objects that reference the pattern. - -. In *Index patterns*, click the index pattern name. -. Click the delete icon (image:management/index-patterns/images/delete.png[Delete icon]). +. Delete (image:management/index-patterns/images/delete.png[Delete icon]) the index pattern. [float] +[[reload-fields]] === What’s next -* Learn about <> and how to create data on the fly. +Learn how to <> in your index patterns. diff --git a/docs/concepts/index.asciidoc b/docs/concepts/index.asciidoc index 74e5bd4d4fb2f..cb37dceb53564 100644 --- a/docs/concepts/index.asciidoc +++ b/docs/concepts/index.asciidoc @@ -49,10 +49,9 @@ that accesses the {kib} API. {kib} uses the index pattern to show you a list of fields, such as `event.duration`. You can customize the display name and format for each field. -For example, you can tell Kibana to display `event.duration` in seconds. +For example, you can tell {kib} to display `event.duration` in seconds. {kib} has <> for strings, -dates, geopoints, -and numbers. +dates, geopoints, and numbers. [float] [[kibana-concepts-searching-your-data]] diff --git a/docs/management/field-formatters/color-formatter.asciidoc b/docs/management/field-formatters/color-formatter.asciidoc index d9ba5e9be1165..488fb37153799 100644 --- a/docs/management/field-formatters/color-formatter.asciidoc +++ b/docs/management/field-formatters/color-formatter.asciidoc @@ -1,10 +1,5 @@ -The `Color` field formatter enables you to specify colors with specific ranges of values for a numeric field. +The *Color* field formatter enables you to specify colors with ranges of values for a number field. -When you select the `Color` field formatter, Kibana displays the *Range*, *Font Color*, *Background Color*, and -*Example* fields. - -Click the *Add Color* button to add a range of values to associate with a particular color. You can click in the *Font -Color* and *Background Color* fields to display a color picker. You can also enter a specific hex code value in the -field. The effect of your current color choices are displayed in the *Example* field. +When you select the *Color* formatter, click *Add Color*, then specify the *Range*, *Text color*, and *Background color*. image::images/colorformatter.png[] diff --git a/docs/management/field-formatters/duration-formatter.asciidoc b/docs/management/field-formatters/duration-formatter.asciidoc index 36a73f61f6227..873a4ac94c291 100644 --- a/docs/management/field-formatters/duration-formatter.asciidoc +++ b/docs/management/field-formatters/duration-formatter.asciidoc @@ -1,4 +1,4 @@ -The `Duration` field formatter can display the numeric value of a field in the following increments: +The *Duration* field formatter displays the numeric value of a field in the following increments: * Picoseconds * Nanoseconds @@ -12,4 +12,4 @@ The `Duration` field formatter can display the numeric value of a field in the f * Months * Years -You can specify these increments with up to 20 decimal places for both input and output formats. +You can specify these increments with up to 20 decimal places for input and output formats. diff --git a/docs/management/field-formatters/string-formatter.asciidoc b/docs/management/field-formatters/string-formatter.asciidoc index ed3aa45873284..f32eee7dc8396 100644 --- a/docs/management/field-formatters/string-formatter.asciidoc +++ b/docs/management/field-formatters/string-formatter.asciidoc @@ -1,11 +1,20 @@ -The `String` field formatter can apply the following transformations to the field's contents: +The *String* field formatter enables you to apply transforms to the field. + +Supported transformations include: * Convert to lowercase + * Convert to uppercase + * Convert to title case -* Apply the short dots transformation, which replaces the content before a `.` character with the first character of -that content, as in the following example: + +* Apply the short dots transformation, which replaces the content before the `.` character with the first character of +the content. For example: [horizontal] *Original*:: *Becomes* `com.organizations.project.ClassName`:: `c.o.p.ClassName` + +* Base64 decode + +* URL param decode diff --git a/docs/management/field-formatters/url-formatter.asciidoc b/docs/management/field-formatters/url-formatter.asciidoc index 41d4f75603dc6..8b0e43c9f2496 100644 --- a/docs/management/field-formatters/url-formatter.asciidoc +++ b/docs/management/field-formatters/url-formatter.asciidoc @@ -1,33 +1,32 @@ -The `Url` field formatter can take on the following types: +You can specify the following types to the `Url` field formatter: -* The *Link* type turn the contents of the field into an URL. -* The *Image* type can be used to specify an image directory where a specified image is located. -* The *Audio* type can be used to specify an audio directory where a specified audio file is located. +* *Link* — Converts the contents of the field into an URL. You can specify the width and height of the image, while keeping the aspect ratio. +When the image is smaller than the specified paramters, the image is unable to upscale. +* *Image* — Specifies the image directory. +* *Audio* — Specify the audio directory. -For an *Image* type you can specify width and height attributes. These will be used to set the max width / max height of the image, while keeping the aspect ratio. Image will not be upscaled if it's smaller than the provided size parameters. - -You can customize either type of URL field formats with templates. A _URL template_ enables you to add specific values -to a partial URL. Use the string `{{value}}` to add the contents of the field to a fixed URL. +To customize URL field formats, use templates. An *URL template* enables you to add values +to a partial URL. To add the contents of the field to a fixed URL, use the `{{value}}` string. For example, when: * A field contains a user ID -* That field uses the `Url` field formatter +* A field uses the `Url` field formatter * The URI template is `http://company.net/profiles?user_id={­{value}­}` The resulting URL replaces `{{value}}` with the user ID from the field. The `{{value}}` template string URL-encodes the contents of the field. When a field encoded into a URL contains -non-ASCII characters, these characters are replaced with a `%` character and the appropriate hexadecimal code. For +non-ASCII characters, the characters are replaced with a `%` character and the appropriate hexadecimal code. For example, field contents `users/admin` result in the URL template adding `users%2Fadmin`. -When the formatter type is set to *Image*, the `{{value}}` template string specifies the name of an image at the +When the formatter type is *Image*, the `{{value}}` template string specifies the name of an image at the specified URI. -When the formatter type is set to *Audio*, the `{{value}}` template string specifies the name of an audio file at the specified URI. +When the formatter type is *Audio*, the `{{value}}` template string specifies the name of an audio file at the specified URI. -In order to pass unescaped values directly to the URL, use the `{{rawValue}}` string. +To pass unescaped values directly to the URL, use the `{{rawValue}}` string. -A _Label Template_ enables you to specify a text string that displays instead of the raw URL. You can use the +A *Label template* enables you to specify a text string that appears instead of the raw URL. You can use the `{{value}}` template string normally in label templates. You can also use the `{{url}}` template string to display the formatted URL. diff --git a/docs/management/images/colorformatter.png b/docs/management/images/colorformatter.png index df5dc34dd31e51a650fc189103b18091c727f3b6..3c2cfad62d76a0fda9418e365c35f33ee42410c6 100644 GIT binary patch literal 43985 zcmZ^~1z2237bu9kLvSZ(aMy;$-Gc|W4({&m65JtZaMuKH+zIYZ2oAwv$;@QtfBSa3 zzuQ%P%TJxE;}Ob=Qm9CTNDvSZs4~*xst^!R;jj7c2ym~zvtY>WLlqnm1Yc(kga-*DG(7r3iCZ?G#PO;2wF zA7cYry$9m6N_VprN;LU>9rIvC9F6S0Q!}xH)>o&?;s&fyVEw#VH{m0xk&tLP4o;dwF@O=OU7J50fON*j{pG+i3I`unuC1(LO>Ei!2Xqo zfRKeG`Zuo%N%v13C~p{|JBSHWd8rt?03oE&Hh@~-@^(1 z?u=g<)k)~1zCPW_F0zw2rMjWW_4*Amu*89Ui@=Yy1)5zPAXf}?%QHron+#w38 zwn(5Q+nZ(IW!syh6W99PVg)gUjL@n0G(K~4NdnWw6eeBV`p4`S5B}+c`>(V^jCZ3G z7o*vHVlSD?y?D6ov@+P=6(yj4(YbC;ri`-fVB* z_9=X;s7c*u-EBAWbMd%@`zYe!(JDqs=i^TeKI;bh+R@N=i>PFM8oU8?x-$@ zvk&w7=^L?ObD6~e?i?E;h@c57XO_7kuyF|)4t0t(!7naU-SjjJftOZapQ)MVFj!$w zAjP_VCjptLkQCvv8;ZG#C7_vN6%`dsE=B1)7Qe$N9Bgd0BW^1`+fcDEG`0Dv4-B8j z%}pmQS|`agu7DL>Wcb#dIIn{ zmV{r~*%^iUEoar7ImYN?LE^9=dGLXOyL(G~%k;ErWMrf%mX?GuMQ_Ax_>iTiCqEZx zI+&7*vb3Q>9>I+66PO*X7l@l7N|tc#V6)-RK3}D;U`E}~X|x4XCO2GZ9Rd4iF~8T; z!iQPP9frcr>2puZX}iKp$mZP=pIaoqm%^ycP`Tdu0^##(kzJ?N@r}(&L&P47mPotX zX)!7h_w-VumBjO40@c-&6q(w`ABaosc4RI`bIEg+x|)j*1Tz-lV3v39GR?i&KS{>o z1BGAiI-PuTM<4HyEx&*HPWjS<%rZ4yG(yLaID}g=kiY7D!acX3E_{*%0D1e72E;3464$)Y9b9i{TOl@EBYCu?s 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 Ns-mVsnVfm({{!E_Nsj;k diff --git a/docs/management/manage-index-patterns.asciidoc b/docs/management/manage-index-patterns.asciidoc new file mode 100644 index 0000000000000..94870733174ad --- /dev/null +++ b/docs/management/manage-index-patterns.asciidoc @@ -0,0 +1,264 @@ +[[managing-index-patterns]] +== Manage index pattern data fields + +To customize the data fields in your index pattern, you can add runtime fields to the existing documents, add scrited fields to compute data on the fly, and change how {kib} displays the data fields. + +[float] +[[runtime-fields]] +=== Explore your data with runtime fields + +Runtime fields are fields that you add to documents after you've ingested, and are evaluated at query time. With runtime fields, you allow for a smaller index and faster ingest time so that you can use less resources and reduce your operating costs. You can use runtime fields anywhere index patterns are used. + +When you use runtime fields, you can: + +* Define fields for a specific use without modifying the underlying schema. + +* Override the returned values from index fields. + +* Start working on your data without first understanding the structure. + +* Add fields to existing documents without reindexing your data. + +* Explore runtime field data in *Discover*. + +* Create visualizations with runtime field data using *Lens*, *Maps*, and *TSVB*. + +WARNING: Runtime fields can impact {kib} performance. When you run a query, {es} uses the fields you index first to shorten the response time. +Index the fields that you commonly search for and filter on, such as `timestamp`, then use runtime fields to limit the number of fields {es} uses to calculate values. + +For more information, refer to {ref}/runtime.html[Runtime fields]. + +[float] +[[create-runtime-fields]] +==== Create runtime fields + +Create runtime fields in your index patterns, or create runtime fields in *Discover* and *Lens*. + +. Open the main menu, then click *Stack Management > Index Patterns*. + +. Select the index pattern you want to add the runtime field to, then click *Add field*. + +. Enter a *Name* for the runtime field, then select the field *Type*. + +. Select *Set value*, then define the field value by emitting a single value using the {ref}/modules-scripting-painless.html[Painless scripting language]. ++ +The script must match the field *Type*, or the script fails. + +. Click *Create field*. +//+ +//For information on how to create runtime fields in *Discover*, refer to <>. ++ +For information on how to create runtime fields in *Lens*, refer to <>. + +[float] +[[runtime-field-examples]] +==== Runtime field examples + +Try the runtime field examples on your own using the *Sample web logs* data index pattern. + +[float] +[[simple-hello-world-example]] +==== Return a keyword value + +To return `Hello World!` value: + +[source,text] +---- +emit("Hello World!"); +---- + +[float] +[[perform-a-calculation-on-a-single-field]] +===== Perform a calculation on a single field + +Calculate kilobytes from bytes: + +[source,text] +---- +emit(doc['bytes'].value / 1024) +---- + +[float] +[[return-substring]] +===== Return a substring + +Return the string that appears after the last slash in the URL: + +[source,text] +---- +def path = doc["url.keyword"].value; +if (path != null) { + int lastSlashIndex = path.lastIndexOf('/'); + if (lastSlashIndex > 0) { + emit(path.substring(lastSlashIndex+1)); + return; + } +} +emit(""); +---- + +[float] +[[replace-nulls-with-blanks]] +===== Replace nulls with blanks + +Replace null values with none values: + +[source,text] +---- +def source = doc['referer'].value; +if (source != null) { + emit(source); + return; +} +else { + emit("None"); +} +---- + +Specify operating system condition: + +[source,text] +---- +def source = doc['machine.os.keyword'].value; +if (source != "") { + emit(source); +} +else { + emit("None"); +} +---- + +[float] +[[manage-runtime-fields]] +==== Manage runtime fields + +Edit the settings for runtime fields, or remove runtime fields from index patterns. + +. Open the main menu, then click *Stack Management > Index Patterns*. + +. Select the index pattern that contains the runtime field you want to manage, then open the runtime field edit options or delete the runtime field. + +[float] +[[scripted-fields]] +=== Add scripted fields to index patterns + +deprecated::[7.13,Use {ref}/runtime.html[runtime fields] instead of scripted fields. Runtime fields support Painless scripts and provide greater flexibility.] + +Scripted fields compute data on the fly from the data in your {es} indices. The data is shown on +the Discover tab as part of the document data, and you can use scripted fields in your visualizations. You query scripted fields with the <>, and can filter them using the filter bar. The scripted field values are computed at query time, so they aren't indexed and cannot be searched using the {kib} default +query language. + +WARNING: Computing data on the fly with scripted fields can be very resource intensive and can have a direct impact on +{kib} performance. Keep in mind that there's no built-in validation of a scripted field. If your scripts are +buggy, you'll get exceptions whenever you try to view the dynamically generated data. + +When you define a scripted field in {kib}, you have a choice of the {ref}/modules-scripting-expression.html[Lucene expressions] or the +{ref}/modules-scripting-painless.html[Painless] scripting language. + +You can reference any single value numeric field in your expressions, for example: + +---- +doc['field_name'].value +---- + +For more information on scripted fields and additional examples, refer to +https://www.elastic.co/blog/using-painless-kibana-scripted-fields[Using Painless in {kib} scripted fields] + +[float] +[[create-scripted-field]] +==== Create scripted fields + +Create and add scripted fields to your index patterns. + +. Open the main menu, then click *Stack Management > Index Patterns*. + +. Select the index pattern you want to add a scripted field to. + +. Select the *Scripted fields* tab, then click *Add scripted field*. + +. Enter a *Name* for the scripted field, then enter the *Script* you want to use to compute a value on the fly from your index data. + +. Click *Create field*. + +For more information about scripted fields in {es}, refer to {ref}/modules-scripting.html[Scripting]. + +[float] +[[update-scripted-field]] +==== Manage scripted fields + +. Open the main menu, then click *Stack Management > Index Patterns*. + +. Select the index pattern that contains the scripted field you want to manage. + +. Select the *Scripted fields* tab, then open the scripted field edit options or delete the scripted field. + +WARNING: Built-in validation is unsupported for scripted fields. When your scripts contain errors, you receive +exceptions when you view the dynamically generated data. + +[float] +[[managing-fields]] +=== Format data fields + +{kib} uses the same field types as {es}, however, some {es} field types are unsupported in {kib}. +To customize how {kib} displays data fields, use the formatting options. + +. Open the main menu, then click *Stack Management > Index Patterns*. + +. Click the index pattern that contains the field you want to change. + +. Find the field, then open the edit options (image:management/index-patterns/images/edit_icon.png[Data field edit icon]). + +. Select *Set custom label*, then enter a *Custom label* for the field. + +. Select *Set format*, then enter the *Format* for the field. + +[float] +[[string-field-formatters]] +==== String field formatters + +String fields support *String* and *Url* formatters. + +include::field-formatters/string-formatter.asciidoc[] + +include::field-formatters/url-formatter.asciidoc[] + +[float] +[[field-formatters-date]] +==== Date field formatters + +Date fields support *Date*, *String*, and *Url* formatters. + +The *Date* formatter enables you to choose the display format of date stamps using the https://momentjs.com/[moment.js] +standard format definitions. + +include::field-formatters/string-formatter.asciidoc[] + +include::field-formatters/url-formatter.asciidoc[] + +[float] +[[field-formatters-geopoint]] +==== Geographic point field formatters + +Geographic point fields support the *String* formatter. + +include::field-formatters/string-formatter.asciidoc[] + +[float] +[[field-formatters-numeric]] +==== Number field formatters + +Numeric fields support *Bytes*, *Color*, *Duration*, *Histogram*, *Number*, *Percentage*, *String*, and *Url* formatters. + +The *Bytes*, *Number*, and *Percentage* formatters enable you to choose the display formats of numbers in the field using +the <> syntax that {kib} maintains. + +The *Histogram* formatter is used only for the {ref}/histogram.html[histogram field type]. When you use the *Histogram* formatter, +you can apply the *Bytes*, *Number*, or *Percentage* format to aggregated data. + +include::field-formatters/url-formatter.asciidoc[] + +include::field-formatters/string-formatter.asciidoc[] + +include::field-formatters/duration-formatter.asciidoc[] + +include::field-formatters/color-formatter.asciidoc[] \ No newline at end of file diff --git a/docs/management/managing-fields.asciidoc b/docs/management/managing-fields.asciidoc deleted file mode 100644 index 505f6853c7906..0000000000000 --- a/docs/management/managing-fields.asciidoc +++ /dev/null @@ -1,134 +0,0 @@ -[[managing-fields]] -== Field management - -Whenever possible, -{kib} uses the same field type for display as {es}. However, a few field types -{es} supports are not available in {kib}. Use field formatters to customize how your -fields are displayed in Kibana, regardless of how they are stored in {es}. - -Kibana provides these field formatters: - -* <> -* <> -* <> -* <> - -To format a field: - -. Open the main menu, and click *Stack Management > Index Patterns*. -. Click the index pattern that contains the field you want to format. -. Find the field you want to format and click the edit icon (image:management/index-patterns/images/edit_icon.png[]). -. Enter a custom label for the field, if needed. -. Select a format and fill in the details. -+ -[role="screenshot"] -image:management/index-patterns/images/edit-field-format.png["Edit field format"] - - - -[[field-formatters-string]] -=== String field formatters - -String fields support the `String` and `Url` formatters. - -include::field-formatters/string-formatter.asciidoc[] - -include::field-formatters/url-formatter.asciidoc[] - -[[field-formatters-date]] -=== Date field formatters - -Date fields support the `Date`, `Url`, and `String` formatters. - -The `Date` formatter enables you to choose the display format of date stamps using the https://momentjs.com/[moment.js] -standard format definitions. - -include::field-formatters/string-formatter.asciidoc[] - -include::field-formatters/url-formatter.asciidoc[] - -[[field-formatters-geopoint]] -=== Geographic point field formatters - -Geographic point fields support the `String` formatter. - -include::field-formatters/string-formatter.asciidoc[] - -[[field-formatters-numeric]] -=== Numeric field formatters - -Numeric fields support the `Url`, `Bytes`, `Duration`, `Number`, `Percentage`, `Histogram`, `String`, and `Color` formatters. - -The `Bytes`, `Number`, and `Percentage` formatters enable you to choose the display formats of numbers in this field using -the <> syntax that {kib} maintains. - -The `Histogram` formatter is only used for the {ref}/histogram.html[histogram field type]. When using the `Histogram` formatter, -you can apply the `Number`, `Bytes`, or `Percentage` format to the aggregated data. - -`Number`, and `Percentage` formatters enable you to choose the display formats of numbers in this field using -the <> syntax that {kib} maintains. - -include::field-formatters/url-formatter.asciidoc[] - -include::field-formatters/string-formatter.asciidoc[] - -include::field-formatters/duration-formatter.asciidoc[] - -include::field-formatters/color-formatter.asciidoc[] - -[[scripted-fields]] -=== Scripted fields -deprecated::[7.13,Use {ref}/runtime.html[runtime fields] instead of scripted fields. Runtime fields support Painless scripts and provide greater flexibility.] - -Scripted fields compute data on the fly from the data in your {es} indices. The data is shown on -the Discover tab as part of the document data, and you can use scripted fields in your visualizations. You query scripted fields with the <>, and can filter them using the filter bar. The scripted field values are computed at query time, so they aren't indexed and cannot be searched using the {kib} default -query language. - -WARNING: Computing data on the fly with scripted fields can be very resource intensive and can have a direct impact on -{kib} performance. Keep in mind that there's no built-in validation of a scripted field. If your scripts are -buggy, you'll get exceptions whenever you try to view the dynamically generated data. - -When you define a scripted field in {kib}, you have a choice of the {ref}/modules-scripting-expression.html[Lucene expressions] or the -{ref}/modules-scripting-painless.html[Painless] scripting language. - -You can reference any single value numeric field in your expressions, for example: - ----- -doc['field_name'].value ----- - -For more information on scripted fields and additional examples, refer to -https://www.elastic.co/blog/using-painless-kibana-scripted-fields[Using Painless in {kib} scripted fields] - -[float] -[[create-scripted-field]] -=== Create a scripted field - -. Open the main menu, then click *Stack Management > Index Patterns*. -. Select the index pattern you want to add a scripted field to. -. Go to the *Scripted fields* tab for the index pattern, then click *Add scripted field*. -. Enter a name for the scripted field. -. Enter the expression that you want to use to compute a value on the fly from your index data. -. Click *Create field*. - -For more information about scripted fields in {es}, see -{ref}/modules-scripting.html[Scripting]. - -[float] -[[update-scripted-field]] -=== Update a scripted field - -. Click the *Scripted fields* tab for the index pattern. -. Click the *Edit* button for the scripted field you want to change. -. Make your changes, then click *Save field*. - -WARNING: Built-in validation is unsupported for scripted fields. If your scripts are buggy, you'll get -exceptions whenever you try to view the dynamically generated data. - -[float] -[[delete-scripted-field]] -=== Delete a scripted field - -. Click the *Scripted fields* tab for the index pattern. -. Click *Delete* for the scripted field you want to remove. -. Click *Delete* on the confirmation window. diff --git a/docs/maps/trouble-shooting.asciidoc b/docs/maps/trouble-shooting.asciidoc index 0e1ed0b9e1bec..a58e8ac8902b8 100644 --- a/docs/maps/trouble-shooting.asciidoc +++ b/docs/maps/trouble-shooting.asciidoc @@ -26,7 +26,7 @@ image::maps/images/inspector.png[] * Verify your geospatial data is correctly mapped as {ref}/geo-point.html[geo_point] or {ref}/geo-shape.html[geo_shape]. ** Run `GET myIndexPatternTitle/_field_caps?fields=myGeoFieldName` in <>, replacing `myIndexPatternTitle` and `myGeoFieldName` with your index pattern title and geospatial field name. ** Ensure response specifies `type` as `geo_point` or `geo_shape`. -* Verify your geospatial data is correctly mapped in your <>. +* Verify your geospatial data is correctly mapped in your <>. ** Open your index pattern in <>. ** Ensure your geospatial field type is `geo_point` or `geo_shape`. ** Ensure your geospatial field is searchable and aggregatable. diff --git a/docs/maps/vector-tooltips.asciidoc b/docs/maps/vector-tooltips.asciidoc index b0498c9088e4e..2dda35aa28f76 100644 --- a/docs/maps/vector-tooltips.asciidoc +++ b/docs/maps/vector-tooltips.asciidoc @@ -18,7 +18,7 @@ image::maps/images/multifeature_tooltip.png[] ==== Format tooltips You can format the attributes in a tooltip by adding <> to your -Kibana index pattern. You can use field formatters to round numbers, provide units, +index pattern. You can use field formatters to round numbers, provide units, and even display images in your tooltip. [float] diff --git a/docs/redirects.asciidoc b/docs/redirects.asciidoc index 4aedb0f516b20..a14bda2bf5a98 100644 --- a/docs/redirects.asciidoc +++ b/docs/redirects.asciidoc @@ -279,26 +279,32 @@ This content has moved. Refer to <>. [role="exclude",id="ingest-node-pipelines"] == Ingest Node Pipelines -This content has moved. See {ref}/ingest.html[Ingest pipelines]. +This content has moved. Refer to {ref}/ingest.html[Ingest pipelines]. [role="exclude",id="create-panels-with-timelion"] == Timelion -This content has moved. refer to <>. +This content has moved. Refer to <>. [role="exclude",id="space-rbac-tutorial"] == Tutorial: Use role-based access control to customize Kibana spaces -This content has moved. refer to <>. +This content has moved. Refer to <>. [role="exclude",id="search"] == Search your data -This content has moved. refer to <>. +This content has moved. Refer to <>. [role="exclude",id="discover-document-context"] == View surrounding documents -This content has moved. refer to <>. +This content has moved. Refer to <>. + +[role="exclude",id="field-formatters-string"] +== String field formatters + +This content has moved. Refer to <>. + diff --git a/docs/user/dashboard/images/manage-runtime-field.gif b/docs/user/dashboard/images/manage-runtime-field.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6ecf0caf818012d03d6c7eecbd522d0b43364b8 GIT binary patch literal 894958 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 z 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

    h=1U;t0=R#206s=$qYc1A=8Hv9-fa3@pHi~)Zb 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ɣi_>b7b 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≈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%0DCXej6ZyrUbtG*6<=d{Q%l~%;^spF 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�D;;`*7x(TP)3550SpKS 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 }Ek$345rd9%Vk^aCgV`j3 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 TdlDYk00000NkvXXu0mjf96h?K literal 0 HcmV?d00001 diff --git a/docs/discover/images/hello-field.png b/docs/discover/images/hello-field.png new file mode 100644 index 0000000000000000000000000000000000000000..07d97e054d7ecbeba7b25b2afccdd01176085006 GIT binary patch literal 38300 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%0AOG7!>;dG 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. + [float] [[search-in-discover]] @@ -186,7 +223,8 @@ You can bookmark this document and share the link. === Save your search for later use Save your search so you can repeat it later, generate a CSV report, or use it in visualizations, dashboards, and Canvas workpads. -Saving a search saves the query and the filters. +Saving a search saves the query text, filters, +and current view of *Discover*—the columns selected in the document table, the sort order, and the index pattern. . In the toolbar, click **Save**. From 6d80bf7a217dafc2740c0f8a4e75cf31081e8d45 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Wed, 12 May 2021 15:55:37 -0600 Subject: [PATCH 063/144] [Security Solutions] Removes circular dependencies and introduces kbn-security-solution-es-utils package (#99828) ## Summary Fixes the hopefully last circular dependency issues between security solutions and lists. * Adds a package of `@kbn/securitysolution-es-utils` and moves files from security solutions into that package. * Re-ingests that package back into lists Before this PR if you ran: ```ts node scripts/find_plugins_with_circular_deps.js --debug ``` Then you would get: ``` debg !!!!!!!!!!!!!! CIRCULAR DEPENDENCIES FOUND !!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Circular dependencies were found, you can find below ! ! all the paths involved. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! debg 01) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts 02) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts -> x-pack/plugins/security_solution/server/types.ts 03) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/endpoint/types.ts -> x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts 04) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/endpoint/types.ts -> x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts -> x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts 05) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/endpoint/types.ts -> x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts -> x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts -> x-pack/plugins/security_solution/server/endpoint/services/index.ts -> x-pack/plugins/security_solution/server/endpoint/services/artifacts/index.ts -> x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/index.ts -> x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts 06) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/endpoint/types.ts -> x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts -> x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts -> x-pack/plugins/security_solution/server/endpoint/services/index.ts -> x-pack/plugins/security_solution/server/endpoint/services/artifacts/index.ts -> x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/index.ts -> x-pack/plugins/security_solution/server/endpoint/services/artifacts/manifest_manager/manifest_manager.ts -> x-pack/plugins/security_solution/server/endpoint/lib/artifacts/index.ts -> x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts 07) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/endpoint/types.ts -> x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts -> x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts -> x-pack/plugins/security_solution/server/fleet_integration/handlers/install_prepackaged_rules.ts 08) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/compose/kibana.ts -> x-pack/plugins/security_solution/server/endpoint/types.ts -> x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts -> x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.ts -> x-pack/plugins/security_solution/server/fleet_integration/handlers/install_prepackaged_rules.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/add_prepackaged_rules_route.ts 09) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/types.ts 10) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/utils.ts 11) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/query.ts 12) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/query.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/search_after_bulk_create.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/types.ts 13) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/threat_match.ts 14) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/threat_match.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/create_threat_signals.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/get_threat_list.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/threat_mapping/types.ts 15) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/signal_rule_alert_type.ts -> x-pack/plugins/security_solution/server/lib/detection_engine/signals/executors/ml.ts 16) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/index.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/handlers.ts 17) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/index.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/handlers.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/service.ts 18) x-pack/plugins/lists/server/index.ts -> x-pack/plugins/lists/server/plugin.ts -> x-pack/plugins/lists/server/routes/init_routes.ts -> x-pack/plugins/lists/server/types.ts -> x-pack/plugins/lists/server/services/lists/list_client.ts -> x-pack/plugins/lists/server/siem_server_deps.ts -> x-pack/plugins/security_solution/server/index.ts -> x-pack/plugins/security_solution/server/plugin.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/index.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/handlers.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/service.ts -> x-pack/plugins/security_solution/server/endpoint/routes/trusted_apps/mapping.ts debg !!!!!!!!!!!!!!!!! UP TO DATE ALLOWED LIST !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! The declared circular dependencies allowed list is up ! ! to date and includes every plugin listed in above paths. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! The allowed circular dependencies list is (#3): 'x-pack/plugins/lists -> x-pack/plugins/security_solution', succ None non allowed circular dependencies were found ``` Now you get: ``` debg !!!!!!!!!!!!!!!!! UP TO DATE ALLOWED LIST !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! The declared circular dependencies allowed list is up ! ! to date and includes every plugin listed in above paths. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! The allowed circular dependencies list is (#1): 'x-pack/plugins/lists -> x-pack/plugins/security_solution', succ None non allowed circular dependencies were found ``` ### Checklist Delete any items that are not applicable to this PR. - [x] [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 --- .../monorepo-packages.asciidoc | 1 + package.json | 1 + packages/BUILD.bazel | 1 + .../kbn-securitysolution-es-utils/BUILD.bazel | 86 +++++++++++++++ .../kbn-securitysolution-es-utils/README.md | 6 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src/bad_request_error/index.ts | 9 ++ .../src/create_boostrap_index/index.ts | 31 ++++++ .../src/delete_all_index/index.ts | 49 +++++++++ .../src/delete_policy/index.ts | 21 ++++ .../src/delete_template/index.ts | 20 ++++ .../src/elasticsearch_client/index.ts | 35 ++++++ .../src/get_index_exists/index.ts | 32 ++++++ .../src/get_policy_exists/index.ts | 31 ++++++ .../src/get_template_exists/index.ts | 20 ++++ .../src/index.ts | 21 ++++ .../src/read_privileges/index.ts | 94 ++++++++++++++++ .../src/set_policy/index.ts | 23 ++++ .../src/set_template/index.ts | 22 ++++ .../src/transform_error/index.test.ts | 101 ++++++++++++++++++ .../src/transform_error/index.ts | 52 +++++++++ .../tsconfig.json | 19 ++++ .../kbn-securitysolution-utils/BUILD.bazel | 4 +- .../routes/create_endpoint_list_item_route.ts | 4 +- .../routes/create_endpoint_list_route.ts | 3 +- .../create_exception_list_item_route.ts | 3 +- .../routes/create_exception_list_route.ts | 3 +- .../server/routes/create_list_index_route.ts | 4 +- .../server/routes/create_list_item_route.ts | 4 +- .../lists/server/routes/create_list_route.ts | 4 +- .../routes/delete_endpoint_list_item_route.ts | 9 +- .../delete_exception_list_item_route.ts | 9 +- .../routes/delete_exception_list_route.ts | 9 +- .../server/routes/delete_list_index_route.ts | 4 +- .../server/routes/delete_list_item_route.ts | 4 +- .../lists/server/routes/delete_list_route.ts | 4 +- .../routes/export_exception_list_route.ts | 5 +- .../server/routes/export_list_item_route.ts | 5 +- .../routes/find_endpoint_list_item_route.ts | 4 +- .../routes/find_exception_list_item_route.ts | 4 +- .../routes/find_exception_list_route.ts | 4 +- .../server/routes/find_list_item_route.ts | 4 +- .../lists/server/routes/find_list_route.ts | 4 +- .../server/routes/import_list_item_route.ts | 3 +- .../server/routes/patch_list_item_route.ts | 4 +- .../lists/server/routes/patch_list_route.ts | 4 +- .../routes/read_endpoint_list_item_route.ts | 9 +- .../routes/read_exception_list_item_route.ts | 9 +- .../routes/read_exception_list_route.ts | 9 +- .../server/routes/read_list_index_route.ts | 4 +- .../server/routes/read_list_item_route.ts | 4 +- .../lists/server/routes/read_list_route.ts | 4 +- .../server/routes/read_privileges_route.ts | 4 +- .../routes/update_endpoint_list_item_route.ts | 4 +- .../update_exception_list_item_route.ts | 4 +- .../routes/update_exception_list_route.ts | 9 +- .../server/routes/update_list_item_route.ts | 4 +- .../lists/server/routes/update_list_route.ts | 4 +- .../routes/utils/build_siem_response.ts | 81 ++++++++++++++ .../lists/server/routes/utils/index.ts | 2 + .../routes/utils/route_validation.test.ts | 94 ++++++++++++++++ .../server/routes/utils/route_validation.ts | 56 ++++++++++ .../server/services/lists/list_client.ts | 22 ++-- .../plugins/lists/server/siem_server_deps.ts | 24 ----- .../plugins/security_solution/server/index.ts | 13 --- .../index/create_bootstrap_index.ts | 4 + .../index/delete_all_index.ts | 3 + .../detection_engine/index/delete_policy.ts | 3 + .../detection_engine/index/delete_template.ts | 3 + .../index/get_index_exists.ts | 3 + .../index/get_policy_exists.ts | 3 + .../index/get_template_exists.ts | 3 + .../lib/detection_engine/index/set_policy.ts | 3 + .../detection_engine/index/set_template.ts | 3 + .../lib/detection_engine/routes/utils.ts | 3 + yarn.lock | 4 + 77 files changed, 1101 insertions(+), 100 deletions(-) create mode 100644 packages/kbn-securitysolution-es-utils/BUILD.bazel create mode 100644 packages/kbn-securitysolution-es-utils/README.md create mode 100644 packages/kbn-securitysolution-es-utils/jest.config.js create mode 100644 packages/kbn-securitysolution-es-utils/package.json create mode 100644 packages/kbn-securitysolution-es-utils/src/bad_request_error/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/create_boostrap_index/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/delete_all_index/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/delete_policy/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/delete_template/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/elasticsearch_client/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/get_index_exists/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/get_policy_exists/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/get_template_exists/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/read_privileges/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/set_policy/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/set_template/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/transform_error/index.test.ts create mode 100644 packages/kbn-securitysolution-es-utils/src/transform_error/index.ts create mode 100644 packages/kbn-securitysolution-es-utils/tsconfig.json create mode 100644 x-pack/plugins/lists/server/routes/utils/build_siem_response.ts create mode 100644 x-pack/plugins/lists/server/routes/utils/route_validation.test.ts create mode 100644 x-pack/plugins/lists/server/routes/utils/route_validation.ts delete mode 100644 x-pack/plugins/lists/server/siem_server_deps.ts diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 3d6fd6c98dd95..1e7a95b83dd67 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -82,6 +82,7 @@ yarn kbn watch-bazel - @kbn/logging - @kbn/securitysolution-constants - @kbn/securitysolution-utils +- @kbn/securitysolution-es-utils - @kbn/securitysolution-io-ts-utils - @kbn/std - @kbn/telemetry-utils diff --git a/package.json b/package.json index deb386f49c854..a8cfbb5013647 100644 --- a/package.json +++ b/package.json @@ -137,6 +137,7 @@ "@kbn/monaco": "link:packages/kbn-monaco", "@kbn/securitysolution-constants": "link:bazel-bin/packages/kbn-securitysolution-constants/npm_module", "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", + "@kbn/securitysolution-es-utils": "link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module", "@kbn/securitysolution-io-ts-utils": "link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", "@kbn/server-route-repository": "link:packages/kbn-server-route-repository", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index f4465d439e9f8..2ae04e02cffd2 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -26,6 +26,7 @@ filegroup( "//packages/kbn-securitysolution-constants:build", "//packages/kbn-securitysolution-io-ts-utils:build", "//packages/kbn-securitysolution-utils:build", + "//packages/kbn-securitysolution-es-utils:build", "//packages/kbn-std:build", "//packages/kbn-telemetry-tools:build", "//packages/kbn-tinymath:build", diff --git a/packages/kbn-securitysolution-es-utils/BUILD.bazel b/packages/kbn-securitysolution-es-utils/BUILD.bazel new file mode 100644 index 0000000000000..0cc27358c5da2 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/BUILD.bazel @@ -0,0 +1,86 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-es-utils" + +PKG_REQUIRE_NAME = "@kbn/securitysolution-es-utils" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "@npm//@elastic/elasticsearch", + "@npm//@hapi/hapi", + "@npm//tslib", +] + +TYPES_DEPS = [ + "@npm//@types/jest", + "@npm//@types/node", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + srcs = SRCS, + args = ["--pretty"], + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + root_dir = "src", + source_map = True, + tsconfig = ":tsconfig", + deps = DEPS, +) + +js_library( + name = PKG_BASE_NAME, + package_name = PKG_REQUIRE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + visibility = ["//visibility:public"], + deps = [":tsc"] + DEPS, +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ], +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-es-utils/README.md b/packages/kbn-securitysolution-es-utils/README.md new file mode 100644 index 0000000000000..b99aa095c84f4 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/README.md @@ -0,0 +1,6 @@ +# kbn-securitysolution-es-utils + +This is the shared security solution elastic search utilities among plugins. This was originally created +to remove the dependencies between security_solution and other projects such as lists. This should only be +used within server side code and not client side code since it is all elastic search utilities and packages. + diff --git a/packages/kbn-securitysolution-es-utils/jest.config.js b/packages/kbn-securitysolution-es-utils/jest.config.js new file mode 100644 index 0000000000000..6b86ec6e2da52 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-es-utils'], +}; diff --git a/packages/kbn-securitysolution-es-utils/package.json b/packages/kbn-securitysolution-es-utils/package.json new file mode 100644 index 0000000000000..7d0c0993c6c32 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-es-utils", + "version": "1.0.0", + "description": "security solution elastic search utilities to use across plugins such lists, security_solution, cases, etc...", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-es-utils/src/bad_request_error/index.ts b/packages/kbn-securitysolution-es-utils/src/bad_request_error/index.ts new file mode 100644 index 0000000000000..525f6cfa5c9ff --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/bad_request_error/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export class BadRequestError extends Error {} diff --git a/packages/kbn-securitysolution-es-utils/src/create_boostrap_index/index.ts b/packages/kbn-securitysolution-es-utils/src/create_boostrap_index/index.ts new file mode 100644 index 0000000000000..9671d35dc554e --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/create_boostrap_index/index.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +// See the reference(s) below on explanations about why -000001 was chosen and +// why the is_write_index is true as well as the bootstrapping step which is needed. +// Ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/applying-policy-to-template.html +export const createBootstrapIndex = async ( + esClient: ElasticsearchClient, + index: string +): Promise => { + return ( + await esClient.transport.request({ + path: `/${index}-000001`, + method: 'PUT', + body: { + aliases: { + [index]: { + is_write_index: true, + }, + }, + }, + }) + ).body; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/delete_all_index/index.ts b/packages/kbn-securitysolution-es-utils/src/delete_all_index/index.ts new file mode 100644 index 0000000000000..4df4724aaf2b5 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/delete_all_index/index.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const deleteAllIndex = async ( + esClient: ElasticsearchClient, + pattern: string, + maxAttempts = 5 +): Promise => { + for (let attempt = 1; ; attempt++) { + if (attempt > maxAttempts) { + throw new Error( + `Failed to delete indexes with pattern [${pattern}] after ${maxAttempts} attempts` + ); + } + + // resolve pattern to concrete index names + const { body: resp } = await esClient.indices.getAlias( + { + index: pattern, + }, + { ignore: [404] } + ); + + // @ts-expect-error status doesn't exist on response + if (resp.status === 404) { + return true; + } + + const indices = Object.keys(resp) as string[]; + + // if no indexes exits then we're done with this pattern + if (!indices.length) { + return true; + } + + // delete the concrete indexes we found and try again until this pattern resolves to no indexes + await esClient.indices.delete({ + index: indices, + ignore_unavailable: true, + }); + } +}; diff --git a/packages/kbn-securitysolution-es-utils/src/delete_policy/index.ts b/packages/kbn-securitysolution-es-utils/src/delete_policy/index.ts new file mode 100644 index 0000000000000..34c1d2e5da45f --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/delete_policy/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const deletePolicy = async ( + esClient: ElasticsearchClient, + policy: string +): Promise => { + return ( + await esClient.transport.request({ + path: `/_ilm/policy/${policy}`, + method: 'DELETE', + }) + ).body; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/delete_template/index.ts b/packages/kbn-securitysolution-es-utils/src/delete_template/index.ts new file mode 100644 index 0000000000000..2e7a71af9f772 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/delete_template/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const deleteTemplate = async ( + esClient: ElasticsearchClient, + name: string +): Promise => { + return ( + await esClient.indices.deleteTemplate({ + name, + }) + ).body; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/elasticsearch_client/index.ts b/packages/kbn-securitysolution-es-utils/src/elasticsearch_client/index.ts new file mode 100644 index 0000000000000..0c2252bdc1f03 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/elasticsearch_client/index.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// Copied from src/core/server/elasticsearch/client/types.ts +// as these types aren't part of any package yet. Once they are, remove this completely + +import type { KibanaClient } from '@elastic/elasticsearch/api/kibana'; +import type { + ApiResponse, + TransportRequestOptions, + TransportRequestParams, + TransportRequestPromise, +} from '@elastic/elasticsearch/lib/Transport'; + +/** + * Client used to query the elasticsearch cluster. + * @deprecated At some point use the one from src/core/server/elasticsearch/client/types.ts when it is made into a package. If it never is, then keep using this one. + * @public + */ +export type ElasticsearchClient = Omit< + KibanaClient, + 'connectionPool' | 'transport' | 'serializer' | 'extend' | 'child' | 'close' +> & { + transport: { + request( + params: TransportRequestParams, + options?: TransportRequestOptions + ): TransportRequestPromise; + }; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/get_index_exists/index.ts b/packages/kbn-securitysolution-es-utils/src/get_index_exists/index.ts new file mode 100644 index 0000000000000..b7d12cab3f48c --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/get_index_exists/index.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const getIndexExists = async ( + esClient: ElasticsearchClient, + index: string +): Promise => { + try { + const { body: response } = await esClient.search({ + index, + size: 0, + allow_no_indices: true, + body: { + terminate_after: 1, + }, + }); + return response._shards.total > 0; + } catch (err) { + if (err.body != null && err.body.status === 404) { + return false; + } else { + throw err.body ? err.body : err; + } + } +}; diff --git a/packages/kbn-securitysolution-es-utils/src/get_policy_exists/index.ts b/packages/kbn-securitysolution-es-utils/src/get_policy_exists/index.ts new file mode 100644 index 0000000000000..cefd47dbe9d07 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/get_policy_exists/index.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const getPolicyExists = async ( + esClient: ElasticsearchClient, + policy: string +): Promise => { + try { + await esClient.transport.request({ + path: `/_ilm/policy/${policy}`, + method: 'GET', + }); + // Return true that there exists a policy which is not 404 or some error + // Since there is not a policy exists API, this is how we create one by calling + // into the API to get it if it exists or rely on it to throw a 404 + return true; + } catch (err) { + if (err.statusCode === 404) { + return false; + } else { + throw err; + } + } +}; diff --git a/packages/kbn-securitysolution-es-utils/src/get_template_exists/index.ts b/packages/kbn-securitysolution-es-utils/src/get_template_exists/index.ts new file mode 100644 index 0000000000000..c56c5b968d45c --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/get_template_exists/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const getTemplateExists = async ( + esClient: ElasticsearchClient, + template: string +): Promise => { + return ( + await esClient.indices.existsTemplate({ + name: template, + }) + ).body; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/index.ts b/packages/kbn-securitysolution-es-utils/src/index.ts new file mode 100644 index 0000000000000..657a63eef15cd --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './bad_request_error'; +export * from './create_boostrap_index'; +export * from './delete_all_index'; +export * from './delete_policy'; +export * from './delete_template'; +export * from './elasticsearch_client'; +export * from './get_index_exists'; +export * from './get_policy_exists'; +export * from './get_template_exists'; +export * from './read_privileges'; +export * from './set_policy'; +export * from './set_template'; +export * from './transform_error'; diff --git a/packages/kbn-securitysolution-es-utils/src/read_privileges/index.ts b/packages/kbn-securitysolution-es-utils/src/read_privileges/index.ts new file mode 100644 index 0000000000000..8b11387a1d020 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/read_privileges/index.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Copied from src/core/server/elasticsearch/legacy/api_types.ts including its deprecation mentioned below + * TODO: Remove this and refactor the readPrivileges to utilize any newer client side ways rather than all this deprecated legacy stuff + */ +export interface LegacyCallAPIOptions { + /** + * Indicates whether `401 Unauthorized` errors returned from the Elasticsearch API + * should be wrapped into `Boom` error instances with properly set `WWW-Authenticate` + * header that could have been returned by the API itself. If API didn't specify that + * then `Basic realm="Authorization Required"` is used as `WWW-Authenticate`. + */ + wrap401Errors?: boolean; + /** + * A signal object that allows you to abort the request via an AbortController object. + */ + signal?: AbortSignal; +} + +type CallWithRequest, V> = ( + endpoint: string, + params: T, + options?: LegacyCallAPIOptions +) => Promise; + +export const readPrivileges = async ( + callWithRequest: CallWithRequest<{}, unknown>, + index: string +): Promise => { + return callWithRequest('transport.request', { + path: '/_security/user/_has_privileges', + method: 'POST', + body: { + cluster: [ + 'all', + 'create_snapshot', + 'manage', + 'manage_api_key', + 'manage_ccr', + 'manage_transform', + 'manage_ilm', + 'manage_index_templates', + 'manage_ingest_pipelines', + 'manage_ml', + 'manage_own_api_key', + 'manage_pipeline', + 'manage_rollup', + 'manage_saml', + 'manage_security', + 'manage_token', + 'manage_watcher', + 'monitor', + 'monitor_transform', + 'monitor_ml', + 'monitor_rollup', + 'monitor_watcher', + 'read_ccr', + 'read_ilm', + 'transport_client', + ], + index: [ + { + names: [index], + privileges: [ + 'all', + 'create', + 'create_doc', + 'create_index', + 'delete', + 'delete_index', + 'index', + 'manage', + 'maintenance', + 'manage_follow_index', + 'manage_ilm', + 'manage_leader_index', + 'monitor', + 'read', + 'read_cross_cluster', + 'view_index_metadata', + 'write', + ], + }, + ], + }, + }); +}; diff --git a/packages/kbn-securitysolution-es-utils/src/set_policy/index.ts b/packages/kbn-securitysolution-es-utils/src/set_policy/index.ts new file mode 100644 index 0000000000000..dc45ca3e1c089 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/set_policy/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const setPolicy = async ( + esClient: ElasticsearchClient, + policy: string, + body: Record +): Promise => { + return ( + await esClient.transport.request({ + path: `/_ilm/policy/${policy}`, + method: 'PUT', + body, + }) + ).body; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/set_template/index.ts b/packages/kbn-securitysolution-es-utils/src/set_template/index.ts new file mode 100644 index 0000000000000..89aaa44f29e0d --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/set_template/index.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '../elasticsearch_client'; + +export const setTemplate = async ( + esClient: ElasticsearchClient, + name: string, + body: Record +): Promise => { + return ( + await esClient.indices.putTemplate({ + name, + body, + }) + ).body; +}; diff --git a/packages/kbn-securitysolution-es-utils/src/transform_error/index.test.ts b/packages/kbn-securitysolution-es-utils/src/transform_error/index.test.ts new file mode 100644 index 0000000000000..e0f520f1ebfd4 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/transform_error/index.test.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import Boom from '@hapi/boom'; +import { transformError } from '.'; +import { BadRequestError } from '../bad_request_error'; +import { errors } from '@elastic/elasticsearch'; + +describe('transformError', () => { + test('returns transformed output error from boom object with a 500 and payload of internal server error', () => { + const boom = new Boom.Boom('some boom message'); + const transformed = transformError(boom); + expect(transformed).toEqual({ + message: 'An internal server error occurred', + statusCode: 500, + }); + }); + + test('returns transformed output if it is some non boom object that has a statusCode', () => { + const error: Error & { statusCode?: number } = { + statusCode: 403, + name: 'some name', + message: 'some message', + }; + const transformed = transformError(error); + expect(transformed).toEqual({ + message: 'some message', + statusCode: 403, + }); + }); + + test('returns a transformed message with the message set and statusCode', () => { + const error: Error & { statusCode?: number } = { + statusCode: 403, + name: 'some name', + message: 'some message', + }; + const transformed = transformError(error); + expect(transformed).toEqual({ + message: 'some message', + statusCode: 403, + }); + }); + + test('transforms best it can if it is some non boom object but it does not have a status Code.', () => { + const error: Error = { + name: 'some name', + message: 'some message', + }; + const transformed = transformError(error); + expect(transformed).toEqual({ + message: 'some message', + statusCode: 500, + }); + }); + + test('it detects a BadRequestError and returns a status code of 400 from that particular error type', () => { + const error: BadRequestError = new BadRequestError('I have a type error'); + const transformed = transformError(error); + expect(transformed).toEqual({ + message: 'I have a type error', + statusCode: 400, + }); + }); + + test('it detects a BadRequestError and returns a Boom status of 400', () => { + const error: BadRequestError = new BadRequestError('I have a type error'); + const transformed = transformError(error); + expect(transformed).toEqual({ + message: 'I have a type error', + statusCode: 400, + }); + }); + + it('transforms a ResponseError returned by the elasticsearch client', () => { + const error: errors.ResponseError = { + name: 'ResponseError', + message: 'illegal_argument_exception', + headers: {}, + body: { + error: { + type: 'illegal_argument_exception', + reason: 'detailed explanation', + }, + }, + meta: ({} as unknown) as errors.ResponseError['meta'], + statusCode: 400, + }; + const transformed = transformError(error); + + expect(transformed).toEqual({ + message: 'illegal_argument_exception: detailed explanation', + statusCode: 400, + }); + }); +}); diff --git a/packages/kbn-securitysolution-es-utils/src/transform_error/index.ts b/packages/kbn-securitysolution-es-utils/src/transform_error/index.ts new file mode 100644 index 0000000000000..b532dc5d1b6d0 --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/src/transform_error/index.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import Boom from '@hapi/boom'; +import { errors } from '@elastic/elasticsearch'; +import { BadRequestError } from '../bad_request_error'; + +export interface OutputError { + message: string; + statusCode: number; +} + +export const transformError = (err: Error & Partial): OutputError => { + if (Boom.isBoom(err)) { + return { + message: err.output.payload.message, + statusCode: err.output.statusCode, + }; + } else { + if (err.statusCode != null) { + if (err.body != null && err.body.error != null) { + return { + statusCode: err.statusCode, + message: `${err.body.error.type}: ${err.body.error.reason}`, + }; + } else { + return { + statusCode: err.statusCode, + message: err.message, + }; + } + } else if (err instanceof BadRequestError) { + // allows us to throw request validation errors in the absence of Boom + return { + message: err.message, + statusCode: 400, + }; + } else { + // natively return the err and allow the regular framework + // to deal with the error when it is a non Boom + return { + message: err.message != null ? err.message : '(unknown error message)', + statusCode: 500, + }; + } + } +}; diff --git a/packages/kbn-securitysolution-es-utils/tsconfig.json b/packages/kbn-securitysolution-es-utils/tsconfig.json new file mode 100644 index 0000000000000..be8848d781cae --- /dev/null +++ b/packages/kbn-securitysolution-es-utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-es-utils/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-utils/BUILD.bazel b/packages/kbn-securitysolution-utils/BUILD.bazel index 33c25a3091c24..42897e93593b6 100644 --- a/packages/kbn-securitysolution-utils/BUILD.bazel +++ b/packages/kbn-securitysolution-utils/BUILD.bazel @@ -35,7 +35,7 @@ SRC_DEPS = [ TYPES_DEPS = [ "@npm//@types/jest", "@npm//@types/node", - "@npm//@types/uuid" + "@npm//@types/uuid" ] DEPS = SRC_DEPS + TYPES_DEPS @@ -83,4 +83,4 @@ filegroup( ":npm_module", ], visibility = ["//visibility:public"], -) \ No newline at end of file +) diff --git a/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts index 76ff8b1728922..9c42df6abd7bd 100644 --- a/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts @@ -6,17 +6,17 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { ENDPOINT_LIST_ID, ENDPOINT_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { CreateEndpointListItemSchemaDecoded, createEndpointListItemSchema, exceptionListItemSchema, } from '../../common/schemas'; -import { getExceptionListClient } from './utils/get_exception_list_client'; +import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; import { validateExceptionListSize } from './validate'; export const createEndpointListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts b/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts index 23f098f7e9457..599870c226564 100644 --- a/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts +++ b/x-pack/plugins/lists/server/routes/create_endpoint_list_route.ts @@ -6,12 +6,13 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { ENDPOINT_LIST_URL } from '../../common/constants'; -import { buildSiemResponse, transformError } from '../siem_server_deps'; import { createEndpointListSchema } from '../../common/schemas'; +import { buildSiemResponse } from './utils'; import { getExceptionListClient } from './utils/get_exception_list_client'; /** diff --git a/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts index 4bcb41c666f56..81260584e8a50 100644 --- a/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_exception_list_item_route.ts @@ -6,16 +6,17 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { CreateExceptionListItemSchemaDecoded, createExceptionListItemSchema, exceptionListItemSchema, } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; import { getExceptionListClient } from './utils/get_exception_list_client'; import { endpointDisallowedFields } from './endpoint_disallowed_fields'; import { validateEndpointExceptionItemEntries, validateExceptionListSize } from './validate'; diff --git a/x-pack/plugins/lists/server/routes/create_exception_list_route.ts b/x-pack/plugins/lists/server/routes/create_exception_list_route.ts index 12c887a16c318..1a35bdb008662 100644 --- a/x-pack/plugins/lists/server/routes/create_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/create_exception_list_route.ts @@ -6,16 +6,17 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { CreateExceptionListSchemaDecoded, createExceptionListSchema, exceptionListSchema, } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; import { getExceptionListClient } from './utils/get_exception_list_client'; export const createExceptionListRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/create_list_index_route.ts b/x-pack/plugins/lists/server/routes/create_list_index_route.ts index 12fe586a07cc0..3b0d34b8952a1 100644 --- a/x-pack/plugins/lists/server/routes/create_list_index_route.ts +++ b/x-pack/plugins/lists/server/routes/create_list_index_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; -import { buildSiemResponse, transformError } from '../siem_server_deps'; import { LIST_INDEX } from '../../common/constants'; import { acknowledgeSchema } from '../../common/schemas'; +import { buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const createListIndexRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/create_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_list_item_route.ts index 2e3c944af0df8..4df121af4c1ba 100644 --- a/x-pack/plugins/lists/server/routes/create_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_list_item_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { createListItemSchema, listItemSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const createListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/create_list_route.ts b/x-pack/plugins/lists/server/routes/create_list_route.ts index 4346d519c9003..dabbd690bba21 100644 --- a/x-pack/plugins/lists/server/routes/create_list_route.ts +++ b/x-pack/plugins/lists/server/routes/create_list_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { CreateListSchemaDecoded, createListSchema, listSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const createListRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts index 195384356f40b..59d91f6234176 100644 --- a/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { ENDPOINT_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { DeleteEndpointListItemSchemaDecoded, deleteEndpointListItemSchema, exceptionListItemSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionListItem, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionListItem, + getExceptionListClient, +} from './utils'; export const deleteEndpointListItemRoute = (router: ListsPluginRouter): void => { router.delete( diff --git a/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts index ddcd1cf9b7180..ce4f91ffc671a 100644 --- a/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_exception_list_item_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { DeleteExceptionListItemSchemaDecoded, deleteExceptionListItemSchema, exceptionListItemSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionListItem, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionListItem, + getExceptionListClient, +} from './utils'; export const deleteExceptionListItemRoute = (router: ListsPluginRouter): void => { router.delete( diff --git a/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts b/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts index f11deef5cb0c8..eeeb5fb44c16a 100644 --- a/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_exception_list_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { DeleteExceptionListSchemaDecoded, deleteExceptionListSchema, exceptionListSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionList, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionList, + getExceptionListClient, +} from './utils'; export const deleteExceptionListRoute = (router: ListsPluginRouter): void => { router.delete( diff --git a/x-pack/plugins/lists/server/routes/delete_list_index_route.ts b/x-pack/plugins/lists/server/routes/delete_list_index_route.ts index efad16c37a2dc..22c56a21df419 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_index_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_index_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_INDEX } from '../../common/constants'; -import { buildSiemResponse, transformError } from '../siem_server_deps'; import { acknowledgeSchema } from '../../common/schemas'; +import { buildSiemResponse } from './utils'; + import { getListClient } from '.'; /** diff --git a/x-pack/plugins/lists/server/routes/delete_list_item_route.ts b/x-pack/plugins/lists/server/routes/delete_list_item_route.ts index a07035fc50d9c..197590ecb142c 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_item_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { deleteListItemSchema, listItemArraySchema, listItemSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const deleteListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/delete_list_route.ts b/x-pack/plugins/lists/server/routes/delete_list_route.ts index 65faa54b20cc7..033c49aa7b235 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_route.ts @@ -6,10 +6,10 @@ */ import { EntriesArray, validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { ExceptionListItemSchema, FoundExceptionListSchema, @@ -21,6 +21,8 @@ import { getSavedObjectType } from '../services/exception_lists/utils'; import { ExceptionListClient } from '../services/exception_lists/exception_list_client'; import { escapeQuotes } from '../services/utils/escape_query'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getExceptionListClient, getListClient } from '.'; export const deleteListRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/export_exception_list_route.ts b/x-pack/plugins/lists/server/routes/export_exception_list_route.ts index 30f7a16e6100d..3d82cbac47a88 100644 --- a/x-pack/plugins/lists/server/routes/export_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/export_exception_list_route.ts @@ -5,12 +5,13 @@ * 2.0. */ +import { transformError } from '@kbn/securitysolution-es-utils'; + import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { exportExceptionListQuerySchema } from '../../common/schemas'; -import { getExceptionListClient } from './utils'; +import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; export const exportExceptionListRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/export_list_item_route.ts b/x-pack/plugins/lists/server/routes/export_list_item_route.ts index e07b78a23c7e0..13a2aa9beea05 100644 --- a/x-pack/plugins/lists/server/routes/export_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/export_list_item_route.ts @@ -7,11 +7,14 @@ import { Stream } from 'stream'; +import { transformError } from '@kbn/securitysolution-es-utils'; + import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { exportListItemQuerySchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const exportListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts index ee5245982dc0b..cbf3c320c407a 100644 --- a/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/find_endpoint_list_item_route.ts @@ -6,17 +6,17 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { ENDPOINT_LIST_ID, ENDPOINT_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { FindEndpointListItemSchemaDecoded, findEndpointListItemSchema, foundExceptionListItemSchema, } from '../../common/schemas'; -import { getExceptionListClient } from './utils'; +import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; export const findEndpointListItemRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts index 82988a7cbeb76..45ce1dbb87fba 100644 --- a/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/find_exception_list_item_route.ts @@ -6,17 +6,17 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { FindExceptionListItemSchemaDecoded, findExceptionListItemSchema, foundExceptionListItemSchema, } from '../../common/schemas'; -import { getExceptionListClient } from './utils'; +import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; export const findExceptionListItemRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/find_exception_list_route.ts b/x-pack/plugins/lists/server/routes/find_exception_list_route.ts index 4b188b4dca4e2..0181bfed5b857 100644 --- a/x-pack/plugins/lists/server/routes/find_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/find_exception_list_route.ts @@ -6,17 +6,17 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { FindExceptionListSchemaDecoded, findExceptionListSchema, foundExceptionListSchema, } from '../../common/schemas'; -import { getExceptionListClient } from './utils'; +import { buildRouteValidation, buildSiemResponse, getExceptionListClient } from './utils'; export const findExceptionListRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/find_list_item_route.ts b/x-pack/plugins/lists/server/routes/find_list_item_route.ts index a904d7f84733d..c64dfd561e0e3 100644 --- a/x-pack/plugins/lists/server/routes/find_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/find_list_item_route.ts @@ -6,10 +6,10 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { FindListItemSchemaDecoded, findListItemSchema, @@ -17,7 +17,7 @@ import { } from '../../common/schemas'; import { decodeCursor } from '../services/utils'; -import { getListClient } from './utils'; +import { buildRouteValidation, buildSiemResponse, getListClient } from './utils'; export const findListItemRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/find_list_route.ts b/x-pack/plugins/lists/server/routes/find_list_route.ts index c5f1b58c1e957..19c20515ef5f2 100644 --- a/x-pack/plugins/lists/server/routes/find_list_route.ts +++ b/x-pack/plugins/lists/server/routes/find_list_route.ts @@ -6,14 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { findListSchema, foundListSchema } from '../../common/schemas'; import { decodeCursor } from '../services/utils'; -import { getListClient } from './utils'; +import { buildRouteValidation, buildSiemResponse, getListClient } from './utils'; export const findListRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/import_list_item_route.ts b/x-pack/plugins/lists/server/routes/import_list_item_route.ts index 070764b0e1e77..77d9623f40a23 100644 --- a/x-pack/plugins/lists/server/routes/import_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/import_list_item_route.ts @@ -7,13 +7,14 @@ import { schema } from '@kbn/config-schema'; import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { importListItemQuerySchema, listSchema } from '../../common/schemas'; import { ConfigType } from '../config'; +import { buildRouteValidation, buildSiemResponse } from './utils'; import { createStreamFromBuffer } from './utils/create_stream_from_buffer'; import { getListClient } from '.'; diff --git a/x-pack/plugins/lists/server/routes/patch_list_item_route.ts b/x-pack/plugins/lists/server/routes/patch_list_item_route.ts index 53fd7c65c8ab8..ce4ff71a1d886 100644 --- a/x-pack/plugins/lists/server/routes/patch_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/patch_list_item_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { listItemSchema, patchListItemSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const patchListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/patch_list_route.ts b/x-pack/plugins/lists/server/routes/patch_list_route.ts index f139fb72c3066..3f2427b30f2be 100644 --- a/x-pack/plugins/lists/server/routes/patch_list_route.ts +++ b/x-pack/plugins/lists/server/routes/patch_list_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { listSchema, patchListSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const patchListRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts index c78a4a435e5b4..72cfe38090cd8 100644 --- a/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/read_endpoint_list_item_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { ENDPOINT_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { ReadEndpointListItemSchemaDecoded, exceptionListItemSchema, readEndpointListItemSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionListItem, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionListItem, + getExceptionListClient, +} from './utils'; export const readEndpointListItemRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts index fd92543fa85a7..3563645f554bb 100644 --- a/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/read_exception_list_item_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { ReadExceptionListItemSchemaDecoded, exceptionListItemSchema, readExceptionListItemSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionListItem, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionListItem, + getExceptionListClient, +} from './utils'; export const readExceptionListItemRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/read_exception_list_route.ts b/x-pack/plugins/lists/server/routes/read_exception_list_route.ts index 3d4e831f4a2da..f82c397e67d2b 100644 --- a/x-pack/plugins/lists/server/routes/read_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/read_exception_list_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { ReadExceptionListSchemaDecoded, exceptionListSchema, readExceptionListSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionList, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionList, + getExceptionListClient, +} from './utils'; export const readExceptionListRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/read_list_index_route.ts b/x-pack/plugins/lists/server/routes/read_list_index_route.ts index 467348669bc0b..619600f3a7ee1 100644 --- a/x-pack/plugins/lists/server/routes/read_list_index_route.ts +++ b/x-pack/plugins/lists/server/routes/read_list_index_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_INDEX } from '../../common/constants'; -import { buildSiemResponse, transformError } from '../siem_server_deps'; import { listItemIndexExistSchema } from '../../common/schemas'; +import { buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const readListIndexRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/read_list_item_route.ts b/x-pack/plugins/lists/server/routes/read_list_item_route.ts index fd216197f91b5..2355a393d4a77 100644 --- a/x-pack/plugins/lists/server/routes/read_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/read_list_item_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { listItemArraySchema, listItemSchema, readListItemSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const readListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/read_list_route.ts b/x-pack/plugins/lists/server/routes/read_list_route.ts index 56acb1e043bd5..e66774998d554 100644 --- a/x-pack/plugins/lists/server/routes/read_list_route.ts +++ b/x-pack/plugins/lists/server/routes/read_list_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { listSchema, readListSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const readListRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/read_privileges_route.ts b/x-pack/plugins/lists/server/routes/read_privileges_route.ts index 798f8631668a9..8c7faa7f7eb9d 100644 --- a/x-pack/plugins/lists/server/routes/read_privileges_route.ts +++ b/x-pack/plugins/lists/server/routes/read_privileges_route.ts @@ -5,13 +5,13 @@ * 2.0. */ +import { readPrivileges, transformError } from '@kbn/securitysolution-es-utils'; import { merge } from 'lodash/fp'; import type { ListsPluginRouter } from '../types'; import { LIST_PRIVILEGES_URL } from '../../common/constants'; -import { buildSiemResponse, readPrivileges, transformError } from '../siem_server_deps'; -import { getListClient } from './utils'; +import { buildSiemResponse, getListClient } from './utils'; export const readPrivilegesRoute = (router: ListsPluginRouter): void => { router.get( diff --git a/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts index 9f445f4e3c114..9468fd2e8c226 100644 --- a/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts @@ -6,16 +6,18 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { ENDPOINT_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { UpdateEndpointListItemSchemaDecoded, exceptionListItemSchema, updateEndpointListItemSchema, } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getExceptionListClient } from '.'; export const updateEndpointListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts index 6a87af6c666bb..6fbb1b7de80af 100644 --- a/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts @@ -6,10 +6,10 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { UpdateExceptionListItemSchemaDecoded, exceptionListItemSchema, @@ -17,6 +17,8 @@ import { } from '../../common/schemas'; import { updateExceptionListItemValidate } from '../../common/schemas/request/update_exception_list_item_validation'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getExceptionListClient } from '.'; export const updateExceptionListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/update_exception_list_route.ts b/x-pack/plugins/lists/server/routes/update_exception_list_route.ts index a6b99579d87ad..cf670b28cee56 100644 --- a/x-pack/plugins/lists/server/routes/update_exception_list_route.ts +++ b/x-pack/plugins/lists/server/routes/update_exception_list_route.ts @@ -6,17 +6,22 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { EXCEPTION_LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { UpdateExceptionListSchemaDecoded, exceptionListSchema, updateExceptionListSchema, } from '../../common/schemas'; -import { getErrorMessageExceptionList, getExceptionListClient } from './utils'; +import { + buildRouteValidation, + buildSiemResponse, + getErrorMessageExceptionList, + getExceptionListClient, +} from './utils'; export const updateExceptionListRoute = (router: ListsPluginRouter): void => { router.put( diff --git a/x-pack/plugins/lists/server/routes/update_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_list_item_route.ts index e2905c1a00a11..f806b3f5d09d7 100644 --- a/x-pack/plugins/lists/server/routes/update_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_list_item_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_ITEM_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { listItemSchema, updateListItemSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const updateListItemRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/update_list_route.ts b/x-pack/plugins/lists/server/routes/update_list_route.ts index d69c110aa129b..25457d7cdb333 100644 --- a/x-pack/plugins/lists/server/routes/update_list_route.ts +++ b/x-pack/plugins/lists/server/routes/update_list_route.ts @@ -6,12 +6,14 @@ */ import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; import { LIST_URL } from '../../common/constants'; -import { buildRouteValidation, buildSiemResponse, transformError } from '../siem_server_deps'; import { listSchema, updateListSchema } from '../../common/schemas'; +import { buildRouteValidation, buildSiemResponse } from './utils'; + import { getListClient } from '.'; export const updateListRoute = (router: ListsPluginRouter): void => { diff --git a/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts b/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts new file mode 100644 index 0000000000000..fe76de24aa7b9 --- /dev/null +++ b/x-pack/plugins/lists/server/routes/utils/build_siem_response.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CustomHttpResponseOptions, KibanaResponseFactory } from 'src/core/server'; + +/** + * Copied from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts + * We cannot put this in kbn package just yet as the types from 'src/core/server' aren't a kbn package yet and this would pull in a lot of copied things. + * TODO: Once more types are moved into kbn package we can move this into a kbn package. + */ +const statusToErrorMessage = ( + statusCode: number +): + | 'Bad Request' + | 'Unauthorized' + | 'Forbidden' + | 'Not Found' + | 'Conflict' + | 'Internal Error' + | '(unknown error)' => { + switch (statusCode) { + case 400: + return 'Bad Request'; + case 401: + return 'Unauthorized'; + case 403: + return 'Forbidden'; + case 404: + return 'Not Found'; + case 409: + return 'Conflict'; + case 500: + return 'Internal Error'; + default: + return '(unknown error)'; + } +}; + +/** + * Copied from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts + * We cannot put this in kbn package just yet as the types from 'src/core/server' aren't a kbn package yet and this would pull in a lot of copied things. + * TODO: Once more types are moved into kbn package we can move this into a kbn package. + */ +export class SiemResponseFactory { + constructor(private response: KibanaResponseFactory) {} + + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + error({ statusCode, body, headers }: CustomHttpResponseOptions) { + // KibanaResponse is not exported so we cannot use a return type here and that is why the linter is turned off above + const contentType: CustomHttpResponseOptions['headers'] = { + 'content-type': 'application/json', + }; + const defaultedHeaders: CustomHttpResponseOptions['headers'] = { + ...contentType, + ...(headers ?? {}), + }; + + return this.response.custom({ + body: Buffer.from( + JSON.stringify({ + message: body ?? statusToErrorMessage(statusCode), + status_code: statusCode, + }) + ), + headers: defaultedHeaders, + statusCode, + }); + } +} + +/** + * Copied from x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts + * We cannot put this in kbn package just yet as the types from 'src/core/server' aren't a kbn package yet and this would pull in a lot of copied things. + * TODO: Once more types are moved into kbn package we can move this into a kbn package. + */ +export const buildSiemResponse = (response: KibanaResponseFactory): SiemResponseFactory => + new SiemResponseFactory(response); diff --git a/x-pack/plugins/lists/server/routes/utils/index.ts b/x-pack/plugins/lists/server/routes/utils/index.ts index 0149770e695b9..f035ae5dbfe9b 100644 --- a/x-pack/plugins/lists/server/routes/utils/index.ts +++ b/x-pack/plugins/lists/server/routes/utils/index.ts @@ -9,3 +9,5 @@ export * from './get_error_message_exception_list_item'; export * from './get_error_message_exception_list'; export * from './get_list_client'; export * from './get_exception_list_client'; +export * from './route_validation'; +export * from './build_siem_response'; diff --git a/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts b/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts new file mode 100644 index 0000000000000..9e6064d192d40 --- /dev/null +++ b/x-pack/plugins/lists/server/routes/utils/route_validation.test.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as rt from 'io-ts'; +import { RouteValidationResultFactory } from 'src/core/server'; + +import { buildRouteValidation } from './route_validation'; + +/** + * Copied from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.test.ts + * TODO: Once we can move this into a kbn package because the types such as RouteValidationResultFactory are in packages, then please do. + */ +describe('Route Validation with ', () => { + describe('buildRouteValidation', () => { + const schema = rt.exact( + rt.type({ + ids: rt.array(rt.string), + }) + ); + type Schema = rt.TypeOf; + + /** + * If your schema is using exact all the way down then the validation will + * catch any additional keys that should not be present within the validation + * when the route_validation uses the exact check. + */ + const deepSchema = rt.exact( + rt.type({ + topLevel: rt.exact( + rt.type({ + secondLevel: rt.exact( + rt.type({ + thirdLevel: rt.string, + }) + ), + }) + ), + }) + ); + type DeepSchema = rt.TypeOf; + + const validationResult: RouteValidationResultFactory = { + badRequest: jest.fn().mockImplementation((e) => e), + ok: jest.fn().mockImplementation((validatedInput) => validatedInput), + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('return validation error', () => { + const input: Omit & { id: string } = { id: 'someId' }; + const result = buildRouteValidation(schema)(input, validationResult); + + expect(result).toEqual('Invalid value "undefined" supplied to "ids"'); + }); + + test('return validated input', () => { + const input: Schema = { ids: ['someId'] }; + const result = buildRouteValidation(schema)(input, validationResult); + + expect(result).toEqual(input); + }); + + test('returns validation error if given extra keys on input for an array', () => { + const input: Schema & { somethingExtra: string } = { + ids: ['someId'], + somethingExtra: 'hello', + }; + const result = buildRouteValidation(schema)(input, validationResult); + expect(result).toEqual('invalid keys "somethingExtra"'); + }); + + test('return validation input for a deep 3rd level object', () => { + const input: DeepSchema = { topLevel: { secondLevel: { thirdLevel: 'hello' } } }; + const result = buildRouteValidation(deepSchema)(input, validationResult); + expect(result).toEqual(input); + }); + + test('return validation error for a deep 3rd level object that has an extra key value of "somethingElse"', () => { + const input: DeepSchema & { + topLevel: { secondLevel: { thirdLevel: string; somethingElse: string } }; + } = { + topLevel: { secondLevel: { somethingElse: 'extraKey', thirdLevel: 'hello' } }, + }; + const result = buildRouteValidation(deepSchema)(input, validationResult); + expect(result).toEqual('invalid keys "somethingElse"'); + }); + }); +}); diff --git a/x-pack/plugins/lists/server/routes/utils/route_validation.ts b/x-pack/plugins/lists/server/routes/utils/route_validation.ts new file mode 100644 index 0000000000000..8e74760d6d15f --- /dev/null +++ b/x-pack/plugins/lists/server/routes/utils/route_validation.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { fold } from 'fp-ts/lib/Either'; +import { pipe } from 'fp-ts/lib/pipeable'; +import * as rt from 'io-ts'; +import { exactCheck, formatErrors } from '@kbn/securitysolution-io-ts-utils'; + +import { + RouteValidationError, + RouteValidationFunction, + RouteValidationResultFactory, +} from '../../../../../../src/core/server'; + +type RequestValidationResult = + | { + value: T; + error?: undefined; + } + | { + value?: undefined; + error: RouteValidationError; + }; + +/** + * Copied from x-pack/plugins/security_solution/server/utils/build_validation/route_validation.ts + * This really should be in @kbn/securitysolution-io-ts-utils rather than copied yet again, however, this has types + * from a lot of places such as RouteValidationResultFactory from core/server which in turn can pull in @kbn/schema + * which cannot work on the front end and @kbn/securitysolution-io-ts-utils works on both front and backend. + * + * TODO: Figure out a way to move this function into a package rather than copying it/forking it within plugins + */ +export const buildRouteValidation = >( + schema: T +): RouteValidationFunction => ( + inputValue: unknown, + validationResult: RouteValidationResultFactory +): RequestValidationResult => + pipe( + schema.decode(inputValue), + (decoded) => exactCheck(inputValue, decoded), + fold>( + (errors: rt.Errors) => validationResult.badRequest(formatErrors(errors).join()), + (validatedInput: A) => validationResult.ok(validatedInput) + ) + ); diff --git a/x-pack/plugins/lists/server/services/lists/list_client.ts b/x-pack/plugins/lists/server/services/lists/list_client.ts index 0b9bfbed28d83..a602bcf943808 100644 --- a/x-pack/plugins/lists/server/services/lists/list_client.ts +++ b/x-pack/plugins/lists/server/services/lists/list_client.ts @@ -6,6 +6,17 @@ */ import { ElasticsearchClient } from 'kibana/server'; +import { + createBootstrapIndex, + deleteAllIndex, + deletePolicy, + deleteTemplate, + getIndexExists, + getPolicyExists, + getTemplateExists, + setPolicy, + setTemplate, +} from '@kbn/securitysolution-es-utils'; import { FoundListItemSchema, @@ -40,17 +51,6 @@ import { searchListItemByValues, updateListItem, } from '../../services/items'; -import { - createBootstrapIndex, - deleteAllIndex, - deletePolicy, - deleteTemplate, - getIndexExists, - getPolicyExists, - getTemplateExists, - setPolicy, - setTemplate, -} from '../../siem_server_deps'; import listsItemsPolicy from '../items/list_item_policy.json'; import listPolicy from './list_policy.json'; diff --git a/x-pack/plugins/lists/server/siem_server_deps.ts b/x-pack/plugins/lists/server/siem_server_deps.ts deleted file mode 100644 index a4263d089e84c..0000000000000 --- a/x-pack/plugins/lists/server/siem_server_deps.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { - transformError, - deleteTemplate, - deletePolicy, - deleteAllIndex, - setPolicy, - setTemplate, - buildSiemResponse, - getTemplateExists, - getPolicyExists, - createBootstrapIndex, - getIndexExists, - buildRouteValidation, - readPrivileges, -} from '../../security_solution/server'; - -export { formatErrors } from '../../security_solution/common'; diff --git a/x-pack/plugins/security_solution/server/index.ts b/x-pack/plugins/security_solution/server/index.ts index a4b9dddec812e..5b95ddf13e033 100644 --- a/x-pack/plugins/security_solution/server/index.ts +++ b/x-pack/plugins/security_solution/server/index.ts @@ -48,17 +48,4 @@ export const config: PluginConfigDescriptor = { export { ConfigType, Plugin, PluginSetup, PluginStart }; export { AppClient }; -// Exports to be shared with plugins such as x-pack/lists plugin -export { deleteTemplate } from './lib/detection_engine/index/delete_template'; -export { deletePolicy } from './lib/detection_engine/index/delete_policy'; -export { deleteAllIndex } from './lib/detection_engine/index/delete_all_index'; -export { setPolicy } from './lib/detection_engine/index/set_policy'; -export { setTemplate } from './lib/detection_engine/index/set_template'; -export { getTemplateExists } from './lib/detection_engine/index/get_template_exists'; -export { getPolicyExists } from './lib/detection_engine/index/get_policy_exists'; -export { createBootstrapIndex } from './lib/detection_engine/index/create_bootstrap_index'; -export { getIndexExists } from './lib/detection_engine/index/get_index_exists'; -export { buildRouteValidation } from './utils/build_validation/route_validation'; -export { transformError, buildSiemResponse } from './lib/detection_engine/routes/utils'; -export { readPrivileges } from './lib/detection_engine/privileges/read_privileges'; export type { AppRequestContext } from './types'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts index fd9b63152ddd3..02f8f3f7b36ab 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/create_bootstrap_index.ts @@ -10,6 +10,10 @@ import { ElasticsearchClient } from 'kibana/server'; // See the reference(s) below on explanations about why -000001 was chosen and // why the is_write_index is true as well as the bootstrapping step which is needed. // Ref: https://www.elastic.co/guide/en/elasticsearch/reference/current/applying-policy-to-template.html + +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const createBootstrapIndex = async ( esClient: ElasticsearchClient, index: string diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts index 48bbbdcbf3a48..d76290921fac8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_all_index.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const deleteAllIndex = async ( esClient: ElasticsearchClient, pattern: string, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts index d671d256f56aa..924970d304c88 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_policy.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const deletePolicy = async ( esClient: ElasticsearchClient, policy: string diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts index e57bbd77120f2..5466fd03f534c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/delete_template.ts @@ -6,6 +6,9 @@ */ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const deleteTemplate = async ( esClient: ElasticsearchClient, name: string diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts index cc7f22064572c..7ca7f9818ba0b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_index_exists.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const getIndexExists = async ( esClient: ElasticsearchClient, index: string diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts index c0d7c38a4bb02..6ebdac0d244cb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_policy_exists.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const getPolicyExists = async ( esClient: ElasticsearchClient, policy: string diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts index 50ec3bfc670d5..af5f874a05688 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/get_template_exists.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const getTemplateExists = async ( esClient: ElasticsearchClient, template: string diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts index 9dbcdd795ac71..113b9d368e0d9 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_policy.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const setPolicy = async ( esClient: ElasticsearchClient, policy: string, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts index e63dbbd6c3e8f..288377c306325 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/index/set_template.ts @@ -7,6 +7,9 @@ import { ElasticsearchClient } from 'kibana/server'; +/** + * @deprecated Use the one from kbn-securitysolution-es-utils + */ export const setTemplate = async ( esClient: ElasticsearchClient, name: string, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts index cedf1744ab06e..c2acbf9c5cc0a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts @@ -25,6 +25,9 @@ export interface OutputError { statusCode: number; } +/** + * @deprecated Use kbn-securitysolution-es-utils version + */ export const transformError = (err: Error & Partial): OutputError => { if (Boom.isBoom(err)) { return { diff --git a/yarn.lock b/yarn.lock index 0c05610667387..e5a0d40728f89 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2702,6 +2702,10 @@ version "0.0.0" uid "" +"@kbn/securitysolution-es-utils@link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module": + version "0.0.0" + uid "" + "@kbn/securitysolution-io-ts-utils@link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module": version "0.0.0" uid "" From 3bf21c3c1f09879b710983fd7296b688c1d82858 Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Wed, 12 May 2021 17:58:17 -0400 Subject: [PATCH 064/144] [RFC] Buildkite (#95070) --- rfcs/images/0018_agent_manager.png | Bin 0 -> 28771 bytes rfcs/images/0018_buildkite_build.png | Bin 0 -> 194899 bytes rfcs/images/0018_buildkite_deps.png | Bin 0 -> 44281 bytes rfcs/images/0018_buildkite_uptime.png | Bin 0 -> 67802 bytes rfcs/images/0018_jenkins_pipeline_steps.png | Bin 0 -> 188275 bytes rfcs/text/0018_buildkite.md | 923 ++++++++++++++++++++ 6 files changed, 923 insertions(+) create mode 100644 rfcs/images/0018_agent_manager.png create mode 100644 rfcs/images/0018_buildkite_build.png create mode 100644 rfcs/images/0018_buildkite_deps.png create mode 100644 rfcs/images/0018_buildkite_uptime.png create mode 100644 rfcs/images/0018_jenkins_pipeline_steps.png create mode 100644 rfcs/text/0018_buildkite.md diff --git a/rfcs/images/0018_agent_manager.png b/rfcs/images/0018_agent_manager.png new file mode 100644 index 0000000000000000000000000000000000000000..92a135386e258bf5b159f331c967d05a17891f47 GIT binary patch literal 28771 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 literal 0 HcmV?d00001 diff --git a/rfcs/images/0018_buildkite_build.png b/rfcs/images/0018_buildkite_build.png new file mode 100644 index 0000000000000000000000000000000000000000..1b04fc85561c8db80c567ec24ce55c1539d77989 GIT binary patch literal 194899 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 NP*Ko?mCKn2{13@;@g@KO literal 0 HcmV?d00001 diff --git a/rfcs/images/0018_buildkite_deps.png b/rfcs/images/0018_buildkite_deps.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b0376d6e26f5456bf8fa1d3b3b1205edd79b5e GIT binary patch literal 44281 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 Z6~^7u9`n9pv#@W-Bazhy4ly9e^k1eg^=SYA literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/runtime-field-menu.png b/docs/user/dashboard/images/runtime-field-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..891de38bb68333cf89cebebecf2cdd064b65b8d5 GIT binary patch literal 30400 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. + [float] [[drag-and-drop-keyboard-navigation]] ===== Create visualization panels with keyboard navigation diff --git a/docs/user/management.asciidoc b/docs/user/management.asciidoc index 83e18734f65d4..397ab1717183b 100644 --- a/docs/user/management.asciidoc +++ b/docs/user/management.asciidoc @@ -131,8 +131,8 @@ Kerberos, PKI, OIDC, and SAML. [cols="50, 50"] |=== -a| <> -|Create and manage the index patterns that retrieve your data from {es}. +a| <> +|Manage the data fields in the index patterns that retrieve your data from {es}. | <> | Copy, edit, delete, import, and export your saved objects. @@ -186,10 +186,10 @@ include::{kib-repo-dir}/management/managing-beats.asciidoc[] include::{kib-repo-dir}/management/action-types.asciidoc[] -include::{kib-repo-dir}/management/managing-fields.asciidoc[] - include::{kib-repo-dir}/management/managing-licenses.asciidoc[] +include::{kib-repo-dir}/management/manage-index-patterns.asciidoc[] + include::{kib-repo-dir}/management/numeral.asciidoc[] include::{kib-repo-dir}/management/rollups/create_and_manage_rollups.asciidoc[] From 9b68804e0cd6f2ea04083b0627b9fc871f455f1f Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Wed, 12 May 2021 16:57:15 -0400 Subject: [PATCH 060/144] [Security Solution][Endpoint] Fix generator so that the `--fleet` option creates a fake agent with fleet (#99942) * new fleet agent generator * Indexing of generated data changed to index fake fleet server agents --- .../data_generators/fleet_agent_generator.ts | 116 +++++++ .../common/endpoint/index_data.ts | 293 ++++++------------ 2 files changed, 211 insertions(+), 198 deletions(-) create mode 100644 x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts new file mode 100644 index 0000000000000..6e508a099003a --- /dev/null +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/fleet_agent_generator.ts @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { estypes } from '@elastic/elasticsearch'; +import { DeepPartial } from 'utility-types'; +import { merge } from 'lodash'; +import { BaseDataGenerator } from './base_data_generator'; +import { Agent, AGENTS_INDEX, FleetServerAgent } from '../../../../fleet/common'; + +export class FleetAgentGenerator extends BaseDataGenerator { + /** + * @param [overrides] any partial value to the full Agent record + * + * @example + * + * fleetAgentGenerator.generate({ + * local_metadata: { + * elastic: { + * agent: { + * log_level: `debug` + * } + * } + * } + * }); + */ + generate(overrides: DeepPartial = {}): Agent { + const hit = this.generateEsHit(); + + // The mapping below is identical to `searchHitToAgent()` located in + // `x-pack/plugins/fleet/server/services/agents/helpers.ts:19` + return merge( + { + // Casting here is needed because several of the attributes in `FleetServerAgent` are + // defined as optional, but required in `Agent` type. + ...(hit._source as Agent), + id: hit._id, + policy_revision: hit._source?.policy_revision_idx, + access_api_key: undefined, + status: undefined, + packages: hit._source?.packages ?? [], + }, + overrides + ); + } + + /** + * @param [overrides] any partial value to the full document + */ + generateEsHit( + overrides: DeepPartial> = {} + ): estypes.Hit { + const hostname = this.randomHostname(); + const now = new Date().toISOString(); + const osFamily = this.randomOSFamily(); + + return merge, DeepPartial>>( + { + _index: AGENTS_INDEX, + _id: this.randomUUID(), + _score: 1.0, + _source: { + access_api_key_id: 'jY3dWnkBj1tiuAw9pAmq', + action_seq_no: -1, + active: true, + enrolled_at: now, + local_metadata: { + elastic: { + agent: { + 'build.original': `8.0.0-SNAPSHOT (build: ${this.randomString( + 5 + )} at 2021-05-07 18:42:49 +0000 UTC)`, + id: this.randomUUID(), + log_level: 'info', + snapshot: true, + upgradeable: true, + version: '8.0.0', + }, + }, + host: { + architecture: 'x86_64', + hostname, + id: this.randomUUID(), + ip: [this.randomIP()], + mac: [this.randomMac()], + name: hostname, + }, + os: { + family: osFamily, + full: `${osFamily} 2019 Datacenter`, + kernel: '10.0.17763.1879 (Build.160101.0800)', + name: `${osFamily} Server 2019 Datacenter`, + platform: osFamily, + version: this.randomVersion(), + }, + }, + user_provided_metadata: {}, + policy_id: this.randomUUID(), + type: 'PERMANENT', + default_api_key: 'so3dWnkBj1tiuAw9yAm3:t7jNlnPnR6azEI_YpXuBXQ', + // policy_output_permissions_hash: + // '81b3d070dddec145fafcbdfb6f22888495a12edc31881f6b0511fa10de66daa7', + default_api_key_id: 'so3dWnkBj1tiuAw9yAm3', + updated_at: now, + last_checkin: now, + policy_revision_idx: 2, + policy_coordinator_idx: 1, + }, + }, + overrides + ); + } +} diff --git a/x-pack/plugins/security_solution/common/endpoint/index_data.ts b/x-pack/plugins/security_solution/common/endpoint/index_data.ts index fd26a2d95c9b4..0dc7891560c2d 100644 --- a/x-pack/plugins/security_solution/common/endpoint/index_data.ts +++ b/x-pack/plugins/security_solution/common/endpoint/index_data.ts @@ -5,31 +5,31 @@ * 2.0. */ -import { Client } from '@elastic/elasticsearch'; +import { Client, estypes } from '@elastic/elasticsearch'; import seedrandom from 'seedrandom'; // eslint-disable-next-line import/no-extraneous-dependencies import { KbnClient } from '@kbn/test'; import { AxiosResponse } from 'axios'; -import { EndpointDocGenerator, TreeOptions, Event } from './generate_data'; +import { EndpointDocGenerator, Event, TreeOptions } from './generate_data'; import { firstNonNullValue } from './models/ecs_safety_helpers'; import { + AGENT_POLICY_API_ROUTES, CreateAgentPolicyRequest, CreateAgentPolicyResponse, CreatePackagePolicyRequest, CreatePackagePolicyResponse, - GetPackagesResponse, - AGENT_API_ROUTES, - AGENT_POLICY_API_ROUTES, EPM_API_ROUTES, + FLEET_SERVER_SERVERS_INDEX, + FleetServerAgent, + GetPackagesResponse, PACKAGE_POLICY_API_ROUTES, - ENROLLMENT_API_KEY_ROUTES, - GetEnrollmentAPIKeysResponse, - GetOneEnrollmentAPIKeyResponse, - Agent, } from '../../../fleet/common'; import { policyFactory as policyConfigFactory } from './models/policy_config'; import { HostMetadata } from './types'; import { KbnClientWithApiKeySupport } from '../../scripts/endpoint/kbn_client_with_api_key_support'; +import { FleetAgentGenerator } from './data_generators/fleet_agent_generator'; + +const fleetAgentGenerator = new FleetAgentGenerator(); export async function indexHostsAndAlerts( client: Client, @@ -47,8 +47,15 @@ export async function indexHostsAndAlerts( ) { const random = seedrandom(seed); const epmEndpointPackage = await getEndpointPackageInfo(kbnClient); + + // If `fleet` integration is true, then ensure a (fake) fleet-server is connected + if (fleet) { + await enableFleetServerIfNecessary(client); + } + // Keep a map of host applied policy ids (fake) to real ingest package configs (policy record) const realPolicies: Record = {}; + for (let i = 0; i < numHosts; i++) { const generator = new EndpointDocGenerator(random); await indexHostDocs({ @@ -71,9 +78,11 @@ export async function indexHostsAndAlerts( options, }); } + await client.indices.refresh({ index: eventIndex, }); + // TODO: Unclear why the documents are not showing up after the call to refresh. // Waiting 5 seconds allows the indices to refresh automatically and // the documents become available in API/integration tests. @@ -107,9 +116,10 @@ async function indexHostDocs({ }) { const timeBetweenDocs = 6 * 3600 * 1000; // 6 hours between metadata documents const timestamp = new Date().getTime(); + const kibanaVersion = await fetchKibanaVersion(kbnClient); let hostMetadata: HostMetadata; let wasAgentEnrolled = false; - let enrolledAgent: undefined | Agent; + let enrolledAgent: undefined | estypes.Hit; for (let j = 0; j < numDocs; j++) { generator.updateHostData(); @@ -136,10 +146,12 @@ async function indexHostDocs({ // If we did not yet enroll an agent for this Host, do it now that we have good policy id if (!wasAgentEnrolled) { wasAgentEnrolled = true; - enrolledAgent = await fleetEnrollAgentForHost( - kbnClient, + + enrolledAgent = await indexFleetAgentForHost( + client, hostMetadata!, - realPolicies[appliedPolicyId].policy_id + realPolicies[appliedPolicyId].policy_id, + kibanaVersion ); } // Update the Host metadata record with the ID of the "real" policy along with the enrolled agent id @@ -149,7 +161,7 @@ async function indexHostDocs({ ...hostMetadata.elastic, agent: { ...hostMetadata.elastic.agent, - id: enrolledAgent?.id ?? hostMetadata.elastic.agent.id, + id: enrolledAgent?._id ?? hostMetadata.elastic.agent.id, }, }, Endpoint: { @@ -295,208 +307,93 @@ const getEndpointPackageInfo = async ( return endpointPackage; }; -const fleetEnrollAgentForHost = async ( - kbnClient: KbnClientWithApiKeySupport, - endpointHost: HostMetadata, - agentPolicyId: string -): Promise => { - // Get Enrollement key for host's applied policy - const enrollmentApiKey = await kbnClient - .request({ - path: ENROLLMENT_API_KEY_ROUTES.LIST_PATTERN, - method: 'GET', - query: { - kuery: `policy_id:"${agentPolicyId}"`, - }, - }) - .then((apiKeysResponse) => { - const apiKey = apiKeysResponse.data.list[0]; +const fetchKibanaVersion = async (kbnClient: KbnClientWithApiKeySupport) => { + const version = ((await kbnClient.request({ + path: '/api/status', + method: 'GET', + })) as AxiosResponse).data.version.number; - if (!apiKey) { - return Promise.reject( - new Error(`no API enrollment key found for agent policy id ${agentPolicyId}`) - ); - } + if (!version) { + // eslint-disable-next-line no-console + console.log('failed to retrieve kibana version'); + return '8.0.0'; + } - return kbnClient - .request({ - path: ENROLLMENT_API_KEY_ROUTES.INFO_PATTERN.replace('{keyId}', apiKey.id), - method: 'GET', - }) - .catch((error) => { - // eslint-disable-next-line no-console - console.log('unable to retrieve enrollment api key for policy'); - return Promise.reject(error); - }); - }) - .then((apiKeyDetailsResponse) => { - return apiKeyDetailsResponse.data.item.api_key; - }) - .catch((error) => { - // eslint-disable-next-line no-console - console.error(error); - return ''; - }); + return version; +}; + +/** + * Will ensure that at least one fleet server is present in the `.fleet-servers` index. This will + * enable the `Agent` section of kibana Fleet to be displayed + * + * @param esClient + * @param version + */ +const enableFleetServerIfNecessary = async (esClient: Client, version: string = '8.0.0') => { + const res = await esClient.search<{}, {}>({ + index: FLEET_SERVER_SERVERS_INDEX, + ignore_unavailable: true, + }); - if (enrollmentApiKey.length === 0) { + // @ts-expect-error value is number | TotalHits + if (res.body.hits.total.value > 0) { return; } - const fetchKibanaVersion = async () => { - const version = ((await kbnClient.request({ - path: '/api/status', - method: 'GET', - })) as AxiosResponse).data.version.number; - if (!version) { - // eslint-disable-next-line no-console - console.log('failed to retrieve kibana version'); - } - return version; - }; + // Create a Fake fleet-server in this kibana instance + await esClient.index({ + index: FLEET_SERVER_SERVERS_INDEX, + body: { + agent: { + id: '12988155-475c-430d-ac89-84dc84b67cd1', + version: '', + }, + host: { + architecture: 'linux', + id: 'c3e5f4f690b4a3ff23e54900701a9513', + ip: ['127.0.0.1', '::1', '10.201.0.213', 'fe80::4001:aff:fec9:d5'], + name: 'endpoint-data-generator', + }, + server: { + id: '12988155-475c-430d-ac89-84dc84b67cd1', + version: '8.0.0-SNAPSHOT', + }, + '@timestamp': '2021-05-12T18:42:52.009482058Z', + }, + }); +}; - // Enroll an agent for the Host - const body = { - type: 'PERMANENT', - metadata: { - local: { +const indexFleetAgentForHost = async ( + esClient: Client, + endpointHost: HostMetadata, + agentPolicyId: string, + kibanaVersion: string = '8.0.0' +): Promise> => { + const agentDoc = fleetAgentGenerator.generateEsHit({ + _source: { + local_metadata: { elastic: { agent: { - version: await fetchKibanaVersion(), + version: kibanaVersion, }, }, host: { ...endpointHost.host, }, os: { - family: 'windows', - kernel: '10.0.19041.388 (WinBuild.160101.0800)', - platform: 'windows', - version: '10.0', - name: 'Windows 10 Pro', - full: 'Windows 10 Pro(10.0)', + ...endpointHost.host.os, }, }, - user_provided: { - dev_agent_version: '0.0.1', - region: 'us-east', - }, + policy_id: agentPolicyId, }, - }; - - try { - // First enroll the agent - const res = await kbnClient.requestWithApiKey(AGENT_API_ROUTES.ENROLL_PATTERN, { - method: 'POST', - body: JSON.stringify(body), - headers: { - 'kbn-xsrf': 'xxx', - Authorization: `ApiKey ${enrollmentApiKey}`, - 'Content-Type': 'application/json', - }, - }); - - if (res) { - const enrollObj = await res.json(); - if (!res.ok) { - // eslint-disable-next-line no-console - console.error('unable to enroll agent', enrollObj); - return; - } - // ------------------------------------------------ - // now check the agent in so that it can complete enrollment - const checkinBody = { - events: [ - { - type: 'STATE', - subtype: 'RUNNING', - message: 'state changed from STOPPED to RUNNING', - timestamp: new Date().toISOString(), - payload: { - random: 'data', - state: 'RUNNING', - previous_state: 'STOPPED', - }, - agent_id: enrollObj.item.id, - }, - ], - }; - const checkinRes = await kbnClient - .requestWithApiKey( - AGENT_API_ROUTES.CHECKIN_PATTERN.replace('{agentId}', enrollObj.item.id), - { - method: 'POST', - body: JSON.stringify(checkinBody), - headers: { - 'kbn-xsrf': 'xxx', - Authorization: `ApiKey ${enrollObj.item.access_api_key}`, - 'Content-Type': 'application/json', - }, - } - ) - .catch((error) => { - return Promise.reject(error); - }); - - // Agent unenrolling? - if (checkinRes.status === 403) { - return; - } - - const checkinObj = await checkinRes.json(); - if (!checkinRes.ok) { - // eslint-disable-next-line no-console - console.error( - `failed to checkin agent [${enrollObj.item.id}] for endpoint [${endpointHost.host.id}]` - ); - return enrollObj.item; - } - - // ------------------------------------------------ - // If we have an action to ack(), then do it now - if (checkinObj.actions.length) { - const ackActionBody = { - // @ts-ignore - events: checkinObj.actions.map((action) => { - return { - action_id: action.id, - type: 'ACTION_RESULT', - subtype: 'CONFIG', - timestamp: new Date().toISOString(), - agent_id: action.agent_id, - policy_id: agentPolicyId, - message: `endpoint generator: Endpoint Started`, - }; - }), - }; - const ackActionResp = await kbnClient.requestWithApiKey( - AGENT_API_ROUTES.ACKS_PATTERN.replace('{agentId}', enrollObj.item.id), - { - method: 'POST', - body: JSON.stringify(ackActionBody), - headers: { - 'kbn-xsrf': 'xxx', - Authorization: `ApiKey ${enrollObj.item.access_api_key}`, - 'Content-Type': 'application/json', - }, - } - ); + }); - const ackActionObj = await ackActionResp.json(); - if (!ackActionResp.ok) { - // eslint-disable-next-line no-console - console.error( - `failed to ACK Actions provided to agent [${enrollObj.item.id}] for endpoint [${endpointHost.host.id}]` - ); - // eslint-disable-next-line no-console - console.error(JSON.stringify(ackActionObj, null, 2)); - return enrollObj.item; - } - } + await esClient.index({ + index: agentDoc._index, + id: agentDoc._id, + body: agentDoc._source!, + op_type: 'create', + }); - return enrollObj.item; - } - } catch (error) { - // eslint-disable-next-line no-console - console.error(error); - } + return agentDoc; }; From bb4b186811d376209b4f7f4aa25bdce02d0f9eb3 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Wed, 12 May 2021 15:20:47 -0600 Subject: [PATCH 061/144] Update reporting troubleshooting docs with section about Elastic Maps Service (#99780) * Update reporting troubleshooting docs with section about Elastic Maps Service * Update docs/user/reporting/reporting-troubleshooting.asciidoc Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> * Update docs/user/reporting/reporting-troubleshooting.asciidoc Co-authored-by: Lisa Cawley * review feedback Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> Co-authored-by: Lisa Cawley --- docs/user/reporting/reporting-troubleshooting.asciidoc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/user/reporting/reporting-troubleshooting.asciidoc b/docs/user/reporting/reporting-troubleshooting.asciidoc index c43e9210dd7c8..4305b39653f8d 100644 --- a/docs/user/reporting/reporting-troubleshooting.asciidoc +++ b/docs/user/reporting/reporting-troubleshooting.asciidoc @@ -16,6 +16,7 @@ Having trouble? Here are solutions to common problems you might encounter while * <> * <> * <> +* <> [float] [[reporting-diagnostics]] @@ -163,3 +164,12 @@ In this case, try increasing the memory for the {kib} instance to 2GB. === ARM systems Chromium is not compatible with ARM RHEL/CentOS. + +[float] +[[reporting-troubleshooting-maps-ems]] +=== Unable to connect to Elastic Maps Service + +https://www.elastic.co/elastic-maps-service[{ems} ({ems-init})] is a service that hosts +tile layers and vector shapes of administrative boundaries. +If a report contains a map with a missing basemap layer or administrative boundary, the {kib} server does not have access to {ems-init}. +See <> for information on how to connect your {kib} server to {ems-init}. From 9b2e8c94d3b30f750dae2686afb3edd0b8d76670 Mon Sep 17 00:00:00 2001 From: gchaps <33642766+gchaps@users.noreply.github.com> Date: Wed, 12 May 2021 14:30:25 -0700 Subject: [PATCH 062/144] [DOCS] Adds a section on runtime fields to the Discover intro (#99143) * [DOCS] Adds a section on runtime fields to the Discover intro * [DOCS] Updates images * Adds link to runtime fields doc * [DOCS] Adds note about filtering, editing, and deleting runtime fields Co-authored-by: KOTungseth Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- docs/discover/images/add-field-to-pattern.png | Bin 0 -> 52820 bytes docs/discover/images/hello-field.png | Bin 0 -> 38300 bytes docs/user/discover.asciidoc | 42 +++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 docs/discover/images/add-field-to-pattern.png create mode 100644 docs/discover/images/hello-field.png diff --git a/docs/discover/images/add-field-to-pattern.png b/docs/discover/images/add-field-to-pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..84dfcb0745c6915e74b76b2b19aad7c63e0ca75d GIT binary patch literal 52820 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

    YrX`gEmL?$%2CbpMyT3 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

  • + } + body={ +

    + {i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.empty.description', { + defaultMessage: + 'Create schema fields in advance, or index some documents and a schema will be created for you.', + })} +

    + } + actions={ + + {i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.empty.buttonLabel', { + defaultMessage: 'Read the indexing schema guide', + })} + + } + /> + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts new file mode 100644 index 0000000000000..7da44849b5bc0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { SchemaCallouts } from './schema_callouts'; +export { SchemaTable } from './schema_table'; +export { EmptyState } from './empty_state'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_callouts.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_callouts.test.tsx new file mode 100644 index 0000000000000..5bb08a6c8859a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_callouts.test.tsx @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues, setMockActions } from '../../../../__mocks__'; +import '../../../__mocks__/engine_logic.mock'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { SchemaErrorsCallout } from '../../../../shared/schema'; + +import { + UnsearchedFieldsCallout, + UnconfirmedFieldsCallout, + ConfirmSchemaButton, +} from './schema_callouts'; + +import { SchemaCallouts } from './'; + +describe('SchemaCallouts', () => { + const values = { + hasUnconfirmedFields: false, + hasNewUnsearchedFields: false, + mostRecentIndexJob: { + hasErrors: false, + activeReindexJobId: 'some-id', + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(values); + }); + + it('renders nothing if there is nothing to call out', () => { + const wrapper = shallow(); + + expect(wrapper.text()).toBeFalsy(); + }); + + it('renders a schema errors callout if the most recent index job had errors', () => { + setMockValues({ + ...values, + mostRecentIndexJob: { + hasErrors: true, + activeReindexJobId: '12345', + }, + }); + const wrapper = shallow(); + + expect(wrapper.find(SchemaErrorsCallout)).toHaveLength(1); + expect(wrapper.find(SchemaErrorsCallout).prop('viewErrorsPath')).toEqual( + '/engines/some-engine/schema/reindex_job/12345' + ); + }); + + it('renders an unsearched fields callout if the schema has new unconfirmed & unsearched fields', () => { + setMockValues({ + ...values, + hasUnconfirmedFields: true, + hasNewUnsearchedFields: true, + }); + const wrapper = shallow(); + + expect(wrapper.find(UnsearchedFieldsCallout)).toHaveLength(1); + }); + + it('renders an unconfirmed fields callout if the schema has unconfirmed fields', () => { + setMockValues({ + ...values, + hasUnconfirmedFields: true, + }); + const wrapper = shallow(); + + expect(wrapper.find(UnconfirmedFieldsCallout)).toHaveLength(1); + }); + + describe('UnsearchedFieldsCallout', () => { + it('renders an info callout about unsearched fields with a link to the relevance tuning page', () => { + const wrapper = shallow(); + + expect(wrapper.prop('title')).toEqual( + 'Recently added fields are not being searched by default' + ); + expect(wrapper.find('[data-test-subj="relevanceTuningButtonLink"]').prop('to')).toEqual( + '/engines/some-engine/relevance_tuning' + ); + }); + }); + + describe('UnconfirmedFieldsCallout', () => { + it('renders an info callout about unconfirmed fields', () => { + const wrapper = shallow(); + + expect(wrapper.prop('title')).toEqual("You've recently added new schema fields"); + }); + }); + + describe('ConfirmSchemaButton', () => { + const actions = { updateSchema: jest.fn() }; + + beforeEach(() => { + setMockValues({ isUpdating: false }); + setMockActions(actions); + }); + + it('allows users to confirm schema without changes from the callouts', () => { + const wrapper = shallow(); + + wrapper.simulate('click'); + expect(actions.updateSchema).toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_callouts.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_callouts.tsx new file mode 100644 index 0000000000000..50a2ee5c83abe --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_callouts.tsx @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useValues, useActions } from 'kea'; + +import { EuiCallOut, EuiButton, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { EuiButtonTo } from '../../../../shared/react_router_helpers'; +import { SchemaErrorsCallout } from '../../../../shared/schema'; +import { ENGINE_RELEVANCE_TUNING_PATH, ENGINE_REINDEX_JOB_PATH } from '../../../routes'; +import { generateEnginePath } from '../../engine'; + +import { SchemaLogic } from '../schema_logic'; + +export const SchemaCallouts: React.FC = () => { + const { + hasUnconfirmedFields, + hasNewUnsearchedFields, + mostRecentIndexJob: { hasErrors, activeReindexJobId }, + } = useValues(SchemaLogic); + + return ( + <> + {hasErrors && ( + <> + + + + )} + {hasUnconfirmedFields && ( + <> + {hasNewUnsearchedFields ? : } + + + )} + + ); +}; + +export const UnsearchedFieldsCallout: React.FC = () => ( + +

    + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.unsearchedFields.description', + { + defaultMessage: + 'If these new fields should be searchable, update your search settings to include them. If you want them to remain unsearchable, confirm your new field types to dismiss this alert.', + } + )} +

    + + + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.unsearchedFields.searchSettingsButtonLabel', + { defaultMessage: 'Update search settings' } + )} + + + + + + +
    +); + +export const UnconfirmedFieldsCallout: React.FC = () => ( + +

    + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFields.description', + { + defaultMessage: + 'Set your new schema field(s) to their correct or expected types, and then confirm your field types.', + } + )} +

    + +
    +); + +export const ConfirmSchemaButton: React.FC = () => { + const { updateSchema } = useActions(SchemaLogic); + const { isUpdating } = useValues(SchemaLogic); + + return ( + updateSchema()} + data-test-subj="confirmSchemaTypesButton" + > + {i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.confirmSchemaButtonLabel', { + defaultMessage: 'Confirm types', + })} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.test.tsx new file mode 100644 index 0000000000000..c8b0bb7ddbac5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.test.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues, setMockActions } from '../../../../__mocks__'; + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { EuiTable, EuiTableHeaderCell, EuiTableRow, EuiHealth } from '@elastic/eui'; + +import { SchemaFieldTypeSelect } from '../../../../shared/schema'; + +import { SchemaTable } from './'; + +describe('SchemaTable', () => { + const values = { + schema: {}, + unconfirmedFields: [], + }; + const actions = { + updateSchemaFieldType: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(values); + setMockActions(actions); + }); + + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiTable)).toHaveLength(1); + expect(wrapper.find(EuiTableHeaderCell).first().prop('children')).toEqual('Field name'); + expect(wrapper.find(EuiTableHeaderCell).last().prop('children')).toEqual('Field type'); + }); + + it('always renders an initial ID row (with no field type select)', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiTableRow)).toHaveLength(1); + expect(wrapper.find('code').text()).toEqual('id'); + expect(wrapper.find(SchemaFieldTypeSelect)).toHaveLength(0); + }); + + it('renders subsequent table rows for each schema field', () => { + setMockValues({ + ...values, + schema: { + some_text_field: 'text', + some_number_field: 'number', + some_date_field: 'date', + some_location_field: 'geolocation', + }, + }); + const wrapper = shallow(); + + expect(wrapper.find(EuiTableRow)).toHaveLength(5); + + expect(wrapper.find('code').at(1).text()).toEqual('some_text_field'); + expect(wrapper.find(SchemaFieldTypeSelect).at(0).prop('fieldType')).toEqual('text'); + + expect(wrapper.find('code').last().text()).toEqual('some_location_field'); + expect(wrapper.find(SchemaFieldTypeSelect).last().prop('fieldType')).toEqual('geolocation'); + }); + + it('renders a recently added status if a field has been recently added', () => { + setMockValues({ + ...values, + schema: { + some_new_field: 'text', + }, + unconfirmedFields: ['some_new_field'], + }); + const wrapper = shallow(); + + expect(wrapper.find(EuiHealth)).toHaveLength(1); + expect(wrapper.find(EuiHealth).childAt(0).prop('children')).toEqual('Recently added'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx new file mode 100644 index 0000000000000..d9187bb65adf0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useValues, useActions } from 'kea'; + +import { + EuiTable, + EuiTableHeader, + EuiTableHeaderCell, + EuiTableBody, + EuiTableRow, + EuiTableRowCell, + EuiHealth, + EuiText, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { SchemaFieldTypeSelect } from '../../../../shared/schema'; +import { FIELD_NAME, FIELD_TYPE } from '../../../../shared/schema/constants'; + +import { SchemaLogic } from '../schema_logic'; + +export const SchemaTable: React.FC = () => { + const { schema, unconfirmedFields } = useValues(SchemaLogic); + const { updateSchemaFieldType } = useActions(SchemaLogic); + + return ( + + + {FIELD_NAME} + + {FIELD_TYPE} + + + + + + id + + + + + + {Object.entries(schema).map(([fieldName, fieldType]) => { + const isRecentlyAdded = unconfirmedFields.length && unconfirmedFields.includes(fieldName); + + return ( + + + {fieldName} + + {isRecentlyAdded ? ( + + + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFieldLabel', + { defaultMessage: 'Recently added' } + )} + + + + ) : ( + + )} + + + + + ); + })} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts index e5dbf97b971d9..2f5788278aa0b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/schema_base_logic.test.ts @@ -72,6 +72,17 @@ describe('SchemaBaseLogic', () => { describe('listeners', () => { describe('loadSchema', () => { + it('sets dataLoading to true', () => { + mount({ dataLoading: false }); + + SchemaBaseLogic.actions.loadSchema(); + + expect(SchemaBaseLogic.values).toEqual({ + ...DEFAULT_VALUES, + dataLoading: true, + }); + }); + it('should make an API call and then set schema state', async () => { http.get.mockReturnValueOnce(Promise.resolve(MOCK_RESPONSE)); mount(); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.test.tsx index fd6a742d00cda..23d1480e5dca9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.test.tsx @@ -15,15 +15,26 @@ import { shallow } from 'enzyme'; import { EuiPageHeader, EuiButton } from '@elastic/eui'; import { Loading } from '../../../../shared/loading'; +import { SchemaAddFieldModal } from '../../../../shared/schema'; + +import { SchemaCallouts, SchemaTable, EmptyState } from '../components'; import { Schema } from './'; describe('Schema', () => { const values = { dataLoading: false, + hasSchema: true, + hasSchemaChanged: false, + isUpdating: false, + isModalOpen: false, }; const actions = { loadSchema: jest.fn(), + updateSchema: jest.fn(), + addSchemaField: jest.fn(), + openModal: jest.fn(), + closeModal: jest.fn(), }; beforeEach(() => { @@ -35,8 +46,8 @@ describe('Schema', () => { it('renders', () => { const wrapper = shallow(); - expect(wrapper.isEmptyRender()).toBe(false); - // TODO: Check for schema components + expect(wrapper.find(SchemaCallouts)).toHaveLength(1); + expect(wrapper.find(SchemaTable)).toHaveLength(1); }); it('calls loadSchema on mount', () => { @@ -52,14 +63,79 @@ describe('Schema', () => { expect(wrapper.find(Loading)).toHaveLength(1); }); - it('renders page action buttons', () => { - const wrapper = shallow() - .find(EuiPageHeader) - .dive() - .children() - .dive(); + it('renders an empty state', () => { + setMockValues({ ...values, hasSchema: false }); + const wrapper = shallow(); + + expect(wrapper.find(EmptyState)).toHaveLength(1); + }); + + describe('page action buttons', () => { + const subject = () => + shallow() + .find(EuiPageHeader) + .dive() + .children() + .dive(); + + it('renders', () => { + const wrapper = subject(); + expect(wrapper.find(EuiButton)).toHaveLength(2); + }); + + it('renders loading/disabled state when schema is updating', () => { + setMockValues({ isUpdating: true }); + const wrapper = subject(); + + expect(wrapper.find('[data-test-subj="updateSchemaButton"]').prop('isLoading')).toBe(true); + expect(wrapper.find('[data-test-subj="addSchemaFieldModalButton"]').prop('disabled')).toBe( + true + ); + }); + + describe('add button', () => { + it('opens the add schema field modal', () => { + const wrapper = subject(); + + wrapper.find('[data-test-subj="addSchemaFieldModalButton"]').simulate('click'); + expect(actions.openModal).toHaveBeenCalled(); + }); + }); + + describe('update button', () => { + describe('when nothing on the page has changed', () => { + it('is disabled', () => { + const wrapper = subject(); + + expect(wrapper.find('[data-test-subj="updateSchemaButton"]').prop('disabled')).toBe(true); + }); + }); + + describe('when schema has been changed locally', () => { + it('is enabled', () => { + setMockValues({ ...values, hasSchemaChanged: true }); + const wrapper = subject(); + + expect(wrapper.find('[data-test-subj="updateSchemaButton"]').prop('disabled')).toBe( + false + ); + }); + + it('calls updateSchema on click', () => { + setMockValues({ ...values, hasSchemaChanged: true }); + const wrapper = subject(); + + wrapper.find('[data-test-subj="updateSchemaButton"]').simulate('click'); + expect(actions.updateSchema).toHaveBeenCalled(); + }); + }); + }); + }); + + it('renders a modal that lets a user add a new schema field', () => { + setMockValues({ isModalOpen: true }); + const wrapper = shallow(); - expect(wrapper.find(EuiButton)).toHaveLength(2); - // TODO: Expect click actions + expect(wrapper.find(SchemaAddFieldModal)).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx index 21dd52b04f4a7..7bc995b16468a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/schema.tsx @@ -14,12 +14,18 @@ import { i18n } from '@kbn/i18n'; import { FlashMessages } from '../../../../shared/flash_messages'; import { Loading } from '../../../../shared/loading'; +import { SchemaAddFieldModal } from '../../../../shared/schema'; +import { SchemaCallouts, SchemaTable, EmptyState } from '../components'; import { SchemaLogic } from '../schema_logic'; export const Schema: React.FC = () => { - const { loadSchema } = useActions(SchemaLogic); - const { dataLoading } = useValues(SchemaLogic); + const { loadSchema, updateSchema, addSchemaField, openModal, closeModal } = useActions( + SchemaLogic + ); + const { dataLoading, isUpdating, hasSchema, hasSchemaChanged, isModalOpen } = useValues( + SchemaLogic + ); useEffect(() => { loadSchema(); @@ -38,13 +44,24 @@ export const Schema: React.FC = () => { { defaultMessage: 'Add new fields or change the types of existing ones.' } )} rightSideItems={[ - + updateSchema()} + data-test-subj="updateSchemaButton" + > {i18n.translate( 'xpack.enterpriseSearch.appSearch.engine.schema.updateSchemaButtonLabel', { defaultMessage: 'Update types' } )} , - + {i18n.translate( 'xpack.enterpriseSearch.appSearch.engine.schema.createSchemaFieldButtonLabel', { defaultMessage: 'Create a schema field' } @@ -53,7 +70,13 @@ export const Schema: React.FC = () => { ]} /> - TODO + + + {hasSchema ? : } + {isModalOpen && ( + + )} + ); }; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5c0dd9d672bfe..244b294baffe5 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -8156,6 +8156,7 @@ "xpack.enterpriseSearch.appSearch.engine.sampleEngineBadge": "サンプルエンジン", "xpack.enterpriseSearch.appSearch.engine.schema.conflicts": "スキーマ競合", "xpack.enterpriseSearch.appSearch.engine.schema.title": "スキーマ", + "xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFieldLabel": "最近追加された項目", "xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFields": "新しい未確認のフィールド", "xpack.enterpriseSearch.appSearch.engine.searchUI.title": "Search UI", "xpack.enterpriseSearch.appSearch.engine.synonyms.title": "同義語", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ea9340fd9a2a5..8bdffce98d4ab 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -8225,6 +8225,7 @@ "xpack.enterpriseSearch.appSearch.engine.sampleEngineBadge": "样本引擎", "xpack.enterpriseSearch.appSearch.engine.schema.conflicts": "架构冲突", "xpack.enterpriseSearch.appSearch.engine.schema.title": "架构", + "xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFieldLabel": "最近添加", "xpack.enterpriseSearch.appSearch.engine.schema.unconfirmedFields": "新的未确认字段", "xpack.enterpriseSearch.appSearch.engine.searchUI.title": "搜索 UI", "xpack.enterpriseSearch.appSearch.engine.synonyms.title": "同义词", From 91136c98a7f074c12c2d235aaf9d0bc468d930e5 Mon Sep 17 00:00:00 2001 From: Michael Dokolin Date: Thu, 13 May 2021 09:44:09 +0200 Subject: [PATCH 067/144] [Expressions] Fix expressions execution unit test to use fake timers for reliability (#99952) --- .../expressions/common/execution/execution.test.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/expressions/common/execution/execution.test.ts b/src/plugins/expressions/common/execution/execution.test.ts index 343ea9ef7f03c..69687f75f3098 100644 --- a/src/plugins/expressions/common/execution/execution.test.ts +++ b/src/plugins/expressions/common/execution/execution.test.ts @@ -362,14 +362,21 @@ describe('Execution', () => { }); test('result is undefined until execution completes', async () => { + jest.useFakeTimers(); const execution = createExecution('sleep 10'); expect(execution.state.get().result).toBe(undefined); execution.start(null).subscribe(jest.fn()); expect(execution.state.get().result).toBe(undefined); - await new Promise((r) => setTimeout(r, 1)); + + jest.advanceTimersByTime(1); + await new Promise(process.nextTick); expect(execution.state.get().result).toBe(undefined); - await new Promise((r) => setTimeout(r, 11)); + + jest.advanceTimersByTime(10); + await new Promise(process.nextTick); expect(execution.state.get().result).toBe(null); + + jest.useRealTimers(); }); test('handles functions returning observables', () => { From 631954451be799a2b888baeba46b026e754629a8 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Thu, 13 May 2021 08:03:30 -0400 Subject: [PATCH 068/144] [Security Solution][Endpoint] Delete Event Filter from the List (#99686) * modal for delete of event filter * Add total count of items to the List view --- .../management/pages/event_filters/index.tsx | 3 - .../pages/event_filters/service/index.ts | 9 ++ .../pages/event_filters/store/action.ts | 18 ++- .../pages/event_filters/store/builders.ts | 13 +- .../event_filters/store/middleware.test.ts | 1 + .../pages/event_filters/store/middleware.ts | 49 +++++- .../pages/event_filters/store/reducer.ts | 54 ++++++- .../pages/event_filters/store/selector.ts | 39 +++++ .../management/pages/event_filters/types.ts | 6 + .../event_filter_delete_modal.test.tsx | 152 ++++++++++++++++++ .../components/event_filter_delete_modal.tsx | 135 ++++++++++++++++ .../view/event_filters_list_page.test.tsx | 12 ++ .../view/event_filters_list_page.tsx | 29 +++- .../public/management/types.ts | 2 +- 14 files changed, 505 insertions(+), 17 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.test.tsx create mode 100644 x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.tsx diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/index.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/index.tsx index 3457010181b98..86c2f2364961d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/index.tsx @@ -19,6 +19,3 @@ export const EventFiltersContainer = () => { ); }; -export { EventFiltersService } from './types'; -export { EventFiltersListPageState } from './types'; -export { EventFiltersListPageData } from './types'; diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts index b8fe7c142dbb1..6a95ac5c15e83 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/service/index.ts @@ -92,4 +92,13 @@ export class EventFiltersHttpService implements EventFiltersService { body: JSON.stringify(exception), }); } + + async deleteOne(id: string): Promise { + return (await this.httpWrapper()).delete(EXCEPTION_LIST_ITEM_URL, { + query: { + id, + namespace_type: 'agnostic', + }, + }); + } } diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/action.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/action.ts index ece1e7385b67b..4ae90e7abba90 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/action.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/action.ts @@ -22,6 +22,18 @@ export type EventFiltersListPageDataExistsChanged = Action<'eventFiltersListPage payload: EventFiltersListPageState['listPage']['dataExist']; }; +export type EventFilterForDeletion = Action<'eventFilterForDeletion'> & { + payload: ExceptionListItemSchema; +}; + +export type EventFilterDeletionReset = Action<'eventFilterDeletionReset'>; + +export type EventFilterDeleteSubmit = Action<'eventFilterDeleteSubmit'>; + +export type EventFilterDeleteStatusChanged = Action<'eventFilterDeleteStatusChanged'> & { + payload: EventFiltersListPageState['listPage']['deletion']['status']; +}; + export type EventFiltersInitForm = Action<'eventFiltersInitForm'> & { payload: { entry: UpdateExceptionListItemSchema | CreateExceptionListItemSchema; @@ -65,4 +77,8 @@ export type EventFiltersPageAction = | EventFiltersCreateStart | EventFiltersCreateSuccess | EventFiltersCreateError - | EventFiltersFormStateChanged; + | EventFiltersFormStateChanged + | EventFilterForDeletion + | EventFilterDeletionReset + | EventFilterDeleteSubmit + | EventFilterDeleteStatusChanged; diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/builders.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/builders.ts index 5a8cb4834c4b5..30722a33270ee 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/builders.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/builders.ts @@ -7,6 +7,7 @@ import { MANAGEMENT_DEFAULT_PAGE, MANAGEMENT_DEFAULT_PAGE_SIZE } from '../../../common/constants'; import { EventFiltersListPageState } from '../types'; +import { createLoadedResourceState, createUninitialisedResourceState } from '../../../state'; export const initialEventFiltersPageState = (): EventFiltersListPageState => ({ entries: [], @@ -16,7 +17,7 @@ export const initialEventFiltersPageState = (): EventFiltersListPageState => ({ hasItemsError: false, hasOSError: false, newComment: '', - submissionResourceState: { type: 'UninitialisedResourceState' }, + submissionResourceState: createUninitialisedResourceState(), }, location: { page_index: MANAGEMENT_DEFAULT_PAGE, @@ -26,8 +27,12 @@ export const initialEventFiltersPageState = (): EventFiltersListPageState => ({ listPage: { active: false, forceRefresh: false, - data: { type: 'UninitialisedResourceState' }, - /** We started off assuming data exists, until we can confirm othewise */ - dataExist: { type: 'LoadedResourceState', data: true }, + data: createUninitialisedResourceState(), + /** We started off assuming data exists, until we can confirm otherwise */ + dataExist: createLoadedResourceState(true), + deletion: { + item: undefined, + status: createUninitialisedResourceState(), + }, }, }); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.test.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.test.ts index 787447797158d..b55a32a937c45 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.test.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.test.ts @@ -28,6 +28,7 @@ const createEventFiltersServiceMock = (): jest.Mocked => ({ getList: jest.fn(), getOne: jest.fn(), updateOne: jest.fn(), + deleteOne: jest.fn(), }); const createStoreSetup = (eventFiltersService: EventFiltersService) => { diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts index 1bd1340326d09..b32b39fb9293c 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/middleware.ts @@ -14,8 +14,6 @@ import { import { EventFiltersHttpService } from '../service'; -import { getLastLoadedResourceState } from '../../../state/async_resource_state'; - import { CreateExceptionListItemSchema, ExceptionListItemSchema, @@ -33,6 +31,9 @@ import { getFormEntry, getSubmissionResource, getNewComment, + isDeletionInProgress, + getItemToDelete, + getDeletionState, } from './selector'; import { parseQueryFilterToKQL } from '../../../common/utils'; @@ -47,7 +48,9 @@ import { createFailedResourceState, createLoadedResourceState, createLoadingResourceState, + getLastLoadedResourceState, } from '../../../state'; +import { ServerApiError } from '../../../../common/types'; const addNewComments = ( entry: UpdateExceptionListItemSchema | CreateExceptionListItemSchema, @@ -279,6 +282,43 @@ const refreshListDataIfNeeded: MiddlewareActionHandler = async (store, eventFilt } }; +const eventFilterDeleteEntry: MiddlewareActionHandler = async ( + { getState, dispatch }, + eventFiltersService +) => { + const state = getState(); + + if (isDeletionInProgress(state)) { + return; + } + + const itemId = getItemToDelete(state)?.id; + + if (!itemId) { + return; + } + + dispatch({ + type: 'eventFilterDeleteStatusChanged', + // Ignore will be fixed with when AsyncResourceState is refactored (#830) + // @ts-ignore + payload: createLoadingResourceState(getDeletionState(state).status), + }); + + try { + const response = await eventFiltersService.deleteOne(itemId); + dispatch({ + type: 'eventFilterDeleteStatusChanged', + payload: createLoadedResourceState(response), + }); + } catch (e) { + dispatch({ + type: 'eventFilterDeleteStatusChanged', + payload: createFailedResourceState(e.body ?? e), + }); + } +}; + export const createEventFiltersPageMiddleware = ( eventFiltersService: EventFiltersService ): ImmutableMiddleware => { @@ -298,9 +338,12 @@ export const createEventFiltersPageMiddleware = ( if ( action.type === 'userChangedUrl' || action.type === 'eventFiltersCreateSuccess' || - action.type === 'eventFiltersUpdateSuccess' + action.type === 'eventFiltersUpdateSuccess' || + action.type === 'eventFilterDeleteStatusChanged' ) { refreshListDataIfNeeded(store, eventFiltersService); + } else if (action.type === 'eventFilterDeleteSubmit') { + eventFilterDeleteEntry(store, eventFiltersService); } } }; diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/reducer.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/reducer.ts index 323d063f31b87..d69efb689c877 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/reducer.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/reducer.ts @@ -14,7 +14,10 @@ import { AppLocation, Immutable } from '../../../../../common/endpoint/types'; import { UserChangedUrl } from '../../../../common/store/routing/action'; import { MANAGEMENT_ROUTING_EVENT_FILTERS_PATH } from '../../../common/constants'; import { extractEventFiltetrsPageLocation } from '../../../common/routing'; -import { isUninitialisedResourceState } from '../../../state/async_resource_state'; +import { + isLoadedResourceState, + isUninitialisedResourceState, +} from '../../../state/async_resource_state'; import { EventFiltersInitForm, @@ -24,6 +27,9 @@ import { EventFiltersUpdateSuccess, EventFiltersListPageDataChanged, EventFiltersListPageDataExistsChanged, + EventFilterForDeletion, + EventFilterDeletionReset, + EventFilterDeleteStatusChanged, } from './action'; import { initialEventFiltersPageState } from './builders'; @@ -173,6 +179,46 @@ const userChangedUrl: CaseReducer = (state, action) => { } }; +const handleEventFilterForDeletion: CaseReducer = (state, action) => { + return { + ...state, + listPage: { + ...state.listPage, + deletion: { + ...state.listPage.deletion, + item: action.payload, + }, + }, + }; +}; + +const handleEventFilterDeletionReset: CaseReducer = (state) => { + return { + ...state, + listPage: { + ...state.listPage, + deletion: initialEventFiltersPageState().listPage.deletion, + }, + }; +}; + +const handleEventFilterDeleteStatusChanges: CaseReducer = ( + state, + action +) => { + return { + ...state, + listPage: { + ...state.listPage, + forceRefresh: isLoadedResourceState(action.payload) ? true : state.listPage.forceRefresh, + deletion: { + ...state.listPage.deletion, + status: action.payload, + }, + }, + }; +}; + export const eventFiltersPageReducer: StateReducer = ( state = initialEventFiltersPageState(), action @@ -199,6 +245,12 @@ export const eventFiltersPageReducer: StateReducer = ( return handleEventFiltersListPageDataChanges(state, action); case 'eventFiltersListPageDataExistsChanged': return handleEventFiltersListPageDataExistChanges(state, action); + case 'eventFilterForDeletion': + return handleEventFilterForDeletion(state, action); + case 'eventFilterDeletionReset': + return handleEventFilterDeletionReset(state, action); + case 'eventFilterDeleteStatusChanged': + return handleEventFilterDeleteStatusChanges(state, action); } } diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts index c24d300a5584d..e6f67f7329e6a 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/store/selector.ts @@ -183,3 +183,42 @@ export const listDataNeedsRefresh: EventFiltersSelector = createSelecto ); } ); + +export const getDeletionState = createSelector( + getCurrentListPageState, + (listState) => listState.deletion +); + +export const showDeleteModal: EventFiltersSelector = createSelector( + getDeletionState, + ({ item }) => { + return Boolean(item); + } +); + +export const getItemToDelete: EventFiltersSelector< + StoreState['listPage']['deletion']['item'] +> = createSelector(getDeletionState, ({ item }) => item); + +export const isDeletionInProgress: EventFiltersSelector = createSelector( + getDeletionState, + ({ status }) => { + return isLoadingResourceState(status); + } +); + +export const wasDeletionSuccessful: EventFiltersSelector = createSelector( + getDeletionState, + ({ status }) => { + return isLoadedResourceState(status); + } +); + +export const getDeleteError: EventFiltersSelector = createSelector( + getDeletionState, + ({ status }) => { + if (isFailedResourceState(status)) { + return status.error; + } + } +); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts b/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts index 80abe225bf289..cc70a2037a5af 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/types.ts @@ -48,6 +48,7 @@ export interface EventFiltersService { getList(options?: EventFiltersServiceGetListOptions): Promise; getOne(id: string): Promise; updateOne(exception: Immutable): Promise; + deleteOne(id: string): Promise; } export interface EventFiltersListPageData { @@ -68,5 +69,10 @@ export interface EventFiltersListPageState { data: AsyncResourceState; /** tracks if the overall list (not filtered or with invalid page numbers) contains data */ dataExist: AsyncResourceState; + /** state for deletion of items from the list */ + deletion: { + item: ExceptionListItemSchema | undefined; + status: AsyncResourceState; + }; }; } diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.test.tsx new file mode 100644 index 0000000000000..cec3e34d9c98f --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.test.tsx @@ -0,0 +1,152 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + AppContextTestRender, + createAppRootMockRenderer, +} from '../../../../../common/mock/endpoint'; +import { act } from '@testing-library/react'; +import React from 'react'; +import { EventFilterDeleteModal } from './event_filter_delete_modal'; +import { fireEvent } from '@testing-library/dom'; +import { showDeleteModal } from '../../store/selector'; +import { isFailedResourceState, isLoadedResourceState } from '../../../../state'; + +describe('When event filters delete modal is shown', () => { + let renderAndSetup: () => Promise>; + let renderResult: ReturnType; + let coreStart: AppContextTestRender['coreStart']; + let history: AppContextTestRender['history']; + let waitForAction: AppContextTestRender['middlewareSpy']['waitForAction']; + let store: AppContextTestRender['store']; + + const getBody = () => + renderResult.baseElement.querySelector('[data-test-subj="eventFilterDeleteModalBody"]')!; + + const getConfirmButton = () => + renderResult.baseElement.querySelector( + '[data-test-subj="eventFilterDeleteModalConfirmButton"]' + )! as HTMLButtonElement; + + const getCancelButton = () => + renderResult.baseElement.querySelector( + '[data-test-subj="eventFilterDeleteModalCancelButton"]' + )! as HTMLButtonElement; + + const getCurrentState = () => store.getState().management.eventFilters; + + beforeEach(() => { + const mockedContext = createAppRootMockRenderer(); + + ({ history, store, coreStart } = mockedContext); + renderAndSetup = async () => { + renderResult = mockedContext.render(); + + await act(async () => { + history.push('/event_filters'); + + await waitForAction('userChangedUrl'); + + mockedContext.store.dispatch({ + type: 'eventFilterForDeletion', + payload: { + id: '123', + name: 'tic-tac-toe', + }, + }); + }); + + return renderResult; + }; + + waitForAction = mockedContext.middlewareSpy.waitForAction; + mockedContext.setExperimentalFlag({ eventFilteringEnabled: true }); + }); + + it('should display name of event filter in body message', async () => { + await renderAndSetup(); + expect(getBody().textContent).toMatch(/You are removing event filter "tic-tac-toe"/); + }); + + it('should close dialog if cancel button is clicked', async () => { + await renderAndSetup(); + act(() => { + fireEvent.click(getCancelButton()); + }); + + expect(showDeleteModal(getCurrentState())).toBe(false); + }); + + it('should close dialog if the close X button is clicked', async () => { + await renderAndSetup(); + const dialogCloseButton = renderResult.baseElement.querySelector( + '[aria-label="Closes this modal window"]' + )!; + act(() => { + fireEvent.click(dialogCloseButton); + }); + + expect(showDeleteModal(getCurrentState())).toBe(false); + }); + + it('should disable action buttons when confirmed', async () => { + await renderAndSetup(); + act(() => { + fireEvent.click(getConfirmButton()); + }); + + expect(getCancelButton().disabled).toBe(true); + expect(getConfirmButton().disabled).toBe(true); + }); + + it('should set confirm button to loading', async () => { + await renderAndSetup(); + act(() => { + fireEvent.click(getConfirmButton()); + }); + + expect(getConfirmButton().querySelector('.euiLoadingSpinner')).not.toBeNull(); + }); + + it('should show success toast', async () => { + await renderAndSetup(); + const updateCompleted = waitForAction('eventFilterDeleteStatusChanged', { + validate(action) { + return isLoadedResourceState(action.payload); + }, + }); + + await act(async () => { + fireEvent.click(getConfirmButton()); + await updateCompleted; + }); + + expect(coreStart.notifications.toasts.addSuccess).toHaveBeenCalledWith( + '"tic-tac-toe" has been removed from the Event Filters list.' + ); + }); + + it('should show error toast if error is countered', async () => { + coreStart.http.delete.mockRejectedValue(new Error('oh oh')); + await renderAndSetup(); + const updateFailure = waitForAction('eventFilterDeleteStatusChanged', { + validate(action) { + return isFailedResourceState(action.payload); + }, + }); + + await act(async () => { + fireEvent.click(getConfirmButton()); + await updateFailure; + }); + + expect(coreStart.notifications.toasts.addDanger).toHaveBeenCalledWith( + 'Unable to remove "tic-tac-toe" from the Event Filters list. Reason: oh oh' + ); + expect(showDeleteModal(getCurrentState())).toBe(true); + }); +}); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.tsx new file mode 100644 index 0000000000000..74a023965a57d --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/event_filter_delete_modal.tsx @@ -0,0 +1,135 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { memo, useCallback, useEffect } from 'react'; +import { + EuiButton, + EuiButtonEmpty, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiText, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { useDispatch } from 'react-redux'; +import { Dispatch } from 'redux'; +import { i18n } from '@kbn/i18n'; +import { useEventFiltersSelector } from '../hooks'; +import { + getDeleteError, + getItemToDelete, + isDeletionInProgress, + wasDeletionSuccessful, +} from '../../store/selector'; +import { AppAction } from '../../../../../common/store/actions'; +import { useToasts } from '../../../../../common/lib/kibana'; + +export const EventFilterDeleteModal = memo<{}>(() => { + const dispatch = useDispatch>(); + const toasts = useToasts(); + + const isDeleting = useEventFiltersSelector(isDeletionInProgress); + const eventFilter = useEventFiltersSelector(getItemToDelete); + const wasDeleted = useEventFiltersSelector(wasDeletionSuccessful); + const deleteError = useEventFiltersSelector(getDeleteError); + + const onCancel = useCallback(() => { + dispatch({ type: 'eventFilterDeletionReset' }); + }, [dispatch]); + + const onConfirm = useCallback(() => { + dispatch({ type: 'eventFilterDeleteSubmit' }); + }, [dispatch]); + + // Show toast for success + useEffect(() => { + if (wasDeleted) { + toasts.addSuccess( + i18n.translate('xpack.securitySolution.eventFilters.deletionDialog.deleteSuccess', { + defaultMessage: '"{name}" has been removed from the Event Filters list.', + values: { name: eventFilter?.name }, + }) + ); + + dispatch({ type: 'eventFilterDeletionReset' }); + } + }, [dispatch, eventFilter?.name, toasts, wasDeleted]); + + // show toast for failures + useEffect(() => { + if (deleteError) { + toasts.addDanger( + i18n.translate('xpack.securitySolution.eventFilters.deletionDialog.deleteFailure', { + defaultMessage: + 'Unable to remove "{name}" from the Event Filters list. Reason: {message}', + values: { name: eventFilter?.name, message: deleteError.message }, + }) + ); + } + }, [deleteError, eventFilter?.name, toasts]); + + return ( + + + + + + + + + +

    + {eventFilter?.name} }} + /> +

    +

    + +

    +
    +
    + + + + + + + + + + +
    + ); +}); + +EventFilterDeleteModal.displayName = 'EventFilterDeleteModal'; diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx index edd919351a151..2fbabad746cad 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.test.tsx @@ -140,6 +140,18 @@ describe('When on the Event Filters List Page', () => { expect(renderResult.getByTestId('eventFiltersContent-error').textContent).toEqual(' oh no'); }); + + it('should show modal when delete is clicked on a card', async () => { + render(); + await dataReceived(); + act(() => { + fireEvent.click(renderResult.getByTestId('exceptionsViewerDeleteBtn')); + }); + + expect( + renderResult.baseElement.querySelector('[data-test-subj="eventFilterDeleteModalHeader"]') + ).not.toBeNull(); + }); }); describe('And search is dispatched', () => { diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx index 0e78f67efb433..0898f93cf6f9b 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/event_filters_list_page.tsx @@ -11,7 +11,7 @@ import { Dispatch } from 'redux'; import { useHistory } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiButton, EuiSpacer } from '@elastic/eui'; +import { EuiButton, EuiSpacer, EuiHorizontalRule, EuiText } from '@elastic/eui'; import styled from 'styled-components'; import { AppAction } from '../../../../common/store/actions'; @@ -30,6 +30,7 @@ import { getListPageDoesDataExist, getActionError, getFormEntry, + showDeleteModal, } from '../store/selector'; import { PaginatedContent, PaginatedContentProps } from '../../../components/paginated_content'; import { ExceptionListItemSchema } from '../../../../../../lists/common'; @@ -38,6 +39,7 @@ import { ExceptionItem, ExceptionItemProps, } from '../../../../common/components/exceptions/viewer/exception_item'; +import { EventFilterDeleteModal } from './components/event_filter_delete_modal'; import { SearchBar } from '../../../components/search_bar'; @@ -67,6 +69,7 @@ export const EventFiltersListPage = memo(() => { const fetchError = useEventFiltersSelector(getListFetchError); const location = useEventFiltersSelector(getCurrentLocation); const doesDataExist = useEventFiltersSelector(getListPageDoesDataExist); + const showDelete = useEventFiltersSelector(showDeleteModal); const navigateCallback = useEventFiltersNavigateCallback(); const showFlyout = !!location.show; @@ -128,9 +131,16 @@ export const EventFiltersListPage = memo(() => { [navigateCallback] ); - const handleItemDelete: ExceptionItemProps['onDeleteException'] = useCallback((args) => { - // TODO: implement delete item - }, []); + const handleItemDelete: ExceptionItemProps['onDeleteException'] = useCallback( + ({ id }) => { + dispatch({ + type: 'eventFilterForDeletion', + // Casting below needed due to error around the comments array needing to be mutable + payload: listItems.find((item) => item.id === id)! as ExceptionListItemSchema, + }); + }, + [dispatch, listItems] + ); const handleItemComponentProps: EventListPaginatedContent['itemComponentProps'] = useCallback( (exceptionItem) => ({ @@ -199,12 +209,23 @@ export const EventFiltersListPage = memo(() => { /> )} + {showDelete && } + {doesDataExist && ( <> + + + + )} + , typeof ExceptionItem> items={listItems} ItemComponent={ExceptionItem} diff --git a/x-pack/plugins/security_solution/public/management/types.ts b/x-pack/plugins/security_solution/public/management/types.ts index 7d345b084aca5..cadb3b91f66a6 100644 --- a/x-pack/plugins/security_solution/public/management/types.ts +++ b/x-pack/plugins/security_solution/public/management/types.ts @@ -10,7 +10,7 @@ import { SecurityPageName } from '../app/types'; import { PolicyDetailsState } from './pages/policy/types'; import { EndpointState } from './pages/endpoint_hosts/types'; import { TrustedAppsListPageState } from './pages/trusted_apps/state'; -import { EventFiltersListPageState } from './pages/event_filters'; +import { EventFiltersListPageState } from './pages/event_filters/types'; /** * The type for the management store global namespace. Used mostly internally to reference From 833e13faff59b99f24cd793b932081d6cfc9d879 Mon Sep 17 00:00:00 2001 From: Candace Park <56409205+parkiino@users.noreply.github.com> Date: Thu, 13 May 2021 09:37:56 -0400 Subject: [PATCH 069/144] [Security Solution][Endpoint][Host Isolation] Send case ids from UI to isolate api (#99484) --- x-pack/plugins/cases/common/api/helpers.ts | 5 ++ .../components/host_isolation/index.tsx | 58 ++++++++++++++----- .../components/host_isolation/translations.ts | 14 +++-- .../detection_engine/alerts/__mocks__/api.ts | 17 +++++- .../detection_engine/alerts/api.test.ts | 31 ++++++++++ .../containers/detection_engine/alerts/api.ts | 20 +++++++ .../detection_engine/alerts/mock.ts | 12 +++- .../detection_engine/alerts/translations.ts | 5 ++ .../detection_engine/alerts/types.ts | 2 + .../alerts/use_cases_from_alerts.test.tsx | 41 +++++++++++++ .../alerts/use_cases_from_alerts.tsx | 51 ++++++++++++++++ .../alerts/use_host_isolation.tsx | 6 +- 12 files changed, 235 insertions(+), 27 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx create mode 100644 x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx diff --git a/x-pack/plugins/cases/common/api/helpers.ts b/x-pack/plugins/cases/common/api/helpers.ts index 43e292b91db4b..7ac686ce5c8dd 100644 --- a/x-pack/plugins/cases/common/api/helpers.ts +++ b/x-pack/plugins/cases/common/api/helpers.ts @@ -14,6 +14,7 @@ import { SUB_CASES_URL, CASE_PUSH_URL, SUB_CASE_USER_ACTIONS_URL, + CASE_ALERTS_URL, } from '../constants'; export const getCaseDetailsUrl = (id: string): string => { @@ -47,3 +48,7 @@ export const getSubCaseUserActionUrl = (caseID: string, subCaseId: string): stri export const getCasePushUrl = (caseId: string, connectorId: string): string => { return CASE_PUSH_URL.replace('{case_id}', caseId).replace('{connector_id}', connectorId); }; + +export const getCasesFromAlertsUrl = (alertId: string): string => { + return CASE_ALERTS_URL.replace('{alert_id}', alertId); +}; diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx b/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx index 30ee7e77f3a7d..3897458e8459c 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/index.tsx @@ -21,7 +21,6 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { useHostIsolation } from '../../containers/detection_engine/alerts/use_host_isolation'; -import { TimelineEventsDetailsItem } from '../../../../common/search_strategy/timeline'; import { CANCEL, CASES_ASSOCIATED_WITH_ALERT, @@ -31,6 +30,9 @@ import { RETURN_TO_ALERT_DETAILS, } from './translations'; import { Maybe } from '../../../../../observability/common/typings'; +import { useCasesFromAlerts } from '../../containers/detection_engine/alerts/use_cases_from_alerts'; +import { CaseDetailsLink } from '../../../common/components/links'; +import { TimelineEventsDetailsItem } from '../../../../common/search_strategy'; export const HostIsolationPanel = React.memo( ({ @@ -59,7 +61,13 @@ export const HostIsolationPanel = React.memo( return findAlertRule ? findAlertRule[0] : ''; }, [details]); - const { loading, isolateHost } = useHostIsolation({ agentId, comment }); + const alertId = useMemo(() => { + const findAlertId = find({ category: '_id', field: '_id' }, details)?.values; + return findAlertId ? findAlertId[0] : ''; + }, [details]); + + const { caseIds } = useCasesFromAlerts({ alertId }); + const { loading, isolateHost } = useHostIsolation({ agentId, comment, caseIds }); const confirmHostIsolation = useCallback(async () => { const hostIsolated = await isolateHost(); @@ -68,8 +76,25 @@ export const HostIsolationPanel = React.memo( const backToAlertDetails = useCallback(() => cancelCallback(), [cancelCallback]); - // a placeholder until we get the case count returned from a new case route in a future pr - const caseCount: number = 0; + const casesList = useMemo( + () => + caseIds.map((id, index) => { + return ( +
  • + + + +
  • + ); + }), + [caseIds] + ); + + const caseCount: number = useMemo(() => caseIds.length, [caseIds]); const hostIsolated = useMemo(() => { return ( @@ -92,20 +117,13 @@ export const HostIsolationPanel = React.memo(

    -
      -
    • - -
    • -
    +
      {casesList}
    )} @@ -121,7 +139,7 @@ export const HostIsolationPanel = React.memo( ); - }, [backToAlertDetails, hostName]); + }, [backToAlertDetails, hostName, caseCount, casesList]); const hostNotIsolated = useMemo(() => { return ( @@ -137,7 +155,7 @@ export const HostIsolationPanel = React.memo( cases: ( {caseCount} - {CASES_ASSOCIATED_WITH_ALERT} + {CASES_ASSOCIATED_WITH_ALERT(caseCount)} {alertRule} ), @@ -171,7 +189,15 @@ export const HostIsolationPanel = React.memo( ); - }, [alertRule, backToAlertDetails, comment, confirmHostIsolation, hostName, loading]); + }, [ + alertRule, + backToAlertDetails, + comment, + confirmHostIsolation, + hostName, + loading, + caseCount, + ]); return isIsolated ? hostIsolated : hostNotIsolated; } diff --git a/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts b/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts index 97a1a278952a6..8d6334f6c340d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/components/host_isolation/translations.ts @@ -31,12 +31,14 @@ export const CONFIRM = i18n.translate('xpack.securitySolution.endpoint.hostIsola defaultMessage: 'Confirm', }); -export const CASES_ASSOCIATED_WITH_ALERT = i18n.translate( - 'xpack.securitySolution.endpoint.hostIsolation.isolateHost.casesAssociatedWihtAlert', - { - defaultMessage: ' cases associated with the rule ', - } -); +export const CASES_ASSOCIATED_WITH_ALERT = (caseCount: number): string => + i18n.translate( + 'xpack.securitySolution.endpoint.hostIsolation.isolateHost.casesAssociatedWithAlert', + { + defaultMessage: ' {caseCount, plural, one {case} other {cases}} associated with the rule ', + values: { caseCount }, + } + ); export const RETURN_TO_ALERT_DETAILS = i18n.translate( 'xpack.securitySolution.endpoint.hostIsolation.returnToAlertDetails', diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts index e1f5b53e2f4c3..ea64f39226cd2 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/__mocks__/api.ts @@ -5,8 +5,15 @@ * 2.0. */ -import { QueryAlerts, AlertSearchResponse, BasicSignals, AlertsIndex, Privilege } from '../types'; -import { alertsMock, mockSignalIndex, mockUserPrivilege } from '../mock'; +import { + QueryAlerts, + AlertSearchResponse, + BasicSignals, + AlertsIndex, + Privilege, + CasesFromAlertsResponse, +} from '../types'; +import { alertsMock, mockSignalIndex, mockUserPrivilege, mockCaseIdsFromAlertId } from '../mock'; export const fetchQueryAlerts = async ({ query, @@ -22,3 +29,9 @@ export const getUserPrivilege = async ({ signal }: BasicSignals): Promise => Promise.resolve(mockSignalIndex); + +export const getCaseIdsFromAlertId = async ({ + alertId, +}: { + alertId: string; +}): Promise => Promise.resolve(mockCaseIdsFromAlertId); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts index 82f275f7dc9ba..9aa5cfd229292 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.test.ts @@ -12,6 +12,7 @@ import { mockStatusAlertQuery, mockSignalIndex, mockUserPrivilege, + mockHostIsolation, } from './mock'; import { fetchQueryAlerts, @@ -19,6 +20,7 @@ import { getSignalIndex, getUserPrivilege, createSignalIndex, + createHostIsolation, } from './api'; const abortCtrl = new AbortController(); @@ -163,4 +165,33 @@ describe('Detections Alerts API', () => { expect(alertsResp).toEqual(mockSignalIndex); }); }); + + describe('createHostIsolation', () => { + beforeEach(() => { + fetchMock.mockClear(); + fetchMock.mockResolvedValue(mockHostIsolation); + }); + + test('check parameter url', async () => { + await createHostIsolation({ + agentId: 'fd8a122b-4c54-4c05-b295-e5f8381fc59d', + comment: 'commento', + caseIds: ['88c04a90-b19c-11eb-b838-bf3c7840b969'], + }); + expect(fetchMock).toHaveBeenCalledWith('/api/endpoint/isolate', { + method: 'POST', + body: + '{"agent_ids":["fd8a122b-4c54-4c05-b295-e5f8381fc59d"],"comment":"commento","case_ids":["88c04a90-b19c-11eb-b838-bf3c7840b969"]}', + }); + }); + + test('happy path', async () => { + const hostIsolationResponse = await createHostIsolation({ + agentId: 'fd8a122b-4c54-4c05-b295-e5f8381fc59d', + comment: 'commento', + caseIds: ['88c04a90-b19c-11eb-b838-bf3c7840b969'], + }); + expect(hostIsolationResponse).toEqual(mockHostIsolation); + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts index dbcb11383432f..300005b23caaa 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/api.ts @@ -6,6 +6,7 @@ */ import { UpdateDocumentByQueryResponse } from 'elasticsearch'; +import { getCasesFromAlertsUrl } from '../../../../../../cases/common'; import { HostIsolationResponse } from '../../../../../common/endpoint/types'; import { DETECTION_ENGINE_QUERY_SIGNALS_URL, @@ -22,6 +23,7 @@ import { AlertSearchResponse, AlertsIndex, UpdateAlertStatusProps, + CasesFromAlertsResponse, } from './types'; /** @@ -109,20 +111,38 @@ export const createSignalIndex = async ({ signal }: BasicSignals): Promise => KibanaServices.get().http.fetch(ISOLATE_HOST_ROUTE, { method: 'POST', body: JSON.stringify({ agent_ids: [agentId], comment, + case_ids: caseIds, }), }); + +/** + * Get list of associated case ids from alert id + * + * @param alert id + */ +export const getCaseIdsFromAlertId = async ({ + alertId, +}: { + alertId: string; +}): Promise => + KibanaServices.get().http.fetch(getCasesFromAlertsUrl(alertId), { + method: 'get', + }); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts index 18651063df8ca..69358958a395c 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/mock.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { AlertSearchResponse, AlertsIndex, Privilege } from './types'; +import { HostIsolationResponse } from '../../../../../common/endpoint/types/actions'; +import { AlertSearchResponse, AlertsIndex, Privilege, CasesFromAlertsResponse } from './types'; export const alertsMock: AlertSearchResponse = { took: 7, @@ -1039,3 +1040,12 @@ export const mockUserPrivilege: Privilege = { is_authenticated: true, has_encryption_key: true, }; + +export const mockHostIsolation: HostIsolationResponse = { + action: '713085d6-ab45-4e9e-b41d-96563cafdd97', +}; + +export const mockCaseIdsFromAlertId: CasesFromAlertsResponse = [ + '818601a0-b26b-11eb-8759-6b318e8cf4bc', + '8a774850-b26b-11eb-8759-6b318e8cf4bc', +]; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts index 2998c97376c26..ed6a22375a776 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/translations.ts @@ -32,3 +32,8 @@ export const HOST_ISOLATION_FAILURE = i18n.translate( 'xpack.securitySolution.endpoint.hostIsolation.failedToIsolate.title', { defaultMessage: 'Failed to isolate host' } ); + +export const CASES_FROM_ALERTS_FAILURE = i18n.translate( + 'xpack.securitySolution.endpoint.hostIsolation.casesFromAlerts.title', + { defaultMessage: 'Failed to find associated cases' } +); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts index 26108ca939a57..52b477d95076b 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/types.ts @@ -48,6 +48,8 @@ export interface AlertsIndex { index_mapping_outdated: boolean; } +export type CasesFromAlertsResponse = string[]; + export interface Privilege { username: string; has_all_requested: boolean; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx new file mode 100644 index 0000000000000..0867fb001051a --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.test.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useCasesFromAlerts } from './use_cases_from_alerts'; +import * as api from './api'; +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; +import { useAppToastsMock } from '../../../../common/hooks/use_app_toasts.mock'; +import { mockCaseIdsFromAlertId } from './mock'; + +jest.mock('./api'); +jest.mock('../../../../common/hooks/use_app_toasts'); + +describe('useCasesFromAlerts hook', () => { + let appToastsMock: jest.Mocked>; + beforeEach(() => { + jest.resetAllMocks(); + appToastsMock = useAppToastsMock.create(); + (useAppToasts as jest.Mock).mockReturnValue(appToastsMock); + }); + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('returns an array of caseIds', async () => { + const spyOnCases = jest.spyOn(api, 'getCaseIdsFromAlertId'); + const { result, waitForNextUpdate } = renderHook(() => + useCasesFromAlerts({ alertId: 'anAlertId' }) + ); + await waitForNextUpdate(); + expect(spyOnCases).toHaveBeenCalledTimes(1); + expect(result.current).toEqual({ + loading: false, + caseIds: mockCaseIdsFromAlertId, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx new file mode 100644 index 0000000000000..fb130eb744700 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_cases_from_alerts.tsx @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isEmpty } from 'lodash'; +import { useEffect, useState } from 'react'; +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; +import { getCaseIdsFromAlertId } from './api'; +import { CASES_FROM_ALERTS_FAILURE } from './translations'; +import { CasesFromAlertsResponse } from './types'; + +interface CasesFromAlertsStatus { + loading: boolean; + caseIds: CasesFromAlertsResponse; +} + +export const useCasesFromAlerts = ({ alertId }: { alertId: string }): CasesFromAlertsStatus => { + const [loading, setLoading] = useState(false); + const [cases, setCases] = useState([]); + const { addError } = useAppToasts(); + + useEffect(() => { + // isMounted tracks if a component is mounted before changing state + let isMounted = true; + setLoading(true); + const fetchData = async () => { + try { + const casesResponse = await getCaseIdsFromAlertId({ alertId }); + if (isMounted) { + setCases(casesResponse); + } + } catch (error) { + addError(error.message, { title: CASES_FROM_ALERTS_FAILURE }); + } + if (isMounted) { + setLoading(false); + } + }; + if (!isEmpty(alertId)) { + fetchData(); + } + return () => { + // updates to show component is unmounted + isMounted = false; + }; + }, [alertId, addError]); + return { loading, caseIds: cases }; +}; diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx index 684bc6af5d2c7..ad3c6e91c03fe 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/alerts/use_host_isolation.tsx @@ -18,11 +18,13 @@ interface HostIsolationStatus { interface UseHostIsolationProps { agentId: string; comment: string; + caseIds?: string[]; } export const useHostIsolation = ({ agentId, comment, + caseIds, }: UseHostIsolationProps): HostIsolationStatus => { const [loading, setLoading] = useState(false); const { addError } = useAppToasts(); @@ -30,7 +32,7 @@ export const useHostIsolation = ({ const isolateHost = useCallback(async () => { try { setLoading(true); - const isolationStatus = await createHostIsolation({ agentId, comment }); + const isolationStatus = await createHostIsolation({ agentId, comment, caseIds }); setLoading(false); return isolationStatus.action ? true : false; } catch (error) { @@ -38,6 +40,6 @@ export const useHostIsolation = ({ addError(error.message, { title: HOST_ISOLATION_FAILURE }); return false; } - }, [agentId, comment, addError]); + }, [agentId, comment, caseIds, addError]); return { loading, isolateHost }; }; From 6e66415b7e143c59a8400b51b2163d7411d7f981 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Thu, 13 May 2021 16:04:59 +0200 Subject: [PATCH 070/144] [Security Solution] [Detections] Adds Preview results for threshold rules (#99350) * adds Preview results for threshold rules * fixes typo * adds pipe to remove flakyness * fixes typecheck issue Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../detection_rules/threshold_rule.spec.ts | 27 ++++++++++++++--- .../cypress/screens/create_new_rule.ts | 2 ++ .../cypress/tasks/create_new_rule.ts | 30 ++++++++++++++++++- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts b/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts index f9971dfc0f791..7c09b311807be 100644 --- a/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/detection_rules/threshold_rule.spec.ts @@ -6,7 +6,7 @@ */ import { formatMitreAttackDescription } from '../../helpers/rules'; -import { indexPatterns, newThresholdRule } from '../../objects/rule'; +import { indexPatterns, newRule, newThresholdRule } from '../../objects/rule'; import { ALERT_RULE_METHOD, @@ -26,6 +26,7 @@ import { RULES_TABLE, SEVERITY, } from '../../screens/alerts_detection_rules'; +import { PREVIEW_HEADER_SUBTITLE } from '../../screens/create_new_rule'; import { ABOUT_DETAILS, ABOUT_INVESTIGATION_NOTES, @@ -64,13 +65,16 @@ import { goToRuleDetails, waitForRulesTableToBeLoaded, } from '../../tasks/alerts_detection_rules'; +import { createCustomRuleActivated } from '../../tasks/api_calls/rules'; import { createTimeline } from '../../tasks/api_calls/timelines'; import { cleanKibana } from '../../tasks/common'; import { createAndActivateRule, fillAboutRuleAndContinue, fillDefineThresholdRuleAndContinue, + fillDefineThresholdRule, fillScheduleRuleAndContinue, + previewResults, selectThresholdRuleType, waitForAlertsToPopulate, waitForTheRuleToBeExecuted, @@ -92,12 +96,12 @@ describe('Detection rules, threshold', () => { createTimeline(newThresholdRule.timeline).then((response) => { rule.timeline.id = response.body.data.persistTimeline.timeline.savedObjectId; }); - }); - - it('Creates and activates a new threshold rule', () => { loginAndWaitForPageWithoutDateRange(DETECTIONS_URL); waitForAlertsPanelToBeLoaded(); waitForAlertsIndexToBeCreated(); + }); + + it('Creates and activates a new threshold rule', () => { goToManageAlertsDetectionRules(); waitForRulesTableToBeLoaded(); goToCreateNewRule(); @@ -175,4 +179,19 @@ describe('Detection rules, threshold', () => { cy.get(ALERT_RULE_SEVERITY).first().should('have.text', rule.severity.toLowerCase()); cy.get(ALERT_RULE_RISK_SCORE).first().should('have.text', rule.riskScore); }); + + it('Preview results', () => { + const previewRule = { ...newThresholdRule }; + previewRule.index!.push('.siem-signals*'); + + createCustomRuleActivated(newRule); + goToManageAlertsDetectionRules(); + waitForRulesTableToBeLoaded(); + goToCreateNewRule(); + selectThresholdRuleType(); + fillDefineThresholdRule(previewRule); + previewResults(); + + cy.get(PREVIEW_HEADER_SUBTITLE).should('have.text', '3 unique hits'); + }); }); diff --git a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts index db8d93dfbbef9..a580068b636e4 100644 --- a/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/screens/create_new_rule.ts @@ -127,6 +127,8 @@ export const MITRE_ATTACK_ADD_TECHNIQUE_BUTTON = '[data-test-subj="addMitreAttac export const MITRE_ATTACK_ADD_SUBTECHNIQUE_BUTTON = '[data-test-subj="addMitreAttackSubtechnique"]'; +export const PREVIEW_HEADER_SUBTITLE = '[data-test-subj="header-panel-subtitle"]'; + export const QUERY_PREVIEW_BUTTON = '[data-test-subj="queryPreviewButton"]'; export const REFERENCE_URLS_INPUT = diff --git a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts index cd342e9456906..9c15b1f03932d 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts @@ -260,12 +260,18 @@ export const fillScheduleRuleAndContinue = (rule: CustomRule | MachineLearningRu cy.get(LOOK_BACK_TIME_TYPE).select(rule.lookBack.timeType); }; -export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { +export const fillDefineThresholdRule = (rule: ThresholdRule) => { const thresholdField = 0; const threshold = 1; cy.get(IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK).click(); cy.get(TIMELINE(rule.timeline.id!)).click(); + cy.get(COMBO_BOX_CLEAR_BTN).click(); + + rule.index!.forEach((index) => { + cy.get(COMBO_BOX_INPUT).first().type(`${index}{enter}`); + }); + cy.get(CUSTOM_QUERY_INPUT).should('have.value', rule.customQuery); cy.get(THRESHOLD_INPUT_AREA) .find(INPUT) @@ -274,6 +280,24 @@ export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { cy.get(THRESHOLD_FIELD_SELECTION).click({ force: true }); cy.wrap(inputs[threshold]).clear().type(rule.threshold); }); +}; + +export const fillDefineThresholdRuleAndContinue = (rule: ThresholdRule) => { + const thresholdField = 0; + const threshold = 1; + + const typeThresholdField = ($el: Cypress.ObjectLike) => cy.wrap($el).type(rule.thresholdField); + + cy.get(IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK).click(); + cy.get(TIMELINE(rule.timeline.id!)).click(); + cy.get(CUSTOM_QUERY_INPUT).should('have.value', rule.customQuery); + cy.get(THRESHOLD_INPUT_AREA) + .find(INPUT) + .then((inputs) => { + cy.wrap(inputs[thresholdField]).pipe(typeThresholdField); + cy.get(THRESHOLD_FIELD_SELECTION).click({ force: true }); + cy.wrap(inputs[threshold]).clear().type(rule.threshold); + }); cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); cy.get(CUSTOM_QUERY_INPUT).should('not.exist'); @@ -478,6 +502,10 @@ export const selectThresholdRuleType = () => { cy.get(THRESHOLD_TYPE).click({ force: true }); }; +export const previewResults = () => { + cy.get(QUERY_PREVIEW_BUTTON).click(); +}; + export const waitForAlertsToPopulate = async (alertCountThreshold = 1) => { cy.waitUntil( () => { From 49020d804475bdd61778357531fd82c5a8247452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 13 May 2021 16:16:26 +0200 Subject: [PATCH 071/144] [SO Migrations v2] Log doc-count progress (#99865) --- ...kibana-plugin-core-public.doclinksstart.md | 2 - .../migrationsv2/actions/index.ts | 16 +- .../saved_objects/migrationsv2/model.test.ts | 98 +++++++++++- .../saved_objects/migrationsv2/model.ts | 34 +++++ .../migrationsv2/progress.test.ts | 140 ++++++++++++++++++ .../saved_objects/migrationsv2/progress.ts | 74 +++++++++ .../saved_objects/migrationsv2/types.ts | 11 ++ 7 files changed, 369 insertions(+), 6 deletions(-) create mode 100644 src/core/server/saved_objects/migrationsv2/progress.test.ts create mode 100644 src/core/server/saved_objects/migrationsv2/progress.ts diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md index ac625095da2a4..78d2d8daa3d45 100644 --- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md +++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md @@ -17,7 +17,5 @@ export interface DocLinksStart | --- | --- | --- | | [DOC\_LINK\_VERSION](./kibana-plugin-core-public.doclinksstart.doc_link_version.md) | string | | | [ELASTIC\_WEBSITE\_URL](./kibana-plugin-core-public.doclinksstart.elastic_website_url.md) | string | | - | [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
    readonly canvas: {
    readonly guide: string;
    };
    readonly dashboard: {
    readonly guide: string;
    readonly drilldowns: string;
    readonly drilldownsTriggerPicker: string;
    readonly urlDrilldownTemplateSyntax: string;
    readonly urlDrilldownVariables: string;
    };
    readonly discover: Record<string, string>;
    readonly filebeat: {
    readonly base: string;
    readonly installation: string;
    readonly configuration: string;
    readonly elasticsearchOutput: string;
    readonly elasticsearchModule: string;
    readonly startup: string;
    readonly exportedFields: string;
    };
    readonly auditbeat: {
    readonly base: string;
    };
    readonly metricbeat: {
    readonly base: string;
    readonly configure: string;
    readonly httpEndpoint: string;
    readonly install: string;
    readonly start: string;
    };
    readonly enterpriseSearch: {
    readonly base: string;
    readonly appSearchBase: string;
    readonly workplaceSearchBase: string;
    };
    readonly heartbeat: {
    readonly base: string;
    };
    readonly logstash: {
    readonly base: string;
    };
    readonly functionbeat: {
    readonly base: string;
    };
    readonly winlogbeat: {
    readonly base: string;
    };
    readonly aggs: {
    readonly composite: string;
    readonly composite_missing_bucket: string;
    readonly date_histogram: string;
    readonly date_range: string;
    readonly date_format_pattern: string;
    readonly filter: string;
    readonly filters: string;
    readonly geohash_grid: string;
    readonly histogram: string;
    readonly ip_range: string;
    readonly range: string;
    readonly significant_terms: string;
    readonly terms: string;
    readonly avg: string;
    readonly avg_bucket: string;
    readonly max_bucket: string;
    readonly min_bucket: string;
    readonly sum_bucket: string;
    readonly cardinality: string;
    readonly count: string;
    readonly cumulative_sum: string;
    readonly derivative: string;
    readonly geo_bounds: string;
    readonly geo_centroid: string;
    readonly max: string;
    readonly median: string;
    readonly min: string;
    readonly moving_avg: string;
    readonly percentile_ranks: string;
    readonly serial_diff: string;
    readonly std_dev: string;
    readonly sum: string;
    readonly top_hits: string;
    };
    readonly runtimeFields: {
    readonly overview: string;
    readonly mapping: string;
    };
    readonly scriptedFields: {
    readonly scriptFields: string;
    readonly scriptAggs: string;
    readonly painless: string;
    readonly painlessApi: string;
    readonly painlessLangSpec: string;
    readonly painlessSyntax: string;
    readonly painlessWalkthrough: string;
    readonly luceneExpressions: string;
    };
    readonly search: {
    readonly sessions: string;
    };
    readonly indexPatterns: {
    readonly introduction: string;
    readonly fieldFormattersNumber: string;
    readonly fieldFormattersString: string;
    };
    readonly addData: string;
    readonly kibana: string;
    readonly upgradeAssistant: string;
    readonly elasticsearch: Record<string, string>;
    readonly siem: {
    readonly guide: string;
    readonly gettingStarted: string;
    };
    readonly query: {
    readonly eql: string;
    readonly kueryQuerySyntax: string;
    readonly luceneQuerySyntax: string;
    readonly percolate: string;
    readonly queryDsl: string;
    };
    readonly date: {
    readonly dateMath: string;
    readonly dateMathIndexNames: string;
    };
    readonly management: Record<string, string>;
    readonly ml: Record<string, string>;
    readonly transforms: Record<string, string>;
    readonly visualize: Record<string, string>;
    readonly apis: Readonly<{
    bulkIndexAlias: string;
    byteSizeUnits: string;
    createAutoFollowPattern: string;
    createFollower: string;
    createIndex: string;
    createSnapshotLifecyclePolicy: string;
    createRoleMapping: string;
    createRoleMappingTemplates: string;
    createRollupJobsRequest: string;
    createApiKey: string;
    createPipeline: string;
    createTransformRequest: string;
    cronExpressions: string;
    executeWatchActionModes: string;
    indexExists: string;
    openIndex: string;
    putComponentTemplate: string;
    painlessExecute: string;
    painlessExecuteAPIContexts: string;
    putComponentTemplateMetadata: string;
    putSnapshotLifecyclePolicy: string;
    putIndexTemplateV1: string;
    putWatch: string;
    simulatePipeline: string;
    timeUnits: string;
    updateTransform: string;
    }>;
    readonly observability: Record<string, string>;
    readonly alerting: Record<string, string>;
    readonly maps: Record<string, string>;
    readonly monitoring: Record<string, string>;
    readonly security: Readonly<{
    apiKeyServiceSettings: string;
    clusterPrivileges: string;
    elasticsearchSettings: string;
    elasticsearchEnableSecurity: string;
    indicesPrivileges: string;
    kibanaTLS: string;
    kibanaPrivileges: string;
    mappingRoles: string;
    mappingRolesFieldRules: string;
    runAsPrivilege: string;
    }>;
    readonly watcher: Record<string, string>;
    readonly ccs: Record<string, string>;
    readonly plugins: Record<string, string>;
    readonly snapshotRestore: Record<string, string>;
    readonly ingest: Record<string, string>;
    } | | - diff --git a/src/core/server/saved_objects/migrationsv2/actions/index.ts b/src/core/server/saved_objects/migrationsv2/actions/index.ts index d0623de51e4c3..c2e0476960c3b 100644 --- a/src/core/server/saved_objects/migrationsv2/actions/index.ts +++ b/src/core/server/saved_objects/migrationsv2/actions/index.ts @@ -456,6 +456,7 @@ export const openPit = ( export interface ReadWithPit { outdatedDocuments: SavedObjectsRawDoc[]; readonly lastHitSortValue: number[] | undefined; + readonly totalHits: number | undefined; } /* @@ -481,13 +482,20 @@ export const readWithPit = ( pit: { id: pitId, keep_alive: pitKeepAlive }, size: batchSize, search_after: searchAfter, - // Improve performance by not calculating the total number of hits - // matching the query. - track_total_hits: false, + /** + * We want to know how many documents we need to process so we can log the progress. + * But we also want to increase the performance of these requests, + * so we ask ES to report the total count only on the first request (when searchAfter does not exist) + */ + track_total_hits: typeof searchAfter === 'undefined', query, }, }) .then((response) => { + const totalHits = + typeof response.body.hits.total === 'number' + ? response.body.hits.total // This format is to be removed in 8.0 + : response.body.hits.total?.value; const hits = response.body.hits.hits; if (hits.length > 0) { @@ -495,12 +503,14 @@ export const readWithPit = ( // @ts-expect-error @elastic/elasticsearch _source is optional outdatedDocuments: hits as SavedObjectsRawDoc[], lastHitSortValue: hits[hits.length - 1].sort as number[], + totalHits, }); } return Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits, }); }) .catch(catchRetryableEsClientErrors); diff --git a/src/core/server/saved_objects/migrationsv2/model.test.ts b/src/core/server/saved_objects/migrationsv2/model.test.ts index bdaedba9c9ea3..adeb78e568af3 100644 --- a/src/core/server/saved_objects/migrationsv2/model.test.ts +++ b/src/core/server/saved_objects/migrationsv2/model.test.ts @@ -45,6 +45,7 @@ import { createInitialState, model } from './model'; import { ResponseType } from './next'; import { SavedObjectsMigrationConfigType } from '../saved_objects_config'; import { TransformErrorObjects, TransformSavedObjectDocumentError } from '../migrations/core'; +import { createInitialProgress } from './progress'; describe('migrations v2 model', () => { const baseState: BaseState = { @@ -768,6 +769,8 @@ describe('migrations v2 model', () => { expect(newState.controlState).toBe('REINDEX_SOURCE_TO_TEMP_READ'); expect(newState.sourceIndexPitId).toBe('pit_id'); expect(newState.lastHitSortValue).toBe(undefined); + expect(newState.progress.processed).toBe(undefined); + expect(newState.progress.total).toBe(undefined); }); }); @@ -783,6 +786,7 @@ describe('migrations v2 model', () => { lastHitSortValue: undefined, corruptDocumentIds: [], transformErrors: [], + progress: createInitialProgress(), }; it('REINDEX_SOURCE_TO_TEMP_READ -> REINDEX_SOURCE_TO_TEMP_INDEX if the index has outdated documents to reindex', () => { @@ -791,21 +795,34 @@ describe('migrations v2 model', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_READ'> = Either.right({ outdatedDocuments, lastHitSortValue, + totalHits: 1, }); const newState = model(state, res) as ReindexSourceToTempIndex; expect(newState.controlState).toBe('REINDEX_SOURCE_TO_TEMP_INDEX'); expect(newState.outdatedDocuments).toBe(outdatedDocuments); expect(newState.lastHitSortValue).toBe(lastHitSortValue); + expect(newState.progress.processed).toBe(undefined); + expect(newState.progress.total).toBe(1); + expect(newState.logs).toMatchInlineSnapshot(` + Array [ + Object { + "level": "info", + "message": "Starting to process 1 documents.", + }, + ] + `); }); it('REINDEX_SOURCE_TO_TEMP_READ -> REINDEX_SOURCE_TO_TEMP_CLOSE_PIT if no outdated documents to reindex', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const newState = model(state, res) as ReindexSourceToTempClosePit; expect(newState.controlState).toBe('REINDEX_SOURCE_TO_TEMP_CLOSE_PIT'); expect(newState.sourceIndexPitId).toBe('pit_id'); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); it('REINDEX_SOURCE_TO_TEMP_READ -> FATAL if no outdated documents to reindex and transform failures seen with previous outdated documents', () => { @@ -817,12 +834,14 @@ describe('migrations v2 model', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const newState = model(testState, res) as FatalState; expect(newState.controlState).toBe('FATAL'); expect(newState.reason).toMatchInlineSnapshot( `"Migrations failed. Reason: Corrupt saved object documents: a:b. To allow migrations to proceed, please delete these documents."` ); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); }); @@ -857,6 +876,7 @@ describe('migrations v2 model', () => { lastHitSortValue: undefined, corruptDocumentIds: [], transformErrors: [], + progress: { processed: undefined, total: 1 }, }; const processedDocs = [ { @@ -869,8 +889,28 @@ describe('migrations v2 model', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_INDEX'> = Either.right({ processedDocs, }); - const newState = model(state, res); + const newState = model(state, res) as ReindexSourceToTempIndexBulk; + expect(newState.controlState).toEqual('REINDEX_SOURCE_TO_TEMP_INDEX_BULK'); + expect(newState.progress.processed).toBe(0); // Result of `(undefined ?? 0) + corruptDocumentsId.length` + }); + + it('increments the progress.processed counter', () => { + const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_INDEX'> = Either.right({ + processedDocs, + }); + + const testState = { + ...state, + outdatedDocuments: [{ _id: '1', _source: { type: 'vis' } }], + progress: { + processed: 1, + total: 1, + }, + }; + + const newState = model(testState, res) as ReindexSourceToTempIndexBulk; expect(newState.controlState).toEqual('REINDEX_SOURCE_TO_TEMP_INDEX_BULK'); + expect(newState.progress.processed).toBe(2); }); it('REINDEX_SOURCE_TO_TEMP_INDEX -> REINDEX_SOURCE_TO_TEMP_READ if action succeeded but we have carried through previous failures', () => { @@ -886,6 +926,7 @@ describe('migrations v2 model', () => { expect(newState.controlState).toEqual('REINDEX_SOURCE_TO_TEMP_READ'); expect(newState.corruptDocumentIds.length).toEqual(1); expect(newState.transformErrors.length).toEqual(0); + expect(newState.progress.processed).toBe(0); }); it('REINDEX_SOURCE_TO_TEMP_INDEX -> REINDEX_SOURCE_TO_TEMP_READ when response is left documents_transform_failed', () => { @@ -918,6 +959,7 @@ describe('migrations v2 model', () => { sourceIndexPitId: 'pit_id', targetIndex: '.kibana_7.11.0_001', lastHitSortValue: undefined, + progress: createInitialProgress(), }; test('REINDEX_SOURCE_TO_TEMP_INDEX_BULK -> REINDEX_SOURCE_TO_TEMP_READ if action succeeded', () => { const res: ResponseType<'REINDEX_SOURCE_TO_TEMP_INDEX_BULK'> = Either.right( @@ -1018,6 +1060,7 @@ describe('migrations v2 model', () => { hasTransformedDocs: false, corruptDocumentIds: [], transformErrors: [], + progress: createInitialProgress(), }; it('OUTDATED_DOCUMENTS_SEARCH_READ -> OUTDATED_DOCUMENTS_TRANSFORM if found documents to transform', () => { @@ -1026,21 +1069,65 @@ describe('migrations v2 model', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ outdatedDocuments, lastHitSortValue, + totalHits: 10, }); const newState = model(state, res) as OutdatedDocumentsTransform; expect(newState.controlState).toBe('OUTDATED_DOCUMENTS_TRANSFORM'); expect(newState.outdatedDocuments).toBe(outdatedDocuments); expect(newState.lastHitSortValue).toBe(lastHitSortValue); + expect(newState.progress.processed).toBe(undefined); + expect(newState.progress.total).toBe(10); + expect(newState.logs).toMatchInlineSnapshot(` + Array [ + Object { + "level": "info", + "message": "Starting to process 10 documents.", + }, + ] + `); + }); + + it('keeps the previous progress.total if not obtained in the result', () => { + const outdatedDocuments = [{ _id: '1', _source: { type: 'vis' } }]; + const lastHitSortValue = [123456]; + const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ + outdatedDocuments, + lastHitSortValue, + totalHits: undefined, + }); + const testState = { + ...state, + progress: { + processed: 5, + total: 10, + }, + }; + const newState = model(testState, res) as OutdatedDocumentsTransform; + expect(newState.controlState).toBe('OUTDATED_DOCUMENTS_TRANSFORM'); + expect(newState.outdatedDocuments).toBe(outdatedDocuments); + expect(newState.lastHitSortValue).toBe(lastHitSortValue); + expect(newState.progress.processed).toBe(5); + expect(newState.progress.total).toBe(10); + expect(newState.logs).toMatchInlineSnapshot(` + Array [ + Object { + "level": "info", + "message": "Processed 5 documents out of 10.", + }, + ] + `); }); it('OUTDATED_DOCUMENTS_SEARCH_READ -> OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT if no outdated documents to transform', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const newState = model(state, res) as OutdatedDocumentsSearchClosePit; expect(newState.controlState).toBe('OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT'); expect(newState.pitId).toBe('pit_id'); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); it('OUTDATED_DOCUMENTS_SEARCH_READ -> FATAL if no outdated documents to transform and we have failed document migrations', () => { @@ -1060,6 +1147,7 @@ describe('migrations v2 model', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_READ'> = Either.right({ outdatedDocuments: [], lastHitSortValue: undefined, + totalHits: undefined, }); const transformErrorsState: OutdatedDocumentsSearchRead = { ...state, @@ -1072,6 +1160,7 @@ describe('migrations v2 model', () => { expect(newState.reason.includes('Corrupt saved object documents: ')).toBe(true); expect(newState.reason.includes('Transformation errors: ')).toBe(true); expect(newState.reason.includes('randomvis: 7.12.0')).toBe(true); + expect(newState.logs).toStrictEqual([]); // No logs because no hits }); }); @@ -1138,6 +1227,7 @@ describe('migrations v2 model', () => { pitId: 'pit_id', lastHitSortValue: [3, 4], hasTransformedDocs: false, + progress: createInitialProgress(), }; describe('OUTDATED_DOCUMENTS_TRANSFORM if action succeeds', () => { const processedDocs = [ @@ -1156,6 +1246,7 @@ describe('migrations v2 model', () => { expect(newState.transformedDocs).toEqual(processedDocs); expect(newState.retryCount).toEqual(0); expect(newState.retryDelay).toEqual(0); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); test('OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH_READ if there are are existing documents that failed transformation', () => { const outdatedDocumentsTransformStateWithFailedDocuments: OutdatedDocumentsTransform = { @@ -1172,6 +1263,7 @@ describe('migrations v2 model', () => { expect(newState.corruptDocumentIds).toEqual(corruptDocumentIds); expect(newState.retryCount).toEqual(0); expect(newState.retryDelay).toEqual(0); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); test('OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH_READ if there are are existing documents that failed transformation because of transform errors', () => { const outdatedDocumentsTransformStateWithFailedDocuments: OutdatedDocumentsTransform = { @@ -1189,6 +1281,7 @@ describe('migrations v2 model', () => { expect(newState.transformErrors.length).toEqual(1); expect(newState.retryCount).toEqual(0); expect(newState.retryDelay).toEqual(0); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); }); describe('OUTDATED_DOCUMENTS_TRANSFORM if action fails', () => { @@ -1204,6 +1297,7 @@ describe('migrations v2 model', () => { ) as OutdatedDocumentsSearchRead; expect(newState.controlState).toEqual('OUTDATED_DOCUMENTS_SEARCH_READ'); expect(newState.corruptDocumentIds).toEqual(corruptDocumentIds); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); test('OUTDATED_DOCUMENTS_TRANSFORM -> OUTDATED_DOCUMENTS_SEARCH_READ combines newly failed documents with those already on state if documents failed the transform', () => { const newFailedTransformDocumentIds = ['b:other', 'c:__']; @@ -1226,6 +1320,7 @@ describe('migrations v2 model', () => { ...corruptDocumentIds, ...newFailedTransformDocumentIds, ]); + expect(newState.progress.processed).toBe(outdatedDocuments.length); }); }); }); @@ -1246,6 +1341,7 @@ describe('migrations v2 model', () => { pitId: 'pit_id', lastHitSortValue: [3, 4], hasTransformedDocs: false, + progress: createInitialProgress(), }; test('TRANSFORMED_DOCUMENTS_BULK_INDEX should throw a throwBadResponse error if action failed', () => { const res: ResponseType<'TRANSFORMED_DOCUMENTS_BULK_INDEX'> = Either.left({ diff --git a/src/core/server/saved_objects/migrationsv2/model.ts b/src/core/server/saved_objects/migrationsv2/model.ts index cf9d6aec6b5b0..3ef3cb4f83b6f 100644 --- a/src/core/server/saved_objects/migrationsv2/model.ts +++ b/src/core/server/saved_objects/migrationsv2/model.ts @@ -18,6 +18,12 @@ import { SavedObjectsMigrationVersion } from '../types'; import { disableUnknownTypeMappingFields } from '../migrations/core/migration_context'; import { excludeUnusedTypesQuery, TransformErrorObjects } from '../migrations/core'; import { SavedObjectsMigrationConfigType } from '../saved_objects_config'; +import { + createInitialProgress, + incrementProcessedProgress, + logProgress, + setProgressTotal, +} from './progress'; /** * A helper function/type for ensuring that all control state's are handled. @@ -509,6 +515,7 @@ export const model = (currentState: State, resW: ResponseType): // placeholders to collect document transform problems corruptDocumentIds: [], transformErrors: [], + progress: createInitialProgress(), }; } else { throwBadResponse(stateP, res); @@ -517,12 +524,16 @@ export const model = (currentState: State, resW: ResponseType): // we carry through any failures we've seen with transforming documents on state const res = resW as ExcludeRetryableEsError>; if (Either.isRight(res)) { + const progress = setProgressTotal(stateP.progress, res.right.totalHits); + const logs = logProgress(stateP.logs, progress); if (res.right.outdatedDocuments.length > 0) { return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_INDEX', outdatedDocuments: res.right.outdatedDocuments, lastHitSortValue: res.right.lastHitSortValue, + progress, + logs, }; } else { // we don't have any more outdated documents and need to either fail or move on to updating the target mappings. @@ -542,6 +553,7 @@ export const model = (currentState: State, resW: ResponseType): return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_CLOSE_PIT', + logs, }; } } @@ -566,12 +578,18 @@ export const model = (currentState: State, resW: ResponseType): // collecting issues along the way rather than failing // REINDEX_SOURCE_TO_TEMP_INDEX handles the document transforms const res = resW as ExcludeRetryableEsError>; + + // Increment the processed documents, no matter what the results are. + // Otherwise the progress might look off when there are errors. + const progress = incrementProcessedProgress(stateP.progress, stateP.outdatedDocuments.length); + if (Either.isRight(res)) { if (stateP.corruptDocumentIds.length === 0 && stateP.transformErrors.length === 0) { return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_INDEX_BULK', // handles the actual bulk indexing into temp index transformedDocs: [...res.right.processedDocs], + progress, }; } else { // we don't have any transform issues with the current batch of outdated docs but @@ -581,6 +599,7 @@ export const model = (currentState: State, resW: ResponseType): return { ...stateP, controlState: 'REINDEX_SOURCE_TO_TEMP_READ', + progress, }; } } else { @@ -592,6 +611,7 @@ export const model = (currentState: State, resW: ResponseType): controlState: 'REINDEX_SOURCE_TO_TEMP_READ', corruptDocumentIds: [...stateP.corruptDocumentIds, ...left.corruptDocumentIds], transformErrors: [...stateP.transformErrors, ...left.transformErrors], + progress, }; } else { // should never happen @@ -676,6 +696,7 @@ export const model = (currentState: State, resW: ResponseType): controlState: 'OUTDATED_DOCUMENTS_SEARCH_READ', pitId: res.right.pitId, lastHitSortValue: undefined, + progress: createInitialProgress(), hasTransformedDocs: false, corruptDocumentIds: [], transformErrors: [], @@ -687,11 +708,16 @@ export const model = (currentState: State, resW: ResponseType): const res = resW as ExcludeRetryableEsError>; if (Either.isRight(res)) { if (res.right.outdatedDocuments.length > 0) { + const progress = setProgressTotal(stateP.progress, res.right.totalHits); + const logs = logProgress(stateP.logs, progress); + return { ...stateP, controlState: 'OUTDATED_DOCUMENTS_TRANSFORM', outdatedDocuments: res.right.outdatedDocuments, lastHitSortValue: res.right.lastHitSortValue, + progress, + logs, }; } else { // we don't have any more outdated documents and need to either fail or move on to updating the target mappings. @@ -720,6 +746,11 @@ export const model = (currentState: State, resW: ResponseType): } } else if (stateP.controlState === 'OUTDATED_DOCUMENTS_TRANSFORM') { const res = resW as ExcludeRetryableEsError>; + + // Increment the processed documents, no matter what the results are. + // Otherwise the progress might look off when there are errors. + const progress = incrementProcessedProgress(stateP.progress, stateP.outdatedDocuments.length); + if (Either.isRight(res)) { // we haven't seen corrupt documents or any transformation errors thus far in the migration // index the migrated docs @@ -729,6 +760,7 @@ export const model = (currentState: State, resW: ResponseType): controlState: 'TRANSFORMED_DOCUMENTS_BULK_INDEX', transformedDocs: [...res.right.processedDocs], hasTransformedDocs: true, + progress, }; } else { // We have seen corrupt documents and/or transformation errors @@ -736,6 +768,7 @@ export const model = (currentState: State, resW: ResponseType): return { ...stateP, controlState: 'OUTDATED_DOCUMENTS_SEARCH_READ', + progress, }; } } else { @@ -747,6 +780,7 @@ export const model = (currentState: State, resW: ResponseType): corruptDocumentIds: [...stateP.corruptDocumentIds, ...res.left.corruptDocumentIds], transformErrors: [...stateP.transformErrors, ...res.left.transformErrors], hasTransformedDocs: false, + progress, }; } else { throwBadResponse(stateP, res as never); diff --git a/src/core/server/saved_objects/migrationsv2/progress.test.ts b/src/core/server/saved_objects/migrationsv2/progress.test.ts new file mode 100644 index 0000000000000..a0d89c2c63300 --- /dev/null +++ b/src/core/server/saved_objects/migrationsv2/progress.test.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { MigrationLog } from './types'; +import { + createInitialProgress, + incrementProcessedProgress, + logProgress, + setProgressTotal, +} from './progress'; + +describe('createInitialProgress', () => { + test('create initial progress', () => { + expect(createInitialProgress()).toStrictEqual({ + processed: undefined, + total: undefined, + }); + }); +}); + +describe('setProgressTotal', () => { + const previousProgress = { + processed: undefined, + total: 10, + }; + test('should keep the previous total if not provided', () => { + expect(setProgressTotal(previousProgress)).toStrictEqual(previousProgress); + }); + + test('should keep the previous total is undefined', () => { + expect(setProgressTotal(previousProgress, undefined)).toStrictEqual(previousProgress); + }); + + test('should overwrite if the previous total is provided', () => { + expect(setProgressTotal(previousProgress, 20)).toStrictEqual({ + processed: undefined, + total: 20, + }); + }); +}); + +describe('logProgress', () => { + const previousLogs: MigrationLog[] = []; + + test('should not log anything if there is no total', () => { + const progress = { + processed: undefined, + total: undefined, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([]); + }); + + test('should not log anything if total is 0', () => { + const progress = { + processed: undefined, + total: 0, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([]); + }); + + test('should log the "Starting..." log', () => { + const progress = { + processed: undefined, + total: 10, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([ + { + level: 'info', + message: 'Starting to process 10 documents.', + }, + ]); + }); + + test('should log the "Processed..." log', () => { + const progress = { + processed: 5, + total: 10, + }; + expect(logProgress(previousLogs, progress)).toStrictEqual([ + { + level: 'info', + message: 'Processed 5 documents out of 10.', + }, + ]); + }); +}); + +describe('incrementProcessedProgress', () => { + const previousProgress = { + processed: undefined, + total: 10, + }; + test('should not increment if the incrementValue is not defined', () => { + expect(incrementProcessedProgress(previousProgress)).toStrictEqual({ + processed: 0, + total: 10, + }); + }); + + test('should not increment if the incrementValue is undefined', () => { + expect(incrementProcessedProgress(previousProgress, undefined)).toStrictEqual({ + processed: 0, + total: 10, + }); + }); + + test('should not increment if the incrementValue is not defined (with some processed values)', () => { + const testPreviousProgress = { + ...previousProgress, + processed: 1, + }; + expect(incrementProcessedProgress(testPreviousProgress, undefined)).toStrictEqual({ + processed: 1, + total: 10, + }); + }); + + test('should increment if the incrementValue is defined', () => { + expect(incrementProcessedProgress(previousProgress, 5)).toStrictEqual({ + processed: 5, + total: 10, + }); + }); + + test('should increment if the incrementValue is defined (with some processed values)', () => { + const testPreviousProgress = { + ...previousProgress, + processed: 5, + }; + expect(incrementProcessedProgress(testPreviousProgress, 5)).toStrictEqual({ + processed: 10, + total: 10, + }); + }); +}); diff --git a/src/core/server/saved_objects/migrationsv2/progress.ts b/src/core/server/saved_objects/migrationsv2/progress.ts new file mode 100644 index 0000000000000..d626cd6528902 --- /dev/null +++ b/src/core/server/saved_objects/migrationsv2/progress.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { MigrationLog, Progress } from './types'; + +/** + * Returns an initial state of the progress object (everything undefined) + */ +export function createInitialProgress(): Progress { + return { + processed: undefined, + total: undefined, + }; +} + +/** + * Overwrites the total of the progress if anything provided + * @param previousProgress + * @param total + */ +export function setProgressTotal( + previousProgress: Progress, + total = previousProgress.total +): Progress { + return { + ...previousProgress, + total, + }; +} + +/** + * Returns a new list of MigrationLogs with the info entry about the progress + * @param previousLogs + * @param progress + */ +export function logProgress(previousLogs: MigrationLog[], progress: Progress): MigrationLog[] { + const logs = [...previousLogs]; + + if (progress.total) { + if (typeof progress.processed === 'undefined') { + logs.push({ + level: 'info', + message: `Starting to process ${progress.total} documents.`, + }); + } else { + logs.push({ + level: 'info', + message: `Processed ${progress.processed} documents out of ${progress.total}.`, + }); + } + } + + return logs; +} + +/** + * Increments the processed count and returns a new Progress + * @param previousProgress Previous state of the progress + * @param incrementProcessedBy Amount to increase the processed count by + */ +export function incrementProcessedProgress( + previousProgress: Progress, + incrementProcessedBy = 0 +): Progress { + return { + ...previousProgress, + processed: (previousProgress.processed ?? 0) + incrementProcessedBy, + }; +} diff --git a/src/core/server/saved_objects/migrationsv2/types.ts b/src/core/server/saved_objects/migrationsv2/types.ts index f5800a3cd9570..e3e52212d56cb 100644 --- a/src/core/server/saved_objects/migrationsv2/types.ts +++ b/src/core/server/saved_objects/migrationsv2/types.ts @@ -26,6 +26,11 @@ export interface MigrationLog { message: string; } +export interface Progress { + processed: number | undefined; + total: number | undefined; +} + export interface BaseState extends ControlState { /** The first part of the index name such as `.kibana` or `.kibana_task_manager` */ readonly indexPrefix: string; @@ -183,6 +188,7 @@ export interface ReindexSourceToTempRead extends PostInitState { readonly lastHitSortValue: number[] | undefined; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface ReindexSourceToTempClosePit extends PostInitState { @@ -197,6 +203,7 @@ export interface ReindexSourceToTempIndex extends PostInitState { readonly lastHitSortValue: number[] | undefined; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface ReindexSourceToTempIndexBulk extends PostInitState { @@ -204,6 +211,7 @@ export interface ReindexSourceToTempIndexBulk extends PostInitState { readonly transformedDocs: SavedObjectsRawDoc[]; readonly sourceIndexPitId: string; readonly lastHitSortValue: number[] | undefined; + readonly progress: Progress; } export type SetTempWriteBlock = PostInitState & { @@ -252,6 +260,7 @@ export interface OutdatedDocumentsSearchRead extends PostInitState { readonly hasTransformedDocs: boolean; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface OutdatedDocumentsSearchClosePit extends PostInitState { @@ -276,6 +285,7 @@ export interface OutdatedDocumentsTransform extends PostInitState { readonly hasTransformedDocs: boolean; readonly corruptDocumentIds: string[]; readonly transformErrors: TransformErrorObjects[]; + readonly progress: Progress; } export interface TransformedDocumentsBulkIndex extends PostInitState { /** @@ -286,6 +296,7 @@ export interface TransformedDocumentsBulkIndex extends PostInitState { readonly lastHitSortValue: number[] | undefined; readonly hasTransformedDocs: boolean; readonly pitId: string; + readonly progress: Progress; } export interface MarkVersionIndexReady extends PostInitState { From ee9d469295d80598ec1ce8142869987812fd9597 Mon Sep 17 00:00:00 2001 From: Thomas Neirynck Date: Thu, 13 May 2021 10:39:37 -0400 Subject: [PATCH 072/144] [RFC][Maps] Adding a timeslider to Maps (#98355) Accepted. Additional notes in the github issue. --- rfcs/images/timeslider/toolbar.png | Bin 0 -> 9372 bytes rfcs/images/timeslider/v1.png | Bin 0 -> 935400 bytes rfcs/images/timeslider/v2.png | Bin 0 -> 147212 bytes rfcs/text/0018_timeslider.md | 217 +++++++++++++++++++++++++++++ 4 files changed, 217 insertions(+) create mode 100644 rfcs/images/timeslider/toolbar.png create mode 100644 rfcs/images/timeslider/v1.png create mode 100644 rfcs/images/timeslider/v2.png create mode 100644 rfcs/text/0018_timeslider.md diff --git a/rfcs/images/timeslider/toolbar.png b/rfcs/images/timeslider/toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..3dae2af0d77f72ad4e9912bdfbbf184a39dd557f GIT binary patch literal 9372 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 z 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%0DW5 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 w}%>Rn&T^ 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�J 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

    1Y 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 LNkvXXu0mjfnd*Z3 literal 0 HcmV?d00001 diff --git a/rfcs/text/0018_timeslider.md b/rfcs/text/0018_timeslider.md new file mode 100644 index 0000000000000..aa8e7263260d2 --- /dev/null +++ b/rfcs/text/0018_timeslider.md @@ -0,0 +1,217 @@ +- Start Date: 2020-04-26 +- RFC PR: (leave this empty) +- Kibana Issue: (leave this empty) + +--- +- [1. Summary](#1-summary) +- [2. Detailed design](#2-detailed-design) +- [3. Unresolved questions](#3-unresolved-questions) + +# 1. Summary + +A timeslider is a UI component that allows users to intuitively navigate through time-based data. + +This RFC proposes adding a timeslider control to the Maps application. + +It proposes a two phased roll-out in the Maps application. The [design proposal](#2-detailed-design) focuses on the first phase. + +Since the timeslider UI is relevant for other Kibana apps, the implementation should be portable. We propose to implement the control as a React-component +without implicit dependencies on Kibana-state or Maps-state. + +The RFC details the integration of this control in Maps. It includes specific consideration to how timeslider affects data-refresh in the context of Maps. + +This RFC also outlines a possible integration of this Timeslider-React component with an Embeddable, and the introduction of a new piece of embeddable-state `Timeslice`. + +This RFC does not address how this component should _behave_ in apps other than the Maps-app. + +# 2. Detailed design + +Below outlines: +- the two delivery phases intended for Kibana Maps +- outline of the Timeslider UI component implementation (phase 1) +- outline of the integration in Maps of the Timeslider UI component (phase 1) + +## 2.1 Design phases overview + + + +### 2.1.1 Time-range selection and stepped navigation + +A first phase includes arbitrary time-range selection and stepped navigation. + +![Timeslider version 1](../images/timeslider/v1.png) + +This is the focus of this RFC. + +Check [https://github.com/elastic/kibana/pull/96791](https://github.com/elastic/kibana/pull/96791) for a POC implementation. + +### 2.2.2 Data distribution preview with histogram and playback + +A second phase adds a date histogram showing the preview of the data. + +![Timeslider version 2](../images/timeslider/v2.png) + +Details on this phase 2 are beyond the scope of this RFC. + +## 2.2 The timeslider UI React-component (phase 1) + +This focuses on Phase 1. Phase 2, with date histogram preview and auto-playback is out of scope for now. + +### 2.2.1 Interface of the React-component + +The core timeslider-UI is a React-component. + +The component has no implicit dependencies on any Kibana-state or Maps-store state. + +Its interface is fully defined by its `props`-contract. + +``` +export type Timeslice = { + from: number; // epoch timestamp + to: number; // epoch timestamp +}; + +export interface TimesliderProps { + onTimesliceChanged: (timeslice: Timeslice) => void; + timerange: TimeRange; // TimeRange The start and end time of the entire time-range. TimeRange is defined in `data/common` + timeslice?: Timeslice; // The currently displayed timeslice. Needs to be set after onTimesliceChange to be reflected back in UI. If ommitted, the control selects the first timeslice. +} +``` + +`timeslice` is clamped to the bounds of `timeRange`. + +Any change to `timeslice`, either by dragging the handles of the timeslider, or pressing the back or forward buttons, calls the `onTimesliceChanged` handler. + +Since the initial use is inside Maps, the initial location of this React-component is inside the Maps plugin, `x-pack/plugins/maps/public/timeslider`. + +Nonetheless, this UI-component should be easily "cut-and-pastable" to another location. + +### 2.2.2 Internals + +The timeslider automatically subdivides the timerange with equal breaks that are heuristically determined. + +It assigns about 6-10 breaks within the `timerange`, snaps the "ticks" to a natural "pretty date" using `calcAutoIntervalNear` from `data/common`. + +For example; +- a `timerange` of 8.5 days, it would assign a 8 day-steps, plus some padding on either end, depending on the entire `timerange`. +- a `timerange` of 6.9 years would snap to year-long step, plus some padding on either end, depending on the entire `timerange`. + +The slider itself is a ``. + +### 2.2.2 End-user behavior + +- the user can manipulate the `timeslice`-double ranged slider to any arbitrary range within `timerange`. +- the user can press the forward and back buttons for a stepped navigation. The range of the current time-slice is preserved when there is room for the `timeslice` within the `timerange`. + - when the user has _not modified the width_ of the `timeslice`, using the buttons means stepping through the pre-determined ticks (e.g. by year, by day, ...) + - when the user has _already modified the width_ of the `timeslice`, it means stepping through the `timerange`, with a stride of the width of the `timeslice`. +- the `timeslice` "snaps" to the beginning or end (depending on direction) of the `timerange`. In practice, this means the `timeslice` will collaps or reduce in width. + +## 2.3 Maps integration of the timeslider React component + +This control will be integrated in the Maps-UI. + +Maps is Redux-based, so `timeslice` selection and activation/de-activation all propagates to the Redux-store. + +#### 2.3.1 Position in the UI + +The timeslider control is enabled/disabled by the timeslider on/off toggle-button in the main toolbar. + +![Timeslider version 1](../images/timeslider/toolbar.png) + + +#### 2.3.2 Layer interactions + + +Enabling the Timeslider will automatically retrigger refresh of _all_ time-based layers to the currently selected `timeslice`. + +The Layer-TOC will indicate which layer is currently "time-filtered" by the timeslider. + +On a layer-per-layer basis, users will be able to explicitly opt-out if they should be governed by the timerange or not. This is an existing toggle in Maps already. +This is relevant for having users add contextual layers that should _not_ depend on the time. + + +#### 2.3.3 Omitting timeslider on a dashboard + +Maps will not display the timeslider-activation button on Maps that are embedded in a Dashboard. + +We believe that a Timeslider-embeddable would be a better vehicle to bring timeslider-functionality do Dashboards. See also the [last section](#3-unresolved-questions). + +#### 2.3.3 Data-fetch considerations + +--- +**NOTE** + +The below section is very Maps-specific, although similar challenges would be present in other applications as well. + +Some of these considerations will not generalize to all of Kibana. + +The main ways that Maps distinguishes in data-fetch from other use-cases: + - the majority of the data-fetching for layers in Maps depends on the scale and extent. Ie. different data is requested based on the current zoom-level and current-extent of the Map. So for example, even if two views share the same time, query and filter-state, if their extent and/or scale is different, their requests to ES will be different. + - for some layer-types, Maps will fetch individual documents, rather than the result of an aggregation. + +--- + +Data-fetch for timeslider should be responsive and smooth. A user dragging the slider should have an immediate visual result on the map. + +In addition, we expect the timeslider will be used a lot for "comparisons". For example, imagine a user stepping back&forth between timeslices. + +For this reason, apps using a timeslider (such as Maps) ideally: +- pre-fetch data when possible +- cache data when possible + +For Maps specifically, when introducing timeslider, layers will therefore need to implement time-based data fetch based on _two_ pieces of state +- the entire `timerange` (aka. the global Kibana timerange) +- the selected `timeslice` (aka. the `timeslice` chosen by the user using the UI-component) + +##### 2.3.3.1 Pre-fetching individual documents and masking of data + +ES-document layers (which display individual documents) can prefetch all documents within the entire `timerange`, when the total number of docs is below some threshold. In the context of Maps, this threshold is the default index-search-size of the index. + +Maps can then just mask data on the map based on some filter-expression. The evaluation of this filter-expression is done by mapbox-gl is fast because it occurs on the GPU. There is immediate visual feedback to the user as they manipulate the timeslider, because it does not require a roundtrip to update the data. + +##### 2.3.3.2 Caching of aggregated searches + +Aggregated data can be cached on the client, so toggling between timeslices can avoid a round-trip data-fetch. +The main technique here is for layers to use `.mvt`-data format to request data. Tiled-based data can be cached client-side + +We do _not_ propose _pre-fetching_ of aggregated data in this initial phase of the Maps timeslider effort. There is a couple reasons: +- Based on the intended user-interactions for timeslider, because a user can flexibly select a `timeslice` of arbitrary widths, it would be really hard to determine how to determine which timeslices to aggregate up front. +- Maps already strains the maximum bucket sizes it can retrieve from Elasticsearch. Cluster/grid-layers often push up to 10k or more buckets, and terms-aggregations for choropleth maps also is going up to 10k buckets. Prefetching this for timeslices (e.g. say x10 timeslices) would easily exceed the default bucket limit sizes of Elasticsearch. + + +##### 2.3.3.3 Decouple data-fetch from UI-effort + +Apart from refactoring the data-fetch for layers to now use two pieces of time-based state, the implementation will decouple any data-fetch considerations from the actual timeslider-UI work. + +The idea is that dial in data-fetch optimizations can be dialed into Maps in a parallel work-thread, not necessarily dependent on any changes or additions to the UI. +Any optimizations would not only affect timeslider users, but support all interaction patterns that require smooth data-updates (e.g. panning back&forth to two locations, toggling back&forth between two filters, ...) + +The main effort to support efficient data-fetch in a maps-context is to use `.mvt` as the default data format ([https://github.com/elastic/kibana/issues/79868](https://github.com/elastic/kibana/issues/79868)). This is a stack-wide effort in collaboration with the Elasticsearch team ([https://github.com/elastic/elasticsearch/issues/58696](https://github.com/elastic/elasticsearch/issues/58696), which will add `.mvt` as a core response format to Elasticsearch. + +Growing the use of `mvt`([https://docs.mapbox.com/vector-tiles/reference/](https://docs.mapbox.com/vector-tiles/reference/)) in Maps will help with both pre-fetching and client-side caching: +- `mvt` is a binary format which allows more data to be packed inside, as compared to Json. Multiple tiles are patched together, so this introduces a form of parallelization as well. Due to growing the amount of data inside a single tile, and due to the parallelization, Maps has a pathway to increase the number of features that can be time-filtered. +- Because vector tiles have fixed extents and scales (defined by a `{x}/{y}/{scale}`-tuple), this type of data-fetching allows tiles to be cached on the client. This cache can be the implicit browser disc-cache, or the transient in-mem cache of mapbox-gl. Using mvt thus provides a pathway for fast toggling back&forth between timeslices, without round-trips to fetch data. + + +##### 2.3.3.4 timeslider and async search + +It is unclear on what the practical uses for async-search would be in the context of a timeslider-control in Maps. + +Timeslider is a highly interactive control that require immediate visual feedback. We also do not intend to activate timeslider in Maps on a Dashboard (see above). + +End-users who need to view a dashboard with a long-running background search will need to manipulate the _global Kibana time picker_ to select the time-range, and will not be able to use the timeslider to do so. + +# 3. Unresolved questions + +## Making Timeslider a Kibana Embeddable + +This below is a forward looking section. It is a proposal of how the Timeslider-UI can be exposed as an Embeddable, when that time should come. + +We expect a few steps: +- This would require the extraction of the timeslider React-component out of Maps into a separate plugin. As outlined above, this migration should be fairly straightforward, a "cut and paste". +- It would require the creation of a `TimesliderEmbeddable` which wraps this UI-component. +- It would also require the introduction of a new piece of embeddable-state, `Timeslice`, which can be controlled by the `TimesliderEmbeddable`. +We believe it is important to keep `timeslice` and `timerange` separate, as individual apps and other embeddables will have different mechanism to efficiently fetch data and respond to changes in `timeslice` and/or `timerange`. + +Having timeslider as a core Embeddable likely provides a better pathway to integrate timeslider-functionality in Dashboards or apps other than Maps. + From bdde884d098f42a93630cc6d221258bdc3372e60 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Thu, 13 May 2021 17:12:47 +0200 Subject: [PATCH 073/144] [RAC] Decouple registry from alerts-as-data client (#98935) --- package.json | 3 +- packages/kbn-optimizer/limits.yml | 1 - packages/kbn-rule-data-utils/jest.config.js | 13 + packages/kbn-rule-data-utils/package.json | 13 + packages/kbn-rule-data-utils/src/index.ts | 9 + .../src/technical_field_names.ts | 77 ++++ packages/kbn-rule-data-utils/tsconfig.json | 19 + typings/elasticsearch/search.d.ts | 6 +- x-pack/plugins/apm/kibana.json | 12 +- .../public/application/application.test.tsx | 8 +- .../plugins/apm/public/application/csmApp.tsx | 19 +- .../plugins/apm/public/application/index.tsx | 13 +- .../alerting/register_apm_alerts.ts | 98 +++--- .../ErrorGroupDetails/Distribution/index.tsx | 3 +- .../app/Home/__snapshots__/Home.test.tsx.snap | 14 +- .../service_icons/alert_details.tsx | 30 +- .../charts/helper/get_alert_annotations.tsx | 16 +- .../shared/charts/latency_chart/index.tsx | 5 +- .../transaction_error_rate_chart/index.tsx | 3 +- .../context/apm_plugin/apm_plugin_context.tsx | 5 +- .../apm_plugin/mock_apm_plugin_context.tsx | 9 +- x-pack/plugins/apm/public/plugin.ts | 21 +- .../server/lib/alerts/register_apm_alerts.ts | 6 +- .../alerts/register_error_count_alert_type.ts | 24 +- ...egister_transaction_duration_alert_type.ts | 252 +++++++------- ...transaction_duration_anomaly_alert_type.ts | 31 +- ...ister_transaction_error_rate_alert_type.ts | 24 +- .../apm/server/lib/alerts/test_utils/index.ts | 24 +- .../server/lib/services/get_service_alerts.ts | 18 +- x-pack/plugins/apm/server/plugin.ts | 103 +++++- .../server/routes/register_routes/index.ts | 6 +- x-pack/plugins/apm/server/routes/services.ts | 19 +- x-pack/plugins/apm/server/routes/typings.ts | 4 +- x-pack/plugins/apm/server/types.ts | 9 + .../rules/observability_rule_field_map.ts | 22 -- .../common/utils/formatters/duration.ts | 3 + .../common/utils/formatters/formatters.ts | 2 + x-pack/plugins/observability/kibana.json | 3 +- .../public/application/application.test.tsx | 4 +- .../public/application/index.tsx | 9 +- .../components/app/section/apm/index.test.tsx | 8 +- .../components/app/section/ux/index.test.tsx | 4 +- .../public/context/plugin_context.tsx | 5 +- .../public/hooks/use_time_range.test.ts | 6 +- x-pack/plugins/observability/public/index.ts | 3 +- .../public/pages/alerts/alerts.stories.tsx | 4 +- .../alerts_flyout/alerts_flyout.stories.tsx | 41 +-- .../pages/alerts/alerts_flyout/index.tsx | 20 +- .../public/pages/alerts/alerts_table.tsx | 10 +- .../public/pages/alerts/example_data.ts | 60 ++-- .../public/pages/alerts/index.tsx | 30 +- .../pages/overview/overview.stories.tsx | 4 +- x-pack/plugins/observability/public/plugin.ts | 25 +- ...create_observability_rule_type_registry.ts | 31 ++ .../public/rules/formatter_rule_registry.ts | 30 -- .../rules/observability_rule_registry_mock.ts | 17 - .../observability_rule_type_registry_mock.ts | 16 + .../public/utils/test_helper.tsx | 6 +- .../server/lib/rules/get_top_alerts.ts | 28 +- x-pack/plugins/observability/server/plugin.ts | 21 +- .../server/routes/register_routes.ts | 8 +- .../observability/server/routes/rules.ts | 27 +- .../observability/server/routes/types.ts | 4 +- x-pack/plugins/observability/server/types.ts | 6 - x-pack/plugins/rule_registry/README.md | 141 ++++++-- .../common/assets.ts} | 7 +- .../ecs_component_template.ts | 24 ++ .../technical_component_template.ts | 19 + .../field_maps}/ecs_field_map.ts | 0 .../field_maps/technical_rule_field_map.ts | 56 +++ .../index_templates/base_index_template.ts | 15 + .../default_lifecycle_policy.ts} | 4 +- .../common/field_map/base_rule_field_map.ts | 33 -- .../rule_registry/common/field_map/index.ts | 2 - x-pack/plugins/rule_registry/common/index.ts | 3 +- .../mapping_from_field_map.ts | 6 +- .../common/parse_technical_fields.ts | 25 ++ .../common/technical_rule_data_field_names.ts | 8 + x-pack/plugins/rule_registry/common/types.ts | 21 ++ x-pack/plugins/rule_registry/kibana.json | 3 +- x-pack/plugins/rule_registry/public/index.ts | 17 - x-pack/plugins/rule_registry/public/plugin.ts | 56 --- .../public/rule_registry/index.ts | 47 --- .../public/rule_registry/types.ts | 63 ---- x-pack/plugins/rule_registry/server/index.ts | 16 +- x-pack/plugins/rule_registry/server/plugin.ts | 48 +-- .../server/rule_data_client/index.ts | 132 +++++++ .../server/rule_data_client/types.ts | 44 +++ .../server/rule_data_plugin_service/index.ts | 158 +++++++++ .../index.ts | 179 ---------- .../types.ts | 57 --- .../server/rule_registry/index.ts | 328 ------------------ .../create_lifecycle_rule_type_factory.ts | 235 ------------- .../server/rule_registry/types.ts | 42 --- x-pack/plugins/rule_registry/server/types.ts | 106 ++---- .../create_lifecycle_rule_type_factory.ts | 246 +++++++++++++ .../server/utils/get_rule_executor_data.ts | 39 +++ .../utils/with_rule_data_client_factory.ts | 39 +++ .../test/apm_api_integration/configs/index.ts | 2 +- .../tests/alerts/rule_registry.ts | 229 ++++++++---- .../index_lifecycle_management/home_page.ts | 3 + .../index_lifecycle_management_page.ts | 5 + yarn.lock | 4 + 103 files changed, 1983 insertions(+), 1853 deletions(-) create mode 100644 packages/kbn-rule-data-utils/jest.config.js create mode 100644 packages/kbn-rule-data-utils/package.json create mode 100644 packages/kbn-rule-data-utils/src/index.ts create mode 100644 packages/kbn-rule-data-utils/src/technical_field_names.ts create mode 100644 packages/kbn-rule-data-utils/tsconfig.json delete mode 100644 x-pack/plugins/observability/common/rules/observability_rule_field_map.ts create mode 100644 x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts delete mode 100644 x-pack/plugins/observability/public/rules/formatter_rule_registry.ts delete mode 100644 x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts create mode 100644 x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts rename x-pack/plugins/{apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts => rule_registry/common/assets.ts} (53%) create mode 100644 x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts create mode 100644 x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts rename x-pack/plugins/rule_registry/common/{field_map => assets/field_maps}/ecs_field_map.ts (100%) create mode 100644 x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts create mode 100644 x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts rename x-pack/plugins/rule_registry/{server/rule_registry/defaults/ilm_policy.ts => common/assets/lifecycle_policies/default_lifecycle_policy.ts} (86%) delete mode 100644 x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts rename x-pack/plugins/rule_registry/{server/rule_registry/field_map => common}/mapping_from_field_map.ts (79%) create mode 100644 x-pack/plugins/rule_registry/common/parse_technical_fields.ts create mode 100644 x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts create mode 100644 x-pack/plugins/rule_registry/common/types.ts delete mode 100644 x-pack/plugins/rule_registry/public/index.ts delete mode 100644 x-pack/plugins/rule_registry/public/plugin.ts delete mode 100644 x-pack/plugins/rule_registry/public/rule_registry/index.ts delete mode 100644 x-pack/plugins/rule_registry/public/rule_registry/types.ts create mode 100644 x-pack/plugins/rule_registry/server/rule_data_client/index.ts create mode 100644 x-pack/plugins/rule_registry/server/rule_data_client/types.ts create mode 100644 x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/index.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts delete mode 100644 x-pack/plugins/rule_registry/server/rule_registry/types.ts create mode 100644 x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts create mode 100644 x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts create mode 100644 x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts diff --git a/package.json b/package.json index a8cfbb5013647..d46617f2a6f2a 100644 --- a/package.json +++ b/package.json @@ -136,9 +136,9 @@ "@kbn/logging": "link:bazel-bin/packages/kbn-logging/npm_module", "@kbn/monaco": "link:packages/kbn-monaco", "@kbn/securitysolution-constants": "link:bazel-bin/packages/kbn-securitysolution-constants/npm_module", - "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", "@kbn/securitysolution-es-utils": "link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module", "@kbn/securitysolution-io-ts-utils": "link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module", + "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", "@kbn/server-route-repository": "link:packages/kbn-server-route-repository", "@kbn/std": "link:bazel-bin/packages/kbn-std/npm_module", @@ -265,6 +265,7 @@ "json-stringify-safe": "5.0.1", "jsonwebtoken": "^8.5.1", "jsts": "^1.6.2", + "@kbn/rule-data-utils": "link:packages/kbn-rule-data-utils", "kea": "^2.3.0", "leaflet": "1.5.1", "leaflet-draw": "0.4.14", diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 08e90ed829d4a..448b5ad650da5 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -61,7 +61,6 @@ pageLoadAssetSize: remoteClusters: 51327 reporting: 183418 rollup: 97204 - ruleRegistry: 100000 savedObjects: 108518 savedObjectsManagement: 101836 savedObjectsTagging: 59482 diff --git a/packages/kbn-rule-data-utils/jest.config.js b/packages/kbn-rule-data-utils/jest.config.js new file mode 100644 index 0000000000000..26cb39fe8b55a --- /dev/null +++ b/packages/kbn-rule-data-utils/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-rule-data-utils'], +}; diff --git a/packages/kbn-rule-data-utils/package.json b/packages/kbn-rule-data-utils/package.json new file mode 100644 index 0000000000000..6f0b8439ec891 --- /dev/null +++ b/packages/kbn-rule-data-utils/package.json @@ -0,0 +1,13 @@ +{ + "name": "@kbn/rule-data-utils", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0", + "private": true, + "scripts": { + "build": "../../node_modules/.bin/tsc", + "kbn:bootstrap": "yarn build", + "kbn:watch": "yarn build --watch" + } +} diff --git a/packages/kbn-rule-data-utils/src/index.ts b/packages/kbn-rule-data-utils/src/index.ts new file mode 100644 index 0000000000000..93a2538c7aa2c --- /dev/null +++ b/packages/kbn-rule-data-utils/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './technical_field_names'; diff --git a/packages/kbn-rule-data-utils/src/technical_field_names.ts b/packages/kbn-rule-data-utils/src/technical_field_names.ts new file mode 100644 index 0000000000000..31779c9f08e81 --- /dev/null +++ b/packages/kbn-rule-data-utils/src/technical_field_names.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ValuesType } from 'utility-types'; + +const ALERT_NAMESPACE = 'kibana.rac.alert'; + +const TIMESTAMP = '@timestamp' as const; +const EVENT_KIND = 'event.kind' as const; +const EVENT_ACTION = 'event.action' as const; +const RULE_UUID = 'rule.uuid' as const; +const RULE_ID = 'rule.id' as const; +const RULE_NAME = 'rule.name' as const; +const RULE_CATEGORY = 'rule.category' as const; +const TAGS = 'tags' as const; +const PRODUCER = `${ALERT_NAMESPACE}.producer` as const; +const ALERT_ID = `${ALERT_NAMESPACE}.id` as const; +const ALERT_UUID = `${ALERT_NAMESPACE}.uuid` as const; +const ALERT_START = `${ALERT_NAMESPACE}.start` as const; +const ALERT_END = `${ALERT_NAMESPACE}.end` as const; +const ALERT_DURATION = `${ALERT_NAMESPACE}.duration.us` as const; +const ALERT_SEVERITY_LEVEL = `${ALERT_NAMESPACE}.severity.level` as const; +const ALERT_SEVERITY_VALUE = `${ALERT_NAMESPACE}.severity.value` as const; +const ALERT_STATUS = `${ALERT_NAMESPACE}.status` as const; +const ALERT_EVALUATION_THRESHOLD = `${ALERT_NAMESPACE}.evaluation.threshold` as const; +const ALERT_EVALUATION_VALUE = `${ALERT_NAMESPACE}.evaluation.value` as const; + +const fields = { + TIMESTAMP, + EVENT_KIND, + EVENT_ACTION, + RULE_UUID, + RULE_ID, + RULE_NAME, + RULE_CATEGORY, + TAGS, + PRODUCER, + ALERT_ID, + ALERT_UUID, + ALERT_START, + ALERT_END, + ALERT_DURATION, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, + ALERT_STATUS, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +}; + +export { + TIMESTAMP, + EVENT_KIND, + EVENT_ACTION, + RULE_UUID, + RULE_ID, + RULE_NAME, + RULE_CATEGORY, + TAGS, + PRODUCER, + ALERT_ID, + ALERT_UUID, + ALERT_START, + ALERT_END, + ALERT_DURATION, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, + ALERT_STATUS, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +}; + +export type TechnicalRuleDataFieldName = ValuesType; diff --git a/packages/kbn-rule-data-utils/tsconfig.json b/packages/kbn-rule-data-utils/tsconfig.json new file mode 100644 index 0000000000000..4b1262d11f3af --- /dev/null +++ b/packages/kbn-rule-data-utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "incremental": false, + "outDir": "./target", + "stripInternal": false, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-rule-data-utils/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "./src/**/*.ts" + ] +} diff --git a/typings/elasticsearch/search.d.ts b/typings/elasticsearch/search.d.ts index c9bf3b1d8b7bc..d75f31d388176 100644 --- a/typings/elasticsearch/search.d.ts +++ b/typings/elasticsearch/search.d.ts @@ -49,7 +49,7 @@ type ValueTypeOfField = T extends Record type MaybeArray = T | T[]; -type Fields = MaybeArray; +type Fields = Exclude['body']['fields'], undefined>; type DocValueFields = MaybeArray; export type SearchHit< @@ -58,7 +58,7 @@ export type SearchHit< TDocValueFields extends DocValueFields | undefined = undefined > = Omit & (TSource extends false ? {} : { _source: TSource }) & - (TFields extends estypes.Fields + (TFields extends Fields ? { fields: Partial, unknown[]>>; } @@ -77,7 +77,7 @@ type HitsOf< > = Array< SearchHit< TOptions extends { _source: false } ? undefined : TDocument, - TOptions extends { fields: estypes.Fields } ? TOptions['fields'] : undefined, + TOptions extends { fields: Fields } ? TOptions['fields'] : undefined, TOptions extends { docvalue_fields: DocValueFields } ? TOptions['docvalue_fields'] : undefined > >; diff --git a/x-pack/plugins/apm/kibana.json b/x-pack/plugins/apm/kibana.json index 28e4a7b36e740..76d544c3bc6f5 100644 --- a/x-pack/plugins/apm/kibana.json +++ b/x-pack/plugins/apm/kibana.json @@ -10,7 +10,8 @@ "triggersActionsUi", "embeddable", "infra", - "observability" + "observability", + "ruleRegistry" ], "optionalPlugins": [ "spaces", @@ -26,8 +27,13 @@ ], "server": true, "ui": true, - "configPath": ["xpack", "apm"], - "extraPublicDirs": ["public/style/variables"], + "configPath": [ + "xpack", + "apm" + ], + "extraPublicDirs": [ + "public/style/variables" + ], "requiredBundles": [ "home", "kibanaReact", diff --git a/x-pack/plugins/apm/public/application/application.test.tsx b/x-pack/plugins/apm/public/application/application.test.tsx index e6415f76c60dc..4ec654a6c0bfd 100644 --- a/x-pack/plugins/apm/public/application/application.test.tsx +++ b/x-pack/plugins/apm/public/application/application.test.tsx @@ -39,7 +39,11 @@ describe('renderApp', () => { }); it('renders the app', () => { - const { core, config, apmRuleRegistry } = mockApmPluginContextValue; + const { + core, + config, + observabilityRuleTypeRegistry, + } = mockApmPluginContextValue; const plugins = { licensing: { license$: new Observable() }, triggersActionsUi: { actionTypeRegistry: {}, alertTypeRegistry: {} }, @@ -92,7 +96,7 @@ describe('renderApp', () => { appMountParameters: params as any, pluginsStart: startDeps as any, config, - apmRuleRegistry, + observabilityRuleTypeRegistry, }); }); diff --git a/x-pack/plugins/apm/public/application/csmApp.tsx b/x-pack/plugins/apm/public/application/csmApp.tsx index 17905074cfec1..11a2777f47f6a 100644 --- a/x-pack/plugins/apm/public/application/csmApp.tsx +++ b/x-pack/plugins/apm/public/application/csmApp.tsx @@ -12,6 +12,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Route, Router } from 'react-router-dom'; import { DefaultTheme, ThemeProvider } from 'styled-components'; +import type { ObservabilityRuleTypeRegistry } from '../../../observability/public'; import { euiStyled } from '../../../../../src/plugins/kibana_react/common'; import { KibanaContextProvider, @@ -26,11 +27,7 @@ import { ApmPluginContext } from '../context/apm_plugin/apm_plugin_context'; import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; import { ConfigSchema } from '../index'; -import { - ApmPluginSetupDeps, - ApmPluginStartDeps, - ApmRuleRegistry, -} from '../plugin'; +import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; import { createCallApmApi } from '../services/rest/createCallApmApi'; import { px, units } from '../style/variables'; import { createStaticIndexPattern } from '../services/rest/index_pattern'; @@ -77,14 +74,14 @@ export function CsmAppRoot({ deps, config, corePlugins: { embeddable, maps }, - apmRuleRegistry, + observabilityRuleTypeRegistry, }: { appMountParameters: AppMountParameters; core: CoreStart; deps: ApmPluginSetupDeps; config: ConfigSchema; corePlugins: ApmPluginStartDeps; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; }) { const { history } = appMountParameters; const i18nCore = core.i18n; @@ -94,7 +91,7 @@ export function CsmAppRoot({ config, core, plugins, - apmRuleRegistry, + observabilityRuleTypeRegistry, }; return ( @@ -125,14 +122,14 @@ export const renderApp = ({ appMountParameters, config, corePlugins, - apmRuleRegistry, + observabilityRuleTypeRegistry, }: { core: CoreStart; deps: ApmPluginSetupDeps; appMountParameters: AppMountParameters; config: ConfigSchema; corePlugins: ApmPluginStartDeps; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; }) => { const { element } = appMountParameters; @@ -151,7 +148,7 @@ export const renderApp = ({ deps={deps} config={config} corePlugins={corePlugins} - apmRuleRegistry={apmRuleRegistry} + observabilityRuleTypeRegistry={observabilityRuleTypeRegistry} />, element ); diff --git a/x-pack/plugins/apm/public/application/index.tsx b/x-pack/plugins/apm/public/application/index.tsx index acb55a02599f1..e2a0bdb6b48b1 100644 --- a/x-pack/plugins/apm/public/application/index.tsx +++ b/x-pack/plugins/apm/public/application/index.tsx @@ -13,6 +13,7 @@ import ReactDOM from 'react-dom'; import { Route, Router, Switch } from 'react-router-dom'; import 'react-vis/dist/style.css'; import { DefaultTheme, ThemeProvider } from 'styled-components'; +import type { ObservabilityRuleTypeRegistry } from '../../../observability/public'; import { euiStyled } from '../../../../../src/plugins/kibana_react/common'; import { ConfigSchema } from '../'; import { AppMountParameters, CoreStart } from '../../../../../src/core/public'; @@ -30,11 +31,7 @@ import { import { LicenseProvider } from '../context/license/license_context'; import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; -import { - ApmPluginSetupDeps, - ApmPluginStartDeps, - ApmRuleRegistry, -} from '../plugin'; +import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; import { createCallApmApi } from '../services/rest/createCallApmApi'; import { createStaticIndexPattern } from '../services/rest/index_pattern'; import { setHelpExtension } from '../setHelpExtension'; @@ -112,14 +109,14 @@ export const renderApp = ({ appMountParameters, config, pluginsStart, - apmRuleRegistry, + observabilityRuleTypeRegistry, }: { coreStart: CoreStart; pluginsSetup: ApmPluginSetupDeps; appMountParameters: AppMountParameters; config: ConfigSchema; pluginsStart: ApmPluginStartDeps; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; }) => { const { element } = appMountParameters; const apmPluginContextValue = { @@ -127,7 +124,7 @@ export const renderApp = ({ config, core: coreStart, plugins: pluginsSetup, - apmRuleRegistry, + observabilityRuleTypeRegistry, }; // render APM feedback link in global help menu diff --git a/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts b/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts index 98c8b99411bc3..7e788016baad2 100644 --- a/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts +++ b/x-pack/plugins/apm/public/components/alerting/register_apm_alerts.ts @@ -8,9 +8,19 @@ import { i18n } from '@kbn/i18n'; import { lazy } from 'react'; import { stringify } from 'querystring'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_SEVERITY_LEVEL, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import type { ObservabilityRuleTypeRegistry } from '../../../../observability/public'; import { ENVIRONMENT_ALL } from '../../../common/environment_filter_values'; import { AlertType } from '../../../common/alert_types'; -import type { ApmRuleRegistry } from '../../plugin'; + +// copied from elasticsearch_fieldnames.ts to limit page load bundle size +const SERVICE_ENVIRONMENT = 'service.environment'; +const SERVICE_NAME = 'service.name'; +const TRANSACTION_TYPE = 'transaction.type'; const format = ({ pathname, @@ -22,28 +32,32 @@ const format = ({ return `${pathname}?${stringify(query)}`; }; -export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { - apmRuleRegistry.registerType({ +export function registerApmAlerts( + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry +) { + observabilityRuleTypeRegistry.register({ id: AlertType.ErrorCount, description: i18n.translate('xpack.apm.alertTypes.errorCount.description', { defaultMessage: 'Alert when the number of errors in a service exceeds a defined threshold.', }), - format: ({ alert }) => { + format: ({ fields }) => { return { reason: i18n.translate('xpack.apm.alertTypes.errorCount.reason', { defaultMessage: `Error count is greater than {threshold} (current value is {measured}) for {serviceName}`, values: { - threshold: alert['kibana.observability.evaluation.threshold'], - measured: alert['kibana.observability.evaluation.value'], - serviceName: alert['service.name']!, + threshold: fields[ALERT_EVALUATION_THRESHOLD], + measured: fields[ALERT_EVALUATION_VALUE], + serviceName: String(fields[SERVICE_NAME][0]), }, }), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}/errors`, + pathname: `/app/apm/services/${String( + fields[SERVICE_NAME][0] + )}/errors`, query: { - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), @@ -71,7 +85,7 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { ), }); - apmRuleRegistry.registerType({ + observabilityRuleTypeRegistry.register({ id: AlertType.TransactionDuration, description: i18n.translate( 'xpack.apm.alertTypes.transactionDuration.description', @@ -80,28 +94,24 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { 'Alert when the latency of a specific transaction type in a service exceeds a defined threshold.', } ), - format: ({ alert, formatters: { asDuration } }) => ({ + format: ({ fields, formatters: { asDuration } }) => ({ reason: i18n.translate( 'xpack.apm.alertTypes.transactionDuration.reason', { defaultMessage: `Latency is above {threshold} (current value is {measured}) for {serviceName}`, values: { - threshold: asDuration( - alert['kibana.observability.evaluation.threshold'] - ), - measured: asDuration( - alert['kibana.observability.evaluation.value'] - ), - serviceName: alert['service.name']!, + threshold: asDuration(fields[ALERT_EVALUATION_THRESHOLD]), + measured: asDuration(fields[ALERT_EVALUATION_VALUE]), + serviceName: String(fields[SERVICE_NAME][0]), }, } ), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}`, + pathname: `/app/apm/services/${fields[SERVICE_NAME][0]!}`, query: { - transactionType: alert['transaction.type']!, - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + transactionType: fields[TRANSACTION_TYPE][0]!, + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), @@ -131,7 +141,7 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { ), }); - apmRuleRegistry.registerType({ + observabilityRuleTypeRegistry.register({ id: AlertType.TransactionErrorRate, description: i18n.translate( 'xpack.apm.alertTypes.transactionErrorRate.description', @@ -140,30 +150,24 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { 'Alert when the rate of transaction errors in a service exceeds a defined threshold.', } ), - format: ({ alert, formatters: { asPercent } }) => ({ + format: ({ fields, formatters: { asPercent } }) => ({ reason: i18n.translate( 'xpack.apm.alertTypes.transactionErrorRate.reason', { defaultMessage: `Transaction error rate is greater than {threshold} (current value is {measured}) for {serviceName}`, values: { - threshold: asPercent( - alert['kibana.observability.evaluation.threshold'], - 100 - ), - measured: asPercent( - alert['kibana.observability.evaluation.value'], - 100 - ), - serviceName: alert['service.name']!, + threshold: asPercent(fields[ALERT_EVALUATION_THRESHOLD], 100), + measured: asPercent(fields[ALERT_EVALUATION_VALUE], 100), + serviceName: String(fields[SERVICE_NAME][0]), }, } ), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}`, + pathname: `/app/apm/services/${String(fields[SERVICE_NAME][0]!)}`, query: { - transactionType: alert['transaction.type']!, - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + transactionType: String(fields[TRANSACTION_TYPE][0]!), + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), @@ -193,7 +197,7 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { ), }); - apmRuleRegistry.registerType({ + observabilityRuleTypeRegistry.register({ id: AlertType.TransactionDurationAnomaly, description: i18n.translate( 'xpack.apm.alertTypes.transactionDurationAnomaly.description', @@ -201,24 +205,24 @@ export function registerApmAlerts(apmRuleRegistry: ApmRuleRegistry) { defaultMessage: 'Alert when the latency of a service is abnormal.', } ), - format: ({ alert }) => ({ + format: ({ fields }) => ({ reason: i18n.translate( 'xpack.apm.alertTypes.transactionDurationAnomaly.reason', { defaultMessage: `{severityLevel} anomaly detected for {serviceName} (score was {measured})`, values: { - serviceName: alert['service.name'], - severityLevel: alert['kibana.rac.alert.severity.level'], - measured: alert['kibana.observability.evaluation.value'], + serviceName: String(fields[SERVICE_NAME][0]), + severityLevel: String(fields[ALERT_SEVERITY_LEVEL]), + measured: Number(fields[ALERT_EVALUATION_VALUE]), }, } ), link: format({ - pathname: `/app/apm/services/${alert['service.name']!}`, + pathname: `/app/apm/services/${String(fields[SERVICE_NAME][0])}`, query: { - transactionType: alert['transaction.type']!, - ...(alert['service.environment'] - ? { environment: alert['service.environment'] } + transactionType: String(fields[TRANSACTION_TYPE][0]), + ...(fields[SERVICE_ENVIRONMENT]?.[0] + ? { environment: String(fields[SERVICE_ENVIRONMENT][0]) } : { environment: ENVIRONMENT_ALL.value }), }, }), diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx index 19a567a3866bd..16ac1a35666d2 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx @@ -19,6 +19,7 @@ import { import { EuiTitle } from '@elastic/eui'; import d3 from 'd3'; import React from 'react'; +import { RULE_ID } from '@kbn/rule-data-utils/target/technical_field_names'; import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { asRelativeDateTimeRange } from '../../../../../common/utils/formatters'; @@ -115,7 +116,7 @@ export function ErrorDistribution({ distribution, title }: Props) { /> {getAlertAnnotations({ alerts: alerts?.filter( - (alert) => alert['rule.id'] === AlertType.ErrorCount + (alert) => alert[RULE_ID]?.[0] === AlertType.ErrorCount ), theme, })} diff --git a/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap b/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap index b1bcf561bed84..f13cce3fd9b40 100644 --- a/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/app/Home/__snapshots__/Home.test.tsx.snap @@ -4,10 +4,6 @@ exports[`Home component should render services 1`] = ` alert['kibana.rac.alert.id']! + const collapsedAlerts = uniqBy(alerts, (alert) => alert[ALERT_ID]![0]!).map( + (alert) => { + return parseTechnicalFields(alert); + } ); return ( {collapsedAlerts.map((alert) => { - const ruleType = apmRuleRegistry.getTypeByRuleId(alert['rule.id']!); + const formatter = observabilityRuleTypeRegistry.getFormatter( + alert[RULE_ID]! + ); const formatted = { link: undefined, - reason: alert['rule.name'], - ...(ruleType?.format?.({ - alert, + reason: alert[RULE_NAME], + ...(formatter?.({ + fields: alert, formatters: { asDuration, asPercent }, }) ?? {}), }; @@ -55,7 +65,7 @@ export function AlertDetails({ alerts }: AlertDetailProps) { : undefined; return ( - + {parsedLink ? ( @@ -79,7 +89,7 @@ export function AlertDetails({ alerts }: AlertDetailProps) { diff --git a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx index 2c086dbb17222..e906707730baa 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/helper/get_alert_annotations.tsx @@ -9,6 +9,13 @@ import { ValuesType } from 'utility-types'; import { RectAnnotation } from '@elastic/charts'; import { EuiTheme } from 'src/plugins/kibana_react/common'; import { rgba } from 'polished'; +import { + ALERT_DURATION, + RULE_ID, + ALERT_START, + ALERT_UUID, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { parseTechnicalFields } from '../../../../../../rule_registry/common'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; type Alert = ValuesType< @@ -30,10 +37,11 @@ export function getAlertAnnotations({ theme: EuiTheme; }) { return alerts?.flatMap((alert) => { - const uuid = alert['kibana.rac.alert.uuid']!; - const start = new Date(alert['kibana.rac.alert.start']!).getTime(); - const end = start + alert['kibana.rac.alert.duration.us']! / 1000; - const color = getAlertColor({ ruleId: alert['rule.id']!, theme }); + const parsed = parseTechnicalFields(alert); + const uuid = parsed[ALERT_UUID]!; + const start = new Date(parsed[ALERT_START]!).getTime(); + const end = start + parsed[ALERT_DURATION]! / 1000; + const color = getAlertColor({ ruleId: parsed[RULE_ID]!, theme }); return [ - alert['rule.id'] === AlertType.TransactionDuration || - alert['rule.id'] === AlertType.TransactionDurationAnomaly + alert[RULE_ID]?.[0] === AlertType.TransactionDuration || + alert[RULE_ID]?.[0] === AlertType.TransactionDurationAnomaly )} /> diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx index 9aefa55aaaa36..7eceaf5ca8e5d 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx @@ -9,6 +9,7 @@ import { EuiPanel, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { useParams } from 'react-router-dom'; +import { RULE_ID } from '../../../../../../rule_registry/common/technical_rule_data_field_names'; import { AlertType } from '../../../../../common/alert_types'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { asPercent } from '../../../../../common/utils/formatters'; @@ -152,7 +153,7 @@ export function TransactionErrorRateChart({ yDomain={{ min: 0, max: 1 }} customTheme={comparisonChartThem} alerts={alerts.filter( - (alert) => alert['rule.id'] === AlertType.TransactionErrorRate + (alert) => alert[RULE_ID]?.[0] === AlertType.TransactionErrorRate )} /> diff --git a/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx index 175471e7ae817..ec42a11783273 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx @@ -7,8 +7,9 @@ import { AppMountParameters, CoreStart } from 'kibana/public'; import { createContext } from 'react'; +import type { ObservabilityRuleTypeRegistry } from '../../../../observability/public'; import { ConfigSchema } from '../..'; -import { ApmPluginSetupDeps, ApmRuleRegistry } from '../../plugin'; +import { ApmPluginSetupDeps } from '../../plugin'; import { MapsStartApi } from '../../../../maps/public'; export interface ApmPluginContextValue { @@ -16,7 +17,7 @@ export interface ApmPluginContextValue { config: ConfigSchema; core: CoreStart; plugins: ApmPluginSetupDeps & { maps?: MapsStartApi }; - apmRuleRegistry: ApmRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; } export const ApmPluginContext = createContext({} as ApmPluginContextValue); diff --git a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx index 07da5ea7f6c1f..a16f81826636b 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx @@ -7,12 +7,12 @@ import React, { ReactNode } from 'react'; import { Observable, of } from 'rxjs'; +import { createObservabilityRuleTypeRegistryMock } from '../../../../observability/public'; import { ApmPluginContext, ApmPluginContextValue } from './apm_plugin_context'; import { ConfigSchema } from '../..'; import { UI_SETTINGS } from '../../../../../../src/plugins/data/common'; import { createCallApmApi } from '../../services/rest/createCallApmApi'; import { MlUrlGenerator } from '../../../../ml/public'; -import { ApmRuleRegistry } from '../../plugin'; const uiSettings: Record = { [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: [ @@ -77,11 +77,6 @@ const mockCore = { }, }; -const mockApmRuleRegistry = ({ - getTypeByRuleId: () => undefined, - registerType: () => undefined, -} as unknown) as ApmRuleRegistry; - const mockConfig: ConfigSchema = { serviceMapEnabled: true, ui: { @@ -116,7 +111,7 @@ export const mockApmPluginContextValue = { config: mockConfig, core: mockCore, plugins: mockPlugin, - apmRuleRegistry: mockApmRuleRegistry, + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), }; export function MockApmPluginContextWrapper({ diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index f7bbe647d8e37..b493363d98f7a 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -34,19 +34,15 @@ import type { HasDataParams, ObservabilityPublicSetup, } from '../../observability/public'; -import { FormatterRuleRegistry } from '../../observability/public'; import type { TriggersAndActionsUIPublicPluginSetup, TriggersAndActionsUIPublicPluginStart, } from '../../triggers_actions_ui/public'; -import { apmRuleRegistrySettings } from '../common/rules/apm_rule_registry_settings'; -import type { APMRuleFieldMap } from '../common/rules/apm_rule_field_map'; import { registerApmAlerts } from './components/alerting/register_apm_alerts'; import { featureCatalogueEntry } from './featureCatalogueEntry'; import { toggleAppLinkInNav } from './toggleAppLinkInNav'; export type ApmPluginSetup = ReturnType; -export type ApmRuleRegistry = ApmPluginSetup['ruleRegistry']; export type ApmPluginStart = void; @@ -87,11 +83,6 @@ export class ApmPlugin implements Plugin { pluginSetupDeps.home.featureCatalogue.register(featureCatalogueEntry); } - const apmRuleRegistry = plugins.observability.ruleRegistry.create({ - ...apmRuleRegistrySettings, - fieldMap: {} as APMRuleFieldMap, - ctor: FormatterRuleRegistry, - }); const getApmDataHelper = async () => { const { fetchObservabilityOverviewPageData, @@ -127,6 +118,8 @@ export class ApmPlugin implements Plugin { return { fetchUxOverviewDate, hasRumData }; }; + const { observabilityRuleTypeRegistry } = plugins.observability; + plugins.observability.dashboard.register({ appName: 'ux', hasData: async (params?: HasDataParams) => { @@ -187,12 +180,12 @@ export class ApmPlugin implements Plugin { appMountParameters, config, pluginsStart: pluginsStart as ApmPluginStartDeps, - apmRuleRegistry, + observabilityRuleTypeRegistry, }); }, }); - registerApmAlerts(apmRuleRegistry); + registerApmAlerts(observabilityRuleTypeRegistry); core.application.register({ id: 'ux', @@ -231,14 +224,12 @@ export class ApmPlugin implements Plugin { appMountParameters, config, corePlugins: corePlugins as ApmPluginStartDeps, - apmRuleRegistry, + observabilityRuleTypeRegistry, }); }, }); - return { - ruleRegistry: apmRuleRegistry, - }; + return {}; } public start(core: CoreStart, plugins: ApmPluginStartDeps) { toggleAppLinkInNav(core, this.initializerContext.config.get()); diff --git a/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts b/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts index 9a362efa90ac0..022fad6fa7840 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_apm_alerts.ts @@ -7,17 +7,19 @@ import { Observable } from 'rxjs'; import { Logger } from 'kibana/server'; +import { PluginSetupContract as AlertingPluginSetupContract } from '../../../../alerting/server'; +import { RuleDataClient } from '../../../../rule_registry/server'; import { registerTransactionDurationAlertType } from './register_transaction_duration_alert_type'; import { registerTransactionDurationAnomalyAlertType } from './register_transaction_duration_anomaly_alert_type'; import { registerErrorCountAlertType } from './register_error_count_alert_type'; import { APMConfig } from '../..'; import { MlPluginSetup } from '../../../../ml/server'; import { registerTransactionErrorRateAlertType } from './register_transaction_error_rate_alert_type'; -import { APMRuleRegistry } from '../../plugin'; export interface RegisterRuleDependencies { - registry: APMRuleRegistry; + ruleDataClient: RuleDataClient; ml?: MlPluginSetup; + alerting: AlertingPluginSetupContract; config$: Observable; logger: Logger; } diff --git a/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts index 15ec5d0ef0bd0..885b22ae343d8 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts @@ -7,6 +7,11 @@ import { schema } from '@kbn/config-schema'; import { take } from 'rxjs/operators'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { ENVIRONMENT_NOT_DEFINED } from '../../../common/environment_filter_values'; import { asMutableArray } from '../../../common/utils/as_mutable_array'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; @@ -21,7 +26,6 @@ import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; import { RegisterRuleDependencies } from './register_apm_alerts'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; const paramsSchema = schema.object({ windowSize: schema.number(), @@ -34,11 +38,18 @@ const paramsSchema = schema.object({ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.ErrorCount]; export function registerErrorCountAlertType({ - registry, + alerting, + logger, + ruleDataClient, config$, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + ruleDataClient, + logger, + }); + + alerting.registerType( + createLifecycleRuleType({ id: AlertType.ErrorCount, name: alertTypeConfig.name, actionGroups: alertTypeConfig.actionGroups, @@ -146,9 +157,8 @@ export function registerErrorCountAlertType({ ? { [SERVICE_ENVIRONMENT]: environment } : {}), [PROCESSOR_EVENT]: ProcessorEvent.error, - 'kibana.observability.evaluation.value': errorCount, - 'kibana.observability.evaluation.threshold': - alertParams.threshold, + [ALERT_EVALUATION_VALUE]: errorCount, + [ALERT_EVALUATION_THRESHOLD]: alertParams.threshold, }, }) .scheduleActions(alertTypeConfig.defaultActionGroupId, { diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts index 4918a6cc892b7..f77cc3ee930b1 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts @@ -8,6 +8,11 @@ import { schema } from '@kbn/config-schema'; import { take } from 'rxjs/operators'; import { QueryContainer } from '@elastic/elasticsearch/api/types'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { parseEnvironmentUrlParam } from '../../../common/environment_filter_values'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { @@ -24,7 +29,6 @@ import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; import { RegisterRuleDependencies } from './register_apm_alerts'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; const paramsSchema = schema.object({ serviceName: schema.string(), @@ -43,130 +47,142 @@ const paramsSchema = schema.object({ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.TransactionDuration]; export function registerTransactionDurationAlertType({ - registry, + alerting, + ruleDataClient, config$, + logger, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ - id: AlertType.TransactionDuration, - name: alertTypeConfig.name, - actionGroups: alertTypeConfig.actionGroups, - defaultActionGroupId: alertTypeConfig.defaultActionGroupId, - validate: { - params: paramsSchema, - }, - actionVariables: { - context: [ - apmActionVariables.serviceName, - apmActionVariables.transactionType, - apmActionVariables.environment, - apmActionVariables.threshold, - apmActionVariables.triggerValue, - apmActionVariables.interval, - ], - }, - producer: 'apm', - minimumLicenseRequired: 'basic', - executor: async ({ services, params }) => { - const config = await config$.pipe(take(1)).toPromise(); - const alertParams = params; - const indices = await getApmIndices({ - config, - savedObjectsClient: services.savedObjectsClient, - }); - - const searchParams = { - index: indices['apm_oss.transactionIndices'], - body: { - size: 0, - query: { - bool: { - filter: [ - { - range: { - '@timestamp': { - gte: `now-${alertParams.windowSize}${alertParams.windowUnit}`, - }, + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + ruleDataClient, + logger, + }); + + const type = createLifecycleRuleType({ + id: AlertType.TransactionDuration, + name: alertTypeConfig.name, + actionGroups: alertTypeConfig.actionGroups, + defaultActionGroupId: alertTypeConfig.defaultActionGroupId, + validate: { + params: paramsSchema, + }, + actionVariables: { + context: [ + apmActionVariables.serviceName, + apmActionVariables.transactionType, + apmActionVariables.environment, + apmActionVariables.threshold, + apmActionVariables.triggerValue, + apmActionVariables.interval, + ], + }, + producer: 'apm', + minimumLicenseRequired: 'basic', + executor: async ({ services, params }) => { + const config = await config$.pipe(take(1)).toPromise(); + const alertParams = params; + const indices = await getApmIndices({ + config, + savedObjectsClient: services.savedObjectsClient, + }); + + const searchParams = { + index: indices['apm_oss.transactionIndices'], + body: { + size: 0, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: `now-${alertParams.windowSize}${alertParams.windowUnit}`, }, }, - { term: { [PROCESSOR_EVENT]: ProcessorEvent.transaction } }, - { term: { [SERVICE_NAME]: alertParams.serviceName } }, - { term: { [TRANSACTION_TYPE]: alertParams.transactionType } }, - ...environmentQuery(alertParams.environment), - ] as QueryContainer[], - }, + }, + { + term: { [PROCESSOR_EVENT]: ProcessorEvent.transaction }, + }, + { term: { [SERVICE_NAME]: alertParams.serviceName } }, + { + term: { + [TRANSACTION_TYPE]: alertParams.transactionType, + }, + }, + ...environmentQuery(alertParams.environment), + ] as QueryContainer[], }, - aggs: { - latency: - alertParams.aggregationType === 'avg' - ? { avg: { field: TRANSACTION_DURATION } } - : { - percentiles: { - field: TRANSACTION_DURATION, - percents: [ - alertParams.aggregationType === '95th' ? 95 : 99, - ], - }, + }, + aggs: { + latency: + alertParams.aggregationType === 'avg' + ? { avg: { field: TRANSACTION_DURATION } } + : { + percentiles: { + field: TRANSACTION_DURATION, + percents: [ + alertParams.aggregationType === '95th' ? 95 : 99, + ], }, - }, + }, }, - }; - - const response = await alertingEsClient({ - scopedClusterClient: services.scopedClusterClient, - params: searchParams, - }); - - if (!response.aggregations) { - return {}; - } - - const { latency } = response.aggregations; - - const transactionDuration = - 'values' in latency - ? Object.values(latency.values)[0] - : latency?.value; - - const threshold = alertParams.threshold * 1000; - - if (transactionDuration && transactionDuration > threshold) { - const durationFormatter = getDurationFormatter(transactionDuration); - const transactionDurationFormatted = durationFormatter( - transactionDuration - ).formatted; - - const environmentParsed = parseEnvironmentUrlParam( - alertParams.environment - ); - - services - .alertWithLifecycle({ - id: `${AlertType.TransactionDuration}_${environmentParsed.text}`, - fields: { - [SERVICE_NAME]: alertParams.serviceName, - ...(environmentParsed.esFieldValue - ? { [SERVICE_ENVIRONMENT]: environmentParsed.esFieldValue } - : {}), - [TRANSACTION_TYPE]: alertParams.transactionType, - [PROCESSOR_EVENT]: ProcessorEvent.transaction, - 'kibana.observability.evaluation.value': transactionDuration, - 'kibana.observability.evaluation.threshold': - alertParams.threshold * 1000, - }, - }) - .scheduleActions(alertTypeConfig.defaultActionGroupId, { - transactionType: alertParams.transactionType, - serviceName: alertParams.serviceName, - environment: environmentParsed.text, - threshold, - triggerValue: transactionDurationFormatted, - interval: `${alertParams.windowSize}${alertParams.windowUnit}`, - }); - } + }, + }; + const response = await alertingEsClient({ + scopedClusterClient: services.scopedClusterClient, + params: searchParams, + }); + + if (!response.aggregations) { return {}; - }, - }) - ); + } + + const { latency } = response.aggregations; + + const transactionDuration = + 'values' in latency ? Object.values(latency.values)[0] : latency?.value; + + const threshold = alertParams.threshold * 1000; + + if (transactionDuration && transactionDuration > threshold) { + const durationFormatter = getDurationFormatter(transactionDuration); + const transactionDurationFormatted = durationFormatter( + transactionDuration + ).formatted; + + const environmentParsed = parseEnvironmentUrlParam( + alertParams.environment + ); + + services + .alertWithLifecycle({ + id: `${AlertType.TransactionDuration}_${environmentParsed.text}`, + fields: { + [SERVICE_NAME]: alertParams.serviceName, + ...(environmentParsed.esFieldValue + ? { + [SERVICE_ENVIRONMENT]: environmentParsed.esFieldValue, + } + : {}), + [TRANSACTION_TYPE]: alertParams.transactionType, + [PROCESSOR_EVENT]: ProcessorEvent.transaction, + [ALERT_EVALUATION_VALUE]: transactionDuration, + [ALERT_EVALUATION_THRESHOLD]: alertParams.threshold * 1000, + }, + }) + .scheduleActions(alertTypeConfig.defaultActionGroupId, { + transactionType: alertParams.transactionType, + serviceName: alertParams.serviceName, + environment: environmentParsed.text, + threshold, + triggerValue: transactionDurationFormatted, + interval: `${alertParams.windowSize}${alertParams.windowUnit}`, + }); + } + + return {}; + }, + }); + + alerting.registerType(type); } diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts index 67ff7cdb8e4e0..399fb9a216ef5 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_anomaly_alert_type.ts @@ -9,6 +9,13 @@ import { schema } from '@kbn/config-schema'; import { compact } from 'lodash'; import { ESSearchResponse } from 'typings/elasticsearch'; import { QueryContainer } from '@elastic/elasticsearch/api/types'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { ProcessorEvent } from '../../../common/processor_event'; import { getSeverity } from '../../../common/anomaly_detection'; import { @@ -29,7 +36,6 @@ import { getMLJobs } from '../service_map/get_service_anomalies'; import { apmActionVariables } from './action_variables'; import { RegisterRuleDependencies } from './register_apm_alerts'; import { parseEnvironmentUrlParam } from '../../../common/environment_filter_values'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; const paramsSchema = schema.object({ serviceName: schema.maybe(schema.string()), @@ -49,11 +55,18 @@ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.TransactionDurationAnomaly]; export function registerTransactionDurationAnomalyAlertType({ - registry, + logger, + ruleDataClient, + alerting, ml, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + logger, + ruleDataClient, + }); + + alerting.registerType( + createLifecycleRuleType({ id: AlertType.TransactionDurationAnomaly, name: alertTypeConfig.name, actionGroups: alertTypeConfig.actionGroups, @@ -190,7 +203,7 @@ export function registerTransactionDurationAnomalyAlertType({ const job = mlJobs.find((j) => j.job_id === latest.job_id); if (!job) { - services.logger.warn( + logger.warn( `Could not find matching job for job id ${latest.job_id}` ); return undefined; @@ -231,10 +244,10 @@ export function registerTransactionDurationAnomalyAlertType({ : {}), [TRANSACTION_TYPE]: transactionType, [PROCESSOR_EVENT]: ProcessorEvent.transaction, - 'kibana.rac.alert.severity.level': severityLevel, - 'kibana.rac.alert.severity.value': score, - 'kibana.observability.evaluation.value': score, - 'kibana.observability.evaluation.threshold': threshold, + [ALERT_SEVERITY_LEVEL]: severityLevel, + [ALERT_SEVERITY_VALUE]: score, + [ALERT_EVALUATION_VALUE]: score, + [ALERT_EVALUATION_THRESHOLD]: threshold, }, }) .scheduleActions(alertTypeConfig.defaultActionGroupId, { diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts index bead17e308f06..4d6a0685fd379 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts @@ -7,6 +7,11 @@ import { schema } from '@kbn/config-schema'; import { take } from 'rxjs/operators'; +import { + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { EVENT_OUTCOME, @@ -22,7 +27,6 @@ import { environmentQuery } from '../../../server/utils/queries'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; import { alertingEsClient } from './alerting_es_client'; -import { createAPMLifecycleRuleType } from './create_apm_lifecycle_rule_type'; import { RegisterRuleDependencies } from './register_apm_alerts'; const paramsSchema = schema.object({ @@ -37,11 +41,18 @@ const paramsSchema = schema.object({ const alertTypeConfig = ALERT_TYPES_CONFIG[AlertType.TransactionErrorRate]; export function registerTransactionErrorRateAlertType({ - registry, + alerting, + ruleDataClient, + logger, config$, }: RegisterRuleDependencies) { - registry.registerType( - createAPMLifecycleRuleType({ + const createLifecycleRuleType = createLifecycleRuleTypeFactory({ + ruleDataClient, + logger, + }); + + alerting.registerType( + createLifecycleRuleType({ id: AlertType.TransactionErrorRate, name: alertTypeConfig.name, actionGroups: alertTypeConfig.actionGroups, @@ -183,9 +194,8 @@ export function registerTransactionErrorRateAlertType({ ...(environment ? { [SERVICE_ENVIRONMENT]: environment } : {}), [TRANSACTION_TYPE]: transactionType, [PROCESSOR_EVENT]: ProcessorEvent.transaction, - 'kibana.observability.evaluation.value': errorRate, - 'kibana.observability.evaluation.threshold': - alertParams.threshold, + [ALERT_EVALUATION_VALUE]: errorRate, + [ALERT_EVALUATION_THRESHOLD]: alertParams.threshold, }, }) .scheduleActions(alertTypeConfig.defaultActionGroupId, { diff --git a/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts b/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts index 37b3e282d0a59..ce1466bff01a9 100644 --- a/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts +++ b/x-pack/plugins/apm/server/lib/alerts/test_utils/index.ts @@ -8,8 +8,9 @@ import { Logger } from 'kibana/server'; import { of } from 'rxjs'; import { elasticsearchServiceMock } from 'src/core/server/mocks'; +import type { RuleDataClient } from '../../../../../rule_registry/server'; +import { PluginSetupContract as AlertingPluginSetupContract } from '../../../../../alerting/server'; import { APMConfig } from '../../..'; -import { APMRuleRegistry } from '../../../plugin'; export const createRuleTypeMocks = () => { let alertExecutor: (...args: any[]) => Promise; @@ -27,19 +28,16 @@ export const createRuleTypeMocks = () => { error: jest.fn(), } as unknown) as Logger; - const registry = { + const alerting = { registerType: ({ executor }) => { alertExecutor = executor; }, - } as APMRuleRegistry; + } as AlertingPluginSetupContract; const scheduleActions = jest.fn(); const services = { scopedClusterClient: elasticsearchServiceMock.createScopedClusterClient(), - scopedRuleRegistryClient: { - bulkIndex: jest.fn(), - }, alertInstanceFactory: jest.fn(() => ({ scheduleActions })), alertWithLifecycle: jest.fn(), logger: loggerMock, @@ -47,9 +45,21 @@ export const createRuleTypeMocks = () => { return { dependencies: { - registry, + alerting, config$: mockedConfig$, logger: loggerMock, + ruleDataClient: ({ + getReader: () => { + return { + search: jest.fn(), + }; + }, + getWriter: () => { + return { + bulk: jest.fn(), + }; + }, + } as unknown) as RuleDataClient, }, services, scheduleActions, diff --git a/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts b/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts index 6356731cc48d1..f58452ce4d916 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_alerts.ts @@ -5,33 +5,30 @@ * 2.0. */ +import { ALERT_UUID } from '@kbn/rule-data-utils/target/technical_field_names'; +import { RuleDataClient } from '../../../../rule_registry/server'; import { SERVICE_NAME, TRANSACTION_TYPE, } from '../../../common/elasticsearch_fieldnames'; -import type { PromiseReturnType } from '../../../../observability/typings/common'; -import type { APMRuleRegistry } from '../../plugin'; import { environmentQuery, rangeQuery } from '../../utils/queries'; export async function getServiceAlerts({ - apmRuleRegistryClient, + ruleDataClient, start, end, serviceName, environment, transactionType, }: { - apmRuleRegistryClient: Exclude< - PromiseReturnType, - undefined - >; + ruleDataClient: RuleDataClient; start: number; end: number; serviceName: string; environment?: string; transactionType: string; }) { - const response = await apmRuleRegistryClient.search({ + const response = await ruleDataClient.getReader().search({ body: { query: { bool: { @@ -68,13 +65,14 @@ export async function getServiceAlerts({ size: 100, fields: ['*'], collapse: { - field: 'kibana.rac.alert.uuid', + field: ALERT_UUID, }, sort: { '@timestamp': 'desc', }, }, + allow_no_indices: true, }); - return response.events; + return response.hits.hits.map((hit) => hit.fields); } diff --git a/x-pack/plugins/apm/server/plugin.ts b/x-pack/plugins/apm/server/plugin.ts index e12d089855834..44334889128c4 100644 --- a/x-pack/plugins/apm/server/plugin.ts +++ b/x-pack/plugins/apm/server/plugin.ts @@ -16,7 +16,10 @@ import { Plugin, PluginInitializerContext, } from 'src/core/server'; -import { mapValues } from 'lodash'; +import { mapValues, once } from 'lodash'; +import { TECHNICAL_COMPONENT_TEMPLATE_NAME } from '../../rule_registry/common/assets'; +import { mappingFromFieldMap } from '../../rule_registry/common/mapping_from_field_map'; +import { RuleDataClient } from '../../rule_registry/server'; import { APMConfig, APMXPackConfig } from '.'; import { mergeConfigs } from './index'; import { UI_SETTINGS } from '../../../../src/plugins/data/common'; @@ -42,10 +45,12 @@ import { } from './types'; import { registerRoutes } from './routes/register_routes'; import { getGlobalApmServerRouteRepository } from './routes/get_global_apm_server_route_repository'; -import { apmRuleRegistrySettings } from '../common/rules/apm_rule_registry_settings'; -import { apmRuleFieldMap } from '../common/rules/apm_rule_field_map'; - -export type APMRuleRegistry = ReturnType['ruleRegistry']; +import { + PROCESSOR_EVENT, + SERVICE_ENVIRONMENT, + SERVICE_NAME, + TRANSACTION_TYPE, +} from '../common/elasticsearch_fieldnames'; export class APMPlugin implements @@ -124,20 +129,81 @@ export class APMPlugin registerFeaturesUsage({ licensingPlugin: plugins.licensing }); - const apmRuleRegistry = plugins.observability.ruleRegistry.create({ - ...apmRuleRegistrySettings, - fieldMap: apmRuleFieldMap, + const getCoreStart = () => + core.getStartServices().then(([coreStart]) => coreStart); + + const ready = once(async () => { + const componentTemplateName = plugins.ruleRegistry.getFullAssetName( + 'apm-mappings' + ); + + if (!plugins.ruleRegistry.isWriteEnabled()) { + return; + } + + await plugins.ruleRegistry.createOrUpdateComponentTemplate({ + name: componentTemplateName, + body: { + template: { + settings: { + number_of_shards: 1, + }, + mappings: mappingFromFieldMap({ + [SERVICE_NAME]: { + type: 'keyword', + }, + [SERVICE_ENVIRONMENT]: { + type: 'keyword', + }, + [TRANSACTION_TYPE]: { + type: 'keyword', + }, + [PROCESSOR_EVENT]: { + type: 'keyword', + }, + }), + }, + }, + }); + + await plugins.ruleRegistry.createOrUpdateIndexTemplate({ + name: plugins.ruleRegistry.getFullAssetName('apm-index-template'), + body: { + index_patterns: [ + plugins.ruleRegistry.getFullAssetName('observability-apm*'), + ], + composed_of: [ + plugins.ruleRegistry.getFullAssetName( + TECHNICAL_COMPONENT_TEMPLATE_NAME + ), + componentTemplateName, + ], + }, + }); + }); + + ready().catch((err) => { + this.logger!.error(err); + }); + + const ruleDataClient = new RuleDataClient({ + alias: plugins.ruleRegistry.getFullAssetName('observability-apm'), + getClusterClient: async () => { + const coreStart = await getCoreStart(); + return coreStart.elasticsearch.client.asInternalUser; + }, + ready, }); registerRoutes({ core: { setup: core, - start: () => core.getStartServices().then(([coreStart]) => coreStart), + start: getCoreStart, }, logger: this.logger, config: currentConfig, repository: getGlobalApmServerRouteRepository(), - apmRuleRegistry, + ruleDataClient, plugins: mapValues(plugins, (value, key) => { return { setup: value, @@ -157,12 +223,16 @@ export class APMPlugin savedObjectsClient: await getInternalSavedObjectsClient(core), config: await mergedConfig$.pipe(take(1)).toPromise(), }); - registerApmAlerts({ - registry: apmRuleRegistry, - ml: plugins.ml, - config$: mergedConfig$, - logger: this.logger!.get('rule'), - }); + + if (plugins.alerting) { + registerApmAlerts({ + ruleDataClient, + alerting: plugins.alerting, + ml: plugins.ml, + config$: mergedConfig$, + logger: this.logger!.get('rule'), + }); + } return { config$: mergedConfig$, @@ -193,7 +263,6 @@ export class APMPlugin }, }); }, - ruleRegistry: apmRuleRegistry, }; } diff --git a/x-pack/plugins/apm/server/routes/register_routes/index.ts b/x-pack/plugins/apm/server/routes/register_routes/index.ts index f792e078c528a..c9df12fd58208 100644 --- a/x-pack/plugins/apm/server/routes/register_routes/index.ts +++ b/x-pack/plugins/apm/server/routes/register_routes/index.ts @@ -39,14 +39,14 @@ export function registerRoutes({ plugins, logger, config, - apmRuleRegistry, + ruleDataClient, }: { core: APMRouteHandlerResources['core']; plugins: APMRouteHandlerResources['plugins']; logger: APMRouteHandlerResources['logger']; repository: ServerRouteRepository; config: APMRouteHandlerResources['config']; - apmRuleRegistry: APMRouteHandlerResources['apmRuleRegistry']; + ruleDataClient: APMRouteHandlerResources['ruleDataClient']; }) { const routes = repository.getRoutes(); @@ -99,7 +99,7 @@ export function registerRoutes({ }, validatedParams ), - apmRuleRegistry, + ruleDataClient, })) as any; if (Array.isArray(data)) { diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 54e59f2be7ae3..4384d2be78ca0 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -737,30 +737,15 @@ const serviceAlertsRoute = createApmServerRoute({ options: { tags: ['access:apm'], }, - handler: async ({ context, params, apmRuleRegistry }) => { - const alertsClient = context.alerting.getAlertsClient(); - + handler: async ({ context, params, ruleDataClient }) => { const { query: { start, end, environment, transactionType }, path: { serviceName }, } = params; - const apmRuleRegistryClient = await apmRuleRegistry.createScopedRuleRegistryClient( - { - alertsClient, - context, - } - ); - - if (!apmRuleRegistryClient) { - throw Boom.failedDependency( - 'xpack.ruleRegistry.unsafe.write.enabled is set to false' - ); - } - return { alerts: await getServiceAlerts({ - apmRuleRegistryClient, + ruleDataClient, start, end, serviceName, diff --git a/x-pack/plugins/apm/server/routes/typings.ts b/x-pack/plugins/apm/server/routes/typings.ts index 602e1f3e0edb9..13bd631085aac 100644 --- a/x-pack/plugins/apm/server/routes/typings.ts +++ b/x-pack/plugins/apm/server/routes/typings.ts @@ -12,11 +12,11 @@ import { KibanaRequest, CoreStart, } from 'src/core/server'; +import { RuleDataClient } from '../../../rule_registry/server'; import { AlertingApiRequestHandlerContext } from '../../../alerting/server'; import { LicensingApiRequestHandlerContext } from '../../../licensing/server'; import { APMConfig } from '..'; import { APMPluginDependencies } from '../types'; -import { APMRuleRegistry } from '../plugin'; export interface ApmPluginRequestHandlerContext extends RequestHandlerContext { licensing: LicensingApiRequestHandlerContext; @@ -62,5 +62,5 @@ export interface APMRouteHandlerResources { start: () => Promise[key]['start']>; }; }; - apmRuleRegistry: APMRuleRegistry; + ruleDataClient: RuleDataClient; } diff --git a/x-pack/plugins/apm/server/types.ts b/x-pack/plugins/apm/server/types.ts index dbc220f9f6b15..a5ba4f39b32b3 100644 --- a/x-pack/plugins/apm/server/types.ts +++ b/x-pack/plugins/apm/server/types.ts @@ -7,6 +7,10 @@ import { ValuesType } from 'utility-types'; import { Observable } from 'rxjs'; import { CoreSetup, CoreStart, KibanaRequest } from 'kibana/server'; +import { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '../../rule_registry/server'; import { PluginSetup as DataPluginSetup, PluginStart as DataPluginStart, @@ -115,6 +119,10 @@ interface DependencyMap { setup: DataPluginSetup; start: DataPluginStart; }; + ruleRegistry: { + setup: RuleRegistryPluginSetupContract; + start: RuleRegistryPluginStartContract; + }; } const requiredDependencies = [ @@ -126,6 +134,7 @@ const requiredDependencies = [ 'embeddable', 'infra', 'observability', + 'ruleRegistry', ] as const; const optionalDependencies = [ diff --git a/x-pack/plugins/observability/common/rules/observability_rule_field_map.ts b/x-pack/plugins/observability/common/rules/observability_rule_field_map.ts deleted file mode 100644 index 370f5d4ef79f2..0000000000000 --- a/x-pack/plugins/observability/common/rules/observability_rule_field_map.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ecsFieldMap, pickWithPatterns } from '../../../rule_registry/common'; - -export const observabilityRuleFieldMap = { - ...pickWithPatterns(ecsFieldMap, 'host.name', 'service.name'), - 'kibana.observability.evaluation.value': { - type: 'scaled_float' as const, - scaling_factor: 1000, - }, - 'kibana.observability.evaluation.threshold': { - type: 'scaled_float' as const, - scaling_factor: 1000, - }, -}; - -export type ObservabilityRuleFieldMap = typeof observabilityRuleFieldMap; diff --git a/x-pack/plugins/observability/common/utils/formatters/duration.ts b/x-pack/plugins/observability/common/utils/formatters/duration.ts index 6bbeb44ef06af..481005332cc30 100644 --- a/x-pack/plugins/observability/common/utils/formatters/duration.ts +++ b/x-pack/plugins/observability/common/utils/formatters/duration.ts @@ -201,6 +201,9 @@ export function asDuration( const formatter = getDurationFormatter(value); return formatter(value, { defaultValue, extended }).formatted; } + +export type AsDuration = typeof asDuration; + /** * Convert a microsecond value to decimal milliseconds. Normally we use * `asDuration`, but this is used in places like tables where we always want diff --git a/x-pack/plugins/observability/common/utils/formatters/formatters.ts b/x-pack/plugins/observability/common/utils/formatters/formatters.ts index 3c307f64fa0a9..9bdccc7e9edfe 100644 --- a/x-pack/plugins/observability/common/utils/formatters/formatters.ts +++ b/x-pack/plugins/observability/common/utils/formatters/formatters.ts @@ -47,6 +47,8 @@ export function asPercent( return numeral(decimal).format('0.0%'); } +export type AsPercent = typeof asPercent; + export function asDecimalOrInteger(value: number) { // exact 0 or above 10 should not have decimal if (value === 0 || value >= 10) { diff --git a/x-pack/plugins/observability/kibana.json b/x-pack/plugins/observability/kibana.json index 0ee978c75d6c0..52d5493ae69a4 100644 --- a/x-pack/plugins/observability/kibana.json +++ b/x-pack/plugins/observability/kibana.json @@ -15,7 +15,8 @@ "requiredPlugins": [ "data", "alerting", - "ruleRegistry" + "ruleRegistry", + "triggersActionsUi" ], "ui": true, "server": true, diff --git a/x-pack/plugins/observability/public/application/application.test.tsx b/x-pack/plugins/observability/public/application/application.test.tsx index c0b51652a7d0e..9182a0e8196c8 100644 --- a/x-pack/plugins/observability/public/application/application.test.tsx +++ b/x-pack/plugins/observability/public/application/application.test.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { Observable } from 'rxjs'; import { AppMountParameters, CoreStart } from 'src/core/public'; import { ObservabilityPublicPluginsStart } from '../plugin'; -import { createObservabilityRuleRegistryMock } from '../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; import { renderApp } from './'; describe('renderApp', () => { @@ -58,7 +58,7 @@ describe('renderApp', () => { core, plugins, appMountParameters: params, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), }); unmount(); }).not.toThrowError(); diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index 8607b57b42666..460aa6c35bdb8 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -18,11 +18,12 @@ import { import { PluginContext } from '../context/plugin_context'; import { usePluginContext } from '../hooks/use_plugin_context'; import { useRouteParams } from '../hooks/use_route_params'; -import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../plugin'; +import { ObservabilityPublicPluginsStart } from '../plugin'; import { HasDataContextProvider } from '../context/has_data_context'; import { Breadcrumbs, routes } from '../routes'; import { Storage } from '../../../../../src/plugins/kibana_utils/public'; import { ConfigSchema } from '..'; +import { ObservabilityRuleTypeRegistry } from '../rules/create_observability_rule_type_registry'; function getTitleFromBreadCrumbs(breadcrumbs: Breadcrumbs) { return breadcrumbs.map(({ text }) => text).reverse(); @@ -72,12 +73,12 @@ export const renderApp = ({ core, plugins, appMountParameters, - observabilityRuleRegistry, + observabilityRuleTypeRegistry, }: { config: ConfigSchema; core: CoreStart; plugins: ObservabilityPublicPluginsStart; - observabilityRuleRegistry: ObservabilityRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; appMountParameters: AppMountParameters; }) => { const { element, history } = appMountParameters; @@ -94,7 +95,7 @@ export const renderApp = ({ ReactDOM.render( diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx index d41f131ef521b..e2669d87d6776 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -14,7 +14,8 @@ import * as hasDataHook from '../../../../hooks/use_has_data'; import * as pluginContext from '../../../../hooks/use_plugin_context'; import { HasDataContextValue } from '../../../../context/has_data_context'; import { AppMountParameters, CoreStart } from 'kibana/public'; -import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../../../../plugin'; +import { ObservabilityPublicPluginsStart } from '../../../../plugin'; +import { createObservabilityRuleTypeRegistryMock } from '../../../../rules/observability_rule_type_registry_mock'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -41,10 +42,7 @@ describe('APMSection', () => { } as unknown) as CoreStart, appMountParameters: {} as AppMountParameters, config: { unsafe: { alertingExperience: { enabled: true } } }, - observabilityRuleRegistry: ({ - registerType: jest.fn(), - getTypeByRuleId: jest.fn(), - } as unknown) as ObservabilityRuleRegistry, + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), plugins: ({ data: { query: { diff --git a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx index fa4d1a744e3ea..b4227cc122dde 100644 --- a/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/ux/index.test.tsx @@ -7,7 +7,6 @@ import { AppMountParameters, CoreStart } from 'kibana/public'; import React from 'react'; -import { createObservabilityRuleRegistryMock } from '../../../../rules/observability_rule_registry_mock'; import { HasDataContextValue } from '../../../../context/has_data_context'; import * as fetcherHook from '../../../../hooks/use_fetcher'; import * as hasDataHook from '../../../../hooks/use_has_data'; @@ -16,6 +15,7 @@ import { ObservabilityPublicPluginsStart } from '../../../../plugin'; import { render } from '../../../../utils/test_helper'; import { UXSection } from './'; import { response } from './mock_data/ux.mock'; +import { createObservabilityRuleTypeRegistryMock } from '../../../../rules/observability_rule_type_registry_mock'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -55,7 +55,7 @@ describe('UXSection', () => { }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), })); }); it('renders with core web vitals', () => { diff --git a/x-pack/plugins/observability/public/context/plugin_context.tsx b/x-pack/plugins/observability/public/context/plugin_context.tsx index eea259b36d5b9..9b0bacc4c1174 100644 --- a/x-pack/plugins/observability/public/context/plugin_context.tsx +++ b/x-pack/plugins/observability/public/context/plugin_context.tsx @@ -7,15 +7,16 @@ import { createContext } from 'react'; import { AppMountParameters, CoreStart } from 'kibana/public'; -import { ObservabilityPublicPluginsStart, ObservabilityRuleRegistry } from '../plugin'; +import { ObservabilityPublicPluginsStart } from '../plugin'; import { ConfigSchema } from '..'; +import { ObservabilityRuleTypeRegistry } from '../rules/create_observability_rule_type_registry'; export interface PluginContextValue { appMountParameters: AppMountParameters; config: ConfigSchema; core: CoreStart; plugins: ObservabilityPublicPluginsStart; - observabilityRuleRegistry: ObservabilityRuleRegistry; + observabilityRuleTypeRegistry: ObservabilityRuleTypeRegistry; } export const PluginContext = createContext({} as PluginContextValue); diff --git a/x-pack/plugins/observability/public/hooks/use_time_range.test.ts b/x-pack/plugins/observability/public/hooks/use_time_range.test.ts index 43fbc18062b75..8808d6390e365 100644 --- a/x-pack/plugins/observability/public/hooks/use_time_range.test.ts +++ b/x-pack/plugins/observability/public/hooks/use_time_range.test.ts @@ -10,7 +10,7 @@ import * as pluginContext from './use_plugin_context'; import { AppMountParameters, CoreStart } from 'kibana/public'; import { ObservabilityPublicPluginsStart } from '../plugin'; import * as kibanaUISettings from './use_kibana_ui_settings'; -import { createObservabilityRuleRegistryMock } from '../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; jest.mock('react-router-dom', () => ({ useLocation: () => ({ @@ -39,7 +39,7 @@ describe('useTimeRange', () => { }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), })); jest.spyOn(kibanaUISettings, 'useKibanaUISettings').mockImplementation(() => ({ from: '2020-10-08T05:00:00.000Z', @@ -81,7 +81,7 @@ describe('useTimeRange', () => { }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), })); }); it('returns ranges and absolute times from kibana default settings', () => { diff --git a/x-pack/plugins/observability/public/index.ts b/x-pack/plugins/observability/public/index.ts index a011d1fc2c414..8dd2f6a57eefe 100644 --- a/x-pack/plugins/observability/public/index.ts +++ b/x-pack/plugins/observability/public/index.ts @@ -62,4 +62,5 @@ export { getApmTraceUrl } from './utils/get_apm_trace_url'; export { createExploratoryViewUrl } from './components/shared/exploratory_view/configurations/utils'; export type { SeriesUrl } from './components/shared/exploratory_view/types'; -export { FormatterRuleRegistry } from './rules/formatter_rule_registry'; +export type { ObservabilityRuleTypeRegistry } from './rules/create_observability_rule_type_registry'; +export { createObservabilityRuleTypeRegistryMock } from './rules/observability_rule_type_registry_mock'; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx index 6940f6aaad692..0d47f3da89d36 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.stories.tsx @@ -13,7 +13,7 @@ import { AlertsPage } from '.'; import { HttpSetup } from '../../../../../../src/core/public'; import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public'; import { PluginContext, PluginContextValue } from '../../context/plugin_context'; -import { createObservabilityRuleRegistryMock } from '../../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../../rules/observability_rule_type_registry_mock'; import { createCallObservabilityApi } from '../../services/call_observability_api'; import type { ObservabilityAPIReturnType } from '../../services/call_observability_api/types'; import { apmAlertResponseExample, dynamicIndexPattern } from './example_data'; @@ -62,7 +62,7 @@ export default { core: { http: { basePath: { prepend: (_: string) => '' } }, }, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), } as unknown) as PluginContextValue } > diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx index 96d3c1fc9c390..90c75a70c0813 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/alerts_flyout.stories.tsx @@ -62,25 +62,26 @@ Example.args = { reason: 'Error count for opbeans-java was above the threshold', active: true, start: 1618235449493, - - 'rule.id': 'apm.error_rate', - 'service.environment': 'production', - 'service.name': 'opbeans-java', - 'rule.name': 'Error count threshold | opbeans-java (smith test)', - 'kibana.rac.alert.duration.us': 61787000, - 'kibana.observability.evaluation.threshold': 0, - 'kibana.rac.alert.status': 'open', - tags: ['apm', 'service.name:opbeans-java'], - 'kibana.rac.alert.uuid': 'c50fbc70-0d77-462d-ac0a-f2bd0b8512e4', - 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', - 'event.action': 'active', - '@timestamp': '2021-04-14T21:43:42.966Z', - 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', - 'processor.event': 'error', - 'kibana.rac.alert.start': '2021-04-14T21:42:41.179Z', - 'kibana.rac.producer': 'apm', - 'event.kind': 'state', - 'rule.category': 'Error count threshold', - 'kibana.observability.evaluation.value': 1, + fields: { + 'rule.id': 'apm.error_rate', + 'service.environment': ['production'], + 'service.name': ['opbeans-java'], + 'rule.name': 'Error count threshold | opbeans-java (smith test)', + 'kibana.rac.alert.duration.us': 61787000, + 'kibana.rac.alert.evaluation.threshold': 0, + 'kibana.rac.alert.status': 'open', + tags: ['apm', 'service.name:opbeans-java'], + 'kibana.rac.alert.uuid': 'c50fbc70-0d77-462d-ac0a-f2bd0b8512e4', + 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', + 'event.action': 'active', + '@timestamp': '2021-04-14T21:43:42.966Z', + 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', + 'processor.event': ['error'], + 'kibana.rac.alert.start': '2021-04-14T21:42:41.179Z', + 'kibana.rac.producer': 'apm', + 'event.kind': 'state', + 'rule.category': 'Error count threshold', + 'kibana.rac.alert.evaluation.value': 1, + }, }, } as Args; diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx index 09fe464aa8cb5..b4bf96bcc6905 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_flyout/index.tsx @@ -22,6 +22,14 @@ import { import { i18n } from '@kbn/i18n'; import moment from 'moment-timezone'; import React from 'react'; +import { + ALERT_DURATION, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_SEVERITY_LEVEL, + RULE_CATEGORY, + RULE_NAME, +} from '@kbn/rule-data-utils/target/technical_field_names'; import { TopAlert } from '../'; import { useUiSetting } from '../../../../../../../src/plugins/kibana_react/public'; import { asDuration } from '../../../../common/utils/formatters'; @@ -46,7 +54,7 @@ export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { title: i18n.translate('xpack.observability.alertsFlyout.severityLabel', { defaultMessage: 'Severity', }), - description: , + description: , }, { title: i18n.translate('xpack.observability.alertsFlyout.triggeredLabel', { @@ -60,25 +68,25 @@ export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { title: i18n.translate('xpack.observability.alertsFlyout.durationLabel', { defaultMessage: 'Duration', }), - description: asDuration(alert['kibana.rac.alert.duration.us'], { extended: true }), + description: asDuration(alert.fields[ALERT_DURATION], { extended: true }), }, { title: i18n.translate('xpack.observability.alertsFlyout.expectedValueLabel', { defaultMessage: 'Expected value', }), - description: alert['kibana.observability.evaluation.threshold'] ?? '-', + description: alert.fields[ALERT_EVALUATION_THRESHOLD] ?? '-', }, { title: i18n.translate('xpack.observability.alertsFlyout.actualValueLabel', { defaultMessage: 'Actual value', }), - description: alert['kibana.observability.evaluation.value'] ?? '-', + description: alert.fields[ALERT_EVALUATION_VALUE] ?? '-', }, { title: i18n.translate('xpack.observability.alertsFlyout.ruleTypeLabel', { defaultMessage: 'Rule type', }), - description: alert['rule.category'] ?? '-', + description: alert.fields[RULE_CATEGORY] ?? '-', }, ]; @@ -86,7 +94,7 @@ export function AlertsFlyout({ onClose, alert }: AlertsFlyoutProps) { -

    {alert['rule.name']}

    +

    {alert.fields[RULE_NAME]}

    {alert.reason} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx index b0ff156fde377..f377186623a03 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts_table.tsx @@ -16,6 +16,10 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; +import { + ALERT_DURATION, + ALERT_SEVERITY_LEVEL, +} from '@kbn/rule-data-utils/target/technical_field_names'; import { asDuration } from '../../../common/utils/formatters'; import { TimestampTooltip } from '../../components/shared/timestamp_tooltip'; import { usePluginContext } from '../../hooks/use_plugin_context'; @@ -94,9 +98,7 @@ export function AlertsTable(props: AlertsTableProps) { }), render: (_, alert) => { const { active } = alert; - return active - ? null - : asDuration(alert['kibana.rac.alert.duration.us'], { extended: true }); + return active ? null : asDuration(alert.fields[ALERT_DURATION], { extended: true }); }, }, { @@ -105,7 +107,7 @@ export function AlertsTable(props: AlertsTableProps) { defaultMessage: 'Severity', }), render: (_, alert) => { - return ; + return ; }, }, { diff --git a/x-pack/plugins/observability/public/pages/alerts/example_data.ts b/x-pack/plugins/observability/public/pages/alerts/example_data.ts index dba6f1e9aaa2f..5318fce82c1d3 100644 --- a/x-pack/plugins/observability/public/pages/alerts/example_data.ts +++ b/x-pack/plugins/observability/public/pages/alerts/example_data.ts @@ -7,42 +7,42 @@ export const apmAlertResponseExample = [ { - 'rule.id': 'apm.error_rate', - 'service.name': 'opbeans-java', - 'rule.name': 'Error count threshold | opbeans-java (smith test)', - 'kibana.rac.alert.duration.us': 180057000, - 'kibana.rac.alert.status': 'open', - 'kibana.rac.alert.severity.level': 'warning', + 'rule.id': ['apm.error_rate'], + 'service.name': ['opbeans-java'], + 'rule.name': ['Error count threshold | opbeans-java (smith test)'], + 'kibana.rac.alert.duration.us': [180057000], + 'kibana.rac.alert.status': ['open'], + 'kibana.rac.alert.severity.level': ['warning'], tags: ['apm', 'service.name:opbeans-java'], - 'kibana.rac.alert.uuid': '0175ec0a-a3b1-4d41-b557-e21c2d024352', - 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', - 'event.action': 'active', - '@timestamp': '2021-04-12T13:53:49.550Z', - 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', - 'kibana.rac.alert.start': '2021-04-12T13:50:49.493Z', - 'kibana.rac.producer': 'apm', - 'event.kind': 'state', - 'rule.category': 'Error count threshold', + 'kibana.rac.alert.uuid': ['0175ec0a-a3b1-4d41-b557-e21c2d024352'], + 'rule.uuid': ['474920d0-93e9-11eb-ac86-0b455460de81'], + 'event.action': ['active'], + '@timestamp': ['2021-04-12T13:53:49.550Z'], + 'kibana.rac.alert.id': ['apm.error_rate_opbeans-java_production'], + 'kibana.rac.alert.start': ['2021-04-12T13:50:49.493Z'], + 'kibana.rac.producer': ['apm'], + 'event.kind': ['state'], + 'rule.category': ['Error count threshold'], 'service.environment': ['production'], 'processor.event': ['error'], }, { - 'rule.id': 'apm.error_rate', - 'service.name': 'opbeans-java', - 'rule.name': 'Error count threshold | opbeans-java (smith test)', - 'kibana.rac.alert.duration.us': 2419005000, - 'kibana.rac.alert.end': '2021-04-12T13:49:49.446Z', - 'kibana.rac.alert.status': 'closed', + 'rule.id': ['apm.error_rate'], + 'service.name': ['opbeans-java'], + 'rule.name': ['Error count threshold | opbeans-java (smith test)'], + 'kibana.rac.alert.duration.us': [2419005000], + 'kibana.rac.alert.end': ['2021-04-12T13:49:49.446Z'], + 'kibana.rac.alert.status': ['closed'], tags: ['apm', 'service.name:opbeans-java'], - 'kibana.rac.alert.uuid': '32b940e1-3809-4c12-8eee-f027cbb385e2', - 'rule.uuid': '474920d0-93e9-11eb-ac86-0b455460de81', - 'event.action': 'close', - '@timestamp': '2021-04-12T13:49:49.446Z', - 'kibana.rac.alert.id': 'apm.error_rate_opbeans-java_production', - 'kibana.rac.alert.start': '2021-04-12T13:09:30.441Z', - 'kibana.rac.producer': 'apm', - 'event.kind': 'state', - 'rule.category': 'Error count threshold', + 'kibana.rac.alert.uuid': ['32b940e1-3809-4c12-8eee-f027cbb385e2'], + 'rule.uuid': ['474920d0-93e9-11eb-ac86-0b455460de81'], + 'event.action': ['close'], + '@timestamp': ['2021-04-12T13:49:49.446Z'], + 'kibana.rac.alert.id': ['apm.error_rate_opbeans-java_production'], + 'kibana.rac.alert.start': ['2021-04-12T13:09:30.441Z'], + 'kibana.rac.producer': ['apm'], + 'event.kind': ['state'], + 'rule.category': ['Error count threshold'], 'service.environment': ['production'], 'processor.event': ['error'], }, diff --git a/x-pack/plugins/observability/public/pages/alerts/index.tsx b/x-pack/plugins/observability/public/pages/alerts/index.tsx index a6d5c6926973e..1f468a70d0976 100644 --- a/x-pack/plugins/observability/public/pages/alerts/index.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/index.tsx @@ -17,6 +17,16 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { format, parse } from 'url'; +import { + ALERT_START, + EVENT_ACTION, + RULE_ID, + RULE_NAME, +} from '@kbn/rule-data-utils/target/technical_field_names'; +import { + ParsedTechnicalFields, + parseTechnicalFields, +} from '../../../../rule_registry/common/parse_technical_fields'; import { asDuration, asPercent } from '../../../common/utils/formatters'; import { ExperimentalBadge } from '../../components/shared/experimental_badge'; import { useFetcher } from '../../hooks/use_fetcher'; @@ -30,7 +40,8 @@ import { AlertsTable } from './alerts_table'; export type TopAlertResponse = ObservabilityAPIReturnType<'GET /api/observability/rules/alerts/top'>[number]; -export interface TopAlert extends TopAlertResponse { +export interface TopAlert { + fields: ParsedTechnicalFields; start: number; reason: string; link?: string; @@ -42,7 +53,7 @@ interface AlertsPageProps { } export function AlertsPage({ routeParams }: AlertsPageProps) { - const { core, observabilityRuleRegistry } = usePluginContext(); + const { core, observabilityRuleTypeRegistry } = usePluginContext(); const { prepend } = core.http.basePath; const history = useHistory(); const { @@ -74,18 +85,19 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { }, }).then((alerts) => { return alerts.map((alert) => { - const ruleType = observabilityRuleRegistry.getTypeByRuleId(alert['rule.id']); + const parsedFields = parseTechnicalFields(alert); + const formatter = observabilityRuleTypeRegistry.getFormatter(parsedFields[RULE_ID]!); const formatted = { link: undefined, - reason: alert['rule.name'], - ...(ruleType?.format?.({ alert, formatters: { asDuration, asPercent } }) ?? {}), + reason: parsedFields[RULE_NAME]!, + ...(formatter?.({ fields: parsedFields, formatters: { asDuration, asPercent } }) ?? {}), }; const parsedLink = formatted.link ? parse(formatted.link, true) : undefined; return { - ...alert, ...formatted, + fields: parsedFields, link: parsedLink ? format({ ...parsedLink, @@ -96,13 +108,13 @@ export function AlertsPage({ routeParams }: AlertsPageProps) { }, }) : undefined, - active: alert['event.action'] !== 'close', - start: new Date(alert['kibana.rac.alert.start']).getTime(), + active: parsedFields[EVENT_ACTION] !== 'close', + start: new Date(parsedFields[ALERT_START]!).getTime(), }; }); }); }, - [kuery, observabilityRuleRegistry, rangeFrom, rangeTo] + [kuery, observabilityRuleTypeRegistry, rangeFrom, rangeTo] ); return ( diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx index 559aa8d5884a9..ebd1c73859169 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -23,7 +23,7 @@ import { emptyResponse as emptyLogsResponse, fetchLogsData } from './mock/logs.m import { emptyResponse as emptyMetricsResponse, fetchMetricsData } from './mock/metrics.mock'; import { newsFeedFetchData } from './mock/news_feed.mock'; import { emptyResponse as emptyUptimeResponse, fetchUptimeData } from './mock/uptime.mock'; -import { createObservabilityRuleRegistryMock } from '../../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../../rules/observability_rule_type_registry_mock'; function unregisterAll() { unregisterDataHandler({ appName: 'apm' }); @@ -54,7 +54,7 @@ const withCore = makeDecorator({ }, }, } as unknown) as ObservabilityPublicPluginsStart, - observabilityRuleRegistry: createObservabilityRuleRegistryMock(), + observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), }} > diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index 517675fe1d525..6856bc97b4a36 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -7,6 +7,10 @@ import { i18n } from '@kbn/i18n'; import { BehaviorSubject } from 'rxjs'; +import { + TriggersAndActionsUIPublicPluginSetup, + TriggersAndActionsUIPublicPluginStart, +} from '../../triggers_actions_ui/public'; import { AppMountParameters, AppUpdater, @@ -25,26 +29,23 @@ import type { HomePublicPluginStart, } from '../../../../src/plugins/home/public'; import type { LensPublicStart } from '../../lens/public'; -import type { RuleRegistryPublicPluginSetupContract } from '../../rule_registry/public'; -import type { ObservabilityRuleFieldMap } from '../common/rules/observability_rule_field_map'; -import { observabilityRuleRegistrySettings } from '../common/rules/observability_rule_registry_settings'; import { registerDataHandler } from './data_handler'; -import { FormatterRuleRegistry } from './rules/formatter_rule_registry'; import { createCallObservabilityApi } from './services/call_observability_api'; import { toggleOverviewLinkInNav } from './toggle_overview_link_in_nav'; import { ConfigSchema } from '.'; +import { createObservabilityRuleTypeRegistry } from './rules/create_observability_rule_type_registry'; export type ObservabilityPublicSetup = ReturnType; -export type ObservabilityRuleRegistry = ObservabilityPublicSetup['ruleRegistry']; export interface ObservabilityPublicPluginsSetup { data: DataPublicPluginSetup; - ruleRegistry: RuleRegistryPublicPluginSetupContract; + triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; home?: HomePublicPluginSetup; } export interface ObservabilityPublicPluginsStart { home?: HomePublicPluginStart; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; data: DataPublicPluginStart; lens: LensPublicStart; } @@ -75,11 +76,9 @@ export class Plugin createCallObservabilityApi(coreSetup.http); - const observabilityRuleRegistry = pluginsSetup.ruleRegistry.registry.create({ - ...observabilityRuleRegistrySettings, - fieldMap: {} as ObservabilityRuleFieldMap, - ctor: FormatterRuleRegistry, - }); + const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistry( + pluginsSetup.triggersActionsUi.alertTypeRegistry + ); const mount = async (params: AppMountParameters) => { // Load application bundle @@ -92,7 +91,7 @@ export class Plugin core: coreStart, plugins: pluginsStart, appMountParameters: params, - observabilityRuleRegistry, + observabilityRuleTypeRegistry, }); }; @@ -165,7 +164,7 @@ export class Plugin return { dashboard: { register: registerDataHandler }, - ruleRegistry: observabilityRuleRegistry, + observabilityRuleTypeRegistry, isAlertingExperienceEnabled: () => config.unsafe.alertingExperience.enabled, }; } diff --git a/x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts b/x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts new file mode 100644 index 0000000000000..cba9df83c6fe3 --- /dev/null +++ b/x-pack/plugins/observability/public/rules/create_observability_rule_type_registry.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AlertTypeModel, AlertTypeRegistryContract } from '../../../triggers_actions_ui/public'; +import { ParsedTechnicalFields } from '../../../rule_registry/common/parse_technical_fields'; +import { AsDuration, AsPercent } from '../../common/utils/formatters'; + +type Formatter = (options: { + fields: ParsedTechnicalFields & Record; + formatters: { asDuration: AsDuration; asPercent: AsPercent }; +}) => { reason: string; link: string }; + +export function createObservabilityRuleTypeRegistry(alertTypeRegistry: AlertTypeRegistryContract) { + const formatters: Array<{ typeId: string; fn: Formatter }> = []; + return { + register: (type: AlertTypeModel & { format: Formatter }) => { + const { format, ...rest } = type; + formatters.push({ typeId: type.id, fn: format }); + alertTypeRegistry.register(rest); + }, + getFormatter: (typeId: string) => { + return formatters.find((formatter) => formatter.typeId === typeId)?.fn; + }, + }; +} + +export type ObservabilityRuleTypeRegistry = ReturnType; diff --git a/x-pack/plugins/observability/public/rules/formatter_rule_registry.ts b/x-pack/plugins/observability/public/rules/formatter_rule_registry.ts deleted file mode 100644 index 0d0d22cf750fb..0000000000000 --- a/x-pack/plugins/observability/public/rules/formatter_rule_registry.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { RuleType } from '../../../rule_registry/public'; -import type { BaseRuleFieldMap, OutputOfFieldMap } from '../../../rule_registry/common'; -import { RuleRegistry } from '../../../rule_registry/public'; -import type { asDuration, asPercent } from '../../common/utils/formatters'; - -type AlertTypeOf = OutputOfFieldMap; - -type FormattableRuleType = RuleType & { - format?: (options: { - alert: AlertTypeOf; - formatters: { - asDuration: typeof asDuration; - asPercent: typeof asPercent; - }; - }) => { - reason?: string; - link?: string; - }; -}; - -export class FormatterRuleRegistry extends RuleRegistry< - TFieldMap, - FormattableRuleType -> {} diff --git a/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts b/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts deleted file mode 100644 index 389b581b5fb60..0000000000000 --- a/x-pack/plugins/observability/public/rules/observability_rule_registry_mock.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ObservabilityRuleRegistry } from '../plugin'; - -const createRuleRegistryMock = () => ({ - registerType: () => {}, - getTypeByRuleId: () => ({ format: () => ({ link: '/test/example' }) }), - create: () => createRuleRegistryMock(), -}); - -export const createObservabilityRuleRegistryMock = () => - createRuleRegistryMock() as ObservabilityRuleRegistry & ReturnType; diff --git a/x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts b/x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts new file mode 100644 index 0000000000000..b2cf48f8e1c32 --- /dev/null +++ b/x-pack/plugins/observability/public/rules/observability_rule_type_registry_mock.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ObservabilityRuleTypeRegistry } from './create_observability_rule_type_registry'; + +const createRuleTypeRegistryMock = () => ({ + registerFormatter: () => {}, +}); + +export const createObservabilityRuleTypeRegistryMock = () => + createRuleTypeRegistryMock() as ObservabilityRuleTypeRegistry & + ReturnType; diff --git a/x-pack/plugins/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability/public/utils/test_helper.tsx index 63e34b018aed0..ef7c62a143f25 100644 --- a/x-pack/plugins/observability/public/utils/test_helper.tsx +++ b/x-pack/plugins/observability/public/utils/test_helper.tsx @@ -15,7 +15,7 @@ import translations from '../../../translations/translations/ja-JP.json'; import { PluginContext } from '../context/plugin_context'; import { ObservabilityPublicPluginsStart } from '../plugin'; import { EuiThemeProvider } from '../../../../../src/plugins/kibana_react/common'; -import { createObservabilityRuleRegistryMock } from '../rules/observability_rule_registry_mock'; +import { createObservabilityRuleTypeRegistryMock } from '../rules/observability_rule_type_registry_mock'; const appMountParameters = ({ setHeaderActionMenu: () => {} } as unknown) as AppMountParameters; @@ -37,14 +37,14 @@ const plugins = ({ data: { query: { timefilter: { timefilter: { setTime: jest.fn() } } } }, } as unknown) as ObservabilityPublicPluginsStart; -const observabilityRuleRegistry = createObservabilityRuleRegistryMock(); +const observabilityRuleTypeRegistry = createObservabilityRuleTypeRegistryMock(); export const render = (component: React.ReactNode) => { return testLibRender( {component} diff --git a/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts b/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts index 0045c0f0c6757..ddfc112ab1452 100644 --- a/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts +++ b/x-pack/plugins/observability/server/lib/rules/get_top_alerts.ts @@ -4,24 +4,24 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Required } from 'utility-types'; -import { ObservabilityRuleRegistryClient } from '../../types'; +import { ALERT_UUID, TIMESTAMP } from '@kbn/rule-data-utils/target/technical_field_names'; +import { RuleDataClient } from '../../../../rule_registry/server'; import { kqlQuery, rangeQuery } from '../../utils/queries'; export async function getTopAlerts({ - ruleRegistryClient, + ruleDataClient, start, end, kuery, size, }: { - ruleRegistryClient: ObservabilityRuleRegistryClient; + ruleDataClient: RuleDataClient; start: number; end: number; kuery?: string; size: number; }) { - const response = await ruleRegistryClient.search({ + const response = await ruleDataClient.getReader().search({ body: { query: { bool: { @@ -30,26 +30,18 @@ export async function getTopAlerts({ }, fields: ['*'], collapse: { - field: 'kibana.rac.alert.uuid', + field: ALERT_UUID, }, size, sort: { - '@timestamp': 'desc', + [TIMESTAMP]: 'desc', }, _source: false, }, + allow_no_indices: true, }); - return response.events.map((event) => { - return event as Required< - typeof event, - | 'rule.id' - | 'rule.name' - | 'kibana.rac.alert.start' - | 'event.action' - | 'rule.category' - | 'rule.name' - | 'kibana.rac.alert.duration.us' - >; + return response.hits.hits.map((hit) => { + return hit.fields; }); } diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts index b5208260297d0..046a9a62d5fa7 100644 --- a/x-pack/plugins/observability/server/plugin.ts +++ b/x-pack/plugins/observability/server/plugin.ts @@ -6,6 +6,7 @@ */ import { PluginInitializerContext, Plugin, CoreSetup } from 'src/core/server'; +import { RuleDataClient } from '../../rule_registry/server'; import { ObservabilityConfig } from '.'; import { bootstrapAnnotations, @@ -16,11 +17,8 @@ import type { RuleRegistryPluginSetupContract } from '../../rule_registry/server import { uiSettings } from './ui_settings'; import { registerRoutes } from './routes/register_routes'; import { getGlobalObservabilityServerRouteRepository } from './routes/get_global_observability_server_route_repository'; -import { observabilityRuleRegistrySettings } from '../common/rules/observability_rule_registry_settings'; -import { observabilityRuleFieldMap } from '../common/rules/observability_rule_field_map'; export type ObservabilityPluginSetup = ReturnType; -export type ObservabilityRuleRegistry = ObservabilityPluginSetup['ruleRegistry']; export class ObservabilityPlugin implements Plugin { constructor(private readonly initContext: PluginInitializerContext) { @@ -51,19 +49,25 @@ export class ObservabilityPlugin implements Plugin { }); } - const observabilityRuleRegistry = plugins.ruleRegistry.create({ - ...observabilityRuleRegistrySettings, - fieldMap: observabilityRuleFieldMap, + const start = () => core.getStartServices().then(([coreStart]) => coreStart); + + const ruleDataClient = new RuleDataClient({ + getClusterClient: async () => { + const coreStart = await start(); + return coreStart.elasticsearch.client.asInternalUser; + }, + ready: () => Promise.resolve(), + alias: plugins.ruleRegistry.getFullAssetName(), }); registerRoutes({ core: { setup: core, - start: () => core.getStartServices().then(([coreStart]) => coreStart), + start, }, - ruleRegistry: observabilityRuleRegistry, logger: this.initContext.logger.get(), repository: getGlobalObservabilityServerRouteRepository(), + ruleDataClient, }); return { @@ -71,7 +75,6 @@ export class ObservabilityPlugin implements Plugin { const api = await annotationsApiPromise; return api?.getScopedAnnotationsClient(...args); }, - ruleRegistry: observabilityRuleRegistry, }; } diff --git a/x-pack/plugins/observability/server/routes/register_routes.ts b/x-pack/plugins/observability/server/routes/register_routes.ts index 85ee456b812b8..75b6703cc64de 100644 --- a/x-pack/plugins/observability/server/routes/register_routes.ts +++ b/x-pack/plugins/observability/server/routes/register_routes.ts @@ -13,23 +13,23 @@ import { import { CoreSetup, CoreStart, Logger, RouteRegistrar } from 'kibana/server'; import Boom from '@hapi/boom'; import { RequestAbortedError } from '@elastic/elasticsearch/lib/errors'; -import { ObservabilityRuleRegistry } from '../plugin'; +import { RuleDataClient } from '../../../rule_registry/server'; import { ObservabilityRequestHandlerContext } from '../types'; import { AbstractObservabilityServerRouteRepository } from './types'; export function registerRoutes({ - ruleRegistry, repository, core, logger, + ruleDataClient, }: { core: { setup: CoreSetup; start: () => Promise; }; - ruleRegistry: ObservabilityRuleRegistry; repository: AbstractObservabilityServerRouteRepository; logger: Logger; + ruleDataClient: RuleDataClient; }) { const routes = repository.getRoutes(); @@ -59,10 +59,10 @@ export function registerRoutes({ const data = (await handler({ context, request, - ruleRegistry, core, logger, params: decodedParams, + ruleDataClient, })) as any; return response.ok({ body: data }); diff --git a/x-pack/plugins/observability/server/routes/rules.ts b/x-pack/plugins/observability/server/routes/rules.ts index cd3f4976e0af3..1f500adff5dcf 100644 --- a/x-pack/plugins/observability/server/routes/rules.ts +++ b/x-pack/plugins/observability/server/routes/rules.ts @@ -6,7 +6,6 @@ */ import * as t from 'io-ts'; import { isoToEpochRt, toNumberRt } from '@kbn/io-ts-utils'; -import Boom from '@hapi/boom'; import { createObservabilityServerRoute } from './create_observability_server_route'; import { createObservabilityServerRouteRepository } from './create_observability_server_route_repository'; import { getTopAlerts } from '../lib/rules/get_top_alerts'; @@ -28,22 +27,13 @@ const alertsListRoute = createObservabilityServerRoute({ }), ]), }), - handler: async ({ ruleRegistry, context, params }) => { - const ruleRegistryClient = await ruleRegistry.createScopedRuleRegistryClient({ - context, - alertsClient: context.alerting.getAlertsClient(), - }); - - if (!ruleRegistryClient) { - throw Boom.failedDependency('xpack.ruleRegistry.unsafe.write.enabled is set to false'); - } - + handler: async ({ ruleDataClient, context, params }) => { const { query: { start, end, kuery, size = 100 }, } = params; return getTopAlerts({ - ruleRegistryClient, + ruleDataClient, start, end, kuery, @@ -57,17 +47,10 @@ const alertsDynamicIndexPatternRoute = createObservabilityServerRoute({ options: { tags: [], }, - handler: async ({ ruleRegistry, context }) => { - const ruleRegistryClient = await ruleRegistry.createScopedRuleRegistryClient({ - context, - alertsClient: context.alerting.getAlertsClient(), - }); - - if (!ruleRegistryClient) { - throw Boom.failedDependency(); - } + handler: async ({ ruleDataClient }) => { + const reader = ruleDataClient.getReader({ namespace: 'observability' }); - return ruleRegistryClient.getDynamicIndexPattern(); + return reader.getDynamicIndexPattern(); }, }); diff --git a/x-pack/plugins/observability/server/routes/types.ts b/x-pack/plugins/observability/server/routes/types.ts index 0588bf8df2292..1fa7229c6cf62 100644 --- a/x-pack/plugins/observability/server/routes/types.ts +++ b/x-pack/plugins/observability/server/routes/types.ts @@ -12,7 +12,7 @@ import type { ServerRouteRepository, } from '@kbn/server-route-repository'; import { CoreSetup, CoreStart, KibanaRequest, Logger } from 'kibana/server'; -import { ObservabilityRuleRegistry } from '../plugin'; +import { RuleDataClient } from '../../../rule_registry/server'; import { ObservabilityServerRouteRepository } from './get_global_observability_server_route_repository'; import { ObservabilityRequestHandlerContext } from '../types'; @@ -24,7 +24,7 @@ export interface ObservabilityRouteHandlerResources { start: () => Promise; setup: CoreSetup; }; - ruleRegistry: ObservabilityRuleRegistry; + ruleDataClient: RuleDataClient; request: KibanaRequest; context: ObservabilityRequestHandlerContext; logger: Logger; diff --git a/x-pack/plugins/observability/server/types.ts b/x-pack/plugins/observability/server/types.ts index 81b32b3f8db7b..da13e60804a60 100644 --- a/x-pack/plugins/observability/server/types.ts +++ b/x-pack/plugins/observability/server/types.ts @@ -7,9 +7,7 @@ import type { IRouter, RequestHandlerContext } from 'src/core/server'; import type { AlertingApiRequestHandlerContext } from '../../alerting/server'; -import type { ScopedRuleRegistryClient, FieldMapOf } from '../../rule_registry/server'; import type { LicensingApiRequestHandlerContext } from '../../licensing/server'; -import type { ObservabilityRuleRegistry } from './plugin'; export type { ObservabilityRouteCreateOptions, @@ -31,7 +29,3 @@ export interface ObservabilityRequestHandlerContext extends RequestHandlerContex * @internal */ export type ObservabilityPluginRouter = IRouter; - -export type ObservabilityRuleRegistryClient = ScopedRuleRegistryClient< - FieldMapOf ->; diff --git a/x-pack/plugins/rule_registry/README.md b/x-pack/plugins/rule_registry/README.md index 2c8f534a63d6b..cfbde612b45a6 100644 --- a/x-pack/plugins/rule_registry/README.md +++ b/x-pack/plugins/rule_registry/README.md @@ -2,62 +2,129 @@ The rule registry plugin aims to make it easy for rule type producers to have their rules produce the data that they need to build rich experiences on top of a unified experience, without the risk of mapping conflicts. -A rule registry creates a template, an ILM policy, and an alias. The template mappings can be configured. It also injects a client scoped to these indices. +The plugin installs default component templates and a default lifecycle policy that rule type producers can use to create index templates. -It also supports inheritance, which means that producers can create a registry specific to their solution or rule type, and specify additional mappings to be used. +It also exposes a rule data client that will create or update the index stream that rules will write data to. It will not do so on plugin setup or start, but only when data is written. -The rule registry plugin creates a root rule registry, with the mappings defined needed to create a unified experience. Rule type producers can use the plugin to access the root rule registry, and create their own registry that branches off of the root rule registry. The rule registry client sees data from its own registry, and all registries that branches off of it. It does not see data from its parents. +## Configuration -## Enabling writing - -Set +By default, these indices will be prefixed with `.alerts`. To change this, for instance to support legacy multitenancy, set the following configuration option: ```yaml -xpack.ruleRegistry.unsafe.write.enabled: true +xpack.ruleRegistry.index: '.kibana-alerts' ``` -in your Kibana configuration to allow the Rule Registry to write events to the alert indices. +To disable writing entirely: + +```yaml +xpack.ruleRegistry.write.enabled: false +``` -## Creating a rule registry +## Setting up the index template -To create a rule registry, producers should add the `ruleRegistry` plugin to their dependencies. They can then use the `ruleRegistry.create` method to create a child registry, with the additional mappings that should be used by specifying `fieldMap`: +On plugin setup, rule type producers can create the index template as follows: ```ts -const observabilityRegistry = plugins.ruleRegistry.create({ - name: 'observability', - fieldMap: { - ...pickWithPatterns(ecsFieldMap, 'host.name', 'service.name'), - }, -}); -``` +// get the FQN of the component template. All assets are prefixed with the configured `index` value, which is `.alerts` by default. -`fieldMap` is a key-value map of field names and mapping options: +const componentTemplateName = plugins.ruleRegistry.getFullAssetName( + 'apm-mappings' +); -```ts -{ - '@timestamp': { - type: 'date', - array: false, - required: true, - } +// if write is disabled, don't install these templates +if (!plugins.ruleRegistry.isWriteEnabled()) { + return; } -``` -ECS mappings are generated via a script in the rule registry plugin directory. These mappings are available in x-pack/plugins/rule_registry/server/generated/ecs_field_map.ts. - -To pick many fields, you can use `pickWithPatterns`, which supports wildcards with full type support. +// create or update the component template that should be used +await plugins.ruleRegistry.createOrUpdateComponentTemplate({ + name: componentTemplateName, + body: { + template: { + settings: { + number_of_shards: 1, + }, + // mappingFromFieldMap is a utility function that will generate an + // ES mapping from a field map object. You can also define a literal + // mapping. + mappings: mappingFromFieldMap({ + [SERVICE_NAME]: { + type: 'keyword', + }, + [SERVICE_ENVIRONMENT]: { + type: 'keyword', + }, + [TRANSACTION_TYPE]: { + type: 'keyword', + }, + [PROCESSOR_EVENT]: { + type: 'keyword', + }, + }), + }, + }, +}); -If a registry is created, it will initialise as soon as the core services needed become available. It will create a (versioned) template, alias, and ILM policy, but only if these do not exist yet. +// Install the index template, that is composed of the component template +// defined above, and others. It is important that the technical component +// template is included. This will ensure functional compatibility across +// rule types, for a future scenario where a user will want to "point" the +// data from a rule to a different index. +await plugins.ruleRegistry.createOrUpdateIndexTemplate({ + name: plugins.ruleRegistry.getFullAssetName('apm-index-template'), + body: { + index_patterns: [ + plugins.ruleRegistry.getFullAssetName('observability-apm*'), + ], + composed_of: [ + // Technical component template, required + plugins.ruleRegistry.getFullAssetName( + TECHNICAL_COMPONENT_TEMPLATE_NAME + ), + componentTemplateName, + ], + }, +}); -## Rule registry client +// Finally, create the rule data client that can be injected into rule type +// executors and API endpoints +const ruleDataClient = new RuleDataClient({ + alias: plugins.ruleRegistry.getFullAssetName('observability-apm'), + getClusterClient: async () => { + const coreStart = await getCoreStart(); + return coreStart.elasticsearch.client.asInternalUser; + }, + ready, +}); -The rule registry client can either be injected in the executor, or created in the scope of a request. It exposes a `search` method and a `bulkIndex` method. When `search` is called, it first gets all the rules the current user has access to, and adds these ids to the search request that it executes. This means that the user can only see data from rules they have access to. +// to start writing data, call `getWriter().bulk()`. It supports a `namespace` +// property as well, that for instance can be used to write data to a space-specific +// index. +await ruleDataClient.getWriter().bulk({ + body: eventsToIndex.flatMap((event) => [{ index: {} }, event]), +}); -Both `search` and `bulkIndex` are fully typed, in the sense that they reflect the mappings defined for the registry. +// to read data, simply call ruleDataClient.getReader().search: +const response = await ruleDataClient.getReader().search({ + body: { + query: { + }, + size: 100, + fields: ['*'], + collapse: { + field: ALERT_UUID, + }, + sort: { + '@timestamp': 'desc', + }, + }, + allow_no_indices: true, +}); +``` ## Schema -The following fields are available in the root rule registry: +The following fields are defined in the technical field component template and should always be used: - `@timestamp`: the ISO timestamp of the alert event. For the lifecycle rule type helper, it is always the value of `startedAt` that is injected by the Kibana alerting framework. - `event.kind`: signal (for the changeable alert document), state (for the state changes of the alert, e.g. when it opens, recovers, or changes in severity), or metric (individual evaluations that might be related to an alert). @@ -67,7 +134,7 @@ The following fields are available in the root rule registry: - `rule.uuid`: the saved objects id of the rule. - `rule.name`: the name of the rule (as specified by the user). - `rule.category`: the name of the rule type (as defined by the rule type producer) -- `kibana.rac.producer`: the producer of the rule type. Usually a Kibana plugin. e.g., `APM`. +- `kibana.rac.alert.producer`: the producer of the rule type. Usually a Kibana plugin. e.g., `APM`. - `kibana.rac.alert.id`: the id of the alert, that is unique within the context of the rule execution it was created in. E.g., for a rule that monitors latency for all services in all environments, this might be `opbeans-java:production`. - `kibana.rac.alert.uuid`: the unique identifier for the alert during its lifespan. If an alert recovers (or closes), this identifier is re-generated when it is opened again. - `kibana.rac.alert.status`: the status of the alert. Can be `open` or `closed`. @@ -76,5 +143,5 @@ The following fields are available in the root rule registry: - `kibana.rac.alert.duration.us`: the duration of the alert, in microseconds. This is always the difference between either the current time, or the time when the alert recovered. - `kibana.rac.alert.severity.level`: the severity of the alert, as a keyword (e.g. critical). - `kibana.rac.alert.severity.value`: the severity of the alert, as a numerical value, which allows sorting. - -This list is not final - just a start. Field names might change or moved to a scoped registry. If we implement log and sequence based rule types the list of fields will grow. If a rule type needs additional fields, the recommendation would be to have the field in its own registry first (or in its producer’s registry), and if usage is more broadly adopted, it can be moved to the root registry. +- `kibana.rac.alert.evaluation.value`: The measured (numerical value). +- `kibana.rac.alert.threshold.value`: The threshold that was defined (or, in case of multiple thresholds, the one that was exceeded). diff --git a/x-pack/plugins/apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts b/x-pack/plugins/rule_registry/common/assets.ts similarity index 53% rename from x-pack/plugins/apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts rename to x-pack/plugins/rule_registry/common/assets.ts index 8d250a5765cce..1a5b14c605ea5 100644 --- a/x-pack/plugins/apm/server/lib/alerts/create_apm_lifecycle_rule_type.ts +++ b/x-pack/plugins/rule_registry/common/assets.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { createLifecycleRuleTypeFactory } from '../../../../rule_registry/server'; -import { APMRuleRegistry } from '../../plugin'; - -export const createAPMLifecycleRuleType = createLifecycleRuleTypeFactory(); +export const TECHNICAL_COMPONENT_TEMPLATE_NAME = `technical-mappings`; +export const ECS_COMPONENT_TEMPLATE_NAME = `ecs-mappings`; +export const DEFAULT_ILM_POLICY_ID = 'ilm-policy'; diff --git a/x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts b/x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts new file mode 100644 index 0000000000000..7acbe0bc1227b --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/component_templates/ecs_component_template.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { merge } from 'lodash'; +import { mappingFromFieldMap } from '../../mapping_from_field_map'; +import { ClusterPutComponentTemplateBody } from '../../types'; +import { ecsFieldMap } from '../field_maps/ecs_field_map'; +import { technicalRuleFieldMap } from '../field_maps/technical_rule_field_map'; + +export const ecsComponentTemplate: ClusterPutComponentTemplateBody = { + template: { + settings: { + number_of_shards: 1, + }, + mappings: merge( + {}, + mappingFromFieldMap(ecsFieldMap), + mappingFromFieldMap(technicalRuleFieldMap) + ), + }, +}; diff --git a/x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts b/x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts new file mode 100644 index 0000000000000..cc096faba387e --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/component_templates/technical_component_template.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mappingFromFieldMap } from '../../mapping_from_field_map'; +import { ClusterPutComponentTemplateBody } from '../../types'; +import { technicalRuleFieldMap } from '../field_maps/technical_rule_field_map'; + +export const technicalComponentTemplate: ClusterPutComponentTemplateBody = { + template: { + settings: { + number_of_shards: 1, + }, + mappings: mappingFromFieldMap(technicalRuleFieldMap), + }, +}; diff --git a/x-pack/plugins/rule_registry/common/field_map/ecs_field_map.ts b/x-pack/plugins/rule_registry/common/assets/field_maps/ecs_field_map.ts similarity index 100% rename from x-pack/plugins/rule_registry/common/field_map/ecs_field_map.ts rename to x-pack/plugins/rule_registry/common/assets/field_maps/ecs_field_map.ts diff --git a/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts b/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts new file mode 100644 index 0000000000000..a946e9523548c --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/field_maps/technical_rule_field_map.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { pickWithPatterns } from '../../../common/pick_with_patterns'; +import { + ALERT_DURATION, + ALERT_END, + ALERT_EVALUATION_THRESHOLD, + ALERT_EVALUATION_VALUE, + ALERT_ID, + ALERT_SEVERITY_LEVEL, + ALERT_SEVERITY_VALUE, + ALERT_START, + ALERT_STATUS, + ALERT_UUID, + EVENT_ACTION, + EVENT_KIND, + PRODUCER, + RULE_CATEGORY, + RULE_ID, + RULE_NAME, + RULE_UUID, + TAGS, + TIMESTAMP, +} from '../../../common/technical_rule_data_field_names'; +import { ecsFieldMap } from './ecs_field_map'; + +export const technicalRuleFieldMap = { + ...pickWithPatterns( + ecsFieldMap, + TIMESTAMP, + EVENT_KIND, + EVENT_ACTION, + RULE_UUID, + RULE_ID, + RULE_NAME, + RULE_CATEGORY, + TAGS + ), + [PRODUCER]: { type: 'keyword' }, + [ALERT_UUID]: { type: 'keyword' }, + [ALERT_ID]: { type: 'keyword' }, + [ALERT_START]: { type: 'date' }, + [ALERT_END]: { type: 'date' }, + [ALERT_DURATION]: { type: 'long' }, + [ALERT_SEVERITY_LEVEL]: { type: 'keyword' }, + [ALERT_SEVERITY_VALUE]: { type: 'long' }, + [ALERT_STATUS]: { type: 'keyword' }, + [ALERT_EVALUATION_THRESHOLD]: { type: 'scaled_float', scaling_factor: 100 }, + [ALERT_EVALUATION_VALUE]: { type: 'scaled_float', scaling_factor: 100 }, +} as const; + +export type TechnicalRuleFieldMaps = typeof technicalRuleFieldMap; diff --git a/x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts b/x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts new file mode 100644 index 0000000000000..ee2e45640c149 --- /dev/null +++ b/x-pack/plugins/rule_registry/common/assets/index_templates/base_index_template.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const baseIndexTemplate = { + template: { + settings: { + number_of_shards: 1, + number_of_replicas: 0, + }, + }, +}; diff --git a/x-pack/plugins/rule_registry/server/rule_registry/defaults/ilm_policy.ts b/x-pack/plugins/rule_registry/common/assets/lifecycle_policies/default_lifecycle_policy.ts similarity index 86% rename from x-pack/plugins/rule_registry/server/rule_registry/defaults/ilm_policy.ts rename to x-pack/plugins/rule_registry/common/assets/lifecycle_policies/default_lifecycle_policy.ts index c80f7e772f308..f207087f7aa19 100644 --- a/x-pack/plugins/rule_registry/server/rule_registry/defaults/ilm_policy.ts +++ b/x-pack/plugins/rule_registry/common/assets/lifecycle_policies/default_lifecycle_policy.ts @@ -5,9 +5,7 @@ * 2.0. */ -import { ILMPolicy } from '../types'; - -export const defaultIlmPolicy: ILMPolicy = { +export const defaultLifecyclePolicy = { policy: { phases: { hot: { diff --git a/x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts b/x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts deleted file mode 100644 index 22a74212d2ce0..0000000000000 --- a/x-pack/plugins/rule_registry/common/field_map/base_rule_field_map.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { ecsFieldMap } from './ecs_field_map'; -import { pickWithPatterns } from '../pick_with_patterns'; - -export const baseRuleFieldMap = { - ...pickWithPatterns( - ecsFieldMap, - '@timestamp', - 'event.kind', - 'event.action', - 'rule.uuid', - 'rule.id', - 'rule.name', - 'rule.category', - 'tags' - ), - 'kibana.rac.producer': { type: 'keyword' }, - 'kibana.rac.alert.uuid': { type: 'keyword' }, - 'kibana.rac.alert.id': { type: 'keyword' }, - 'kibana.rac.alert.start': { type: 'date' }, - 'kibana.rac.alert.end': { type: 'date' }, - 'kibana.rac.alert.duration.us': { type: 'long' }, - 'kibana.rac.alert.severity.level': { type: 'keyword' }, - 'kibana.rac.alert.severity.value': { type: 'long' }, - 'kibana.rac.alert.status': { type: 'keyword' }, -} as const; - -export type BaseRuleFieldMap = typeof baseRuleFieldMap; diff --git a/x-pack/plugins/rule_registry/common/field_map/index.ts b/x-pack/plugins/rule_registry/common/field_map/index.ts index 8db5c2738439b..fac8575b8af48 100644 --- a/x-pack/plugins/rule_registry/common/field_map/index.ts +++ b/x-pack/plugins/rule_registry/common/field_map/index.ts @@ -5,8 +5,6 @@ * 2.0. */ -export * from './base_rule_field_map'; -export * from './ecs_field_map'; export * from './merge_field_maps'; export * from './runtime_type_from_fieldmap'; export * from './types'; diff --git a/x-pack/plugins/rule_registry/common/index.ts b/x-pack/plugins/rule_registry/common/index.ts index b614feebc974a..5d36cd8cad7be 100644 --- a/x-pack/plugins/rule_registry/common/index.ts +++ b/x-pack/plugins/rule_registry/common/index.ts @@ -4,5 +4,4 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -export * from './field_map'; -export * from './pick_with_patterns'; +export { parseTechnicalFields } from './parse_technical_fields'; diff --git a/x-pack/plugins/rule_registry/server/rule_registry/field_map/mapping_from_field_map.ts b/x-pack/plugins/rule_registry/common/mapping_from_field_map.ts similarity index 79% rename from x-pack/plugins/rule_registry/server/rule_registry/field_map/mapping_from_field_map.ts rename to x-pack/plugins/rule_registry/common/mapping_from_field_map.ts index f1d7126906431..17eb5ae8967af 100644 --- a/x-pack/plugins/rule_registry/server/rule_registry/field_map/mapping_from_field_map.ts +++ b/x-pack/plugins/rule_registry/common/mapping_from_field_map.ts @@ -5,11 +5,11 @@ * 2.0. */ +import { TypeMapping } from '@elastic/elasticsearch/api/types'; import { set } from '@elastic/safer-lodash-set'; -import { FieldMap } from '../../../common'; -import { Mappings } from '../types'; +import { FieldMap } from './field_map/types'; -export function mappingFromFieldMap(fieldMap: FieldMap): Mappings { +export function mappingFromFieldMap(fieldMap: FieldMap): TypeMapping { const mappings = { dynamic: 'strict' as const, properties: {}, diff --git a/x-pack/plugins/rule_registry/common/parse_technical_fields.ts b/x-pack/plugins/rule_registry/common/parse_technical_fields.ts new file mode 100644 index 0000000000000..9d92c657468a3 --- /dev/null +++ b/x-pack/plugins/rule_registry/common/parse_technical_fields.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isLeft } from 'fp-ts/lib/Either'; +import { PathReporter } from 'io-ts/lib/PathReporter'; +import { technicalRuleFieldMap } from './assets/field_maps/technical_rule_field_map'; +import { runtimeTypeFromFieldMap } from './field_map'; + +const technicalFieldRuntimeType = runtimeTypeFromFieldMap(technicalRuleFieldMap); + +export const parseTechnicalFields = (input: unknown) => { + const validate = technicalFieldRuntimeType.decode(input); + + if (isLeft(validate)) { + throw new Error(PathReporter.report(validate).join('\n')); + } + + return technicalFieldRuntimeType.encode(validate.right); +}; + +export type ParsedTechnicalFields = ReturnType; diff --git a/x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts b/x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts new file mode 100644 index 0000000000000..5c954a31e79ac --- /dev/null +++ b/x-pack/plugins/rule_registry/common/technical_rule_data_field_names.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from '@kbn/rule-data-utils/target/technical_field_names'; diff --git a/x-pack/plugins/rule_registry/common/types.ts b/x-pack/plugins/rule_registry/common/types.ts new file mode 100644 index 0000000000000..299d2c300ab49 --- /dev/null +++ b/x-pack/plugins/rule_registry/common/types.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { estypes } from '@elastic/elasticsearch'; + +export type PutIndexTemplateRequest = estypes.PutIndexTemplateRequest & { + body?: { composed_of?: string[] }; +}; + +export interface ClusterPutComponentTemplateBody { + template: { + settings: { + number_of_shards: number; + }; + mappings: estypes.TypeMapping; + }; +} diff --git a/x-pack/plugins/rule_registry/kibana.json b/x-pack/plugins/rule_registry/kibana.json index ec2b366f739e6..7e3f8bf6afb72 100644 --- a/x-pack/plugins/rule_registry/kibana.json +++ b/x-pack/plugins/rule_registry/kibana.json @@ -10,6 +10,5 @@ "alerting", "triggersActionsUi" ], - "server": true, - "ui": true + "server": true } diff --git a/x-pack/plugins/rule_registry/public/index.ts b/x-pack/plugins/rule_registry/public/index.ts deleted file mode 100644 index 59697261ff20b..0000000000000 --- a/x-pack/plugins/rule_registry/public/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { PluginInitializerContext } from 'kibana/public'; -import { Plugin } from './plugin'; - -export type { RuleRegistryPublicPluginSetupContract } from './plugin'; -export { RuleRegistry } from './rule_registry'; -export type { IRuleRegistry, RuleType } from './rule_registry/types'; - -export const plugin = (context: PluginInitializerContext) => { - return new Plugin(context); -}; diff --git a/x-pack/plugins/rule_registry/public/plugin.ts b/x-pack/plugins/rule_registry/public/plugin.ts deleted file mode 100644 index 7f0bceefb6797..0000000000000 --- a/x-pack/plugins/rule_registry/public/plugin.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { - CoreSetup, - CoreStart, - Plugin as PluginClass, - PluginInitializerContext, -} from '../../../../src/core/public'; -import type { - PluginSetupContract as AlertingPluginPublicSetupContract, - PluginStartContract as AlertingPluginPublicStartContract, -} from '../../alerting/public'; -import type { - TriggersAndActionsUIPublicPluginSetup, - TriggersAndActionsUIPublicPluginStart, -} from '../../triggers_actions_ui/public'; -import type { BaseRuleFieldMap } from '../common'; -import { RuleRegistry } from './rule_registry'; - -interface RuleRegistrySetupPlugins { - alerting: AlertingPluginPublicSetupContract; - triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; -} - -interface RuleRegistryStartPlugins { - alerting: AlertingPluginPublicStartContract; - triggersActionsUi: TriggersAndActionsUIPublicPluginStart; -} - -export type RuleRegistryPublicPluginSetupContract = ReturnType; - -export class Plugin - implements PluginClass { - constructor(context: PluginInitializerContext) {} - - public setup(core: CoreSetup, plugins: RuleRegistrySetupPlugins) { - const rootRegistry = new RuleRegistry({ - fieldMap: {} as BaseRuleFieldMap, - alertTypeRegistry: plugins.triggersActionsUi.alertTypeRegistry, - }); - return { - registry: rootRegistry, - }; - } - - start(core: CoreStart, plugins: RuleRegistryStartPlugins) { - return { - registerType: plugins.triggersActionsUi.alertTypeRegistry, - }; - } -} diff --git a/x-pack/plugins/rule_registry/public/rule_registry/index.ts b/x-pack/plugins/rule_registry/public/rule_registry/index.ts deleted file mode 100644 index ea47fe2e26aad..0000000000000 --- a/x-pack/plugins/rule_registry/public/rule_registry/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { BaseRuleFieldMap } from '../../common'; -import type { RuleType, CreateRuleRegistry, RuleRegistryConstructorOptions } from './types'; - -export class RuleRegistry { - protected types: TRuleType[] = []; - - constructor(private readonly options: RuleRegistryConstructorOptions) {} - - getTypes(): TRuleType[] { - return this.types; - } - - getTypeByRuleId(id: string): TRuleType | undefined { - return this.types.find((type) => type.id === id); - } - - registerType(type: TRuleType) { - this.types.push(type); - if (this.options.parent) { - this.options.parent.registerType(type); - } else { - this.options.alertTypeRegistry.register(type); - } - } - - create: CreateRuleRegistry = ({ fieldMap, ctor }) => { - const createOptions = { - fieldMap: { - ...this.options.fieldMap, - ...fieldMap, - }, - alertTypeRegistry: this.options.alertTypeRegistry, - parent: this, - }; - - const registry = ctor ? new ctor(createOptions) : new RuleRegistry(createOptions); - - return registry as any; - }; -} diff --git a/x-pack/plugins/rule_registry/public/rule_registry/types.ts b/x-pack/plugins/rule_registry/public/rule_registry/types.ts deleted file mode 100644 index 7c186385ebd35..0000000000000 --- a/x-pack/plugins/rule_registry/public/rule_registry/types.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import type { AlertTypeRegistryContract } from '../../../triggers_actions_ui/public'; -import type { BaseRuleFieldMap, FieldMap } from '../../common'; - -export interface RuleRegistryConstructorOptions { - fieldMap: TFieldMap; - alertTypeRegistry: AlertTypeRegistryContract; - parent?: IRuleRegistry; -} - -export type RuleType = Parameters[0]; - -export type RegisterRuleType< - TFieldMap extends BaseRuleFieldMap, - TAdditionalRegisterOptions = {} -> = (type: RuleType & TAdditionalRegisterOptions) => void; - -export type RuleRegistryExtensions = Record< - T, - (...args: any[]) => any ->; - -export type CreateRuleRegistry< - TFieldMap extends BaseRuleFieldMap, - TRuleType extends RuleType, - TInstanceType = undefined -> = < - TNextFieldMap extends FieldMap, - TRuleRegistryInstance extends IRuleRegistry< - TFieldMap & TNextFieldMap, - any - > = TInstanceType extends IRuleRegistry - ? TInstanceType - : IRuleRegistry ->(options: { - fieldMap: TNextFieldMap; - ctor?: new ( - options: RuleRegistryConstructorOptions - ) => TRuleRegistryInstance; -}) => TRuleRegistryInstance; - -export interface IRuleRegistry< - TFieldMap extends BaseRuleFieldMap, - TRuleType extends RuleType, - TInstanceType = undefined -> { - create: CreateRuleRegistry; - registerType(type: TRuleType): void; - getTypeByRuleId(ruleId: string): TRuleType; - getTypes(): TRuleType[]; -} - -export type FieldMapOfRuleRegistry = TRuleRegistry extends IRuleRegistry< - infer TFieldMap, - any -> - ? TFieldMap - : never; diff --git a/x-pack/plugins/rule_registry/server/index.ts b/x-pack/plugins/rule_registry/server/index.ts index 9fd1408fcdb21..b51ba3e10f91a 100644 --- a/x-pack/plugins/rule_registry/server/index.ts +++ b/x-pack/plugins/rule_registry/server/index.ts @@ -9,21 +9,23 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { PluginInitializerContext } from 'src/core/server'; import { RuleRegistryPlugin } from './plugin'; -export { RuleRegistryPluginSetupContract } from './plugin'; -export { createLifecycleRuleTypeFactory } from './rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory'; -export { FieldMapOf } from './types'; -export { ScopedRuleRegistryClient } from './rule_registry/create_scoped_rule_registry_client/types'; +export type { RuleRegistryPluginSetupContract, RuleRegistryPluginStartContract } from './plugin'; +export { RuleDataClient } from './rule_data_client'; +export { IRuleDataClient } from './rule_data_client/types'; +export { getRuleExecutorData, RuleExecutorData } from './utils/get_rule_executor_data'; +export { createLifecycleRuleTypeFactory } from './utils/create_lifecycle_rule_type_factory'; export const config = { schema: schema.object({ enabled: schema.boolean({ defaultValue: true }), - unsafe: schema.object({ - write: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), + write: schema.object({ + enabled: schema.boolean({ defaultValue: true }), }), + index: schema.string({ defaultValue: '.alerts' }), }), }; -export type RuleRegistryConfig = TypeOf; +export type RuleRegistryPluginConfig = TypeOf; export const plugin = (initContext: PluginInitializerContext) => new RuleRegistryPlugin(initContext); diff --git a/x-pack/plugins/rule_registry/server/plugin.ts b/x-pack/plugins/rule_registry/server/plugin.ts index 09df47c40a394..3c645f98f5c71 100644 --- a/x-pack/plugins/rule_registry/server/plugin.ts +++ b/x-pack/plugins/rule_registry/server/plugin.ts @@ -6,44 +6,44 @@ */ import { PluginInitializerContext, Plugin, CoreSetup } from 'src/core/server'; -import { PluginSetupContract as AlertingPluginSetupContract } from '../../alerting/server'; -import { RuleRegistry } from './rule_registry'; -import { defaultIlmPolicy } from './rule_registry/defaults/ilm_policy'; -import { BaseRuleFieldMap, baseRuleFieldMap } from '../common'; -import { RuleRegistryConfig } from '.'; +import { RuleDataPluginService } from './rule_data_plugin_service'; +import { RuleRegistryPluginConfig } from '.'; -export type RuleRegistryPluginSetupContract = RuleRegistry; +export type RuleRegistryPluginSetupContract = RuleDataPluginService; +export type RuleRegistryPluginStartContract = void; export class RuleRegistryPlugin implements Plugin { constructor(private readonly initContext: PluginInitializerContext) { this.initContext = initContext; } - public setup( - core: CoreSetup, - plugins: { alerting: AlertingPluginSetupContract } - ): RuleRegistryPluginSetupContract { - const globalConfig = this.initContext.config.legacy.get(); - const config = this.initContext.config.get(); + public setup(core: CoreSetup): RuleRegistryPluginSetupContract { + const config = this.initContext.config.get(); const logger = this.initContext.logger.get(); - const rootRegistry = new RuleRegistry({ - coreSetup: core, - ilmPolicy: defaultIlmPolicy, - fieldMap: baseRuleFieldMap, - kibanaIndex: globalConfig.kibana.index, - name: 'alerts', - kibanaVersion: this.initContext.env.packageInfo.version, - logger: logger.get('root'), - alertingPluginSetupContract: plugins.alerting, - writeEnabled: config.unsafe.write.enabled, + const service = new RuleDataPluginService({ + logger, + isWriteEnabled: config.write.enabled, + index: config.index, + getClusterClient: async () => { + const [coreStart] = await core.getStartServices(); + + return coreStart.elasticsearch.client.asInternalUser; + }, + }); + + service.init().catch((originalError) => { + const error = new Error('Failed installing assets'); + // @ts-ignore + error.stack = originalError.stack; + logger.error(error); }); - return rootRegistry; + return service; } - public start() {} + public start(): RuleRegistryPluginStartContract {} public stop() {} } diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/index.ts b/x-pack/plugins/rule_registry/server/rule_data_client/index.ts new file mode 100644 index 0000000000000..135c870f20727 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/rule_data_client/index.ts @@ -0,0 +1,132 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { TypeMapping } from '@elastic/elasticsearch/api/types'; +import { ResponseError } from '@elastic/elasticsearch/lib/errors'; +import { IndexPatternsFetcher } from '../../../../../src/plugins/data/server'; +import { + IRuleDataClient, + RuleDataClientConstructorOptions, + RuleDataReader, + RuleDataWriter, +} from './types'; + +function getNamespacedAlias(options: { alias: string; namespace?: string }) { + return [options.alias, options.namespace].filter(Boolean).join('-'); +} + +export class RuleDataClient implements IRuleDataClient { + constructor(private readonly options: RuleDataClientConstructorOptions) {} + + private async getClusterClient() { + await this.options.ready(); + return await this.options.getClusterClient(); + } + + getReader(options: { namespace?: string } = {}): RuleDataReader { + const index = `${[this.options.alias, options.namespace].filter(Boolean).join('-')}*`; + + return { + search: async (request) => { + const clusterClient = await this.getClusterClient(); + + const { body } = (await clusterClient.search({ + ...request, + index, + })) as { body: any }; + + return body; + }, + getDynamicIndexPattern: async () => { + const clusterClient = await this.getClusterClient(); + const indexPatternsFetcher = new IndexPatternsFetcher(clusterClient); + + const fields = await indexPatternsFetcher.getFieldsForWildcard({ + pattern: index, + }); + + return { + fields, + timeFieldName: '@timestamp', + title: index, + }; + }, + }; + } + + getWriter(options: { namespace?: string } = {}): RuleDataWriter { + const { namespace } = options; + const alias = getNamespacedAlias({ alias: this.options.alias, namespace }); + return { + bulk: async (request) => { + const clusterClient = await this.getClusterClient(); + + const requestWithDefaultParameters = { + ...request, + require_alias: true, + index: alias, + }; + + return clusterClient.bulk(requestWithDefaultParameters).then((response) => { + if (response.body.errors) { + if ( + response.body.items.length === 1 && + response.body.items[0]?.index?.error?.type === 'index_not_found_exception' + ) { + return this.createOrUpdateWriteTarget({ namespace }).then(() => { + return clusterClient.bulk(requestWithDefaultParameters); + }); + } + const error = new ResponseError(response); + throw error; + } + return response; + }); + }, + }; + } + + async createOrUpdateWriteTarget({ namespace }: { namespace?: string }) { + const alias = getNamespacedAlias({ alias: this.options.alias, namespace }); + + const clusterClient = await this.getClusterClient(); + + const { body: aliasExists } = await clusterClient.indices.existsAlias({ + name: alias, + }); + + const concreteIndexName = `${alias}-000001`; + + if (!aliasExists) { + try { + await clusterClient.indices.create({ + index: concreteIndexName, + body: { + aliases: { + [alias]: { + is_write_index: true, + }, + }, + }, + }); + } catch (err) { + // something might have created the index already, that sounds OK + if (err?.meta?.body?.type !== 'resource_already_exists_exception') { + throw err; + } + } + } + + const { body: simulateResponse } = await clusterClient.transport.request({ + method: 'POST', + path: `/_index_template/_simulate_index/${concreteIndexName}`, + }); + + const mappings: TypeMapping = simulateResponse.template.mappings; + + await clusterClient.indices.putMapping({ index: `${alias}*`, body: mappings }); + } +} diff --git a/x-pack/plugins/rule_registry/server/rule_data_client/types.ts b/x-pack/plugins/rule_registry/server/rule_data_client/types.ts new file mode 100644 index 0000000000000..348fca6a58188 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/rule_data_client/types.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ApiResponse } from '@elastic/elasticsearch'; +import { BulkRequest, BulkResponse } from '@elastic/elasticsearch/api/types'; +import { ElasticsearchClient } from 'kibana/server'; +import { FieldDescriptor } from 'src/plugins/data/server'; +import { ESSearchRequest, ESSearchResponse } from 'typings/elasticsearch'; +import { TechnicalRuleDataFieldName } from '../../common/technical_rule_data_field_names'; + +export interface RuleDataReader { + search( + request: TSearchRequest + ): Promise< + ESSearchResponse>, TSearchRequest> + >; + getDynamicIndexPattern( + target?: string + ): Promise<{ + title: string; + timeFieldName: string; + fields: FieldDescriptor[]; + }>; +} + +export interface RuleDataWriter { + bulk(request: BulkRequest): Promise>; +} + +export interface IRuleDataClient { + getReader(options?: { namespace?: string }): RuleDataReader; + getWriter(options?: { namespace?: string }): RuleDataWriter; + createOrUpdateWriteTarget(options: { namespace?: string }): Promise; +} + +export interface RuleDataClientConstructorOptions { + getClusterClient: () => Promise; + ready: () => Promise; + alias: string; +} diff --git a/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts new file mode 100644 index 0000000000000..159e9b8152597 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/rule_data_plugin_service/index.ts @@ -0,0 +1,158 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { ClusterPutComponentTemplate } from '@elastic/elasticsearch/api/requestParams'; +import { estypes } from '@elastic/elasticsearch'; +import { ElasticsearchClient, Logger } from 'kibana/server'; +import { technicalComponentTemplate } from '../../common/assets/component_templates/technical_component_template'; +import { + DEFAULT_ILM_POLICY_ID, + ECS_COMPONENT_TEMPLATE_NAME, + TECHNICAL_COMPONENT_TEMPLATE_NAME, +} from '../../common/assets'; +import { ecsComponentTemplate } from '../../common/assets/component_templates/ecs_component_template'; +import { defaultLifecyclePolicy } from '../../common/assets/lifecycle_policies/default_lifecycle_policy'; +import { ClusterPutComponentTemplateBody, PutIndexTemplateRequest } from '../../common/types'; + +const BOOTSTRAP_TIMEOUT = 60000; + +interface RuleDataPluginServiceConstructorOptions { + getClusterClient: () => Promise; + logger: Logger; + isWriteEnabled: boolean; + index: string; +} + +function createSignal() { + let resolver: () => void; + + let ready: boolean = false; + + const promise = new Promise((resolve) => { + resolver = resolve; + }); + + function wait(): Promise { + return promise.then(() => { + ready = true; + }); + } + + function complete() { + resolver(); + } + + return { wait, complete, isReady: () => ready }; +} + +export class RuleDataPluginService { + signal = createSignal(); + + constructor(private readonly options: RuleDataPluginServiceConstructorOptions) {} + + private assertWriteEnabled() { + if (!this.isWriteEnabled) { + throw new Error('Write operations are disabled'); + } + } + + private async getClusterClient() { + return await this.options.getClusterClient(); + } + + async init() { + if (!this.isWriteEnabled) { + this.options.logger.info('Write is disabled, not installing assets'); + this.signal.complete(); + return; + } + + this.options.logger.info(`Installing assets in namespace ${this.getFullAssetName()}`); + + await this._createOrUpdateLifecyclePolicy({ + policy: this.getFullAssetName(DEFAULT_ILM_POLICY_ID), + body: defaultLifecyclePolicy, + }); + + await this._createOrUpdateComponentTemplate({ + name: this.getFullAssetName(TECHNICAL_COMPONENT_TEMPLATE_NAME), + body: technicalComponentTemplate, + }); + + await this._createOrUpdateComponentTemplate({ + name: this.getFullAssetName(ECS_COMPONENT_TEMPLATE_NAME), + body: ecsComponentTemplate, + }); + + this.options.logger.info(`Installed all assets`); + + this.signal.complete(); + } + + private async _createOrUpdateComponentTemplate( + template: ClusterPutComponentTemplate + ) { + this.assertWriteEnabled(); + + const clusterClient = await this.getClusterClient(); + this.options.logger.debug(`Installing component template ${template.name}`); + return clusterClient.cluster.putComponentTemplate(template); + } + + private async _createOrUpdateIndexTemplate(template: PutIndexTemplateRequest) { + this.assertWriteEnabled(); + + const clusterClient = await this.getClusterClient(); + this.options.logger.debug(`Installing index template ${template.name}`); + return clusterClient.indices.putIndexTemplate(template); + } + + private async _createOrUpdateLifecyclePolicy(policy: estypes.PutLifecycleRequest) { + this.assertWriteEnabled(); + const clusterClient = await this.getClusterClient(); + + this.options.logger.debug(`Installing lifecycle policy ${policy.policy}`); + return clusterClient.ilm.putLifecycle(policy); + } + + async createOrUpdateComponentTemplate( + template: ClusterPutComponentTemplate + ) { + await this.wait(); + return this._createOrUpdateComponentTemplate(template); + } + + async createOrUpdateIndexTemplate(template: PutIndexTemplateRequest) { + await this.wait(); + return this._createOrUpdateIndexTemplate(template); + } + + async createOrUpdateLifecyclePolicy(policy: estypes.PutLifecycleRequest) { + await this.wait(); + return this._createOrUpdateLifecyclePolicy(policy); + } + + isReady() { + return this.signal.isReady(); + } + + wait() { + return Promise.race([ + this.signal.wait(), + new Promise((resolve, reject) => { + setTimeout(reject, BOOTSTRAP_TIMEOUT); + }), + ]); + } + + isWriteEnabled(): boolean { + return this.options.isWriteEnabled; + } + + getFullAssetName(assetName?: string) { + return [this.options.index, assetName].filter(Boolean).join('-'); + } +} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts b/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts deleted file mode 100644 index 0d7735380b640..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/index.ts +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { Either, isLeft, isRight } from 'fp-ts/lib/Either'; -import { Errors } from 'io-ts'; -import { PathReporter } from 'io-ts/lib/PathReporter'; -import { Logger } from 'kibana/server'; -import { IScopedClusterClient as ScopedClusterClient } from 'src/core/server'; -import { castArray, compact } from 'lodash'; -import { ESSearchRequest } from 'typings/elasticsearch'; -import { IndexPatternsFetcher } from '../../../../../../src/plugins/data/server'; -import { ClusterClientAdapter } from '../../../../event_log/server'; -import { TypeOfFieldMap } from '../../../common'; -import { ScopedRuleRegistryClient, EventsOf } from './types'; -import { BaseRuleFieldMap } from '../../../common'; -import { RuleRegistry } from '..'; - -const createPathReporterError = (either: Either) => { - const error = new Error(`Failed to validate alert event`); - error.stack += '\n' + PathReporter.report(either).join('\n'); - return error; -}; - -export function createScopedRuleRegistryClient({ - ruleUuids, - scopedClusterClient, - clusterClientAdapter, - indexAliasName, - indexTarget, - logger, - registry, - ruleData, -}: { - ruleUuids: string[]; - scopedClusterClient: ScopedClusterClient; - clusterClientAdapter: ClusterClientAdapter<{ - body: TypeOfFieldMap; - index: string; - }>; - indexAliasName: string; - indexTarget: string; - logger: Logger; - registry: RuleRegistry; - ruleData?: { - rule: { - id: string; - uuid: string; - category: string; - name: string; - }; - producer: string; - tags: string[]; - }; -}): ScopedRuleRegistryClient { - const fieldmapType = registry.getFieldMapType(); - - const defaults = ruleData - ? { - 'rule.uuid': ruleData.rule.uuid, - 'rule.id': ruleData.rule.id, - 'rule.name': ruleData.rule.name, - 'rule.category': ruleData.rule.category, - 'kibana.rac.producer': ruleData.producer, - tags: ruleData.tags, - } - : {}; - - const client: ScopedRuleRegistryClient = { - search: async (searchRequest) => { - const fields = [ - 'rule.id', - ...(searchRequest.body?.fields ? castArray(searchRequest.body.fields) : []), - ]; - - const response = await scopedClusterClient.asInternalUser.search({ - ...searchRequest, - index: indexTarget, - body: { - ...searchRequest.body, - query: { - bool: { - filter: [ - { terms: { 'rule.uuid': ruleUuids } }, - ...compact([searchRequest.body?.query]), - ], - }, - }, - fields, - }, - }); - - return { - body: response.body as any, - events: compact( - response.body.hits.hits.map((hit) => { - const ruleTypeId: string = hit.fields!['rule.id'][0]; - - const registryOfType = registry.getRegistryByRuleTypeId(ruleTypeId); - - if (ruleTypeId && !registryOfType) { - logger.warn( - `Could not find type ${ruleTypeId} in registry, decoding with default type` - ); - } - - const type = registryOfType?.getFieldMapType() ?? fieldmapType; - - const validation = type.decode(hit.fields); - if (isLeft(validation)) { - const error = createPathReporterError(validation); - logger.error(error); - return undefined; - } - return type.encode(validation.right); - }) - ) as EventsOf, - }; - }, - getDynamicIndexPattern: async () => { - const indexPatternsFetcher = new IndexPatternsFetcher(scopedClusterClient.asInternalUser); - - const fields = await indexPatternsFetcher.getFieldsForWildcard({ - pattern: indexTarget, - }); - - return { - fields, - timeFieldName: '@timestamp', - title: indexTarget, - }; - }, - index: (doc) => { - const validation = fieldmapType.decode({ - ...doc, - ...defaults, - }); - - if (isLeft(validation)) { - throw createPathReporterError(validation); - } - - clusterClientAdapter.indexDocument({ - body: validation.right, - index: indexAliasName, - }); - }, - bulkIndex: (docs) => { - const validations = docs.map((doc) => { - return fieldmapType.decode({ - ...doc, - ...defaults, - }); - }); - - const errors = compact( - validations.map((validation) => - isLeft(validation) ? createPathReporterError(validation) : null - ) - ); - - errors.forEach((error) => { - logger.error(error); - }); - - const operations = compact( - validations.map((validation) => (isRight(validation) ? validation.right : null)) - ).map((doc) => ({ body: doc, index: indexAliasName })); - - return clusterClientAdapter.indexDocuments(operations); - }, - }; - - // @ts-expect-error: We can't use ScopedRuleRegistryClient - // when creating the client, due to #41693 which will be fixed in 4.2 - return client; -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts b/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts deleted file mode 100644 index f7b2394fe3a32..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/create_scoped_rule_registry_client/types.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FieldDescriptor } from 'src/plugins/data/server'; -import { ESSearchRequest, ESSearchResponse } from 'typings/elasticsearch'; -import { - PatternsUnionOf, - PickWithPatterns, - OutputOfFieldMap, - BaseRuleFieldMap, -} from '../../../common'; - -export type PrepopulatedRuleEventFields = keyof Pick< - BaseRuleFieldMap, - 'rule.uuid' | 'rule.id' | 'rule.name' | 'rule.category' | 'kibana.rac.producer' ->; - -type FieldsOf = - | Array<{ field: PatternsUnionOf } | PatternsUnionOf> - | PatternsUnionOf; - -type Fields = Array<{ field: TPattern } | TPattern> | TPattern; - -type FieldsESSearchRequest = ESSearchRequest & { - body?: { fields: FieldsOf }; -}; - -export type EventsOf< - TFieldsESSearchRequest extends ESSearchRequest, - TFieldMap extends BaseRuleFieldMap -> = TFieldsESSearchRequest extends { body: { fields: infer TFields } } - ? TFields extends Fields - ? Array>> - : never - : never; - -export interface ScopedRuleRegistryClient { - search>( - request: TSearchRequest - ): Promise<{ - body: ESSearchResponse; - events: EventsOf; - }>; - getDynamicIndexPattern(): Promise<{ - title: string; - timeFieldName: string; - fields: FieldDescriptor[]; - }>; - index(doc: Omit, PrepopulatedRuleEventFields>): void; - bulkIndex( - doc: Array, PrepopulatedRuleEventFields>> - ): Promise; -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/index.ts b/x-pack/plugins/rule_registry/server/rule_registry/index.ts deleted file mode 100644 index bbc381f60a809..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/index.ts +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { CoreSetup, Logger, RequestHandlerContext } from 'kibana/server'; -import { inspect } from 'util'; -import { AlertsClient } from '../../../alerting/server'; -import { SpacesServiceStart } from '../../../spaces/server'; -import { - ActionVariable, - AlertInstanceState, - AlertTypeParams, - AlertTypeState, -} from '../../../alerting/common'; -import { createReadySignal, ClusterClientAdapter } from '../../../event_log/server'; -import { ILMPolicy } from './types'; -import { RuleParams, RuleType } from '../types'; -import { - mergeFieldMaps, - TypeOfFieldMap, - FieldMap, - FieldMapType, - BaseRuleFieldMap, - runtimeTypeFromFieldMap, -} from '../../common'; -import { mappingFromFieldMap } from './field_map/mapping_from_field_map'; -import { PluginSetupContract as AlertingPluginSetupContract } from '../../../alerting/server'; -import { createScopedRuleRegistryClient } from './create_scoped_rule_registry_client'; -import { ScopedRuleRegistryClient } from './create_scoped_rule_registry_client/types'; - -interface RuleRegistryOptions { - kibanaIndex: string; - kibanaVersion: string; - name: string; - logger: Logger; - coreSetup: CoreSetup; - spacesStart?: SpacesServiceStart; - fieldMap: TFieldMap; - ilmPolicy: ILMPolicy; - alertingPluginSetupContract: AlertingPluginSetupContract; - writeEnabled: boolean; -} - -export class RuleRegistry { - private readonly esAdapter: ClusterClientAdapter<{ - body: TypeOfFieldMap; - index: string; - }>; - private readonly children: Array> = []; - private readonly types: Array> = []; - - private readonly fieldmapType: FieldMapType; - - constructor(private readonly options: RuleRegistryOptions) { - const { logger, coreSetup } = options; - - this.fieldmapType = runtimeTypeFromFieldMap(options.fieldMap); - - const { wait, signal } = createReadySignal(); - - this.esAdapter = new ClusterClientAdapter<{ - body: TypeOfFieldMap; - index: string; - }>({ - wait, - elasticsearchClientPromise: coreSetup - .getStartServices() - .then(([{ elasticsearch }]) => elasticsearch.client.asInternalUser), - logger: logger.get('esAdapter'), - }); - - if (this.options.writeEnabled) { - this.initialize() - .then(() => { - this.options.logger.debug('Bootstrapped alerts index'); - signal(true); - }) - .catch((err) => { - logger.error(inspect(err, { depth: null })); - signal(false); - }); - } else { - logger.debug('Write disabled, indices are not being bootstrapped'); - } - } - - private getEsNames() { - const base = [this.options.kibanaIndex, this.options.name]; - const indexTarget = `${base.join('-')}*`; - const indexAliasName = [...base, this.options.kibanaVersion.toLowerCase()].join('-'); - const policyName = [...base, 'policy'].join('-'); - - return { - indexAliasName, - indexTarget, - policyName, - }; - } - - private async initialize() { - const { indexAliasName, policyName } = this.getEsNames(); - - const ilmPolicyExists = await this.esAdapter.doesIlmPolicyExist(policyName); - - if (!ilmPolicyExists) { - await this.esAdapter.createIlmPolicy( - policyName, - (this.options.ilmPolicy as unknown) as Record - ); - } - - const templateExists = await this.esAdapter.doesIndexTemplateExist(indexAliasName); - - const mappings = mappingFromFieldMap(this.options.fieldMap); - - const esClient = (await this.options.coreSetup.getStartServices())[0].elasticsearch.client - .asInternalUser; - - if (!templateExists) { - await this.esAdapter.createIndexTemplate(indexAliasName, { - index_patterns: [`${indexAliasName}-*`], - settings: { - number_of_shards: 1, - auto_expand_replicas: '0-1', - 'index.lifecycle.name': policyName, - 'index.lifecycle.rollover_alias': indexAliasName, - 'sort.field': '@timestamp', - 'sort.order': 'desc', - }, - mappings, - }); - } else { - await esClient.indices.putTemplate({ - name: indexAliasName, - body: { - index_patterns: [`${indexAliasName}-*`], - mappings, - }, - create: false, - }); - } - - const aliasExists = await this.esAdapter.doesAliasExist(indexAliasName); - - if (!aliasExists) { - await this.esAdapter.createIndex(`${indexAliasName}-000001`, { - aliases: { - [indexAliasName]: { - is_write_index: true, - }, - }, - }); - } else { - const { body: aliases } = (await esClient.indices.getAlias({ - index: indexAliasName, - })) as { body: Record }> }; - - const writeIndex = Object.entries(aliases).find( - ([indexName, alias]) => alias.aliases[indexAliasName]?.is_write_index === true - )![0]; - - const { body: fieldsInWriteIndex } = await esClient.fieldCaps({ - index: writeIndex, - fields: '*', - }); - - const fieldsNotOrDifferentInIndex = Object.entries(this.options.fieldMap).filter( - ([fieldName, descriptor]) => { - return ( - !fieldsInWriteIndex.fields[fieldName] || - !fieldsInWriteIndex.fields[fieldName][descriptor.type] - ); - } - ); - - if (fieldsNotOrDifferentInIndex.length > 0) { - this.options.logger.debug( - `Some fields were not found in write index mapping: ${Object.keys( - Object.fromEntries(fieldsNotOrDifferentInIndex) - ).join(',')}` - ); - this.options.logger.info(`Updating index mapping due to new fields`); - - await esClient.indices.putMapping({ - index: indexAliasName, - body: mappings, - }); - } - } - } - - getFieldMapType() { - return this.fieldmapType; - } - - getRuleTypeById(ruleTypeId: string) { - return this.types.find((type) => type.id === ruleTypeId); - } - - getRegistryByRuleTypeId(ruleTypeId: string): RuleRegistry | undefined { - if (this.getRuleTypeById(ruleTypeId)) { - return this; - } - - return this.children.find((child) => child.getRegistryByRuleTypeId(ruleTypeId)); - } - - async createScopedRuleRegistryClient({ - context, - alertsClient, - }: { - context: RequestHandlerContext; - alertsClient: AlertsClient; - }): Promise | undefined> { - if (!this.options.writeEnabled) { - return undefined; - } - const { indexAliasName, indexTarget } = this.getEsNames(); - - const frameworkAlerts = ( - await alertsClient.find({ - options: { - perPage: 1000, - }, - }) - ).data; - - return createScopedRuleRegistryClient({ - ruleUuids: frameworkAlerts.map((frameworkAlert) => frameworkAlert.id), - scopedClusterClient: context.core.elasticsearch.client, - clusterClientAdapter: this.esAdapter, - registry: this, - indexAliasName, - indexTarget, - logger: this.options.logger, - }); - } - - registerType( - type: RuleType - ) { - const logger = this.options.logger.get(type.id); - - const { indexAliasName, indexTarget } = this.getEsNames(); - - this.types.push(type); - - this.options.alertingPluginSetupContract.registerType< - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - { [key in TActionVariable['name']]: any }, - string - >({ - ...type, - executor: async (executorOptions) => { - const { services, alertId, name, tags } = executorOptions; - - const rule = { - id: type.id, - uuid: alertId, - category: type.name, - name, - }; - - const producer = type.producer; - - return type.executor({ - ...executorOptions, - rule, - producer, - services: { - ...services, - logger, - ...(this.options.writeEnabled - ? { - scopedRuleRegistryClient: createScopedRuleRegistryClient({ - scopedClusterClient: services.scopedClusterClient, - ruleUuids: [rule.uuid], - clusterClientAdapter: this.esAdapter, - registry: this, - indexAliasName, - indexTarget, - ruleData: { - producer, - rule, - tags, - }, - logger: this.options.logger, - }), - } - : {}), - }, - }); - }, - }); - } - - create({ - name, - fieldMap, - ilmPolicy, - }: { - name: string; - fieldMap: TNextFieldMap; - ilmPolicy?: ILMPolicy; - }): RuleRegistry { - const mergedFieldMap = fieldMap - ? mergeFieldMaps(this.options.fieldMap, fieldMap) - : this.options.fieldMap; - - const child = new RuleRegistry({ - ...this.options, - logger: this.options.logger.get(name), - name: [this.options.name, name].filter(Boolean).join('-'), - fieldMap: mergedFieldMap, - ...(ilmPolicy ? { ilmPolicy } : {}), - }); - - this.children.push(child); - - // @ts-expect-error could be instantiated with a different subtype of constraint - return child; - } -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts b/x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts deleted file mode 100644 index 65eaf0964cfca..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/rule_type_helpers/create_lifecycle_rule_type_factory.ts +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import * as t from 'io-ts'; -import { isLeft } from 'fp-ts/lib/Either'; -import v4 from 'uuid/v4'; -import { Mutable } from 'utility-types'; -import { AlertInstance } from '../../../../alerting/server'; -import { ActionVariable, AlertInstanceState } from '../../../../alerting/common'; -import { RuleParams, RuleType } from '../../types'; -import { BaseRuleFieldMap, OutputOfFieldMap } from '../../../common'; -import { PrepopulatedRuleEventFields } from '../create_scoped_rule_registry_client/types'; -import { RuleRegistry } from '..'; - -type UserDefinedAlertFields = Omit< - OutputOfFieldMap, - PrepopulatedRuleEventFields | 'kibana.rac.alert.id' | 'kibana.rac.alert.uuid' | '@timestamp' ->; - -type LifecycleAlertService< - TFieldMap extends BaseRuleFieldMap, - TActionVariable extends ActionVariable -> = (alert: { - id: string; - fields: UserDefinedAlertFields; -}) => AlertInstance; - -type CreateLifecycleRuleType = < - TRuleParams extends RuleParams, - TActionVariable extends ActionVariable ->( - type: RuleType< - TFieldMap, - TRuleParams, - TActionVariable, - { alertWithLifecycle: LifecycleAlertService } - > -) => RuleType; - -const trackedAlertStateRt = t.type({ - alertId: t.string, - alertUuid: t.string, - started: t.string, -}); - -const wrappedStateRt = t.type({ - wrapped: t.record(t.string, t.unknown), - trackedAlerts: t.record(t.string, trackedAlertStateRt), -}); - -export function createLifecycleRuleTypeFactory< - TRuleRegistry extends RuleRegistry ->(): TRuleRegistry extends RuleRegistry - ? CreateLifecycleRuleType - : never; - -export function createLifecycleRuleTypeFactory(): CreateLifecycleRuleType { - return (type) => { - return { - ...type, - executor: async (options) => { - const { - services: { scopedRuleRegistryClient, alertInstanceFactory, logger }, - state: previousState, - rule, - } = options; - - const decodedState = wrappedStateRt.decode(previousState); - - const state = isLeft(decodedState) - ? { - wrapped: previousState, - trackedAlerts: {}, - } - : decodedState.right; - - const currentAlerts: Record< - string, - UserDefinedAlertFields & { 'kibana.rac.alert.id': string } - > = {}; - - const timestamp = options.startedAt.toISOString(); - - const nextWrappedState = await type.executor({ - ...options, - state: state.wrapped, - services: { - ...options.services, - alertWithLifecycle: ({ id, fields }) => { - currentAlerts[id] = { - ...fields, - 'kibana.rac.alert.id': id, - }; - return alertInstanceFactory(id); - }, - }, - }); - - const currentAlertIds = Object.keys(currentAlerts); - const trackedAlertIds = Object.keys(state.trackedAlerts); - const newAlertIds = currentAlertIds.filter((alertId) => !trackedAlertIds.includes(alertId)); - - const allAlertIds = [...new Set(currentAlertIds.concat(trackedAlertIds))]; - - const trackedAlertStatesOfRecovered = Object.values(state.trackedAlerts).filter( - (trackedAlertState) => !currentAlerts[trackedAlertState.alertId] - ); - - logger.debug( - `Tracking ${allAlertIds.length} alerts (${newAlertIds.length} new, ${trackedAlertStatesOfRecovered.length} recovered)` - ); - - const alertsDataMap: Record> = { - ...currentAlerts, - }; - - if (scopedRuleRegistryClient && trackedAlertStatesOfRecovered.length) { - const { events } = await scopedRuleRegistryClient.search({ - body: { - query: { - bool: { - filter: [ - { - term: { - 'rule.uuid': rule.uuid, - }, - }, - { - terms: { - 'kibana.rac.alert.uuid': trackedAlertStatesOfRecovered.map( - (trackedAlertState) => trackedAlertState.alertUuid - ), - }, - }, - ], - }, - }, - size: trackedAlertStatesOfRecovered.length, - collapse: { - field: 'kibana.rac.alert.uuid', - }, - _source: false, - fields: ['*'], - sort: { - '@timestamp': 'desc' as const, - }, - }, - }); - - events.forEach((event) => { - const alertId = event['kibana.rac.alert.id']!; - alertsDataMap[alertId] = event; - }); - } - - const eventsToIndex: Array> = allAlertIds.map( - (alertId) => { - const alertData = alertsDataMap[alertId]; - - if (!alertData) { - logger.warn(`Could not find alert data for ${alertId}`); - } - - const event: Mutable> = { - ...alertData, - '@timestamp': timestamp, - 'event.kind': 'state', - 'kibana.rac.alert.id': alertId, - }; - - const isNew = !state.trackedAlerts[alertId]; - const isRecovered = !currentAlerts[alertId]; - const isActiveButNotNew = !isNew && !isRecovered; - const isActive = !isRecovered; - - const { alertUuid, started } = state.trackedAlerts[alertId] ?? { - alertUuid: v4(), - started: timestamp, - }; - - event['kibana.rac.alert.start'] = started; - event['kibana.rac.alert.uuid'] = alertUuid; - - if (isNew) { - event['event.action'] = 'open'; - } - - if (isRecovered) { - event['kibana.rac.alert.end'] = timestamp; - event['event.action'] = 'close'; - event['kibana.rac.alert.status'] = 'closed'; - } - - if (isActiveButNotNew) { - event['event.action'] = 'active'; - } - - if (isActive) { - event['kibana.rac.alert.status'] = 'open'; - } - - event['kibana.rac.alert.duration.us'] = - (options.startedAt.getTime() - new Date(event['kibana.rac.alert.start']!).getTime()) * - 1000; - - return event; - } - ); - - if (eventsToIndex.length && scopedRuleRegistryClient) { - await scopedRuleRegistryClient.bulkIndex(eventsToIndex); - } - - const nextTrackedAlerts = Object.fromEntries( - eventsToIndex - .filter((event) => event['kibana.rac.alert.status'] !== 'closed') - .map((event) => { - const alertId = event['kibana.rac.alert.id']!; - const alertUuid = event['kibana.rac.alert.uuid']!; - const started = new Date(event['kibana.rac.alert.start']!).toISOString(); - return [alertId, { alertId, alertUuid, started }]; - }) - ); - - return { - wrapped: nextWrappedState, - trackedAlerts: nextTrackedAlerts, - }; - }, - }; - }; -} diff --git a/x-pack/plugins/rule_registry/server/rule_registry/types.ts b/x-pack/plugins/rule_registry/server/rule_registry/types.ts deleted file mode 100644 index ec7293d1c1d4c..0000000000000 --- a/x-pack/plugins/rule_registry/server/rule_registry/types.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export interface Mappings { - dynamic: 'strict' | boolean; - properties: Record; -} - -enum ILMPolicyPhase { - hot = 'hot', - delete = 'delete', -} - -enum ILMPolicyAction { - rollover = 'rollover', - delete = 'delete', -} - -interface ILMActionOptions { - [ILMPolicyAction.rollover]: { - max_size: string; - max_age: string; - }; - [ILMPolicyAction.delete]: {}; -} - -export interface ILMPolicy { - policy: { - phases: Record< - ILMPolicyPhase, - { - actions: { - [key in keyof ILMActionOptions]?: ILMActionOptions[key]; - }; - } - >; - }; -} diff --git a/x-pack/plugins/rule_registry/server/types.ts b/x-pack/plugins/rule_registry/server/types.ts index dd54046365d98..959c05fd1334e 100644 --- a/x-pack/plugins/rule_registry/server/types.ts +++ b/x-pack/plugins/rule_registry/server/types.ts @@ -4,97 +4,37 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Type, TypeOf } from '@kbn/config-schema'; -import { Logger } from 'kibana/server'; + import { - ActionVariable, AlertInstanceContext, AlertInstanceState, AlertTypeParams, AlertTypeState, } from '../../alerting/common'; -import { ActionGroup, AlertExecutorOptions } from '../../alerting/server'; -import { RuleRegistry } from './rule_registry'; -import { ScopedRuleRegistryClient } from './rule_registry/create_scoped_rule_registry_client/types'; -import { BaseRuleFieldMap } from '../common'; - -export type RuleParams = Type; +import { AlertType } from '../../alerting/server'; -type TypeOfRuleParams = TypeOf; +type SimpleAlertType< + TParams extends AlertTypeParams = {}, + TAlertInstanceContext extends AlertInstanceContext = {} +> = AlertType; -type RuleExecutorServices< - TFieldMap extends BaseRuleFieldMap, - TActionVariable extends ActionVariable -> = AlertExecutorOptions< - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - { [key in TActionVariable['name']]: any }, - string ->['services'] & { - logger: Logger; - scopedRuleRegistryClient?: ScopedRuleRegistryClient; -}; - -type PassthroughAlertExecutorOptions = Pick< - AlertExecutorOptions< - AlertTypeParams, - AlertTypeState, - AlertInstanceState, - AlertInstanceContext, - string - >, - 'previousStartedAt' | 'startedAt' | 'state' ->; - -type RuleExecutorFunction< - TFieldMap extends BaseRuleFieldMap, - TRuleParams extends RuleParams, - TActionVariable extends ActionVariable, - TAdditionalRuleExecutorServices extends Record +export type AlertTypeExecutor< + TParams extends AlertTypeParams = {}, + TAlertInstanceContext extends AlertInstanceContext = {}, + TServices extends Record = {} > = ( - options: PassthroughAlertExecutorOptions & { - services: RuleExecutorServices & TAdditionalRuleExecutorServices; - params: TypeOfRuleParams; - rule: { - id: string; - uuid: string; - name: string; - category: string; - }; - producer: string; + options: Parameters['executor']>[0] & { + services: TServices; } -) => Promise>; - -interface RuleTypeBase { - id: string; - name: string; - actionGroups: Array>; - defaultActionGroupId: string; - producer: string; - minimumLicenseRequired: 'basic' | 'gold' | 'trial'; -} - -export type RuleType< - TFieldMap extends BaseRuleFieldMap, - TRuleParams extends RuleParams, - TActionVariable extends ActionVariable, - TAdditionalRuleExecutorServices extends Record = {} -> = RuleTypeBase & { - validate: { - params: TRuleParams; - }; - actionVariables: { - context: TActionVariable[]; - }; - executor: RuleExecutorFunction< - TFieldMap, - TRuleParams, - TActionVariable, - TAdditionalRuleExecutorServices - >; +) => Promise; + +export type AlertTypeWithExecutor< + TParams extends AlertTypeParams = {}, + TAlertInstanceContext extends AlertInstanceContext = {}, + TServices extends Record = {} +> = Omit< + AlertType, + 'executor' +> & { + executor: AlertTypeExecutor; }; - -export type FieldMapOf< - TRuleRegistry extends RuleRegistry -> = TRuleRegistry extends RuleRegistry ? TFieldMap : never; diff --git a/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts new file mode 100644 index 0000000000000..b523dd6770b9f --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/create_lifecycle_rule_type_factory.ts @@ -0,0 +1,246 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { Logger } from '@kbn/logging'; +import { isLeft } from 'fp-ts/lib/Either'; +import * as t from 'io-ts'; +import { Mutable } from 'utility-types'; +import v4 from 'uuid/v4'; +import { AlertInstance } from '../../../alerting/server'; +import { RuleDataClient } from '..'; +import { + AlertInstanceContext, + AlertInstanceState, + AlertTypeParams, +} from '../../../alerting/common'; +import { + ALERT_DURATION, + ALERT_END, + ALERT_ID, + ALERT_START, + ALERT_STATUS, + ALERT_UUID, + EVENT_ACTION, + EVENT_KIND, + RULE_UUID, + TIMESTAMP, +} from '../../common/technical_rule_data_field_names'; +import { AlertTypeWithExecutor } from '../types'; +import { ParsedTechnicalFields, parseTechnicalFields } from '../../common/parse_technical_fields'; +import { getRuleExecutorData } from './get_rule_executor_data'; + +type LifecycleAlertService> = (alert: { + id: string; + fields: Record; +}) => AlertInstance; + +const trackedAlertStateRt = t.type({ + alertId: t.string, + alertUuid: t.string, + started: t.string, +}); + +const wrappedStateRt = t.type({ + wrapped: t.record(t.string, t.unknown), + trackedAlerts: t.record(t.string, trackedAlertStateRt), +}); + +type CreateLifecycleRuleTypeFactory = (options: { + ruleDataClient: RuleDataClient; + logger: Logger; +}) => < + TParams extends AlertTypeParams, + TAlertInstanceContext extends AlertInstanceContext, + TServices extends { alertWithLifecycle: LifecycleAlertService } +>( + type: AlertTypeWithExecutor +) => AlertTypeWithExecutor; + +export const createLifecycleRuleTypeFactory: CreateLifecycleRuleTypeFactory = ({ + logger, + ruleDataClient, +}) => (type) => { + return { + ...type, + executor: async (options) => { + const { + services: { alertInstanceFactory }, + state: previousState, + } = options; + + const ruleExecutorData = getRuleExecutorData(type, options); + + const decodedState = wrappedStateRt.decode(previousState); + + const state = isLeft(decodedState) + ? { + wrapped: previousState, + trackedAlerts: {}, + } + : decodedState.right; + + const currentAlerts: Record = {}; + + const timestamp = options.startedAt.toISOString(); + + const nextWrappedState = await type.executor({ + ...options, + state: state.wrapped, + services: { + ...options.services, + alertWithLifecycle: ({ id, fields }) => { + currentAlerts[id] = { + ...fields, + [ALERT_ID]: id, + }; + return alertInstanceFactory(id); + }, + }, + }); + + const currentAlertIds = Object.keys(currentAlerts); + const trackedAlertIds = Object.keys(state.trackedAlerts); + const newAlertIds = currentAlertIds.filter((alertId) => !trackedAlertIds.includes(alertId)); + + const allAlertIds = [...new Set(currentAlertIds.concat(trackedAlertIds))]; + + const trackedAlertStatesOfRecovered = Object.values(state.trackedAlerts).filter( + (trackedAlertState) => !currentAlerts[trackedAlertState.alertId] + ); + + logger.debug( + `Tracking ${allAlertIds.length} alerts (${newAlertIds.length} new, ${trackedAlertStatesOfRecovered.length} recovered)` + ); + + const alertsDataMap: Record< + string, + { + [ALERT_ID]: string; + } + > = { + ...currentAlerts, + }; + + if (trackedAlertStatesOfRecovered.length) { + const { hits } = await ruleDataClient.getReader().search({ + body: { + query: { + bool: { + filter: [ + { + term: { + [RULE_UUID]: ruleExecutorData[RULE_UUID], + }, + }, + { + terms: { + [ALERT_UUID]: trackedAlertStatesOfRecovered.map( + (trackedAlertState) => trackedAlertState.alertUuid + ), + }, + }, + ], + }, + }, + size: trackedAlertStatesOfRecovered.length, + collapse: { + field: ALERT_UUID, + }, + _source: false, + fields: [{ field: '*', include_unmapped: true }], + sort: { + [TIMESTAMP]: 'desc' as const, + }, + }, + allow_no_indices: true, + }); + + hits.hits.forEach((hit) => { + const fields = parseTechnicalFields(hit.fields); + const alertId = fields[ALERT_ID]!; + alertsDataMap[alertId] = { + ...fields, + [ALERT_ID]: alertId, + }; + }); + } + + const eventsToIndex = allAlertIds.map((alertId) => { + const alertData = alertsDataMap[alertId]; + + if (!alertData) { + logger.warn(`Could not find alert data for ${alertId}`); + } + + const event: Mutable = { + ...alertData, + ...ruleExecutorData, + [TIMESTAMP]: timestamp, + [EVENT_KIND]: 'state', + [ALERT_ID]: alertId, + }; + + const isNew = !state.trackedAlerts[alertId]; + const isRecovered = !currentAlerts[alertId]; + const isActiveButNotNew = !isNew && !isRecovered; + const isActive = !isRecovered; + + const { alertUuid, started } = state.trackedAlerts[alertId] ?? { + alertUuid: v4(), + started: timestamp, + }; + + event[ALERT_START] = started; + event[ALERT_UUID] = alertUuid; + + if (isNew) { + event[EVENT_ACTION] = 'open'; + } + + if (isRecovered) { + event[ALERT_END] = timestamp; + event[EVENT_ACTION] = 'close'; + event[ALERT_STATUS] = 'closed'; + } + + if (isActiveButNotNew) { + event[EVENT_ACTION] = 'active'; + } + + if (isActive) { + event[ALERT_STATUS] = 'open'; + } + + event[ALERT_DURATION] = + (options.startedAt.getTime() - new Date(event[ALERT_START]!).getTime()) * 1000; + + return event; + }); + + if (eventsToIndex.length) { + await ruleDataClient.getWriter().bulk({ + body: eventsToIndex.flatMap((event) => [{ index: {} }, event]), + }); + } + + const nextTrackedAlerts = Object.fromEntries( + eventsToIndex + .filter((event) => event[ALERT_STATUS] !== 'closed') + .map((event) => { + const alertId = event[ALERT_ID]!; + const alertUuid = event[ALERT_UUID]!; + const started = new Date(event[ALERT_START]!).toISOString(); + return [alertId, { alertId, alertUuid, started }]; + }) + ); + + return { + wrapped: nextWrappedState, + trackedAlerts: nextTrackedAlerts, + }; + }, + }; +}; diff --git a/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts b/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts new file mode 100644 index 0000000000000..1ea640add7b48 --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/get_rule_executor_data.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + PRODUCER, + RULE_CATEGORY, + RULE_ID, + RULE_NAME, + RULE_UUID, + TAGS, +} from '../../common/technical_rule_data_field_names'; +import { AlertTypeExecutor, AlertTypeWithExecutor } from '../types'; + +export interface RuleExecutorData { + [RULE_CATEGORY]: string; + [RULE_ID]: string; + [RULE_UUID]: string; + [RULE_NAME]: string; + [PRODUCER]: string; + [TAGS]: string[]; +} + +export function getRuleExecutorData( + type: AlertTypeWithExecutor, + options: Parameters[0] +) { + return { + [RULE_ID]: type.id, + [RULE_UUID]: options.alertId, + [RULE_CATEGORY]: type.name, + [RULE_NAME]: options.name, + [TAGS]: options.tags, + [PRODUCER]: type.producer, + }; +} diff --git a/x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts b/x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts new file mode 100644 index 0000000000000..02ff6b10f74cf --- /dev/null +++ b/x-pack/plugins/rule_registry/server/utils/with_rule_data_client_factory.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AlertInstanceContext, AlertTypeParams } from '../../../alerting/common'; +import { RuleDataClient } from '../rule_data_client'; +import { AlertTypeWithExecutor } from '../types'; + +export const withRuleDataClientFactory = (ruleDataClient: RuleDataClient) => < + TParams extends AlertTypeParams, + TAlertInstanceContext extends AlertInstanceContext, + TServices extends Record = {} +>( + type: AlertTypeWithExecutor< + TParams, + TAlertInstanceContext, + TServices & { ruleDataClient: RuleDataClient } + > +): AlertTypeWithExecutor< + TParams, + TAlertInstanceContext, + TServices & { ruleDataClient: RuleDataClient } +> => { + return { + ...type, + executor: (options) => { + return type.executor({ + ...options, + services: { + ...options.services, + ruleDataClient, + }, + }); + }, + }; +}; diff --git a/x-pack/test/apm_api_integration/configs/index.ts b/x-pack/test/apm_api_integration/configs/index.ts index 97d18c2419840..3393580153215 100644 --- a/x-pack/test/apm_api_integration/configs/index.ts +++ b/x-pack/test/apm_api_integration/configs/index.ts @@ -18,7 +18,7 @@ const apmFtrConfigs = { rules: { license: 'trial' as const, kibanaConfig: { - 'xpack.ruleRegistry.unsafe.write.enabled': 'true', + 'xpack.ruleRegistry.index': '.kibana-alerts', }, }, }; diff --git a/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts b/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts index 8d0b87782ff7c..e0a3e4d3a3f8b 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/rule_registry.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { get, merge, omit } from 'lodash'; +import { merge, omit } from 'lodash'; import { format } from 'url'; import { FtrProviderContext } from '../../common/ftr_provider_context'; import { registry } from '../../common/registry'; @@ -30,7 +30,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const supertest = getService('supertestAsApmWriteUser'); const es = getService('es'); - const MAX_POLLS = 5; + const MAX_POLLS = 10; const BULK_INDEX_DELAY = 1000; const INDEXING_DELAY = 5000; @@ -108,11 +108,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { } registry.when('Rule registry with write enabled', { config: 'rules', archives: [] }, () => { - it('bootstraps the apm alert indices', async () => { + it('does not bootstrap indices on plugin startup', async () => { const { body } = await es.indices.get({ index: ALERTS_INDEX_TARGET, expand_wildcards: 'open', - allow_no_indices: false, + allow_no_indices: true, }); const indices = Object.entries(body).map(([indexName, index]) => { @@ -122,23 +122,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }; }); - const indexNames = indices.map((index) => index.indexName); - - const apmIndex = indices[0]; - - // make sure it only creates one index - expect(indices.length).to.be(1); - - const apmIndexName = apmIndex.indexName; - - expect(apmIndexName.split('-').includes('observability')).to.be(true); - expect(apmIndexName.split('-').includes('apm')).to.be(true); - - expect(indexNames[0].startsWith('.kibana-alerts-observability-apm')).to.be(true); - - expect(get(apmIndex, 'index.mappings.properties.service.properties.environment.type')).to.be( - 'keyword' - ); + expect(indices.length).to.be(0); }); describe('when creating a rule', () => { @@ -335,12 +319,14 @@ export default function ApiTest({ getService }: FtrProviderContext) { sort: { '@timestamp': 'desc', }, + _source: false, + fields: [{ field: '*', include_unmapped: true }], }, }); expect(afterViolatingDataResponse.body.hits.hits.length).to.be(1); - const alertEvent = afterViolatingDataResponse.body.hits.hits[0]._source as Record< + const alertEvent = afterViolatingDataResponse.body.hits.hits[0].fields as Record< string, any >; @@ -354,23 +340,56 @@ export default function ApiTest({ getService }: FtrProviderContext) { const toCompare = omit(alertEvent, exclude); - expect(toCompare).to.eql({ - 'event.action': 'open', - 'event.kind': 'state', - 'kibana.rac.alert.duration.us': 0, - 'kibana.rac.alert.id': 'apm.transaction_error_rate_opbeans-go_request', - 'kibana.rac.alert.status': 'open', - 'kibana.rac.producer': 'apm', - 'kibana.observability.evaluation.threshold': 30, - 'kibana.observability.evaluation.value': 50, - 'processor.event': 'transaction', - 'rule.category': 'Transaction error rate threshold', - 'rule.id': 'apm.transaction_error_rate', - 'rule.name': 'Transaction error rate threshold | opbeans-go', - 'service.name': 'opbeans-go', - tags: ['apm', 'service.name:opbeans-go'], - 'transaction.type': 'request', - }); + expectSnapshot(toCompare).toMatchInline(` + Object { + "event.action": Array [ + "open", + ], + "event.kind": Array [ + "state", + ], + "kibana.rac.alert.duration.us": Array [ + 0, + ], + "kibana.rac.alert.evaluation.threshold": Array [ + 30, + ], + "kibana.rac.alert.evaluation.value": Array [ + 50, + ], + "kibana.rac.alert.id": Array [ + "apm.transaction_error_rate_opbeans-go_request", + ], + "kibana.rac.alert.producer": Array [ + "apm", + ], + "kibana.rac.alert.status": Array [ + "open", + ], + "processor.event": Array [ + "transaction", + ], + "rule.category": Array [ + "Transaction error rate threshold", + ], + "rule.id": Array [ + "apm.transaction_error_rate", + ], + "rule.name": Array [ + "Transaction error rate threshold | opbeans-go", + ], + "service.name": Array [ + "opbeans-go", + ], + "tags": Array [ + "apm", + "service.name:opbeans-go", + ], + "transaction.type": Array [ + "request", + ], + } + `); const now = new Date().getTime(); @@ -390,7 +409,56 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(topAlerts.length).to.be.greaterThan(0); - expect(omit(topAlerts[0], exclude)).to.eql(toCompare); + expectSnapshot(omit(topAlerts[0], exclude)).toMatchInline(` + Object { + "event.action": Array [ + "open", + ], + "event.kind": Array [ + "state", + ], + "kibana.rac.alert.duration.us": Array [ + 0, + ], + "kibana.rac.alert.evaluation.threshold": Array [ + 30, + ], + "kibana.rac.alert.evaluation.value": Array [ + 50, + ], + "kibana.rac.alert.id": Array [ + "apm.transaction_error_rate_opbeans-go_request", + ], + "kibana.rac.alert.producer": Array [ + "apm", + ], + "kibana.rac.alert.status": Array [ + "open", + ], + "processor.event": Array [ + "transaction", + ], + "rule.category": Array [ + "Transaction error rate threshold", + ], + "rule.id": Array [ + "apm.transaction_error_rate", + ], + "rule.name": Array [ + "Transaction error rate threshold | opbeans-go", + ], + "service.name": Array [ + "opbeans-go", + ], + "tags": Array [ + "apm", + "service.name:opbeans-go", + ], + "transaction.type": Array [ + "request", + ], + } + `); await es.bulk({ index: APM_TRANSACTION_INDEX_NAME, @@ -423,43 +491,76 @@ export default function ApiTest({ getService }: FtrProviderContext) { sort: { '@timestamp': 'desc', }, + _source: false, + fields: [{ field: '*', include_unmapped: true }], }, }); expect(afterRecoveryResponse.body.hits.hits.length).to.be(1); - const recoveredAlertEvent = afterRecoveryResponse.body.hits.hits[0]._source as Record< + const recoveredAlertEvent = afterRecoveryResponse.body.hits.hits[0].fields as Record< string, any >; - expect(recoveredAlertEvent['kibana.rac.alert.status']).to.eql('closed'); - expect(recoveredAlertEvent['kibana.rac.alert.duration.us']).to.be.greaterThan(0); - expect(new Date(recoveredAlertEvent['kibana.rac.alert.end']).getTime()).to.be.greaterThan( - 0 - ); - + expect(recoveredAlertEvent['kibana.rac.alert.status']?.[0]).to.eql('closed'); + expect(recoveredAlertEvent['kibana.rac.alert.duration.us']?.[0]).to.be.greaterThan(0); expect( + new Date(recoveredAlertEvent['kibana.rac.alert.end']?.[0]).getTime() + ).to.be.greaterThan(0); + + expectSnapshot( omit( recoveredAlertEvent, exclude.concat(['kibana.rac.alert.duration.us', 'kibana.rac.alert.end']) ) - ).to.eql({ - 'event.action': 'close', - 'event.kind': 'state', - 'kibana.rac.alert.id': 'apm.transaction_error_rate_opbeans-go_request', - 'kibana.rac.alert.status': 'closed', - 'kibana.rac.producer': 'apm', - 'kibana.observability.evaluation.threshold': 30, - 'kibana.observability.evaluation.value': 50, - 'processor.event': 'transaction', - 'rule.category': 'Transaction error rate threshold', - 'rule.id': 'apm.transaction_error_rate', - 'rule.name': 'Transaction error rate threshold | opbeans-go', - 'service.name': 'opbeans-go', - tags: ['apm', 'service.name:opbeans-go'], - 'transaction.type': 'request', - }); + ).toMatchInline(` + Object { + "event.action": Array [ + "close", + ], + "event.kind": Array [ + "state", + ], + "kibana.rac.alert.evaluation.threshold": Array [ + 30, + ], + "kibana.rac.alert.evaluation.value": Array [ + 50, + ], + "kibana.rac.alert.id": Array [ + "apm.transaction_error_rate_opbeans-go_request", + ], + "kibana.rac.alert.producer": Array [ + "apm", + ], + "kibana.rac.alert.status": Array [ + "closed", + ], + "processor.event": Array [ + "transaction", + ], + "rule.category": Array [ + "Transaction error rate threshold", + ], + "rule.id": Array [ + "apm.transaction_error_rate", + ], + "rule.name": Array [ + "Transaction error rate threshold | opbeans-go", + ], + "service.name": Array [ + "opbeans-go", + ], + "tags": Array [ + "apm", + "service.name:opbeans-go", + ], + "transaction.type": Array [ + "request", + ], + } + `); const { body: topAlertsAfterRecovery, @@ -480,7 +581,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(topAlertsAfterRecovery.length).to.be(1); - expect(topAlertsAfterRecovery[0]['kibana.rac.alert.status']).to.be('closed'); + expect(topAlertsAfterRecovery[0]['kibana.rac.alert.status']?.[0]).to.be('closed'); }); }); }); diff --git a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts index 44cd2cda7e1af..50194552aec0a 100644 --- a/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts +++ b/x-pack/test/functional/apps/index_lifecycle_management/home_page.ts @@ -41,7 +41,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { return (await testSubjects.getVisibleText('sectionHeading')) === 'Index Lifecycle Policies'; }); + await pageObjects.indexLifecycleManagement.increasePolicyListPageSize(); + const allPolicies = await pageObjects.indexLifecycleManagement.getPolicyList(); + const filteredPolicies = allPolicies.filter(function (policy) { return policy.name === policyName; }); diff --git a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts index 525e0d91e2f4d..2dd70f8a95717 100644 --- a/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts +++ b/x-pack/test/functional/page_objects/index_lifecycle_management_page.ts @@ -69,6 +69,11 @@ export function IndexLifecycleManagementPageProvider({ getService }: FtrProvider await this.saveNewPolicy(); }, + async increasePolicyListPageSize() { + await testSubjects.click('tablePaginationPopoverButton'); + await testSubjects.click(`tablePagination-100-rows`); + }, + async getPolicyList() { const policies = await testSubjects.findAll('policyTableRow'); return mapAsync(policies, async (policy) => { diff --git a/yarn.lock b/yarn.lock index e5a0d40728f89..69d5c9553a3b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2698,6 +2698,10 @@ version "0.0.0" uid "" +"@kbn/rule-data-utils@link:packages/kbn-rule-data-utils": + version "0.0.0" + uid "" + "@kbn/securitysolution-constants@link:bazel-bin/packages/kbn-securitysolution-constants/npm_module": version "0.0.0" uid "" From c4529fa52477e682af6bc3704dec7ca0e8f173f8 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Thu, 13 May 2021 10:35:03 -0500 Subject: [PATCH 074/144] Clearing the global search bar will reset suggestions (#88637) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../global_search_bar/public/components/search_bar.test.tsx | 4 +--- .../global_search_bar/public/components/search_bar.tsx | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx index 94855ab0aa4ab..c8bd54540e6a6 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx @@ -66,9 +66,7 @@ describe('SearchBar', () => { }; const simulateTypeChar = async (text: string) => { - await waitFor(() => - getSearchProps(component).onKeyUpCapture({ currentTarget: { value: text } }) - ); + await waitFor(() => getSearchProps(component).onInput({ currentTarget: { value: text } })); }; const getDisplayedOptionsTitle = () => { diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx index dfe73512279ed..5234b4e7b0ad5 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx @@ -398,8 +398,7 @@ export function SearchBar({ } searchProps={{ - onKeyUpCapture: (e: React.KeyboardEvent) => - setSearchValue(e.currentTarget.value), + onInput: (e: React.UIEvent) => setSearchValue(e.currentTarget.value), 'data-test-subj': 'nav-search-input', inputRef: setSearchRef, compressed: true, From 548765770522f1a60bd378269957eb4bebd0fd49 Mon Sep 17 00:00:00 2001 From: Larry Gregory Date: Thu, 13 May 2021 12:25:29 -0400 Subject: [PATCH 075/144] Gracefully handle malformed index patterns on role management pages (#99918) --- .../public/management/roles/edit_role/edit_role_page.test.tsx | 3 ++- .../public/management/roles/edit_role/edit_role_page.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx index 5df73f7f8ec4e..b8963ea5a76e3 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.test.tsx @@ -143,7 +143,8 @@ function getProps({ rolesAPIClient.getRole.mockResolvedValue(role); const indexPatterns = dataPluginMock.createStartContract().indexPatterns; - indexPatterns.getTitles = jest.fn().mockResolvedValue(['foo*', 'bar*']); + // `undefined` titles can technically happen via import/export or other manual manipulation + indexPatterns.getTitles = jest.fn().mockResolvedValue(['foo*', 'bar*', undefined]); const indicesAPIClient = indicesAPIClientMock.create(); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx index f810cd2079d16..0f49aaf48c394 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/edit_role_page.tsx @@ -125,7 +125,7 @@ function useIndexPatternsTitles( fatalErrors.add(err); throw err; }) - .then(setIndexPatternsTitles); + .then((titles) => setIndexPatternsTitles(titles.filter(Boolean))); }, [fatalErrors, indexPatterns, notifications]); return indexPatternsTitles; From da048be1f485f128a4f03b7b09dcfe5cbaa1497f Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Thu, 13 May 2021 10:59:00 -0700 Subject: [PATCH 076/144] Skip flaky functional test suite https://github.com/elastic/kibana/issues/100060 Signed-off-by: Tyler Smalley --- test/plugin_functional/test_suites/doc_views/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/plugin_functional/test_suites/doc_views/index.ts b/test/plugin_functional/test_suites/doc_views/index.ts index 2fed8e10ffc8e..e02b9ac4646f6 100644 --- a/test/plugin_functional/test_suites/doc_views/index.ts +++ b/test/plugin_functional/test_suites/doc_views/index.ts @@ -11,7 +11,8 @@ import { PluginFunctionalProviderContext } from '../../services'; export default function ({ getService, loadTestFile }: PluginFunctionalProviderContext) { const esArchiver = getService('esArchiver'); - describe('doc views', function () { + // SKIPPED: https://github.com/elastic/kibana/issues/100060 + describe.skip('doc views', function () { before(async () => { await esArchiver.loadIfNeeded('../functional/fixtures/es_archiver/discover'); }); From f94bbc934372d5302eb04f716960daa446257590 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Thu, 13 May 2021 14:08:33 -0400 Subject: [PATCH 077/144] [Fleet] Do not use async method in plugin setup|start (#100033) --- x-pack/plugins/fleet/common/types/index.ts | 9 --------- .../fleet/mock/plugin_configuration.ts | 9 --------- x-pack/plugins/fleet/server/mocks/index.ts | 4 ++++ x-pack/plugins/fleet/server/plugin.ts | 14 ++++++++------ .../plugins/fleet/server/services/app_context.ts | 5 ++--- 5 files changed, 14 insertions(+), 27 deletions(-) diff --git a/x-pack/plugins/fleet/common/types/index.ts b/x-pack/plugins/fleet/common/types/index.ts index 03584a48ff17c..7117973baa139 100644 --- a/x-pack/plugins/fleet/common/types/index.ts +++ b/x-pack/plugins/fleet/common/types/index.ts @@ -15,13 +15,6 @@ export interface FleetConfigType { registryProxyUrl?: string; agents: { enabled: boolean; - tlsCheckDisabled: boolean; - pollingRequestTimeout: number; - maxConcurrentConnections: number; - kibana: { - host?: string[] | string; - ca_sha256?: string; - }; elasticsearch: { host?: string; ca_sha256?: string; @@ -29,8 +22,6 @@ export interface FleetConfigType { fleet_server?: { hosts?: string[]; }; - agentPolicyRolloutRateLimitIntervalMs: number; - agentPolicyRolloutRateLimitRequestPerInterval: number; }; agentPolicies?: PreconfiguredAgentPolicy[]; packages?: PreconfiguredPackage[]; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts index 5d53425607361..7f0b71de779dc 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts @@ -14,19 +14,10 @@ export const createConfigurationMock = (): FleetConfigType => { registryProxyUrl: '', agents: { enabled: true, - tlsCheckDisabled: true, - pollingRequestTimeout: 1000, - maxConcurrentConnections: 100, - kibana: { - host: '', - ca_sha256: '', - }, elasticsearch: { host: '', ca_sha256: '', }, - agentPolicyRolloutRateLimitIntervalMs: 100, - agentPolicyRolloutRateLimitRequestPerInterval: 1000, }, }; }; diff --git a/x-pack/plugins/fleet/server/mocks/index.ts b/x-pack/plugins/fleet/server/mocks/index.ts index 4bc2bea1e58b6..a94f274b202ad 100644 --- a/x-pack/plugins/fleet/server/mocks/index.ts +++ b/x-pack/plugins/fleet/server/mocks/index.ts @@ -30,6 +30,10 @@ export const createAppContextStartContractMock = (): FleetAppContext => { security: securityMock.createStart(), logger: loggingSystemMock.create().get(), isProductionMode: true, + configInitialValue: { + agents: { enabled: true, elasticsearch: {} }, + enabled: true, + }, kibanaVersion: '8.0.0', kibanaBranch: 'master', }; diff --git a/x-pack/plugins/fleet/server/plugin.ts b/x-pack/plugins/fleet/server/plugin.ts index 61c3a83242c57..0fdc6ef651ed1 100644 --- a/x-pack/plugins/fleet/server/plugin.ts +++ b/x-pack/plugins/fleet/server/plugin.ts @@ -6,7 +6,6 @@ */ import type { Observable } from 'rxjs'; -import { first } from 'rxjs/operators'; import type { CoreSetup, CoreStart, @@ -110,6 +109,7 @@ export interface FleetAppContext { encryptedSavedObjectsSetup?: EncryptedSavedObjectsPluginSetup; security?: SecurityPluginStart; config$?: Observable; + configInitialValue: FleetConfigType; savedObjects: SavedObjectsServiceStart; isProductionMode: PluginInitializerContext['env']['mode']['prod']; kibanaVersion: PluginInitializerContext['env']['packageInfo']['version']; @@ -189,6 +189,7 @@ export class FleetPlugin implements AsyncPlugin { private licensing$!: Observable; private config$: Observable; + private configInitialValue: FleetConfigType; private cloud: CloudSetup | undefined; private logger: Logger | undefined; @@ -204,15 +205,15 @@ export class FleetPlugin this.kibanaVersion = this.initializerContext.env.packageInfo.version; this.kibanaBranch = this.initializerContext.env.packageInfo.branch; this.logger = this.initializerContext.logger.get(); + this.configInitialValue = this.initializerContext.config.get(); } - public async setup(core: CoreSetup, deps: FleetSetupDeps) { + public setup(core: CoreSetup, deps: FleetSetupDeps) { this.httpSetup = core.http; this.licensing$ = deps.licensing.license$; this.encryptedSavedObjectsSetup = deps.encryptedSavedObjects; this.cloud = deps.cloud; - - const config = await this.config$.pipe(first()).toPromise(); + const config = this.configInitialValue; registerSavedObjects(core.savedObjects, deps.encryptedSavedObjects); registerEncryptedSavedObjects(deps.encryptedSavedObjects); @@ -279,13 +280,14 @@ export class FleetPlugin } } - public async start(core: CoreStart, plugins: FleetStartDeps): Promise { - await appContextService.start({ + public start(core: CoreStart, plugins: FleetStartDeps): FleetStartContract { + appContextService.start({ elasticsearch: core.elasticsearch, data: plugins.data, encryptedSavedObjectsStart: plugins.encryptedSavedObjects, encryptedSavedObjectsSetup: this.encryptedSavedObjectsSetup, security: plugins.security, + configInitialValue: this.configInitialValue, config$: this.config$, savedObjects: core.savedObjects, isProductionMode: this.isProductionMode, diff --git a/x-pack/plugins/fleet/server/services/app_context.ts b/x-pack/plugins/fleet/server/services/app_context.ts index 954308a980861..82ec0aad52651 100644 --- a/x-pack/plugins/fleet/server/services/app_context.ts +++ b/x-pack/plugins/fleet/server/services/app_context.ts @@ -7,7 +7,6 @@ import type { Observable } from 'rxjs'; import { BehaviorSubject } from 'rxjs'; -import { first } from 'rxjs/operators'; import { kibanaPackageJson } from '@kbn/utils'; import type { KibanaRequest } from 'src/core/server'; import type { @@ -44,7 +43,7 @@ class AppContextService { private httpSetup?: HttpServiceSetup; private externalCallbacks: ExternalCallbacksStorage = new Map(); - public async start(appContext: FleetAppContext) { + public start(appContext: FleetAppContext) { this.data = appContext.data; this.esClient = appContext.elasticsearch.client.asInternalUser; this.encryptedSavedObjects = appContext.encryptedSavedObjectsStart?.getClient(); @@ -60,7 +59,7 @@ class AppContextService { if (appContext.config$) { this.config$ = appContext.config$; - const initialValue = await this.config$.pipe(first()).toPromise(); + const initialValue = appContext.configInitialValue; this.configSubject$ = new BehaviorSubject(initialValue); this.config$.subscribe(this.configSubject$); } From bb7057c343b1bef892f80db9ef554703d1ebee3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Thu, 13 May 2021 14:16:36 -0400 Subject: [PATCH 078/144] Rename alert status OK to Recovered and fix some UX issues around disabling a rule while being in an error state (#98135) * Fix UX when alert is disabled and in an error state * Reset executionStatus to pending after enabling an alert * Renames alert instance status OK to Recovered * Fix end to end test * Update doc screenshot * Fix confusing test name * Remove flakiness in integration test Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../images/rule-details-alerts-inactive.png | Bin 131717 -> 142687 bytes .../server/alerts_client/alerts_client.ts | 5 ++ .../server/alerts_client/tests/enable.test.ts | 10 +++ .../components/alert_details.test.tsx | 70 ++++++++++++++++++ .../components/alert_details.tsx | 10 ++- .../components/alert_instances.test.tsx | 2 +- .../components/alert_instances.tsx | 2 +- .../apps/triggers_actions_ui/details.ts | 2 +- 8 files changed, 96 insertions(+), 5 deletions(-) diff --git a/docs/user/alerting/images/rule-details-alerts-inactive.png b/docs/user/alerting/images/rule-details-alerts-inactive.png index f84910ae0dcdc4b202ef8b4d298cb5c0e591caf4..fc82cf465ebb2da81b918b00c3a3a2d2010a4102 100644 GIT binary patch literal 142687 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 ?+9GZpr4_@;GP&WN?!@m;+{ENQ^o;{|F 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 literal 131717 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 z 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 diff --git a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts index 7bc965f0aa5c8..27e3aa1df61f5 100644 --- a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts +++ b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts @@ -981,6 +981,11 @@ export class AlertsClient { ...this.apiKeyAsAlertAttributes(createdAPIKey, username), updatedBy: username, updatedAt: new Date().toISOString(), + executionStatus: { + status: 'pending', + lastExecutionDate: new Date().toISOString(), + error: null, + }, }); try { await this.unsecuredSavedObjectsClient.update('alert', id, updateAttributes, { version }); diff --git a/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts b/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts index 7b0d6d7b1f10b..8c0a09c74457e 100644 --- a/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts +++ b/x-pack/plugins/alerting/server/alerts_client/tests/enable.test.ts @@ -248,6 +248,11 @@ describe('enable()', () => { }, }, ], + executionStatus: { + status: 'pending', + lastExecutionDate: '2019-02-12T21:01:22.479Z', + error: null, + }, }, { version: '123', @@ -352,6 +357,11 @@ describe('enable()', () => { }, }, ], + executionStatus: { + status: 'pending', + lastExecutionDate: '2019-02-12T21:01:22.479Z', + error: null, + }, }, { version: '123', diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx index a41708f052dc8..1bbffc850ee18 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.test.tsx @@ -8,6 +8,8 @@ import * as React from 'react'; import uuid from 'uuid'; import { shallow } from 'enzyme'; +import { mountWithIntl, nextTick } from '@kbn/test/jest'; +import { act } from '@testing-library/react'; import { AlertDetails } from './alert_details'; import { Alert, ActionType, AlertTypeModel, AlertType } from '../../../../types'; import { EuiTitle, EuiBadge, EuiFlexItem, EuiSwitch, EuiButtonEmpty, EuiText } from '@elastic/eui'; @@ -463,6 +465,74 @@ describe('disable button', () => { handler!({} as React.FormEvent); expect(enableAlert).toHaveBeenCalledTimes(1); }); + + it('should reset error banner dismissal after re-enabling the alert', async () => { + const alert = mockAlert({ + enabled: true, + executionStatus: { + status: 'error', + lastExecutionDate: new Date('2020-08-20T19:23:38Z'), + error: { + reason: AlertExecutionStatusErrorReasons.Execute, + message: 'Fail', + }, + }, + }); + + const alertType: AlertType = { + id: '.noop', + name: 'No Op', + actionGroups: [{ id: 'default', name: 'Default' }], + recoveryActionGroup, + actionVariables: { context: [], state: [], params: [] }, + defaultActionGroupId: 'default', + producer: ALERTS_FEATURE_ID, + authorizedConsumers, + minimumLicenseRequired: 'basic', + enabledInLicense: true, + }; + + const disableAlert = jest.fn(); + const enableAlert = jest.fn(); + const wrapper = mountWithIntl( + + ); + + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + // Dismiss the error banner + await act(async () => { + wrapper.find('[data-test-subj="dismiss-execution-error"]').first().simulate('click'); + await nextTick(); + }); + + // Disable the alert + await act(async () => { + wrapper.find('[data-test-subj="disableSwitch"] .euiSwitch__button').first().simulate('click'); + await nextTick(); + }); + expect(disableAlert).toHaveBeenCalled(); + + // Enable the alert + await act(async () => { + wrapper.find('[data-test-subj="disableSwitch"] .euiSwitch__button').first().simulate('click'); + await nextTick(); + }); + expect(enableAlert).toHaveBeenCalled(); + + // Ensure error banner is back + expect(wrapper.find('[data-test-subj="dismiss-execution-error"]').length).toBeGreaterThan(0); + }); }); describe('mute button', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx index 0796f09b13460..d85e792f4a9bb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details.tsx @@ -236,6 +236,8 @@ export const AlertDetails: React.FunctionComponent = ({ if (isEnabled) { setIsEnabled(false); await disableAlert(alert); + // Reset dismiss if previously clicked + setDissmissAlertErrors(false); } else { setIsEnabled(true); await enableAlert(alert); @@ -277,7 +279,7 @@ export const AlertDetails: React.FunctionComponent = ({ - {!dissmissAlertErrors && alert.executionStatus.status === 'error' ? ( + {alert.enabled && !dissmissAlertErrors && alert.executionStatus.status === 'error' ? ( = ({ - setDissmissAlertErrors(true)}> + setDissmissAlertErrors(true)} + > { }; expect(alertInstanceToListItem(fakeNow.getTime(), alertType, 'id', instance)).toEqual({ instance: 'id', - status: { label: 'OK', healthColor: 'subdued' }, + status: { label: 'Recovered', healthColor: 'subdued' }, start: undefined, duration: 0, sortPriority: 1, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx index d2919194125f8..5ba4c466f6fad 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_instances.tsx @@ -226,7 +226,7 @@ const ACTIVE_LABEL = i18n.translate( const INACTIVE_LABEL = i18n.translate( 'xpack.triggersActionsUI.sections.alertDetails.alertInstancesList.status.inactive', - { defaultMessage: 'OK' } + { defaultMessage: 'Recovered' } ); function getActionGroupName(alertType: AlertType, actionGroupId?: string): string | undefined { diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts index b38b605bc1b67..34e08ad257f84 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts @@ -655,7 +655,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { ).to.eql([ { instance: 'eu/east', - status: 'OK', + status: 'Recovered', start: '', duration: '', }, From 43009779b9a7ba484a78350848f20f740d192b23 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Thu, 13 May 2021 12:11:16 -0700 Subject: [PATCH 079/144] Remove outdated comment about schema validation not working (it does work now). (#100055) --- src/plugins/console/server/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/console/server/config.ts b/src/plugins/console/server/config.ts index 90839a18e1210..4e42e3c21d2ad 100644 --- a/src/plugins/console/server/config.ts +++ b/src/plugins/console/server/config.ts @@ -15,8 +15,6 @@ export const config = schema.object( enabled: schema.boolean({ defaultValue: true }), proxyFilter: schema.arrayOf(schema.string(), { defaultValue: ['.*'] }), ssl: schema.object({ verify: schema.boolean({ defaultValue: false }) }, {}), - - // This does not actually work, track this issue: https://github.com/elastic/kibana/issues/55576 proxyConfig: schema.arrayOf( schema.object({ match: schema.object({ From 609fed35f24cdb7aef813352630b20150880268e Mon Sep 17 00:00:00 2001 From: Constance Date: Thu, 13 May 2021 12:11:30 -0700 Subject: [PATCH 080/144] [Enterprise Search] Fix SchemaFieldTypeSelect axe issues (#100035) * Update SchemaFieldTypeSelect to allow passing any aria props - We'll specifically be using aria-labelledby in this PR, but theoretically any aria prop should be fine. * Update AS & WS schema tables to use the type table column heading as an aria-labelledby ID --- .../components/schema/components/schema_table.tsx | 5 ++++- .../shared/schema/field_type_select/index.test.tsx | 6 ++++++ .../applications/shared/schema/field_type_select/index.tsx | 2 ++ .../components/schema/schema_fields_table.tsx | 3 ++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx index d9187bb65adf0..8fff01b268b12 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/schema_table.tsx @@ -35,7 +35,9 @@ export const SchemaTable: React.FC = () => { {FIELD_NAME} - {FIELD_TYPE} + + {FIELD_TYPE} + @@ -74,6 +76,7 @@ export const SchemaTable: React.FC = () => { fieldName={fieldName} fieldType={fieldType} updateExistingFieldType={updateSchemaFieldType} + aria-labelledby="schemaFieldType" /> diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx index df28719839011..6d51a06273712 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.test.tsx @@ -39,4 +39,10 @@ describe('SchemaFieldTypeSelect', () => { expect(wrapper.find(EuiSelect).prop('disabled')).toEqual(true); }); + + it('passes arbitrary props', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiSelect).prop('aria-label')).toEqual('Test label'); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx index 8dfd87f4015d6..fb6c0f2047b12 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/field_type_select/index.tsx @@ -23,10 +23,12 @@ export const SchemaFieldTypeSelect: React.FC = ({ fieldType, updateExistingFieldType, disabled, + ...rest }) => { const fieldTypeOptions = Object.values(SchemaType).map((type) => ({ value: type, text: type })); return ( { {SCHEMA_ERRORS_TABLE_FIELD_NAME_HEADER} - + {SCHEMA_ERRORS_TABLE_DATA_TYPE_HEADER} @@ -58,6 +58,7 @@ export const SchemaFieldsTable: React.FC = () => { fieldName={fieldName} fieldType={filteredSchemaFields[fieldName]} updateExistingFieldType={updateExistingFieldType} + aria-labelledby="schemaDataType" /> From 442d7fa68036c74450b1fb0f044b2256fdbbb474 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 13 May 2021 20:39:15 +0100 Subject: [PATCH 081/144] chore(NA): moving @kbn/docs-utils into bazel (#100051) --- .../monorepo-packages.asciidoc | 1 + package.json | 2 +- packages/BUILD.bazel | 1 + packages/kbn-docs-utils/BUILD.bazel | 88 +++++++++++++++++++ packages/kbn-docs-utils/package.json | 4 - packages/kbn-docs-utils/tsconfig.json | 3 +- yarn.lock | 2 +- 7 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 packages/kbn-docs-utils/BUILD.bazel diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 1e7a95b83dd67..7265cd415949c 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -74,6 +74,7 @@ yarn kbn watch-bazel - @kbn/config-schema - @kbn/crypto - @kbn/dev-utils +- @kbn/docs-utils - @kbn/es - @kbn/eslint-import-resolver-kibana - @kbn/eslint-plugin-eslint diff --git a/package.json b/package.json index d46617f2a6f2a..c04face1233ae 100644 --- a/package.json +++ b/package.json @@ -448,7 +448,7 @@ "@kbn/babel-preset": "link:bazel-bin/packages/kbn-babel-preset/npm_module", "@kbn/cli-dev-mode": "link:packages/kbn-cli-dev-mode", "@kbn/dev-utils": "link:bazel-bin/packages/kbn-dev-utils/npm_module", - "@kbn/docs-utils": "link:packages/kbn-docs-utils", + "@kbn/docs-utils": "link:bazel-bin/packages/kbn-docs-utils/npm_module", "@kbn/es": "link:bazel-bin/packages/kbn-es/npm_module", "@kbn/es-archiver": "link:packages/kbn-es-archiver", "@kbn/eslint-import-resolver-kibana": "link:bazel-bin/packages/kbn-eslint-import-resolver-kibana/npm_module", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 2ae04e02cffd2..c3d08ad49daea 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -16,6 +16,7 @@ filegroup( "//packages/kbn-config-schema:build", "//packages/kbn-crypto:build", "//packages/kbn-dev-utils:build", + "//packages/kbn-docs-utils:build", "//packages/kbn-es:build", "//packages/kbn-eslint-import-resolver-kibana:build", "//packages/kbn-eslint-plugin-eslint:build", diff --git a/packages/kbn-docs-utils/BUILD.bazel b/packages/kbn-docs-utils/BUILD.bazel new file mode 100644 index 0000000000000..e72d83851f5d2 --- /dev/null +++ b/packages/kbn-docs-utils/BUILD.bazel @@ -0,0 +1,88 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-docs-utils" +PKG_REQUIRE_NAME = "@kbn/docs-utils" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/__fixtures__/**", + "**/snapshots/**", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +SRC_DEPS = [ + "//packages/kbn-config", + "//packages/kbn-dev-utils", + "//packages/kbn-utils", + "@npm//dedent", + "@npm//ts-morph", +] + +TYPES_DEPS = [ + "@npm//@types/dedent", + "@npm//@types/jest", + "@npm//@types/node", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-docs-utils/package.json b/packages/kbn-docs-utils/package.json index 27d38d2d8ed4f..b2a52b2d1f78e 100644 --- a/packages/kbn-docs-utils/package.json +++ b/packages/kbn-docs-utils/package.json @@ -7,9 +7,5 @@ "types": "target/index.d.ts", "kibana": { "devOnly": true - }, - "scripts": { - "kbn:bootstrap": "../../node_modules/.bin/tsc", - "kbn:watch": "../../node_modules/.bin/tsc --watch" } } \ No newline at end of file diff --git a/packages/kbn-docs-utils/tsconfig.json b/packages/kbn-docs-utils/tsconfig.json index 6f4a6fa2af8a5..9868c8b3d2bb4 100644 --- a/packages/kbn-docs-utils/tsconfig.json +++ b/packages/kbn-docs-utils/tsconfig.json @@ -1,11 +1,12 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": false, + "incremental": true, "outDir": "./target", "target": "ES2019", "declaration": true, "declarationMap": true, + "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-docs-utils/src", "types": [ diff --git a/yarn.lock b/yarn.lock index 69d5c9553a3b6..b8b4e54d25dcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2634,7 +2634,7 @@ version "0.0.0" uid "" -"@kbn/docs-utils@link:packages/kbn-docs-utils": +"@kbn/docs-utils@link:bazel-bin/packages/kbn-docs-utils/npm_module": version "0.0.0" uid "" From 0c2af2f929de7cf047a141978d86ab195283e057 Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Thu, 13 May 2021 16:03:57 -0400 Subject: [PATCH 082/144] [Uptime] Increase debounce and add immediate submit to `useQueryBar` (#99675) * Increase debounce and add immediate submit to `useQueryBar`. * Reduce debounce to 800ms. --- .../overview/query_bar/query_bar.tsx | 5 +- .../overview/query_bar/use_query_bar.ts | 68 ++++++++++++++----- 2 files changed, 54 insertions(+), 19 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx b/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx index 0543e5868bb9e..9436f420f7740 100644 --- a/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx +++ b/x-pack/plugins/uptime/public/components/overview/query_bar/query_bar.tsx @@ -34,11 +34,11 @@ export const isValidKuery = (query: string) => { export const QueryBar = () => { const { search: urlValue } = useGetUrlParams(); - const { query, setQuery } = useQueryBar(); + const { query, setQuery, submitImmediately } = useQueryBar(); const { index_pattern: indexPattern } = useIndexPattern(); - const [inputVal, setInputVal] = useState(query.query); + const [inputVal, setInputVal] = useState(query.query as string); const isInValid = () => { if (query.language === SyntaxType.text) { @@ -66,6 +66,7 @@ export const QueryBar = () => { }} onSubmit={(queryN) => { if (queryN) setQuery({ query: queryN.query as string, language: queryN.language }); + submitImmediately(); }} query={{ ...query, query: inputVal }} aria-label={i18n.translate('xpack.uptime.filterBar.ariaLabel', { diff --git a/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts b/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts index 0d8a2ee17994a..164231bfdd89b 100644 --- a/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts +++ b/x-pack/plugins/uptime/public/components/overview/query_bar/use_query_bar.ts @@ -5,9 +5,10 @@ * 2.0. */ -import { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useState } from 'react'; import { useDebounce } from 'react-use'; import { useDispatch } from 'react-redux'; +import { Query } from 'src/plugins/data/common'; import { useGetUrlParams, useUpdateKueryString, useUrlParams } from '../../../hooks'; import { setEsKueryString } from '../../../state/actions'; import { useIndexPattern } from './use_index_pattern'; @@ -20,7 +21,26 @@ export enum SyntaxType { } const SYNTAX_STORAGE = 'uptime:queryBarSyntax'; -export const useQueryBar = () => { +const DEFAULT_QUERY_UPDATE_DEBOUNCE_INTERVAL = 800; + +interface UseQueryBarUtils { + // The Query object used by the search bar + query: Query; + // Update the Query object + setQuery: React.Dispatch>; + /** + * By default the search bar uses a debounce to delay submitting input; + * this function will cancel the debounce and submit immediately. + */ + submitImmediately: () => void; +} + +/** + * Provides state management and automatic dispatching of a Query object. + * + * @returns {UseQueryBarUtils} + */ +export const useQueryBar = (): UseQueryBarUtils => { const dispatch = useDispatch(); const { absoluteDateRangeStart, absoluteDateRangeEnd, ...params } = useGetUrlParams(); @@ -30,7 +50,7 @@ export const useQueryBar = () => { services: { storage }, } = useKibana(); - const [query, setQuery] = useState( + const [query, setQuery] = useState( queryParam ? { query: queryParam, @@ -59,23 +79,37 @@ export const useQueryBar = () => { [dispatch] ); - useEffect(() => { - setEsKueryFilters(esFilters ?? ''); - }, [esFilters, setEsKueryFilters]); + const setEs = useCallback(() => setEsKueryFilters(esFilters ?? ''), [ + esFilters, + setEsKueryFilters, + ]); + const [, cancelEsKueryUpdate] = useDebounce(setEs, DEFAULT_QUERY_UPDATE_DEBOUNCE_INTERVAL, [ + esFilters, + setEsKueryFilters, + ]); - useDebounce( - () => { - if (query.language === SyntaxType.text && queryParam !== query.query) { - updateUrlParams({ query: query.query as string }); - } - if (query.language === SyntaxType.kuery) { - updateUrlParams({ query: '' }); - } - }, - 350, + const handleQueryUpdate = useCallback(() => { + if (query.language === SyntaxType.text && queryParam !== query.query) { + updateUrlParams({ query: query.query as string }); + } + if (query.language === SyntaxType.kuery) { + updateUrlParams({ query: '' }); + } + }, [query.language, query.query, queryParam, updateUrlParams]); + + const [, cancelQueryUpdate] = useDebounce( + handleQueryUpdate, + DEFAULT_QUERY_UPDATE_DEBOUNCE_INTERVAL, [query] ); + const submitImmediately = useCallback(() => { + cancelQueryUpdate(); + cancelEsKueryUpdate(); + handleQueryUpdate(); + setEs(); + }, [cancelEsKueryUpdate, cancelQueryUpdate, handleQueryUpdate, setEs]); + useDebounce( () => { if (query.language === SyntaxType.kuery && !error && esFilters) { @@ -92,5 +126,5 @@ export const useQueryBar = () => { [esFilters, error] ); - return { query, setQuery }; + return { query, setQuery, submitImmediately }; }; From f492feee6ef8747fcfaa3541c843e2204bfe4874 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 14:05:02 -0600 Subject: [PATCH 083/144] [Security Solutions][Lists] Trims down list plugin size by breaking out the exception builder into chunks by using react lazy loading (#99989) ## Summary Trims down the list plugin size by breaking out the exception builder into a dedicated chunk by using React Suspense and React lazy loading. Before this PR the page load bundle size was `260503`, after the page load bundle size will be `194132`: You can calculate this through: ```ts node ./scripts/build_kibana_platform_plugins --dist --focus lists cat ./x-pack/plugins/lists/target/public/metrics.json ``` Before ```json [ { "group": "@kbn/optimizer bundle module count", "id": "lists", "value": 227 }, { "group": "page load bundle size", "id": "lists", "value": 260503, <--- Very large load bundle size "limit": 280504, "limitConfigPath": "packages/kbn-optimizer/limits.yml" }, { "group": "async chunks size", "id": "lists", "value": 0 }, { "group": "async chunk count", "id": "lists", "value": 0 }, { "group": "miscellaneous assets size", "id": "lists", "value": 0 } ] ``` After: ```json [ { "group": "@kbn/optimizer bundle module count", "id": "lists", "value": 227 }, { "group": "page load bundle size", "id": "lists", "value": 194132, <--- Not as large bundle size "limit": 280504, "limitConfigPath": "packages/kbn-optimizer/limits.yml" }, { "group": "async chunks size", "id": "lists", "value": 70000 }, { "group": "async chunk count", "id": "lists", "value": 1 }, { "group": "miscellaneous assets size", "id": "lists", "value": 0 } ] ``` ### Checklist Delete any items that are not applicable to this PR. - [x] [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 --- .../builder/exception_items_renderer.tsx | 3 ++ .../exceptions/components/builder/index.tsx | 32 ++++++++++++-- .../lists/public/exceptions/transforms.ts | 2 +- .../add_exception_modal/index.test.tsx | 7 +-- .../exceptions/add_exception_modal/index.tsx | 43 +++++++++---------- .../edit_exception_modal/index.test.tsx | 11 ++--- .../exceptions/edit_exception_modal/index.tsx | 41 +++++++++--------- .../view/components/form/index.test.tsx | 6 ++- .../view/components/form/index.tsx | 39 ++++++++--------- 9 files changed, 108 insertions(+), 76 deletions(-) diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx index a698feb93722c..646803f2e6794 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx @@ -444,3 +444,6 @@ export const ExceptionBuilderComponent = ({ }; ExceptionBuilderComponent.displayName = 'ExceptionBuilder'; + +// eslint-disable-next-line import/no-default-export +export default ExceptionBuilderComponent; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx index 833034aa0a542..551889e4a821d 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/index.tsx @@ -5,6 +5,32 @@ * 2.0. */ -export { BuilderEntryItem } from './entry_renderer'; -export { BuilderExceptionListItemComponent } from './exception_item_renderer'; -export { ExceptionBuilderComponent, OnChangeProps } from './exception_items_renderer'; +import { EuiLoadingSpinner } from '@elastic/eui'; +import React, { Suspense, lazy } from 'react'; + +// Note: Only use import type/export type here to avoid pulling anything non-lazy into the main plugin and increasing the plugin size +import type { ExceptionBuilderProps } from './exception_items_renderer'; +export type { OnChangeProps } from './exception_items_renderer'; + +interface ExtraProps { + dataTestSubj: string; + idAria: string; +} + +/** + * This lazy load allows the exception builder to pull everything out into a plugin chunk. + * You want to be careful of not directly importing/exporting things from exception_items_renderer + * unless you use a import type, and/or a export type to ensure full type erasure + */ +const ExceptionBuilderComponentLazy = lazy(() => import('./exception_items_renderer')); +export const getExceptionBuilderComponentLazy = ( + props: ExceptionBuilderProps & ExtraProps +): JSX.Element => ( + }> + + +); diff --git a/x-pack/plugins/lists/public/exceptions/transforms.ts b/x-pack/plugins/lists/public/exceptions/transforms.ts index 468dfc00ca852..50ce1b6e33a4b 100644 --- a/x-pack/plugins/lists/public/exceptions/transforms.ts +++ b/x-pack/plugins/lists/public/exceptions/transforms.ts @@ -8,7 +8,7 @@ import { flow } from 'fp-ts/lib/function'; import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; -import { +import type { CreateExceptionListItemSchema, EntriesArray, Entry, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx index bf15994f60cbc..d659f557ee751 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx @@ -58,13 +58,14 @@ describe('When the add exception modal is opened', () => { ReturnType >; let ExceptionBuilderComponent: jest.SpyInstance< - ReturnType + ReturnType >; beforeEach(() => { + const emptyComp = ; defaultEndpointItems = jest.spyOn(helpers, 'defaultEndpointExceptionItems'); ExceptionBuilderComponent = jest - .spyOn(ExceptionBuilder, 'ExceptionBuilderComponent') - .mockReturnValue(<>); + .spyOn(ExceptionBuilder, 'getExceptionBuilderComponentLazy') + .mockReturnValue(emptyComp); (useAsync as jest.Mock).mockImplementation(() => ({ start: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx index 96335f8d85d90..120c4ad8efc1b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.tsx @@ -469,28 +469,27 @@ export const AddExceptionModal = memo(function AddExceptionModal({ )} - + {ExceptionBuilder.getExceptionBuilderComponentLazy({ + allowLargeValueLists: + !isEqlRule(maybeRule?.type) && !isThresholdRule(maybeRule?.type), + httpService: http, + autocompleteService: data.autocomplete, + exceptionListItems: initialExceptionItems, + listType: exceptionListType, + osTypes: osTypesSelection, + listId: ruleExceptionList.list_id, + listNamespaceType: ruleExceptionList.namespace_type, + listTypeSpecificIndexPatternFilter: filterIndexPatterns, + ruleName, + indexPatterns, + isOrDisabled: isExceptionBuilderFormDisabled, + isAndDisabled: isExceptionBuilderFormDisabled, + isNestedDisabled: isExceptionBuilderFormDisabled, + dataTestSubj: 'alert-exception-builder', + idAria: 'alert-exception-builder', + onChange: handleBuilderOnChange, + isDisabled: isExceptionBuilderFormDisabled, + })} diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx index 7ee0e6888a42e..64ef1dead7e75 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx @@ -49,11 +49,11 @@ jest.mock('../../../../detections/containers/detection_engine/alerts/use_signal_ jest.mock('../../../../detections/containers/detection_engine/rules/use_rule_async'); jest.mock('../../../../shared_imports', () => { const originalModule = jest.requireActual('../../../../shared_imports'); - + const emptyComp = ; return { ...originalModule, ExceptionBuilder: { - ExceptionBuilderComponent: () => ({} as JSX.Element), + getExceptionBuilderComponentLazy: () => emptyComp, }, }; }); @@ -62,13 +62,14 @@ describe('When the edit exception modal is opened', () => { const ruleName = 'test rule'; let ExceptionBuilderComponent: jest.SpyInstance< - ReturnType + ReturnType >; beforeEach(() => { + const emptyComp = ; ExceptionBuilderComponent = jest - .spyOn(ExceptionBuilder, 'ExceptionBuilderComponent') - .mockReturnValue(<>); + .spyOn(ExceptionBuilder, 'getExceptionBuilderComponentLazy') + .mockReturnValue(emptyComp); (useSignalIndex as jest.Mock).mockReturnValue({ loading: false, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx index 8bf5ea9f8a80f..5fb52994fb0f5 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.tsx @@ -342,27 +342,26 @@ export const EditExceptionModal = memo(function EditExceptionModal({ )} - + {ExceptionBuilder.getExceptionBuilderComponentLazy({ + allowLargeValueLists: + !isEqlRule(maybeRule?.type) && !isThresholdRule(maybeRule?.type), + httpService: http, + autocompleteService: data.autocomplete, + exceptionListItems: [exceptionItem], + listType: exceptionListType, + listId: exceptionItem.list_id, + listNamespaceType: exceptionItem.namespace_type, + listTypeSpecificIndexPatternFilter: filterIndexPatterns, + ruleName, + isOrDisabled: true, + isAndDisabled: false, + osTypes: exceptionItem.os_types, + isNestedDisabled: false, + dataTestSubj: 'edit-exception-modal-builder', + idAria: 'edit-exception-modal-builder', + onChange: handleBuilderOnChange, + indexPatterns, + })} diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx index 940882d079a12..0867d0542e4c1 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.test.tsx @@ -17,6 +17,7 @@ import { createGlobalNoMiddlewareStore, ecsEventMock } from '../../../test_utils import { getMockTheme } from '../../../../../../common/lib/kibana/kibana_react.mock'; import { NAME_ERROR, NAME_PLACEHOLDER } from './translations'; import { useCurrentUser, useKibana } from '../../../../../../common/lib/kibana'; +import { ExceptionBuilder } from '../../../../../../shared_imports'; jest.mock('../../../../../../common/lib/kibana'); jest.mock('../../../../../../common/containers/source'); @@ -53,6 +54,9 @@ describe('Event filter form', () => { }; beforeEach(() => { + const emptyComp = ; + jest.spyOn(ExceptionBuilder, 'getExceptionBuilderComponentLazy').mockReturnValue(emptyComp); + (useFetchIndex as jest.Mock).mockImplementation(() => [ false, { @@ -77,7 +81,7 @@ describe('Event filter form', () => { it('should renders correctly with data', () => { component = renderComponentWithdata(); - expect(component.getByText(ecsEventMock().process!.executable![0])).not.toBeNull(); + expect(component.getByTestId('alert-exception-builder')).not.toBeNull(); expect(component.getByText(NAME_ERROR)).not.toBeNull(); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx index 744fb9930321d..d74baab0d2bbc 100644 --- a/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form/index.tsx @@ -115,26 +115,25 @@ export const EventFiltersForm: React.FC = memo( ); const exceptionBuilderComponentMemo = useMemo( - () => ( - - ), + () => + ExceptionBuilder.getExceptionBuilderComponentLazy({ + allowLargeValueLists: true, + httpService: http, + autocompleteService: data.autocomplete, + exceptionListItems: [exception as ExceptionListItemSchema], + listType: EVENT_FILTER_LIST_TYPE, + listId: ENDPOINT_EVENT_FILTERS_LIST_ID, + listNamespaceType: 'agnostic', + ruleName: RULE_NAME, + indexPatterns, + isOrDisabled: true, // TODO: pending to be validated + isAndDisabled: false, + isNestedDisabled: false, + dataTestSubj: 'alert-exception-builder', + idAria: 'alert-exception-builder', + onChange: handleOnBuilderChange, + listTypeSpecificIndexPatternFilter: filterIndexPatterns, + }), [data, handleOnBuilderChange, http, indexPatterns, exception] ); From 0bc97c4a58c8589a2297070166096d71fa5f0229 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Thu, 13 May 2021 16:15:59 -0400 Subject: [PATCH 084/144] [Uptime] [Synthetics Integration] ensure that proxy url is not overwritten (#99944) --- .../synthetics_policy_create_extension.tsx | 7 ++- ...s_policy_create_extension_wrapper.test.tsx | 58 +++++++++++++++++-- .../synthetics_policy_edit_extension.tsx | 7 ++- ...ics_policy_edit_extension_wrapper.test.tsx | 54 ++++++++++++++++- 4 files changed, 116 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx index 51585e227b56e..1306308f8ba4e 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_create_extension.tsx @@ -9,7 +9,7 @@ import React, { memo, useContext, useEffect } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; import { PackagePolicyCreateExtensionComponentProps } from '../../../../fleet/public'; import { useTrackPageview } from '../../../../observability/public'; -import { Config, ConfigKeys } from './types'; +import { Config, ConfigKeys, DataStream } from './types'; import { SimpleFieldsContext, HTTPAdvancedFieldsContext, @@ -63,6 +63,11 @@ export const SyntheticsPolicyCreateExtension = memo', () => { }); }); - it('handles updating each field', async () => { + it('handles updating fields', async () => { const { getByLabelText } = render(); const url = getByLabelText('URL') as HTMLInputElement; const proxyUrl = getByLabelText('Proxy URL') as HTMLInputElement; @@ -336,6 +336,54 @@ describe('', () => { expect(apmServiceName.value).toEqual('APM Service'); expect(maxRedirects.value).toEqual('2'); expect(timeout.value).toEqual('3'); + + await waitFor(() => { + expect(onChange).toBeCalledWith({ + isValid: true, + updatedPolicy: { + ...defaultNewPolicy, + inputs: [ + { + ...defaultNewPolicy.inputs[0], + streams: [ + { + ...defaultNewPolicy.inputs[0].streams[0], + vars: { + ...defaultNewPolicy.inputs[0].streams[0].vars, + urls: { + value: 'http://elastic.co', + type: 'text', + }, + proxy_url: { + value: 'http://proxy.co', + type: 'text', + }, + schedule: { + value: '"@every 1m"', + type: 'text', + }, + 'service.name': { + value: 'APM Service', + type: 'text', + }, + max_redirects: { + value: '2', + type: 'integer', + }, + timeout: { + value: '3s', + type: 'text', + }, + }, + }, + ], + }, + defaultNewPolicy.inputs[1], + defaultNewPolicy.inputs[2], + ], + }, + }); + }); }); it('handles calling onChange', async () => { diff --git a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx index 386d99add87b6..e29a5c6a363ed 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/synthetics_policy_edit_extension.tsx @@ -15,7 +15,7 @@ import { TCPAdvancedFieldsContext, TLSFieldsContext, } from './contexts'; -import { Config, ConfigKeys } from './types'; +import { Config, ConfigKeys, DataStream } from './types'; import { CustomFields } from './custom_fields'; import { useUpdatePolicy } from './use_update_policy'; import { validate } from './validation'; @@ -48,6 +48,11 @@ export const SyntheticsPolicyEditExtension = memo', () => { expect(queryByLabelText('Monitor type')).not.toBeInTheDocument(); }); - it('handles updating each field', async () => { + it('handles updating fields', async () => { const { getByLabelText } = render(); const url = getByLabelText('URL') as HTMLInputElement; const proxyUrl = getByLabelText('Proxy URL') as HTMLInputElement; @@ -364,6 +364,54 @@ describe('', () => { expect(apmServiceName.value).toEqual('APM Service'); expect(maxRedirects.value).toEqual('2'); expect(timeout.value).toEqual('3'); + + await waitFor(() => { + expect(onChange).toBeCalledWith({ + isValid: true, + updatedPolicy: { + ...defaultNewPolicy, + inputs: [ + { + ...defaultNewPolicy.inputs[0], + streams: [ + { + ...defaultNewPolicy.inputs[0].streams[0], + vars: { + ...defaultNewPolicy.inputs[0].streams[0].vars, + urls: { + value: 'http://elastic.co', + type: 'text', + }, + proxy_url: { + value: 'http://proxy.co', + type: 'text', + }, + schedule: { + value: '"@every 1m"', + type: 'text', + }, + 'service.name': { + value: 'APM Service', + type: 'text', + }, + max_redirects: { + value: '2', + type: 'integer', + }, + timeout: { + value: '3s', + type: 'text', + }, + }, + }, + ], + }, + defaultNewPolicy.inputs[1], + defaultNewPolicy.inputs[2], + ], + }, + }); + }); }); it('handles calling onChange', async () => { From 61bc47f8e920139f4ac206ee33ccf7c009529669 Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Thu, 13 May 2021 15:24:26 -0500 Subject: [PATCH 085/144] Re-enable formerly flaky shareable test (#98826) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../plugins/canvas/shareable_runtime/components/app.test.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx b/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx index b68642d184542..acf71cad3f3ba 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx +++ b/x-pack/plugins/canvas/shareable_runtime/components/app.test.tsx @@ -59,8 +59,7 @@ const getWrapper: (name?: WorkpadNames) => ReactWrapper = (name = 'hello') => { return mount(); }; -// FLAKY: https://github.com/elastic/kibana/issues/95899 -describe.skip('', () => { +describe('', () => { test('App renders properly', () => { expect(getWrapper().html()).toMatchSnapshot(); }); From ead8a4668afa1653c86190880f1c7ea00b88f34e Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Thu, 13 May 2021 15:24:40 -0500 Subject: [PATCH 086/144] [Canvas] Remove unused legacy autocomplete component (#99215) * Remove unused autocomplete component * Remove reference to autocomplete CSS Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/autocomplete/autocomplete.js | 264 ------------------ .../components/autocomplete/autocomplete.scss | 52 ---- .../public/components/autocomplete/index.js | 8 - x-pack/plugins/canvas/public/style/index.scss | 1 - 4 files changed, 325 deletions(-) delete mode 100644 x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js delete mode 100644 x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss delete mode 100644 x-pack/plugins/canvas/public/components/autocomplete/index.js diff --git a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js b/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js deleted file mode 100644 index 302e45ade8d43..0000000000000 --- a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.js +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/*disabling eslint because of these jsx-a11y errors(https://www.npmjs.com/package/eslint-plugin-jsx-a11y): -181:7 error Elements with the 'combobox' interactive role must be focusable jsx-a11y/interactive-supports-focus - 187:9 error Elements with the ARIA role "combobox" must have the following attributes defined: aria-controls,aria-expanded jsx-a11y/role-has-required-aria-props - 209:23 error Elements with the 'option' interactive role must be focusable jsx-a11y/interactive-supports-focus - 218:25 error Elements with the ARIA role "option" must have the following attributes defined: aria-selected jsx-a11y/role-has-required-aria-props -*/ -/* eslint-disable jsx-a11y/interactive-supports-focus */ -/* eslint-disable jsx-a11y/role-has-required-aria-props */ - -import React from 'react'; -import PropTypes from 'prop-types'; -import { EuiFlexGroup, EuiFlexItem, EuiPanel, keys } from '@elastic/eui'; - -/** - * An autocomplete component. Currently this is only used for the expression editor but in theory - * it could be extended to any autocomplete-related component. It expects these props: - * - * header: The header node - * items: The list of items for autocompletion - * onSelect: The function to invoke when an item is selected (passing in the item) - * children: Any child nodes, which should include the text input itself - * reference: A function that is passed the selected item which generates a reference node - */ -export class Autocomplete extends React.Component { - static propTypes = { - header: PropTypes.node, - items: PropTypes.array, - onSelect: PropTypes.func, - children: PropTypes.node, - reference: PropTypes.func, - }; - - constructor() { - super(); - this.state = { - isOpen: false, - isFocused: false, - isMousedOver: false, - selectedIndex: -1, - }; - - // These are used for automatically scrolling items into view when selected - this.containerRef = null; - this.itemRefs = []; - } - - componentDidUpdate(prevProps, prevState) { - if ( - this.props.items && - prevProps.items !== this.props.items && - this.props.items.length === 1 && - this.state.selectedIndex !== 0 - ) { - this.selectFirst(); - } - - if (prevState.selectedIndex !== this.state.selectedIndex) { - this.scrollIntoView(); - } - } - - selectFirst() { - this.setState({ selectedIndex: 0 }); - } - - isVisible() { - const { isOpen, isFocused, isMousedOver } = this.state; - const { items, reference } = this.props; - - // We have to check isMousedOver because the blur event fires before the click event, which - // means if we didn't keep track of isMousedOver, we wouldn't even get the click event - const visible = isOpen && (isFocused || isMousedOver); - const hasItems = items && items.length; - const hasReference = reference(this.getSelectedItem()); - - return visible && (hasItems || hasReference); - } - - getSelectedItem() { - return this.props.items && this.props.items[this.state.selectedIndex]; - } - - selectPrevious() { - const { items } = this.props; - const { selectedIndex } = this.state; - if (selectedIndex > 0) { - this.setState({ selectedIndex: selectedIndex - 1 }); - } else { - this.setState({ selectedIndex: items.length - 1 }); - } - } - - selectNext() { - const { items } = this.props; - const { selectedIndex } = this.state; - if (selectedIndex >= 0 && selectedIndex < items.length - 1) { - this.setState({ selectedIndex: selectedIndex + 1 }); - } else { - this.setState({ selectedIndex: 0 }); - } - } - - scrollIntoView() { - const { - containerRef, - itemRefs, - state: { selectedIndex }, - } = this; - const itemRef = itemRefs[selectedIndex]; - if (!containerRef || !itemRef) { - return; - } - containerRef.scrollTop = Math.max( - Math.min(containerRef.scrollTop, itemRef.offsetTop), - itemRef.offsetTop + itemRef.offsetHeight - containerRef.offsetHeight - ); - } - - onSubmit = () => { - const { selectedIndex } = this.state; - const { items, onSelect } = this.props; - onSelect(items[selectedIndex]); - this.setState({ selectedIndex: -1 }); - }; - - /** - * Handle key down events for the menu, including selecting the previous and next items, making - * the item selection, closing the menu, etc. - */ - onKeyDown = (e) => { - const { BACKSPACE, ESCAPE, TAB, ENTER, ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT } = keys; - const { key } = e; - const { items } = this.props; - const { isOpen, selectedIndex } = this.state; - - if ([ESCAPE, ARROW_LEFT, ARROW_RIGHT].includes(key)) { - this.setState({ isOpen: false }); - } - - if ([TAB, ENTER].includes(key) && isOpen && selectedIndex >= 0) { - e.preventDefault(); - this.onSubmit(); - } else if (key === ARROW_UP && items.length > 0 && isOpen) { - e.preventDefault(); - this.selectPrevious(); - } else if (key === ARROW_DOWN && items.length > 0 && isOpen) { - e.preventDefault(); - this.selectNext(); - } else if (key === BACKSPACE) { - this.setState({ isOpen: true }); - } else if (!['Shift', 'Control', 'Alt', 'Meta'].includes(key)) { - this.setState({ selectedIndex: -1 }); - } - }; - - /** - * On key press (character keys), show the menu. We don't want to willy nilly show the menu - * whenever ANY key down event happens (like arrow keys) cuz that would be just downright - * annoying. - */ - onKeyPress = () => { - this.setState({ isOpen: true }); - }; - - onFocus = () => { - this.setState({ - isFocused: true, - }); - }; - - onBlur = () => { - this.setState({ - isFocused: false, - }); - }; - - onMouseDown = () => { - this.setState({ - isOpen: false, - }); - }; - - onMouseEnter = () => { - this.setState({ - isMousedOver: true, - }); - }; - - onMouseLeave = () => { - this.setState({ isMousedOver: false }); - }; - - render() { - const { header, items, reference } = this.props; - return ( -
    - {this.isVisible() ? ( - - - {items && items.length ? ( - -
    (this.containerRef = ref)} - role="listbox" - > - {header} - {items.map((item, i) => ( -
    (this.itemRefs[i] = ref)} - className={ - 'autocompleteItem' + - (this.state.selectedIndex === i ? ' autocompleteItem--isActive' : '') - } - onMouseEnter={() => this.setState({ selectedIndex: i })} - onClick={this.onSubmit} - role="option" - > - {item.text} -
    - ))} -
    -
    - ) : ( - '' - )} - -
    {reference(this.getSelectedItem())}
    -
    -
    -
    - ) : ( - '' - )} -
    - {this.props.children} -
    -
    - ); - } -} diff --git a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss b/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss deleted file mode 100644 index 7f723b5549acf..0000000000000 --- a/x-pack/plugins/canvas/public/components/autocomplete/autocomplete.scss +++ /dev/null @@ -1,52 +0,0 @@ -.autocomplete { - position: relative; -} - -.autocompletePopup { - position: absolute; - top: -262px; - height: 260px; - width: 100%; -} - -.autocompleteItems { - border-right: $euiBorderThin; -} - -.autocompleteItems, -.autocompleteReference { - @include euiScrollBar; - height: 258px; - overflow: auto; -} - -.autocompleteReference { - padding: $euiSizeS $euiSizeM; - background-color: tintOrShade($euiColorLightestShade, 65%, 20%); -} - -.autocompleteItem { - padding: $euiSizeS $euiSizeM; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-family: $euiCodeFontFamily; - font-weight: $euiFontWeightRegular; -} - -.autocompleteItem--isActive { - color: $euiColorPrimary; - background-color: $euiFocusBackgroundColor; -} - -.autocompleteType { - padding: $euiSizeS; -} - -.autocompleteTable .euiTable { - background-color: transparent; -} - -.autocompleteDescList .euiDescriptionList__description { - margin-right: $euiSizeS; -} \ No newline at end of file diff --git a/x-pack/plugins/canvas/public/components/autocomplete/index.js b/x-pack/plugins/canvas/public/components/autocomplete/index.js deleted file mode 100644 index a5572c26d04f5..0000000000000 --- a/x-pack/plugins/canvas/public/components/autocomplete/index.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export { Autocomplete } from './autocomplete'; diff --git a/x-pack/plugins/canvas/public/style/index.scss b/x-pack/plugins/canvas/public/style/index.scss index 41d12db3a1853..6c883b832737f 100644 --- a/x-pack/plugins/canvas/public/style/index.scss +++ b/x-pack/plugins/canvas/public/style/index.scss @@ -13,7 +13,6 @@ @import '../components/arg_form/arg_form'; @import '../components/asset_manager/asset_manager'; @import '../components/asset_picker/asset_picker'; -@import '../components/autocomplete/autocomplete'; @import '../components/clipboard/clipboard'; @import '../components/color_dot/color_dot'; @import '../components/color_palette/color_palette'; From 6f95145d28a5ab8dccaaf655f8af2cbce7ce337b Mon Sep 17 00:00:00 2001 From: Tre Date: Thu, 13 May 2021 14:32:58 -0600 Subject: [PATCH 087/144] [QA] Switch tests to use importExport - visualize (#98063) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../apps/visualize/_add_to_dashboard.ts | 3 + test/functional/apps/visualize/_area_chart.ts | 3 + .../functional/apps/visualize/_chart_types.ts | 2 +- test/functional/apps/visualize/_data_table.ts | 1 + .../visualize/_data_table_nontimeindex.ts | 1 + .../_data_table_notimeindex_filters.ts | 1 + .../apps/visualize/_embedding_chart.ts | 1 + .../apps/visualize/_experimental_vis.ts | 4 + .../functional/apps/visualize/_gauge_chart.ts | 3 + .../apps/visualize/_heatmap_chart.ts | 1 + .../visualize/_histogram_request_start.ts | 8 + test/functional/apps/visualize/_inspector.ts | 1 + test/functional/apps/visualize/_lab_mode.ts | 5 +- .../apps/visualize/_line_chart_split_chart.ts | 5 +- .../visualize/_line_chart_split_series.ts | 5 +- .../apps/visualize/_linked_saved_searches.ts | 1 + .../apps/visualize/_markdown_vis.ts | 1 + .../apps/visualize/_metric_chart.ts | 1 + test/functional/apps/visualize/_pie_chart.ts | 1 + .../apps/visualize/_point_series_options.ts | 5 +- test/functional/apps/visualize/_region_map.ts | 1 + .../functional/apps/visualize/_shared_item.ts | 1 + test/functional/apps/visualize/_tag_cloud.ts | 1 + test/functional/apps/visualize/_tile_map.ts | 1 + test/functional/apps/visualize/_tsvb_chart.ts | 18 +- .../apps/visualize/_tsvb_markdown.ts | 7 +- test/functional/apps/visualize/_tsvb_table.ts | 3 + .../apps/visualize/_tsvb_time_series.ts | 3 + test/functional/apps/visualize/_vega_chart.ts | 1 + .../apps/visualize/_vertical_bar_chart.ts | 4 + .../_vertical_bar_chart_nontimeindex.ts | 5 +- .../apps/visualize/_visualize_listing.ts | 1 + test/functional/apps/visualize/index.ts | 18 +- .../input_control_vis/chained_controls.ts | 1 + .../input_control_vis/dynamic_options.ts | 4 + .../input_control_options.ts | 1 + .../input_control_vis/input_control_range.ts | 7 +- .../apps/visualize/legacy/_data_table.ts | 1 + .../functional/apps/visualize/legacy/index.ts | 6 +- .../fixtures/kbn_archiver/visualize.json | 300 ++++++++++++++++++ .../functional/page_objects/visualize_page.ts | 12 + 41 files changed, 419 insertions(+), 30 deletions(-) create mode 100644 test/functional/fixtures/kbn_archiver/visualize.json diff --git a/test/functional/apps/visualize/_add_to_dashboard.ts b/test/functional/apps/visualize/_add_to_dashboard.ts index 17d628db86d25..4343f8b1469d6 100644 --- a/test/functional/apps/visualize/_add_to_dashboard.ts +++ b/test/functional/apps/visualize/_add_to_dashboard.ts @@ -26,6 +26,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ]); describe('Add to Dashboard', function describeIndexTests() { + before(async () => { + await PageObjects.visualize.initTests(); + }); it('adding a new metric to a new dashboard by value', async function () { await PageObjects.visualize.navigateToNewAggBasedVisualization(); await PageObjects.visualize.clickMetric(); diff --git a/test/functional/apps/visualize/_area_chart.ts b/test/functional/apps/visualize/_area_chart.ts index 2bad91565de72..99f65458bb606 100644 --- a/test/functional/apps/visualize/_area_chart.ts +++ b/test/functional/apps/visualize/_area_chart.ts @@ -34,6 +34,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); describe('area charts', function indexPatternCreation() { + before(async () => { + await PageObjects.visualize.initTests(); + }); const initAreaChart = async () => { log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); diff --git a/test/functional/apps/visualize/_chart_types.ts b/test/functional/apps/visualize/_chart_types.ts index 71bdc75d41d9c..f52d8f00c1e48 100644 --- a/test/functional/apps/visualize/_chart_types.ts +++ b/test/functional/apps/visualize/_chart_types.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import _ from 'lodash'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -17,6 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('chart types', function () { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewVisualization(); }); diff --git a/test/functional/apps/visualize/_data_table.ts b/test/functional/apps/visualize/_data_table.ts index 1ff5bdcc6da78..14181c084a77f 100644 --- a/test/functional/apps/visualize/_data_table.ts +++ b/test/functional/apps/visualize/_data_table.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization DataTable'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_data_table_nontimeindex.ts b/test/functional/apps/visualize/_data_table_nontimeindex.ts index 0146bb81134a7..1549f2aac0735 100644 --- a/test/functional/apps/visualize/_data_table_nontimeindex.ts +++ b/test/functional/apps/visualize/_data_table_nontimeindex.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization DataTable without time filter'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_data_table_notimeindex_filters.ts b/test/functional/apps/visualize/_data_table_notimeindex_filters.ts index df219edc1d2d5..ef664bf4b3054 100644 --- a/test/functional/apps/visualize/_data_table_notimeindex_filters.ts +++ b/test/functional/apps/visualize/_data_table_notimeindex_filters.ts @@ -30,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization DataTable w/o time filter'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_embedding_chart.ts b/test/functional/apps/visualize/_embedding_chart.ts index a6f0b21f96b35..93ab2987dc4a8 100644 --- a/test/functional/apps/visualize/_embedding_chart.ts +++ b/test/functional/apps/visualize/_embedding_chart.ts @@ -26,6 +26,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('embedding', () => { describe('a data table', () => { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewAggBasedVisualization(); await PageObjects.visualize.clickDataTable(); await PageObjects.visualize.clickNewSearch(); diff --git a/test/functional/apps/visualize/_experimental_vis.ts b/test/functional/apps/visualize/_experimental_vis.ts index 7132d252cd23c..8e33285f909be 100644 --- a/test/functional/apps/visualize/_experimental_vis.ts +++ b/test/functional/apps/visualize/_experimental_vis.ts @@ -15,6 +15,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize']); describe('experimental visualizations in visualize app ', function () { + before(async () => { + await PageObjects.visualize.initTests(); + }); + describe('experimental visualizations', () => { beforeEach(async () => { log.debug('navigateToApp visualize'); diff --git a/test/functional/apps/visualize/_gauge_chart.ts b/test/functional/apps/visualize/_gauge_chart.ts index 0153e022e71b3..6dd460d4ac32b 100644 --- a/test/functional/apps/visualize/_gauge_chart.ts +++ b/test/functional/apps/visualize/_gauge_chart.ts @@ -19,6 +19,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'visEditor', 'visChart', 'timePicker']); describe('gauge chart', function indexPatternCreation() { + before(async () => { + await PageObjects.visualize.initTests(); + }); async function initGaugeVis() { log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); diff --git a/test/functional/apps/visualize/_heatmap_chart.ts b/test/functional/apps/visualize/_heatmap_chart.ts index 660f45179631e..d71d524cc8f3b 100644 --- a/test/functional/apps/visualize/_heatmap_chart.ts +++ b/test/functional/apps/visualize/_heatmap_chart.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const vizName1 = 'Visualization HeatmapChart'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickHeatmapChart'); diff --git a/test/functional/apps/visualize/_histogram_request_start.ts b/test/functional/apps/visualize/_histogram_request_start.ts index b027dbcd57780..8b5c31701d025 100644 --- a/test/functional/apps/visualize/_histogram_request_start.ts +++ b/test/functional/apps/visualize/_histogram_request_start.ts @@ -13,6 +13,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); const retry = getService('retry'); + const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects([ 'common', @@ -24,6 +25,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('histogram agg onSearchRequestStart', function () { before(async function () { + // loading back default data + await esArchiver.load('empty_kibana'); + + await esArchiver.loadIfNeeded('logstash_functional'); + await esArchiver.loadIfNeeded('long_window_logstash'); + + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/_inspector.ts b/test/functional/apps/visualize/_inspector.ts index e46a833fd0fd7..f83eae2fc00bc 100644 --- a/test/functional/apps/visualize/_inspector.ts +++ b/test/functional/apps/visualize/_inspector.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('inspector', function describeIndexTests() { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewAggBasedVisualization(); await PageObjects.visualize.clickVerticalBarChart(); await PageObjects.visualize.clickNewSearch(); diff --git a/test/functional/apps/visualize/_lab_mode.ts b/test/functional/apps/visualize/_lab_mode.ts index 0a099ec27eee5..d3a02a8d17291 100644 --- a/test/functional/apps/visualize/_lab_mode.ts +++ b/test/functional/apps/visualize/_lab_mode.ts @@ -13,9 +13,12 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); - const PageObjects = getPageObjects(['common', 'header', 'discover', 'settings']); + const PageObjects = getPageObjects(['common', 'header', 'discover', 'settings', 'visualize']); describe('visualize lab mode', () => { + before(async () => { + await PageObjects.visualize.initTests(); + }); it('disabling does not break loading saved searches', async () => { await PageObjects.common.navigateToUrl('discover', '', { useActualUrl: true }); await PageObjects.discover.saveSearch('visualize_lab_mode_test'); diff --git a/test/functional/apps/visualize/_line_chart_split_chart.ts b/test/functional/apps/visualize/_line_chart_split_chart.ts index 1b6da1b39f1e3..91c1db533cee9 100644 --- a/test/functional/apps/visualize/_line_chart_split_chart.ts +++ b/test/functional/apps/visualize/_line_chart_split_chart.ts @@ -43,7 +43,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(); }; - before(initLineChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initLineChart(); + }); afterEach(async () => { await inspector.close(); diff --git a/test/functional/apps/visualize/_line_chart_split_series.ts b/test/functional/apps/visualize/_line_chart_split_series.ts index b3debc13c7770..6630690b89c2c 100644 --- a/test/functional/apps/visualize/_line_chart_split_series.ts +++ b/test/functional/apps/visualize/_line_chart_split_series.ts @@ -41,7 +41,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(); }; - before(initLineChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initLineChart(); + }); afterEach(async () => { await inspector.close(); diff --git a/test/functional/apps/visualize/_linked_saved_searches.ts b/test/functional/apps/visualize/_linked_saved_searches.ts index 160720d27ab61..cfb20cf4b59b8 100644 --- a/test/functional/apps/visualize/_linked_saved_searches.ts +++ b/test/functional/apps/visualize/_linked_saved_searches.ts @@ -30,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { let discoverSavedSearchUrlPath: string; before(async () => { + await PageObjects.visualize.initTests(); await PageObjects.common.navigateToApp('discover'); await filterBar.addFilter('extension.raw', 'is', 'jpg'); await PageObjects.header.waitUntilLoadingHasFinished(); diff --git a/test/functional/apps/visualize/_markdown_vis.ts b/test/functional/apps/visualize/_markdown_vis.ts index c8a481dbda2c3..16cdda9b610ca 100644 --- a/test/functional/apps/visualize/_markdown_vis.ts +++ b/test/functional/apps/visualize/_markdown_vis.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('markdown app in visualize app', () => { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickMarkdownWidget(); await PageObjects.visEditor.setMarkdownTxt(markdown); diff --git a/test/functional/apps/visualize/_metric_chart.ts b/test/functional/apps/visualize/_metric_chart.ts index 8c74784ef96d8..7853a3a845bfc 100644 --- a/test/functional/apps/visualize/_metric_chart.ts +++ b/test/functional/apps/visualize/_metric_chart.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('metric chart', function () { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickMetric'); diff --git a/test/functional/apps/visualize/_pie_chart.ts b/test/functional/apps/visualize/_pie_chart.ts index 16826b1676589..dd58ca6514c36 100644 --- a/test/functional/apps/visualize/_pie_chart.ts +++ b/test/functional/apps/visualize/_pie_chart.ts @@ -27,6 +27,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('pie chart', function () { const vizName1 = 'Visualization PieChart'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickPieChart'); diff --git a/test/functional/apps/visualize/_point_series_options.ts b/test/functional/apps/visualize/_point_series_options.ts index d4bcc19a7c87c..b81feaf29e194 100644 --- a/test/functional/apps/visualize/_point_series_options.ts +++ b/test/functional/apps/visualize/_point_series_options.ts @@ -61,7 +61,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { } describe('vlad point series', function describeIndexTests() { - before(initChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initChart(); + }); describe('secondary value axis', function () { it('should show correct chart', async function () { diff --git a/test/functional/apps/visualize/_region_map.ts b/test/functional/apps/visualize/_region_map.ts index 3801d7d0cec12..916e8dbaee3a0 100644 --- a/test/functional/apps/visualize/_region_map.ts +++ b/test/functional/apps/visualize/_region_map.ts @@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'visEditor', 'timePicker']); before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickRegionMap'); diff --git a/test/functional/apps/visualize/_shared_item.ts b/test/functional/apps/visualize/_shared_item.ts index a5dbe6c692978..3f9016ca2ff82 100644 --- a/test/functional/apps/visualize/_shared_item.ts +++ b/test/functional/apps/visualize/_shared_item.ts @@ -17,6 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('data-shared-item', function indexPatternCreation() { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.common.navigateToApp('visualize'); }); diff --git a/test/functional/apps/visualize/_tag_cloud.ts b/test/functional/apps/visualize/_tag_cloud.ts index c7d864e5cfb23..a6ac324d9dc61 100644 --- a/test/functional/apps/visualize/_tag_cloud.ts +++ b/test/functional/apps/visualize/_tag_cloud.ts @@ -34,6 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const termsField = 'machine.ram'; before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickTagCloud'); diff --git a/test/functional/apps/visualize/_tile_map.ts b/test/functional/apps/visualize/_tile_map.ts index 719c2c48761f9..812b6a7d86802 100644 --- a/test/functional/apps/visualize/_tile_map.ts +++ b/test/functional/apps/visualize/_tile_map.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('tile map visualize app', function () { describe('incomplete config', function describeIndexTests() { before(async function () { + await PageObjects.visualize.initTests(); await browser.setWindowSize(1280, 1000); log.debug('navigateToApp visualize'); diff --git a/test/functional/apps/visualize/_tsvb_chart.ts b/test/functional/apps/visualize/_tsvb_chart.ts index 6568eab0fc1f4..690db676cb368 100644 --- a/test/functional/apps/visualize/_tsvb_chart.ts +++ b/test/functional/apps/visualize/_tsvb_chart.ts @@ -17,6 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const inspector = getService('inspector'); const retry = getService('retry'); const security = getService('security'); + const PageObjects = getPageObjects([ 'visualize', 'visualBuilder', @@ -27,12 +28,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('visual builder', function describeIndexTests() { this.tags('includeFirefox'); + + before(async () => { + await PageObjects.visualize.initTests(); + }); + beforeEach(async () => { - await security.testUser.setRoles([ - 'kibana_admin', - 'test_logstash_reader', - 'kibana_sample_admin', - ]); + await security.testUser.setRoles( + ['kibana_admin', 'test_logstash_reader', 'kibana_sample_admin'], + false + ); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickVisualBuilder(); await PageObjects.visualBuilder.checkVisualBuilderIsPresent(); @@ -141,7 +146,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await security.testUser.restoreDefaults(); - await esArchiver.unload('index_pattern_without_timefield'); + await esArchiver.load('empty_kibana'); + await PageObjects.visualize.initTests(); }); const switchIndexTest = async (useKibanaIndexes: boolean) => { diff --git a/test/functional/apps/visualize/_tsvb_markdown.ts b/test/functional/apps/visualize/_tsvb_markdown.ts index 880255eede5aa..89db60bc7645c 100644 --- a/test/functional/apps/visualize/_tsvb_markdown.ts +++ b/test/functional/apps/visualize/_tsvb_markdown.ts @@ -11,7 +11,11 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const { visualBuilder, timePicker } = getPageObjects(['visualBuilder', 'timePicker']); + const { visualBuilder, timePicker, visualize } = getPageObjects([ + 'visualBuilder', + 'timePicker', + 'visualize', + ]); const retry = getService('retry'); async function cleanupMarkdownData(variableName: 'variable' | 'label', checkedValue: string) { @@ -31,6 +35,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('visual builder', function describeIndexTests() { describe('markdown', () => { before(async () => { + await visualize.initTests(); await visualBuilder.resetPage(); await visualBuilder.clickMarkdown(); await timePicker.setAbsoluteRange( diff --git a/test/functional/apps/visualize/_tsvb_table.ts b/test/functional/apps/visualize/_tsvb_table.ts index 662ca59dc192d..abe3b799e4711 100644 --- a/test/functional/apps/visualize/_tsvb_table.ts +++ b/test/functional/apps/visualize/_tsvb_table.ts @@ -18,6 +18,9 @@ export default function ({ getPageObjects }: FtrProviderContext) { ]); describe('visual builder', function describeIndexTests() { + before(async () => { + await visualize.initTests(); + }); describe('table', () => { beforeEach(async () => { await visualBuilder.resetPage('Sep 22, 2015 @ 06:00:00.000', 'Sep 22, 2015 @ 11:00:00.000'); diff --git a/test/functional/apps/visualize/_tsvb_time_series.ts b/test/functional/apps/visualize/_tsvb_time_series.ts index 58e8cd8dd0d46..a0c9d806facc6 100644 --- a/test/functional/apps/visualize/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/_tsvb_time_series.ts @@ -26,6 +26,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); describe('visual builder', function describeIndexTests() { + before(async () => { + await visualize.initTests(); + }); beforeEach(async () => { await visualize.navigateToNewVisualization(); await visualize.clickVisualBuilder(); diff --git a/test/functional/apps/visualize/_vega_chart.ts b/test/functional/apps/visualize/_vega_chart.ts index 15d6e81c659f9..da33b390925a4 100644 --- a/test/functional/apps/visualize/_vega_chart.ts +++ b/test/functional/apps/visualize/_vega_chart.ts @@ -43,6 +43,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('vega chart in visualize app', () => { before(async () => { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewVisualization(); log.debug('clickVega'); diff --git a/test/functional/apps/visualize/_vertical_bar_chart.ts b/test/functional/apps/visualize/_vertical_bar_chart.ts index 5dafdd5b04010..1fe0d2f9a955b 100644 --- a/test/functional/apps/visualize/_vertical_bar_chart.ts +++ b/test/functional/apps/visualize/_vertical_bar_chart.ts @@ -19,6 +19,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'visEditor', 'visChart', 'timePicker']); describe('vertical bar chart', function () { + before(async () => { + await PageObjects.visualize.initTests(); + }); + const vizName1 = 'Visualization VerticalBarChart'; const initBarChart = async () => { diff --git a/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts b/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts index 34f401b5afff6..5f066e96c6e7c 100644 --- a/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts +++ b/test/functional/apps/visualize/_vertical_bar_chart_nontimeindex.ts @@ -39,7 +39,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.visEditor.clickGo(); }; - before(initBarChart); + before(async () => { + await PageObjects.visualize.initTests(); + await initBarChart(); + }); it('should save and load', async function () { await PageObjects.visualize.saveVisualizationExpectSuccessAndBreadcrumb(vizName1); diff --git a/test/functional/apps/visualize/_visualize_listing.ts b/test/functional/apps/visualize/_visualize_listing.ts index 399fa73da4bb3..90e7da1696702 100644 --- a/test/functional/apps/visualize/_visualize_listing.ts +++ b/test/functional/apps/visualize/_visualize_listing.ts @@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('create and delete', function () { before(async function () { + await PageObjects.visualize.initTests(); await PageObjects.visualize.gotoVisualizationLandingPage(); await PageObjects.visualize.deleteAllVisualizations(); }); diff --git a/test/functional/apps/visualize/index.ts b/test/functional/apps/visualize/index.ts index 4dff3eada1f24..eb224b3c9b879 100644 --- a/test/functional/apps/visualize/index.ts +++ b/test/functional/apps/visualize/index.ts @@ -7,7 +7,6 @@ */ import { FtrProviderContext } from '../../ftr_provider_context.d'; -import { UI_SETTINGS } from '../../../../src/plugins/data/common'; export default function ({ getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); @@ -19,17 +18,14 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { before(async () => { log.debug('Starting visualize before method'); await browser.setWindowSize(1280, 800); + await esArchiver.load('empty_kibana'); + await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.loadIfNeeded('long_window_logstash'); - await esArchiver.load('visualize'); - await kibanaServer.uiSettings.replace({ - defaultIndex: 'logstash-*', - [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', - }); }); // TODO: Remove when vislib is removed - describe('new charts library', function () { + describe('new charts library visualize ciGroup7', function () { this.tags('ciGroup7'); before(async () => { @@ -55,7 +51,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_vertical_bar_chart_nontimeindex')); }); - describe('', function () { + describe('visualize ciGroup9', function () { this.tags('ciGroup9'); loadTestFile(require.resolve('./_embedding_chart')); @@ -66,7 +62,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_chart_types')); }); - describe('', function () { + describe('visualize ciGroup10', function () { this.tags('ciGroup10'); loadTestFile(require.resolve('./_inspector')); @@ -78,7 +74,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_metric_chart')); }); - describe('', function () { + describe('visualize ciGroup4', function () { this.tags('ciGroup4'); loadTestFile(require.resolve('./_line_chart_split_series')); @@ -95,7 +91,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_region_map')); }); - describe('', function () { + describe('visualize ciGroup12', function () { this.tags('ciGroup12'); loadTestFile(require.resolve('./_tag_cloud')); diff --git a/test/functional/apps/visualize/input_control_vis/chained_controls.ts b/test/functional/apps/visualize/input_control_vis/chained_controls.ts index 7172be6c96966..18d1367b37e72 100644 --- a/test/functional/apps/visualize/input_control_vis/chained_controls.ts +++ b/test/functional/apps/visualize/input_control_vis/chained_controls.ts @@ -21,6 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { this.tags('includeFirefox'); before(async () => { + await PageObjects.visualize.initTests(); await PageObjects.common.navigateToApp('visualize'); await PageObjects.visualize.loadSavedVisualization('chained input control', { navigateToVisualize: false, diff --git a/test/functional/apps/visualize/input_control_vis/dynamic_options.ts b/test/functional/apps/visualize/input_control_vis/dynamic_options.ts index babe5a61a0cbb..633ba40bb0493 100644 --- a/test/functional/apps/visualize/input_control_vis/dynamic_options.ts +++ b/test/functional/apps/visualize/input_control_vis/dynamic_options.ts @@ -16,6 +16,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // FLAKY: https://github.com/elastic/kibana/issues/98974 describe.skip('dynamic options', () => { + before(async () => { + await PageObjects.visualize.initTests(); + }); + describe('without chained controls', () => { beforeEach(async () => { await PageObjects.common.navigateToApp('visualize'); diff --git a/test/functional/apps/visualize/input_control_vis/input_control_options.ts b/test/functional/apps/visualize/input_control_vis/input_control_options.ts index 2e3b5d758436e..82f003440364f 100644 --- a/test/functional/apps/visualize/input_control_vis/input_control_options.ts +++ b/test/functional/apps/visualize/input_control_vis/input_control_options.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('input control options', () => { before(async () => { + await PageObjects.visualize.initTests(); await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickInputControlVis(); // set time range to time with no documents - input controls do not use time filter be default diff --git a/test/functional/apps/visualize/input_control_vis/input_control_range.ts b/test/functional/apps/visualize/input_control_vis/input_control_range.ts index caa008080b2a3..97e746ba4a4c0 100644 --- a/test/functional/apps/visualize/input_control_vis/input_control_range.ts +++ b/test/functional/apps/visualize/input_control_vis/input_control_range.ts @@ -14,10 +14,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const find = getService('find'); const security = getService('security'); + const PageObjects = getPageObjects(['visualize']); + const { visualize, visEditor } = getPageObjects(['visualize', 'visEditor']); describe('input control range', () => { before(async () => { + await PageObjects.visualize.initTests(); await security.testUser.setRoles(['kibana_admin', 'kibana_sample_admin']); await esArchiver.load('kibana_sample_data_flights_index_pattern'); await visualize.navigateToNewVisualization(); @@ -48,10 +51,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async () => { await esArchiver.unload('kibana_sample_data_flights_index_pattern'); - // loading back default data - await esArchiver.loadIfNeeded('logstash_functional'); - await esArchiver.loadIfNeeded('long_window_logstash'); - await esArchiver.load('visualize'); await security.testUser.restoreDefaults(); }); }); diff --git a/test/functional/apps/visualize/legacy/_data_table.ts b/test/functional/apps/visualize/legacy/_data_table.ts index 41ddbd2dfc236..6613e3d13a31b 100644 --- a/test/functional/apps/visualize/legacy/_data_table.ts +++ b/test/functional/apps/visualize/legacy/_data_table.ts @@ -22,6 +22,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('legacy data table visualization', function indexPatternCreation() { before(async function () { + await PageObjects.visualize.initTests(); log.debug('navigateToApp visualize'); await PageObjects.visualize.navigateToNewAggBasedVisualization(); log.debug('clickDataTable'); diff --git a/test/functional/apps/visualize/legacy/index.ts b/test/functional/apps/visualize/legacy/index.ts index 677f1b33df2b6..187e8f3f3a663 100644 --- a/test/functional/apps/visualize/legacy/index.ts +++ b/test/functional/apps/visualize/legacy/index.ts @@ -9,19 +9,21 @@ import { FtrProviderContext } from '../../../ftr_provider_context.d'; import { UI_SETTINGS } from '../../../../../src/plugins/data/common'; -export default function ({ getService, loadTestFile }: FtrProviderContext) { +export default function ({ getPageObjects, getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); const log = getService('log'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['visualize']); describe('visualize with legacy visualizations', () => { before(async () => { + await PageObjects.visualize.initTests(); log.debug('Starting visualize legacy before method'); await browser.setWindowSize(1280, 800); await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.loadIfNeeded('long_window_logstash'); - await esArchiver.load('visualize'); + await kibanaServer.importExport.load('visualize'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*', [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', diff --git a/test/functional/fixtures/kbn_archiver/visualize.json b/test/functional/fixtures/kbn_archiver/visualize.json new file mode 100644 index 0000000000000..758841e8d81ef --- /dev/null +++ b/test/functional/fixtures/kbn_archiver/visualize.json @@ -0,0 +1,300 @@ +{ + "attributes": { + "fieldAttrs": "{\"utc_time\":{\"customLabel\":\"UTC time\"}}", + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.0.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzI2LDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "chained input control with dynamic options", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"chained input control with dynamic options\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1559759550755\",\"fieldName\":\"machine.os.raw\",\"parent\":\"\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1559759557302\",\"fieldName\":\"geo.src\",\"parent\":\"1559759550755\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "5d2de430-87c0-11e9-a991-3b492a7c3e09", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "control_1_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-06-05T18:33:07.827Z", + "version": "WzMzLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "dynamic options input control", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"dynamic options input control\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1559759127876\",\"fieldName\":\"geo.src\",\"parent\":\"\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "64983230-87bf-11e9-a991-3b492a7c3e09", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-06-05T18:26:10.771Z", + "version": "WzMyLDJd" +} + +{ + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "chained input control", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"chained input control\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1559757816862\",\"fieldName\":\"geo.src\",\"parent\":\"\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1559757836347\",\"fieldName\":\"clientip\",\"parent\":\"1559757816862\",\"label\":\"\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"dynamicOptions\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "68305470-87bc-11e9-a991-3b492a7c3e09", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "logstash-*", + "name": "control_1_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2019-06-05T18:04:48.310Z", + "version": "WzMxLDJd" +} + +{ + "attributes": { + "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"message\"}}},{\"name\":\"user\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"user\"}}}]", + "title": "test_index*" + }, + "id": "test_index*", + "references": [], + "type": "index-pattern", + "version": "WzI1LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "AreaChart [no date field]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"AreaChart [no date field]\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"addTooltip\":true,\"addLegend\":true,\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "AreaChart-no-date-field", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "test_index*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzM0LDJd" +} + +{ + "attributes": { + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "title": "log*" + }, + "coreMigrationVersion": "8.0.0", + "id": "log*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzM1LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "AreaChart [no time filter]", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"AreaChart [no time filter]\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"addTooltip\":true,\"addLegend\":true,\"times\":[],\"addTimeMarker\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "AreaChart-no-time-filter", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "log*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzM2LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Shared-Item Visualization AreaChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.0.0", + "id": "Shared-Item-Visualization-AreaChart", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzI5LDJd" +} + +{ + "attributes": { + "description": "VegaMap", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "title": "VegaMap", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: https://vega.github.io/schema/vega/v5.json\\n config: {\\n kibana: {type: \\\"map\\\", latitude: 25, longitude: -70, zoom: 3}\\n }\\n data: [\\n {\\n name: table\\n url: {\\n index: kibana_sample_data_flights\\n %context%: true\\n // Uncomment to enable time filtering\\n // %timefield%: timestamp\\n body: {\\n size: 0\\n aggs: {\\n origins: {\\n terms: {field: \\\"OriginAirportID\\\", size: 10000}\\n aggs: {\\n originLocation: {\\n top_hits: {\\n size: 1\\n _source: {\\n includes: [\\\"OriginLocation\\\", \\\"Origin\\\"]\\n }\\n }\\n }\\n distinations: {\\n terms: {field: \\\"DestAirportID\\\", size: 10000}\\n aggs: {\\n destLocation: {\\n top_hits: {\\n size: 1\\n _source: {\\n includes: [\\\"DestLocation\\\"]\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n format: {property: \\\"aggregations.origins.buckets\\\"}\\n transform: [\\n {\\n type: geopoint\\n projection: projection\\n fields: [\\n originLocation.hits.hits[0]._source.OriginLocation.lon\\n originLocation.hits.hits[0]._source.OriginLocation.lat\\n ]\\n }\\n ]\\n }\\n {\\n name: selectedDatum\\n on: [\\n {trigger: \\\"!selected\\\", remove: true}\\n {trigger: \\\"selected\\\", insert: \\\"selected\\\"}\\n ]\\n }\\n ]\\n signals: [\\n {\\n name: selected\\n value: null\\n on: [\\n {events: \\\"@airport:mouseover\\\", update: \\\"datum\\\"}\\n {events: \\\"@airport:mouseout\\\", update: \\\"null\\\"}\\n ]\\n }\\n ]\\n scales: [\\n {\\n name: airportSize\\n type: linear\\n domain: {data: \\\"table\\\", field: \\\"doc_count\\\"}\\n range: [\\n {signal: \\\"zoom*zoom*0.2+1\\\"}\\n {signal: \\\"zoom*zoom*10+1\\\"}\\n ]\\n }\\n ]\\n marks: [\\n {\\n type: group\\n from: {\\n facet: {\\n name: facetedDatum\\n data: selectedDatum\\n field: distinations.buckets\\n }\\n }\\n data: [\\n {\\n name: facetDatumElems\\n source: facetedDatum\\n transform: [\\n {\\n type: geopoint\\n projection: projection\\n fields: [\\n destLocation.hits.hits[0]._source.DestLocation.lon\\n destLocation.hits.hits[0]._source.DestLocation.lat\\n ]\\n }\\n {type: \\\"formula\\\", expr: \\\"{x:parent.x, y:parent.y}\\\", as: \\\"source\\\"}\\n {type: \\\"formula\\\", expr: \\\"{x:datum.x, y:datum.y}\\\", as: \\\"target\\\"}\\n {type: \\\"linkpath\\\", shape: \\\"diagonal\\\"}\\n ]\\n }\\n ]\\n scales: [\\n {\\n name: lineThickness\\n type: log\\n clamp: true\\n range: [1, 8]\\n }\\n {\\n name: lineOpacity\\n type: log\\n clamp: true\\n range: [0.2, 0.8]\\n }\\n ]\\n marks: [\\n {\\n from: {data: \\\"facetDatumElems\\\"}\\n type: path\\n interactive: false\\n encode: {\\n update: {\\n path: {field: \\\"path\\\"}\\n stroke: {value: \\\"black\\\"}\\n strokeWidth: {scale: \\\"lineThickness\\\", field: \\\"doc_count\\\"}\\n strokeOpacity: {scale: \\\"lineOpacity\\\", field: \\\"doc_count\\\"}\\n }\\n }\\n }\\n ]\\n }\\n {\\n name: airport\\n type: symbol\\n from: {data: \\\"table\\\"}\\n encode: {\\n update: {\\n size: {scale: \\\"airportSize\\\", field: \\\"doc_count\\\"}\\n xc: {signal: \\\"datum.x\\\"}\\n yc: {signal: \\\"datum.y\\\"}\\n tooltip: {\\n signal: \\\"{title: datum.originLocation.hits.hits[0]._source.Origin + ' (' + datum.key + ')', connnections: length(datum.distinations.buckets), flights: datum.doc_count}\\\"\\n }\\n }\\n }\\n }\\n ]\\n}\"},\"title\":\"[Flights] Airport Connections (Hover Over Airport)\",\"type\":\"vega\"}" + }, + "coreMigrationVersion": "8.0.0", + "id": "VegaMap", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [], + "type": "visualization", + "version": "WzM3LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization AreaChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Visualization AreaChart\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"},\"labels\":{},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true,\"fittingFunction\":\"zero\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"timeRange\":{\"from\":\"now-15m\",\"to\":\"now\"},\"useNormalizedEsInterval\":true,\"scaleMetricValues\":false,\"interval\":\"auto\",\"drop_partials\":false,\"min_doc_count\":1,\"extended_bounds\":{}}}]}" + }, + "coreMigrationVersion": "8.0.0", + "id": "Visualization-AreaChart", + "migrationVersion": { + "visualization": "7.13.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzMwLDJd" +} + +{ + "attributes": { + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "title": "logstash*" + }, + "coreMigrationVersion": "8.0.0", + "id": "logstash*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzI3LDJd" +} + +{ + "attributes": { + "fieldFormatMap": "{\"bytes\":{\"id\":\"bytes\"}}", + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "long-window-logstash-*" + }, + "coreMigrationVersion": "8.0.0", + "id": "long-window-logstash-*", + "migrationVersion": { + "index-pattern": "7.11.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzI4LDJd" +} \ No newline at end of file diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 1ccea86905431..9a4c01f0f2767 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -8,6 +8,7 @@ import { FtrProviderContext } from '../ftr_provider_context'; import { VisualizeConstants } from '../../../src/plugins/visualize/public/application/visualize_constants'; +import { UI_SETTINGS } from '../../../src/plugins/data/common'; // TODO: Remove & Refactor to use the TTV page objects interface VisualizeSaveModalArgs { @@ -23,6 +24,7 @@ type DashboardPickerOption = | 'new-dashboard-option'; export function VisualizePageProvider({ getService, getPageObjects }: FtrProviderContext) { + const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); const retry = getService('retry'); const find = getService('find'); @@ -48,6 +50,16 @@ export function VisualizePageProvider({ getService, getPageObjects }: FtrProvide LOGSTASH_NON_TIME_BASED: 'logstash*', }; + public async initTests() { + await kibanaServer.savedObjects.clean({ types: ['visualization'] }); + await kibanaServer.importExport.load('visualize'); + + await kibanaServer.uiSettings.replace({ + defaultIndex: 'logstash-*', + [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', + }); + } + public async gotoVisualizationLandingPage() { await common.navigateToApp('visualize'); } From 9d9dfe4bbf6b37243b509a99375067a8781e32a7 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Thu, 13 May 2021 15:44:18 -0500 Subject: [PATCH 088/144] [index pattern field editor] Update runtime field painless docs url (#100014) * update runtime field painless docs url --- .../index_pattern_field_editor/public/lib/documentation.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/index_pattern_field_editor/public/lib/documentation.ts b/src/plugins/index_pattern_field_editor/public/lib/documentation.ts index 9577f25184ba0..70f180d7cb5f2 100644 --- a/src/plugins/index_pattern_field_editor/public/lib/documentation.ts +++ b/src/plugins/index_pattern_field_editor/public/lib/documentation.ts @@ -11,11 +11,11 @@ import { DocLinksStart } from 'src/core/public'; export const getLinks = (docLinks: DocLinksStart) => { const { DOC_LINK_VERSION, ELASTIC_WEBSITE_URL } = docLinks; const docsBase = `${ELASTIC_WEBSITE_URL}guide/en`; - const esDocsBase = `${docsBase}/elasticsearch/reference/${DOC_LINK_VERSION}`; const painlessDocsBase = `${docsBase}/elasticsearch/painless/${DOC_LINK_VERSION}`; + const kibanaDocsBase = `${docsBase}/kibana/${DOC_LINK_VERSION}`; return { - runtimePainless: `${esDocsBase}/runtime.html#runtime-mapping-fields`, + runtimePainless: `${kibanaDocsBase}/managing-index-patterns.html#runtime-fields`, painlessSyntax: `${painlessDocsBase}/painless-lang-spec.html`, }; }; From 5507ba622625a2677a35b4aec5e667d1b6e6017c Mon Sep 17 00:00:00 2001 From: Scotty Bollinger Date: Thu, 13 May 2021 16:16:28 -0500 Subject: [PATCH 089/144] [Workplace Search] Fix bug when transitioning to personal dashboard (#100061) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The unmount callback should have never been in the useEffect keyed off of the pathname. Another issue appeared earlier and I tried to fix it with the now removed conditional, but it should have been removed into it’s own useEffect that only runs when the component is unmounted, not on every route change. Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../views/content_sources/source_router.test.tsx | 8 -------- .../views/content_sources/source_router.tsx | 8 ++++---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx index 528065da23af6..dda3eeea54926 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.test.tsx @@ -120,14 +120,6 @@ describe('SourceRouter', () => { }); describe('reset state', () => { - it('does not reset state when switching between source tree views', () => { - mockLocation.pathname = `/sources/${contentSource.id}`; - shallow(); - unmountHandler(); - - expect(resetSourceState).not.toHaveBeenCalled(); - }); - it('resets state when leaving source tree', () => { mockLocation.pathname = '/home'; shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx index cd20e32def16d..d5d6c8e541e4f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx @@ -55,12 +55,12 @@ export const SourceRouter: React.FC = () => { useEffect(() => { initializeSource(sourceId); - return () => { - // We only want to reset the state when leaving the source section. Otherwise there is an unwanted flash of UI. - if (!pathname.includes(sourceId)) resetSourceState(); - }; }, [pathname]); + useEffect(() => { + return resetSourceState; + }, []); + if (dataLoading) return ; const { From 0364e8f5aaddcdc6d67b35db474af2d8c06f9446 Mon Sep 17 00:00:00 2001 From: John Schulz Date: Thu, 13 May 2021 17:32:14 -0400 Subject: [PATCH 090/144] [Fleet] Fix error when searching for keys whose names have spaces (#100056) ## Summary fixes #99895 Can reproduce #99895 with something like ```shell curl 'http://localhost:5601/api/fleet/enrollment-api-keys' \ -H 'content-type: application/json' \ -H 'kbn-version: 8.0.0' \ -u elastic:changeme \ --data-raw '{"name":"with spaces","policy_id":"d6a93200-b1bd-11eb-90ac-052b474d74cd"}' ``` Kibana logs this stack trace ``` server log [10:57:07.863] [error][fleet][plugins] KQLSyntaxError: Expected AND, OR, end of input but "\" found. policy_id:"d6a93200-b1bd-11eb-90ac-052b474d74cd" AND name:with\ spaces* --------------------------------------------------------------^ at Object.fromKueryExpression (/Users/jfsiii/work/kibana/src/plugins/data/common/es_query/kuery/ast/ast.ts:52:13) at listEnrollmentApiKeys (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:37:69) at Object.generateEnrollmentAPIKey (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:160:31) at processTicksAndRejections (internal/process/task_queues.js:93:5) at postEnrollmentApiKeyHandler (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts:53:20) at Router.handle (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:273:30) at handler (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:228:11) at exports.Manager.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/toolkit.js:60:28) at Object.internals.handler (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:46:20) at exports.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:31:20) at Request._lifecycle (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:370:32) at Request._execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:279:9) { shortMessage: 'Expected AND, OR, end of input but "\\" found.' ``` the `kuery` value which causes the `KQLSyntaxError` is ``` policy_id:\"d6a93200-b1bd-11eb-90ac-052b474d74cd\" AND name:with\\ spaces* ``` a value without spaces, e.g. `no_spaces` ``` policy_id:\"d6a93200-b1bd-11eb-90ac-052b474d74cd\" AND name:no_spaces* ``` is converted to this query object ``` { "bool": { "filter": [ { "bool": { "should": [ { "match_phrase": { "policy_id": "d6a93200-b1bd-11eb-90ac-052b474d74cd" } } ], "minimum_should_match": 1 } }, { "bool": { "should": [ { "query_string": { "fields": [ "name" ], "query": "no_spaces*" } } ], "minimum_should_match": 1 } } ] } ``` I tried some other approaches for handling the spaces based on what I saw in the docs like `name:"\"with spaces\"` and `name:(with spaces)*`but they all failed as well, like ``` KQLSyntaxError: Expected AND, OR, end of input but "*" found. policy_id:"d6a93200-b1bd-11eb-90ac-052b474d74cd" AND name:(with spaces)* -----------------------------------------------------------------------^ at Object.fromKueryExpression (/Users/jfsiii/work/kibana/src/plugins/data/common/es_query/kuery/ast/ast.ts:52:13) at listEnrollmentApiKeys (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:37:69) at Object.generateEnrollmentAPIKey (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts:166:31) at processTicksAndRejections (internal/process/task_queues.js:93:5) at postEnrollmentApiKeyHandler (/Users/jfsiii/work/kibana/x-pack/plugins/fleet/server/routes/enrollment_api_key/handler.ts:53:20) at Router.handle (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:273:30) at handler (/Users/jfsiii/work/kibana/src/core/server/http/router/router.ts:228:11) at exports.Manager.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/toolkit.js:60:28) at Object.internals.handler (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:46:20) at exports.execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/handler.js:31:20) at Request._lifecycle (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:370:32) at Request._execute (/Users/jfsiii/work/kibana/node_modules/@hapi/hapi/lib/request.js:279:9) { shortMessage: 'Expected AND, OR, end of input but "*" found.' ``` So I logged out the query object for a successful request, and put that in a function ``` { "query": { "bool": { "filter": [ { "bool": { "should": [ { "match_phrase": { "policy_id": "d6a93200-b1bd-11eb-90ac-052b474d74cd" } } ], "minimum_should_match": 1 } }, { "bool": { "should": [ { "query_string": { "fields": [ "name" ], "query": "(with spaces) *" } } ], "minimum_should_match": 1 } } ] } } } ``` ### Checklist - [x] [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 --- .../services/api_keys/enrollment_api_key.ts | 35 +++++++++++-- .../apis/enrollment_api_keys/crud.ts | 51 ++++++++++++++++++- 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts b/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts index f0991ab01a6ed..511a0abecbc18 100644 --- a/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts +++ b/x-pack/plugins/fleet/server/services/api_keys/enrollment_api_key.ts @@ -14,6 +14,7 @@ import type { SavedObjectsClientContract, ElasticsearchClient } from 'src/core/s import { esKuery } from '../../../../../../src/plugins/data/server'; import type { ESSearchResponse as SearchResponse } from '../../../../../../typings/elasticsearch'; import type { EnrollmentAPIKey, FleetServerEnrollmentAPIKey } from '../../types'; +import { IngestManagerError } from '../../errors'; import { ENROLLMENT_API_KEYS_INDEX } from '../../constants'; import { agentPolicyService } from '../agent_policy'; import { escapeSearchQueryPhrase } from '../saved_object'; @@ -28,10 +29,13 @@ export async function listEnrollmentApiKeys( page?: number; perPage?: number; kuery?: string; + query?: ReturnType; showInactive?: boolean; } ): Promise<{ items: EnrollmentAPIKey[]; total: any; page: any; perPage: any }> { const { page = 1, perPage = 20, kuery } = options; + const query = + options.query ?? (kuery && esKuery.toElasticsearchQuery(esKuery.fromKueryExpression(kuery))); const res = await esClient.search>({ index: ENROLLMENT_API_KEYS_INDEX, @@ -40,9 +44,7 @@ export async function listEnrollmentApiKeys( sort: 'created_at:desc', track_total_hits: true, ignore_unavailable: true, - body: kuery - ? { query: esKuery.toElasticsearchQuery(esKuery.fromKueryExpression(kuery)) } - : undefined, + body: query ? { query } : undefined, }); // @ts-expect-error @elastic/elasticsearch @@ -159,7 +161,7 @@ export async function generateEnrollmentAPIKey( const { items } = await listEnrollmentApiKeys(esClient, { page: page++, perPage: 100, - kuery: `policy_id:"${agentPolicyId}" AND name:${providedKeyName.replace(/ /g, '\\ ')}*`, + query: getQueryForExistingKeyNameOnPolicy(agentPolicyId, providedKeyName), }); if (items.length === 0) { hasMore = false; @@ -176,7 +178,7 @@ export async function generateEnrollmentAPIKey( k.name?.replace(providedKeyName, '').trim().match(uuidRegex) ) ) { - throw new Error( + throw new IngestManagerError( i18n.translate('xpack.fleet.serverError.enrollmentKeyDuplicate', { defaultMessage: 'An enrollment key named {providedKeyName} already exists for agent policy {agentPolicyId}', @@ -254,6 +256,29 @@ export async function generateEnrollmentAPIKey( }; } +function getQueryForExistingKeyNameOnPolicy(agentPolicyId: string, providedKeyName: string) { + const query = { + bool: { + filter: [ + { + bool: { + should: [{ match_phrase: { policy_id: agentPolicyId } }], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [{ query_string: { fields: ['name'], query: `(${providedKeyName}) *` } }], + minimum_should_match: 1, + }, + }, + ], + }, + }; + + return query; +} + export async function getEnrollmentAPIKeyById(esClient: ElasticsearchClient, apiKeyId: string) { const res = await esClient.search({ index: ENROLLMENT_API_KEYS_INDEX, diff --git a/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts b/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts index 5f38a6e050f40..25fb71ae42807 100644 --- a/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts +++ b/x-pack/test/fleet_api_integration/apis/enrollment_api_keys/crud.ts @@ -103,7 +103,7 @@ export default function (providerContext: FtrProviderContext) { .expect(400); }); - it('should allow to create an enrollment api key with an agent policy', async () => { + it('should allow to create an enrollment api key with only an agent policy', async () => { const { body: apiResponse } = await supertest .post(`/api/fleet/enrollment-api-keys`) .set('kbn-xsrf', 'xxx') @@ -115,6 +115,55 @@ export default function (providerContext: FtrProviderContext) { expect(apiResponse.item).to.have.keys('id', 'api_key', 'api_key_id', 'name', 'policy_id'); }); + it('should allow to create an enrollment api key with agent policy and unique name', async () => { + const { body: noSpacesRes } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something', + }); + expect(noSpacesRes.item).to.have.keys('id', 'api_key', 'api_key_id', 'name', 'policy_id'); + + const { body: hasSpacesRes } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something else', + }); + expect(hasSpacesRes.item).to.have.keys('id', 'api_key', 'api_key_id', 'name', 'policy_id'); + + const { body: noSpacesDupe } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something', + }) + .expect(400); + + expect(noSpacesDupe).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'An enrollment key named something already exists for agent policy policy1', + }); + + const { body: hasSpacesDupe } = await supertest + .post(`/api/fleet/enrollment-api-keys`) + .set('kbn-xsrf', 'xxx') + .send({ + policy_id: 'policy1', + name: 'something else', + }) + .expect(400); + expect(hasSpacesDupe).to.eql({ + statusCode: 400, + error: 'Bad Request', + message: 'An enrollment key named something else already exists for agent policy policy1', + }); + }); + it('should create an ES ApiKey with metadata', async () => { const { body: apiResponse } = await supertest .post(`/api/fleet/enrollment-api-keys`) From 6bafb59fd5cc6cac55f07bd42df97e2ece0633e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 13 May 2021 23:35:38 +0200 Subject: [PATCH 091/144] fix-typo: Use of `than` instead of `then` (#100030) --- packages/kbn-legacy-logging/src/rotate/log_rotator.ts | 2 +- src/plugins/console/public/lib/autocomplete/engine.js | 2 +- .../importer/geojson_importer/geojson_importer.test.js | 2 +- .../inventory_view/components/waffle/legend_controls.tsx | 2 +- .../elasticsearch_util/elasticsearch_geo_utils.test.js | 4 ++-- .../plugins/maps/common/elasticsearch_util/total_hits.ts | 2 +- .../public/components/app/section/apm/index.test.tsx | 2 +- .../app/section/metrics/lib/format_duration.test.ts | 8 ++++---- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/kbn-legacy-logging/src/rotate/log_rotator.ts b/packages/kbn-legacy-logging/src/rotate/log_rotator.ts index 4d57d869b9008..4b1e34839030f 100644 --- a/packages/kbn-legacy-logging/src/rotate/log_rotator.ts +++ b/packages/kbn-legacy-logging/src/rotate/log_rotator.ts @@ -149,7 +149,7 @@ export class LogRotator { if (this.usePolling && !this.shouldUsePolling) { this.log( ['warning', 'logging:rotate'], - 'Looks like your current environment support a faster algorithm then polling. You can try to disable `usePolling`' + 'Looks like your current environment support a faster algorithm than polling. You can try to disable `usePolling`' ); } diff --git a/src/plugins/console/public/lib/autocomplete/engine.js b/src/plugins/console/public/lib/autocomplete/engine.js index 7852c9da7898f..bd72af3c0e8cf 100644 --- a/src/plugins/console/public/lib/autocomplete/engine.js +++ b/src/plugins/console/public/lib/autocomplete/engine.js @@ -146,7 +146,7 @@ export function populateContext(tokenPath, context, editor, includeAutoComplete, if (!wsToUse && walkStates.length > 1 && !includeAutoComplete) { console.info( - "more then one context active for current path, but autocomplete isn't requested", + "more than one context active for current path, but autocomplete isn't requested", walkStates ); } diff --git a/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js b/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js index 6b16c955c396e..6a58e863aed5f 100644 --- a/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js +++ b/x-pack/plugins/file_upload/public/importer/geojson_importer/geojson_importer.test.js @@ -286,7 +286,7 @@ describe('createChunks', () => { expect(chunks[1].length).toBe(2); }); - test('should break features into chunks containing only single feature when feature size is greater then maxChunkCharCount', () => { + test('should break features into chunks containing only single feature when feature size is greater than maxChunkCharCount', () => { const maxChunkCharCount = GEOMETRY_COLLECTION_DOC_CHARS * 0.8; const chunks = createChunks(features, ES_FIELD_TYPES.GEO_SHAPE, maxChunkCharCount); expect(chunks.length).toBe(5); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx index f9e04b3d1772c..06b7739e03c54 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/legend_controls.tsx @@ -173,7 +173,7 @@ export const LegendControls = ({ const errors = !boundsValidRange ? [ i18n.translate('xpack.infra.legnedControls.boundRangeError', { - defaultMessage: 'Minimum must be smaller then the maximum', + defaultMessage: 'Minimum must be smaller than the maximum', }), ] : []; diff --git a/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js b/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js index 22b8a86158a74..a0908035c1480 100644 --- a/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js +++ b/x-pack/plugins/maps/common/elasticsearch_util/elasticsearch_geo_utils.test.js @@ -421,7 +421,7 @@ describe('createExtentFilter', () => { }); }); - it('should make left longitude greater then right longitude when area crosses 180 meridian east to west', () => { + it('should make left longitude greater than right longitude when area crosses 180 meridian east to west', () => { const mapExtent = { maxLat: 39, maxLon: 200, @@ -440,7 +440,7 @@ describe('createExtentFilter', () => { }); }); - it('should make left longitude greater then right longitude when area crosses 180 meridian west to east', () => { + it('should make left longitude greater than right longitude when area crosses 180 meridian west to east', () => { const mapExtent = { maxLat: 39, maxLon: -100, diff --git a/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts b/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts index 5de38d3f28851..be197becc6a9d 100644 --- a/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts +++ b/x-pack/plugins/maps/common/elasticsearch_util/total_hits.ts @@ -20,7 +20,7 @@ export function isTotalHitsGreaterThan(totalHits: TotalHits, value: number) { if (value > totalHits.value) { throw new Error( i18n.translate('xpack.maps.totalHits.lowerBoundPrecisionExceeded', { - defaultMessage: `Unable to determine if total hits is greater than value. Total hits precision is lower then value. Total hits: {totalHitsString}, value: {value}. Ensure _search.body.track_total_hits is at least as large as value.`, + defaultMessage: `Unable to determine if total hits is greater than value. Total hits precision is lower than value. Total hits: {totalHitsString}, value: {value}. Ensure _search.body.track_total_hits is at least as large as value.`, values: { totalHitsString: JSON.stringify(totalHits, null, ''), value, diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx index e2669d87d6776..67fede05f3ced 100644 --- a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -60,7 +60,7 @@ describe('APMSection', () => { })); }); - it('renders transaction stat less then 1k', () => { + it('renders transaction stat less than 1k', () => { const resp = { appLink: '/app/apm', stats: { diff --git a/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts b/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts index b4b03b2194ef2..f3853fa5a91da 100644 --- a/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts +++ b/x-pack/plugins/observability/public/components/app/section/metrics/lib/format_duration.test.ts @@ -8,19 +8,19 @@ import { formatDuration } from './format_duration'; describe('formatDuration(seconds)', () => { - it('should work for less then a minute', () => { + it('should work for less than a minute', () => { expect(formatDuration(56)).toBe('56s'); }); - it('should work for less then a hour', () => { + it('should work for less than a hour', () => { expect(formatDuration(2000)).toBe('33m 20s'); }); - it('should work for less then a day', () => { + it('should work for less than a day', () => { expect(formatDuration(74566)).toBe('20h 42m'); }); - it('should work for more then a day', () => { + it('should work for more than a day', () => { expect(formatDuration(86400 * 3 + 3600 * 4)).toBe('3d 4h'); expect(formatDuration(86400 * 419 + 3600 * 6)).toBe('419d 6h'); }); From 7dd29a56ad89dc26d2381a8e537b4b11a3930f27 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 15:36:06 -0600 Subject: [PATCH 092/144] [Security Solutions] Breaks down the io-ts packages to decrease plugin size (#100058) ## Summary The io-ts package was too large and needed to broken down more by domain to decrease the lists plugin size and any other plugin wanting to use the packages will not incur big hits as well. Before we had one large io-ts package: ``` @kbn/securitysolution-io-ts-utils ``` Now we have these broken down 4 packages: ``` @kbn/securitysolution-io-ts-utils @kbn/securitysolution-io-ts-types @kbn/securitysolution-io-ts-alerting-types @kbn/securitysolution-io-ts-list-types ``` Deps between these packages are: ``` @kbn/securitysolution-io-ts-utils (none) @kbn/securitysolution-io-ts-types -> @kbn/securitysolution-io-ts-utils @kbn/securitysolution-io-ts-alerting-types -> @kbn/securitysolution-io-ts-types, @kbn/securitysolution-io-ts-utils @kbn/securitysolution-io-ts-list-types -> @kbn/securitysolution-io-ts-types, @kbn/securitysolution-io-ts-utils ``` Short description and function of each (Also in each of their README.md): ``` @kbn/securitysolution-io-ts-utils, Smallest amount of utilities such as format, validate, etc... @kbn/securitysolution-io-ts-types, Base types such as to_number, to_string, etc... @kbn/securitysolution-io-ts-alerting-types, Alerting specific types such as severity, from, to, etc... @kbn/securitysolution-io-ts-list-types, list specific types such as exception lists, exception list types, etc... ``` ### Checklist Delete any items that are not applicable to this PR. - [x] [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 --- package.json | 3 + packages/BUILD.bazel | 3 + .../BUILD.bazel | 94 +++++++++++++++++++ .../README.md | 8 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src/actions/index.ts | 0 .../src/constants/index.mock.ts | 0 .../src/constants/index.ts | 0 .../src/default_actions_array/index.ts | 0 .../default_export_file_name/index.test.ts | 2 +- .../src/default_export_file_name/index.ts | 0 .../src/default_from_string/index.test.ts | 2 +- .../src/default_from_string/index.ts | 0 .../src/default_interval_string/index.test.ts | 2 +- .../src/default_interval_string/index.ts | 0 .../src/default_language_string/index.test.ts | 2 +- .../src/default_language_string/index.ts | 0 .../default_max_signals_number/index.test.ts | 2 +- .../src/default_max_signals_number/index.ts | 0 .../src/default_page/index.test.ts | 2 +- .../src/default_page/index.ts | 2 +- .../src/default_per_page/index.test.ts | 2 +- .../src/default_per_page/index.ts | 2 +- .../default_risk_score_mapping_array/index.ts | 0 .../default_severity_mapping_array/index.ts | 0 .../src/default_threat_array/index.test.ts | 2 +- .../src/default_threat_array/index.ts | 0 .../src/default_throttle_null/index.test.ts | 2 +- .../src/default_throttle_null/index.ts | 0 .../src/default_to_string/index.test.ts | 2 +- .../src/default_to_string/index.ts | 0 .../src/default_uuid/index.test.ts | 2 +- .../src/default_uuid/index.ts | 25 +++++ .../src/from/index.ts | 2 +- .../src/index.ts | 40 ++++++++ .../src/language/index.ts | 0 .../src/max_signals/index.ts | 2 +- .../src/normalized_ml_job_id/index.ts | 2 +- .../references_default_array/index.test.ts | 14 +-- .../src/references_default_array/index.ts | 0 .../src/risk_score/index.test.ts | 2 +- .../src/risk_score/index.ts | 0 .../src/risk_score_mapping/index.ts | 3 +- .../src/saved_object_attributes/index.ts | 0 .../src/severity/index.ts | 0 .../src/severity_mapping/index.ts | 2 +- .../src/threat/index.ts | 0 .../src/threat_mapping/index.test.ts | 3 +- .../src/threat_mapping/index.ts | 8 +- .../src/threat_subtechnique/index.ts | 0 .../src/threat_tactic/index.ts | 0 .../src/threat_technique/index.ts | 0 .../src/throttle/index.ts | 0 .../tsconfig.json | 19 ++++ .../BUILD.bazel | 94 +++++++++++++++++++ .../README.md | 8 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src}/comment/index.mock.ts | 2 +- .../src}/comment/index.test.ts | 4 +- .../src}/comment/index.ts | 12 +-- .../src/constants/index.mock.ts | 24 +++++ .../src/constants/index.ts | 16 ++++ .../src}/create_comment/index.mock.ts | 0 .../src}/create_comment/index.test.ts | 2 +- .../src}/create_comment/index.ts | 2 +- .../src/created_at/index.ts | 0 .../src/created_by/index.ts | 0 .../src}/default_comments_array/index.test.ts | 2 +- .../src}/default_comments_array/index.ts | 0 .../index.test.ts | 2 +- .../default_create_comments_array/index.ts | 0 .../src}/default_namespace/index.test.ts | 2 +- .../src}/default_namespace/index.ts | 0 .../default_namespace_array/index.test.ts | 2 +- .../src}/default_namespace_array/index.ts | 0 .../index.test.ts | 2 +- .../default_update_comments_array/index.ts | 0 .../src/default_version_number}/index.test.ts | 2 +- .../src/default_version_number}/index.ts | 0 .../src/description/index.ts | 0 .../src}/endpoint/entries/index.mock.ts | 0 .../src}/endpoint/entries/index.test.ts | 2 +- .../src}/endpoint/entries/index.ts | 0 .../src}/endpoint/entry_match/index.mock.ts | 2 +- .../src}/endpoint/entry_match/index.test.ts | 2 +- .../src}/endpoint/entry_match/index.ts | 3 +- .../endpoint/entry_match_any/index.mock.ts | 2 +- .../endpoint/entry_match_any/index.test.ts | 2 +- .../src}/endpoint/entry_match_any/index.ts | 8 +- .../endpoint/entry_match_wildcard/index.ts | 3 +- .../src}/endpoint/entry_nested/index.mock.ts | 2 +- .../src}/endpoint/entry_nested/index.test.ts | 2 +- .../src}/endpoint/entry_nested/index.ts | 2 +- .../src}/endpoint/index.ts | 0 .../non_empty_nested_entries_array/index.ts | 0 .../src}/entries/index.mock.ts | 0 .../src}/entries/index.test.ts | 2 +- .../src}/entries/index.ts | 0 .../src}/entries_exist/index.mock.ts | 2 +- .../src}/entries_exist/index.test.ts | 2 +- .../src}/entries_exist/index.ts | 2 +- .../src}/entries_list/index.mock.ts | 2 +- .../src}/entries_list/index.test.ts | 2 +- .../src}/entries_list/index.ts | 2 +- .../src}/entry_match/index.mock.ts | 2 +- .../src}/entry_match/index.test.ts | 2 +- .../src}/entry_match/index.ts | 2 +- .../src}/entry_match_any/index.mock.ts | 2 +- .../src}/entry_match_any/index.test.ts | 2 +- .../src}/entry_match_any/index.ts | 3 +- .../src}/entry_match_wildcard/index.mock.ts | 2 +- .../src}/entry_match_wildcard/index.test.ts | 2 +- .../src}/entry_match_wildcard/index.ts | 2 +- .../src}/entry_nested/index.mock.ts | 2 +- .../src}/entry_nested/index.test.ts | 2 +- .../src}/entry_nested/index.ts | 2 +- .../src}/exception_list/index.ts | 0 .../src}/exception_list_item_type/index.ts | 0 .../src/id/index.ts | 2 +- .../src}/index.ts | 15 ++- .../src}/item_id/index.ts | 2 +- .../src}/list_operator/index.ts | 0 .../src}/lists/index.mock.ts | 2 +- .../src}/lists/index.test.ts | 2 +- .../src}/lists/index.ts | 2 +- .../src}/lists_default_array/index.test.ts | 2 +- .../src}/lists_default_array/index.ts | 0 .../src/meta/index.ts | 0 .../src/name/index.ts | 0 .../non_empty_entries_array/index.test.ts | 2 +- .../src}/non_empty_entries_array/index.ts | 0 .../index.test.ts | 2 +- .../non_empty_nested_entries_array/index.ts | 0 .../src}/os_type/index.ts | 2 +- .../src/tags/index.ts | 2 +- .../src}/type/index.ts | 0 .../src}/update_comment/index.mock.ts | 2 +- .../src}/update_comment/index.test.ts | 2 +- .../src}/update_comment/index.ts | 4 +- .../src/updated_at/index.ts | 0 .../src/updated_by/index.ts | 0 .../src/version/index.ts | 2 +- .../tsconfig.json | 19 ++++ .../BUILD.bazel | 93 ++++++++++++++++++ .../README.md | 8 ++ .../jest.config.js | 13 +++ .../package.json | 9 ++ .../src/default_array/index.test.ts | 2 +- .../src/default_array/index.ts | 0 .../src/default_boolean_false/index.test.ts | 2 +- .../src/default_boolean_false/index.ts | 0 .../src/default_boolean_true/index.test.ts | 2 +- .../src/default_boolean_true/index.ts | 0 .../src/default_empty_string/index.test.ts | 2 +- .../src/default_empty_string/index.ts | 0 .../src/default_string_array/index.test.ts | 2 +- .../src/default_string_array/index.ts | 0 .../index.test.ts | 2 +- .../src/default_string_boolean_false/index.ts | 0 .../src/default_uuid/index.test.ts | 43 +++++++++ .../src/default_uuid/index.ts | 0 .../src/empty_string_array/index.test.ts | 2 +- .../src/empty_string_array/index.ts | 0 .../src/index.ts | 28 ++++++ .../src/iso_date_string/index.test.ts | 2 +- .../src/iso_date_string/index.ts | 0 .../src/non_empty_array/index.test.ts | 2 +- .../src/non_empty_array/index.ts | 0 .../index.test.ts | 2 +- .../index.ts | 0 .../src/non_empty_string/index.test.ts | 2 +- .../src/non_empty_string/index.ts | 0 .../src/non_empty_string_array/index.test.ts | 2 +- .../src/non_empty_string_array/index.ts | 0 .../src/only_false_allowed/index.test.ts | 2 +- .../src/only_false_allowed/index.ts | 0 .../src/operator/index.ts | 0 .../src/parse_schedule_dates/index.ts | 4 - .../src/positive_integer/index.test.ts | 2 +- .../src/positive_integer/index.ts | 0 .../index.test.ts | 2 +- .../index.ts | 0 .../src/string_to_positive_number/index.ts | 0 .../src/uuid/index.test.ts | 2 +- .../src/uuid/index.ts | 0 .../tsconfig.json | 19 ++++ .../README.md | 14 +-- .../src/default_version_number/index.test.ts | 65 ------------- .../src/default_version_number/index.ts | 25 ----- .../src/index.ts | 64 ------------- x-pack/plugins/lists/common/constants.mock.ts | 2 +- .../build_exceptions_filter.test.ts | 2 +- .../exceptions/build_exceptions_filter.ts | 2 +- .../plugins/lists/common/exceptions/utils.ts | 2 +- .../common/schemas/common/schemas.test.ts | 6 +- .../lists/common/schemas/common/schemas.ts | 6 +- .../create_endpoint_list_item_schema.test.ts | 8 +- .../create_endpoint_list_item_schema.ts | 4 +- .../create_exception_list_item_schema.test.ts | 8 +- .../create_exception_list_item_schema.ts | 4 +- .../request/create_exception_list_schema.ts | 4 +- .../request/create_list_item_schema.ts | 2 +- .../schemas/request/create_list_schema.ts | 2 +- .../delete_endpoint_list_item_schema.ts | 2 +- .../delete_exception_list_item_schema.ts | 2 +- .../request/delete_exception_list_schema.ts | 2 +- .../request/delete_list_item_schema.ts | 2 +- .../schemas/request/delete_list_schema.ts | 3 +- .../export_exception_list_query_schema.ts | 2 +- .../request/find_endpoint_list_item_schema.ts | 2 +- .../find_exception_list_item_schema.ts | 8 +- .../request/find_exception_list_schema.ts | 7 +- .../schemas/request/find_list_item_schema.ts | 2 +- .../schemas/request/find_list_schema.ts | 2 +- .../request/import_list_item_query_schema.ts | 2 +- .../schemas/request/patch_list_item_schema.ts | 2 +- .../schemas/request/patch_list_schema.ts | 2 +- .../request/read_endpoint_list_item_schema.ts | 2 +- .../read_exception_list_item_schema.ts | 2 +- .../request/read_exception_list_schema.ts | 2 +- .../schemas/request/read_list_item_schema.ts | 2 +- .../schemas/request/read_list_schema.ts | 2 +- .../update_endpoint_list_item_schema.ts | 2 +- .../update_exception_list_item_schema.ts | 2 +- .../request/update_exception_list_schema.ts | 2 +- .../request/update_list_item_schema.ts | 2 +- .../schemas/request/update_list_schema.ts | 2 +- .../response/exception_list_item_schema.ts | 2 +- .../schemas/response/exception_list_schema.ts | 2 +- .../schemas/response/list_item_schema.ts | 2 +- .../common/schemas/response/list_schema.ts | 2 +- .../common/schemas/types/comment.mock.ts | 2 +- .../schemas/types/create_comment.mock.ts | 2 +- .../common/schemas/types/entries.mock.ts | 2 +- .../common/schemas/types/entry_exists.mock.ts | 2 +- .../common/schemas/types/entry_list.mock.ts | 2 +- .../common/schemas/types/entry_match.mock.ts | 2 +- .../schemas/types/entry_match_any.mock.ts | 2 +- .../types/entry_match_wildcard.mock.ts | 2 +- .../common/schemas/types/entry_nested.mock.ts | 2 +- .../schemas/types/update_comment.mock.ts | 2 +- x-pack/plugins/lists/common/shared_exports.ts | 2 +- .../components/builder/entry_renderer.tsx | 2 +- .../builder/exception_item_renderer.tsx | 2 +- .../builder/exception_items_renderer.tsx | 2 +- .../exceptions/components/builder/helpers.ts | 3 +- .../public/exceptions/transforms.test.ts | 2 +- .../plugins/lists/public/exceptions/types.ts | 2 +- .../plugins/lists/public/exceptions/utils.ts | 2 +- x-pack/plugins/lists/public/lists/types.ts | 2 +- .../lists/server/routes/delete_list_route.ts | 3 +- .../plugins/lists/server/routes/validate.ts | 6 +- .../lists/server/saved_objects/migrations.ts | 2 +- .../index_es_list_item_schema.ts | 2 +- .../elastic_query/index_es_list_schema.ts | 2 +- .../update_es_list_item_schema.ts | 2 +- .../elastic_query/update_es_list_schema.ts | 2 +- .../search_es_list_item_schema.ts | 2 +- .../elastic_response/search_es_list_schema.ts | 2 +- .../exceptions_list_so_schema.ts | 2 +- .../exception_lists/create_exception_list.ts | 2 +- .../create_exception_list_item.ts | 2 +- .../exception_lists/delete_exception_list.ts | 2 +- .../delete_exception_list_item.ts | 2 +- .../delete_exception_list_items_by_list.ts | 2 +- .../exception_list_client_types.ts | 8 +- .../exception_lists/find_exception_list.ts | 2 +- .../find_exception_list_item.ts | 2 +- .../find_exception_list_items.ts | 5 +- .../exception_lists/get_exception_list.ts | 2 +- .../get_exception_list_item.ts | 2 +- .../exception_lists/update_exception_list.ts | 2 +- .../update_exception_list_item.ts | 2 +- .../server/services/exception_lists/utils.ts | 2 +- .../server/services/items/create_list_item.ts | 2 +- .../services/items/create_list_items_bulk.ts | 2 +- .../server/services/items/delete_list_item.ts | 2 +- .../items/delete_list_item_by_value.ts | 2 +- .../server/services/items/get_list_item.ts | 2 +- .../services/items/get_list_item_by_value.ts | 2 +- .../services/items/get_list_item_by_values.ts | 2 +- .../items/search_list_item_by_values.ts | 2 +- .../server/services/items/update_list_item.ts | 2 +- .../items/write_lines_to_bulk_list_items.ts | 2 +- .../server/services/lists/create_list.ts | 2 +- .../lists/create_list_if_it_does_not_exist.ts | 8 +- .../server/services/lists/delete_list.ts | 2 +- .../lists/server/services/lists/get_list.ts | 2 +- .../services/lists/list_client_types.ts | 2 +- .../server/services/lists/update_list.ts | 2 +- .../services/utils/find_source_type.test.ts | 2 +- .../server/services/utils/find_source_type.ts | 2 +- .../services/utils/find_source_value.ts | 2 +- .../utils/get_query_filter_from_type_value.ts | 2 +- ...sform_elastic_named_search_to_list_item.ts | 2 +- .../utils/transform_elastic_to_list_item.ts | 2 +- .../transform_list_item_to_elastic_query.ts | 2 +- .../add_exception_modal/index.test.tsx | 2 +- .../edit_exception_modal/index.test.tsx | 2 +- .../components/exceptions/helpers.test.tsx | 2 +- .../endpoint/lib/artifacts/lists.test.ts | 2 +- .../server/endpoint/lib/artifacts/lists.ts | 2 +- .../filters/filter_events_against_list.ts | 2 +- yarn.lock | 9 ++ 306 files changed, 897 insertions(+), 423 deletions(-) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/README.md create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/package.json rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/actions/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/constants/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/constants/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_actions_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_export_file_name/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_export_file_name/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_from_string/index.test.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_from_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_interval_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_interval_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_language_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_language_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_max_signals_number/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_max_signals_number/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_page/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_page/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_per_page/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_per_page/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_risk_score_mapping_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_severity_mapping_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_threat_array/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_threat_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_throttle_null/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_throttle_null/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_to_string/index.test.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_to_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/default_uuid/index.test.ts (95%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/from/index.ts (92%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/language/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/max_signals/index.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/normalized_ml_job_id/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/references_default_array/index.test.ts (77%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/references_default_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/risk_score/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/risk_score/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/risk_score_mapping/index.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/saved_object_attributes/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/severity/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/severity_mapping/index.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_mapping/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_mapping/index.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_subtechnique/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_tactic/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/threat_technique/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-alerting-types}/src/throttle/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json create mode 100644 packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel create mode 100644 packages/kbn-securitysolution-io-ts-list-types/README.md create mode 100644 packages/kbn-securitysolution-io-ts-list-types/jest.config.js create mode 100644 packages/kbn-securitysolution-io-ts-list-types/package.json rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/comment/index.mock.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/comment/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/comment/index.ts (77%) create mode 100644 packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts create mode 100644 packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/create_comment/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/create_comment/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/create_comment/index.ts (93%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/created_at/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/created_by/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_comments_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_comments_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_create_comments_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_create_comments_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace_array/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_namespace_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_update_comments_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/default_update_comments_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/deafult_version_number => kbn-securitysolution-io-ts-list-types/src/default_version_number}/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils/src/deafult_version_number => kbn-securitysolution-io-ts-list-types/src/default_version_number}/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/description/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entries/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entries/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entries/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match/index.mock.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match/index.ts (84%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_any/index.mock.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_any/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_any/index.ts (76%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_match_wildcard/index.ts (85%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_nested/index.mock.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_nested/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/entry_nested/index.ts (91%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/endpoint/non_empty_nested_entries_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries/index.mock.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_exist/index.mock.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_exist/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_exist/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_list/index.mock.ts (86%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_list/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entries_list/index.ts (91%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match/index.mock.ts (88%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_any/index.mock.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_any/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_any/index.ts (82%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_wildcard/index.mock.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_wildcard/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_match_wildcard/index.ts (91%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_nested/index.mock.ts (94%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_nested/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/entry_nested/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/exception_list/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/exception_list_item_type/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/id/index.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/index.ts (78%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/item_id/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/list_operator/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists/index.mock.ts (93%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists/index.ts (93%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists_default_array/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/lists_default_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/meta/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/name/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_entries_array/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_entries_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_nested_entries_array/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/non_empty_nested_entries_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/os_type/index.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/tags/index.ts (89%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/type/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/update_comment/index.mock.ts (92%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/update_comment/index.test.ts (98%) rename packages/{kbn-securitysolution-io-ts-utils/src/list_types => kbn-securitysolution-io-ts-list-types/src}/update_comment/index.ts (90%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/updated_at/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/updated_by/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-list-types}/src/version/index.ts (90%) create mode 100644 packages/kbn-securitysolution-io-ts-list-types/tsconfig.json create mode 100644 packages/kbn-securitysolution-io-ts-types/BUILD.bazel create mode 100644 packages/kbn-securitysolution-io-ts-types/README.md create mode 100644 packages/kbn-securitysolution-io-ts-types/jest.config.js create mode 100644 packages/kbn-securitysolution-io-ts-types/package.json rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_false/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_false/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_true/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_boolean_true/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_empty_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_empty_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_array/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_boolean_false/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_string_boolean_false/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/default_uuid/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/empty_string_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/empty_string_array/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-types/src/index.ts rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/iso_date_string/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/iso_date_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_or_nullable_string_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_or_nullable_string_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string_array/index.test.ts (97%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/non_empty_string_array/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/only_false_allowed/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/only_false_allowed/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/operator/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/parse_schedule_dates/index.ts (85%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer_greater_than_zero/index.test.ts (96%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/positive_integer_greater_than_zero/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/string_to_positive_number/index.ts (100%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/uuid/index.test.ts (95%) rename packages/{kbn-securitysolution-io-ts-utils => kbn-securitysolution-io-ts-types}/src/uuid/index.ts (100%) create mode 100644 packages/kbn-securitysolution-io-ts-types/tsconfig.json delete mode 100644 packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts delete mode 100644 packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts diff --git a/package.json b/package.json index c04face1233ae..b79724dbb63bc 100644 --- a/package.json +++ b/package.json @@ -137,6 +137,9 @@ "@kbn/monaco": "link:packages/kbn-monaco", "@kbn/securitysolution-constants": "link:bazel-bin/packages/kbn-securitysolution-constants/npm_module", "@kbn/securitysolution-es-utils": "link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module", + "@kbn/securitysolution-io-ts-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-types/npm_module", + "@kbn/securitysolution-io-ts-alerting-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-alerting-types/npm_module", + "@kbn/securitysolution-io-ts-list-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-list-types/npm_module", "@kbn/securitysolution-io-ts-utils": "link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module", "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index c3d08ad49daea..a9c87043575fa 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -25,6 +25,9 @@ filegroup( "//packages/kbn-logging:build", "//packages/kbn-plugin-generator:build", "//packages/kbn-securitysolution-constants:build", + "//packages/kbn-securitysolution-io-ts-types:build", + "//packages/kbn-securitysolution-io-ts-alerting-types:build", + "//packages/kbn-securitysolution-io-ts-list-types:build", "//packages/kbn-securitysolution-io-ts-utils:build", "//packages/kbn-securitysolution-utils:build", "//packages/kbn-securitysolution-es-utils:build", diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel new file mode 100644 index 0000000000000..ba7123d0c1f21 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/BUILD.bazel @@ -0,0 +1,94 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-io-ts-alerting-types" +PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-alerting-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "//packages/kbn-securitysolution-io-ts-types", + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//lodash", + "@npm//moment", + "@npm//tslib", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/uuid" +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/README.md b/packages/kbn-securitysolution-io-ts-alerting-types/README.md new file mode 100644 index 0000000000000..b8fa8234f2d85 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/README.md @@ -0,0 +1,8 @@ +# kbn-securitysolution-io-ts-alerting-types + +Types that are specific to the security solution alerting to be shared among plugins. + +Related packages are +* kbn-securitysolution-io-ts-utils +* kbn-securitysolution-io-ts-list-types +* kbn-securitysolution-io-ts-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js b/packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js new file mode 100644 index 0000000000000..6125b95a9bce5 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-io-ts-alerting-types'], +}; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/package.json b/packages/kbn-securitysolution-io-ts-alerting-types/package.json new file mode 100644 index 0000000000000..ac972e06c1dc9 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-io-ts-alerting-types", + "version": "1.0.0", + "description": "io ts utilities and types to be shared with plugins from the security solution project", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-io-ts-utils/src/actions/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/actions/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/actions/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/actions/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/constants/index.mock.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/constants/index.mock.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/constants/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/constants/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/constants/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_actions_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_actions_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_actions_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_actions_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.test.ts index 1f81f056386d7..f0fe7f44a6f3e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultExportFileName } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_export_file_name', () => { test('it should validate a regular string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_export_file_name/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_export_file_name/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.test.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.test.ts index c1261f514540b..ccfb7923a230c 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultFromString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_from_string', () => { test('it should validate a from string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_from_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_from_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.test.ts index c4a0dc3664d0e..f5706677e6c5d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultIntervalString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_interval_string', () => { test('it should validate a interval string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_interval_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_interval_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.test.ts index 072c541a808a3..82bd8607dae72 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { Language } from '../language'; import { DefaultLanguageString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_language_string', () => { test('it should validate a string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_language_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_language_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.test.ts index bf703fa52d844..eb2af1dbea41a 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultMaxSignalsNumber } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { DEFAULT_MAX_SIGNALS } from '../constants'; describe('default_from_string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_max_signals_number/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_max_signals_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_page/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.test.ts index 3bcad15a7ebb8..cca1c7e2774f4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultPage } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_page', () => { test('it should validate a regular number greater than zero', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/default_page/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.ts index 056005b452a03..f9140be68ec8d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_page/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_page/index.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; import { Either } from 'fp-ts/lib/Either'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; /** * Types the DefaultPerPage as: diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.test.ts index f7361ba12a570..88e91986a65dd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultPerPage } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_per_page', () => { test('it should validate a regular number greater than zero', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.ts index 026642f91c08a..ea8f30c745062 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_per_page/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_per_page/index.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; import { Either } from 'fp-ts/lib/Either'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; /** * Types the DefaultPerPage as: diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_risk_score_mapping_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_risk_score_mapping_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_risk_score_mapping_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_risk_score_mapping_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_severity_mapping_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_severity_mapping_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_severity_mapping_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_severity_mapping_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.test.ts index ac86b5508ff14..5f1ef3fc61fab 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { Threats } from '../threat'; import { DefaultThreatArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_threat_null', () => { test('it should validate an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_threat_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_threat_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.test.ts index 4b8877bd532c2..b92815d4fe828 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { Throttle } from '../throttle'; import { DefaultThrottleNull } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_throttle_null', () => { test('it should validate a throttle string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_throttle_null/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_throttle_null/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.test.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.test.ts index bcab8ebd5f17c..31c35c8319fab 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultToString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_to_string', () => { test('it should validate a to string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_to_string/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_to_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.test.ts index d8cdff416037c..c471141a99a76 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultUuid } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_uuid', () => { test('it should validate a regular string', () => { diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts new file mode 100644 index 0000000000000..73bf807e92c43 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/default_uuid/index.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as t from 'io-ts'; +import { Either } from 'fp-ts/lib/Either'; +import uuid from 'uuid'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; + +/** + * Types the DefaultUuid as: + * - If null or undefined, then a default string uuid.v4() will be + * created otherwise it will be checked just against an empty string + */ +export const DefaultUuid = new t.Type( + 'DefaultUuid', + t.string.is, + (input, context): Either => + input == null ? t.success(uuid.v4()) : NonEmptyString.validate(input, context), + t.identity +); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/from/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/from/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts index 963e2fa0444f0..3bf4592a581f5 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/from/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/from/index.ts @@ -8,7 +8,7 @@ import { Either } from 'fp-ts/lib/Either'; import * as t from 'io-ts'; -import { parseScheduleDates } from '../parse_schedule_dates'; +import { parseScheduleDates } from '@kbn/securitysolution-io-ts-types'; const stringValidator = (input: unknown): input is string => typeof input === 'string'; diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts new file mode 100644 index 0000000000000..639140be049f2 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/index.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './actions'; +export * from './constants'; +export * from './default_actions_array'; +export * from './default_export_file_name'; +export * from './default_from_string'; +export * from './default_interval_string'; +export * from './default_language_string'; +export * from './default_max_signals_number'; +export * from './default_page'; +export * from './default_per_page'; +export * from './default_risk_score_mapping_array'; +export * from './default_severity_mapping_array'; +export * from './default_threat_array'; +export * from './default_throttle_null'; +export * from './default_to_string'; +export * from './default_uuid'; +export * from './from'; +export * from './language'; +export * from './max_signals'; +export * from './normalized_ml_job_id'; +export * from './references_default_array'; +export * from './risk_score'; +export * from './risk_score_mapping'; +export * from './saved_object_attributes'; +export * from './severity'; +export * from './severity_mapping'; +export * from './threat'; +export * from './threat_mapping'; +export * from './threat_subtechnique'; +export * from './threat_tactic'; +export * from './threat_technique'; +export * from './throttle'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/language/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/language/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/language/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/max_signals/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/max_signals/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts index 4c68cb01cf00f..83360234c65a1 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/max_signals/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/max_signals/index.ts @@ -9,7 +9,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; export const max_signals = PositiveIntegerGreaterThanZero; export type MaxSignals = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/normalized_ml_job_id/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/normalized_ml_job_id/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/normalized_ml_job_id/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/normalized_ml_job_id/index.ts index 6c7eb0ae33ab9..db26264c029cd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/normalized_ml_job_id/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/normalized_ml_job_id/index.ts @@ -10,7 +10,7 @@ import * as t from 'io-ts'; -import { NonEmptyArray } from '../non_empty_array'; +import { NonEmptyArray } from '@kbn/securitysolution-io-ts-types'; export const machine_learning_job_id_normalized = NonEmptyArray(t.string); export type MachineLearningJobIdNormalized = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.test.ts similarity index 77% rename from packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.test.ts index 41754a7ce0606..38fd27ac40fdf 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.test.ts @@ -8,13 +8,13 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { DefaultStringArray } from '../default_string_array'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { ReferencesDefaultArray } from '.'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_string_array', () => { test('it should validate an empty array', () => { const payload: string[] = []; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([]); @@ -23,7 +23,7 @@ describe('default_string_array', () => { test('it should validate an array of strings', () => { const payload = ['value 1', 'value 2']; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([]); @@ -32,18 +32,18 @@ describe('default_string_array', () => { test('it should not validate an array with a number', () => { const payload = ['value 1', 5]; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultStringArray"', + 'Invalid value "5" supplied to "referencesWithDefaultArray"', ]); expect(message.schema).toEqual({}); }); test('it should return a default array entry', () => { const payload = null; - const decoded = DefaultStringArray.decode(payload); + const decoded = ReferencesDefaultArray.decode(payload); const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([]); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/references_default_array/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/references_default_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.test.ts index bca8b92134928..d341ca8b3b4f7 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { RiskScore } from '.'; describe('risk_score', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/risk_score/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/risk_score_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/risk_score_mapping/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts index 1d7ca20e80b3b..b35b502811ec9 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/risk_score_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/risk_score_mapping/index.ts @@ -9,10 +9,9 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; +import { operator } from '@kbn/securitysolution-io-ts-types'; import { RiskScore } from '../risk_score'; -import { operator } from '../operator'; - export const riskScoreOrUndefined = t.union([RiskScore, t.undefined]); export type RiskScoreOrUndefined = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/saved_object_attributes/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/saved_object_attributes/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/saved_object_attributes/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/saved_object_attributes/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/severity/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/severity/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/severity/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/severity/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/severity_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/severity_mapping/index.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/severity_mapping/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/severity_mapping/index.ts index 9e7ee7d2831cd..1a3fd50039c29 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/severity_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/severity_mapping/index.ts @@ -10,7 +10,7 @@ import * as t from 'io-ts'; -import { operator } from '../operator'; +import { operator } from '@kbn/securitysolution-io-ts-types'; import { severity } from '../severity'; export const severity_mapping_field = t.string; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.test.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts index 7f754fb2d87de..16fd1647e5bfc 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts @@ -16,8 +16,7 @@ import { ThreatMappingEntries, threat_mapping, } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; -import { exactCheck } from '../exact_check'; +import { foldLeftRight, getPaths, exactCheck } from '@kbn/securitysolution-io-ts-utils'; describe('threat_mapping', () => { describe('threatMappingEntries', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.ts index 4fc64fe1e0982..abee0d2baceb0 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/threat_mapping/index.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.ts @@ -9,10 +9,12 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; +import { + NonEmptyArray, + NonEmptyString, + PositiveIntegerGreaterThanZero, +} from '@kbn/securitysolution-io-ts-types'; import { language } from '../language'; -import { NonEmptyArray } from '../non_empty_array'; -import { NonEmptyString } from '../non_empty_string'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; export const threat_query = t.string; export type ThreatQuery = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_subtechnique/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_subtechnique/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_subtechnique/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_tactic/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_tactic/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_tactic/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_tactic/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/threat_technique/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/threat_technique/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/threat_technique/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/throttle/index.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/throttle/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/throttle/index.ts rename to packages/kbn-securitysolution-io-ts-alerting-types/src/throttle/index.ts diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json new file mode 100644 index 0000000000000..3411ce2c93d05 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-alerting-types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-alerting-types/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel new file mode 100644 index 0000000000000..e9b806288addd --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/BUILD.bazel @@ -0,0 +1,94 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-io-ts-list-types" +PKG_REQUIRE_NAME = "@kbn/securitysolution-io-list-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "//packages/kbn-securitysolution-io-ts-types", + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//lodash", + "@npm//moment", + "@npm//tslib", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/uuid" +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-io-ts-list-types/README.md b/packages/kbn-securitysolution-io-ts-list-types/README.md new file mode 100644 index 0000000000000..090ede2ed7d62 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/README.md @@ -0,0 +1,8 @@ +# kbn-securitysolution-io-ts-list-types + +io-ts types that are specific to lists to be shared among plugins + +Related packages are +* kbn-securitysolution-io-ts-alerting-types +* kbn-securitysolution-io-ts-ts-utils +* kbn-securitysolution-io-ts-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-list-types/jest.config.js b/packages/kbn-securitysolution-io-ts-list-types/jest.config.js new file mode 100644 index 0000000000000..0312733b6a02b --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-io-ts-list-types'], +}; diff --git a/packages/kbn-securitysolution-io-ts-list-types/package.json b/packages/kbn-securitysolution-io-ts-list-types/package.json new file mode 100644 index 0000000000000..74893e59855bc --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-io-ts-list-types", + "version": "1.0.0", + "description": "io ts utilities and types to be shared with plugins from the security solution project", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.mock.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/comment/index.mock.ts index 56440d628e4aa..380f7f13b6210 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.mock.ts @@ -7,7 +7,7 @@ */ import { Comment, CommentsArray } from '.'; -import { DATE_NOW, ID, USER } from '../../constants/index.mock'; +import { DATE_NOW, ID, USER } from '../constants/index.mock'; export const getCommentsMock = (): Comment => ({ comment: 'some old comment', diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/comment/index.test.ts index 0f0bfac5e2068..89e734a92fd04 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.test.ts @@ -17,8 +17,8 @@ import { CommentsArrayOrUndefined, commentsArrayOrUndefined, } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; -import { DATE_NOW } from '../../constants/index.mock'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { DATE_NOW } from '../constants/index.mock'; describe('Comment', () => { describe('comment', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.ts similarity index 77% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/comment/index.ts index 783d8606b8a96..3b8cc6cc6ce95 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/comment/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/comment/index.ts @@ -8,12 +8,12 @@ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; -import { created_at } from '../../created_at'; -import { created_by } from '../../created_by'; -import { id } from '../../id'; -import { updated_at } from '../../updated_at'; -import { updated_by } from '../../updated_by'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; +import { created_at } from '../created_at'; +import { created_by } from '../created_by'; +import { id } from '../id'; +import { updated_at } from '../updated_at'; +import { updated_by } from '../updated_by'; export const comment = t.intersection([ t.exact( diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts new file mode 100644 index 0000000000000..d2107ae864f15 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.mock.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +export const ENTRY_VALUE = 'some host name'; +export const FIELD = 'host.name'; +export const MATCH = 'match'; +export const MATCH_ANY = 'match_any'; +export const OPERATOR = 'included'; +export const NESTED = 'nested'; +export const NESTED_FIELD = 'parent.field'; +export const LIST_ID = 'some-list-id'; +export const LIST = 'list'; +export const TYPE = 'ip'; +export const EXISTS = 'exists'; +export const WILDCARD = 'wildcard'; +export const USER = 'some user'; +export const DATE_NOW = '2020-04-20T15:25:31.830Z'; + +// Exception List specific +export const ID = 'uuid_here'; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts new file mode 100644 index 0000000000000..f86986fc328c5 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/src/constants/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * This ID is used for _both_ the Saved Object ID and for the list_id + * for the single global space agnostic endpoint list. + * + * TODO: Create a kbn-securitysolution-constants and add this to it. + * @deprecated Use the ENDPOINT_LIST_ID from the kbn-securitysolution-constants. + */ +export const ENDPOINT_LIST_ID = 'endpoint_list'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.test.ts index 1ac605e232ea1..3baf0054221db 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.test.ts @@ -17,7 +17,7 @@ import { CreateCommentsArrayOrUndefined, createCommentsArrayOrUndefined, } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('CreateComment', () => { describe('createComment', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.ts similarity index 93% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.ts index 438f946e796d6..883675ce51f91 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/create_comment/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/create_comment/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; export const createComment = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/created_at/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/created_at/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/created_at/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/created_at/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/created_by/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/created_by/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/created_by/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/created_by/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.test.ts index 5e667380e2adf..440c601876682 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { CommentsArray } from '../comment'; import { DefaultCommentsArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getCommentsArrayMock } from '../comment/index.mock'; describe('default_comments_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_comments_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_comments_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.test.ts index a4581fabbf6a9..de45fd9f300fa 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { CommentsArray } from '../comment'; import { DefaultCommentsArray } from '../default_comments_array'; import { getCommentsArrayMock } from '../comment/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_create_comments_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_create_comments_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.test.ts index 1decca0de6c50..21e8c375b3d01 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultNamespace } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_namespace', () => { test('it should validate "single"', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.test.ts index 8bc7a16b96097..b02a3b96a5a3d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultNamespaceArray, DefaultNamespaceArrayType } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_namespace_array', () => { test('it should validate "null" single item as an array with a "single" value', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_namespace_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_namespace_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.test.ts index f52baa49530ec..fa6613538b18e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { UpdateCommentsArray } from '../update_comment'; import { DefaultUpdateCommentsArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getUpdateCommentsArrayMock } from '../update_comment/index.mock'; describe('default_update_comments_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/default_update_comments_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_update_comments_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts index f77903d2d030d..fd7b12123b6bb 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultVersionNumber } from '../default_version_number'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_version_number', () => { test('it should validate a version number', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/deafult_version_number/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/default_version_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/description/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/description/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/description/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/description/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.test.ts index f5cb89ee79607..09f1740567bc1 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.test.ts @@ -14,7 +14,7 @@ import { nonEmptyEndpointEntriesArray, NonEmptyEndpointEntriesArray, } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEndpointEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEndpointEntryNestedMock } from '../entry_nested/index.mock'; import { getEndpointEntriesArrayMock } from './index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entries/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entries/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.mock.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.mock.ts index 7104406c4869c..17a1a083d73d8 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.mock.ts @@ -7,7 +7,7 @@ */ import { EndpointEntryMatch } from '.'; -import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../constants/index.mock'; export const getEndpointEntryMatchMock = (): EndpointEntryMatch => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.test.ts index cc0423fc119c7..fc3a2dded177d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEndpointEntryMatchMock } from './index.mock'; import { EndpointEntryMatch, endpointEntryMatch } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchMock } from '../../entry_match/index.mock'; describe('endpointEntryMatch', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.ts similarity index 84% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.ts index 83e2a0f61bb4a..07a1fc58a3d54 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match/index.ts @@ -7,8 +7,7 @@ */ import * as t from 'io-ts'; -import { operatorIncluded } from '../../../operator'; -import { NonEmptyString } from '../../../non_empty_string'; +import { NonEmptyString, operatorIncluded } from '@kbn/securitysolution-io-ts-types'; export const endpointEntryMatch = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.mock.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.mock.ts index 95bd6008f1d7c..13fb16d73457d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.mock.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../constants/index.mock'; import { EndpointEntryMatchAny } from '.'; export const getEndpointEntryMatchAnyMock = (): EndpointEntryMatchAny => ({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.test.ts index 0fd878986d5a2..cf64647772519 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEndpointEntryMatchAnyMock } from './index.mock'; import { EndpointEntryMatchAny, endpointEntryMatchAny } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchAnyMock } from '../../entry_match_any/index.mock'; describe('endpointEntryMatchAny', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.ts similarity index 76% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.ts index b39a428bb49dd..23c15767a511c 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_any/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_any/index.ts @@ -7,9 +7,11 @@ */ import * as t from 'io-ts'; -import { nonEmptyOrNullableStringArray } from '../../../non_empty_or_nullable_string_array'; -import { operatorIncluded } from '../../../operator'; -import { NonEmptyString } from '../../../non_empty_string'; +import { + NonEmptyString, + nonEmptyOrNullableStringArray, + operatorIncluded, +} from '@kbn/securitysolution-io-ts-types'; export const endpointEntryMatchAny = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_wildcard/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_wildcard/index.ts similarity index 85% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_wildcard/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_wildcard/index.ts index b66c5a2588eef..2697f3edc3db4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_match_wildcard/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_match_wildcard/index.ts @@ -7,8 +7,7 @@ */ import * as t from 'io-ts'; -import { operatorIncluded } from '../../../operator'; -import { NonEmptyString } from '../../../non_empty_string'; +import { NonEmptyString, operatorIncluded } from '@kbn/securitysolution-io-ts-types'; export const endpointEntryMatchWildcard = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.mock.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.mock.ts index f59e29c8ce526..31d983ba58fe3 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.mock.ts @@ -7,7 +7,7 @@ */ import { EndpointEntryNested } from '.'; -import { FIELD, NESTED } from '../../../constants/index.mock'; +import { FIELD, NESTED } from '../../constants/index.mock'; import { getEndpointEntryMatchMock } from '../entry_match/index.mock'; import { getEndpointEntryMatchAnyMock } from '../entry_match_any/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.test.ts index 03c02f67b71ad..f8e54e4956527 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EndpointEntryNested, endpointEntryNested } from '.'; -import { foldLeftRight, getPaths } from '../../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEndpointEntryNestedMock } from './index.mock'; import { getEndpointEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.ts similarity index 91% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.ts index 249dcc9077b34..bd4c90d851a90 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/entry_nested/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/entry_nested/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { nonEmptyEndpointNestedEntriesArray } from '../non_empty_nested_entries_array'; export const endpointEntryNested = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/non_empty_nested_entries_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/endpoint/non_empty_nested_entries_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/endpoint/non_empty_nested_entries_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/endpoint/non_empty_nested_entries_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.mock.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries/index.mock.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries/index.test.ts index b6e448f94ce6a..f68fea35e6fdf 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchMock } from '../entry_match/index.mock'; import { entriesArray, entriesArrayOrUndefined, entry } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; import { getEntryListMock } from '../entries_list/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.mock.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.mock.ts index 0882883f4d239..ad2164a3862eb 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryExists } from '.'; -import { EXISTS, FIELD, OPERATOR } from '../../constants/index.mock'; +import { EXISTS, FIELD, OPERATOR } from '../constants/index.mock'; export const getEntryExistsMock = (): EntryExists => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.test.ts index db4edb54dfc29..05451b11de7a6 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryExistsMock } from './index.mock'; import { entriesExists, EntryExists } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesExists', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.ts index f8f1ddecc9ff9..6d65d458583bd 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_exist/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_exist/index.ts @@ -8,8 +8,8 @@ import * as t from 'io-ts'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; -import { NonEmptyString } from '../../non_empty_string'; export const entriesExists = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.mock.ts similarity index 86% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.mock.ts index c4afb28f5ac54..2349b9d5ab2b3 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryList } from '.'; -import { FIELD, LIST, LIST_ID, OPERATOR, TYPE } from '../../constants/index.mock'; +import { FIELD, LIST, LIST_ID, OPERATOR, TYPE } from '../constants/index.mock'; export const getEntryListMock = (): EntryList => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.test.ts index 2be3803c356de..5b72242777875 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.test.ts @@ -11,7 +11,7 @@ import { left } from 'fp-ts/lib/Either'; import { getEntryListMock } from './index.mock'; import { entriesList, EntryList } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesList', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.ts similarity index 91% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.ts index b386ca35d2bbb..61d3c7b156fd2 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entries_list/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entries_list/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { type } from '../type'; import { listOperator as operator } from '../list_operator'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.mock.ts similarity index 88% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.mock.ts index 4fdd8d915fe04..38c9f0f922c46 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryMatch } from '.'; -import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../constants/index.mock'; export const getEntryMatchMock = (): EntryMatch => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.test.ts index 744c74c1223df..bff65ad7f6bec 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchMock } from './index.mock'; import { entriesMatch, EntryMatch } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesMatch', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.ts index cab6d0dd4a07f..4f04e01cf8f63 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; export const entriesMatch = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.mock.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.mock.ts index 0022b00c604b0..efaf23fe1e784 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryMatchAny } from '.'; -import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../constants/index.mock'; export const getEntryMatchAnyMock = (): EntryMatchAny => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.test.ts index 60fc4cdc26005..c0eb017fdab54 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchAnyMock } from './index.mock'; import { entriesMatchAny, EntryMatchAny } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesMatchAny', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.ts similarity index 82% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.ts index 0add9a610f30b..86e97c579a02c 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_any/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_any/index.ts @@ -8,9 +8,8 @@ import * as t from 'io-ts'; +import { NonEmptyString, nonEmptyOrNullableStringArray } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; -import { nonEmptyOrNullableStringArray } from '../../non_empty_or_nullable_string_array'; -import { NonEmptyString } from '../../non_empty_string'; export const entriesMatchAny = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.mock.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.mock.ts index 9810fe5e9875b..f81a8c6cba2ef 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryMatchWildcard } from '.'; -import { ENTRY_VALUE, FIELD, OPERATOR, WILDCARD } from '../../constants/index.mock'; +import { ENTRY_VALUE, FIELD, OPERATOR, WILDCARD } from '../constants/index.mock'; export const getEntryMatchWildcardMock = (): EntryMatchWildcard => ({ field: FIELD, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.test.ts index d9170dd60ab40..8a5a152ce7e65 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryMatchWildcardMock } from './index.mock'; import { entriesMatchWildcard, EntryMatchWildcard } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('entriesMatchWildcard', () => { test('it should validate an entry', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.ts similarity index 91% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.ts index aab5ba5e8e32c..ea1953b983d45 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_match_wildcard/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_match_wildcard/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { listOperator as operator } from '../list_operator'; export const entriesMatchWildcard = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.mock.ts similarity index 94% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.mock.ts index acde4443cccb7..05f42cdf69bc0 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.mock.ts @@ -7,7 +7,7 @@ */ import { EntryNested } from '.'; -import { NESTED, NESTED_FIELD } from '../../constants/index.mock'; +import { NESTED, NESTED_FIELD } from '../constants/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; import { getEntryMatchExcludeMock, getEntryMatchMock } from '../entry_match/index.mock'; import { getEntryMatchAnyExcludeMock, getEntryMatchAnyMock } from '../entry_match_any/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.test.ts index b6bbc4dbef4a3..b21737535fd77 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEntryNestedMock } from './index.mock'; import { entriesNested, EntryNested } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.ts index ff224dd836a19..f5ac68cc98702 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/entry_nested/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/entry_nested/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { nonEmptyNestedEntriesArray } from '../non_empty_nested_entries_array'; export const entriesNested = t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/exception_list/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/exception_list/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list_item_type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/exception_list_item_type/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/exception_list_item_type/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/exception_list_item_type/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/id/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/id/index.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/id/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/id/index.ts index 7b187d7730f73..5952bd2eda21f 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/id/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/id/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; export const id = NonEmptyString; export type Id = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/index.ts similarity index 78% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/index.ts index 9dd58e2a5a177..1a1c1c3314821 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/index.ts @@ -5,13 +5,19 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ + export * from './comment'; +export * from './constants'; export * from './create_comment'; +export * from './created_at'; +export * from './created_by'; export * from './default_comments_array'; export * from './default_create_comments_array'; export * from './default_namespace'; export * from './default_namespace_array'; export * from './default_update_comments_array'; +export * from './default_version_number'; +export * from './description'; export * from './endpoint'; export * from './entries'; export * from './entries_exist'; @@ -22,12 +28,19 @@ export * from './entry_match_wildcard'; export * from './entry_nested'; export * from './exception_list'; export * from './exception_list_item_type'; +export * from './id'; export * from './item_id'; +export * from './list_operator'; export * from './lists'; export * from './lists_default_array'; +export * from './meta'; +export * from './name'; export * from './non_empty_entries_array'; export * from './non_empty_nested_entries_array'; -export * from './list_operator'; export * from './os_type'; +export * from './tags'; export * from './type'; export * from './update_comment'; +export * from './updated_at'; +export * from './updated_by'; +export * from './version'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/item_id/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/item_id/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/item_id/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/item_id/index.ts index 171db8fd60fd1..dcb03884eadab 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/item_id/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/item_id/index.ts @@ -9,7 +9,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; export const item_id = NonEmptyString; export type ItemId = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/list_operator/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/list_operator/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/list_operator/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/list_operator/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.mock.ts similarity index 93% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists/index.mock.ts index c6f54b57d937b..e9f34c4cf789f 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.mock.ts @@ -7,7 +7,7 @@ */ import { List, ListArray } from '.'; -import { ENDPOINT_LIST_ID } from '../../constants'; +import { ENDPOINT_LIST_ID } from '../constants'; export const getListMock = (): List => ({ id: 'some_uuid', diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists/index.test.ts index 77d5e72ef8bc8..88dcc1ced8607 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { getEndpointListMock, getListArrayMock, getListMock } from './index.mock'; import { List, list, ListArray, listArray, ListArrayOrUndefined, listArrayOrUndefined } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('Lists', () => { describe('list', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.ts similarity index 93% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists/index.ts index 1bd1806564856..7881a6bb3322e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists/index.ts @@ -7,9 +7,9 @@ */ import * as t from 'io-ts'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; import { exceptionListType } from '../exception_list'; import { namespaceType } from '../default_namespace'; -import { NonEmptyString } from '../../non_empty_string'; export const list = t.exact( t.type({ diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.test.ts index 03d16d8e1b5ca..58a52d26aa34f 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultListArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getListArrayMock } from '../lists/index.mock'; describe('lists_default_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/lists_default_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/lists_default_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/meta/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/meta/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/meta/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/meta/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/name/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/name/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/name/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/name/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.test.ts index 11e6e54b344a9..98976f3cd6d21 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EntriesArray } from '../entries'; import { nonEmptyEntriesArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchMock } from '../entry_match/index.mock'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_entries_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_entries_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.test.ts index 95b74a6d4fe43..8ac958577f8d7 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.test.ts @@ -10,7 +10,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EntriesArray } from '../entries'; import { nonEmptyNestedEntriesArray } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { getEntryMatchMock } from '../entry_match/index.mock'; import { getEntryMatchAnyMock } from '../entry_match_any/index.mock'; import { getEntryExistsMock } from '../entries_exist/index.mock'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/non_empty_nested_entries_array/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/non_empty_nested_entries_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/os_type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/os_type/index.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/os_type/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/os_type/index.ts index 5ff60e05817d5..b7fa544c956ee 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/os_type/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/os_type/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { DefaultArray } from '../../default_array'; +import { DefaultArray } from '@kbn/securitysolution-io-ts-types'; export const osType = t.keyof({ linux: null, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/tags/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/tags/index.ts similarity index 89% rename from packages/kbn-securitysolution-io-ts-utils/src/tags/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/tags/index.ts index 48bcca0551352..f0f23d9e4717d 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/tags/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/tags/index.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; -import { DefaultStringArray } from '../default_string_array'; +import { DefaultStringArray } from '@kbn/securitysolution-io-ts-types'; export const tags = DefaultStringArray; export type Tags = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/type/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/type/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/type/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.mock.ts b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.mock.ts similarity index 92% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.mock.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.mock.ts index 3b5cb256b28bf..e9a56119dcc20 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.mock.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.mock.ts @@ -7,7 +7,7 @@ */ import { UpdateComment, UpdateCommentsArray } from '.'; -import { ID } from '../../constants/index.mock'; +import { ID } from '../constants/index.mock'; export const getUpdateCommentMock = (): UpdateComment => ({ comment: 'some comment', diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.test.ts b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.test.ts similarity index 98% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.test.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.test.ts index a6fc285f05465..8dd0301c54dd8 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.test.ts @@ -17,7 +17,7 @@ import { UpdateCommentsArrayOrUndefined, updateCommentsArrayOrUndefined, } from '.'; -import { foldLeftRight, getPaths } from '../../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('CommentsUpdate', () => { describe('updateComment', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.ts index 496ff07c5616f..5499690c97716 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/list_types/update_comment/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/update_comment/index.ts @@ -7,8 +7,8 @@ */ import * as t from 'io-ts'; -import { NonEmptyString } from '../../non_empty_string'; -import { id } from '../../id'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; +import { id } from '../id'; export const updateComment = t.intersection([ t.exact( diff --git a/packages/kbn-securitysolution-io-ts-utils/src/updated_at/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/updated_at/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/updated_at/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/updated_at/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/updated_by/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/updated_by/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/updated_by/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/updated_by/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/version/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts similarity index 90% rename from packages/kbn-securitysolution-io-ts-utils/src/version/index.ts rename to packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts index 38cb47ebce53e..97a81b546c841 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/version/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/version/index.ts @@ -7,7 +7,7 @@ */ import * as t from 'io-ts'; -import { PositiveIntegerGreaterThanZero } from '../positive_integer_greater_than_zero'; +import { PositiveIntegerGreaterThanZero } from '@kbn/securitysolution-io-ts-types'; /** * Note this is just a positive number, but we use it as a type here which is still ok. diff --git a/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json new file mode 100644 index 0000000000000..d926653a4230b --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-list-types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-list-types/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-types/BUILD.bazel b/packages/kbn-securitysolution-io-ts-types/BUILD.bazel new file mode 100644 index 0000000000000..0a21f5ed94f01 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/BUILD.bazel @@ -0,0 +1,93 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-securitysolution-io-ts-types" +PKG_REQUIRE_NAME = "@kbn/securitysolution-io-ts-types" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/*.mock.*" + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md", +] + +SRC_DEPS = [ + "//packages/kbn-securitysolution-io-ts-utils", + "//packages/elastic-datemath", + "@npm//fp-ts", + "@npm//io-ts", + "@npm//lodash", + "@npm//moment", + "@npm//tslib", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/flot", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@types/node", + "@npm//@types/uuid" +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-securitysolution-io-ts-types/README.md b/packages/kbn-securitysolution-io-ts-types/README.md new file mode 100644 index 0000000000000..552c663d819e3 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/README.md @@ -0,0 +1,8 @@ +# kbn-securitysolution-io-ts-types + +Generic io-ts types that are not specific to any particular domain for use with other packages or across different plugins/domains + +Related packages are: +* kbn-securitysolution-io-ts-utils +* kbn-securitysolution-io-ts-list-types +* kbn-securitysolution-io-ts-alerting-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-types/jest.config.js b/packages/kbn-securitysolution-io-ts-types/jest.config.js new file mode 100644 index 0000000000000..18d31eaa75219 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-io-ts-types'], +}; diff --git a/packages/kbn-securitysolution-io-ts-types/package.json b/packages/kbn-securitysolution-io-ts-types/package.json new file mode 100644 index 0000000000000..0381a6d24a136 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@kbn/securitysolution-io-ts-types", + "version": "1.0.0", + "description": "io ts utilities and types to be shared with plugins from the security solution project", + "license": "SSPL-1.0 OR Elastic License 2.0", + "main": "./target/index.js", + "types": "./target/index.d.ts", + "private": true +} diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_array/index.test.ts index 82fa884b1c577..4ca45e7de3377 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_array/index.test.ts @@ -11,7 +11,7 @@ import * as t from 'io-ts'; import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; const testSchema = t.keyof({ valid: true, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.test.ts index bddf9cc0747ea..c87a67ec4e5d4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultBooleanFalse } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_boolean_false', () => { test('it should validate a boolean false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_false/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_false/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.test.ts index a05fb586c2e92..3ec33fda392e4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultBooleanTrue } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_boolean_true', () => { test('it should validate a boolean false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_boolean_true/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_boolean_true/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.test.ts index 5bdc9b298649e..02fb74510d604 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultEmptyString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_empty_string', () => { test('it should validate a regular string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_empty_string/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_empty_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.test.ts index c7137d9c56b0d..7b1f217f55ad5 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultStringArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_string_array', () => { test('it should validate an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.test.ts index 2443e8f71fecd..3e96c942de74a 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { DefaultStringBooleanFalse } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('default_string_boolean_false', () => { test('it should validate a boolean false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_string_boolean_false/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_string_boolean_false/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts new file mode 100644 index 0000000000000..c471141a99a76 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.test.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { pipe } from 'fp-ts/lib/pipeable'; +import { left } from 'fp-ts/lib/Either'; +import { DefaultUuid } from '.'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; + +describe('default_uuid', () => { + test('it should validate a regular string', () => { + const payload = '1'; + const decoded = DefaultUuid.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toEqual(payload); + }); + + test('it should not validate a number', () => { + const payload = 5; + const decoded = DefaultUuid.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual(['Invalid value "5" supplied to "DefaultUuid"']); + expect(message.schema).toEqual({}); + }); + + test('it should return a default of a uuid', () => { + const payload = null; + const decoded = DefaultUuid.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([]); + expect(message.schema).toMatch( + /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i + ); + }); +}); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.ts b/packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/default_uuid/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/default_uuid/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.test.ts index 86ffba6eeb60a..5b7863947cad4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { EmptyStringArray, EmptyStringArrayEncoded } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('empty_string_array', () => { test('it should validate "null" and create an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/empty_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/empty_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/src/index.ts b/packages/kbn-securitysolution-io-ts-types/src/index.ts new file mode 100644 index 0000000000000..8b5a4d9e4de9a --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/src/index.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './default_array'; +export * from './default_boolean_false'; +export * from './default_boolean_true'; +export * from './default_empty_string'; +export * from './default_string_array'; +export * from './default_string_boolean_false'; +export * from './default_uuid'; +export * from './empty_string_array'; +export * from './iso_date_string'; +export * from './non_empty_array'; +export * from './non_empty_or_nullable_string_array'; +export * from './non_empty_string'; +export * from './non_empty_string_array'; +export * from './operator'; +export * from './only_false_allowed'; +export * from './parse_schedule_dates'; +export * from './positive_integer'; +export * from './positive_integer_greater_than_zero'; +export * from './string_to_positive_number'; +export * from './uuid'; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.test.ts index 4b73ed1b136dc..e70a738d7336e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { IsoDateString } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('ios_date_string', () => { test('it should validate a iso string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.ts b/packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/iso_date_string/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/iso_date_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.test.ts index 0ea7eb5539ba9..0586195360142 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.test.ts @@ -11,7 +11,7 @@ import * as t from 'io-ts'; import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { NonEmptyArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; const testSchema = t.keyof({ valid: true, diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.test.ts index fb2e91862d91e..355bd9d20061e 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { nonEmptyOrNullableStringArray } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('nonEmptyOrNullableStringArray', () => { test('it should FAIL validation when given an empty array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_or_nullable_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_or_nullable_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.test.ts index 15c8ced8c915f..ae3b8cd9acad5 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { NonEmptyString } from '.'; describe('non_empty_string', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.test.ts similarity index 97% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.test.ts index 9fec36f46dd27..f56fa7faed2a4 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.test.ts @@ -8,7 +8,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; import { NonEmptyStringArray } from '.'; describe('non_empty_string_array', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.ts b/packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/non_empty_string_array/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/non_empty_string_array/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.test.ts index 7f06ec2153a50..de05872c0dc31 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { OnlyFalseAllowed } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('only_false_allowed', () => { test('it should validate a boolean false as false', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.ts b/packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/only_false_allowed/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/only_false_allowed/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/operator/index.ts b/packages/kbn-securitysolution-io-ts-types/src/operator/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/operator/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/operator/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/parse_schedule_dates/index.ts b/packages/kbn-securitysolution-io-ts-types/src/parse_schedule_dates/index.ts similarity index 85% rename from packages/kbn-securitysolution-io-ts-utils/src/parse_schedule_dates/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/parse_schedule_dates/index.ts index a2cc15d82391c..d6a99b5fbf880 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/parse_schedule_dates/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/parse_schedule_dates/index.ts @@ -9,10 +9,6 @@ import moment from 'moment'; import dateMath from '@elastic/datemath'; -/** - * TODO: Move this to kbn-securitysolution-utils - * @deprecated Use the parseScheduleDates from the kbn-securitysolution-utils. - */ export const parseScheduleDates = (time: string): moment.Moment | null => { const isValidDateString = !isNaN(Date.parse(time)); const isValidInput = isValidDateString || time.trim().startsWith('now'); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.test.ts index c6c841b746089..deea8951a3d39 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { PositiveInteger } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('positive_integer_greater_than_zero', () => { test('it should validate a positive number', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.test.ts similarity index 96% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.test.ts index 4655207a6448e..4ea6fe920cf14 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { PositiveIntegerGreaterThanZero } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('positive_integer_greater_than_zero', () => { test('it should validate a positive number', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.ts b/packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/positive_integer_greater_than_zero/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/positive_integer_greater_than_zero/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/string_to_positive_number/index.ts b/packages/kbn-securitysolution-io-ts-types/src/string_to_positive_number/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/string_to_positive_number/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/string_to_positive_number/index.ts diff --git a/packages/kbn-securitysolution-io-ts-utils/src/uuid/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/uuid/index.test.ts similarity index 95% rename from packages/kbn-securitysolution-io-ts-utils/src/uuid/index.test.ts rename to packages/kbn-securitysolution-io-ts-types/src/uuid/index.test.ts index e8214ac60313f..4333fab102d44 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/uuid/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/uuid/index.test.ts @@ -9,7 +9,7 @@ import { pipe } from 'fp-ts/lib/pipeable'; import { left } from 'fp-ts/lib/Either'; import { UUID } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; +import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('uuid', () => { test('it should validate a uuid', () => { diff --git a/packages/kbn-securitysolution-io-ts-utils/src/uuid/index.ts b/packages/kbn-securitysolution-io-ts-types/src/uuid/index.ts similarity index 100% rename from packages/kbn-securitysolution-io-ts-utils/src/uuid/index.ts rename to packages/kbn-securitysolution-io-ts-types/src/uuid/index.ts diff --git a/packages/kbn-securitysolution-io-ts-types/tsconfig.json b/packages/kbn-securitysolution-io-ts-types/tsconfig.json new file mode 100644 index 0000000000000..42a059439ecb5 --- /dev/null +++ b/packages/kbn-securitysolution-io-ts-types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "incremental": true, + "outDir": "target", + "rootDir": "src", + "sourceMap": true, + "sourceRoot": "../../../../packages/kbn-securitysolution-io-ts-types/src", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-utils/README.md b/packages/kbn-securitysolution-io-ts-utils/README.md index 908651b50b80a..146f965391aa0 100644 --- a/packages/kbn-securitysolution-io-ts-utils/README.md +++ b/packages/kbn-securitysolution-io-ts-utils/README.md @@ -1,10 +1,12 @@ # kbn-securitysolution-io-ts-utils -Temporary location for all the io-ts-utils from security solutions. This is a lift-and-shift, where -we are moving them here for phase 1. +Very small set of utilities for io-ts which we use across plugins within security solutions such as securitysolution, lists, cases, etc... +This folder should remain small and concise since it is pulled into front end and the more files we add the more weight will be added to all +of the plugins. Also, any new dependencies added to this will add weight here and the other plugins, so be careful of what is added here. -Phase 2 is deprecating across plugins any copied code or sharing of io-ts utils that are now in here. +You might consider making another package instead and putting a dependency on this one if needed, instead. -Phase 3 is replacing those deprecated types with the ones in here. - -Phase 4+ is (potentially) consolidating any duplication or everything altogether with the `kbn-io-ts-utils` project \ No newline at end of file +Related packages are +* kbn-securitysolution-io-ts-alerting-types +* kbn-securitysolution-io-ts-list-types +* kbn-securitysolution-io-ts-types \ No newline at end of file diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts b/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts deleted file mode 100644 index b9e9a3ff367e4..0000000000000 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { pipe } from 'fp-ts/lib/pipeable'; -import { left } from 'fp-ts/lib/Either'; -import { DefaultVersionNumber } from '.'; -import { foldLeftRight, getPaths } from '../test_utils'; - -describe('default_version_number', () => { - test('it should validate a version number', () => { - const payload = 5; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(payload); - }); - - test('it should not validate a 0', () => { - const payload = 0; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "0" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a -1', () => { - const payload = -1; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "-1" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should not validate a string', () => { - const payload = '5'; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "5" supplied to "DefaultVersionNumber"', - ]); - expect(message.schema).toEqual({}); - }); - - test('it should return a default of 1', () => { - const payload = null; - const decoded = DefaultVersionNumber.decode(payload); - const message = pipe(decoded, foldLeftRight); - - expect(getPaths(left(message.errors))).toEqual([]); - expect(message.schema).toEqual(1); - }); -}); diff --git a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts b/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts deleted file mode 100644 index 245ff9d0db7dd..0000000000000 --- a/packages/kbn-securitysolution-io-ts-utils/src/default_version_number/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import * as t from 'io-ts'; -import { Either } from 'fp-ts/lib/Either'; -import { version, Version } from '../version'; - -/** - * Types the DefaultVersionNumber as: - * - If null or undefined, then a default of the number 1 will be used - */ -export const DefaultVersionNumber = new t.Type( - 'DefaultVersionNumber', - version.is, - (input, context): Either => - input == null ? t.success(1) : version.validate(input, context), - t.identity -); - -export type DefaultVersionNumberDecoded = t.TypeOf; diff --git a/packages/kbn-securitysolution-io-ts-utils/src/index.ts b/packages/kbn-securitysolution-io-ts-utils/src/index.ts index 1a18293393af5..c21096e497134 100644 --- a/packages/kbn-securitysolution-io-ts-utils/src/index.ts +++ b/packages/kbn-securitysolution-io-ts-utils/src/index.ts @@ -7,71 +7,7 @@ */ export * from './format_errors'; -export * from './actions'; -export * from './constants'; -export * from './created_at'; -export * from './created_by'; -export * from './default_version_number'; -export * from './default_actions_array'; -export * from './default_array'; -export * from './default_boolean_false'; -export * from './default_boolean_true'; -export * from './default_empty_string'; -export * from './default_export_file_name'; -export * from './default_from_string'; -export * from './default_interval_string'; -export * from './default_language_string'; -export * from './default_max_signals_number'; -export * from './default_page'; -export * from './default_per_page'; -export * from './default_risk_score_mapping_array'; -export * from './default_severity_mapping_array'; -export * from './default_string_array'; -export * from './default_string_boolean_false'; -export * from './default_threat_array'; -export * from './default_throttle_null'; -export * from './default_to_string'; -export * from './default_uuid'; -export * from './default_version_number'; -export * from './description'; -export * from './empty_string_array'; export * from './exact_check'; export * from './format_errors'; -export * from './from'; -export * from './id'; -export * from './iso_date_string'; -export * from './language'; -export * from './list_types'; -export * from './max_signals'; -export * from './meta'; -export * from './name'; -export * from './non_empty_array'; -export * from './non_empty_or_nullable_string_array'; -export * from './non_empty_string'; -export * from './non_empty_string_array'; -export * from './normalized_ml_job_id'; -export * from './only_false_allowed'; -export * from './operator'; -export * from './parse_schedule_dates'; -export * from './positive_integer'; -export * from './positive_integer_greater_than_zero'; -export * from './references_default_array'; -export * from './risk_score'; -export * from './risk_score_mapping'; -export * from './saved_object_attributes'; -export * from './severity'; -export * from './severity_mapping'; -export * from './string_to_positive_number'; -export * from './tags'; export * from './test_utils'; -export * from './threat'; -export * from './threat_mapping'; -export * from './threat_subtechnique'; -export * from './threat_tactic'; -export * from './threat_technique'; -export * from './throttle'; -export * from './updated_at'; -export * from './updated_by'; -export * from './uuid'; export * from './validate'; -export * from './version'; diff --git a/x-pack/plugins/lists/common/constants.mock.ts b/x-pack/plugins/lists/common/constants.mock.ts index 90f4825b97d43..325ed48113966 100644 --- a/x-pack/plugins/lists/common/constants.mock.ts +++ b/x-pack/plugins/lists/common/constants.mock.ts @@ -13,7 +13,7 @@ import { EntryMatch, EntryNested, OsTypeArray, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export const DATE_NOW = '2020-04-20T15:25:31.830Z'; export const OLD_DATE_RELATIVE_TO_DATE_NOW = '2020-04-19T15:25:31.830Z'; diff --git a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts index fa073b3b4cfb6..ae0cfbfbfc425 100644 --- a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts +++ b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatchAny } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatchAny } from '@kbn/securitysolution-io-ts-list-types'; import { getEntryMatchExcludeMock, getEntryMatchMock } from '../schemas/types/entry_match.mock'; import { diff --git a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts index 0fa069ba51013..eda81f91cd983 100644 --- a/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts +++ b/x-pack/plugins/lists/common/exceptions/build_exceptions_filter.ts @@ -15,7 +15,7 @@ import { entriesMatch, entriesMatchAny, entriesNested, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { Filter } from '../../../../../src/plugins/data/common'; import { CreateExceptionListItemSchema, ExceptionListItemSchema } from '../schemas'; diff --git a/x-pack/plugins/lists/common/exceptions/utils.ts b/x-pack/plugins/lists/common/exceptions/utils.ts index 689687e44256a..f5881c1d3cbf4 100644 --- a/x-pack/plugins/lists/common/exceptions/utils.ts +++ b/x-pack/plugins/lists/common/exceptions/utils.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; export const hasLargeValueList = (entries: EntriesArray): boolean => { const found = entries.filter(({ type }) => type === 'list'); diff --git a/x-pack/plugins/lists/common/schemas/common/schemas.test.ts b/x-pack/plugins/lists/common/schemas/common/schemas.test.ts index 2b007f01b56eb..c83691ead2ee6 100644 --- a/x-pack/plugins/lists/common/schemas/common/schemas.test.ts +++ b/x-pack/plugins/lists/common/schemas/common/schemas.test.ts @@ -11,15 +11,13 @@ import { ExceptionListTypeEnum, ListOperatorEnum as OperatorEnum, Type, - exactCheck, exceptionListType, - foldLeftRight, - getPaths, listOperator as operator, osType, osTypeArrayOrUndefined, type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; describe('Common schemas', () => { describe('operator', () => { diff --git a/x-pack/plugins/lists/common/schemas/common/schemas.ts b/x-pack/plugins/lists/common/schemas/common/schemas.ts index eb84ee07981f3..612b7ea559e4a 100644 --- a/x-pack/plugins/lists/common/schemas/common/schemas.ts +++ b/x-pack/plugins/lists/common/schemas/common/schemas.ts @@ -8,18 +8,20 @@ /* eslint-disable @typescript-eslint/naming-convention */ import * as t from 'io-ts'; -import { DefaultNamespace, NonEmptyString } from '@kbn/securitysolution-io-ts-utils'; +import { NonEmptyString } from '@kbn/securitysolution-io-ts-types'; +import { DefaultNamespace } from '@kbn/securitysolution-io-ts-list-types'; /** * @deprecated Directly use the type from the package and not from here */ export { + DefaultNamespace, Type, OsType, OsTypeArray, listOperator as operator, NonEmptyEntriesArray, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export const list_id = NonEmptyString; export type ListId = t.TypeOf; diff --git a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts index 30f3acc8a164a..e6287a87c86ef 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.test.ts @@ -7,12 +7,8 @@ import { left } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; -import { - CommentsArray, - exactCheck, - foldLeftRight, - getPaths, -} from '@kbn/securitysolution-io-ts-utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { CommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { getCreateCommentsArrayMock } from '../types/create_comment.mock'; import { getCommentsMock } from '../types/comment.mock'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts index af58c61dbaf9f..322e31aacd040 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_endpoint_list_item_schema.ts @@ -9,7 +9,6 @@ import * as t from 'io-ts'; import { CreateCommentsArray, DefaultCreateCommentsArray, - DefaultUuid, EntriesArray, OsTypeArray, Tags, @@ -20,7 +19,8 @@ import { nonEmptyEndpointEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; import { ItemId } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts index 1bb58d6195e7c..7e8d16663cf5d 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.test.ts @@ -7,12 +7,8 @@ import { left } from 'fp-ts/lib/Either'; import { pipe } from 'fp-ts/lib/pipeable'; -import { - CommentsArray, - exactCheck, - foldLeftRight, - getPaths, -} from '@kbn/securitysolution-io-ts-utils'; +import { exactCheck, foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; +import { CommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { getCreateCommentsArrayMock } from '../types/create_comment.mock'; import { getCommentsMock } from '../types/comment.mock'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts index da5630ef3f002..d37c7f7aa67b2 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_item_schema.ts @@ -9,7 +9,6 @@ import * as t from 'io-ts'; import { CreateCommentsArray, DefaultCreateCommentsArray, - DefaultUuid, EntriesArray, NamespaceType, OsTypeArray, @@ -21,7 +20,8 @@ import { nonEmptyEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; import { ItemId, list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts index 42955ddbd7017..91b3a98bdd5ac 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_exception_list_schema.ts @@ -7,7 +7,6 @@ import * as t from 'io-ts'; import { - DefaultUuid, DefaultVersionNumber, DefaultVersionNumberDecoded, NamespaceType, @@ -19,7 +18,8 @@ import { name, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultUuid } from '@kbn/securitysolution-io-ts-types'; import { ListId, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts index 867b441960a2c..d11bd03ced916 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id, meta } from '@kbn/securitysolution-io-ts-utils'; +import { id, meta } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts index 8ac36cc3ad28e..5fa9da0cdc597 100644 --- a/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/create_list_schema.ts @@ -14,7 +14,7 @@ import { meta, name, type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { deserializer, serializer } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts index b8ff0834e8fb8..0b714885437a8 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_endpoint_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts index cc188bf52d75c..5c6fc9c158b3b 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts index b816c08beb363..2d1d00a6759cf 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_exception_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts index 5b4aa63d2d090..9cb46b3e36f45 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, valueOrUndefined } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts index 003dfdc6bd466..0d6bbc73a2571 100644 --- a/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/delete_list_schema.ts @@ -6,7 +6,8 @@ */ import * as t from 'io-ts'; -import { DefaultStringBooleanFalse, id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; +import { DefaultStringBooleanFalse } from '@kbn/securitysolution-io-ts-types'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts b/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts index d3c18f0d1c485..47bb1b70ad8b7 100644 --- a/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/export_exception_list_query_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, namespace_type } from '../common/schemas'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts index 13f45a070b2b7..06b28ea6cbb4e 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_endpoint_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; import { filter, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts index 4abceb4b3592d..d92bfbec02f5a 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_exception_list_item_schema.ts @@ -7,13 +7,15 @@ import * as t from 'io-ts'; import { - DefaultNamespaceArray, - DefaultNamespaceArrayTypeDecoded, EmptyStringArray, EmptyStringArrayDecoded, NonEmptyStringArray, StringToPositiveNumber, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-types'; +import { + DefaultNamespaceArray, + DefaultNamespaceArrayTypeDecoded, +} from '@kbn/securitysolution-io-ts-list-types'; import { sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts index ea5b5c5aafdb6..6cf31c56ea599 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_exception_list_schema.ts @@ -6,11 +6,8 @@ */ import * as t from 'io-ts'; -import { - DefaultNamespaceArray, - NamespaceTypeArray, - StringToPositiveNumber, -} from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; +import { DefaultNamespaceArray, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { filter, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts index 6adf53d0eda86..e0d072780bbf8 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; import { cursor, filter, list_id, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts index bf6a68d97a58e..4d929d581370c 100644 --- a/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/find_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-utils'; +import { StringToPositiveNumber } from '@kbn/securitysolution-io-ts-types'; import { cursor, filter, sort_field, sort_order } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts b/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts index 85644ff556443..cef803ffa5e45 100644 --- a/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/import_list_item_query_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { type } from '@kbn/securitysolution-io-ts-utils'; +import { type } from '@kbn/securitysolution-io-ts-list-types'; import { RequiredKeepUndefined } from '../../types'; import { deserializer, list_id, serializer } from '../common/schemas'; diff --git a/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts index edea4f161f248..2989919421a3c 100644 --- a/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/patch_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id, meta } from '@kbn/securitysolution-io-ts-utils'; +import { id, meta } from '@kbn/securitysolution-io-ts-list-types'; import { _version, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts index 144bf9c0f28a0..eea4ba9fc87d7 100644 --- a/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/patch_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { description, id, meta, name } from '@kbn/securitysolution-io-ts-utils'; +import { description, id, meta, name } from '@kbn/securitysolution-io-ts-list-types'; import { _version, version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts index 116c70012c17e..3f221b473f432 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_endpoint_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts index a0bd46b30d2f6..9094296e56196 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_exception_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { item_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts index fc8a6ee43a5a2..9a361e04900ed 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_exception_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { NamespaceType, id } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts index 450719f42ad4a..0bfa99ee078a1 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; import { list_id, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts index e07e2de1a4b80..5d850b19c4d11 100644 --- a/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/read_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id } from '@kbn/securitysolution-io-ts-utils'; +import { id } from '@kbn/securitysolution-io-ts-list-types'; export const readListSchema = t.exact( t.type({ diff --git a/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts index d9e602419d61d..011ff24b7fa22 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_endpoint_list_item_schema.ts @@ -20,7 +20,7 @@ import { nonEmptyEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts index f3b87c5ff5925..1c751dd3a8c83 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_exception_list_item_schema.ts @@ -21,7 +21,7 @@ import { nonEmptyEntriesArray, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _version, namespace_type } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts index c8b354eff4d9e..c58c1c253a8c4 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_exception_list_schema.ts @@ -17,7 +17,7 @@ import { name, osTypeArrayOrUndefined, tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _version, list_id, namespace_type, version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts index 84916f15a59f6..f24902a12d3b7 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { id, meta } from '@kbn/securitysolution-io-ts-utils'; +import { id, meta } from '@kbn/securitysolution-io-ts-list-types'; import { _version, value } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts b/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts index 6f520d399d577..230853e69fae4 100644 --- a/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/request/update_list_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { description, id, meta, name, version } from '@kbn/securitysolution-io-ts-utils'; +import { description, id, meta, name, version } from '@kbn/securitysolution-io-ts-list-types'; import { _version } from '../common/schemas'; import { RequiredKeepUndefined } from '../../types'; diff --git a/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts b/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts index 769cfb3548ced..0b6f8a7640529 100644 --- a/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/exception_list_item_schema.ts @@ -20,7 +20,7 @@ import { tags, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts b/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts index 880c2d4f89e4f..7bfc2af9863e2 100644 --- a/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/exception_list_schema.ts @@ -18,7 +18,7 @@ import { tags, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts b/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts index 1f105afac8b44..3f11718bc42e6 100644 --- a/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/list_item_schema.ts @@ -14,7 +14,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/response/list_schema.ts b/x-pack/plugins/lists/common/schemas/response/list_schema.ts index 58abe94772ff6..21504d64fdeaa 100644 --- a/x-pack/plugins/lists/common/schemas/response/list_schema.ts +++ b/x-pack/plugins/lists/common/schemas/response/list_schema.ts @@ -16,7 +16,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { _versionOrUndefined, diff --git a/x-pack/plugins/lists/common/schemas/types/comment.mock.ts b/x-pack/plugins/lists/common/schemas/types/comment.mock.ts index 75b4b6a431ac3..5963cb4947a85 100644 --- a/x-pack/plugins/lists/common/schemas/types/comment.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/comment.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Comment, CommentsArray } from '@kbn/securitysolution-io-ts-utils'; +import { Comment, CommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { DATE_NOW, ID, USER } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts b/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts index 2d8dd7b462258..868c43fe5d6da 100644 --- a/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/create_comment.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CreateComment, CreateCommentsArray } from '@kbn/securitysolution-io-ts-utils'; +import { CreateComment, CreateCommentsArray } from '@kbn/securitysolution-io-ts-list-types'; export const getCreateCommentsMock = (): CreateComment => ({ comment: 'some comments', diff --git a/x-pack/plugins/lists/common/schemas/types/entries.mock.ts b/x-pack/plugins/lists/common/schemas/types/entries.mock.ts index ee43a0b26ad54..caa62c55c93bb 100644 --- a/x-pack/plugins/lists/common/schemas/types/entries.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entries.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { getEntryMatchMock } from './entry_match.mock'; import { getEntryMatchAnyMock } from './entry_match_any.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts index 3e26d261f44ca..6165184d2a404 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_exists.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryExists } from '@kbn/securitysolution-io-ts-utils'; +import { EntryExists } from '@kbn/securitysolution-io-ts-list-types'; import { EXISTS, FIELD, OPERATOR } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts index 7eadfcdf3454c..1cdc86d95ed88 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_list.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryList } from '@kbn/securitysolution-io-ts-utils'; +import { EntryList } from '@kbn/securitysolution-io-ts-list-types'; import { FIELD, LIST, LIST_ID, OPERATOR, TYPE } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts index bc0eb3b5c4f85..efcd1e0877d1b 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_match.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatch } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatch } from '@kbn/securitysolution-io-ts-list-types'; import { ENTRY_VALUE, FIELD, MATCH, OPERATOR } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts index 74c3abbaa5881..60613fc72baba 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_match_any.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatchAny } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatchAny } from '@kbn/securitysolution-io-ts-list-types'; import { ENTRY_VALUE, FIELD, MATCH_ANY, OPERATOR } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts index 320664bd2f833..17e0cbd25901c 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_match_wildcard.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryMatchWildcard } from '@kbn/securitysolution-io-ts-utils'; +import { EntryMatchWildcard } from '@kbn/securitysolution-io-ts-list-types'; import { ENTRY_VALUE, FIELD, OPERATOR, WILDCARD } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts b/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts index f1d0a2bc76926..2497c3d4c3ce2 100644 --- a/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/entry_nested.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { EntryNested } from '@kbn/securitysolution-io-ts-utils'; +import { EntryNested } from '@kbn/securitysolution-io-ts-list-types'; import { NESTED, NESTED_FIELD } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts b/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts index dea0f9a08fc4c..783b595850bc5 100644 --- a/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts +++ b/x-pack/plugins/lists/common/schemas/types/update_comment.mock.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { UpdateComment, UpdateCommentsArray } from '@kbn/securitysolution-io-ts-utils'; +import { UpdateComment, UpdateCommentsArray } from '@kbn/securitysolution-io-ts-list-types'; import { ID } from '../../constants.mock'; diff --git a/x-pack/plugins/lists/common/shared_exports.ts b/x-pack/plugins/lists/common/shared_exports.ts index 38eb5aeee8cd2..bc9d0ca8d7b94 100644 --- a/x-pack/plugins/lists/common/shared_exports.ts +++ b/x-pack/plugins/lists/common/shared_exports.ts @@ -42,7 +42,7 @@ export { osTypeArray, OsTypeArray, Type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export { ListSchema, diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx index 28d7469d18910..0ece28d409bd5 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFormRow } from '@elastic/eui'; import styled from 'styled-components'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { AutocompleteStart } from '../../../../../../../src/plugins/data/public'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/common'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx index 5f094a64c3660..94c3bff8f4cf9 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_item_renderer.tsx @@ -10,7 +10,7 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; import { HttpStart } from 'kibana/public'; import { AutocompleteStart } from 'src/plugins/data/public'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListType } from '../../../../common'; import { IIndexPattern } from '../../../../../../../src/plugins/data/common'; diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx index 646803f2e6794..4ec152e155e39 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx +++ b/x-pack/plugins/lists/public/exceptions/components/builder/exception_items_renderer.tsx @@ -10,7 +10,7 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import styled from 'styled-components'; import { HttpStart } from 'kibana/public'; import { addIdToItem } from '@kbn/securitysolution-utils'; -import { OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { AutocompleteStart, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { diff --git a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts index 6d3bdd09c93ea..18d607d6807fc 100644 --- a/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts +++ b/x-pack/plugins/lists/public/exceptions/components/builder/helpers.ts @@ -7,7 +7,8 @@ import uuid from 'uuid'; import { addIdToItem, removeIdFromItem } from '@kbn/securitysolution-utils'; -import { OsTypeArray, validate } from '@kbn/securitysolution-io-ts-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { diff --git a/x-pack/plugins/lists/public/exceptions/transforms.test.ts b/x-pack/plugins/lists/public/exceptions/transforms.test.ts index c5c43b16d6428..b2a1efc1d2c1d 100644 --- a/x-pack/plugins/lists/public/exceptions/transforms.test.ts +++ b/x-pack/plugins/lists/public/exceptions/transforms.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Entry, EntryMatch, EntryNested } from '@kbn/securitysolution-io-ts-utils'; +import { Entry, EntryMatch, EntryNested } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../common/schemas/response/exception_list_item_schema'; import { UpdateExceptionListItemSchema } from '../../common/schemas/request/update_exception_list_item_schema'; diff --git a/x-pack/plugins/lists/public/exceptions/types.ts b/x-pack/plugins/lists/public/exceptions/types.ts index a2842d81a7292..0cad700b2b598 100644 --- a/x-pack/plugins/lists/public/exceptions/types.ts +++ b/x-pack/plugins/lists/public/exceptions/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ExceptionListType, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { ExceptionListType, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { CreateExceptionListItemSchema, diff --git a/x-pack/plugins/lists/public/exceptions/utils.ts b/x-pack/plugins/lists/public/exceptions/utils.ts index 6324fdf1df420..c840a25b2a103 100644 --- a/x-pack/plugins/lists/public/exceptions/utils.ts +++ b/x-pack/plugins/lists/public/exceptions/utils.ts @@ -6,7 +6,7 @@ */ import { get } from 'lodash/fp'; -import { NamespaceType, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../common/constants'; import { diff --git a/x-pack/plugins/lists/public/lists/types.ts b/x-pack/plugins/lists/public/lists/types.ts index 6708620439803..ad82a63163ce3 100644 --- a/x-pack/plugins/lists/public/lists/types.ts +++ b/x-pack/plugins/lists/public/lists/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { HttpStart } from '../../../../../src/core/public'; diff --git a/x-pack/plugins/lists/server/routes/delete_list_route.ts b/x-pack/plugins/lists/server/routes/delete_list_route.ts index 033c49aa7b235..78235584bc0cd 100644 --- a/x-pack/plugins/lists/server/routes/delete_list_route.ts +++ b/x-pack/plugins/lists/server/routes/delete_list_route.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { EntriesArray, validate } from '@kbn/securitysolution-io-ts-utils'; +import { validate } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { transformError } from '@kbn/securitysolution-es-utils'; import type { ListsPluginRouter } from '../types'; diff --git a/x-pack/plugins/lists/server/routes/validate.ts b/x-pack/plugins/lists/server/routes/validate.ts index 005d9e85f4853..2577770cf32ef 100644 --- a/x-pack/plugins/lists/server/routes/validate.ts +++ b/x-pack/plugins/lists/server/routes/validate.ts @@ -8,14 +8,12 @@ import { pipe } from 'fp-ts/lib/pipeable'; import * as t from 'io-ts'; import { fold } from 'fp-ts/lib/Either'; +import { exactCheck, formatErrors, validate } from '@kbn/securitysolution-io-ts-utils'; import { NamespaceType, NonEmptyEntriesArray, - exactCheck, - formatErrors, nonEmptyEndpointEntriesArray, - validate, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListClient } from '../services/exception_lists/exception_list_client'; import { MAX_EXCEPTION_LIST_SIZE } from '../../common/constants'; diff --git a/x-pack/plugins/lists/server/saved_objects/migrations.ts b/x-pack/plugins/lists/server/saved_objects/migrations.ts index 316c5f1311774..485bd493f309e 100644 --- a/x-pack/plugins/lists/server/saved_objects/migrations.ts +++ b/x-pack/plugins/lists/server/saved_objects/migrations.ts @@ -13,7 +13,7 @@ import { OsTypeArray, entriesNested, entry, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ENDPOINT_LIST_ID, ENDPOINT_TRUSTED_APPS_LIST_ID } from '../../common/constants'; import { ExceptionListSoSchema } from '../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts index 696434a616c53..42788c15736b7 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_item_schema.ts @@ -12,7 +12,7 @@ import { metaOrUndefined, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { esDataTypeUnion } from '../common/schemas'; import { diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts index c69abaf785dec..4383e93346291 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/index_es_list_schema.ts @@ -15,7 +15,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { deserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts index 1f49943a910bc..383b6f339bb58 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_item_schema.ts @@ -6,7 +6,7 @@ */ import * as t from 'io-ts'; -import { metaOrUndefined, updated_at, updated_by } from '@kbn/securitysolution-io-ts-utils'; +import { metaOrUndefined, updated_at, updated_by } from '@kbn/securitysolution-io-ts-list-types'; import { esDataTypeUnion } from '../common/schemas'; diff --git a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts index fbeac92c66bdd..fe73d0fb9207f 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_query/update_es_list_schema.ts @@ -12,7 +12,7 @@ import { nameOrUndefined, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; export const updateEsListSchema = t.exact( t.type({ diff --git a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts index 8ac88a1610ea7..c787f70bfa675 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts @@ -12,7 +12,7 @@ import { metaOrUndefined, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { binaryOrUndefined, diff --git a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts index a060ebda04a46..536269b9c0ae2 100644 --- a/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts +++ b/x-pack/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts @@ -15,7 +15,7 @@ import { type, updated_at, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { deserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts b/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts index f6d2e891a60d0..c1f480e50c8f7 100644 --- a/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts +++ b/x-pack/plugins/lists/server/schemas/saved_objects/exceptions_list_so_schema.ts @@ -19,7 +19,7 @@ import { osTypeArray, tags, updated_by, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { immutableOrUndefined, diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts index ef4ceb2f12922..5f2587fc1e986 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list.ts @@ -14,7 +14,7 @@ import { Name, NamespaceType, Tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListSchema, Immutable, ListId, Version } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts index 5f88244171f6a..0bcc888a4c313 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/create_exception_list_item.ts @@ -17,7 +17,7 @@ import { NamespaceType, OsTypeArray, Tags, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema, ItemId, ListId } from '../../../common/schemas'; import { ExceptionListSoSchema } from '../../schemas/saved_objects'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts index afe9106e28d82..201cb9544a8f3 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListSchema, ListIdOrUndefined } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts index d0e1d2283cc6f..9f735fd51c7f2 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_item.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { Id, IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { Id, IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema, ItemIdOrUndefined } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts index d9ec08b818f2d..b08872eac8e01 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/delete_exception_list_items_by_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectsClientContract } from '../../../../../../src/core/server/'; import { ListId } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts index 0954a55d44dcc..576b0c4d25aa0 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts @@ -10,7 +10,6 @@ import { CreateCommentsArray, Description, DescriptionOrUndefined, - EmptyStringArrayDecoded, EntriesArray, ExceptionListItemType, ExceptionListItemTypeOrUndefined, @@ -23,12 +22,15 @@ import { NameOrUndefined, NamespaceType, NamespaceTypeArray, - NonEmptyStringArrayDecoded, OsTypeArray, Tags, TagsOrUndefined, UpdateCommentsArray, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; +import { + EmptyStringArrayDecoded, + NonEmptyStringArrayDecoded, +} from '@kbn/securitysolution-io-ts-types'; import { FilterOrUndefined, diff --git a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts index 82ea5a4f104c5..dfe7a97d0b2f3 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { NamespaceTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectType } from '../../../common/types'; import { diff --git a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts index cb9c16ffe3c7b..b75520614150b 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_item.ts @@ -6,7 +6,7 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; -import { NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { FilterOrUndefined, diff --git a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts index 6721aff5b0c1e..ad4646a57a5ca 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/find_exception_list_items.ts @@ -6,12 +6,11 @@ */ import { SavedObjectsClientContract } from 'kibana/server'; +import { Id, NamespaceTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { EmptyStringArrayDecoded, - Id, - NamespaceTypeArray, NonEmptyStringArrayDecoded, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-types'; import { SavedObjectType, diff --git a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts index 342e03160b45b..928190efbf531 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectsClientContract, diff --git a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts index cf469baa46370..be612868abe48 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/get_exception_list_item.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, NamespaceType } from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectsClientContract, diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts index 69d9b87227bca..3daa2e9157b5d 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list.ts @@ -15,7 +15,7 @@ import { NamespaceType, OsTypeArray, TagsOrUndefined, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListSchema, diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts index 041008a06f3df..0d9ba8d8fefcc 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts @@ -17,7 +17,7 @@ import { OsTypeArray, TagsOrUndefined, UpdateCommentsArrayOrUndefined, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema, diff --git a/x-pack/plugins/lists/server/services/exception_lists/utils.ts b/x-pack/plugins/lists/server/services/exception_lists/utils.ts index 1322f153bf3bd..12fe8eabd4f6a 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/utils.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/utils.ts @@ -16,7 +16,7 @@ import { UpdateCommentsArrayOrUndefined, exceptionListItemType, exceptionListType, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { SavedObjectType, diff --git a/x-pack/plugins/lists/server/services/items/create_list_item.ts b/x-pack/plugins/lists/server/services/items/create_list_item.ts index 3c51f56c7916a..ebeef3e90933d 100644 --- a/x-pack/plugins/lists/server/services/items/create_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/create_list_item.ts @@ -7,7 +7,7 @@ import uuid from 'uuid'; import { ElasticsearchClient } from 'kibana/server'; -import { IdOrUndefined, MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-utils'; +import { IdOrUndefined, MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts b/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts index 5928260ab94ac..00956a7c3c3fa 100644 --- a/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts +++ b/x-pack/plugins/lists/server/services/items/create_list_items_bulk.ts @@ -7,7 +7,7 @@ import uuid from 'uuid'; import { ElasticsearchClient } from 'kibana/server'; -import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-utils'; +import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; import { transformListItemToElasticQuery } from '../utils'; import { DeserializerOrUndefined, SerializerOrUndefined } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/items/delete_list_item.ts b/x-pack/plugins/lists/server/services/items/delete_list_item.ts index 4fcb2656d2ba7..c08e683aafa1c 100644 --- a/x-pack/plugins/lists/server/services/items/delete_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/delete_list_item.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemSchema } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts b/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts index ccbe8d6fe7925..1adcf45e85748 100644 --- a/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts +++ b/x-pack/plugins/lists/server/services/items/delete_list_item_by_value.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; import { getQueryFilterFromTypeValue } from '../utils'; diff --git a/x-pack/plugins/lists/server/services/items/get_list_item.ts b/x-pack/plugins/lists/server/services/items/get_list_item.ts index aca8deac24817..a1653cb31ce16 100644 --- a/x-pack/plugins/lists/server/services/items/get_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/get_list_item.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemSchema } from '../../../common/schemas'; import { transformElasticToListItem } from '../utils'; diff --git a/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts b/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts index 083dca2ea9410..a190f9388bef3 100644 --- a/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts +++ b/x-pack/plugins/lists/server/services/items/get_list_item_by_value.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts b/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts index 5a4d55172af23..0fcb958940d9b 100644 --- a/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts +++ b/x-pack/plugins/lists/server/services/items/get_list_item_by_values.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; import { diff --git a/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts b/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts index d6d8f66770653..2b525fde6a428 100644 --- a/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts +++ b/x-pack/plugins/lists/server/services/items/search_list_item_by_values.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { SearchListItemArraySchema } from '../../../common/schemas'; import { diff --git a/x-pack/plugins/lists/server/services/items/update_list_item.ts b/x-pack/plugins/lists/server/services/items/update_list_item.ts index 91c38dd3f331c..4f1a19430aeda 100644 --- a/x-pack/plugins/lists/server/services/items/update_list_item.ts +++ b/x-pack/plugins/lists/server/services/items/update_list_item.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id, MetaOrUndefined } from '@kbn/securitysolution-io-ts-utils'; +import { Id, MetaOrUndefined } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemSchema, _VersionOrUndefined } from '../../../common/schemas'; import { transformListItemToElasticQuery } from '../utils'; diff --git a/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts b/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts index 8a05e4667a290..b3ce823f9ac29 100644 --- a/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts +++ b/x-pack/plugins/lists/server/services/items/write_lines_to_bulk_list_items.ts @@ -8,7 +8,7 @@ import { Readable } from 'stream'; import { ElasticsearchClient } from 'kibana/server'; -import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-utils'; +import { MetaOrUndefined, Type } from '@kbn/securitysolution-io-ts-list-types'; import { createListIfItDoesNotExist } from '../lists/create_list_if_it_does_not_exist'; import { diff --git a/x-pack/plugins/lists/server/services/lists/create_list.ts b/x-pack/plugins/lists/server/services/lists/create_list.ts index 6b0954f3fcc9d..d139ef3ea4bb1 100644 --- a/x-pack/plugins/lists/server/services/lists/create_list.ts +++ b/x-pack/plugins/lists/server/services/lists/create_list.ts @@ -13,7 +13,7 @@ import { MetaOrUndefined, Name, Type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { encodeHitVersion } from '../utils/encode_hit_version'; import { diff --git a/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts b/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts index 483810a9b1c43..71094a5ab49de 100644 --- a/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts +++ b/x-pack/plugins/lists/server/services/lists/create_list_if_it_does_not_exist.ts @@ -6,7 +6,13 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Description, Id, MetaOrUndefined, Name, Type } from '@kbn/securitysolution-io-ts-utils'; +import { + Description, + Id, + MetaOrUndefined, + Name, + Type, +} from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/services/lists/delete_list.ts b/x-pack/plugins/lists/server/services/lists/delete_list.ts index 0e140544fa47d..a215044b92b4c 100644 --- a/x-pack/plugins/lists/server/services/lists/delete_list.ts +++ b/x-pack/plugins/lists/server/services/lists/delete_list.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListSchema } from '../../../common/schemas'; diff --git a/x-pack/plugins/lists/server/services/lists/get_list.ts b/x-pack/plugins/lists/server/services/lists/get_list.ts index a248f81449bfc..7ff17bc2ee553 100644 --- a/x-pack/plugins/lists/server/services/lists/get_list.ts +++ b/x-pack/plugins/lists/server/services/lists/get_list.ts @@ -6,7 +6,7 @@ */ import { ElasticsearchClient } from 'kibana/server'; -import { Id } from '@kbn/securitysolution-io-ts-utils'; +import { Id } from '@kbn/securitysolution-io-ts-list-types'; import { ListSchema } from '../../../common/schemas'; import { transformElasticToList } from '../utils/transform_elastic_to_list'; diff --git a/x-pack/plugins/lists/server/services/lists/list_client_types.ts b/x-pack/plugins/lists/server/services/lists/list_client_types.ts index b684511ff679c..b4fe52019ec7b 100644 --- a/x-pack/plugins/lists/server/services/lists/list_client_types.ts +++ b/x-pack/plugins/lists/server/services/lists/list_client_types.ts @@ -17,7 +17,7 @@ import { Name, NameOrUndefined, Type, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined, diff --git a/x-pack/plugins/lists/server/services/lists/update_list.ts b/x-pack/plugins/lists/server/services/lists/update_list.ts index 4917fec7397ea..374c3cd0e2def 100644 --- a/x-pack/plugins/lists/server/services/lists/update_list.ts +++ b/x-pack/plugins/lists/server/services/lists/update_list.ts @@ -11,7 +11,7 @@ import { Id, MetaOrUndefined, NameOrUndefined, -} from '@kbn/securitysolution-io-ts-utils'; +} from '@kbn/securitysolution-io-ts-list-types'; import { decodeVersion } from '../utils/decode_version'; import { encodeHitVersion } from '../utils/encode_hit_version'; diff --git a/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts b/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts index e408f7d33b548..80b10142d553a 100644 --- a/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts +++ b/x-pack/plugins/lists/server/services/utils/find_source_type.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { getSearchEsListItemMock } from '../../schemas/elastic_response/search_es_list_item_schema.mock'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/find_source_type.ts b/x-pack/plugins/lists/server/services/utils/find_source_type.ts index 00a6985b2c751..e69eecbbe3129 100644 --- a/x-pack/plugins/lists/server/services/utils/find_source_type.ts +++ b/x-pack/plugins/lists/server/services/utils/find_source_type.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type, type } from '@kbn/securitysolution-io-ts-utils'; +import { Type, type } from '@kbn/securitysolution-io-ts-list-types'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/find_source_value.ts b/x-pack/plugins/lists/server/services/utils/find_source_value.ts index c12f4bdfcdb9f..7990481c3e3db 100644 --- a/x-pack/plugins/lists/server/services/utils/find_source_value.ts +++ b/x-pack/plugins/lists/server/services/utils/find_source_value.ts @@ -6,7 +6,7 @@ */ import Mustache from 'mustache'; -import { type } from '@kbn/securitysolution-io-ts-utils'; +import { type } from '@kbn/securitysolution-io-ts-list-types'; import { DeserializerOrUndefined } from '../../../common/schemas'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts b/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts index 0ece97b21d5b7..6a30cb5d6a847 100644 --- a/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts +++ b/x-pack/plugins/lists/server/services/utils/get_query_filter_from_type_value.ts @@ -6,7 +6,7 @@ */ import { isEmpty, isObject } from 'lodash/fp'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; export type QueryFilterType = [ { term: Record }, diff --git a/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts b/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts index f02ae17fa0293..902fc17039792 100644 --- a/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts +++ b/x-pack/plugins/lists/server/services/utils/transform_elastic_named_search_to_list_item.ts @@ -6,7 +6,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { SearchListItemArraySchema } from '../../../common/schemas'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; diff --git a/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts b/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts index 3e27bd24517e4..1cbf72e8eb653 100644 --- a/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts +++ b/x-pack/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts @@ -6,7 +6,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { ListItemArraySchema } from '../../../common/schemas'; import { ErrorWithStatusCode } from '../../error_with_status_code'; diff --git a/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts b/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts index 32eb885871cb1..fc97bef54b0a6 100644 --- a/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts +++ b/x-pack/plugins/lists/server/services/utils/transform_list_item_to_elastic_query.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { Type } from '@kbn/securitysolution-io-ts-utils'; +import { Type } from '@kbn/securitysolution-io-ts-list-types'; import { SerializerOrUndefined } from '../../../common/schemas'; import { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx index d659f557ee751..5ec8999d20518 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_modal/index.test.tsx @@ -21,7 +21,7 @@ import { useFetchOrCreateRuleExceptionList } from '../use_fetch_or_create_rule_e import { useSignalIndex } from '../../../../detections/containers/detection_engine/alerts/use_signal_index'; import * as helpers from '../helpers'; import { getExceptionListItemSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../../../../../lists/common'; import { diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx index 64ef1dead7e75..ab6d4b401bb41 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_modal/index.test.tsx @@ -20,7 +20,7 @@ import { import { useAddOrUpdateException } from '../use_add_exception'; import { useSignalIndex } from '../../../../detections/containers/detection_engine/alerts/use_signal_index'; import { getExceptionListItemSchemaMock } from '../../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; -import { EntriesArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray } from '@kbn/securitysolution-io-ts-list-types'; import { getRulesEqlSchemaMock, getRulesSchemaMock, diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx index 0560b790e4047..907b30fcaa879 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx @@ -56,7 +56,7 @@ import { ENTRIES_WITH_IDS, OLD_DATE_RELATIVE_TO_DATE_NOW, } from '../../../../../lists/common/constants.mock'; -import { EntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import { CreateExceptionListItemSchema, ExceptionListItemSchema, diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts index ee6962f7e9535..5b4aed35bbc7c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts @@ -9,7 +9,7 @@ import { ExceptionListClient } from '../../../../../lists/server'; import { listMock } from '../../../../../lists/server/mocks'; import { getFoundExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/response/found_exception_list_item_schema.mock'; import { getExceptionListItemSchemaMock } from '../../../../../lists/common/schemas/response/exception_list_item_schema.mock'; -import { EntriesArray, EntryList } from '@kbn/securitysolution-io-ts-utils'; +import { EntriesArray, EntryList } from '@kbn/securitysolution-io-ts-list-types'; import { buildArtifact, getEndpointExceptionList, diff --git a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts index 7a5b906860f10..f3bc195b5a896 100644 --- a/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts +++ b/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts @@ -7,7 +7,7 @@ import { createHash } from 'crypto'; import { deflate } from 'zlib'; -import { Entry, EntryNested } from '@kbn/securitysolution-io-ts-utils'; +import { Entry, EntryNested } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../../../../lists/common/schemas'; import { validate } from '../../../../common/validate'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts index 58df4b3f11412..f50f0b521ed76 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/signals/filters/filter_events_against_list.ts @@ -6,7 +6,7 @@ */ import type { estypes } from '@elastic/elasticsearch'; -import { entriesList } from '@kbn/securitysolution-io-ts-utils'; +import { entriesList } from '@kbn/securitysolution-io-ts-list-types'; import { ExceptionListItemSchema } from '../../../../../../lists/common/schemas'; import { hasLargeValueList } from '../../../../../common/detection_engine/utils'; diff --git a/yarn.lock b/yarn.lock index b8b4e54d25dcc..4857c7c908293 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2707,6 +2707,15 @@ uid "" "@kbn/securitysolution-es-utils@link:bazel-bin/packages/kbn-securitysolution-es-utils/npm_module": +"@kbn/securitysolution-io-ts-alerting-types@link:bazel-bin/packages/kbn-securitysolution-io-ts-alerting-types/npm_module": + version "0.0.0" + uid "" + +"@kbn/securitysolution-io-ts-list-types@link:bazel-bin/packages/kbn-securitysolution-io-ts-list-types/npm_module": + version "0.0.0" + uid "" + +"@kbn/securitysolution-io-ts-types@link:bazel-bin/packages/kbn-securitysolution-io-ts-types/npm_module": version "0.0.0" uid "" From 3da9a78eeb4f73c0fd8d457f6e9265b1623ad12b Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 16:37:28 -0600 Subject: [PATCH 093/144] Removes circular deps for lists in tooling and bumps down byte limit for lists (#100082) ## Summary * Removes circular deps exception for lists * Bumps down byte limit for lists now that we have decreased the page bytes to be under 200kb --- packages/kbn-optimizer/limits.yml | 2 +- src/dev/run_find_plugins_with_circular_deps.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 448b5ad650da5..5748984c7bc6e 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -46,7 +46,7 @@ pageLoadAssetSize: lens: 96624 licenseManagement: 41817 licensing: 29004 - lists: 280504 + lists: 200000 logstash: 53548 management: 46112 maps: 80000 diff --git a/src/dev/run_find_plugins_with_circular_deps.ts b/src/dev/run_find_plugins_with_circular_deps.ts index a737bc6a73004..4ce71b24332c1 100644 --- a/src/dev/run_find_plugins_with_circular_deps.ts +++ b/src/dev/run_find_plugins_with_circular_deps.ts @@ -19,9 +19,7 @@ interface Options { type CircularDepList = Set; -const allowedList: CircularDepList = new Set([ - 'x-pack/plugins/lists -> x-pack/plugins/security_solution', -]); +const allowedList: CircularDepList = new Set([]); run( async ({ flags, log }) => { From 7058e919bafdd8581ddf87fadb0e22fecedf6f99 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 13 May 2021 17:26:12 -0600 Subject: [PATCH 094/144] Updates the monorepo-packages list (#100096) ## Summary Updates the monorepo-packages list --- docs/developer/getting-started/monorepo-packages.asciidoc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 7265cd415949c..92dc2a1a24377 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -82,12 +82,14 @@ yarn kbn watch-bazel - @kbn/legacy-logging - @kbn/logging - @kbn/securitysolution-constants -- @kbn/securitysolution-utils - @kbn/securitysolution-es-utils +- kbn/securitysolution-io-ts-alerting-types +- kbn/securitysolution-io-ts-list-types +- kbn/securitysolution-io-ts-types - @kbn/securitysolution-io-ts-utils +- @kbn/securitysolution-utils - @kbn/std - @kbn/telemetry-utils - @kbn/tinymath - @kbn/utility-types - @kbn/utils - From 108252bd8df012e5597cab1c20bc434e5dd627b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20S=C3=A1nchez?= Date: Fri, 14 May 2021 10:24:08 +0200 Subject: [PATCH 095/144] Disable contextMenu when event is not event.kind=event (#100027) --- .../timelines/components/timeline/body/actions/index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx index 015c4c0b45949..0824dea0803ba 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/index.tsx @@ -115,6 +115,11 @@ const ActionsComponent: React.FC = ({ ); const eventType = getEventType(ecsData); + const isEventContextMenuEnabled = useMemo( + () => isEventFilteringEnabled && !!ecsData.event?.kind && ecsData.event?.kind[0] === 'event', + [ecsData.event?.kind, isEventFilteringEnabled] + ); + return ( <> {showCheckboxes && ( @@ -197,7 +202,7 @@ const ActionsComponent: React.FC = ({ key="alert-context-menu" ecsRowData={ecsData} timelineId={timelineId} - disabled={eventType !== 'signal' && (!isEventFilteringEnabled || eventType !== 'raw')} + disabled={eventType !== 'signal' && !isEventContextMenuEnabled} refetch={refetch} onRuleChange={onRuleChange} /> From c572ddd780d11f96a107674b557edb473f25615e Mon Sep 17 00:00:00 2001 From: Larry Gregory Date: Fri, 14 May 2021 08:31:03 -0400 Subject: [PATCH 096/144] Introduce capabilities provider and switcher to file upload plugin (#96593) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../file_upload/server/capabilities.test.ts | 267 ++++++++++++++++++ .../file_upload/server/capabilities.ts | 47 +++ .../file_upload/server/check_privileges.ts | 55 ++++ x-pack/plugins/file_upload/server/plugin.ts | 3 + x-pack/plugins/file_upload/server/routes.ts | 32 +-- x-pack/plugins/security/server/index.ts | 1 + 6 files changed, 382 insertions(+), 23 deletions(-) create mode 100644 x-pack/plugins/file_upload/server/capabilities.test.ts create mode 100644 x-pack/plugins/file_upload/server/capabilities.ts create mode 100644 x-pack/plugins/file_upload/server/check_privileges.ts diff --git a/x-pack/plugins/file_upload/server/capabilities.test.ts b/x-pack/plugins/file_upload/server/capabilities.test.ts new file mode 100644 index 0000000000000..2fc666c837961 --- /dev/null +++ b/x-pack/plugins/file_upload/server/capabilities.test.ts @@ -0,0 +1,267 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setupCapabilities } from './capabilities'; +import { coreMock, httpServerMock } from '../../../../src/core/server/mocks'; +import { Capabilities, CoreStart } from 'kibana/server'; +import { securityMock } from '../../security/server/mocks'; + +describe('setupCapabilities', () => { + it('registers a capabilities provider for the file upload feature', () => { + const coreSetup = coreMock.createSetup(); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerProvider).toHaveBeenCalledTimes(1); + const [provider] = coreSetup.capabilities.registerProvider.mock.calls[0]; + expect(provider()).toMatchInlineSnapshot(` + Object { + "fileUpload": Object { + "show": true, + }, + } + `); + }); + + it('registers a capabilities switcher that returns unaltered capabilities when security is disabled', async () => { + const coreSetup = coreMock.createSetup(); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1); + const [switcher] = coreSetup.capabilities.registerSwitcher.mock.calls[0]; + + const capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + fileUpload: { + show: true, + }, + } as Capabilities; + + const request = httpServerMock.createKibanaRequest(); + + await expect(switcher(request, capabilities, false)).resolves.toMatchInlineSnapshot(` + Object { + "catalogue": Object {}, + "fileUpload": Object { + "show": true, + }, + "management": Object {}, + "navLinks": Object {}, + } + `); + }); + + it('registers a capabilities switcher that returns unaltered capabilities when default capabilities are requested', async () => { + const coreSetup = coreMock.createSetup(); + const security = securityMock.createStart(); + security.authz.mode.useRbacForRequest.mockReturnValue(true); + coreSetup.getStartServices.mockResolvedValue([ + (undefined as unknown) as CoreStart, + { security }, + undefined, + ]); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1); + const [switcher] = coreSetup.capabilities.registerSwitcher.mock.calls[0]; + + const capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + fileUpload: { + show: true, + }, + } as Capabilities; + + const request = httpServerMock.createKibanaRequest(); + + await expect(switcher(request, capabilities, true)).resolves.toMatchInlineSnapshot(` + Object { + "catalogue": Object {}, + "fileUpload": Object { + "show": true, + }, + "management": Object {}, + "navLinks": Object {}, + } + `); + + expect(security.authz.mode.useRbacForRequest).not.toHaveBeenCalled(); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).not.toHaveBeenCalled(); + }); + + it('registers a capabilities switcher that disables capabilities for underprivileged users', async () => { + const coreSetup = coreMock.createSetup(); + const security = securityMock.createStart(); + security.authz.mode.useRbacForRequest.mockReturnValue(true); + + const mockCheckPrivileges = jest.fn().mockResolvedValue({ hasAllRequested: false }); + security.authz.checkPrivilegesDynamicallyWithRequest.mockReturnValue(mockCheckPrivileges); + coreSetup.getStartServices.mockResolvedValue([ + (undefined as unknown) as CoreStart, + { security }, + undefined, + ]); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1); + const [switcher] = coreSetup.capabilities.registerSwitcher.mock.calls[0]; + + const capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + fileUpload: { + show: true, + }, + } as Capabilities; + + const request = httpServerMock.createKibanaRequest(); + + await expect(switcher(request, capabilities, false)).resolves.toMatchInlineSnapshot(` + Object { + "fileUpload": Object { + "show": false, + }, + } + `); + + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledTimes(1); + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledWith(request); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).toHaveBeenCalledTimes(1); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).toHaveBeenCalledWith(request); + }); + + it('registers a capabilities switcher that enables capabilities for privileged users', async () => { + const coreSetup = coreMock.createSetup(); + const security = securityMock.createStart(); + security.authz.mode.useRbacForRequest.mockReturnValue(true); + + const mockCheckPrivileges = jest.fn().mockResolvedValue({ hasAllRequested: true }); + security.authz.checkPrivilegesDynamicallyWithRequest.mockReturnValue(mockCheckPrivileges); + coreSetup.getStartServices.mockResolvedValue([ + (undefined as unknown) as CoreStart, + { security }, + undefined, + ]); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1); + const [switcher] = coreSetup.capabilities.registerSwitcher.mock.calls[0]; + + const capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + fileUpload: { + show: true, + }, + } as Capabilities; + + const request = httpServerMock.createKibanaRequest(); + + await expect(switcher(request, capabilities, false)).resolves.toMatchInlineSnapshot(` + Object { + "catalogue": Object {}, + "fileUpload": Object { + "show": true, + }, + "management": Object {}, + "navLinks": Object {}, + } + `); + + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledTimes(1); + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledWith(request); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).toHaveBeenCalledTimes(1); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).toHaveBeenCalledWith(request); + }); + + it('registers a capabilities switcher that disables capabilities for unauthenticated requests', async () => { + const coreSetup = coreMock.createSetup(); + const security = securityMock.createStart(); + security.authz.mode.useRbacForRequest.mockReturnValue(true); + const mockCheckPrivileges = jest + .fn() + .mockRejectedValue(new Error('this should not have been called')); + security.authz.checkPrivilegesDynamicallyWithRequest.mockReturnValue(mockCheckPrivileges); + coreSetup.getStartServices.mockResolvedValue([ + (undefined as unknown) as CoreStart, + { security }, + undefined, + ]); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1); + const [switcher] = coreSetup.capabilities.registerSwitcher.mock.calls[0]; + + const capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + fileUpload: { + show: true, + }, + } as Capabilities; + + const request = httpServerMock.createKibanaRequest({ auth: { isAuthenticated: false } }); + + await expect(switcher(request, capabilities, false)).resolves.toMatchInlineSnapshot(` + Object { + "fileUpload": Object { + "show": false, + }, + } + `); + + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledTimes(1); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).not.toHaveBeenCalled(); + }); + + it('registers a capabilities switcher that skips privilege check for requests not using rbac', async () => { + const coreSetup = coreMock.createSetup(); + const security = securityMock.createStart(); + security.authz.mode.useRbacForRequest.mockReturnValue(false); + coreSetup.getStartServices.mockResolvedValue([ + (undefined as unknown) as CoreStart, + { security }, + undefined, + ]); + setupCapabilities(coreSetup); + + expect(coreSetup.capabilities.registerSwitcher).toHaveBeenCalledTimes(1); + const [switcher] = coreSetup.capabilities.registerSwitcher.mock.calls[0]; + + const capabilities = { + navLinks: {}, + management: {}, + catalogue: {}, + fileUpload: { + show: true, + }, + } as Capabilities; + + const request = httpServerMock.createKibanaRequest(); + + await expect(switcher(request, capabilities, false)).resolves.toMatchInlineSnapshot(` + Object { + "catalogue": Object {}, + "fileUpload": Object { + "show": true, + }, + "management": Object {}, + "navLinks": Object {}, + } + `); + + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledTimes(1); + expect(security.authz.mode.useRbacForRequest).toHaveBeenCalledWith(request); + expect(security.authz.checkPrivilegesDynamicallyWithRequest).not.toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/file_upload/server/capabilities.ts b/x-pack/plugins/file_upload/server/capabilities.ts new file mode 100644 index 0000000000000..17880b98150d6 --- /dev/null +++ b/x-pack/plugins/file_upload/server/capabilities.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CoreSetup } from 'kibana/server'; +import { checkFileUploadPrivileges } from './check_privileges'; +import { StartDeps } from './types'; + +export const setupCapabilities = ( + core: Pick, 'capabilities' | 'getStartServices'> +) => { + core.capabilities.registerProvider(() => { + return { + fileUpload: { + show: true, + }, + }; + }); + + core.capabilities.registerSwitcher(async (request, capabilities, useDefaultCapabilities) => { + if (useDefaultCapabilities) { + return capabilities; + } + const [, { security }] = await core.getStartServices(); + + // Check the bare minimum set of privileges required to get some utility out of this feature + const { hasImportPermission } = await checkFileUploadPrivileges({ + authorization: security?.authz, + request, + checkCreateIndexPattern: true, + checkHasManagePipeline: false, + }); + + if (!hasImportPermission) { + return { + fileUpload: { + show: false, + }, + }; + } + + return capabilities; + }); +}; diff --git a/x-pack/plugins/file_upload/server/check_privileges.ts b/x-pack/plugins/file_upload/server/check_privileges.ts new file mode 100644 index 0000000000000..42cc53f693fec --- /dev/null +++ b/x-pack/plugins/file_upload/server/check_privileges.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { KibanaRequest } from 'kibana/server'; +import { AuthorizationServiceSetup, CheckPrivilegesPayload } from '../../security/server'; + +interface Deps { + request: KibanaRequest; + authorization?: Pick< + AuthorizationServiceSetup, + 'mode' | 'actions' | 'checkPrivilegesDynamicallyWithRequest' + >; + checkHasManagePipeline: boolean; + checkCreateIndexPattern: boolean; + indexName?: string; +} + +export const checkFileUploadPrivileges = async ({ + request, + authorization, + checkHasManagePipeline, + checkCreateIndexPattern, + indexName, +}: Deps) => { + const requiresAuthz = authorization?.mode.useRbacForRequest(request) ?? false; + + if (!authorization || !requiresAuthz) { + return { hasImportPermission: true }; + } + + if (!request.auth.isAuthenticated) { + return { hasImportPermission: false }; + } + + const checkPrivilegesPayload: CheckPrivilegesPayload = { + elasticsearch: { + cluster: checkHasManagePipeline ? ['manage_pipeline'] : [], + index: indexName ? { [indexName]: ['create', 'create_index'] } : {}, + }, + }; + if (checkCreateIndexPattern) { + checkPrivilegesPayload.kibana = [ + authorization.actions.savedObject.get('index-pattern', 'create'), + ]; + } + + const checkPrivileges = authorization.checkPrivilegesDynamicallyWithRequest(request); + const checkPrivilegesResp = await checkPrivileges(checkPrivilegesPayload); + + return { hasImportPermission: checkPrivilegesResp.hasAllRequested }; +}; diff --git a/x-pack/plugins/file_upload/server/plugin.ts b/x-pack/plugins/file_upload/server/plugin.ts index 5a4b59fe4f5e6..80fe041207110 100644 --- a/x-pack/plugins/file_upload/server/plugin.ts +++ b/x-pack/plugins/file_upload/server/plugin.ts @@ -13,6 +13,7 @@ import { initFileUploadTelemetry } from './telemetry'; import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/server'; import { UI_SETTING_MAX_FILE_SIZE, MAX_FILE_SIZE } from '../common'; import { StartDeps } from './types'; +import { setupCapabilities } from './capabilities'; interface SetupDeps { usageCollection: UsageCollectionSetup; @@ -28,6 +29,8 @@ export class FileUploadPlugin implements Plugin { async setup(coreSetup: CoreSetup, plugins: SetupDeps) { fileUploadRoutes(coreSetup, this._logger); + setupCapabilities(coreSetup); + coreSetup.uiSettings.register({ [UI_SETTING_MAX_FILE_SIZE]: { name: i18n.translate('xpack.fileUpload.maxFileSizeUiSetting.name', { diff --git a/x-pack/plugins/file_upload/server/routes.ts b/x-pack/plugins/file_upload/server/routes.ts index 847a57afb391c..3033f8300712c 100644 --- a/x-pack/plugins/file_upload/server/routes.ts +++ b/x-pack/plugins/file_upload/server/routes.ts @@ -22,8 +22,8 @@ import { analyzeFile } from './analyze_file'; import { updateTelemetry } from './telemetry'; import { importFileBodySchema, importFileQuerySchema, analyzeFileQuerySchema } from './schemas'; -import { CheckPrivilegesPayload } from '../../security/server'; import { StartDeps } from './types'; +import { checkFileUploadPrivileges } from './check_privileges'; function importData( client: IScopedClusterClient, @@ -60,29 +60,15 @@ export function fileUploadRoutes(coreSetup: CoreSetup, logge const [, pluginsStart] = await coreSetup.getStartServices(); const { indexName, checkCreateIndexPattern, checkHasManagePipeline } = request.query; - const authorizationService = pluginsStart.security?.authz; - const requiresAuthz = authorizationService?.mode.useRbacForRequest(request) ?? false; - - if (!authorizationService || !requiresAuthz) { - return response.ok({ body: { hasImportPermission: true } }); - } - - const checkPrivilegesPayload: CheckPrivilegesPayload = { - elasticsearch: { - cluster: checkHasManagePipeline ? ['manage_pipeline'] : [], - index: indexName ? { [indexName]: ['create', 'create_index'] } : {}, - }, - }; - if (checkCreateIndexPattern) { - checkPrivilegesPayload.kibana = [ - authorizationService.actions.savedObject.get('index-pattern', 'create'), - ]; - } - - const checkPrivileges = authorizationService.checkPrivilegesDynamicallyWithRequest(request); - const checkPrivilegesResp = await checkPrivileges(checkPrivilegesPayload); + const { hasImportPermission } = await checkFileUploadPrivileges({ + authorization: pluginsStart.security?.authz, + request, + indexName, + checkCreateIndexPattern, + checkHasManagePipeline, + }); - return response.ok({ body: { hasImportPermission: checkPrivilegesResp.hasAllRequested } }); + return response.ok({ body: { hasImportPermission } }); } catch (e) { logger.warn(`Unable to check import permission, error: ${e.message}`); return response.ok({ body: { hasImportPermission: false } }); diff --git a/x-pack/plugins/security/server/index.ts b/x-pack/plugins/security/server/index.ts index 087cf8f4f8ee8..e50ab66a92547 100644 --- a/x-pack/plugins/security/server/index.ts +++ b/x-pack/plugins/security/server/index.ts @@ -27,6 +27,7 @@ export type { GrantAPIKeyResult, } from './authentication'; export type { CheckPrivilegesPayload } from './authorization'; +export type AuthorizationServiceSetup = SecurityPluginStart['authz']; export { LegacyAuditLogger, AuditLogger, AuditEvent } from './audit'; export type { SecurityPluginSetup, SecurityPluginStart }; export type { AuthenticatedUser } from '../common/model'; From 0b5c672c11fb10cf40915ba807c60c00f74915d1 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Fri, 14 May 2021 15:41:37 +0200 Subject: [PATCH 097/144] [Lens] Remove separate mounting point for editor frame to use redux freely (#99892) remove separate mounting point for editor frame --- .../lens/public/app_plugin/app.test.tsx | 146 ++++++++-------- x-pack/plugins/lens/public/app_plugin/app.tsx | 160 +++++++++--------- .../lens/public/app_plugin/mounter.tsx | 1 - .../plugins/lens/public/app_plugin/types.ts | 4 - .../editor_frame_service/service.test.tsx | 89 ---------- .../public/editor_frame_service/service.tsx | 60 +++---- x-pack/plugins/lens/public/types.ts | 3 +- 7 files changed, 168 insertions(+), 295 deletions(-) delete mode 100644 x-pack/plugins/lens/public/editor_frame_service/service.test.tsx diff --git a/x-pack/plugins/lens/public/app_plugin/app.test.tsx b/x-pack/plugins/lens/public/app_plugin/app.test.tsx index 87000865850e1..72b8bfa38491a 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.test.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.test.tsx @@ -45,7 +45,6 @@ import { import { LensAttributeService } from '../lens_attribute_service'; import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; import { EmbeddableStateTransfer } from '../../../../../src/plugins/embeddable/public'; -import { NativeRenderer } from '../native_renderer'; import moment from 'moment'; jest.mock('../editor_frame_service/editor_frame/expression_helpers'); @@ -72,8 +71,7 @@ const { TopNavMenu } = navigationStartMock.ui; function createMockFrame(): jest.Mocked { return { - mount: jest.fn(async (el, props) => {}), - unmount: jest.fn(() => {}), + EditorFrameContainer: jest.fn((props: EditorFrameProps) =>
    ), }; } @@ -308,13 +306,9 @@ describe('Lens App', () => { it('renders the editor frame', () => { const { frame } = mountWith({}); - - expect(frame.mount.mock.calls).toMatchInlineSnapshot(` + expect(frame.EditorFrameContainer.mock.calls).toMatchInlineSnapshot(` Array [ Array [ -
    , Object { "dateRange": Object { "fromDate": "2021-01-10T04:00:00.000Z", @@ -333,6 +327,7 @@ describe('Lens App', () => { "searchSessionId": "sessionId-1", "showNoDataPopover": [Function], }, + Object {}, ], ] `); @@ -357,21 +352,20 @@ describe('Lens App', () => { const { component, frame } = mountWith({ services }); component.update(); - - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ dateRange: { fromDate: '2021-01-10T04:00:00.000Z', toDate: '2021-01-10T08:00:00.000Z' }, query: { query: '', language: 'kuery' }, filters: [pinnedFilter], - }) + }), + {} ); expect(services.data.query.filterManager.getFilters).not.toHaveBeenCalled(); }); it('displays errors from the frame in a toast', () => { const { component, frame, services } = mountWith({}); - const onError = frame.mount.mock.calls[0][1].onError; + const onError = frame.EditorFrameContainer.mock.calls[0][0].onError; onError({ message: 'error' }); component.update(); expect(services.notifications.toasts.addDanger).toHaveBeenCalled(); @@ -485,8 +479,7 @@ describe('Lens App', () => { }), {} ); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ doc: expect.objectContaining({ savedObjectId: defaultSavedObjectId, @@ -495,7 +488,8 @@ describe('Lens App', () => { filters: [{ query: { match_phrase: { src: 'test' } } }], }), }), - }) + }), + {} ); }); @@ -619,7 +613,7 @@ describe('Lens App', () => { expect(services.attributeService.unwrapAttributes).not.toHaveBeenCalled(); } - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ @@ -647,7 +641,7 @@ describe('Lens App', () => { }; const { component, frame } = mountWith({ services }); expect(getButton(component).disableButton).toEqual(true); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -662,7 +656,7 @@ describe('Lens App', () => { it('shows a save button that is enabled when the frame has provided its state and does not show save and return or save as', async () => { const { component, frame } = mountWith({}); expect(getButton(component).disableButton).toEqual(true); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -828,7 +822,7 @@ describe('Lens App', () => { .fn() .mockRejectedValue({ message: 'failed' }); const { component, props, frame } = mountWith({ services }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -906,7 +900,7 @@ describe('Lens App', () => { .fn() .mockReturnValue(Promise.resolve({ savedObjectId: '123' })); const { component, frame } = mountWith({ services }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; await act(async () => onChange({ filterableIndexPatterns: [], @@ -940,7 +934,7 @@ describe('Lens App', () => { it('does not show the copy button on first save', async () => { const { component, frame } = mountWith({}); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; await act(async () => onChange({ filterableIndexPatterns: [], @@ -967,7 +961,7 @@ describe('Lens App', () => { it('should be disabled when no data is available', async () => { const { component, frame } = mountWith({}); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; await act(async () => onChange({ filterableIndexPatterns: [], @@ -981,7 +975,7 @@ describe('Lens App', () => { it('should disable download when not saveable', async () => { const { component, frame } = mountWith({}); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; await act(async () => onChange({ @@ -1007,7 +1001,7 @@ describe('Lens App', () => { }; const { component, frame } = mountWith({ services }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; await act(async () => onChange({ filterableIndexPatterns: [], @@ -1032,12 +1026,12 @@ describe('Lens App', () => { }), {} ); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ dateRange: { fromDate: '2021-01-10T04:00:00.000Z', toDate: '2021-01-10T08:00:00.000Z' }, query: { query: '', language: 'kuery' }, - }) + }), + {} ); }); @@ -1049,7 +1043,7 @@ describe('Lens App', () => { }), {} ); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; await act(async () => { onChange({ filterableIndexPatterns: ['1'], @@ -1106,12 +1100,12 @@ describe('Lens App', () => { from: 'now-14d', to: 'now-7d', }); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ dateRange: { fromDate: '2021-01-09T04:00:00.000Z', toDate: '2021-01-09T08:00:00.000Z' }, query: { query: 'new', language: 'lucene' }, - }) + }), + {} ); }); @@ -1125,11 +1119,11 @@ describe('Lens App', () => { ]) ); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ filters: [esFilters.buildExistsFilter(field, indexPattern)], - }) + }), + {} ); }); @@ -1142,11 +1136,11 @@ describe('Lens App', () => { }) ); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-1`, - }) + }), + {} ); // trigger again, this time changing just the query @@ -1157,11 +1151,11 @@ describe('Lens App', () => { }) ); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-2`, - }) + }), + {} ); const indexPattern = ({ id: 'index1' } as unknown) as IIndexPattern; @@ -1172,11 +1166,11 @@ describe('Lens App', () => { ]) ); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-3`, - }) + }), + {} ); }); }); @@ -1310,11 +1304,11 @@ describe('Lens App', () => { component.update(); act(() => component.find(TopNavMenu).prop('onClearSavedQuery')!()); component.update(); - expect(frame.mount).toHaveBeenLastCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenLastCalledWith( expect.objectContaining({ filters: [pinned], - }) + }), + {} ); }); }); @@ -1343,11 +1337,11 @@ describe('Lens App', () => { }); }); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-2`, - }) + }), + {} ); }); @@ -1361,11 +1355,11 @@ describe('Lens App', () => { await act(async () => { await new Promise((r) => setTimeout(r, 0)); }); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `new-session-id`, - }) + }), + {} ); }); @@ -1387,11 +1381,11 @@ describe('Lens App', () => { component.update(); act(() => component.find(TopNavMenu).prop('onClearSavedQuery')!()); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-2`, - }) + }), + {} ); }); @@ -1416,16 +1410,14 @@ describe('Lens App', () => { it('does not update the searchSessionId when the state changes', () => { const { component, frame } = mountWith({}); act(() => { - (component.find(NativeRenderer).prop('nativeProps') as EditorFrameProps).onChange( - mockUpdate - ); + component.find(frame.EditorFrameContainer).prop('onChange')(mockUpdate); }); component.update(); - expect(frame.mount).not.toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).not.toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-2`, - }) + }), + {} ); }); @@ -1444,16 +1436,14 @@ describe('Lens App', () => { }); act(() => { - (component.find(NativeRenderer).prop('nativeProps') as EditorFrameProps).onChange( - mockUpdate - ); + component.find(frame.EditorFrameContainer).prop('onChange')(mockUpdate); }); component.update(); - expect(frame.mount).toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-2`, - }) + }), + {} ); }); @@ -1472,16 +1462,14 @@ describe('Lens App', () => { }); act(() => { - (component.find(NativeRenderer).prop('nativeProps') as EditorFrameProps).onChange( - mockUpdate - ); + component.find(frame.EditorFrameContainer).prop('onChange')(mockUpdate); }); component.update(); - expect(frame.mount).not.toHaveBeenCalledWith( - expect.any(Element), + expect(frame.EditorFrameContainer).not.toHaveBeenCalledWith( expect.objectContaining({ searchSessionId: `sessionId-2`, - }) + }), + {} ); }); }); @@ -1513,7 +1501,7 @@ describe('Lens App', () => { }, }; const { component, frame, props } = mountWith({ services }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -1533,7 +1521,7 @@ describe('Lens App', () => { it('should confirm when leaving with an unsaved doc', () => { const { component, frame, props } = mountWith({}); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -1553,7 +1541,7 @@ describe('Lens App', () => { await act(async () => { component.setProps({ initialInput: { savedObjectId: defaultSavedObjectId } }); }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -1576,7 +1564,7 @@ describe('Lens App', () => { await act(async () => { component.setProps({ initialInput: { savedObjectId: defaultSavedObjectId } }); }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], @@ -1596,7 +1584,7 @@ describe('Lens App', () => { await act(async () => { component.setProps({ initialInput: { savedObjectId: defaultSavedObjectId } }); }); - const onChange = frame.mount.mock.calls[0][1].onChange; + const onChange = frame.EditorFrameContainer.mock.calls[0][0].onChange; act(() => onChange({ filterableIndexPatterns: [], diff --git a/x-pack/plugins/lens/public/app_plugin/app.tsx b/x-pack/plugins/lens/public/app_plugin/app.tsx index 077456423ac4d..c172f36913c21 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.tsx @@ -26,7 +26,6 @@ import { checkForDuplicateTitle, } from '../../../../../src/plugins/saved_objects/public'; import { injectFilterReferences } from '../persistence'; -import { NativeRenderer } from '../native_renderer'; import { trackUiEvent } from '../lens_ui_telemetry'; import { DataPublicPluginStart, @@ -82,7 +81,7 @@ export function App({ dashboardFeatureFlag, } = useKibana().services; - const startSession = useCallback(() => data.search.session.start(), [data]); + const startSession = useCallback(() => data.search.session.start(), [data.search.session]); const [state, setState] = useState(() => { return { @@ -95,26 +94,28 @@ export function App({ isLoading: Boolean(initialInput), indexPatternsForTopNav: [], isLinkedToOriginatingApp: Boolean(incomingState?.originatingApp), - isSaveModalVisible: false, - indicateNoData: false, isSaveable: false, searchSessionId: startSession(), }; }); + // Used to show a popover that guides the user towards changing the date range when no data is available. + const [indicateNoData, setIndicateNoData] = useState(false); + const [isSaveModalVisible, setIsSaveModalVisible] = useState(false); + const { lastKnownDoc } = state; const showNoDataPopover = useCallback(() => { - setState((prevState) => ({ ...prevState, indicateNoData: true })); - }, [setState]); + setIndicateNoData(true); + }, [setIndicateNoData]); useEffect(() => { - if (state.indicateNoData) { - setState((prevState) => ({ ...prevState, indicateNoData: false })); + if (indicateNoData) { + setIndicateNoData(false); } }, [ - setState, - state.indicateNoData, + setIndicateNoData, + indicateNoData, state.query, state.filters, state.indexPatternsForTopNav, @@ -136,26 +137,6 @@ export function App({ [notifications.toasts] ); - const getLastKnownDocWithoutPinnedFilters = useCallback( - function () { - if (!lastKnownDoc) return undefined; - const [pinnedFilters, appFilters] = _.partition( - injectFilterReferences(lastKnownDoc.state?.filters || [], lastKnownDoc.references), - esFilters.isFilterPinned - ); - return pinnedFilters?.length - ? { - ...lastKnownDoc, - state: { - ...lastKnownDoc.state, - filters: appFilters, - }, - } - : lastKnownDoc; - }, - [lastKnownDoc] - ); - const getIsByValueMode = useCallback( () => Boolean( @@ -263,7 +244,10 @@ export function App({ // or when the user has configured something without saving if ( application.capabilities.visualize.save && - !_.isEqual(state.persistedDoc?.state, getLastKnownDocWithoutPinnedFilters()?.state) && + !_.isEqual( + state.persistedDoc?.state, + getLastKnownDocWithoutPinnedFilters(lastKnownDoc)?.state + ) && (state.isSaveable || state.persistedDoc) ) { return actions.confirm( @@ -283,7 +267,6 @@ export function App({ lastKnownDoc, state.isSaveable, state.persistedDoc, - getLastKnownDocWithoutPinnedFilters, application.capabilities.visualize.save, ]); @@ -374,7 +357,7 @@ export function App({ setState((s) => ({ ...s, isLoading: false, - persistedDoc: doc, + ...(!_.isEqual(state.persistedDoc, doc) ? { persistedDoc: doc } : null), lastKnownDoc: doc, query: doc.state.query, indexPatternsForTopNav: indexPatterns, @@ -403,8 +386,7 @@ export function App({ attributeService, redirectTo, chrome.recentlyAccessed, - state.persistedDoc?.savedObjectId, - state.persistedDoc?.state, + state.persistedDoc, ]); const tagsIds = @@ -435,7 +417,7 @@ export function App({ } const docToSave = { - ...getLastKnownDocWithoutPinnedFilters()!, + ...getLastKnownDocWithoutPinnedFilters(lastKnownDoc)!, description: saveProps.newDescription, title: saveProps.newTitle, references, @@ -522,9 +504,10 @@ export function App({ ); setState((s) => ({ ...s, - isSaveModalVisible: false, isLinkedToOriginatingApp: false, })); + + setIsSaveModalVisible(false); // remove editor state so the connection is still broken after reload stateTransfer.clearEditorState(APP_ID); @@ -540,14 +523,15 @@ export function App({ ...s, persistedDoc: newDoc, lastKnownDoc: newDoc, - isSaveModalVisible: false, isLinkedToOriginatingApp: false, })); + + setIsSaveModalVisible(false); } catch (e) { // eslint-disable-next-line no-console console.dir(e); trackUiEvent('save_failed'); - setState((s) => ({ ...s, isSaveModalVisible: false })); + setIsSaveModalVisible(false); } }; @@ -634,7 +618,7 @@ export function App({ }, showSaveModal: () => { if (savingToDashboardPermitted || savingToLibraryPermitted) { - setState((s) => ({ ...s, isSaveModalVisible: true })); + setIsSaveModalVisible(true); } }, cancel: () => { @@ -706,7 +690,7 @@ export function App({ query={state.query} dateRangeFrom={fromDate} dateRangeTo={toDate} - indicateNoData={state.indicateNoData} + indicateNoData={indicateNoData} /> {(!state.isLoading || state.persistedDoc) && ( { - setState((s) => ({ ...s, isSaveModalVisible: false })); + setIsSaveModalVisible(false); }} getAppNameFromId={() => getOriginatingAppName()} lastKnownDoc={lastKnownDoc} @@ -790,47 +774,44 @@ const MemoizedEditorFrameWrapper = React.memo(function EditorFrameWrapper({ lastKnownDoc: React.MutableRefObject; activeData: React.MutableRefObject | undefined>; }) { + const { EditorFrameContainer } = editorFrame; return ( - { - if (isSaveable !== oldIsSaveable) { - setState((s) => ({ ...s, isSaveable })); - } - if (!_.isEqual(persistedDoc, doc) && !_.isEqual(lastKnownDoc.current, doc)) { - setState((s) => ({ ...s, lastKnownDoc: doc })); - } - if (!_.isEqual(activeDataRef.current, activeData)) { - setState((s) => ({ ...s, activeData })); - } + { + if (isSaveable !== oldIsSaveable) { + setState((s) => ({ ...s, isSaveable })); + } + if (!_.isEqual(persistedDoc, doc) && !_.isEqual(lastKnownDoc.current, doc)) { + setState((s) => ({ ...s, lastKnownDoc: doc })); + } + if (!_.isEqual(activeDataRef.current, activeData)) { + setState((s) => ({ ...s, activeData })); + } - // Update the cached index patterns if the user made a change to any of them - if ( - indexPatternsForTopNav.length !== filterableIndexPatterns.length || - filterableIndexPatterns.some( - (id) => !indexPatternsForTopNav.find((indexPattern) => indexPattern.id === id) - ) - ) { - getAllIndexPatterns(filterableIndexPatterns, data.indexPatterns).then( - ({ indexPatterns }) => { - if (indexPatterns) { - setState((s) => ({ ...s, indexPatternsForTopNav: indexPatterns })); - } + // Update the cached index patterns if the user made a change to any of them + if ( + indexPatternsForTopNav.length !== filterableIndexPatterns.length || + filterableIndexPatterns.some( + (id) => !indexPatternsForTopNav.find((indexPattern) => indexPattern.id === id) + ) + ) { + getAllIndexPatterns(filterableIndexPatterns, data.indexPatterns).then( + ({ indexPatterns }) => { + if (indexPatterns) { + setState((s) => ({ ...s, indexPatternsForTopNav: indexPatterns })); } - ); - } - }, + } + ); + } }} /> ); @@ -851,3 +832,20 @@ export async function getAllIndexPatterns( // return also the rejected ids in case we want to show something later on return { indexPatterns: fullfilled.map((response) => response.value), rejectedIds }; } + +function getLastKnownDocWithoutPinnedFilters(doc?: Document) { + if (!doc) return undefined; + const [pinnedFilters, appFilters] = _.partition( + injectFilterReferences(doc.state?.filters || [], doc.references), + esFilters.isFilterPinned + ); + return pinnedFilters?.length + ? { + ...doc, + state: { + ...doc.state, + filters: appFilters, + }, + } + : doc; +} diff --git a/x-pack/plugins/lens/public/app_plugin/mounter.tsx b/x-pack/plugins/lens/public/app_plugin/mounter.tsx index 5869151485a52..e6eb115562d37 100644 --- a/x-pack/plugins/lens/public/app_plugin/mounter.tsx +++ b/x-pack/plugins/lens/public/app_plugin/mounter.tsx @@ -230,7 +230,6 @@ export async function mountApp( ); return () => { data.search.session.clear(); - instance.unmount(); unmountComponentAtNode(params.element); unlistenParentHistory(); }; diff --git a/x-pack/plugins/lens/public/app_plugin/types.ts b/x-pack/plugins/lens/public/app_plugin/types.ts index b96b274c3c159..c9143542e67bf 100644 --- a/x-pack/plugins/lens/public/app_plugin/types.ts +++ b/x-pack/plugins/lens/public/app_plugin/types.ts @@ -45,10 +45,6 @@ export interface LensAppState { isLoading: boolean; persistedDoc?: Document; lastKnownDoc?: Document; - isSaveModalVisible: boolean; - - // Used to show a popover that guides the user towards changing the date range when no data is available. - indicateNoData: boolean; // index patterns used to determine which filters are available in the top nav. indexPatternsForTopNav: IndexPattern[]; diff --git a/x-pack/plugins/lens/public/editor_frame_service/service.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/service.test.tsx deleted file mode 100644 index 9174f4387293a..0000000000000 --- a/x-pack/plugins/lens/public/editor_frame_service/service.test.tsx +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EditorFrameService } from './service'; -import { coreMock } from 'src/core/public/mocks'; -import { - MockedSetupDependencies, - MockedStartDependencies, - createMockSetupDependencies, - createMockStartDependencies, -} from './mocks'; -import { CoreSetup } from 'kibana/public'; - -// mock away actual dependencies to prevent all of it being loaded -jest.mock('./embeddable/embeddable_factory', () => ({ - EmbeddableFactory: class Mock {}, -})); - -describe('editor_frame service', () => { - let pluginInstance: EditorFrameService; - let mountpoint: Element; - let pluginSetupDependencies: MockedSetupDependencies; - let pluginStartDependencies: MockedStartDependencies; - - beforeEach(() => { - pluginInstance = new EditorFrameService(); - mountpoint = document.createElement('div'); - pluginSetupDependencies = createMockSetupDependencies(); - pluginStartDependencies = createMockStartDependencies(); - }); - - afterEach(() => { - mountpoint.remove(); - }); - - it('should create an editor frame instance which mounts and unmounts', async () => { - await expect( - (async () => { - pluginInstance.setup( - coreMock.createSetup() as CoreSetup, - pluginSetupDependencies, - jest.fn() - ); - const publicAPI = pluginInstance.start(coreMock.createStart(), pluginStartDependencies); - const instance = await publicAPI.createInstance(); - instance.mount(mountpoint, { - onError: jest.fn(), - onChange: jest.fn(), - dateRange: { fromDate: '', toDate: '' }, - query: { query: '', language: 'lucene' }, - filters: [], - showNoDataPopover: jest.fn(), - initialContext: { - indexPatternId: '1', - fieldName: 'test', - }, - searchSessionId: 'sessionId', - }); - instance.unmount(); - })() - ).resolves.toBeUndefined(); - }); - - it('should not have child nodes after unmount', async () => { - pluginInstance.setup( - coreMock.createSetup() as CoreSetup, - pluginSetupDependencies, - jest.fn() - ); - const publicAPI = pluginInstance.start(coreMock.createStart(), pluginStartDependencies); - const instance = await publicAPI.createInstance(); - instance.mount(mountpoint, { - onError: jest.fn(), - onChange: jest.fn(), - dateRange: { fromDate: '', toDate: '' }, - query: { query: '', language: 'lucene' }, - filters: [], - showNoDataPopover: jest.fn(), - searchSessionId: 'sessionId', - }); - instance.unmount(); - - expect(mountpoint.hasChildNodes()).toBe(false); - }); -}); diff --git a/x-pack/plugins/lens/public/editor_frame_service/service.tsx b/x-pack/plugins/lens/public/editor_frame_service/service.tsx index 46dc326a015a8..f6500596ce5a0 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/service.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/service.tsx @@ -6,8 +6,6 @@ */ import React from 'react'; -import { render, unmountComponentAtNode } from 'react-dom'; -import { I18nProvider } from '@kbn/i18n/react'; import { CoreSetup, CoreStart } from 'kibana/public'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; import { ExpressionsSetup, ExpressionsStart } from '../../../../../src/plugins/expressions/public'; @@ -123,47 +121,33 @@ export class EditorFrameService { public start(core: CoreStart, plugins: EditorFrameStartPlugins): EditorFrameStart { const createInstance = async (): Promise => { - let domElement: Element; const [resolvedDatasources, resolvedVisualizations] = await Promise.all([ collectAsyncDefinitions(this.datasources), collectAsyncDefinitions(this.visualizations), ]); - const unmount = () => { - if (domElement) { - unmountComponentAtNode(domElement); - } - }; + const firstDatasourceId = Object.keys(resolvedDatasources)[0]; + const firstVisualizationId = Object.keys(resolvedVisualizations)[0]; + + const { EditorFrame, getActiveDatasourceIdFromDoc } = await import('../async_services'); + + const palettes = await plugins.charts.palettes.getPalettes(); return { - mount: async ( - element, - { - doc, - onError, - dateRange, - query, - filters, - savedQuery, - onChange, - showNoDataPopover, - initialContext, - searchSessionId, - } - ) => { - if (domElement !== element) { - unmount(); - } - domElement = element; - const firstDatasourceId = Object.keys(resolvedDatasources)[0]; - const firstVisualizationId = Object.keys(resolvedVisualizations)[0]; - - const { EditorFrame, getActiveDatasourceIdFromDoc } = await import('../async_services'); - - const palettes = await plugins.charts.palettes.getPalettes(); - - render( - + EditorFrameContainer: ({ + doc, + onError, + dateRange, + query, + filters, + savedQuery, + onChange, + showNoDataPopover, + initialContext, + searchSessionId, + }) => { + return ( +
    - , - domElement +
    ); }, - unmount, }; }; diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 51d679e7c40e5..9cde4eb8a1561 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -65,8 +65,7 @@ export interface EditorFrameProps { showNoDataPopover: () => void; } export interface EditorFrameInstance { - mount: (element: Element, props: EditorFrameProps) => Promise; - unmount: () => void; + EditorFrameContainer: (props: EditorFrameProps) => React.ReactElement; } export interface EditorFrameSetup { From b6635b00e7cf40c46d938422f205e593d850ea66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20S=C3=A1nchez?= Date: Fri, 14 May 2021 15:59:17 +0200 Subject: [PATCH 098/144] Change search bar placeholder and make it dynamic by props (#100049) --- .../management/components/search_bar/index.test.tsx | 2 +- .../public/management/components/search_bar/index.tsx | 7 +++---- .../pages/event_filters/view/event_filters_list_page.tsx | 8 +++++++- .../management/pages/trusted_apps/view/translations.ts | 7 +++++++ .../pages/trusted_apps/view/trusted_apps_page.tsx | 8 ++++++-- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx b/x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx index 6daea8e53282d..707a96938655a 100644 --- a/x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/search_bar/index.test.tsx @@ -22,7 +22,7 @@ describe('Search bar', () => { }); const getElement = (defaultValue: string = '') => ( - + ); it('should have a default value', () => { diff --git a/x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx b/x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx index 0d4fcf8fec87b..3c92ab31680c2 100644 --- a/x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/management/components/search_bar/index.tsx @@ -11,10 +11,11 @@ import { i18n } from '@kbn/i18n'; export interface SearchBarProps { defaultValue?: string; + placeholder: string; onSearch(value: string): void; } -export const SearchBar = memo(({ defaultValue = '', onSearch }) => { +export const SearchBar = memo(({ defaultValue = '', onSearch, placeholder }) => { const [query, setQuery] = useState(defaultValue); const handleOnChangeSearchField = useCallback( @@ -28,9 +29,7 @@ export const SearchBar = memo(({ defaultValue = '', onSearch }) { {doesDataExist && ( <> - + { /> )} - + {doEntriesExist ? ( Date: Fri, 14 May 2021 16:04:44 +0200 Subject: [PATCH 099/144] Disable selection of filter status 'All' on AddToCaseAction (#99757) * Fix: Disable selection of filter status 'All' on AddToCaseAction * UI: Hide disabled statuses on AddToCaseAction * Refactor: Rename disabledStatuses to hiddenStatuses * Fix: Pick the first valid status for initialFilterOptions Previously it was always picking 'open', but it wouldn't work when hiddenStatuses contains "open". * Add missing test Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/cases/README.md | 2 +- .../all_cases/all_cases_generic.test.tsx | 70 +++++++++++++++++++ .../all_cases/all_cases_generic.tsx | 16 +++-- .../all_cases/selector_modal/index.test.tsx | 4 +- .../all_cases/selector_modal/index.tsx | 13 ++-- .../all_cases/status_filter.test.tsx | 15 ++-- .../components/all_cases/status_filter.tsx | 34 +++++---- .../components/all_cases/table_filters.tsx | 6 +- .../timeline_actions/add_to_case_action.tsx | 4 +- 9 files changed, 120 insertions(+), 44 deletions(-) create mode 100644 x-pack/plugins/cases/public/components/all_cases/all_cases_generic.test.tsx diff --git a/x-pack/plugins/cases/README.md b/x-pack/plugins/cases/README.md index 14afe89829a68..5cb9d82436137 100644 --- a/x-pack/plugins/cases/README.md +++ b/x-pack/plugins/cases/README.md @@ -73,7 +73,7 @@ Arguments: |---|---| |alertData?|`Omit;` alert data to post to case |createCaseNavigation|`CasesNavigation` route configuration for create cases page -|disabledStatuses?|`CaseStatuses[];` array of disabled statuses +|hiddenStatuses?|`CaseStatuses[];` array of hidden statuses |onRowClick|(theCase?: Case | SubCase) => void; callback for row click, passing case in row |updateCase?|(theCase: Case | SubCase) => void; callback after case has been updated |userCanCrud|`boolean;` user permissions to crud diff --git a/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.test.tsx b/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.test.tsx new file mode 100644 index 0000000000000..0e8d1da74b606 --- /dev/null +++ b/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.test.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { mount } from 'enzyme'; +import { AllCasesGeneric } from './all_cases_generic'; + +import { TestProviders } from '../../common/mock'; +import { useGetTags } from '../../containers/use_get_tags'; +import { useGetReporters } from '../../containers/use_get_reporters'; +import { useGetActionLicense } from '../../containers/use_get_action_license'; +import { StatusAll } from '../../containers/types'; +import { CaseStatuses } from '../../../common'; +import { act } from 'react-dom/test-utils'; + +jest.mock('../../containers/use_get_reporters'); +jest.mock('../../containers/use_get_tags'); +jest.mock('../../containers/use_get_action_license'); +jest.mock('../../containers/api'); + +const createCaseNavigation = { href: '', onClick: jest.fn() }; + +const alertDataMock = { + type: 'alert', + rule: { + id: 'rule-id', + name: 'rule', + }, + index: 'index-id', + alertId: 'alert-id', +}; + +describe('AllCasesGeneric ', () => { + beforeEach(() => { + jest.resetAllMocks(); + (useGetTags as jest.Mock).mockReturnValue({ tags: ['coke', 'pepsi'], fetchTags: jest.fn() }); + (useGetReporters as jest.Mock).mockReturnValue({ + reporters: ['casetester'], + respReporters: [{ username: 'casetester' }], + isLoading: true, + isError: false, + fetchReporters: jest.fn(), + }); + (useGetActionLicense as jest.Mock).mockReturnValue({ + actionLicense: null, + isLoading: false, + }); + }); + + it('renders the first available status when hiddenStatus is given', () => + act(async () => { + const wrapper = mount( + + + + ); + + expect(wrapper.find(`[data-test-subj="status-badge-in-progress"]`).exists()).toBeTruthy(); + })); +}); diff --git a/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.tsx b/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.tsx index 83f38aab21aa4..36527bd96700b 100644 --- a/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/all_cases_generic.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useMemo, useRef, useState } from 'react'; import { EuiProgress } from '@elastic/eui'; import { EuiTableSelectionType } from '@elastic/eui/src/components/basic_table/table_types'; -import { isEmpty, memoize } from 'lodash/fp'; +import { difference, head, isEmpty, memoize } from 'lodash/fp'; import styled, { css } from 'styled-components'; import classnames from 'classnames'; @@ -17,10 +17,12 @@ import { CaseStatuses, CaseType, CommentRequestAlertType, + CaseStatusWithAllStatus, CommentType, FilterOptions, SortFieldCase, SubCase, + caseStatuses, } from '../../../common'; import { SELECTABLE_MESSAGE_COLLECTIONS } from '../../common/translations'; import { useGetActionLicense } from '../../containers/use_get_action_license'; @@ -59,7 +61,7 @@ interface AllCasesGenericProps { caseDetailsNavigation?: CasesNavigation; // if not passed, case name is not displayed as a link (Formerly dependant on isSelectorView) configureCasesNavigation?: CasesNavigation; // if not passed, header with nav is not displayed (Formerly dependant on isSelectorView) createCaseNavigation: CasesNavigation; - disabledStatuses?: CaseStatuses[]; + hiddenStatuses?: CaseStatusWithAllStatus[]; isSelectorView?: boolean; onRowClick?: (theCase?: Case | SubCase) => void; updateCase?: (newCase: Case) => void; @@ -72,13 +74,17 @@ export const AllCasesGeneric = React.memo( caseDetailsNavigation, configureCasesNavigation, createCaseNavigation, - disabledStatuses, + hiddenStatuses = [], isSelectorView, onRowClick, updateCase, userCanCrud, }) => { const { actionLicense } = useGetActionLicense(); + const firstAvailableStatus = head(difference(caseStatuses, hiddenStatuses)); + const initialFilterOptions = + !isEmpty(hiddenStatuses) && firstAvailableStatus ? { status: firstAvailableStatus } : {}; + const { data, dispatchUpdateCaseProperty, @@ -90,7 +96,7 @@ export const AllCasesGeneric = React.memo( setFilters, setQueryParams, setSelectedCases, - } = useGetCases(); + } = useGetCases({}, initialFilterOptions); // Post Comment to Case const { postComment, isLoading: isCommentUpdating } = usePostComment(); @@ -288,7 +294,7 @@ export const AllCasesGeneric = React.memo( status: filterOptions.status, }} setFilterRefetch={setFilterRefetch} - disabledStatuses={disabledStatuses} + hiddenStatuses={hiddenStatuses} /> { index: 'index-id', alertId: 'alert-id', }, - disabledStatuses: [], + hiddenStatuses: [], updateCase, }; mount( @@ -73,7 +73,7 @@ describe('AllCasesSelectorModal', () => { expect.objectContaining({ alertData: fullProps.alertData, createCaseNavigation, - disabledStatuses: fullProps.disabledStatuses, + hiddenStatuses: fullProps.hiddenStatuses, isSelectorView: true, userCanCrud: fullProps.userCanCrud, updateCase, diff --git a/x-pack/plugins/cases/public/components/all_cases/selector_modal/index.tsx b/x-pack/plugins/cases/public/components/all_cases/selector_modal/index.tsx index 0a83ef13e8ee6..d476d71d847a0 100644 --- a/x-pack/plugins/cases/public/components/all_cases/selector_modal/index.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/selector_modal/index.tsx @@ -8,7 +8,12 @@ import React, { useState, useCallback } from 'react'; import { EuiModal, EuiModalBody, EuiModalHeader, EuiModalHeaderTitle } from '@elastic/eui'; import styled from 'styled-components'; -import { Case, CaseStatuses, CommentRequestAlertType, SubCase } from '../../../../common'; +import { + Case, + CaseStatusWithAllStatus, + CommentRequestAlertType, + SubCase, +} from '../../../../common'; import { CasesNavigation } from '../../links'; import * as i18n from '../../../common/translations'; import { AllCasesGeneric } from '../all_cases_generic'; @@ -16,7 +21,7 @@ import { AllCasesGeneric } from '../all_cases_generic'; export interface AllCasesSelectorModalProps { alertData?: Omit; createCaseNavigation: CasesNavigation; - disabledStatuses?: CaseStatuses[]; + hiddenStatuses?: CaseStatusWithAllStatus[]; onRowClick: (theCase?: Case | SubCase) => void; updateCase?: (newCase: Case) => void; userCanCrud: boolean; @@ -32,7 +37,7 @@ const Modal = styled(EuiModal)` export const AllCasesSelectorModal: React.FC = ({ alertData, createCaseNavigation, - disabledStatuses, + hiddenStatuses, onRowClick, updateCase, userCanCrud, @@ -55,7 +60,7 @@ export const AllCasesSelectorModal: React.FC = ({ { }); }); - it('should disabled selected statuses', () => { + it('should not render hidden statuses', () => { const wrapper = mount( - + ); wrapper.find('button[data-test-subj="case-status-filter"]').simulate('click'); - expect( - wrapper.find('button[data-test-subj="case-status-filter-open"]').prop('disabled') - ).toBeFalsy(); + expect(wrapper.find(`[data-test-subj="case-status-filter-all"]`).exists()).toBeFalsy(); + expect(wrapper.find('button[data-test-subj="case-status-filter-closed"]').exists()).toBeFalsy(); - expect( - wrapper.find('button[data-test-subj="case-status-filter-in-progress"]').prop('disabled') - ).toBeFalsy(); + expect(wrapper.find('button[data-test-subj="case-status-filter-open"]').exists()).toBeTruthy(); expect( - wrapper.find('button[data-test-subj="case-status-filter-closed"]').prop('disabled') + wrapper.find('button[data-test-subj="case-status-filter-in-progress"]').exists() ).toBeTruthy(); }); }); diff --git a/x-pack/plugins/cases/public/components/all_cases/status_filter.tsx b/x-pack/plugins/cases/public/components/all_cases/status_filter.tsx index 9fb00933f0307..7d02bf2c441d3 100644 --- a/x-pack/plugins/cases/public/components/all_cases/status_filter.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/status_filter.tsx @@ -14,32 +14,30 @@ interface Props { stats: Record; selectedStatus: CaseStatusWithAllStatus; onStatusChanged: (status: CaseStatusWithAllStatus) => void; - disabledStatuses?: CaseStatusWithAllStatus[]; + hiddenStatuses?: CaseStatusWithAllStatus[]; } const StatusFilterComponent: React.FC = ({ stats, selectedStatus, onStatusChanged, - disabledStatuses = [], + hiddenStatuses = [], }) => { const caseStatuses = Object.keys(statuses) as CaseStatusWithAllStatus[]; - const options: Array> = [ - StatusAll, - ...caseStatuses, - ].map((status) => ({ - value: status, - inputDisplay: ( - - - - - {status !== StatusAll && {` (${stats[status]})`}} - - ), - disabled: disabledStatuses.includes(status), - 'data-test-subj': `case-status-filter-${status}`, - })); + const options: Array> = [StatusAll, ...caseStatuses] + .filter((status) => !hiddenStatuses.includes(status)) + .map((status) => ({ + value: status, + inputDisplay: ( + + + + + {status !== StatusAll && {` (${stats[status]})`}} + + ), + 'data-test-subj': `case-status-filter-${status}`, + })); return ( ) => void; initial: FilterOptions; setFilterRefetch: (val: () => void) => void; - disabledStatuses?: CaseStatuses[]; + hiddenStatuses?: CaseStatusWithAllStatus[]; } // Fix the width of the status dropdown to prevent hiding long text items @@ -56,7 +56,7 @@ const CasesTableFiltersComponent = ({ onFilterChanged, initial = defaultInitial, setFilterRefetch, - disabledStatuses, + hiddenStatuses, }: CasesTableFiltersProps) => { const [selectedReporters, setSelectedReporters] = useState( initial.reporters.map((r) => r.full_name ?? r.username ?? '') @@ -161,7 +161,7 @@ const CasesTableFiltersComponent = ({ selectedStatus={initial.status} onStatusChanged={onStatusChanged} stats={stats} - disabledStatuses={disabledStatuses} + hiddenStatuses={hiddenStatuses} /> diff --git a/x-pack/plugins/security_solution/public/cases/components/timeline_actions/add_to_case_action.tsx b/x-pack/plugins/security_solution/public/cases/components/timeline_actions/add_to_case_action.tsx index 1682b4b7e7dee..7379f5d6fd5dc 100644 --- a/x-pack/plugins/security_solution/public/cases/components/timeline_actions/add_to_case_action.tsx +++ b/x-pack/plugins/security_solution/public/cases/components/timeline_actions/add_to_case_action.tsx @@ -16,7 +16,7 @@ import { EuiToolTip, } from '@elastic/eui'; -import { Case, CaseStatuses } from '../../../../../cases/common'; +import { Case, CaseStatuses, StatusAll } from '../../../../../cases/common'; import { APP_ID } from '../../../../common/constants'; import { Ecs } from '../../../../common/ecs'; import { SecurityPageName } from '../../../app/types'; @@ -240,7 +240,7 @@ const AddToCaseActionComponent: React.FC = ({ href: formatUrl(getCreateCaseUrl()), onClick: goToCreateCase, }, - disabledStatuses: [CaseStatuses.closed], + hiddenStatuses: [CaseStatuses.closed, StatusAll], onRowClick: onCaseClicked, updateCase: onCaseSuccess, userCanCrud: userPermissions?.crud ?? false, From 8a344fa385b5d693bcaed321a00378b993389613 Mon Sep 17 00:00:00 2001 From: Yuliia Naumenko Date: Fri, 14 May 2021 07:43:09 -0700 Subject: [PATCH 100/144] [Alerting] Enabling import of rules and connectors (#99857) * [Alerting] Enabling import of rules and connectors * changed export to set pending executionStatus for rule * fixed tests * added docs * Apply suggestions from code review Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> * fixed docs * fixed docs * Update x-pack/plugins/alerting/server/saved_objects/get_import_warnings.ts Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> * fixed test * fixed test Co-authored-by: gchaps <33642766+gchaps@users.noreply.github.com> --- docs/management/action-types.asciidoc | 7 ++ .../connectors-with-missing-secrets.png | Bin 0 -> 150439 bytes .../images/coonectors-import-banner.png | Bin 0 -> 62903 bytes .../alerting/images/rules-imported-banner.png | Bin 0 -> 78546 bytes docs/user/alerting/rule-management.asciidoc | 3 + .../saved_objects/get_import_warnings.test.ts | 2 +- .../saved_objects/get_import_warnings.ts | 7 +- .../actions/server/saved_objects/index.ts | 4 +- .../server/alerts_client/alerts_client.ts | 7 +- .../server/lib/alert_execution_status.ts | 7 ++ .../saved_objects/get_import_warnings.test.ts | 87 ++++++++++++++++++ .../saved_objects/get_import_warnings.ts | 37 ++++++++ .../alerting/server/saved_objects/index.ts | 11 ++- .../transform_rule_for_export.test.ts | 13 ++- .../transform_rule_for_export.ts | 10 +- .../connector_add_inline.tsx | 4 +- 16 files changed, 182 insertions(+), 17 deletions(-) create mode 100644 docs/management/images/connectors-with-missing-secrets.png create mode 100644 docs/management/images/coonectors-import-banner.png create mode 100644 docs/user/alerting/images/rules-imported-banner.png create mode 100644 x-pack/plugins/alerting/server/saved_objects/get_import_warnings.test.ts create mode 100644 x-pack/plugins/alerting/server/saved_objects/get_import_warnings.ts diff --git a/docs/management/action-types.asciidoc b/docs/management/action-types.asciidoc index 6cdb1dbfa712e..ec5677bd04a6e 100644 --- a/docs/management/action-types.asciidoc +++ b/docs/management/action-types.asciidoc @@ -111,6 +111,13 @@ image::images/connector-select-type.png[Connector select type] === Importing and exporting connectors To import and export rules, use the <>. +After a successful import, the proper banner is displayed: +[role="screenshot"] +image::images/coonectors-import-banner.png[Connectors import banner, width=50%] + +If a connector is missing user sensitive information because of the import, a **Fix** button appears in the list view. +[role="screenshot"] +image::images/connectors-with-missing-secrets.png[Connectors with missing secrets] [float] [[create-connectors]] diff --git a/docs/management/images/connectors-with-missing-secrets.png b/docs/management/images/connectors-with-missing-secrets.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc902d4a4768748eaf5784c90e133f01599f09b GIT binary patch literal 150439 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≪OO$ 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

    T4vKTy} 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 FKL9D2;UoY6 literal 0 HcmV?d00001 diff --git a/docs/user/alerting/rule-management.asciidoc b/docs/user/alerting/rule-management.asciidoc index b15c46254b770..e47858f58cd1a 100644 --- a/docs/user/alerting/rule-management.asciidoc +++ b/docs/user/alerting/rule-management.asciidoc @@ -62,6 +62,9 @@ image:images/bulk-mute-disable.png[The Manage rules button lets you mute/unmute, === Importing and exporting rules To import and export rules, use the <>. +After the succesful import the proper banner will be displayed: +[role="screenshot"] +image::images/rules-imported-banner.png[Rules import banner, width=50%] [float] === Required permissions diff --git a/x-pack/plugins/actions/server/saved_objects/get_import_warnings.test.ts b/x-pack/plugins/actions/server/saved_objects/get_import_warnings.test.ts index 7f635d6ec13a6..de4ccf5016379 100644 --- a/x-pack/plugins/actions/server/saved_objects/get_import_warnings.test.ts +++ b/x-pack/plugins/actions/server/saved_objects/get_import_warnings.test.ts @@ -48,7 +48,7 @@ describe('getImportWarnings', () => { const warnings = getImportWarnings( (savedObjectConnectors as unknown) as Array> ); - expect(warnings[0].message).toBe('1 connector has secrets that require updates.'); + expect(warnings[0].message).toBe('1 connector has sensitive information that require updates.'); }); it('does not return the warning message if all of the imported connectors do not have secrets to update', () => { diff --git a/x-pack/plugins/actions/server/saved_objects/get_import_warnings.ts b/x-pack/plugins/actions/server/saved_objects/get_import_warnings.ts index 3be0a53e27c00..941d6d0fd6aaa 100644 --- a/x-pack/plugins/actions/server/saved_objects/get_import_warnings.ts +++ b/x-pack/plugins/actions/server/saved_objects/get_import_warnings.ts @@ -20,7 +20,7 @@ export function getImportWarnings( } const message = i18n.translate('xpack.actions.savedObjects.onImportText', { defaultMessage: - '{connectorsWithSecretsLength} {connectorsWithSecretsLength, plural, one {connector has} other {connectors have}} secrets that require updates.', + '{connectorsWithSecretsLength} {connectorsWithSecretsLength, plural, one {connector has} other {connectors have}} sensitive information that require updates.', values: { connectorsWithSecretsLength: connectorsWithSecrets.length, }, @@ -35,4 +35,7 @@ export function getImportWarnings( ]; } -export const GO_TO_CONNECTORS_BUTTON_LABLE = 'Go to connectors'; +export const GO_TO_CONNECTORS_BUTTON_LABLE = i18n.translate( + 'xpack.actions.savedObjects.goToConnectorsButtonText', + { defaultMessage: 'Go to connectors' } +); diff --git a/x-pack/plugins/actions/server/saved_objects/index.ts b/x-pack/plugins/actions/server/saved_objects/index.ts index 761d475f797d1..9360bc919a2d5 100644 --- a/x-pack/plugins/actions/server/saved_objects/index.ts +++ b/x-pack/plugins/actions/server/saved_objects/index.ts @@ -36,8 +36,8 @@ export function setupSavedObjects( management: { defaultSearchField: 'name', importableAndExportable: true, - getTitle(obj) { - return `Connector: [${obj.attributes.name}]`; + getTitle(savedObject: SavedObject) { + return `Connector: [${savedObject.attributes.name}]`; }, onExport( context: SavedObjectsExportTransformContext, diff --git a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts index 27e3aa1df61f5..21eff9d796235 100644 --- a/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts +++ b/x-pack/plugins/alerting/server/alerts_client/alerts_client.ts @@ -59,6 +59,7 @@ import { markApiKeyForInvalidation } from '../invalidate_pending_api_keys/mark_a import { alertAuditEvent, AlertAuditAction } from './audit_events'; import { nodeBuilder } from '../../../../../src/plugins/data/common'; import { mapSortField } from './lib'; +import { getAlertExecutionStatusPending } from '../lib/alert_execution_status'; export interface RegistryAlertTypeWithAuth extends RegistryAlertType { authorizedConsumers: string[]; @@ -288,11 +289,7 @@ export class AlertsClient { muteAll: false, mutedInstanceIds: [], notifyWhen, - executionStatus: { - status: 'pending', - lastExecutionDate: new Date().toISOString(), - error: null, - }, + executionStatus: getAlertExecutionStatusPending(new Date().toISOString()), }; this.auditLogger?.log( diff --git a/x-pack/plugins/alerting/server/lib/alert_execution_status.ts b/x-pack/plugins/alerting/server/lib/alert_execution_status.ts index 7fad08a3cd29e..47dfc659307a2 100644 --- a/x-pack/plugins/alerting/server/lib/alert_execution_status.ts +++ b/x-pack/plugins/alerting/server/lib/alert_execution_status.ts @@ -9,6 +9,7 @@ import { Logger } from 'src/core/server'; import { AlertTaskState, AlertExecutionStatus, RawAlertExecutionStatus } from '../types'; import { getReasonFromError } from './error_with_reason'; import { getEsErrorMessage } from './errors'; +import { AlertExecutionStatuses } from '../../common'; export function executionStatusFromState(state: AlertTaskState): AlertExecutionStatus { const instanceIds = Object.keys(state.alertInstances ?? {}); @@ -66,3 +67,9 @@ export function alertExecutionStatusFromRaw( return { lastExecutionDate: parsedDate, status }; } } + +export const getAlertExecutionStatusPending = (lastExecutionDate: string) => ({ + status: 'pending' as AlertExecutionStatuses, + lastExecutionDate, + error: null, +}); diff --git a/x-pack/plugins/alerting/server/saved_objects/get_import_warnings.test.ts b/x-pack/plugins/alerting/server/saved_objects/get_import_warnings.test.ts new file mode 100644 index 0000000000000..d76e151b8d47b --- /dev/null +++ b/x-pack/plugins/alerting/server/saved_objects/get_import_warnings.test.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SavedObject } from 'kibana/server'; +import { RawAlert } from '../types'; +import { getImportWarnings } from './get_import_warnings'; + +describe('getImportWarnings', () => { + it('return warning message with total imported rules that have to be enabled', () => { + const savedObjectRules = [ + { + id: '1', + type: 'alert', + attributes: { + enabled: true, + name: 'rule-name1', + tags: ['tag-1', 'tag-2'], + alertTypeId: '123', + consumer: 'alert-consumer', + schedule: { interval: '1m' }, + actions: [], + params: {}, + createdBy: 'me', + updatedBy: 'me', + apiKey: '4tndskbuhewotw4klrhgjewrt9u', + apiKeyOwner: 'me', + throttle: null, + notifyWhen: 'onActionGroupChange', + muteAll: false, + mutedInstanceIds: [], + executionStatus: { + status: 'active', + lastExecutionDate: '2020-08-20T19:23:38Z', + error: null, + }, + scheduledTaskId: '2q5tjbf3q45twer', + }, + references: [], + }, + { + id: '2', + type: 'alert', + attributes: { + enabled: true, + name: 'rule-name2', + tags: [], + alertTypeId: '123', + consumer: 'alert-consumer', + schedule: { interval: '1m' }, + actions: [], + params: {}, + createdBy: 'me', + updatedBy: 'me', + apiKey: '4tndskbuhewotw4klrhgjewrt9u', + apiKeyOwner: 'me', + throttle: null, + notifyWhen: 'onActionGroupChange', + muteAll: false, + mutedInstanceIds: [], + executionStatus: { + status: 'pending', + lastExecutionDate: '2020-08-20T19:23:38Z', + error: null, + }, + scheduledTaskId: '123', + }, + references: [], + }, + ]; + const warnings = getImportWarnings( + (savedObjectRules as unknown) as Array> + ); + expect(warnings[0].message).toBe('2 rules must be enabled after the import.'); + }); + + it('return no warning messages if no rules were imported', () => { + const savedObjectRules = [] as Array>; + const warnings = getImportWarnings( + (savedObjectRules as unknown) as Array> + ); + expect(warnings.length).toBe(0); + }); +}); diff --git a/x-pack/plugins/alerting/server/saved_objects/get_import_warnings.ts b/x-pack/plugins/alerting/server/saved_objects/get_import_warnings.ts new file mode 100644 index 0000000000000..0058cd82c9d83 --- /dev/null +++ b/x-pack/plugins/alerting/server/saved_objects/get_import_warnings.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { SavedObject, SavedObjectsImportWarning } from 'kibana/server'; + +export function getImportWarnings( + rulesSavedObjects: Array> +): SavedObjectsImportWarning[] { + if (rulesSavedObjects.length === 0) { + return []; + } + const message = i18n.translate('xpack.alerting.savedObjects.onImportText', { + defaultMessage: + '{rulesSavedObjectsLength} {rulesSavedObjectsLength, plural, one {rule} other {rules}} must be enabled after the import.', + values: { + rulesSavedObjectsLength: rulesSavedObjects.length, + }, + }); + return [ + { + type: 'action_required', + message, + actionPath: '/app/management/insightsAndAlerting/triggersActions/rules', + buttonLabel: GO_TO_RULES_BUTTON_LABLE, + } as SavedObjectsImportWarning, + ]; +} + +export const GO_TO_RULES_BUTTON_LABLE = i18n.translate( + 'xpack.alerting.savedObjects.goToRulesButtonText', + { defaultMessage: 'Go to rules' } +); diff --git a/x-pack/plugins/alerting/server/saved_objects/index.ts b/x-pack/plugins/alerting/server/saved_objects/index.ts index f4a1c0386b54c..6b76fd97dc53b 100644 --- a/x-pack/plugins/alerting/server/saved_objects/index.ts +++ b/x-pack/plugins/alerting/server/saved_objects/index.ts @@ -14,6 +14,8 @@ import mappings from './mappings.json'; import { getMigrations } from './migrations'; import { EncryptedSavedObjectsPluginSetup } from '../../../encrypted_saved_objects/server'; import { transformRulesForExport } from './transform_rule_for_export'; +import { RawAlert } from '../types'; +import { getImportWarnings } from './get_import_warnings'; export { partiallyUpdateAlert } from './partially_update_alert'; export const AlertAttributesExcludedFromAAD = [ @@ -49,8 +51,13 @@ export function setupSavedObjects( mappings: mappings.alert, management: { importableAndExportable: true, - getTitle(obj) { - return `Rule: [${obj.attributes.name}]`; + getTitle(ruleSavedObject: SavedObject) { + return `Rule: [${ruleSavedObject.attributes.name}]`; + }, + onImport(ruleSavedObjects) { + return { + warnings: getImportWarnings(ruleSavedObjects), + }; }, onExport( context: SavedObjectsExportTransformContext, diff --git a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts index bf181e7299220..5997df2895761 100644 --- a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts +++ b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.test.ts @@ -6,7 +6,13 @@ */ import { transformRulesForExport } from './transform_rule_for_export'; - +jest.mock('../lib/alert_execution_status', () => ({ + getAlertExecutionStatusPending: () => ({ + status: 'pending', + lastExecutionDate: '2020-08-20T19:23:38Z', + error: null, + }), +})); describe('transform rule for export', () => { const date = new Date().toISOString(); const mockRules = [ @@ -84,6 +90,11 @@ describe('transform rule for export', () => { apiKey: null, apiKeyOwner: null, scheduledTaskId: null, + executionStatus: { + status: 'pending', + lastExecutionDate: '2020-08-20T19:23:38Z', + error: null, + }, }, })) ); diff --git a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts index c33bbceaf8363..707bd84e948bf 100644 --- a/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts +++ b/x-pack/plugins/alerting/server/saved_objects/transform_rule_for_export.ts @@ -6,13 +6,18 @@ */ import { SavedObject } from 'kibana/server'; +import { getAlertExecutionStatusPending } from '../lib/alert_execution_status'; import { RawAlert } from '../types'; export function transformRulesForExport(rules: SavedObject[]): Array> { - return rules.map((rule) => transformRuleForExport(rule as SavedObject)); + const exportDate = new Date().toISOString(); + return rules.map((rule) => transformRuleForExport(rule as SavedObject, exportDate)); } -function transformRuleForExport(rule: SavedObject): SavedObject { +function transformRuleForExport( + rule: SavedObject, + exportDate: string +): SavedObject { return { ...rule, attributes: { @@ -21,6 +26,7 @@ function transformRuleForExport(rule: SavedObject): SavedObject ); @@ -196,7 +196,7 @@ export const AddConnectorInline = ({ data-test-subj={`alertActionAccordionErrorTooltip`} content={ } From df47ae1e1d91f4a9e8afa112395d69841505e162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yulia=20=C4=8Cech?= <6585477+yuliacech@users.noreply.github.com> Date: Fri, 14 May 2021 16:56:31 +0200 Subject: [PATCH 101/144] Added missing padding to the popover title and footer in 'Test documents' popover (#99921) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../test_pipeline/documents_dropdown/documents_dropdown.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx index 9607cd18f491b..c89c3f2495246 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/test_pipeline/documents_dropdown/documents_dropdown.tsx @@ -109,13 +109,13 @@ export const DocumentsDropdown: FunctionComponent = ({ > {(list) => ( <> - {i18nTexts.popoverTitle} + {i18nTexts.popoverTitle} {list} )} - + Date: Fri, 14 May 2021 12:19:31 -0400 Subject: [PATCH 102/144] [Observability] [Exploratory view] update v7 button styles (#100113) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../series_builder/columns/data_types_col.tsx | 8 ++++++-- .../series_builder/columns/report_types_col.tsx | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/data_types_col.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/data_types_col.tsx index 9d15206db1e62..b64fad51e9778 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/data_types_col.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/data_types_col.tsx @@ -40,7 +40,7 @@ export function DataTypesCol({ seriesId }: { seriesId: string }) { {dataTypes.map(({ id: dataTypeId, label }) => ( - {label} - + ))} @@ -63,3 +63,7 @@ export function DataTypesCol({ seriesId }: { seriesId: string }) { const FlexGroup = styled(EuiFlexGroup)` width: 100%; `; + +const Button = styled(EuiButton)` + will-change: transform; +`; diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/report_types_col.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/report_types_col.tsx index 9c95b3874c242..bd82d1d1bd500 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/report_types_col.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/series_builder/columns/report_types_col.tsx @@ -41,7 +41,7 @@ export function ReportTypesCol({ seriesId, reportTypes }: Props) { {reportTypes.map(({ id: reportType, label }) => ( - {label} - + ))} @@ -84,3 +84,7 @@ export const SELECTED_DATA_TYPE_FOR_REPORT = i18n.translate( const FlexGroup = styled(EuiFlexGroup)` width: 100%; `; + +const Button = styled(EuiButton)` + will-change: transform; +`; From 5edf7e267aecb5b48c90ca3d616c272d194153b5 Mon Sep 17 00:00:00 2001 From: "Christiane (Tina) Heiligers" Date: Fri, 14 May 2021 10:37:16 -0700 Subject: [PATCH 103/144] Adds error from es call to nodes.info to the nodes version compatibility response message (#100005) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- ...gin-core-server.elasticsearchstatusmeta.md | 1 + ...csearchstatusmeta.nodesinforequesterror.md | 11 ++ ...n-core-server.nodesversioncompatibility.md | 1 + ...sioncompatibility.nodesinforequesterror.md | 11 ++ src/core/server/elasticsearch/status.test.ts | 115 +++++++++++++++- src/core/server/elasticsearch/status.ts | 7 +- src/core/server/elasticsearch/types.ts | 1 + .../version_check/ensure_es_version.test.ts | 123 +++++++++++++++++- .../version_check/ensure_es_version.ts | 38 ++++-- src/core/server/server.api.md | 4 + 10 files changed, 295 insertions(+), 17 deletions(-) create mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md index 2398410fa4b84..90aa2f0100d88 100644 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md @@ -16,5 +16,6 @@ export interface ElasticsearchStatusMeta | Property | Type | Description | | --- | --- | --- | | [incompatibleNodes](./kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md) | NodesVersionCompatibility['incompatibleNodes'] | | +| [nodesInfoRequestError](./kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md) | NodesVersionCompatibility['nodesInfoRequestError'] | | | [warningNodes](./kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md) | NodesVersionCompatibility['warningNodes'] | | diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md new file mode 100644 index 0000000000000..1b46078a1a453 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchStatusMeta](./kibana-plugin-core-server.elasticsearchstatusmeta.md) > [nodesInfoRequestError](./kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md) + +## ElasticsearchStatusMeta.nodesInfoRequestError property + +Signature: + +```typescript +nodesInfoRequestError?: NodesVersionCompatibility['nodesInfoRequestError']; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md index 6fcfacc3bc908..cbdac9d5455b0 100644 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md +++ b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md @@ -18,5 +18,6 @@ export interface NodesVersionCompatibility | [isCompatible](./kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md) | boolean | | | [kibanaVersion](./kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md) | string | | | [message](./kibana-plugin-core-server.nodesversioncompatibility.message.md) | string | | +| [nodesInfoRequestError](./kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md) | Error | | | [warningNodes](./kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md) | NodeInfo[] | | diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md new file mode 100644 index 0000000000000..aa9421afed6e8 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [nodesInfoRequestError](./kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md) + +## NodesVersionCompatibility.nodesInfoRequestError property + +Signature: + +```typescript +nodesInfoRequestError?: Error; +``` diff --git a/src/core/server/elasticsearch/status.test.ts b/src/core/server/elasticsearch/status.test.ts index 6f21fc204a1c2..c1f7cf0e35892 100644 --- a/src/core/server/elasticsearch/status.test.ts +++ b/src/core/server/elasticsearch/status.test.ts @@ -54,7 +54,7 @@ describe('calculateStatus', () => { }); }); - it('changes to available with a differemnt message when isCompatible and warningNodes present', async () => { + it('changes to available with a different message when isCompatible and warningNodes present', async () => { expect( await calculateStatus$( of({ @@ -204,4 +204,117 @@ describe('calculateStatus', () => { ] `); }); + + it('emits status updates when node info request error changes', () => { + const nodeCompat$ = new Subject(); + + const statusUpdates: ServiceStatus[] = []; + const subscription = calculateStatus$(nodeCompat$).subscribe((status) => + statusUpdates.push(status) + ); + + nodeCompat$.next({ + isCompatible: false, + kibanaVersion: '1.1.1', + incompatibleNodes: [], + warningNodes: [], + message: 'Unable to retrieve version info. connect ECONNREFUSED', + nodesInfoRequestError: new Error('connect ECONNREFUSED'), + }); + nodeCompat$.next({ + isCompatible: false, + kibanaVersion: '1.1.1', + incompatibleNodes: [], + warningNodes: [], + message: 'Unable to retrieve version info. security_exception', + nodesInfoRequestError: new Error('security_exception'), + }); + + subscription.unsubscribe(); + expect(statusUpdates).toMatchInlineSnapshot(` + Array [ + Object { + "level": unavailable, + "meta": Object { + "incompatibleNodes": Array [], + "warningNodes": Array [], + }, + "summary": "Waiting for Elasticsearch", + }, + Object { + "level": critical, + "meta": Object { + "incompatibleNodes": Array [], + "nodesInfoRequestError": [Error: connect ECONNREFUSED], + "warningNodes": Array [], + }, + "summary": "Unable to retrieve version info. connect ECONNREFUSED", + }, + Object { + "level": critical, + "meta": Object { + "incompatibleNodes": Array [], + "nodesInfoRequestError": [Error: security_exception], + "warningNodes": Array [], + }, + "summary": "Unable to retrieve version info. security_exception", + }, + ] + `); + }); + + it('changes to available when a request error is resolved', () => { + const nodeCompat$ = new Subject(); + + const statusUpdates: ServiceStatus[] = []; + const subscription = calculateStatus$(nodeCompat$).subscribe((status) => + statusUpdates.push(status) + ); + + nodeCompat$.next({ + isCompatible: false, + kibanaVersion: '1.1.1', + incompatibleNodes: [], + warningNodes: [], + message: 'Unable to retrieve version info. security_exception', + nodesInfoRequestError: new Error('security_exception'), + }); + nodeCompat$.next({ + isCompatible: true, + kibanaVersion: '1.1.1', + warningNodes: [], + incompatibleNodes: [], + }); + + subscription.unsubscribe(); + expect(statusUpdates).toMatchInlineSnapshot(` + Array [ + Object { + "level": unavailable, + "meta": Object { + "incompatibleNodes": Array [], + "warningNodes": Array [], + }, + "summary": "Waiting for Elasticsearch", + }, + Object { + "level": critical, + "meta": Object { + "incompatibleNodes": Array [], + "nodesInfoRequestError": [Error: security_exception], + "warningNodes": Array [], + }, + "summary": "Unable to retrieve version info. security_exception", + }, + Object { + "level": available, + "meta": Object { + "incompatibleNodes": Array [], + "warningNodes": Array [], + }, + "summary": "Elasticsearch is available", + }, + ] + `); + }); }); diff --git a/src/core/server/elasticsearch/status.ts b/src/core/server/elasticsearch/status.ts index 68a61b07f498e..23e44b71863f1 100644 --- a/src/core/server/elasticsearch/status.ts +++ b/src/core/server/elasticsearch/status.ts @@ -32,6 +32,7 @@ export const calculateStatus$ = ( message, incompatibleNodes, warningNodes, + nodesInfoRequestError, }): ServiceStatus => { if (!isCompatible) { return { @@ -40,7 +41,11 @@ export const calculateStatus$ = ( // Message should always be present, but this is a safe fallback message ?? `Some Elasticsearch nodes are not compatible with this version of Kibana`, - meta: { warningNodes, incompatibleNodes }, + meta: { + warningNodes, + incompatibleNodes, + ...(nodesInfoRequestError && { nodesInfoRequestError }), + }, }; } else if (warningNodes.length > 0) { return { diff --git a/src/core/server/elasticsearch/types.ts b/src/core/server/elasticsearch/types.ts index 85678c21f03b0..8bbf665cbc096 100644 --- a/src/core/server/elasticsearch/types.ts +++ b/src/core/server/elasticsearch/types.ts @@ -179,6 +179,7 @@ export type InternalElasticsearchServiceStart = ElasticsearchServiceStart; export interface ElasticsearchStatusMeta { warningNodes: NodesVersionCompatibility['warningNodes']; incompatibleNodes: NodesVersionCompatibility['incompatibleNodes']; + nodesInfoRequestError?: NodesVersionCompatibility['nodesInfoRequestError']; } /** diff --git a/src/core/server/elasticsearch/version_check/ensure_es_version.test.ts b/src/core/server/elasticsearch/version_check/ensure_es_version.test.ts index 0e08fd2ddc4c5..70166704679fe 100644 --- a/src/core/server/elasticsearch/version_check/ensure_es_version.test.ts +++ b/src/core/server/elasticsearch/version_check/ensure_es_version.test.ts @@ -19,7 +19,8 @@ const mockLogger = mockLoggerFactory.get('mock logger'); const KIBANA_VERSION = '5.1.0'; const createEsSuccess = elasticsearchClientMock.createSuccessTransportRequestPromise; -const createEsError = elasticsearchClientMock.createErrorTransportRequestPromise; +const createEsErrorReturn = (err: any) => + elasticsearchClientMock.createErrorTransportRequestPromise(err); function createNodes(...versions: string[]): NodesInfo { const nodes = {} as any; @@ -102,6 +103,28 @@ describe('mapNodesVersionCompatibility', () => { `"You're running Kibana 5.1.0 with some different versions of Elasticsearch. Update Kibana or Elasticsearch to the same version to prevent compatibility issues: v5.1.1 @ http_address (ip)"` ); }); + + it('returns isCompatible=false without an extended message when a nodesInfoRequestError is not provided', async () => { + const result = mapNodesVersionCompatibility({ nodes: {} }, KIBANA_VERSION, false); + expect(result.isCompatible).toBe(false); + expect(result.nodesInfoRequestError).toBeUndefined(); + expect(result.message).toMatchInlineSnapshot( + `"Unable to retrieve version information from Elasticsearch nodes."` + ); + }); + + it('returns isCompatible=false with an extended message when a nodesInfoRequestError is present', async () => { + const result = mapNodesVersionCompatibility( + { nodes: {}, nodesInfoRequestError: new Error('connection refused') }, + KIBANA_VERSION, + false + ); + expect(result.isCompatible).toBe(false); + expect(result.nodesInfoRequestError).toBeTruthy(); + expect(result.message).toMatchInlineSnapshot( + `"Unable to retrieve version information from Elasticsearch nodes. connection refused"` + ); + }); }); describe('pollEsNodesVersion', () => { @@ -119,10 +142,10 @@ describe('pollEsNodesVersion', () => { internalClient.nodes.info.mockImplementationOnce(() => createEsSuccess(infos)); }; const nodeInfosErrorOnce = (error: any) => { - internalClient.nodes.info.mockImplementationOnce(() => createEsError(error)); + internalClient.nodes.info.mockImplementationOnce(() => createEsErrorReturn(new Error(error))); }; - it('returns iscCompatible=false and keeps polling when a poll request throws', (done) => { + it('returns isCompatible=false and keeps polling when a poll request throws', (done) => { expect.assertions(3); const expectedCompatibilityResults = [false, false, true]; jest.clearAllMocks(); @@ -148,6 +171,100 @@ describe('pollEsNodesVersion', () => { }); }); + it('returns the error from a failed nodes.info call when a poll request throws', (done) => { + expect.assertions(2); + const expectedCompatibilityResults = [false]; + const expectedMessageResults = [ + 'Unable to retrieve version information from Elasticsearch nodes. mock request error', + ]; + jest.clearAllMocks(); + + nodeInfosErrorOnce('mock request error'); + + pollEsNodesVersion({ + internalClient, + esVersionCheckInterval: 1, + ignoreVersionMismatch: false, + kibanaVersion: KIBANA_VERSION, + log: mockLogger, + }) + .pipe(take(1)) + .subscribe({ + next: (result) => { + expect(result.isCompatible).toBe(expectedCompatibilityResults.shift()); + expect(result.message).toBe(expectedMessageResults.shift()); + }, + complete: done, + error: done, + }); + }); + + it('only emits if the error from a failed nodes.info call changed from the previous poll', (done) => { + expect.assertions(4); + const expectedCompatibilityResults = [false, false]; + const expectedMessageResults = [ + 'Unable to retrieve version information from Elasticsearch nodes. mock request error', + 'Unable to retrieve version information from Elasticsearch nodes. mock request error 2', + ]; + jest.clearAllMocks(); + + nodeInfosErrorOnce('mock request error'); // emit + nodeInfosErrorOnce('mock request error'); // ignore, same error message + nodeInfosErrorOnce('mock request error 2'); // emit + + pollEsNodesVersion({ + internalClient, + esVersionCheckInterval: 1, + ignoreVersionMismatch: false, + kibanaVersion: KIBANA_VERSION, + log: mockLogger, + }) + .pipe(take(2)) + .subscribe({ + next: (result) => { + expect(result.message).toBe(expectedMessageResults.shift()); + expect(result.isCompatible).toBe(expectedCompatibilityResults.shift()); + }, + complete: done, + error: done, + }); + }); + + it('returns isCompatible=false and keeps polling when a poll request throws, only responding again if the error message has changed', (done) => { + expect.assertions(8); + const expectedCompatibilityResults = [false, false, true, false]; + const expectedMessageResults = [ + 'This version of Kibana (v5.1.0) is incompatible with the following Elasticsearch nodes in your cluster: v5.0.0 @ http_address (ip)', + 'Unable to retrieve version information from Elasticsearch nodes. mock request error', + "You're running Kibana 5.1.0 with some different versions of Elasticsearch. Update Kibana or Elasticsearch to the same version to prevent compatibility issues: v5.2.0 @ http_address (ip), v5.1.1-Beta1 @ http_address (ip)", + 'Unable to retrieve version information from Elasticsearch nodes. mock request error', + ]; + jest.clearAllMocks(); + + nodeInfosSuccessOnce(createNodes('5.1.0', '5.2.0', '5.0.0')); // emit + nodeInfosErrorOnce('mock request error'); // emit + nodeInfosErrorOnce('mock request error'); // ignore + nodeInfosSuccessOnce(createNodes('5.1.0', '5.2.0', '5.1.1-Beta1')); // emit + nodeInfosErrorOnce('mock request error'); // emit + + pollEsNodesVersion({ + internalClient, + esVersionCheckInterval: 1, + ignoreVersionMismatch: false, + kibanaVersion: KIBANA_VERSION, + log: mockLogger, + }) + .pipe(take(4)) + .subscribe({ + next: (result) => { + expect(result.isCompatible).toBe(expectedCompatibilityResults.shift()); + expect(result.message).toBe(expectedMessageResults.shift()); + }, + complete: done, + error: done, + }); + }); + it('returns compatibility results', (done) => { expect.assertions(1); const nodes = createNodes('5.1.0', '5.2.0', '5.0.0'); diff --git a/src/core/server/elasticsearch/version_check/ensure_es_version.ts b/src/core/server/elasticsearch/version_check/ensure_es_version.ts index fb7ef0583e4a4..43cd52f1b5721 100644 --- a/src/core/server/elasticsearch/version_check/ensure_es_version.ts +++ b/src/core/server/elasticsearch/version_check/ensure_es_version.ts @@ -49,6 +49,7 @@ export interface NodesVersionCompatibility { incompatibleNodes: NodeInfo[]; warningNodes: NodeInfo[]; kibanaVersion: string; + nodesInfoRequestError?: Error; } function getHumanizedNodeName(node: NodeInfo) { @@ -57,22 +58,28 @@ function getHumanizedNodeName(node: NodeInfo) { } export function mapNodesVersionCompatibility( - nodesInfo: NodesInfo, + nodesInfoResponse: NodesInfo & { nodesInfoRequestError?: Error }, kibanaVersion: string, ignoreVersionMismatch: boolean ): NodesVersionCompatibility { - if (Object.keys(nodesInfo.nodes ?? {}).length === 0) { + if (Object.keys(nodesInfoResponse.nodes ?? {}).length === 0) { + // Note: If the a nodesInfoRequestError is present, the message contains the nodesInfoRequestError.message as a suffix + let message = `Unable to retrieve version information from Elasticsearch nodes.`; + if (nodesInfoResponse.nodesInfoRequestError) { + message = message + ` ${nodesInfoResponse.nodesInfoRequestError.message}`; + } return { isCompatible: false, - message: 'Unable to retrieve version information from Elasticsearch nodes.', + message, incompatibleNodes: [], warningNodes: [], kibanaVersion, + nodesInfoRequestError: nodesInfoResponse.nodesInfoRequestError, }; } - const nodes = Object.keys(nodesInfo.nodes) + const nodes = Object.keys(nodesInfoResponse.nodes) .sort() // Sorting ensures a stable node ordering for comparison - .map((key) => nodesInfo.nodes[key]) + .map((key) => nodesInfoResponse.nodes[key]) .map((node) => Object.assign({}, node, { name: getHumanizedNodeName(node) })); // Aggregate incompatible ES nodes. @@ -112,7 +119,13 @@ export function mapNodesVersionCompatibility( kibanaVersion, }; } - +// Returns true if NodesVersionCompatibility nodesInfoRequestError is the same +function compareNodesInfoErrorMessages( + prev: NodesVersionCompatibility, + curr: NodesVersionCompatibility +): boolean { + return prev.nodesInfoRequestError?.message === curr.nodesInfoRequestError?.message; +} // Returns true if two NodesVersionCompatibility entries match function compareNodes(prev: NodesVersionCompatibility, curr: NodesVersionCompatibility) { const nodesEqual = (n: NodeInfo, m: NodeInfo) => n.ip === m.ip && n.version === m.version; @@ -121,7 +134,8 @@ function compareNodes(prev: NodesVersionCompatibility, curr: NodesVersionCompati curr.incompatibleNodes.length === prev.incompatibleNodes.length && curr.warningNodes.length === prev.warningNodes.length && curr.incompatibleNodes.every((node, i) => nodesEqual(node, prev.incompatibleNodes[i])) && - curr.warningNodes.every((node, i) => nodesEqual(node, prev.warningNodes[i])) + curr.warningNodes.every((node, i) => nodesEqual(node, prev.warningNodes[i])) && + compareNodesInfoErrorMessages(curr, prev) ); } @@ -141,14 +155,14 @@ export const pollEsNodesVersion = ({ }) ).pipe( map(({ body }) => body), - catchError((_err) => { - return of({ nodes: {} }); + catchError((nodesInfoRequestError) => { + return of({ nodes: {}, nodesInfoRequestError }); }) ); }), - map((nodesInfo: NodesInfo) => - mapNodesVersionCompatibility(nodesInfo, kibanaVersion, ignoreVersionMismatch) + map((nodesInfoResponse: NodesInfo & { nodesInfoRequestError?: Error }) => + mapNodesVersionCompatibility(nodesInfoResponse, kibanaVersion, ignoreVersionMismatch) ), - distinctUntilChanged(compareNodes) // Only emit if there are new nodes or versions + distinctUntilChanged(compareNodes) // Only emit if there are new nodes or versions or if we return an error and that error changes ); }; diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 4c12ca53b9098..f4c70d718bc87 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -976,6 +976,8 @@ export interface ElasticsearchStatusMeta { // (undocumented) incompatibleNodes: NodesVersionCompatibility['incompatibleNodes']; // (undocumented) + nodesInfoRequestError?: NodesVersionCompatibility['nodesInfoRequestError']; + // (undocumented) warningNodes: NodesVersionCompatibility['warningNodes']; } @@ -1727,6 +1729,8 @@ export interface NodesVersionCompatibility { // (undocumented) message?: string; // (undocumented) + nodesInfoRequestError?: Error; + // (undocumented) warningNodes: NodeInfo[]; } From 2f3e175417994406e6215d3f9ff80e91f656d01c Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Fri, 14 May 2021 12:57:34 -0500 Subject: [PATCH 104/144] [Metrics UI] Replace date_histogram with date_range aggregation in threshold alert (#100004) * [Metrics UI] Replace date_histogram with date_range aggregation in threshold alert * Remove console.log * Fix rate aggregation and offset --- .../metric_threshold/lib/evaluate_alert.ts | 11 +++-- .../metric_threshold/lib/metric_query.ts | 46 +++++++++++++------ .../alerting/metric_threshold/test_mocks.ts | 2 +- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/evaluate_alert.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/evaluate_alert.ts index 87150aa134837..144ee6505c593 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/evaluate_alert.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/evaluate_alert.ts @@ -25,6 +25,7 @@ interface Aggregation { buckets: Array<{ aggregatedValue: { value: number; values?: Array<{ key: number; value: number }> }; doc_count: number; + to_as_string: string; key_as_string: string; }>; }; @@ -60,6 +61,7 @@ export const evaluateAlert = { if (!t || !c) return [false]; @@ -179,18 +181,21 @@ const getValuesFromAggregations = ( const { buckets } = aggregations.aggregatedIntervals; if (!buckets.length) return null; // No Data state if (aggType === Aggregators.COUNT) { - return buckets.map((bucket) => ({ key: bucket.key_as_string, value: bucket.doc_count })); + return buckets.map((bucket) => ({ + key: bucket.to_as_string, + value: bucket.doc_count, + })); } if (aggType === Aggregators.P95 || aggType === Aggregators.P99) { return buckets.map((bucket) => { const values = bucket.aggregatedValue?.values || []; const firstValue = first(values); if (!firstValue) return null; - return { key: bucket.key_as_string, value: firstValue.value }; + return { key: bucket.to_as_string, value: firstValue.value }; }); } return buckets.map((bucket) => ({ - key: bucket.key_as_string, + key: bucket.key_as_string ?? bucket.to_as_string, value: bucket.aggregatedValue?.value ?? null, })); } catch (e) { diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts index 42ba918694482..0e495c08cc9fd 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/lib/metric_query.ts @@ -37,11 +37,12 @@ export const getElasticsearchMetricQuery = ( } const interval = `${timeSize}${timeUnit}`; const intervalAsSeconds = getIntervalInSeconds(interval); + const intervalAsMS = intervalAsSeconds * 1000; const to = roundTimestamp(timeframe ? timeframe.end : Date.now(), timeUnit); // We need enough data for 5 buckets worth of data. We also need // to convert the intervalAsSeconds to milliseconds. - const minimumFrom = to - intervalAsSeconds * 1000 * MINIMUM_BUCKETS; + const minimumFrom = to - intervalAsMS * MINIMUM_BUCKETS; const from = roundTimestamp( timeframe && timeframe.start <= minimumFrom ? timeframe.start : minimumFrom, @@ -49,6 +50,7 @@ export const getElasticsearchMetricQuery = ( ); const offset = calculateDateHistogramOffset({ from, to, interval, field: timefield }); + const offsetInMS = parseInt(offset, 10) * 1000; const aggregations = aggType === Aggregators.COUNT @@ -65,20 +67,34 @@ export const getElasticsearchMetricQuery = ( }, }; - const baseAggs = { - aggregatedIntervals: { - date_histogram: { - field: timefield, - fixed_interval: interval, - offset, - extended_bounds: { - min: from, - max: to, - }, - }, - aggregations, - }, - }; + const baseAggs = + aggType === Aggregators.RATE + ? { + aggregatedIntervals: { + date_histogram: { + field: timefield, + fixed_interval: interval, + offset, + extended_bounds: { + min: from, + max: to, + }, + }, + aggregations, + }, + } + : { + aggregatedIntervals: { + date_range: { + field: timefield, + ranges: Array.from(Array(Math.floor((to - from) / intervalAsMS)), (_, i) => ({ + from: from + intervalAsMS * i + offsetInMS, + to: from + intervalAsMS * (i + 1) + offsetInMS, + })), + }, + aggregations, + }, + }; const aggs = groupBy ? { diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/test_mocks.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/test_mocks.ts index 2d4f2b16c78a4..47da539afea19 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/test_mocks.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/test_mocks.ts @@ -13,7 +13,7 @@ const bucketsA = [ { doc_count: 3, aggregatedValue: { value: 1.0, values: [{ key: 95.0, value: 1.0 }] }, - key_as_string: new Date(1577858400000).toISOString(), + to_as_string: new Date(1577858400000).toISOString(), }, ]; From 2ba09e446fe6b1f902cb51ea22fdf1d461c426ed Mon Sep 17 00:00:00 2001 From: Michail Yasonik Date: Fri, 14 May 2021 13:59:33 -0400 Subject: [PATCH 105/144] [Docs] fixing KibanaPageTemplate docs (#100104) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- dev_docs/building_blocks.mdx | 2 +- dev_docs/tutorials/kibana_page_template.mdx | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dev_docs/building_blocks.mdx b/dev_docs/building_blocks.mdx index 95851ea66b8cb..327492a20d5b8 100644 --- a/dev_docs/building_blocks.mdx +++ b/dev_docs/building_blocks.mdx @@ -74,7 +74,7 @@ Check out the Map Embeddable if you wish to embed a map in your application. All Kibana pages should use KibanaPageTemplate to setup their pages. It's a thin wrapper around [EuiPageTemplate](https://elastic.github.io/eui/#/layout/page) that makes setting up common types of Kibana pages quicker and easier while also adhering to any Kibana-specific requirements. -Check out for more implementation guidance. +Check out for more implementation guidance. **Github labels**: `EUI` diff --git a/dev_docs/tutorials/kibana_page_template.mdx b/dev_docs/tutorials/kibana_page_template.mdx index ec78fa49aa231..aa38890a8ac9e 100644 --- a/dev_docs/tutorials/kibana_page_template.mdx +++ b/dev_docs/tutorials/kibana_page_template.mdx @@ -1,13 +1,13 @@ --- -id: kibDevDocsKBLTutorial -slug: /kibana-dev-docs/tutorials/kibana-page-layout -title: KibanaPageLayout component +id: kibDevDocsKPTTutorial +slug: /kibana-dev-docs/tutorials/kibana-page-template +title: KibanaPageTemplate component summary: Learn how to create pages in Kibana date: 2021-03-20 tags: ['kibana', 'dev', 'ui', 'tutorials'] --- -`KibanaPageLayout` is a thin wrapper around [EuiPageTemplate](https://elastic.github.io/eui/#/layout/page) that makes setting up common types of Kibana pages quicker and easier while also adhering to any Kibana-specific requirements and patterns. +`KibanaPageTemplate` is a thin wrapper around [EuiPageTemplate](https://elastic.github.io/eui/#/layout/page) that makes setting up common types of Kibana pages quicker and easier while also adhering to any Kibana-specific requirements and patterns. Refer to EUI's documentation on [EuiPageTemplate](https://elastic.github.io/eui/#/layout/page) for constructing page layouts. @@ -18,7 +18,7 @@ Use the `isEmptyState` prop for when there is no page content to show. For examp The default empty state uses any `pageHeader` info provided to populate an [`EuiEmptyPrompt`](https://elastic.github.io/eui/#/display/empty-prompt) and uses the `centeredBody` template type. ```tsx - + No data

    Hox2uv%egS}=ZPEH#br7((^Ko0m8nvm36Xhy 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%0AD!#%!i%1xRDTpX4`IGKxV3nMUKp>Uc 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∋c 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�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

    FRTYN2-Pkmxq?s=N&2XGMgkMh1!G5~MS9Vg|0 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 $F7`UdZEmRtIw0ZE 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 GI(z*1V7_^ty9aJ)BU{dr%Ih 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 AQ~&?~ literal 70103 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ༀ+*VMmIv$;ob{`L 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

    } body="You have no data. Would you like some of ours?" @@ -55,7 +55,7 @@ You can also provide a custom empty prompt to replace the pre-built one. You'll , ]} /> - + ``` ![Screenshot of demo custom empty state code. Shows the Kibana navigation bars and a centered empty state with the a level 1 heading "No data", body text "You have no data. Would you like some of ours?", and a button that says "Get sample data".](../assets/kibana_custom_empty_state.png) @@ -65,7 +65,7 @@ You can also provide a custom empty prompt to replace the pre-built one. You'll When passing both a `pageHeader` configuration and `isEmptyState`, the component will render the proper template (`centeredContent`). Be sure to reduce the heading level within your child empty prompt to `

    `. ```tsx -, ]} /> - + ``` ![Screenshot of demo custom empty state code with a page header. Shows the Kibana navigation bars, a level 1 heading "Dashboards", and a centered empty state with the a level 2 heading "No data", body text "You have no data. Would you like some of ours?", and a button that says "Get sample data".](../assets/kibana_header_and_empty_state.png) From 46747626576db235357204f6b98628567afbc9cb Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Fri, 14 May 2021 14:10:18 -0400 Subject: [PATCH 106/144] [APM][RUM] adjust data types for uiFilters and range in APM requests (#99257) * update has_rum_data api query types Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/apm/server/lib/rum_client/has_rum_data.ts | 6 +++++- x-pack/plugins/apm/server/routes/rum_client.ts | 7 ++++++- x-pack/plugins/observability/server/utils/queries.ts | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/apm/server/lib/rum_client/has_rum_data.ts b/x-pack/plugins/apm/server/lib/rum_client/has_rum_data.ts index 8de2e4e1cca42..87136fc0538a6 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/has_rum_data.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/has_rum_data.ts @@ -14,7 +14,11 @@ import { ProcessorEvent } from '../../../common/processor_event'; import { rangeQuery } from '../../../server/utils/queries'; import { TRANSACTION_PAGE_LOAD } from '../../../common/transaction_types'; -export async function hasRumData({ setup }: { setup: Setup & SetupTimeRange }) { +export async function hasRumData({ + setup, +}: { + setup: Setup & Partial; +}) { try { const { start, end } = setup; diff --git a/x-pack/plugins/apm/server/routes/rum_client.ts b/x-pack/plugins/apm/server/routes/rum_client.ts index c723f2c266ca9..bf58c7fcf39b2 100644 --- a/x-pack/plugins/apm/server/routes/rum_client.ts +++ b/x-pack/plugins/apm/server/routes/rum_client.ts @@ -7,6 +7,7 @@ import * as t from 'io-ts'; import { jsonRt } from '@kbn/io-ts-utils'; +import { isoToEpochRt } from '@kbn/io-ts-utils'; import { LocalUIFilterName } from '../../common/ui_filter'; import { Setup, @@ -264,7 +265,11 @@ const rumJSErrors = createApmServerRoute({ const rumHasDataRoute = createApmServerRoute({ endpoint: 'GET /api/apm/observability_overview/has_rum_data', params: t.partial({ - query: t.intersection([uiFiltersRt, rangeRt]), + query: t.partial({ + uiFilters: t.string, + start: isoToEpochRt, + end: isoToEpochRt, + }), }), options: { tags: ['access:apm'] }, handler: async (resources) => { diff --git a/x-pack/plugins/observability/server/utils/queries.ts b/x-pack/plugins/observability/server/utils/queries.ts index 584719532ddee..9e1c110e77587 100644 --- a/x-pack/plugins/observability/server/utils/queries.ts +++ b/x-pack/plugins/observability/server/utils/queries.ts @@ -8,7 +8,7 @@ import { QueryContainer } from '@elastic/elasticsearch/api/types'; import { esKuery } from '../../../../../src/plugins/data/server'; -export function rangeQuery(start: number, end: number, field = '@timestamp'): QueryContainer[] { +export function rangeQuery(start?: number, end?: number, field = '@timestamp'): QueryContainer[] { return [ { range: { From 25cad22b3d2e9405da14ca04aa3177bbe87454ec Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Fri, 14 May 2021 14:33:46 -0400 Subject: [PATCH 107/144] [Uptime] Fix overview flaky tests (#99781) * add retry logic and add describe.only to prepare for flaky test runner Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- test/functional/page_objects/time_picker.ts | 5 +- .../test/functional/apps/uptime/overview.ts | 57 +++++++++++-------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/test/functional/page_objects/time_picker.ts b/test/functional/page_objects/time_picker.ts index e52bb41e14c15..cfe250831e06c 100644 --- a/test/functional/page_objects/time_picker.ts +++ b/test/functional/page_objects/time_picker.ts @@ -26,6 +26,7 @@ export function TimePickerProvider({ getService, getPageObjects }: FtrProviderCo const log = getService('log'); const find = getService('find'); const browser = getService('browser'); + const retry = getService('retry'); const testSubjects = getService('testSubjects'); const { header } = getPageObjects(['header']); const kibanaServer = getService('kibanaServer'); @@ -68,7 +69,9 @@ export function TimePickerProvider({ getService, getPageObjects }: FtrProviderCo } private async getTimePickerPanel() { - return await find.byCssSelector('div.euiPopover__panel-isOpen'); + return await retry.try(async () => { + return await find.byCssSelector('div.euiPopover__panel-isOpen'); + }); } private async waitPanelIsGone(panelElement: WebElementWrapper) { diff --git a/x-pack/test/functional/apps/uptime/overview.ts b/x-pack/test/functional/apps/uptime/overview.ts index eefb516eeb8f7..1e52accfde1a3 100644 --- a/x-pack/test/functional/apps/uptime/overview.ts +++ b/x-pack/test/functional/apps/uptime/overview.ts @@ -26,6 +26,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { beforeEach(async () => { await uptime.goToRoot(); await uptime.setDateRange(DEFAULT_DATE_START, DEFAULT_DATE_END); + await uptime.resetFilters(); }); @@ -59,40 +60,46 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('pagination is cleared when filter criteria changes', async () => { await uptime.changePage('next'); - await uptime.pageHasExpectedIds([ - '0010-down', - '0011-up', - '0012-up', - '0013-up', - '0014-up', - '0015-intermittent', - '0016-up', - '0017-up', - '0018-up', - '0019-up', - ]); + await retry.try(async () => { + await uptime.pageHasExpectedIds([ + '0010-down', + '0011-up', + '0012-up', + '0013-up', + '0014-up', + '0015-intermittent', + '0016-up', + '0017-up', + '0018-up', + '0019-up', + ]); + }); // there should now be pagination data in the URL await uptime.pageUrlContains('pagination'); await uptime.setStatusFilter('up'); - await uptime.pageHasExpectedIds([ - '0000-intermittent', - '0001-up', - '0002-up', - '0003-up', - '0004-up', - '0005-up', - '0006-up', - '0007-up', - '0008-up', - '0009-up', - ]); + await retry.try(async () => { + await uptime.pageHasExpectedIds([ + '0000-intermittent', + '0001-up', + '0002-up', + '0003-up', + '0004-up', + '0005-up', + '0006-up', + '0007-up', + '0008-up', + '0009-up', + ]); + }); // ensure that pagination is removed from the URL await uptime.pageUrlContains('pagination', false); }); it('clears pagination parameters when size changes', async () => { await uptime.changePage('next'); - await uptime.pageUrlContains('pagination'); + await retry.try(async () => { + await uptime.pageUrlContains('pagination'); + }); await uptime.setMonitorListPageSize(50); // the pagination parameter should be cleared after a size change await new Promise((resolve) => setTimeout(resolve, 1000)); From 97cc6ddb6bf0a940fca38155de6295041791978a Mon Sep 17 00:00:00 2001 From: Dan Panzarella Date: Fri, 14 May 2021 14:40:24 -0400 Subject: [PATCH 108/144] [Security Solution] Interim Host Isolation Case Commenting (#100092) --- x-pack/plugins/cases/server/client/client.ts | 13 +++++++ x-pack/plugins/cases/server/client/mocks.ts | 1 + x-pack/plugins/cases/server/client/types.ts | 5 +++ x-pack/plugins/cases/server/index.ts | 16 +++++++- x-pack/plugins/cases/server/plugin.ts | 10 ++++- .../endpoint/endpoint_app_context_services.ts | 18 +++++++++ .../server/endpoint/mocks.ts | 3 ++ .../endpoint/routes/actions/isolation.ts | 38 +++++++++++++++++++ .../security_solution/server/plugin.ts | 3 ++ 9 files changed, 104 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/cases/server/client/client.ts b/x-pack/plugins/cases/server/client/client.ts index 3bd25b6b61bc5..d6d153f01e008 100644 --- a/x-pack/plugins/cases/server/client/client.ts +++ b/x-pack/plugins/cases/server/client/client.ts @@ -17,6 +17,7 @@ import { CasesClientGetUserActions, CasesClientGetAlerts, CasesClientPush, + CasesClientGetCasesByAlert, } from './types'; import { create } from './cases/create'; import { update } from './cases/update'; @@ -247,4 +248,16 @@ export class CasesClientHandler implements CasesClient { }); } } + + public async getCaseIdsByAlertId(args: CasesClientGetCasesByAlert) { + try { + return this._caseService.getCaseIdsByAlertId({ + client: this._savedObjectsClient, + alertId: args.alertId, + }); + } catch (error) { + this.logger.error(`Failed to get case using alert id: ${args.alertId}: ${error}`); + throw error; + } + } } diff --git a/x-pack/plugins/cases/server/client/mocks.ts b/x-pack/plugins/cases/server/client/mocks.ts index 4c0f89cf77a67..cb6ef678b6cc2 100644 --- a/x-pack/plugins/cases/server/client/mocks.ts +++ b/x-pack/plugins/cases/server/client/mocks.ts @@ -31,6 +31,7 @@ export const createExternalCasesClientMock = (): CasesClientPluginContractMock = getUserActions: jest.fn(), update: jest.fn(), updateAlertsStatus: jest.fn(), + getCaseIdsByAlertId: jest.fn(), }); export const createCasesClientWithMockSavedObjectsClient = async ({ diff --git a/x-pack/plugins/cases/server/client/types.ts b/x-pack/plugins/cases/server/client/types.ts index 3311b7ac6f921..ca4e8790bf2b0 100644 --- a/x-pack/plugins/cases/server/client/types.ts +++ b/x-pack/plugins/cases/server/client/types.ts @@ -83,6 +83,10 @@ export interface ConfigureFields { connectorType: string; } +export interface CasesClientGetCasesByAlert { + alertId: string; +} + /** * Defines the fields necessary to update an alert's status. */ @@ -106,6 +110,7 @@ export interface CasesClient { push(args: CasesClientPush): Promise; update(args: CasesPatchRequest): Promise; updateAlertsStatus(args: CasesClientUpdateAlertsStatus): Promise; + getCaseIdsByAlertId(args: CasesClientGetCasesByAlert): Promise; } export interface MappingsClient { diff --git a/x-pack/plugins/cases/server/index.ts b/x-pack/plugins/cases/server/index.ts index 628a39ba77489..40c823b42771f 100644 --- a/x-pack/plugins/cases/server/index.ts +++ b/x-pack/plugins/cases/server/index.ts @@ -5,7 +5,14 @@ * 2.0. */ -import { PluginConfigDescriptor, PluginInitializerContext } from 'kibana/server'; +import { + KibanaRequest, + PluginConfigDescriptor, + PluginInitializerContext, + RequestHandlerContext, +} from 'kibana/server'; +import { CasesClient } from './client'; +export { CasesClient } from './client'; import { ConfigType, ConfigSchema } from './config'; import { CasePlugin } from './plugin'; @@ -18,3 +25,10 @@ export const config: PluginConfigDescriptor = { }; export const plugin = (initializerContext: PluginInitializerContext) => new CasePlugin(initializerContext); + +export interface PluginStartContract { + getCasesClientWithRequestAndContext( + context: RequestHandlerContext, + request: KibanaRequest + ): CasesClient; +} diff --git a/x-pack/plugins/cases/server/plugin.ts b/x-pack/plugins/cases/server/plugin.ts index 407d6583e5f3f..fda98356e181c 100644 --- a/x-pack/plugins/cases/server/plugin.ts +++ b/x-pack/plugins/cases/server/plugin.ts @@ -5,7 +5,13 @@ * 2.0. */ -import { IContextProvider, KibanaRequest, Logger, PluginInitializerContext } from 'kibana/server'; +import { + IContextProvider, + KibanaRequest, + Logger, + PluginInitializerContext, + RequestHandlerContext, +} from 'kibana/server'; import { CoreSetup, CoreStart } from 'src/core/server'; import { SecurityPluginSetup } from '../../security/server'; @@ -128,7 +134,7 @@ export class CasePlugin { this.log.debug(`Starting Case Workflow`); const getCasesClientWithRequestAndContext = async ( - context: CasesRequestHandlerContext, + context: RequestHandlerContext, request: KibanaRequest ) => { const user = await this.caseService!.getUser({ request }); diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts index aebed0723c3b5..2a64e533efad4 100644 --- a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts +++ b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts @@ -12,6 +12,10 @@ import { SavedObjectsClientContract, } from 'src/core/server'; import { ExceptionListClient } from '../../../lists/server'; +import { + CasesClient, + PluginStartContract as CasesPluginStartContract, +} from '../../../cases/server'; import { SecurityPluginStart } from '../../../security/server'; import { AgentService, @@ -41,6 +45,7 @@ import { ExperimentalFeatures, parseExperimentalConfigValue, } from '../../common/experimental_features'; +import { SecuritySolutionRequestHandlerContext } from '../types'; export interface MetadataService { queryStrategy( @@ -98,6 +103,7 @@ export type EndpointAppContextServiceStartContract = Partial< savedObjectsStart: SavedObjectsServiceStart; licenseService: LicenseService; exceptionListsClient: ExceptionListClient | undefined; + cases: CasesPluginStartContract | undefined; }; /** @@ -114,6 +120,7 @@ export class EndpointAppContextService { private config: ConfigType | undefined; private license: LicenseService | undefined; public security: SecurityPluginStart | undefined; + private cases: CasesPluginStartContract | undefined; private experimentalFeatures: ExperimentalFeatures | undefined; @@ -127,6 +134,7 @@ export class EndpointAppContextService { this.config = dependencies.config; this.license = dependencies.licenseService; this.security = dependencies.security; + this.cases = dependencies.cases; this.experimentalFeatures = parseExperimentalConfigValue(this.config.enableExperimental); @@ -191,4 +199,14 @@ export class EndpointAppContextService { } return this.license; } + + public async getCasesClient( + req: KibanaRequest, + context: SecuritySolutionRequestHandlerContext + ): Promise { + if (!this.cases) { + throw new Error(`must call start on ${EndpointAppContextService.name} to call getter`); + } + return this.cases.getCasesClientWithRequestAndContext(context, req); + } } diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/mocks.ts index 23ea6cc29c3d2..d8be1cc8de200 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks.ts @@ -87,6 +87,9 @@ export const createMockEndpointAppContextServiceStartContract = (): jest.Mocked< >(), exceptionListsClient: listMock.getExceptionListClient(), packagePolicyService: createPackagePolicyServiceMock(), + cases: { + getCasesClientWithRequestAndContext: jest.fn(), + }, }; }; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts index 2471eef2bc14d..09d26a20f1095 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts @@ -9,6 +9,7 @@ import moment from 'moment'; import { RequestHandler } from 'src/core/server'; import uuid from 'uuid'; import { TypeOf } from '@kbn/config-schema'; +import { CommentType } from '../../../../../cases/common'; import { HostIsolationRequestSchema } from '../../../../common/endpoint/schema/actions'; import { ISOLATE_HOST_ROUTE, UNISOLATE_HOST_ROUTE } from '../../../../common/endpoint/constants'; import { AGENT_ACTIONS_INDEX } from '../../../../../fleet/common'; @@ -104,6 +105,20 @@ export const isolationRequestHandler = function ( } agentIDs = [...new Set(agentIDs)]; // dedupe + // convert any alert IDs into cases + let caseIDs: string[] = req.body.case_ids?.slice() || []; + if (req.body.alert_ids && req.body.alert_ids.length > 0) { + const newIDs: string[][] = await Promise.all( + req.body.alert_ids.map(async (a: string) => + (await endpointContext.service.getCasesClient(req, context)).getCaseIdsByAlertId({ + alertId: a, + }) + ) + ); + caseIDs = caseIDs.concat(...newIDs); + } + caseIDs = [...new Set(caseIDs)]; + // create an Action ID and dispatch it to ES & Fleet Server const esClient = context.core.elasticsearch.client.asCurrentUser; const actionID = uuid.v4(); @@ -140,6 +155,29 @@ export const isolationRequestHandler = function ( }, }); } + + const commentLines: string[] = []; + + commentLines.push(`${isolate ? 'I' : 'Uni'}solate action was sent to the following Agents:`); + // lines of markdown links, inside a code block + + commentLines.push( + `${agentIDs.map((a) => `- [${a}](/app/fleet#/fleet/agents/${a})`).join('\n')}` + ); + if (req.body.comment) { + commentLines.push(`\n\nWith Comment:\n> ${req.body.comment}`); + } + + caseIDs.forEach(async (caseId) => { + (await endpointContext.service.getCasesClient(req, context)).addComment({ + caseId, + comment: { + comment: commentLines.join('\n'), + type: CommentType.user, + }, + }); + }); + return res.ok({ body: { action: actionID, diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 158c2e94b2d7a..72db0be6ce278 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -27,6 +27,7 @@ import { PluginSetupContract as AlertingSetup, PluginStartContract as AlertPluginStartContract, } from '../../alerting/server'; +import { PluginStartContract as CasesPluginStartContract } from '../../cases/server'; import { SecurityPluginSetup as SecuritySetup, SecurityPluginStart } from '../../security/server'; import { PluginSetupContract as FeaturesSetup } from '../../features/server'; import { MlPluginSetup as MlSetup } from '../../ml/server'; @@ -101,6 +102,7 @@ export interface StartPlugins { taskManager?: TaskManagerStartContract; telemetry?: TelemetryPluginStart; security: SecurityPluginStart; + cases?: CasesPluginStartContract; } // eslint-disable-next-line @typescript-eslint/no-empty-interface @@ -402,6 +404,7 @@ export class Plugin implements IPlugin Date: Fri, 14 May 2021 14:46:17 -0400 Subject: [PATCH 109/144] Sharing saved objects phase 3 (#94383) --- api_docs/spaces.json | 2 +- .../core/public/kibana-plugin-core-public.md | 2 + ...blic.savedobjectreferencewithcontext.id.md | 13 + ...treferencewithcontext.inboundreferences.md | 17 + ...vedobjectreferencewithcontext.ismissing.md | 13 + ...-public.savedobjectreferencewithcontext.md | 25 + ....savedobjectreferencewithcontext.spaces.md | 13 + ...cewithcontext.spaceswithmatchingaliases.md | 13 + ...ic.savedobjectreferencewithcontext.type.md | 13 + ...collectmultinamespacereferencesresponse.md | 20 + ...ultinamespacereferencesresponse.objects.md | 11 + ...ver.isavedobjectspointintimefinder.find.md | 2 +- ...e-server.isavedobjectspointintimefinder.md | 4 +- .../core/server/kibana-plugin-core-server.md | 12 +- ...jectexportbaseoptions.includenamespaces.md | 13 + ...ore-server.savedobjectexportbaseoptions.md | 1 + ...rver.savedobjectreferencewithcontext.id.md | 13 + ...treferencewithcontext.inboundreferences.md | 17 + ...vedobjectreferencewithcontext.ismissing.md | 13 + ...-server.savedobjectreferencewithcontext.md | 25 + ....savedobjectreferencewithcontext.spaces.md | 13 + ...cewithcontext.spaceswithmatchingaliases.md | 13 + ...er.savedobjectreferencewithcontext.type.md | 13 + ...rver.savedobjectsaddtonamespacesoptions.md | 20 - ...edobjectsaddtonamespacesoptions.refresh.md | 13 - ...edobjectsaddtonamespacesoptions.version.md | 13 - ...ver.savedobjectsaddtonamespacesresponse.md | 19 - ...jectsaddtonamespacesresponse.namespaces.md | 13 - ...rver.savedobjectsclient.addtonamespaces.md | 27 - ...sclient.collectmultinamespacereferences.md | 25 + ...edobjectsclient.createpointintimefinder.md | 4 +- ...savedobjectsclient.deletefromnamespaces.md | 27 - ...a-plugin-core-server.savedobjectsclient.md | 4 +- ....savedobjectsclient.updateobjectsspaces.md | 27 + ...ollectmultinamespacereferencesobject.id.md | 11 + ...tscollectmultinamespacereferencesobject.md | 23 + ...lectmultinamespacereferencesobject.type.md | 11 + ...scollectmultinamespacereferencesoptions.md | 20 + ...multinamespacereferencesoptions.purpose.md | 13 + ...collectmultinamespacereferencesresponse.md | 20 + ...ultinamespacereferencesresponse.objects.md | 11 + ...savedobjectsdeletefromnamespacesoptions.md | 19 - ...ectsdeletefromnamespacesoptions.refresh.md | 13 - ...avedobjectsdeletefromnamespacesresponse.md | 19 - ...deletefromnamespacesresponse.namespaces.md | 13 - ....savedobjectsrepository.addtonamespaces.md | 27 - ...ository.collectmultinamespacereferences.md | 25 + ...jectsrepository.createpointintimefinder.md | 4 +- ...dobjectsrepository.deletefromnamespaces.md | 27 - ...ugin-core-server.savedobjectsrepository.md | 4 +- ...edobjectsrepository.updateobjectsspaces.md | 27 + ...savedobjectsserializer.rawtosavedobject.md | 4 +- ...avedobjectsupdateobjectsspacesobject.id.md | 13 + ...r.savedobjectsupdateobjectsspacesobject.md | 21 + ...edobjectsupdateobjectsspacesobject.type.md | 13 + ....savedobjectsupdateobjectsspacesoptions.md | 20 + ...jectsupdateobjectsspacesoptions.refresh.md | 13 + ...savedobjectsupdateobjectsspacesresponse.md | 20 + ...ectsupdateobjectsspacesresponse.objects.md | 11 + ...updateobjectsspacesresponseobject.error.md | 13 + ...ctsupdateobjectsspacesresponseobject.id.md | 13 + ...bjectsupdateobjectsspacesresponseobject.md | 23 + ...pdateobjectsspacesresponseobject.spaces.md | 13 + ...supdateobjectsspacesresponseobject.type.md | 13 + ...rver.indexpatternsserviceprovider.start.md | 4 +- ...plugin-plugins-data-server.plugin.start.md | 4 +- src/core/public/index.ts | 2 + src/core/public/public.api.md | 20 + src/core/public/saved_objects/index.ts | 2 + src/core/server/index.ts | 12 +- .../export/saved_objects_exporter.test.ts | 23 + .../export/saved_objects_exporter.ts | 9 +- src/core/server/saved_objects/export/types.ts | 6 + .../migrations/core/document_migrator.test.ts | 4 + .../migrations/core/document_migrator.ts | 1 + .../integration_tests/rewriting_id.test.ts | 2 + .../object_types/registration.ts | 11 +- .../saved_objects/object_types/types.ts | 36 + .../saved_objects/serialization/serializer.ts | 4 +- .../server/saved_objects/service/index.ts | 8 + ...ct_multi_namespace_references.test.mock.ts | 21 + ...collect_multi_namespace_references.test.ts | 444 ++++++++++ .../lib/collect_multi_namespace_references.ts | 310 +++++++ .../service/lib/included_fields.test.ts | 136 +-- .../service/lib/included_fields.ts | 25 +- .../server/saved_objects/service/lib/index.ts | 14 + .../service/lib/internal_utils.test.ts | 243 ++++++ .../service/lib/internal_utils.ts | 143 +++ .../service/lib/point_in_time_finder.ts | 9 +- .../service/lib/repository.mock.ts | 4 +- .../service/lib/repository.test.js | 660 +++----------- .../service/lib/repository.test.mock.ts | 30 + .../saved_objects/service/lib/repository.ts | 368 ++------ .../lib/update_objects_spaces.test.mock.ts | 29 + .../service/lib/update_objects_spaces.test.ts | 453 ++++++++++ .../service/lib/update_objects_spaces.ts | 315 +++++++ .../service/saved_objects_client.mock.ts | 4 +- .../service/saved_objects_client.test.js | 49 +- .../service/saved_objects_client.ts | 116 +-- src/core/server/server.api.md | 100 ++- src/core/server/types.ts | 4 + src/plugins/data/server/server.api.md | 4 +- src/plugins/spaces_oss/public/api.ts | 4 +- .../apis/saved_objects/migrations.ts | 2 + ...ypted_saved_objects_client_wrapper.test.ts | 76 ++ .../encrypted_saved_objects_client_wrapper.ts | 50 +- .../job_spaces_list/job_spaces_list.tsx | 18 +- .../services/ml_api_service/saved_objects.ts | 19 +- .../models/data_recognizer/data_recognizer.ts | 5 +- x-pack/plugins/ml/server/routes/apidoc.json | 3 +- .../plugins/ml/server/routes/saved_objects.ts | 60 +- .../ml/server/routes/schemas/saved_objects.ts | 3 +- .../ml/server/saved_objects/service.ts | 74 +- .../security/server/audit/audit_events.ts | 14 + .../saved_objects/ensure_authorized.test.ts | 226 +++++ .../server/saved_objects/ensure_authorized.ts | 165 ++++ ...saved_objects_client_wrapper.test.mocks.ts | 17 + ...ecure_saved_objects_client_wrapper.test.ts | 816 +++++++++++++----- .../secure_saved_objects_client_wrapper.ts | 468 +++++++--- x-pack/plugins/spaces/common/index.ts | 2 +- .../share_to_space_flyout_internal.test.tsx | 62 +- .../share_to_space_flyout_internal.tsx | 85 +- .../spaces_manager/spaces_manager.mock.ts | 4 +- .../public/spaces_manager/spaces_manager.ts | 23 +- .../lib/copy_to_spaces/copy_to_spaces.test.ts | 159 +++- .../lib/copy_to_spaces/copy_to_spaces.ts | 21 +- .../copy_to_spaces/resolve_copy_conflicts.ts | 4 + .../external/get_shareable_references.test.ts | 144 ++++ .../api/external/get_shareable_references.ts | 42 + .../server/routes/api/external/index.ts | 6 +- .../api/external/share_to_space.test.ts | 252 ------ .../routes/api/external/share_to_space.ts | 77 -- .../external/update_objects_spaces.test.ts | 176 ++++ .../api/external/update_objects_spaces.ts | 70 ++ .../spaces_saved_objects_client.test.ts | 125 +-- .../spaces_saved_objects_client.ts | 87 +- .../translations/translations/ja-JP.json | 4 - .../translations/translations/zh-CN.json | 4 - .../apis/ml/saved_objects/can_delete_job.ts | 2 +- .../apis/ml/saved_objects/index.ts | 3 +- .../ml/saved_objects/remove_job_from_space.ts | 104 --- ..._job_to_space.ts => update_jobs_spaces.ts} | 27 +- x-pack/test/functional/services/ml/api.ts | 17 +- .../saved_objects/spaces/data.json | 3 + .../saved_objects/spaces/data.json | 70 ++ .../common/suites/copy_to_space.ts | 114 ++- .../common/suites/get_shareable_references.ts | 270 ++++++ .../common/suites/share_add.ts | 110 --- .../common/suites/share_remove.ts | 109 --- .../common/suites/update_objects_spaces.ts | 142 +++ .../apis/get_shareable_references.ts | 86 ++ .../security_and_spaces/apis/index.ts | 4 +- .../security_and_spaces/apis/share_add.ts | 144 ---- .../security_and_spaces/apis/share_remove.ts | 104 --- .../apis/update_objects_spaces.ts | 170 ++++ .../apis/get_shareable_references.ts | 62 ++ .../spaces_only/apis/index.ts | 4 +- .../spaces_only/apis/share_add.ts | 100 --- .../spaces_only/apis/share_remove.ts | 110 --- .../spaces_only/apis/update_objects_spaces.ts | 143 +++ 160 files changed, 6574 insertions(+), 3270 deletions(-) create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.namespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.addtonamespaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.deletefromnamespaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.namespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md create mode 100644 src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts create mode 100644 src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts create mode 100644 src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts create mode 100644 src/core/server/saved_objects/service/lib/internal_utils.test.ts create mode 100644 src/core/server/saved_objects/service/lib/internal_utils.ts create mode 100644 src/core/server/saved_objects/service/lib/update_objects_spaces.test.mock.ts create mode 100644 src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts create mode 100644 src/core/server/saved_objects/service/lib/update_objects_spaces.ts create mode 100644 x-pack/plugins/security/server/saved_objects/ensure_authorized.test.ts create mode 100644 x-pack/plugins/security/server/saved_objects/ensure_authorized.ts create mode 100644 x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.mocks.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.ts delete mode 100644 x-pack/plugins/spaces/server/routes/api/external/share_to_space.test.ts delete mode 100644 x-pack/plugins/spaces/server/routes/api/external/share_to_space.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.ts delete mode 100644 x-pack/test/api_integration/apis/ml/saved_objects/remove_job_from_space.ts rename x-pack/test/api_integration/apis/ml/saved_objects/{assign_job_to_space.ts => update_jobs_spaces.ts} (85%) create mode 100644 x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts delete mode 100644 x-pack/test/spaces_api_integration/common/suites/share_add.ts delete mode 100644 x-pack/test/spaces_api_integration/common/suites/share_remove.ts create mode 100644 x-pack/test/spaces_api_integration/common/suites/update_objects_spaces.ts create mode 100644 x-pack/test/spaces_api_integration/security_and_spaces/apis/get_shareable_references.ts delete mode 100644 x-pack/test/spaces_api_integration/security_and_spaces/apis/share_add.ts delete mode 100644 x-pack/test/spaces_api_integration/security_and_spaces/apis/share_remove.ts create mode 100644 x-pack/test/spaces_api_integration/security_and_spaces/apis/update_objects_spaces.ts create mode 100644 x-pack/test/spaces_api_integration/spaces_only/apis/get_shareable_references.ts delete mode 100644 x-pack/test/spaces_api_integration/spaces_only/apis/share_add.ts delete mode 100644 x-pack/test/spaces_api_integration/spaces_only/apis/share_remove.ts create mode 100644 x-pack/test/spaces_api_integration/spaces_only/apis/update_objects_spaces.ts diff --git a/api_docs/spaces.json b/api_docs/spaces.json index d53b69d5bd6b5..940bbcf88a484 100644 --- a/api_docs/spaces.json +++ b/api_docs/spaces.json @@ -1867,7 +1867,7 @@ "section": "def-server.SavedObjectsRepository", "text": "SavedObjectsRepository" }, - ", \"get\" | \"delete\" | \"create\" | \"bulkCreate\" | \"checkConflicts\" | \"deleteByNamespace\" | \"find\" | \"bulkGet\" | \"resolve\" | \"update\" | \"addToNamespaces\" | \"deleteFromNamespaces\" | \"bulkUpdate\" | \"removeReferencesTo\" | \"incrementCounter\" | \"openPointInTimeForType\" | \"closePointInTime\" | \"createPointInTimeFinder\">" + ", \"get\" | \"delete\" | \"create\" | \"bulkCreate\" | \"checkConflicts\" | \"deleteByNamespace\" | \"find\" | \"bulkGet\" | \"resolve\" | \"update\" | \"collectMultiNamespaceReferences\" | \"updateObjectsSpaces\" | \"bulkUpdate\" | \"removeReferencesTo\" | \"incrementCounter\" | \"openPointInTimeForType\" | \"closePointInTime\" | \"createPointInTimeFinder\">" ], "source": { "path": "x-pack/plugins/spaces/server/spaces_client/spaces_client_service.ts", diff --git a/docs/development/core/public/kibana-plugin-core-public.md b/docs/development/core/public/kibana-plugin-core-public.md index b868a7f8216df..5280d85f3d3b3 100644 --- a/docs/development/core/public/kibana-plugin-core-public.md +++ b/docs/development/core/public/kibana-plugin-core-public.md @@ -103,12 +103,14 @@ The plugin integrates with the core system via lifecycle events: `setup` | [SavedObjectAttributes](./kibana-plugin-core-public.savedobjectattributes.md) | The data for a Saved Object is stored as an object in the attributes property. | | [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) | | | [SavedObjectReference](./kibana-plugin-core-public.savedobjectreference.md) | A reference to another saved object. | +| [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) | A returned input object or one of its references, with additional context. | | [SavedObjectsBaseOptions](./kibana-plugin-core-public.savedobjectsbaseoptions.md) | | | [SavedObjectsBatchResponse](./kibana-plugin-core-public.savedobjectsbatchresponse.md) | | | [SavedObjectsBulkCreateObject](./kibana-plugin-core-public.savedobjectsbulkcreateobject.md) | | | [SavedObjectsBulkCreateOptions](./kibana-plugin-core-public.savedobjectsbulkcreateoptions.md) | | | [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) | | | [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-public.savedobjectsbulkupdateoptions.md) | | +| [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md) | The response when object references are collected. | | [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) | | | [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) | | | [SavedObjectsFindOptionsReference](./kibana-plugin-core-public.savedobjectsfindoptionsreference.md) | | diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md new file mode 100644 index 0000000000000..10e01d7e7a931 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [id](./kibana-plugin-core-public.savedobjectreferencewithcontext.id.md) + +## SavedObjectReferenceWithContext.id property + +The ID of the referenced object + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md new file mode 100644 index 0000000000000..722b11f0c7ba9 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [inboundReferences](./kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md) + +## SavedObjectReferenceWithContext.inboundReferences property + +References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation + +Signature: + +```typescript +inboundReferences: Array<{ + type: string; + id: string; + name: string; + }>; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md new file mode 100644 index 0000000000000..8a4b378850764 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [isMissing](./kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md) + +## SavedObjectReferenceWithContext.isMissing property + +Whether or not this object or reference is missing + +Signature: + +```typescript +isMissing?: boolean; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md new file mode 100644 index 0000000000000..a79fa96695e36 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) + +## SavedObjectReferenceWithContext interface + +A returned input object or one of its references, with additional context. + +Signature: + +```typescript +export interface SavedObjectReferenceWithContext +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-core-public.savedobjectreferencewithcontext.id.md) | string | The ID of the referenced object | +| [inboundReferences](./kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md) | Array<{
    type: string;
    id: string;
    name: string;
    }> | References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation | +| [isMissing](./kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md) | boolean | Whether or not this object or reference is missing | +| [spaces](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md) | string[] | The space(s) that the referenced object exists in | +| [spacesWithMatchingAliases](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) | string[] | The space(s) that legacy URL aliases matching this type/id exist in | +| [type](./kibana-plugin-core-public.savedobjectreferencewithcontext.type.md) | string | The type of the referenced object | + diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md new file mode 100644 index 0000000000000..9140e94721f1e --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [spaces](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md) + +## SavedObjectReferenceWithContext.spaces property + +The space(s) that the referenced object exists in + +Signature: + +```typescript +spaces: string[]; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md new file mode 100644 index 0000000000000..02b0c9c0949df --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [spacesWithMatchingAliases](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) + +## SavedObjectReferenceWithContext.spacesWithMatchingAliases property + +The space(s) that legacy URL aliases matching this type/id exist in + +Signature: + +```typescript +spacesWithMatchingAliases?: string[]; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md new file mode 100644 index 0000000000000..d2e341627153c --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [type](./kibana-plugin-core-public.savedobjectreferencewithcontext.type.md) + +## SavedObjectReferenceWithContext.type property + +The type of the referenced object + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md new file mode 100644 index 0000000000000..a6e0a274008a6 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md) + +## SavedObjectsCollectMultiNamespaceReferencesResponse interface + +The response when object references are collected. + +Signature: + +```typescript +export interface SavedObjectsCollectMultiNamespaceReferencesResponse +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [objects](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md) | SavedObjectReferenceWithContext[] | | + diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md new file mode 100644 index 0000000000000..66a7a19d18288 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md) > [objects](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md) + +## SavedObjectsCollectMultiNamespaceReferencesResponse.objects property + +Signature: + +```typescript +objects: SavedObjectReferenceWithContext[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md index 1755ff40c2bc0..29d4668becffc 100644 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md +++ b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md @@ -9,5 +9,5 @@ An async generator which wraps calls to `savedObjectsClient.find` and iterates o Signature: ```typescript -find: () => AsyncGenerator; +find: () => AsyncGenerator>; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md index 4686df18e0134..950d6c078654c 100644 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md +++ b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md @@ -8,7 +8,7 @@ Signature: ```typescript -export interface ISavedObjectsPointInTimeFinder +export interface ISavedObjectsPointInTimeFinder ``` ## Properties @@ -16,5 +16,5 @@ export interface ISavedObjectsPointInTimeFinder | Property | Type | Description | | --- | --- | --- | | [close](./kibana-plugin-core-server.isavedobjectspointintimefinder.close.md) | () => Promise<void> | Closes the Point-In-Time associated with this finder instance.Once you have retrieved all of the results you need, it is recommended to call close() to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to find fails for any reason. | -| [find](./kibana-plugin-core-server.isavedobjectspointintimefinder.find.md) | () => AsyncGenerator<SavedObjectsFindResponse> | An async generator which wraps calls to savedObjectsClient.find and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage size. | +| [find](./kibana-plugin-core-server.isavedobjectspointintimefinder.find.md) | () => AsyncGenerator<SavedObjectsFindResponse<T, A>> | An async generator which wraps calls to savedObjectsClient.find and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage size. | diff --git a/docs/development/core/server/kibana-plugin-core-server.md b/docs/development/core/server/kibana-plugin-core-server.md index 3a9118a9c56bd..d638b84224e23 100644 --- a/docs/development/core/server/kibana-plugin-core-server.md +++ b/docs/development/core/server/kibana-plugin-core-server.md @@ -144,8 +144,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) | Migration context provided when invoking a [migration handler](./kibana-plugin-core-server.savedobjectmigrationfn.md) | | [SavedObjectMigrationMap](./kibana-plugin-core-server.savedobjectmigrationmap.md) | A map of [migration functions](./kibana-plugin-core-server.savedobjectmigrationfn.md) to be used for a given type. The map's keys must be valid semver versions, and they cannot exceed the current Kibana version.For a given document, only migrations with a higher version number than that of the document will be applied. Migrations are executed in order, starting from the lowest version and ending with the highest one. | | [SavedObjectReference](./kibana-plugin-core-server.savedobjectreference.md) | A reference to another saved object. | -| [SavedObjectsAddToNamespacesOptions](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md) | | -| [SavedObjectsAddToNamespacesResponse](./kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md) | | +| [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) | A returned input object or one of its references, with additional context. | | [SavedObjectsBaseOptions](./kibana-plugin-core-server.savedobjectsbaseoptions.md) | | | [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) | | | [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) | | @@ -158,13 +157,14 @@ The plugin integrates with the core system via lifecycle events: `setup` | [SavedObjectsClientProviderOptions](./kibana-plugin-core-server.savedobjectsclientprovideroptions.md) | Options to control the creation of the Saved Objects Client. | | [SavedObjectsClientWrapperOptions](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.md) | Options passed to each SavedObjectsClientWrapperFactory to aid in creating the wrapper instance. | | [SavedObjectsClosePointInTimeResponse](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md) | | +| [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) | An object to collect references for. It must be a multi-namespace type (in other words, the object type must be registered with the namespaceType: 'multi' or namespaceType: 'multi-isolated' option).Note: if options.purpose is 'updateObjectsSpaces', it must be a shareable type (in other words, the object type must be registered with the namespaceType: 'multi'). | +| [SavedObjectsCollectMultiNamespaceReferencesOptions](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md) | Options for collecting references. | +| [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md) | The response when object references are collected. | | [SavedObjectsComplexFieldMapping](./kibana-plugin-core-server.savedobjectscomplexfieldmapping.md) | See [SavedObjectsFieldMapping](./kibana-plugin-core-server.savedobjectsfieldmapping.md) for documentation. | | [SavedObjectsCoreFieldMapping](./kibana-plugin-core-server.savedobjectscorefieldmapping.md) | See [SavedObjectsFieldMapping](./kibana-plugin-core-server.savedobjectsfieldmapping.md) for documentation. | | [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) | | | [SavedObjectsCreatePointInTimeFinderDependencies](./kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md) | | | [SavedObjectsDeleteByNamespaceOptions](./kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md) | | -| [SavedObjectsDeleteFromNamespacesOptions](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md) | | -| [SavedObjectsDeleteFromNamespacesResponse](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md) | | | [SavedObjectsDeleteOptions](./kibana-plugin-core-server.savedobjectsdeleteoptions.md) | | | [SavedObjectsExportByObjectOptions](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md) | Options for the [export by objects API](./kibana-plugin-core-server.savedobjectsexporter.exportbyobjects.md) | | [SavedObjectsExportByTypeOptions](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) | Options for the [export by type API](./kibana-plugin-core-server.savedobjectsexporter.exportbytypes.md) | @@ -208,6 +208,10 @@ The plugin integrates with the core system via lifecycle events: `setup` | [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) | | | [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) | Configuration options for the [type](./kibana-plugin-core-server.savedobjectstype.md)'s management section. | | [SavedObjectsTypeMappingDefinition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) | Describe a saved object type mapping. | +| [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) | An object that should have its spaces updated. | +| [SavedObjectsUpdateObjectsSpacesOptions](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md) | Options for the update operation. | +| [SavedObjectsUpdateObjectsSpacesResponse](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md) | The response when objects' spaces are updated. | +| [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) | Details about a specific object's update result. | | [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) | | | [SavedObjectsUpdateResponse](./kibana-plugin-core-server.savedobjectsupdateresponse.md) | | | [SearchResponse](./kibana-plugin-core-server.searchresponse.md) | | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md new file mode 100644 index 0000000000000..8ac532c601efc --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) > [includeNamespaces](./kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md) + +## SavedObjectExportBaseOptions.includeNamespaces property + +Flag to also include namespace information in the export stream. By default, namespace information is not included in exported objects. This is only intended to be used internally during copy-to-space operations, and it is not exposed as an option for the external HTTP route for exports. + +Signature: + +```typescript +includeNamespaces?: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md index 0e8fa73039d40..cd0c352086425 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md @@ -16,6 +16,7 @@ export interface SavedObjectExportBaseOptions | Property | Type | Description | | --- | --- | --- | | [excludeExportDetails](./kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md) | boolean | flag to not append [export details](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) to the end of the export stream. | +| [includeNamespaces](./kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md) | boolean | Flag to also include namespace information in the export stream. By default, namespace information is not included in exported objects. This is only intended to be used internally during copy-to-space operations, and it is not exposed as an option for the external HTTP route for exports. | | [includeReferencesDeep](./kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md) | boolean | flag to also include all related saved objects in the export stream. | | [namespace](./kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md) | string | optional namespace to override the namespace used by the savedObjectsClient. | | [request](./kibana-plugin-core-server.savedobjectexportbaseoptions.request.md) | KibanaRequest | The http request initiating the export. | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md new file mode 100644 index 0000000000000..7ef1a2fb1bd41 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [id](./kibana-plugin-core-server.savedobjectreferencewithcontext.id.md) + +## SavedObjectReferenceWithContext.id property + +The ID of the referenced object + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md new file mode 100644 index 0000000000000..058c27032d065 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [inboundReferences](./kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md) + +## SavedObjectReferenceWithContext.inboundReferences property + +References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation + +Signature: + +```typescript +inboundReferences: Array<{ + type: string; + id: string; + name: string; + }>; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md new file mode 100644 index 0000000000000..d46d5a6bf2a0a --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [isMissing](./kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md) + +## SavedObjectReferenceWithContext.isMissing property + +Whether or not this object or reference is missing + +Signature: + +```typescript +isMissing?: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md new file mode 100644 index 0000000000000..1f8b33c6e94e8 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) + +## SavedObjectReferenceWithContext interface + +A returned input object or one of its references, with additional context. + +Signature: + +```typescript +export interface SavedObjectReferenceWithContext +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-core-server.savedobjectreferencewithcontext.id.md) | string | The ID of the referenced object | +| [inboundReferences](./kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md) | Array<{
    type: string;
    id: string;
    name: string;
    }> | References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation | +| [isMissing](./kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md) | boolean | Whether or not this object or reference is missing | +| [spaces](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md) | string[] | The space(s) that the referenced object exists in | +| [spacesWithMatchingAliases](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) | string[] | The space(s) that legacy URL aliases matching this type/id exist in | +| [type](./kibana-plugin-core-server.savedobjectreferencewithcontext.type.md) | string | The type of the referenced object | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md new file mode 100644 index 0000000000000..2c2114103b29a --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [spaces](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md) + +## SavedObjectReferenceWithContext.spaces property + +The space(s) that the referenced object exists in + +Signature: + +```typescript +spaces: string[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md new file mode 100644 index 0000000000000..07f4158a84950 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [spacesWithMatchingAliases](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) + +## SavedObjectReferenceWithContext.spacesWithMatchingAliases property + +The space(s) that legacy URL aliases matching this type/id exist in + +Signature: + +```typescript +spacesWithMatchingAliases?: string[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md new file mode 100644 index 0000000000000..118d9744e4276 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [type](./kibana-plugin-core-server.savedobjectreferencewithcontext.type.md) + +## SavedObjectReferenceWithContext.type property + +The type of the referenced object + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md deleted file mode 100644 index 711588bdd608c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsAddToNamespacesOptions](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md) - -## SavedObjectsAddToNamespacesOptions interface - - -Signature: - -```typescript -export interface SavedObjectsAddToNamespacesOptions extends SavedObjectsBaseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [refresh](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.refresh.md) | MutatingOperationRefreshSetting | The Elasticsearch Refresh setting for this operation | -| [version](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.version.md) | string | An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.refresh.md deleted file mode 100644 index c0a1008ab5331..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsAddToNamespacesOptions](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.refresh.md) - -## SavedObjectsAddToNamespacesOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.version.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.version.md deleted file mode 100644 index 9432b4bf80da6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsAddToNamespacesOptions](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.md) > [version](./kibana-plugin-core-server.savedobjectsaddtonamespacesoptions.version.md) - -## SavedObjectsAddToNamespacesOptions.version property - -An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md deleted file mode 100644 index 306f502f0b0b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsAddToNamespacesResponse](./kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md) - -## SavedObjectsAddToNamespacesResponse interface - - -Signature: - -```typescript -export interface SavedObjectsAddToNamespacesResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [namespaces](./kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.namespaces.md) | string[] | The namespaces the object exists in after this operation is complete. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.namespaces.md deleted file mode 100644 index 4fc2e376304d4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.namespaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsAddToNamespacesResponse](./kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.md) > [namespaces](./kibana-plugin-core-server.savedobjectsaddtonamespacesresponse.namespaces.md) - -## SavedObjectsAddToNamespacesResponse.namespaces property - -The namespaces the object exists in after this operation is complete. - -Signature: - -```typescript -namespaces: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.addtonamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.addtonamespaces.md deleted file mode 100644 index 567390faba9b2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.addtonamespaces.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [addToNamespaces](./kibana-plugin-core-server.savedobjectsclient.addtonamespaces.md) - -## SavedObjectsClient.addToNamespaces() method - -Adds namespaces to a SavedObject - -Signature: - -```typescript -addToNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsAddToNamespacesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| namespaces | string[] | | -| options | SavedObjectsAddToNamespacesOptions | | - -Returns: - -`Promise` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md new file mode 100644 index 0000000000000..155167d32a738 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [collectMultiNamespaceReferences](./kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md) + +## SavedObjectsClient.collectMultiNamespaceReferences() method + +Gets all references and transitive references of the listed objects. Ignores any object that is not a multi-namespace type. + +Signature: + +```typescript +collectMultiNamespaceReferences(objects: SavedObjectsCollectMultiNamespaceReferencesObject[], options?: SavedObjectsCollectMultiNamespaceReferencesOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| objects | SavedObjectsCollectMultiNamespaceReferencesObject[] | | +| options | SavedObjectsCollectMultiNamespaceReferencesOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md index 8afd963464574..39d09807e4f3b 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md @@ -15,7 +15,7 @@ Once you have retrieved all of the results you need, it is recommended to call ` Signature: ```typescript -createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; +createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; ``` ## Parameters @@ -27,7 +27,7 @@ createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, Returns: -`ISavedObjectsPointInTimeFinder` +`ISavedObjectsPointInTimeFinder` ## Example diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.deletefromnamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.deletefromnamespaces.md deleted file mode 100644 index 18ef5c3e6350c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.deletefromnamespaces.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [deleteFromNamespaces](./kibana-plugin-core-server.savedobjectsclient.deletefromnamespaces.md) - -## SavedObjectsClient.deleteFromNamespaces() method - -Removes namespaces from a SavedObject - -Signature: - -```typescript -deleteFromNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsDeleteFromNamespacesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| namespaces | string[] | | -| options | SavedObjectsDeleteFromNamespacesOptions | | - -Returns: - -`Promise` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md index 95c2251f72c90..2e293889b1794 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md @@ -25,20 +25,20 @@ The constructor for this class is marked as internal. Third-party code should no | Method | Modifiers | Description | | --- | --- | --- | -| [addToNamespaces(type, id, namespaces, options)](./kibana-plugin-core-server.savedobjectsclient.addtonamespaces.md) | | Adds namespaces to a SavedObject | | [bulkCreate(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkcreate.md) | | Persists multiple documents batched together as a single request | | [bulkGet(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkget.md) | | Returns an array of objects by id | | [bulkUpdate(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkupdate.md) | | Bulk Updates multiple SavedObject at once | | [checkConflicts(objects, options)](./kibana-plugin-core-server.savedobjectsclient.checkconflicts.md) | | Check what conflicts will result when creating a given array of saved objects. This includes "unresolvable conflicts", which are multi-namespace objects that exist in a different namespace; such conflicts cannot be resolved/overwritten. | | [closePointInTime(id, options)](./kibana-plugin-core-server.savedobjectsclient.closepointintime.md) | | Closes a Point In Time (PIT) by ID. This simply proxies the request to ES via the Elasticsearch client, and is included in the Saved Objects Client as a convenience for consumers who are using [SavedObjectsClient.openPointInTimeForType()](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md).Only use this API if you have an advanced use case that's not solved by the [SavedObjectsClient.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) method. | +| [collectMultiNamespaceReferences(objects, options)](./kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md) | | Gets all references and transitive references of the listed objects. Ignores any object that is not a multi-namespace type. | | [create(type, attributes, options)](./kibana-plugin-core-server.savedobjectsclient.create.md) | | Persists a SavedObject | | [createPointInTimeFinder(findOptions, dependencies)](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) | | Returns a [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) to help page through large sets of saved objects. We strongly recommend using this API for any find queries that might return more than 1000 saved objects, however this API is only intended for use in server-side "batch" processing of objects where you are collecting all objects in memory or streaming them back to the client.Do NOT use this API in a route handler to facilitate paging through saved objects on the client-side unless you are streaming all of the results back to the client at once. Because the returned generator is stateful, you cannot rely on subsequent http requests retrieving new pages from the same Kibana server in multi-instance deployments.The generator wraps calls to [SavedObjectsClient.find()](./kibana-plugin-core-server.savedobjectsclient.find.md) and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage.Once you have retrieved all of the results you need, it is recommended to call close() to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to find fails for any reason. | | [delete(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.delete.md) | | Deletes a SavedObject | -| [deleteFromNamespaces(type, id, namespaces, options)](./kibana-plugin-core-server.savedobjectsclient.deletefromnamespaces.md) | | Removes namespaces from a SavedObject | | [find(options)](./kibana-plugin-core-server.savedobjectsclient.find.md) | | Find all SavedObjects matching the search query | | [get(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.get.md) | | Retrieves a single object | | [openPointInTimeForType(type, options)](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md) | | Opens a Point In Time (PIT) against the indices for the specified Saved Object types. The returned id can then be passed to [SavedObjectsClient.find()](./kibana-plugin-core-server.savedobjectsclient.find.md) to search against that PIT.Only use this API if you have an advanced use case that's not solved by the [SavedObjectsClient.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) method. | | [removeReferencesTo(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.removereferencesto.md) | | Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. | | [resolve(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.resolve.md) | | Resolves a single object, using any legacy URL alias if it exists | | [update(type, id, attributes, options)](./kibana-plugin-core-server.savedobjectsclient.update.md) | | Updates an SavedObject | +| [updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options)](./kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md) | | Updates one or more objects to add and/or remove them from specified spaces. | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md new file mode 100644 index 0000000000000..7ababbbe1f535 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [updateObjectsSpaces](./kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md) + +## SavedObjectsClient.updateObjectsSpaces() method + +Updates one or more objects to add and/or remove them from specified spaces. + +Signature: + +```typescript +updateObjectsSpaces(objects: SavedObjectsUpdateObjectsSpacesObject[], spacesToAdd: string[], spacesToRemove: string[], options?: SavedObjectsUpdateObjectsSpacesOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| objects | SavedObjectsUpdateObjectsSpacesObject[] | | +| spacesToAdd | string[] | | +| spacesToRemove | string[] | | +| options | SavedObjectsUpdateObjectsSpacesOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md new file mode 100644 index 0000000000000..21522a0f32d6d --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) > [id](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md) + +## SavedObjectsCollectMultiNamespaceReferencesObject.id property + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md new file mode 100644 index 0000000000000..e675658f2bf76 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) + +## SavedObjectsCollectMultiNamespaceReferencesObject interface + +An object to collect references for. It must be a multi-namespace type (in other words, the object type must be registered with the `namespaceType: 'multi'` or `namespaceType: 'multi-isolated'` option). + +Note: if options.purpose is 'updateObjectsSpaces', it must be a shareable type (in other words, the object type must be registered with the `namespaceType: 'multi'`). + +Signature: + +```typescript +export interface SavedObjectsCollectMultiNamespaceReferencesObject +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md) | string | | +| [type](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md) | string | | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md new file mode 100644 index 0000000000000..c376a9e4258c8 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) > [type](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md) + +## SavedObjectsCollectMultiNamespaceReferencesObject.type property + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md new file mode 100644 index 0000000000000..9311a66269753 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesOptions](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md) + +## SavedObjectsCollectMultiNamespaceReferencesOptions interface + +Options for collecting references. + +Signature: + +```typescript +export interface SavedObjectsCollectMultiNamespaceReferencesOptions extends SavedObjectsBaseOptions +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [purpose](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md) | 'collectMultiNamespaceReferences' | 'updateObjectsSpaces' | Optional purpose used to determine filtering and authorization checks; default is 'collectMultiNamespaceReferences' | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md new file mode 100644 index 0000000000000..a36301a6451bc --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesOptions](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md) > [purpose](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md) + +## SavedObjectsCollectMultiNamespaceReferencesOptions.purpose property + +Optional purpose used to determine filtering and authorization checks; default is 'collectMultiNamespaceReferences' + +Signature: + +```typescript +purpose?: 'collectMultiNamespaceReferences' | 'updateObjectsSpaces'; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md new file mode 100644 index 0000000000000..bc72e73994468 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md) + +## SavedObjectsCollectMultiNamespaceReferencesResponse interface + +The response when object references are collected. + +Signature: + +```typescript +export interface SavedObjectsCollectMultiNamespaceReferencesResponse +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [objects](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md) | SavedObjectReferenceWithContext[] | | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md new file mode 100644 index 0000000000000..4b5707d7228a5 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md) > [objects](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md) + +## SavedObjectsCollectMultiNamespaceReferencesResponse.objects property + +Signature: + +```typescript +objects: SavedObjectReferenceWithContext[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md deleted file mode 100644 index 8a2afe6656fa4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteFromNamespacesOptions](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md) - -## SavedObjectsDeleteFromNamespacesOptions interface - - -Signature: - -```typescript -export interface SavedObjectsDeleteFromNamespacesOptions extends SavedObjectsBaseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [refresh](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.refresh.md) | MutatingOperationRefreshSetting | The Elasticsearch Refresh setting for this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.refresh.md deleted file mode 100644 index 1175b79bc1abd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteFromNamespacesOptions](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesoptions.refresh.md) - -## SavedObjectsDeleteFromNamespacesOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md deleted file mode 100644 index 6021c8866f018..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteFromNamespacesResponse](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md) - -## SavedObjectsDeleteFromNamespacesResponse interface - - -Signature: - -```typescript -export interface SavedObjectsDeleteFromNamespacesResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [namespaces](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.namespaces.md) | string[] | The namespaces the object exists in after this operation is complete. An empty array indicates the object was deleted. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.namespaces.md deleted file mode 100644 index 9600a9e891380..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.namespaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteFromNamespacesResponse](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.md) > [namespaces](./kibana-plugin-core-server.savedobjectsdeletefromnamespacesresponse.namespaces.md) - -## SavedObjectsDeleteFromNamespacesResponse.namespaces property - -The namespaces the object exists in after this operation is complete. An empty array indicates the object was deleted. - -Signature: - -```typescript -namespaces: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md deleted file mode 100644 index 4b69b10318ed3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [addToNamespaces](./kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md) - -## SavedObjectsRepository.addToNamespaces() method - -Adds one or more namespaces to a given multi-namespace saved object. This method and \[`deleteFromNamespaces`\][SavedObjectsRepository.deleteFromNamespaces()](./kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md) are the only ways to change which Spaces a multi-namespace saved object is shared to. - -Signature: - -```typescript -addToNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsAddToNamespacesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| namespaces | string[] | | -| options | SavedObjectsAddToNamespacesOptions | | - -Returns: - -`Promise` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md new file mode 100644 index 0000000000000..450cd14a20524 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [collectMultiNamespaceReferences](./kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md) + +## SavedObjectsRepository.collectMultiNamespaceReferences() method + +Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace type. + +Signature: + +```typescript +collectMultiNamespaceReferences(objects: SavedObjectsCollectMultiNamespaceReferencesObject[], options?: SavedObjectsCollectMultiNamespaceReferencesOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| objects | SavedObjectsCollectMultiNamespaceReferencesObject[] | | +| options | SavedObjectsCollectMultiNamespaceReferencesOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md index 5d9d2857f6e0b..c92a1986966fd 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md @@ -15,7 +15,7 @@ Once you have retrieved all of the results you need, it is recommended to call ` Signature: ```typescript -createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; +createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; ``` ## Parameters @@ -27,7 +27,7 @@ createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, Returns: -`ISavedObjectsPointInTimeFinder` +`ISavedObjectsPointInTimeFinder` ## Example diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md deleted file mode 100644 index d5ffb6d9ff9d8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [deleteFromNamespaces](./kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md) - -## SavedObjectsRepository.deleteFromNamespaces() method - -Removes one or more namespaces from a given multi-namespace saved object. If no namespaces remain, the saved object is deleted entirely. This method and \[`addToNamespaces`\][SavedObjectsRepository.addToNamespaces()](./kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md) are the only ways to change which Spaces a multi-namespace saved object is shared to. - -Signature: - -```typescript -deleteFromNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsDeleteFromNamespacesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| namespaces | string[] | | -| options | SavedObjectsDeleteFromNamespacesOptions | | - -Returns: - -`Promise` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md index 00e6ed3aeddfc..191b125ef3f74 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md @@ -15,17 +15,16 @@ export declare class SavedObjectsRepository | Method | Modifiers | Description | | --- | --- | --- | -| [addToNamespaces(type, id, namespaces, options)](./kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md) | | Adds one or more namespaces to a given multi-namespace saved object. This method and \[deleteFromNamespaces\][SavedObjectsRepository.deleteFromNamespaces()](./kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md) are the only ways to change which Spaces a multi-namespace saved object is shared to. | | [bulkCreate(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md) | | Creates multiple documents at once | | [bulkGet(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkget.md) | | Returns an array of objects by id | | [bulkUpdate(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md) | | Updates multiple objects in bulk | | [checkConflicts(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md) | | Check what conflicts will result when creating a given array of saved objects. This includes "unresolvable conflicts", which are multi-namespace objects that exist in a different namespace; such conflicts cannot be resolved/overwritten. | | [closePointInTime(id, options)](./kibana-plugin-core-server.savedobjectsrepository.closepointintime.md) | | Closes a Point In Time (PIT) by ID. This simply proxies the request to ES via the Elasticsearch client, and is included in the Saved Objects Client as a convenience for consumers who are using openPointInTimeForType.Only use this API if you have an advanced use case that's not solved by the [SavedObjectsRepository.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) method. | +| [collectMultiNamespaceReferences(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md) | | Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace type. | | [create(type, attributes, options)](./kibana-plugin-core-server.savedobjectsrepository.create.md) | | Persists an object | | [createPointInTimeFinder(findOptions, dependencies)](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) | | Returns a [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) to help page through large sets of saved objects. We strongly recommend using this API for any find queries that might return more than 1000 saved objects, however this API is only intended for use in server-side "batch" processing of objects where you are collecting all objects in memory or streaming them back to the client.Do NOT use this API in a route handler to facilitate paging through saved objects on the client-side unless you are streaming all of the results back to the client at once. Because the returned generator is stateful, you cannot rely on subsequent http requests retrieving new pages from the same Kibana server in multi-instance deployments.This generator wraps calls to [SavedObjectsRepository.find()](./kibana-plugin-core-server.savedobjectsrepository.find.md) and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage.Once you have retrieved all of the results you need, it is recommended to call close() to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to find fails for any reason. | | [delete(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.delete.md) | | Deletes an object | | [deleteByNamespace(namespace, options)](./kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md) | | Deletes all objects from the provided namespace. | -| [deleteFromNamespaces(type, id, namespaces, options)](./kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md) | | Removes one or more namespaces from a given multi-namespace saved object. If no namespaces remain, the saved object is deleted entirely. This method and \[addToNamespaces\][SavedObjectsRepository.addToNamespaces()](./kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md) are the only ways to change which Spaces a multi-namespace saved object is shared to. | | [find(options)](./kibana-plugin-core-server.savedobjectsrepository.find.md) | | | | [get(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.get.md) | | Gets a single object | | [incrementCounter(type, id, counterFields, options)](./kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md) | | Increments all the specified counter fields (by one by default). Creates the document if one doesn't exist for the given id. | @@ -33,4 +32,5 @@ export declare class SavedObjectsRepository | [removeReferencesTo(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md) | | Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. | | [resolve(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.resolve.md) | | Resolves a single object, using any legacy URL alias if it exists | | [update(type, id, attributes, options)](./kibana-plugin-core-server.savedobjectsrepository.update.md) | | Updates an object | +| [updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options)](./kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md) | | Updates one or more objects to add and/or remove them from specified spaces. | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md new file mode 100644 index 0000000000000..6914c1b46b829 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [updateObjectsSpaces](./kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md) + +## SavedObjectsRepository.updateObjectsSpaces() method + +Updates one or more objects to add and/or remove them from specified spaces. + +Signature: + +```typescript +updateObjectsSpaces(objects: SavedObjectsUpdateObjectsSpacesObject[], spacesToAdd: string[], spacesToRemove: string[], options?: SavedObjectsUpdateObjectsSpacesOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| objects | SavedObjectsUpdateObjectsSpacesObject[] | | +| spacesToAdd | string[] | | +| spacesToRemove | string[] | | +| options | SavedObjectsUpdateObjectsSpacesOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md index 3fc386f263141..d71db9caf6a3b 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md @@ -9,7 +9,7 @@ Converts a document from the format that is stored in elasticsearch to the saved Signature: ```typescript -rawToSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): SavedObjectSanitizedDoc; +rawToSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): SavedObjectSanitizedDoc; ``` ## Parameters @@ -21,5 +21,5 @@ rawToSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptio Returns: -`SavedObjectSanitizedDoc` +`SavedObjectSanitizedDoc` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md new file mode 100644 index 0000000000000..dac110ac4f475 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) > [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md) + +## SavedObjectsUpdateObjectsSpacesObject.id property + +The type of the object to update + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md new file mode 100644 index 0000000000000..847e40a8896b4 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) + +## SavedObjectsUpdateObjectsSpacesObject interface + +An object that should have its spaces updated. + +Signature: + +```typescript +export interface SavedObjectsUpdateObjectsSpacesObject +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md) | string | The type of the object to update | +| [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md) | string | The ID of the object to update | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md new file mode 100644 index 0000000000000..2e54d1636c5e9 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) > [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md) + +## SavedObjectsUpdateObjectsSpacesObject.type property + +The ID of the object to update + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md new file mode 100644 index 0000000000000..49ee013c5d2da --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesOptions](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md) + +## SavedObjectsUpdateObjectsSpacesOptions interface + +Options for the update operation. + +Signature: + +```typescript +export interface SavedObjectsUpdateObjectsSpacesOptions extends SavedObjectsBaseOptions +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [refresh](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md) | MutatingOperationRefreshSetting | The Elasticsearch Refresh setting for this operation | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md new file mode 100644 index 0000000000000..3d210f6ac51c7 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesOptions](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md) + +## SavedObjectsUpdateObjectsSpacesOptions.refresh property + +The Elasticsearch Refresh setting for this operation + +Signature: + +```typescript +refresh?: MutatingOperationRefreshSetting; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md new file mode 100644 index 0000000000000..bf53277887bda --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponse](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md) + +## SavedObjectsUpdateObjectsSpacesResponse interface + +The response when objects' spaces are updated. + +Signature: + +```typescript +export interface SavedObjectsUpdateObjectsSpacesResponse +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [objects](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md) | SavedObjectsUpdateObjectsSpacesResponseObject[] | | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md new file mode 100644 index 0000000000000..13328e2aed094 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponse](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md) > [objects](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md) + +## SavedObjectsUpdateObjectsSpacesResponse.objects property + +Signature: + +```typescript +objects: SavedObjectsUpdateObjectsSpacesResponseObject[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md new file mode 100644 index 0000000000000..7d7ac4ada884d --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [error](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md) + +## SavedObjectsUpdateObjectsSpacesResponseObject.error property + +Included if there was an error updating this object's spaces + +Signature: + +```typescript +error?: SavedObjectError; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md new file mode 100644 index 0000000000000..28a81ee5dfd6a --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md) + +## SavedObjectsUpdateObjectsSpacesResponseObject.id property + +The ID of the referenced object + +Signature: + +```typescript +id: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md new file mode 100644 index 0000000000000..03802278ee5a3 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) + +## SavedObjectsUpdateObjectsSpacesResponseObject interface + +Details about a specific object's update result. + +Signature: + +```typescript +export interface SavedObjectsUpdateObjectsSpacesResponseObject +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [error](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md) | SavedObjectError | Included if there was an error updating this object's spaces | +| [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md) | string | The ID of the referenced object | +| [spaces](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md) | string[] | The space(s) that the referenced object exists in | +| [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md) | string | The type of the referenced object | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md new file mode 100644 index 0000000000000..52b1ca187925c --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [spaces](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md) + +## SavedObjectsUpdateObjectsSpacesResponseObject.spaces property + +The space(s) that the referenced object exists in + +Signature: + +```typescript +spaces: string[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md new file mode 100644 index 0000000000000..da0bbb1088507 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md) + +## SavedObjectsUpdateObjectsSpacesResponseObject.type property + +The type of the referenced object + +Signature: + +```typescript +type: string; +``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsserviceprovider.start.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsserviceprovider.start.md index 118b0104fbee6..7559695a0a331 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsserviceprovider.start.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsserviceprovider.start.md @@ -8,7 +8,7 @@ ```typescript start(core: CoreStart, { fieldFormats, logger }: IndexPatternsServiceStartDeps): { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: ElasticsearchClient) => Promise; + indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: ElasticsearchClient) => Promise; }; ``` @@ -22,6 +22,6 @@ start(core: CoreStart, { fieldFormats, logger }: IndexPatternsServiceStartDeps): Returns: `{ - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: ElasticsearchClient) => Promise; + indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: ElasticsearchClient) => Promise; }` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md index f4404521561d2..dd1f3806c1408 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.start.md @@ -12,7 +12,7 @@ start(core: CoreStart): { fieldFormatServiceFactory: (uiSettings: import("../../../core/server").IUiSettingsClient) => Promise; }; indexPatterns: { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; + indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; }; search: ISearchStart>; }; @@ -31,7 +31,7 @@ start(core: CoreStart): { fieldFormatServiceFactory: (uiSettings: import("../../../core/server").IUiSettingsClient) => Promise; }; indexPatterns: { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; + indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; }; search: ISearchStart>; }` diff --git a/src/core/public/index.ts b/src/core/public/index.ts index 17ba37d075b78..7d2a585084758 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -144,6 +144,8 @@ export type { SavedObjectsImportSimpleWarning, SavedObjectsImportActionRequiredWarning, SavedObjectsImportWarning, + SavedObjectReferenceWithContext, + SavedObjectsCollectMultiNamespaceReferencesResponse, } from './saved_objects'; export { HttpFetchError } from './http'; diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index 4ea3b56c60a8f..129a7e565394f 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -1173,6 +1173,20 @@ export interface SavedObjectReference { type: string; } +// @public +export interface SavedObjectReferenceWithContext { + id: string; + inboundReferences: Array<{ + type: string; + id: string; + name: string; + }>; + isMissing?: boolean; + spaces: string[]; + spacesWithMatchingAliases?: string[]; + type: string; +} + // @public (undocumented) export interface SavedObjectsBaseOptions { namespace?: string; @@ -1240,6 +1254,12 @@ export class SavedObjectsClient { // @public export type SavedObjectsClientContract = PublicMethodsOf; +// @public +export interface SavedObjectsCollectMultiNamespaceReferencesResponse { + // (undocumented) + objects: SavedObjectReferenceWithContext[]; +} + // @public (undocumented) export interface SavedObjectsCreateOptions { coreMigrationVersion?: string; diff --git a/src/core/public/saved_objects/index.ts b/src/core/public/saved_objects/index.ts index e8aef50376841..cd75bc16f8362 100644 --- a/src/core/public/saved_objects/index.ts +++ b/src/core/public/saved_objects/index.ts @@ -39,6 +39,8 @@ export type { SavedObjectsImportSimpleWarning, SavedObjectsImportActionRequiredWarning, SavedObjectsImportWarning, + SavedObjectReferenceWithContext, + SavedObjectsCollectMultiNamespaceReferencesResponse, } from '../../server/types'; export type { diff --git a/src/core/server/index.ts b/src/core/server/index.ts index ca328f17b2ae1..05408d839c0ae 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -320,12 +320,16 @@ export type { SavedObjectsResolveResponse, SavedObjectsUpdateOptions, SavedObjectsUpdateResponse, - SavedObjectsAddToNamespacesOptions, - SavedObjectsAddToNamespacesResponse, - SavedObjectsDeleteFromNamespacesOptions, - SavedObjectsDeleteFromNamespacesResponse, SavedObjectsRemoveReferencesToOptions, SavedObjectsRemoveReferencesToResponse, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectReferenceWithContext, + SavedObjectsCollectMultiNamespaceReferencesResponse, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, + SavedObjectsUpdateObjectsSpacesResponse, + SavedObjectsUpdateObjectsSpacesResponseObject, SavedObjectsServiceStart, SavedObjectsServiceSetup, SavedObjectStatusMeta, diff --git a/src/core/server/saved_objects/export/saved_objects_exporter.test.ts b/src/core/server/saved_objects/export/saved_objects_exporter.test.ts index 468a761781365..6bdb8003de49d 100644 --- a/src/core/server/saved_objects/export/saved_objects_exporter.test.ts +++ b/src/core/server/saved_objects/export/saved_objects_exporter.test.ts @@ -1149,6 +1149,29 @@ describe('getSortedObjectsForExport()', () => { ]); }); + test('return results including the `namespaces` attribute when includeNamespaces option is used', async () => { + const createSavedObject = (obj: any) => ({ ...obj, attributes: {}, references: [] }); + const objectResults = [ + createSavedObject({ type: 'multi', id: '1', namespaces: ['foo'] }), + createSavedObject({ type: 'multi', id: '2', namespaces: ['bar'] }), + createSavedObject({ type: 'other', id: '3' }), + ]; + savedObjectsClient.bulkGet.mockResolvedValueOnce({ + saved_objects: objectResults, + }); + const exportStream = await exporter.exportByObjects({ + request, + objects: [ + { type: 'multi', id: '1' }, + { type: 'multi', id: '2' }, + { type: 'other', id: '3' }, + ], + includeNamespaces: true, + }); + const response = await readStreamToCompletion(exportStream); + expect(response).toEqual([...objectResults, expect.objectContaining({ exportedCount: 3 })]); + }); + test('includes nested dependencies when passed in', async () => { savedObjectsClient.bulkGet.mockResolvedValueOnce({ saved_objects: [ diff --git a/src/core/server/saved_objects/export/saved_objects_exporter.ts b/src/core/server/saved_objects/export/saved_objects_exporter.ts index 868efa872d643..8cd6934bf1af9 100644 --- a/src/core/server/saved_objects/export/saved_objects_exporter.ts +++ b/src/core/server/saved_objects/export/saved_objects_exporter.ts @@ -77,6 +77,7 @@ export class SavedObjectsExporter { return this.processObjects(objects, byIdAscComparator, { request: options.request, includeReferencesDeep: options.includeReferencesDeep, + includeNamespaces: options.includeNamespaces, excludeExportDetails: options.excludeExportDetails, namespace: options.namespace, }); @@ -99,6 +100,7 @@ export class SavedObjectsExporter { return this.processObjects(objects, comparator, { request: options.request, includeReferencesDeep: options.includeReferencesDeep, + includeNamespaces: options.includeNamespaces, excludeExportDetails: options.excludeExportDetails, namespace: options.namespace, }); @@ -111,6 +113,7 @@ export class SavedObjectsExporter { request, excludeExportDetails = false, includeReferencesDeep = false, + includeNamespaces = false, namespace, }: SavedObjectExportBaseOptions ) { @@ -139,9 +142,9 @@ export class SavedObjectsExporter { } // redact attributes that should not be exported - const redactedObjects = exportedObjects.map>( - ({ namespaces, ...object }) => object - ); + const redactedObjects = includeNamespaces + ? exportedObjects + : exportedObjects.map>(({ namespaces, ...object }) => object); const exportDetails: SavedObjectsExportResultDetails = { exportedCount: exportedObjects.length, diff --git a/src/core/server/saved_objects/export/types.ts b/src/core/server/saved_objects/export/types.ts index 4326943bd31ce..7891af6df5b1b 100644 --- a/src/core/server/saved_objects/export/types.ts +++ b/src/core/server/saved_objects/export/types.ts @@ -15,6 +15,12 @@ export interface SavedObjectExportBaseOptions { request: KibanaRequest; /** flag to also include all related saved objects in the export stream. */ includeReferencesDeep?: boolean; + /** + * Flag to also include namespace information in the export stream. By default, namespace information is not included in exported objects. + * This is only intended to be used internally during copy-to-space operations, and it is not exposed as an option for the external HTTP + * route for exports. + */ + includeNamespaces?: boolean; /** flag to not append {@link SavedObjectsExportResultDetails | export details} to the end of the export stream. */ excludeExportDetails?: boolean; /** optional namespace to override the namespace used by the savedObjectsClient. */ diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.test.ts b/src/core/server/saved_objects/migrations/core/document_migrator.test.ts index 45286f158edb1..71e5565ebcbef 100644 --- a/src/core/server/saved_objects/migrations/core/document_migrator.test.ts +++ b/src/core/server/saved_objects/migrations/core/document_migrator.test.ts @@ -982,6 +982,7 @@ describe('DocumentMigrator', () => { id: 'foo-namespace:dog:loud', type: LEGACY_URL_ALIAS_TYPE, attributes: { + sourceId: 'loud', targetNamespace: 'foo-namespace', targetType: 'dog', targetId: 'uuidv5', @@ -1046,6 +1047,7 @@ describe('DocumentMigrator', () => { id: 'foo-namespace:dog:cute', type: LEGACY_URL_ALIAS_TYPE, attributes: { + sourceId: 'cute', targetNamespace: 'foo-namespace', targetType: 'dog', targetId: 'uuidv5', @@ -1168,6 +1170,7 @@ describe('DocumentMigrator', () => { id: 'foo-namespace:dog:hungry', type: LEGACY_URL_ALIAS_TYPE, attributes: { + sourceId: 'hungry', targetNamespace: 'foo-namespace', targetType: 'dog', targetId: 'uuidv5', @@ -1240,6 +1243,7 @@ describe('DocumentMigrator', () => { id: 'foo-namespace:dog:pretty', type: LEGACY_URL_ALIAS_TYPE, attributes: { + sourceId: 'pretty', targetNamespace: 'foo-namespace', targetType: 'dog', targetId: 'uuidv5', diff --git a/src/core/server/saved_objects/migrations/core/document_migrator.ts b/src/core/server/saved_objects/migrations/core/document_migrator.ts index 4f58397866cfb..f30cfc53018db 100644 --- a/src/core/server/saved_objects/migrations/core/document_migrator.ts +++ b/src/core/server/saved_objects/migrations/core/document_migrator.ts @@ -560,6 +560,7 @@ function convertNamespaceType(doc: SavedObjectUnsanitizedDoc) { id: `${namespace}:${type}:${originId}`, type: LEGACY_URL_ALIAS_TYPE, attributes: { + sourceId: originId, targetNamespace: namespace, targetType: type, targetId: id, diff --git a/src/core/server/saved_objects/migrationsv2/integration_tests/rewriting_id.test.ts b/src/core/server/saved_objects/migrationsv2/integration_tests/rewriting_id.test.ts index 9f7e32c49ef15..4a1a2b414a642 100644 --- a/src/core/server/saved_objects/migrationsv2/integration_tests/rewriting_id.test.ts +++ b/src/core/server/saved_objects/migrationsv2/integration_tests/rewriting_id.test.ts @@ -194,6 +194,7 @@ describe('migration v2', () => { id: 'legacy-url-alias:spacex:foo:1', type: 'legacy-url-alias', 'legacy-url-alias': { + sourceId: '1', targetId: newFooId, targetNamespace: 'spacex', targetType: 'foo', @@ -226,6 +227,7 @@ describe('migration v2', () => { id: 'legacy-url-alias:spacex:bar:1', type: 'legacy-url-alias', 'legacy-url-alias': { + sourceId: '1', targetId: newBarId, targetNamespace: 'spacex', targetType: 'bar', diff --git a/src/core/server/saved_objects/object_types/registration.ts b/src/core/server/saved_objects/object_types/registration.ts index 149fc09ce401d..2b5f49123b2cf 100644 --- a/src/core/server/saved_objects/object_types/registration.ts +++ b/src/core/server/saved_objects/object_types/registration.ts @@ -13,10 +13,15 @@ const legacyUrlAliasType: SavedObjectsType = { name: LEGACY_URL_ALIAS_TYPE, namespaceType: 'agnostic', mappings: { - dynamic: false, // we aren't querying or aggregating over this data, so we don't need to specify any fields - properties: {}, + dynamic: false, + properties: { + sourceId: { type: 'keyword' }, + targetType: { type: 'keyword' }, + disabled: { type: 'boolean' }, + // other properties exist, but we aren't querying or aggregating on those, so we don't need to specify them (because we use `dynamic: false` above) + }, }, - hidden: true, + hidden: false, }; /** diff --git a/src/core/server/saved_objects/object_types/types.ts b/src/core/server/saved_objects/object_types/types.ts index 6fca2ed59906b..9038d1a606067 100644 --- a/src/core/server/saved_objects/object_types/types.ts +++ b/src/core/server/saved_objects/object_types/types.ts @@ -7,13 +7,49 @@ */ /** + * A legacy URL alias is created for an object when it is converted from a single-namespace type to a multi-namespace type. This enables us + * to preserve functionality of existing URLs for objects whose IDs have been changed during the conversion process, by way of the new + * `SavedObjectsClient.resolve()` API. + * + * Legacy URL aliases are only created by the `DocumentMigrator`, and will always have a saved object ID as follows: + * + * ``` + * `${targetNamespace}:${targetType}:${sourceId}` + * ``` + * + * This predictable object ID allows aliases to be easily looked up during the resolve operation, and ensures that exactly one alias will + * exist for a given source per space. + * * @internal */ export interface LegacyUrlAlias { + /** + * The original ID of the object, before it was converted. + */ + sourceId: string; + /** + * The namespace that the object existed in when it was converted. + */ targetNamespace: string; + /** + * The type of the object when it was converted. + */ targetType: string; + /** + * The new ID of the object when it was converted. + */ targetId: string; + /** + * The last time this alias was used with `SavedObjectsClient.resolve()`. + */ lastResolved?: string; + /** + * How many times this alias was used with `SavedObjectsClient.resolve()`. + */ resolveCounter?: number; + /** + * If true, this alias is disabled and it will be ignored in `SavedObjectsClient.resolve()` and + * `SavedObjectsClient.collectMultiNamespaceReferences()`. + */ disabled?: boolean; } diff --git a/src/core/server/saved_objects/serialization/serializer.ts b/src/core/server/saved_objects/serialization/serializer.ts index 4b955032939b3..9c91abcfe79c5 100644 --- a/src/core/server/saved_objects/serialization/serializer.ts +++ b/src/core/server/saved_objects/serialization/serializer.ts @@ -76,10 +76,10 @@ export class SavedObjectsSerializer { * @param {SavedObjectsRawDoc} doc - The raw ES document to be converted to saved object format. * @param {SavedObjectsRawDocParseOptions} options - Options for parsing the raw document. */ - public rawToSavedObject( + public rawToSavedObject( doc: SavedObjectsRawDoc, options: SavedObjectsRawDocParseOptions = {} - ): SavedObjectSanitizedDoc { + ): SavedObjectSanitizedDoc { this.checkIsRawSavedObject(doc, options); // throws a descriptive error if the document is not a saved object const { namespaceTreatment = 'strict' } = options; diff --git a/src/core/server/saved_objects/service/index.ts b/src/core/server/saved_objects/service/index.ts index 8a66e6176d1f5..7b4ffcf2dd6cf 100644 --- a/src/core/server/saved_objects/service/index.ts +++ b/src/core/server/saved_objects/service/index.ts @@ -17,6 +17,14 @@ export type { SavedObjectsClientWrapperOptions, SavedObjectsClientFactory, SavedObjectsClientFactoryProvider, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectReferenceWithContext, + SavedObjectsCollectMultiNamespaceReferencesResponse, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, + SavedObjectsUpdateObjectsSpacesResponse, + SavedObjectsUpdateObjectsSpacesResponseObject, } from './lib'; export * from './saved_objects_client'; diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts new file mode 100644 index 0000000000000..cbd1ac4a8eb8f --- /dev/null +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type * as InternalUtils from './internal_utils'; + +export const mockRawDocExistsInNamespace = jest.fn() as jest.MockedFunction< + typeof InternalUtils['rawDocExistsInNamespace'] +>; + +jest.mock('./internal_utils', () => { + const actual = jest.requireActual('./internal_utils'); + return { + ...actual, + rawDocExistsInNamespace: mockRawDocExistsInNamespace, + }; +}); diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts new file mode 100644 index 0000000000000..00fc039ff005f --- /dev/null +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts @@ -0,0 +1,444 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { mockRawDocExistsInNamespace } from './collect_multi_namespace_references.test.mock'; + +import type { DeeplyMockedKeys } from '@kbn/utility-types/target/jest'; +import type { ElasticsearchClient } from 'src/core/server/elasticsearch'; +import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; + +import { LegacyUrlAlias, LEGACY_URL_ALIAS_TYPE } from '../../object_types'; +import { typeRegistryMock } from '../../saved_objects_type_registry.mock'; +import { SavedObjectsSerializer } from '../../serialization'; +import type { + CollectMultiNamespaceReferencesParams, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, +} from './collect_multi_namespace_references'; +import { collectMultiNamespaceReferences } from './collect_multi_namespace_references'; +import { savedObjectsPointInTimeFinderMock } from './point_in_time_finder.mock'; +import { savedObjectsRepositoryMock } from './repository.mock'; +import { PointInTimeFinder } from './point_in_time_finder'; +import { ISavedObjectsRepository } from './repository'; + +const SPACES = ['default', 'another-space']; +const VERSION_PROPS = { _seq_no: 1, _primary_term: 1 }; + +const MULTI_NAMESPACE_OBJ_TYPE_1 = 'type-a'; +const MULTI_NAMESPACE_OBJ_TYPE_2 = 'type-b'; +const NON_MULTI_NAMESPACE_OBJ_TYPE = 'type-c'; +const MULTI_NAMESPACE_HIDDEN_OBJ_TYPE = 'type-d'; + +beforeEach(() => { + mockRawDocExistsInNamespace.mockReset(); + mockRawDocExistsInNamespace.mockReturnValue(true); // return true by default +}); + +describe('collectMultiNamespaceReferences', () => { + let client: DeeplyMockedKeys; + let savedObjectsMock: jest.Mocked; + let createPointInTimeFinder: jest.MockedFunction< + CollectMultiNamespaceReferencesParams['createPointInTimeFinder'] + >; + let pointInTimeFinder: DeeplyMockedKeys; + + /** Sets up the type registry, saved objects client, etc. and return the full parameters object to be passed to `collectMultiNamespaceReferences` */ + function setup( + objects: SavedObjectsCollectMultiNamespaceReferencesObject[], + options: SavedObjectsCollectMultiNamespaceReferencesOptions = {} + ): CollectMultiNamespaceReferencesParams { + const registry = typeRegistryMock.create(); + registry.isMultiNamespace.mockImplementation( + (type) => + [ + MULTI_NAMESPACE_OBJ_TYPE_1, + MULTI_NAMESPACE_OBJ_TYPE_2, + MULTI_NAMESPACE_HIDDEN_OBJ_TYPE, + ].includes(type) // NON_MULTI_NAMESPACE_TYPE is omitted + ); + registry.isShareable.mockImplementation( + (type) => [MULTI_NAMESPACE_OBJ_TYPE_1, MULTI_NAMESPACE_HIDDEN_OBJ_TYPE].includes(type) // MULTI_NAMESPACE_OBJ_TYPE_2 and NON_MULTI_NAMESPACE_TYPE are omitted + ); + client = elasticsearchClientMock.createElasticsearchClient(); + + const serializer = new SavedObjectsSerializer(registry); + savedObjectsMock = savedObjectsRepositoryMock.create(); + savedObjectsMock.find.mockResolvedValue({ + pit_id: 'foo', + saved_objects: [], + // the rest of these fields don't matter but are included for type safety + total: 0, + page: 1, + per_page: 100, + }); + createPointInTimeFinder = jest.fn(); + createPointInTimeFinder.mockImplementation((params) => { + pointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ savedObjectsMock })(params); + return pointInTimeFinder; + }); + return { + registry, + allowedTypes: [ + MULTI_NAMESPACE_OBJ_TYPE_1, + MULTI_NAMESPACE_OBJ_TYPE_2, + NON_MULTI_NAMESPACE_OBJ_TYPE, + ], // MULTI_NAMESPACE_HIDDEN_TYPE is omitted + client, + serializer, + getIndexForType: (type: string) => `index-for-${type}`, + createPointInTimeFinder, + objects, + options, + }; + } + + /** Mocks the saved objects client so it returns the expected results */ + function mockMgetResults( + ...results: Array<{ + found: boolean; + references?: Array<{ type: string; id: string }>; + }> + ) { + client.mget.mockReturnValueOnce( + elasticsearchClientMock.createSuccessTransportRequestPromise({ + docs: results.map((x) => { + const references = + x.references?.map(({ type, id }) => ({ type, id, name: 'ref-name' })) ?? []; + return x.found + ? { + _id: 'doesnt-matter', + _index: 'doesnt-matter', + _source: { + namespaces: SPACES, + references, + }, + ...VERSION_PROPS, + found: true, + } + : { + _id: 'doesnt-matter', + _index: 'doesnt-matter', + found: false, + }; + }), + }) + ); + } + + function mockFindResults(...results: LegacyUrlAlias[]) { + savedObjectsMock.find.mockResolvedValueOnce({ + pit_id: 'foo', + saved_objects: results.map((attributes) => ({ + id: 'doesnt-matter', + type: LEGACY_URL_ALIAS_TYPE, + attributes, + references: [], + score: 0, // doesn't matter + })), + // the rest of these fields don't matter but are included for type safety + total: 0, + page: 1, + per_page: 100, + }); + } + + /** Asserts that mget is called for the given objects */ + function expectMgetArgs( + n: number, + ...objects: SavedObjectsCollectMultiNamespaceReferencesObject[] + ) { + const docs = objects.map(({ type, id }) => expect.objectContaining({ _id: `${type}:${id}` })); + expect(client.mget).toHaveBeenNthCalledWith(n, { body: { docs } }, expect.anything()); + } + + it('returns an empty array if no object args are passed in', async () => { + const params = setup([]); + + const result = await collectMultiNamespaceReferences(params); + expect(client.mget).not.toHaveBeenCalled(); + expect(result.objects).toEqual([]); + }); + + it('excludes args that have unsupported types', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: NON_MULTI_NAMESPACE_OBJ_TYPE, id: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_HIDDEN_OBJ_TYPE, id: 'id-3' }; + const params = setup([obj1, obj2, obj3]); + mockMgetResults({ found: true }); // results for obj1 + + const result = await collectMultiNamespaceReferences(params); + expect(client.mget).toHaveBeenCalledTimes(1); + expectMgetArgs(1, obj1); // the non-multi-namespace type and the hidden type are excluded + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [] }, + // even though they are excluded from the cluster call, obj2 and obj3 are included in the results + { ...obj2, spaces: [], inboundReferences: [] }, + { ...obj3, spaces: [], inboundReferences: [] }, + ]); + }); + + it('excludes references that have unsupported types', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: NON_MULTI_NAMESPACE_OBJ_TYPE, id: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_HIDDEN_OBJ_TYPE, id: 'id-3' }; + const params = setup([obj1]); + mockMgetResults({ found: true, references: [obj2, obj3] }); // results for obj1 + + const result = await collectMultiNamespaceReferences(params); + expect(client.mget).toHaveBeenCalledTimes(1); + expectMgetArgs(1, obj1); + // obj2 and obj3 are not retrieved in a second cluster call + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [] }, + // obj2 and obj3 are excluded from the results + ]); + }); + + it('handles circular references', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const params = setup([obj1]); + mockMgetResults({ found: true, references: [obj1] }); // results for obj1 + + const result = await collectMultiNamespaceReferences(params); + expect(params.client.mget).toHaveBeenCalledTimes(1); + expectMgetArgs(1, obj1); // obj1 is retrieved once, and it is not retrieved again in a second cluster call + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [{ ...obj1, name: 'ref-name' }] }, // obj1 reflects the inbound reference to itself + ]); + }); + + it('handles a reference graph more than 20 layers deep (circuit-breaker)', async () => { + const type = MULTI_NAMESPACE_OBJ_TYPE_1; + const params = setup([{ type, id: 'id-1' }]); + for (let i = 1; i < 100; i++) { + mockMgetResults({ found: true, references: [{ type, id: `id-${i + 1}` }] }); + } + + await expect(() => collectMultiNamespaceReferences(params)).rejects.toThrow( + /Exceeded maximum reference graph depth/ + ); + expect(params.client.mget).toHaveBeenCalledTimes(20); + }); + + it('handles multiple inbound references', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-3' }; + const params = setup([obj1, obj2]); + mockMgetResults({ found: true, references: [obj3] }, { found: true, references: [obj3] }); // results for obj1 and obj2 + mockMgetResults({ found: true }); // results for obj3 + + const result = await collectMultiNamespaceReferences(params); + expect(params.client.mget).toHaveBeenCalledTimes(2); + expectMgetArgs(1, obj1, obj2); + expectMgetArgs(2, obj3); // obj3 is retrieved in a second cluster call + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [] }, + { ...obj2, spaces: SPACES, inboundReferences: [] }, + { + ...obj3, + spaces: SPACES, + inboundReferences: [ + // obj3 reflects both inbound references + { ...obj1, name: 'ref-name' }, + { ...obj2, name: 'ref-name' }, + ], + }, + ]); + }); + + it('handles transitive references', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-3' }; + const params = setup([obj1]); + mockMgetResults({ found: true, references: [obj2] }); // results for obj1 + mockMgetResults({ found: true, references: [obj3] }); // results for obj2 + mockMgetResults({ found: true }); // results for obj3 + + const result = await collectMultiNamespaceReferences(params); + expect(params.client.mget).toHaveBeenCalledTimes(3); + expectMgetArgs(1, obj1); + expectMgetArgs(2, obj2); // obj2 is retrieved in a second cluster call + expectMgetArgs(3, obj3); // obj3 is retrieved in a third cluster call + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [] }, + { ...obj2, spaces: SPACES, inboundReferences: [{ ...obj1, name: 'ref-name' }] }, // obj2 reflects the inbound reference + { ...obj3, spaces: SPACES, inboundReferences: [{ ...obj2, name: 'ref-name' }] }, // obj3 reflects the inbound reference + ]); + }); + + it('handles missing objects and missing references', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; // found, with missing references to obj4 and obj5 + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-2' }; // missing object (found, but doesn't exist in the current space)) + const obj3 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-3' }; // missing object (not found + const obj4 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-4' }; // missing reference (found but doesn't exist in the current space) + const obj5 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-5' }; // missing reference (not found) + const params = setup([obj1, obj2, obj3]); + mockMgetResults({ found: true, references: [obj4, obj5] }, { found: true }, { found: false }); // results for obj1, obj2, and obj3 + mockMgetResults({ found: true }, { found: false }); // results for obj4 and obj5 + mockRawDocExistsInNamespace.mockReturnValueOnce(true); // for obj1 + mockRawDocExistsInNamespace.mockReturnValueOnce(false); // for obj2 + mockRawDocExistsInNamespace.mockReturnValueOnce(false); // for obj4 + + const result = await collectMultiNamespaceReferences(params); + expect(params.client.mget).toHaveBeenCalledTimes(2); + expectMgetArgs(1, obj1, obj2, obj3); + expectMgetArgs(2, obj4, obj5); + expect(mockRawDocExistsInNamespace).toHaveBeenCalledTimes(3); + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [] }, + { ...obj2, spaces: [], inboundReferences: [], isMissing: true }, + { ...obj3, spaces: [], inboundReferences: [], isMissing: true }, + { ...obj4, spaces: [], inboundReferences: [{ ...obj1, name: 'ref-name' }], isMissing: true }, + { ...obj5, spaces: [], inboundReferences: [{ ...obj1, name: 'ref-name' }], isMissing: true }, + ]); + }); + + it('handles the purpose="updateObjectsSpaces" option', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_2, id: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_OBJ_TYPE_2, id: 'id-3' }; + const params = setup([obj1, obj2], { purpose: 'updateObjectsSpaces' }); + mockMgetResults({ found: true, references: [obj3] }); // results for obj1 + + const result = await collectMultiNamespaceReferences(params); + expect(client.mget).toHaveBeenCalledTimes(1); + expectMgetArgs(1, obj1); // obj2 is excluded + // obj3 is not retrieved in a second cluster call + expect(result.objects).toEqual([ + { ...obj1, spaces: SPACES, inboundReferences: [] }, + // even though it is excluded from the cluster call, obj2 is included in the results + { ...obj2, spaces: [], inboundReferences: [] }, + // obj3 is excluded from the results + ]); + }); + + describe('legacy URL aliases', () => { + it('uses the PointInTimeFinder to search for legacy URL aliases', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-3' }; + const params = setup([obj1, obj2], {}); + mockMgetResults({ found: true, references: [obj3] }, { found: true, references: [] }); // results for obj1 and obj2 + mockMgetResults({ found: true, references: [] }); // results for obj3 + mockFindResults( + // mock search results for four aliases for obj1, and none for obj2 or obj3 + ...[1, 2, 3, 4].map((i) => ({ + sourceId: obj1.id, + targetId: 'doesnt-matter', + targetType: obj1.type, + targetNamespace: `space-${i}`, + })) + ); + + const result = await collectMultiNamespaceReferences(params); + expect(client.mget).toHaveBeenCalledTimes(2); + expectMgetArgs(1, obj1, obj2); + expectMgetArgs(2, obj3); // obj3 is retrieved in a second cluster call + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + const kueryFilterArgs = createPointInTimeFinder.mock.calls[0][0].filter.arguments; + expect(kueryFilterArgs).toHaveLength(2); + const typeAndIdFilters = kueryFilterArgs[1].arguments; + expect(typeAndIdFilters).toHaveLength(3); + [obj1, obj2, obj3].forEach(({ type, id }, i) => { + const typeAndIdFilter = typeAndIdFilters[i].arguments; + expect(typeAndIdFilter).toEqual([ + expect.objectContaining({ + arguments: expect.arrayContaining([{ type: 'literal', value: type }]), + }), + expect.objectContaining({ + arguments: expect.arrayContaining([{ type: 'literal', value: id }]), + }), + ]); + }); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); + expect(result.objects).toEqual([ + { + ...obj1, + spaces: SPACES, + inboundReferences: [], + spacesWithMatchingAliases: ['space-1', 'space-2', 'space-3', 'space-4'], + }, + { ...obj2, spaces: SPACES, inboundReferences: [] }, + { ...obj3, spaces: SPACES, inboundReferences: [{ ...obj1, name: 'ref-name' }] }, + ]); + }); + + it('does not create a PointInTimeFinder if no objects are passed in', async () => { + const params = setup([]); + + await collectMultiNamespaceReferences(params); + expect(params.createPointInTimeFinder).not.toHaveBeenCalled(); + }); + + it('does not search for objects that have an empty spaces array (the object does not exist, or we are not sure)', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-2' }; + const params = setup([obj1, obj2]); + mockMgetResults({ found: true }, { found: false }); // results for obj1 and obj2 + + await collectMultiNamespaceReferences(params); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + + const kueryFilterArgs = createPointInTimeFinder.mock.calls[0][0].filter.arguments; + expect(kueryFilterArgs).toHaveLength(2); + const typeAndIdFilters = kueryFilterArgs[1].arguments; + expect(typeAndIdFilters).toHaveLength(1); + const typeAndIdFilter = typeAndIdFilters[0].arguments; + expect(typeAndIdFilter).toEqual([ + expect.objectContaining({ + arguments: expect.arrayContaining([{ type: 'literal', value: obj1.type }]), + }), + expect.objectContaining({ + arguments: expect.arrayContaining([{ type: 'literal', value: obj1.id }]), + }), + ]); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); + }); + + it('does not search at all if all objects that have an empty spaces array (the object does not exist, or we are not sure)', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const params = setup([obj1]); + mockMgetResults({ found: false }); // results for obj1 + + await collectMultiNamespaceReferences(params); + expect(params.createPointInTimeFinder).not.toHaveBeenCalled(); + }); + + it('handles PointInTimeFinder.find errors', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const params = setup([obj1]); + mockMgetResults({ found: true }); // results for obj1 + savedObjectsMock.find.mockRejectedValue(new Error('Oh no!')); + + await expect(() => collectMultiNamespaceReferences(params)).rejects.toThrow( + 'Failed to retrieve legacy URL aliases: Oh no!' + ); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); // we still close the point-in-time, even though the search failed + }); + + it('handles PointInTimeFinder.close errors', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const params = setup([obj1]); + mockMgetResults({ found: true }); // results for obj1 + savedObjectsMock.closePointInTime.mockRejectedValue(new Error('Oh no!')); + + await expect(() => collectMultiNamespaceReferences(params)).rejects.toThrow( + 'Failed to retrieve legacy URL aliases: Oh no!' + ); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); + }); + }); +}); diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts new file mode 100644 index 0000000000000..43923695f6548 --- /dev/null +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts @@ -0,0 +1,310 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// @ts-expect-error no ts +import { esKuery } from '../../es_query'; + +import { LegacyUrlAlias, LEGACY_URL_ALIAS_TYPE } from '../../object_types'; +import type { ISavedObjectTypeRegistry } from '../../saved_objects_type_registry'; +import type { SavedObjectsSerializer } from '../../serialization'; +import type { SavedObject, SavedObjectsBaseOptions } from '../../types'; +import { getRootFields } from './included_fields'; +import { getSavedObjectFromSource, rawDocExistsInNamespace } from './internal_utils'; +import type { + ISavedObjectsPointInTimeFinder, + SavedObjectsCreatePointInTimeFinderOptions, +} from './point_in_time_finder'; +import type { RepositoryEsClient } from './repository_es_client'; + +/** + * When we collect an object's outbound references, we will only go a maximum of this many levels deep before we throw an error. + */ +const MAX_REFERENCE_GRAPH_DEPTH = 20; + +/** + * How many aliases to search for per page. This is smaller than the PointInTimeFinder's default of 1000. We specify 100 for the page count + * because this is a relatively unimportant operation, and we want to avoid blocking the Elasticsearch thread pool for longer than + * necessary. + */ +const ALIAS_SEARCH_PER_PAGE = 100; + +/** + * An object to collect references for. It must be a multi-namespace type (in other words, the object type must be registered with the + * `namespaceType: 'multiple'` or `namespaceType: 'multiple-isolated'` option). + * + * Note: if options.purpose is 'updateObjectsSpaces', it must be a shareable type (in other words, the object type must be registered with + * the `namespaceType: 'multiple'`). + * + * @public + */ +export interface SavedObjectsCollectMultiNamespaceReferencesObject { + id: string; + type: string; +} + +/** + * Options for collecting references. + * + * @public + */ +export interface SavedObjectsCollectMultiNamespaceReferencesOptions + extends SavedObjectsBaseOptions { + /** Optional purpose used to determine filtering and authorization checks; default is 'collectMultiNamespaceReferences' */ + purpose?: 'collectMultiNamespaceReferences' | 'updateObjectsSpaces'; +} + +/** + * A returned input object or one of its references, with additional context. + * + * @public + */ +export interface SavedObjectReferenceWithContext { + /** The type of the referenced object */ + type: string; + /** The ID of the referenced object */ + id: string; + /** The space(s) that the referenced object exists in */ + spaces: string[]; + /** + * References to this object; note that this does not contain _all inbound references everywhere for this object_, it only contains + * inbound references for the scope of this operation + */ + inboundReferences: Array<{ + /** The type of the object that has the inbound reference */ + type: string; + /** The ID of the object that has the inbound reference */ + id: string; + /** The name of the inbound reference */ + name: string; + }>; + /** Whether or not this object or reference is missing */ + isMissing?: boolean; + /** The space(s) that legacy URL aliases matching this type/id exist in */ + spacesWithMatchingAliases?: string[]; +} + +/** + * The response when object references are collected. + * + * @public + */ +export interface SavedObjectsCollectMultiNamespaceReferencesResponse { + objects: SavedObjectReferenceWithContext[]; +} + +/** + * Parameters for the collectMultiNamespaceReferences function. + * + * @internal + */ +export interface CollectMultiNamespaceReferencesParams { + registry: ISavedObjectTypeRegistry; + allowedTypes: string[]; + client: RepositoryEsClient; + serializer: SavedObjectsSerializer; + getIndexForType: (type: string) => string; + createPointInTimeFinder: ( + findOptions: SavedObjectsCreatePointInTimeFinderOptions + ) => ISavedObjectsPointInTimeFinder; + objects: SavedObjectsCollectMultiNamespaceReferencesObject[]; + options?: SavedObjectsCollectMultiNamespaceReferencesOptions; +} + +/** + * Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace + * type. + */ +export async function collectMultiNamespaceReferences( + params: CollectMultiNamespaceReferencesParams +): Promise { + const { createPointInTimeFinder, objects } = params; + if (!objects.length) { + return { objects: [] }; + } + + const { objectMap, inboundReferencesMap } = await getObjectsAndReferences(params); + const objectsWithContext = Array.from( + inboundReferencesMap.entries() + ).map(([referenceKey, referenceVal]) => { + const inboundReferences = Array.from(referenceVal.entries()).map(([objectKey, name]) => { + const { type, id } = parseKey(objectKey); + return { type, id, name }; + }); + const { type, id } = parseKey(referenceKey); + const object = objectMap.get(referenceKey); + const spaces = object?.namespaces ?? []; + return { type, id, spaces, inboundReferences, ...(object === null && { isMissing: true }) }; + }); + + const aliasesMap = await checkLegacyUrlAliases(createPointInTimeFinder, objectsWithContext); + const results = objectsWithContext.map((obj) => { + const key = getKey(obj); + const val = aliasesMap.get(key); + const spacesWithMatchingAliases = val && Array.from(val); + return { ...obj, spacesWithMatchingAliases }; + }); + + return { + objects: results, + }; +} + +/** + * Recursively fetches objects and their references, returning a map of the retrieved objects and a map of all inbound references. + */ +async function getObjectsAndReferences({ + registry, + allowedTypes, + client, + serializer, + getIndexForType, + objects, + options = {}, +}: CollectMultiNamespaceReferencesParams) { + const { namespace, purpose } = options; + const inboundReferencesMap = objects.reduce( + // Add the input objects to the references map so they are returned with the results, even if they have no inbound references + (acc, cur) => acc.set(getKey(cur), new Map()), + new Map>() + ); + const objectMap = new Map(); + + const rootFields = getRootFields(); + const makeBulkGetDocs = (objectsToGet: SavedObjectsCollectMultiNamespaceReferencesObject[]) => + objectsToGet.map(({ type, id }) => ({ + _id: serializer.generateRawId(undefined, type, id), + _index: getIndexForType(type), + _source: rootFields, // Optimized to only retrieve root fields (ignoring type-specific fields) + })); + const validObjectTypesFilter = ({ type }: SavedObjectsCollectMultiNamespaceReferencesObject) => + allowedTypes.includes(type) && + (purpose === 'updateObjectsSpaces' + ? registry.isShareable(type) + : registry.isMultiNamespace(type)); + + let bulkGetObjects = objects.filter(validObjectTypesFilter); + let count = 0; // this is a circuit-breaker to ensure we don't hog too many resources; we should never have an object graph this deep + while (bulkGetObjects.length) { + if (count >= MAX_REFERENCE_GRAPH_DEPTH) { + throw new Error( + `Exceeded maximum reference graph depth of ${MAX_REFERENCE_GRAPH_DEPTH} objects!` + ); + } + const bulkGetResponse = await client.mget( + { body: { docs: makeBulkGetDocs(bulkGetObjects) } }, + { ignore: [404] } + ); + const newObjectsToGet = new Set(); + for (let i = 0; i < bulkGetObjects.length; i++) { + // For every element in bulkGetObjects, there should be a matching element in bulkGetResponse.body.docs + const { type, id } = bulkGetObjects[i]; + const objectKey = getKey({ type, id }); + const doc = bulkGetResponse.body.docs[i]; + // @ts-expect-error MultiGetHit._source is optional + if (!doc.found || !rawDocExistsInNamespace(registry, doc, namespace)) { + objectMap.set(objectKey, null); + continue; + } + // @ts-expect-error MultiGetHit._source is optional + const object = getSavedObjectFromSource(registry, type, id, doc); + objectMap.set(objectKey, object); + for (const reference of object.references) { + if (!validObjectTypesFilter(reference)) { + continue; + } + const referenceKey = getKey(reference); + const referenceVal = inboundReferencesMap.get(referenceKey) ?? new Map(); + if (!referenceVal.has(objectKey)) { + inboundReferencesMap.set(referenceKey, referenceVal.set(objectKey, reference.name)); + } + if (!objectMap.has(referenceKey)) { + newObjectsToGet.add(referenceKey); + } + } + } + bulkGetObjects = Array.from(newObjectsToGet).map((key) => parseKey(key)); + count++; + } + + return { objectMap, inboundReferencesMap }; +} + +/** + * Fetches all legacy URL aliases that match the given objects, returning a map of the matching aliases and what space(s) they exist in. + */ +async function checkLegacyUrlAliases( + createPointInTimeFinder: ( + findOptions: SavedObjectsCreatePointInTimeFinderOptions + ) => ISavedObjectsPointInTimeFinder, + objects: SavedObjectReferenceWithContext[] +) { + const filteredObjects = objects.filter(({ spaces }) => spaces.length !== 0); + if (!filteredObjects.length) { + return new Map>(); + } + const filter = createAliasKueryFilter(filteredObjects); + const finder = createPointInTimeFinder({ + type: LEGACY_URL_ALIAS_TYPE, + perPage: ALIAS_SEARCH_PER_PAGE, + filter, + }); + const aliasesMap = new Map>(); + let error: Error | undefined; + try { + for await (const { saved_objects: savedObjects } of finder.find()) { + for (const alias of savedObjects) { + const { sourceId, targetType, targetNamespace } = alias.attributes; + const key = getKey({ type: targetType, id: sourceId }); + const val = aliasesMap.get(key) ?? new Set(); + val.add(targetNamespace); + aliasesMap.set(key, val); + } + } + } catch (e) { + error = e; + } + + try { + await finder.close(); + } catch (e) { + if (!error) { + error = e; + } + } + + if (error) { + throw new Error(`Failed to retrieve legacy URL aliases: ${error.message}`); + } + return aliasesMap; +} + +function createAliasKueryFilter(objects: SavedObjectReferenceWithContext[]) { + const { buildNode } = esKuery.nodeTypes.function; + const kueryNodes = objects.reduce((acc, { type, id }) => { + const match1 = buildNode('is', `${LEGACY_URL_ALIAS_TYPE}.attributes.targetType`, type); + const match2 = buildNode('is', `${LEGACY_URL_ALIAS_TYPE}.attributes.sourceId`, id); + acc.push(buildNode('and', [match1, match2])); + return acc; + }, []); + return buildNode('and', [ + buildNode('not', buildNode('is', `${LEGACY_URL_ALIAS_TYPE}.attributes.disabled`, true)), // ignore aliases that have been disabled + buildNode('or', kueryNodes), + ]); +} + +/** Takes an object with a `type` and `id` field and returns a key string */ +function getKey({ type, id }: { type: string; id: string }) { + return `${type}:${id}`; +} + +/** Parses a 'type:id' key string and returns an object with a `type` field and an `id` field */ +function parseKey(key: string) { + const type = key.slice(0, key.indexOf(':')); + const id = key.slice(type.length + 1); + return { type, id }; +} diff --git a/src/core/server/saved_objects/service/lib/included_fields.test.ts b/src/core/server/saved_objects/service/lib/included_fields.test.ts index 334cda91129f3..51c431b1c6b3b 100644 --- a/src/core/server/saved_objects/service/lib/included_fields.test.ts +++ b/src/core/server/saved_objects/service/lib/included_fields.test.ts @@ -6,125 +6,63 @@ * Side Public License, v 1. */ -import { includedFields } from './included_fields'; +import { getRootFields, includedFields } from './included_fields'; -const BASE_FIELD_COUNT = 10; +describe('getRootFields', () => { + it('returns copy of root fields', () => { + const fields = getRootFields(); + expect(fields).toMatchInlineSnapshot(` + Array [ + "namespace", + "namespaces", + "type", + "references", + "migrationVersion", + "coreMigrationVersion", + "updated_at", + "originId", + ] + `); + }); +}); describe('includedFields', () => { + const rootFields = getRootFields(); + it('returns undefined if fields are not provided', () => { expect(includedFields()).toBe(undefined); }); - it('accepts type string', () => { + it('accepts type and field as string', () => { const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('type'); + expect(fields).toEqual(['config.foo', ...rootFields, 'foo']); }); - it('accepts type as string array', () => { + it('accepts type as array and field as string', () => { const fields = includedFields(['config', 'secret'], 'foo'); - expect(fields).toMatchInlineSnapshot(` -Array [ - "config.foo", - "secret.foo", - "namespace", - "namespaces", - "type", - "references", - "migrationVersion", - "coreMigrationVersion", - "updated_at", - "originId", - "foo", -] -`); - }); - - it('accepts field as string', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('config.foo'); + expect(fields).toEqual(['config.foo', 'secret.foo', ...rootFields, 'foo']); }); - it('accepts fields as an array', () => { + it('accepts type as string and field as array', () => { const fields = includedFields('config', ['foo', 'bar']); - - expect(fields).toHaveLength(BASE_FIELD_COUNT + 2); - expect(fields).toContain('config.foo'); - expect(fields).toContain('config.bar'); + expect(fields).toEqual(['config.foo', 'config.bar', ...rootFields, 'foo', 'bar']); }); - it('accepts type as string array and fields as string array', () => { + it('accepts type as array and field as array', () => { const fields = includedFields(['config', 'secret'], ['foo', 'bar']); - expect(fields).toMatchInlineSnapshot(` -Array [ - "config.foo", - "config.bar", - "secret.foo", - "secret.bar", - "namespace", - "namespaces", - "type", - "references", - "migrationVersion", - "coreMigrationVersion", - "updated_at", - "originId", - "foo", - "bar", -] -`); - }); - - it('includes namespace', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('namespace'); - }); - - it('includes namespaces', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('namespaces'); - }); - - it('includes references', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('references'); - }); - - it('includes migrationVersion', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('migrationVersion'); - }); - - it('includes updated_at', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('updated_at'); - }); - - it('includes originId', () => { - const fields = includedFields('config', 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('originId'); + expect(fields).toEqual([ + 'config.foo', + 'config.bar', + 'secret.foo', + 'secret.bar', + ...rootFields, + 'foo', + 'bar', + ]); }); it('uses wildcard when type is not provided', () => { const fields = includedFields(undefined, 'foo'); - expect(fields).toHaveLength(BASE_FIELD_COUNT); - expect(fields).toContain('*.foo'); - }); - - describe('v5 compatibility', () => { - it('includes legacy field path', () => { - const fields = includedFields('config', ['foo', 'bar']); - - expect(fields).toHaveLength(BASE_FIELD_COUNT + 2); - expect(fields).toContain('foo'); - expect(fields).toContain('bar'); - }); + expect(fields).toEqual(['*.foo', ...rootFields, 'foo']); }); }); diff --git a/src/core/server/saved_objects/service/lib/included_fields.ts b/src/core/server/saved_objects/service/lib/included_fields.ts index cef83f103ec53..9613d8f6a4a41 100644 --- a/src/core/server/saved_objects/service/lib/included_fields.ts +++ b/src/core/server/saved_objects/service/lib/included_fields.ts @@ -9,6 +9,22 @@ function toArray(value: string | string[]): string[] { return typeof value === 'string' ? [value] : value; } + +const ROOT_FIELDS = [ + 'namespace', + 'namespaces', + 'type', + 'references', + 'migrationVersion', + 'coreMigrationVersion', + 'updated_at', + 'originId', +]; + +export function getRootFields() { + return [...ROOT_FIELDS]; +} + /** * Provides an array of paths for ES source filtering */ @@ -28,13 +44,6 @@ export function includedFields( .reduce((acc: string[], t) => { return [...acc, ...sourceFields.map((f) => `${t}.${f}`)]; }, []) - .concat('namespace') - .concat('namespaces') - .concat('type') - .concat('references') - .concat('migrationVersion') - .concat('coreMigrationVersion') - .concat('updated_at') - .concat('originId') + .concat(ROOT_FIELDS) .concat(fields); // v5 compatibility } diff --git a/src/core/server/saved_objects/service/lib/index.ts b/src/core/server/saved_objects/service/lib/index.ts index 09bce81b14c39..661d04b8a0b2a 100644 --- a/src/core/server/saved_objects/service/lib/index.ts +++ b/src/core/server/saved_objects/service/lib/index.ts @@ -27,3 +27,17 @@ export type { export { SavedObjectsErrorHelpers } from './errors'; export { SavedObjectsUtils } from './utils'; + +export type { + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectReferenceWithContext, + SavedObjectsCollectMultiNamespaceReferencesResponse, +} from './collect_multi_namespace_references'; + +export type { + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, + SavedObjectsUpdateObjectsSpacesResponse, + SavedObjectsUpdateObjectsSpacesResponseObject, +} from './update_objects_spaces'; diff --git a/src/core/server/saved_objects/service/lib/internal_utils.test.ts b/src/core/server/saved_objects/service/lib/internal_utils.test.ts new file mode 100644 index 0000000000000..d1fd067990f07 --- /dev/null +++ b/src/core/server/saved_objects/service/lib/internal_utils.test.ts @@ -0,0 +1,243 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { typeRegistryMock } from '../../saved_objects_type_registry.mock'; +import type { SavedObjectsRawDoc } from '../../serialization'; +import { encodeHitVersion } from '../../version'; +import { + getBulkOperationError, + getSavedObjectFromSource, + rawDocExistsInNamespace, +} from './internal_utils'; +import { ALL_NAMESPACES_STRING } from './utils'; + +describe('#getBulkOperationError', () => { + const type = 'obj-type'; + const id = 'obj-id'; + + it('returns index not found error', () => { + const rawResponse = { + status: 404, + error: { type: 'index_not_found_exception', reason: 'some-reason', index: 'some-index' }, + }; + + const result = getBulkOperationError(type, id, rawResponse); + expect(result).toEqual({ + error: 'Internal Server Error', + message: 'An internal server error occurred', // TODO: this error payload is not very helpful to consumers, can we change it? + statusCode: 500, + }); + }); + + it('returns generic not found error', () => { + const rawResponse = { + status: 404, + error: { type: 'anything', reason: 'some-reason', index: 'some-index' }, + }; + + const result = getBulkOperationError(type, id, rawResponse); + expect(result).toEqual({ + error: 'Not Found', + message: `Saved object [${type}/${id}] not found`, + statusCode: 404, + }); + }); + + it('returns conflict error', () => { + const rawResponse = { + status: 409, + error: { type: 'anything', reason: 'some-reason', index: 'some-index' }, + }; + + const result = getBulkOperationError(type, id, rawResponse); + expect(result).toEqual({ + error: 'Conflict', + message: `Saved object [${type}/${id}] conflict`, + statusCode: 409, + }); + }); + + it('returns an unexpected result error', () => { + const rawResponse = { + status: 123, // any status + error: { type: 'anything', reason: 'some-reason', index: 'some-index' }, + }; + + const result = getBulkOperationError(type, id, rawResponse); + expect(result).toEqual({ + error: 'Internal Server Error', + message: `Unexpected bulk response [${rawResponse.status}] ${rawResponse.error.type}: ${rawResponse.error.reason}`, + statusCode: 500, + }); + }); +}); + +describe('#getSavedObjectFromSource', () => { + const NAMESPACE_AGNOSTIC_TYPE = 'agnostic-type'; + const NON_NAMESPACE_AGNOSTIC_TYPE = 'other-type'; + + const registry = typeRegistryMock.create(); + registry.isNamespaceAgnostic.mockImplementation((type) => type === NAMESPACE_AGNOSTIC_TYPE); + + const id = 'obj-id'; + const _seq_no = 1; + const _primary_term = 1; + const attributes = { foo: 'bar' }; + const references = [{ type: 'ref-type', id: 'ref-id', name: 'ref-name' }]; + const migrationVersion = { foo: 'migrationVersion' }; + const coreMigrationVersion = 'coreMigrationVersion'; + const originId = 'originId'; + // eslint-disable-next-line @typescript-eslint/naming-convention + const updated_at = 'updatedAt'; + + function createRawDoc( + type: string, + namespaceAttrs?: { namespace?: string; namespaces?: string[] } + ) { + return { + // other fields exist on the raw document, but they are not relevant to these test cases + _seq_no, + _primary_term, + _source: { + type, + [type]: attributes, + references, + migrationVersion, + coreMigrationVersion, + originId, + updated_at, + ...namespaceAttrs, + }, + }; + } + + it('returns object with expected attributes', () => { + const type = 'any-type'; + const doc = createRawDoc(type); + + const result = getSavedObjectFromSource(registry, type, id, doc); + expect(result).toEqual({ + attributes, + coreMigrationVersion, + id, + migrationVersion, + namespaces: expect.anything(), // see specific test cases below + originId, + references, + type, + updated_at, + version: encodeHitVersion(doc), + }); + }); + + it('returns object with empty namespaces array when type is namespace-agnostic', () => { + const type = NAMESPACE_AGNOSTIC_TYPE; + const doc = createRawDoc(type); + + const result = getSavedObjectFromSource(registry, type, id, doc); + expect(result).toEqual(expect.objectContaining({ namespaces: [] })); + }); + + it('returns object with namespaces when type is not namespace-agnostic and namespaces array is defined', () => { + const type = NON_NAMESPACE_AGNOSTIC_TYPE; + const namespaces = ['foo-ns', 'bar-ns']; + const doc = createRawDoc(type, { namespaces }); + + const result = getSavedObjectFromSource(registry, type, id, doc); + expect(result).toEqual(expect.objectContaining({ namespaces })); + }); + + it('derives namespaces from namespace attribute when type is not namespace-agnostic and namespaces array is not defined', () => { + // Deriving namespaces from the namespace attribute is an implementation detail of SavedObjectsUtils.namespaceIdToString(). + // However, these test cases assertions are written out anyway for clarity. + const type = NON_NAMESPACE_AGNOSTIC_TYPE; + const doc1 = createRawDoc(type, { namespace: undefined }); + const doc2 = createRawDoc(type, { namespace: 'foo-ns' }); + + const result1 = getSavedObjectFromSource(registry, type, id, doc1); + const result2 = getSavedObjectFromSource(registry, type, id, doc2); + expect(result1).toEqual(expect.objectContaining({ namespaces: ['default'] })); + expect(result2).toEqual(expect.objectContaining({ namespaces: ['foo-ns'] })); + }); +}); + +describe('#rawDocExistsInNamespace', () => { + const SINGLE_NAMESPACE_TYPE = 'single-type'; + const MULTI_NAMESPACE_TYPE = 'multi-type'; + const NAMESPACE_AGNOSTIC_TYPE = 'agnostic-type'; + + const registry = typeRegistryMock.create(); + registry.isSingleNamespace.mockImplementation((type) => type === SINGLE_NAMESPACE_TYPE); + registry.isMultiNamespace.mockImplementation((type) => type === MULTI_NAMESPACE_TYPE); + registry.isNamespaceAgnostic.mockImplementation((type) => type === NAMESPACE_AGNOSTIC_TYPE); + + function createRawDoc( + type: string, + namespaceAttrs: { namespace?: string; namespaces?: string[] } + ) { + return { + // other fields exist on the raw document, but they are not relevant to these test cases + _source: { + type, + ...namespaceAttrs, + }, + } as SavedObjectsRawDoc; + } + + describe('single-namespace type', () => { + it('returns true regardless of namespace or namespaces fields', () => { + // Technically, a single-namespace type does not exist in a space unless it has a namespace prefix in its raw ID and a matching + // 'namespace' field. However, historically we have not enforced the latter, we have just relied on searching for and deserializing + // documents with the correct namespace prefix. We may revisit this in the future. + const doc1 = createRawDoc(SINGLE_NAMESPACE_TYPE, { namespace: 'some-space' }); // the namespace field is ignored + const doc2 = createRawDoc(SINGLE_NAMESPACE_TYPE, { namespaces: ['some-space'] }); // the namespaces field is ignored + expect(rawDocExistsInNamespace(registry, doc1, undefined)).toBe(true); + expect(rawDocExistsInNamespace(registry, doc1, 'some-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, doc1, 'other-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, doc2, undefined)).toBe(true); + expect(rawDocExistsInNamespace(registry, doc2, 'some-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, doc2, 'other-space')).toBe(true); + }); + }); + + describe('multi-namespace type', () => { + const docInDefaultSpace = createRawDoc(MULTI_NAMESPACE_TYPE, { namespaces: ['default'] }); + const docInSomeSpace = createRawDoc(MULTI_NAMESPACE_TYPE, { namespaces: ['some-space'] }); + const docInAllSpaces = createRawDoc(MULTI_NAMESPACE_TYPE, { + namespaces: [ALL_NAMESPACES_STRING], + }); + const docInNoSpace = createRawDoc(MULTI_NAMESPACE_TYPE, { namespaces: [] }); + + it('returns true when the document namespaces matches', () => { + expect(rawDocExistsInNamespace(registry, docInDefaultSpace, undefined)).toBe(true); + expect(rawDocExistsInNamespace(registry, docInAllSpaces, undefined)).toBe(true); + expect(rawDocExistsInNamespace(registry, docInSomeSpace, 'some-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, docInAllSpaces, 'some-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, docInAllSpaces, 'other-space')).toBe(true); + }); + + it('returns false when the document namespace does not match', () => { + expect(rawDocExistsInNamespace(registry, docInDefaultSpace, 'other-space')).toBe(false); + expect(rawDocExistsInNamespace(registry, docInSomeSpace, 'other-space')).toBe(false); + expect(rawDocExistsInNamespace(registry, docInNoSpace, 'other-space')).toBe(false); + }); + }); + + describe('namespace-agnostic type', () => { + it('returns true regardless of namespace or namespaces fields', () => { + const doc1 = createRawDoc(NAMESPACE_AGNOSTIC_TYPE, { namespace: 'some-space' }); // the namespace field is ignored + const doc2 = createRawDoc(NAMESPACE_AGNOSTIC_TYPE, { namespaces: ['some-space'] }); // the namespaces field is ignored + expect(rawDocExistsInNamespace(registry, doc1, undefined)).toBe(true); + expect(rawDocExistsInNamespace(registry, doc1, 'some-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, doc1, 'other-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, doc2, undefined)).toBe(true); + expect(rawDocExistsInNamespace(registry, doc2, 'some-space')).toBe(true); + expect(rawDocExistsInNamespace(registry, doc2, 'other-space')).toBe(true); + }); + }); +}); diff --git a/src/core/server/saved_objects/service/lib/internal_utils.ts b/src/core/server/saved_objects/service/lib/internal_utils.ts new file mode 100644 index 0000000000000..feaaea15649c7 --- /dev/null +++ b/src/core/server/saved_objects/service/lib/internal_utils.ts @@ -0,0 +1,143 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { Payload } from '@hapi/boom'; +import type { ISavedObjectTypeRegistry } from '../../saved_objects_type_registry'; +import type { SavedObjectsRawDoc, SavedObjectsRawDocSource } from '../../serialization'; +import type { SavedObject } from '../../types'; +import { decodeRequestVersion, encodeHitVersion } from '../../version'; +import { SavedObjectsErrorHelpers } from './errors'; +import { ALL_NAMESPACES_STRING, SavedObjectsUtils } from './utils'; + +/** + * Checks the raw response of a bulk operation and returns an error if necessary. + * + * @param type + * @param id + * @param rawResponse + * + * @internal + */ +export function getBulkOperationError( + type: string, + id: string, + rawResponse: { + status: number; + error?: { type: string; reason: string; index: string }; + // Other fields are present on a bulk operation result but they are irrelevant for this function + } +): Payload | undefined { + const { status, error } = rawResponse; + if (error) { + switch (status) { + case 404: + return error.type === 'index_not_found_exception' + ? SavedObjectsErrorHelpers.createIndexAliasNotFoundError(error.index).output.payload + : SavedObjectsErrorHelpers.createGenericNotFoundError(type, id).output.payload; + case 409: + return SavedObjectsErrorHelpers.createConflictError(type, id).output.payload; + default: + return { + error: 'Internal Server Error', + message: `Unexpected bulk response [${status}] ${error.type}: ${error.reason}`, + statusCode: 500, + }; + } + } +} + +/** + * Returns an object with the expected version properties. This facilitates Elasticsearch's Optimistic Concurrency Control. + * + * @param version Optional version specified by the consumer. + * @param document Optional existing document that was obtained in a preflight operation. + * + * @internal + */ +export function getExpectedVersionProperties(version?: string, document?: SavedObjectsRawDoc) { + if (version) { + return decodeRequestVersion(version); + } else if (document) { + return { + if_seq_no: document._seq_no, + if_primary_term: document._primary_term, + }; + } + return {}; +} + +/** + * Gets a saved object from a raw ES document. + * + * @param registry + * @param type + * @param id + * @param doc + * + * @internal + */ +export function getSavedObjectFromSource( + registry: ISavedObjectTypeRegistry, + type: string, + id: string, + doc: { _seq_no?: number; _primary_term?: number; _source: SavedObjectsRawDocSource } +): SavedObject { + const { originId, updated_at: updatedAt } = doc._source; + + let namespaces: string[] = []; + if (!registry.isNamespaceAgnostic(type)) { + namespaces = doc._source.namespaces ?? [ + SavedObjectsUtils.namespaceIdToString(doc._source.namespace), + ]; + } + + return { + id, + type, + namespaces, + ...(originId && { originId }), + ...(updatedAt && { updated_at: updatedAt }), + version: encodeHitVersion(doc), + attributes: doc._source[type], + references: doc._source.references || [], + migrationVersion: doc._source.migrationVersion, + coreMigrationVersion: doc._source.coreMigrationVersion, + }; +} + +/** + * Check to ensure that a raw document exists in a namespace. If the document is not a multi-namespace type, then this returns `true` as + * we rely on the guarantees of the document ID format. If the document is a multi-namespace type, this checks to ensure that the + * document's `namespaces` value includes the string representation of the given namespace. + * + * WARNING: This should only be used for documents that were retrieved from Elasticsearch. Otherwise, the guarantees of the document ID + * format mentioned above do not apply. + * + * @param registry + * @param raw + * @param namespace + */ +export function rawDocExistsInNamespace( + registry: ISavedObjectTypeRegistry, + raw: SavedObjectsRawDoc, + namespace: string | undefined +) { + const rawDocType = raw._source.type; + + // if the type is namespace isolated, or namespace agnostic, we can continue to rely on the guarantees + // of the document ID format and don't need to check this + if (!registry.isMultiNamespace(rawDocType)) { + return true; + } + + const namespaces = raw._source.namespaces; + const existsInNamespace = + namespaces?.includes(SavedObjectsUtils.namespaceIdToString(namespace)) || + namespaces?.includes(ALL_NAMESPACES_STRING); + return existsInNamespace ?? false; +} diff --git a/src/core/server/saved_objects/service/lib/point_in_time_finder.ts b/src/core/server/saved_objects/service/lib/point_in_time_finder.ts index 9a8dcceafebb2..f0ed943c585e5 100644 --- a/src/core/server/saved_objects/service/lib/point_in_time_finder.ts +++ b/src/core/server/saved_objects/service/lib/point_in_time_finder.ts @@ -39,14 +39,14 @@ export interface PointInTimeFinderDependencies } /** @public */ -export interface ISavedObjectsPointInTimeFinder { +export interface ISavedObjectsPointInTimeFinder { /** * An async generator which wraps calls to `savedObjectsClient.find` and * iterates over multiple pages of results using `_pit` and `search_after`. * This will open a new Point-In-Time (PIT), and continue paging until a set * of results is received that's smaller than the designated `perPage` size. */ - find: () => AsyncGenerator; + find: () => AsyncGenerator>; /** * Closes the Point-In-Time associated with this finder instance. * @@ -63,7 +63,8 @@ export interface ISavedObjectsPointInTimeFinder { /** * @internal */ -export class PointInTimeFinder implements ISavedObjectsPointInTimeFinder { +export class PointInTimeFinder + implements ISavedObjectsPointInTimeFinder { readonly #log: Logger; readonly #client: PointInTimeFinderClient; readonly #findOptions: SavedObjectsFindOptions; @@ -162,7 +163,7 @@ export class PointInTimeFinder implements ISavedObjectsPointInTimeFinder { searchAfter?: estypes.Id[]; }) { try { - return await this.#client.find({ + return await this.#client.find({ // Sort fields are required to use searchAfter, so we set some defaults here sortField: 'updated_at', sortOrder: 'desc', diff --git a/src/core/server/saved_objects/service/lib/repository.mock.ts b/src/core/server/saved_objects/service/lib/repository.mock.ts index a2092e0571808..0e1426a58f8ae 100644 --- a/src/core/server/saved_objects/service/lib/repository.mock.ts +++ b/src/core/server/saved_objects/service/lib/repository.mock.ts @@ -24,11 +24,11 @@ const create = () => { openPointInTimeForType: jest.fn().mockResolvedValue({ id: 'some_pit_id' }), resolve: jest.fn(), update: jest.fn(), - addToNamespaces: jest.fn(), - deleteFromNamespaces: jest.fn(), deleteByNamespace: jest.fn(), incrementCounter: jest.fn(), removeReferencesTo: jest.fn(), + collectMultiNamespaceReferences: jest.fn(), + updateObjectsSpaces: jest.fn(), }; mock.createPointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ diff --git a/src/core/server/saved_objects/service/lib/repository.test.js b/src/core/server/saved_objects/service/lib/repository.test.js index 33754d0ad9661..22c40a547f419 100644 --- a/src/core/server/saved_objects/service/lib/repository.test.js +++ b/src/core/server/saved_objects/service/lib/repository.test.js @@ -6,7 +6,12 @@ * Side Public License, v 1. */ -import { pointInTimeFinderMock } from './repository.test.mock'; +import { + pointInTimeFinderMock, + mockCollectMultiNamespaceReferences, + mockGetBulkOperationError, + mockUpdateObjectsSpaces, +} from './repository.test.mock'; import { SavedObjectsRepository } from './repository'; import * as getSearchDslNS from './search_dsl/search_dsl'; @@ -67,9 +72,9 @@ describe('SavedObjectsRepository', () => { * This type has namespaceType: 'multiple-isolated'. * * That means that the object is serialized with a globally unique ID across namespaces. It also means that the object is NOT shareable - * across namespaces. This distinction only matters when using the `addToNamespaces` and `deleteFromNamespaces` APIs, or when using the - * `initialNamespaces` argument with the `create` and `bulkCreate` APIs. Those allow you to define or change what namespaces an object - * exists in. + * across namespaces. This distinction only matters when using the `collectMultiNamespaceReferences` or `updateObjectsSpaces` APIs, or + * when using the `initialNamespaces` argument with the `create` and `bulkCreate` APIs. Those allow you to define or change what + * namespaces an object exists in. * * In a nutshell, this type is more restrictive than `MULTI_NAMESPACE_TYPE`, so we use `MULTI_NAMESPACE_ISOLATED_TYPE` for any test cases * where `MULTI_NAMESPACE_TYPE` would also satisfy the test case. @@ -295,164 +300,6 @@ describe('SavedObjectsRepository', () => { references: [{ name: 'search_0', type: 'search', id: '123' }], }); - describe('#addToNamespaces', () => { - const id = 'some-id'; - const type = MULTI_NAMESPACE_TYPE; - const currentNs1 = 'default'; - const currentNs2 = 'foo-namespace'; - const newNs1 = 'bar-namespace'; - const newNs2 = 'baz-namespace'; - - const mockGetResponse = (type, id) => { - // mock a document that exists in two namespaces - const mockResponse = getMockGetResponse({ type, id }); - mockResponse._source.namespaces = [currentNs1, currentNs2]; - client.get.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise(mockResponse) - ); - }; - - const addToNamespacesSuccess = async (type, id, namespaces, options) => { - mockGetResponse(type, id); - client.update.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - _id: `${type}:${id}`, - ...mockVersionProps, - result: 'updated', - }) - ); - const result = await savedObjectsRepository.addToNamespaces(type, id, namespaces, options); - expect(client.get).toHaveBeenCalledTimes(1); - expect(client.update).toHaveBeenCalledTimes(1); - return result; - }; - - describe('client calls', () => { - it(`should use ES get action then update action`, async () => { - await addToNamespacesSuccess(type, id, [newNs1, newNs2]); - }); - - it(`defaults to the version of the existing document`, async () => { - await addToNamespacesSuccess(type, id, [newNs1, newNs2]); - const versionProperties = { - if_seq_no: mockVersionProps._seq_no, - if_primary_term: mockVersionProps._primary_term, - }; - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining(versionProperties), - expect.anything() - ); - }); - - it(`accepts version`, async () => { - await addToNamespacesSuccess(type, id, [newNs1, newNs2], { - version: encodeHitVersion({ _seq_no: 100, _primary_term: 200 }), - }); - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ if_seq_no: 100, if_primary_term: 200 }), - expect.anything() - ); - }); - - it(`defaults to a refresh setting of wait_for`, async () => { - await addToNamespacesSuccess(type, id, [newNs1, newNs2]); - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ refresh: 'wait_for' }), - expect.anything() - ); - }); - }); - - describe('errors', () => { - const expectNotFoundError = async (type, id, namespaces, options) => { - await expect( - savedObjectsRepository.addToNamespaces(type, id, namespaces, options) - ).rejects.toThrowError(createGenericNotFoundError(type, id)); - }; - const expectBadRequestError = async (type, id, namespaces, message) => { - await expect( - savedObjectsRepository.addToNamespaces(type, id, namespaces) - ).rejects.toThrowError(createBadRequestError(message)); - }; - - it(`throws when type is invalid`, async () => { - await expectNotFoundError('unknownType', id, [newNs1, newNs2]); - expect(client.update).not.toHaveBeenCalled(); - }); - - it(`throws when type is hidden`, async () => { - await expectNotFoundError(HIDDEN_TYPE, id, [newNs1, newNs2]); - expect(client.update).not.toHaveBeenCalled(); - }); - - it(`throws when type is not shareable`, async () => { - const test = async (type) => { - const message = `${type} doesn't support multiple namespaces`; - await expectBadRequestError(type, id, [newNs1, newNs2], message); - expect(client.update).not.toHaveBeenCalled(); - }; - await test('index-pattern'); - await test(MULTI_NAMESPACE_ISOLATED_TYPE); - await test(NAMESPACE_AGNOSTIC_TYPE); - }); - - it(`throws when namespaces is an empty array`, async () => { - const test = async (namespaces) => { - const message = 'namespaces must be a non-empty array of strings'; - await expectBadRequestError(type, id, namespaces, message); - expect(client.update).not.toHaveBeenCalled(); - }; - await test([]); - }); - - it(`throws when ES is unable to find the document during get`, async () => { - client.get.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({ found: false }) - ); - await expectNotFoundError(type, id, [newNs1, newNs2]); - expect(client.get).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES is unable to find the index during get`, async () => { - client.get.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({}, { statusCode: 404 }) - ); - await expectNotFoundError(type, id, [newNs1, newNs2]); - expect(client.get).toHaveBeenCalledTimes(1); - }); - - it(`throws when the document exists, but not in this namespace`, async () => { - mockGetResponse(type, id); - await expectNotFoundError(type, id, [newNs1, newNs2], { - namespace: 'some-other-namespace', - }); - expect(client.get).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES is unable to find the document during update`, async () => { - mockGetResponse(type, id); - client.update.mockResolvedValue( - elasticsearchClientMock.createSuccessTransportRequestPromise({}, { statusCode: 404 }) - ); - await expectNotFoundError(type, id, [newNs1, newNs2]); - expect(client.get).toHaveBeenCalledTimes(1); - expect(client.update).toHaveBeenCalledTimes(1); - }); - }); - - describe('returns', () => { - it(`returns all existing and new namespaces on success`, async () => { - const result = await addToNamespacesSuccess(type, id, [newNs1, newNs2]); - expect(result).toEqual({ namespaces: [currentNs1, currentNs2, newNs1, newNs2] }); - }); - - it(`succeeds when adding existing namespaces`, async () => { - const result = await addToNamespacesSuccess(type, id, [currentNs1]); - expect(result).toEqual({ namespaces: [currentNs1, currentNs2] }); - }); - }); - }); - describe('#bulkCreate', () => { const obj1 = { type: 'config', @@ -757,6 +604,10 @@ describe('SavedObjectsRepository', () => { }); describe('errors', () => { + afterEach(() => { + mockGetBulkOperationError.mockReset(); + }); + const obj3 = { type: 'dashboard', id: 'three', @@ -764,11 +615,13 @@ describe('SavedObjectsRepository', () => { references: [{ name: 'ref_0', type: 'test', id: '2' }], }; - const bulkCreateError = async (obj, esError, expectedError) => { + const bulkCreateError = async (obj, isBulkError, expectedErrorResult) => { let response; - if (esError) { + if (isBulkError) { + // mock the bulk error for only the second object + mockGetBulkOperationError.mockReturnValueOnce(undefined); + mockGetBulkOperationError.mockReturnValueOnce(expectedErrorResult.error); response = getMockBulkCreateResponse([obj1, obj, obj2]); - response.items[1].create = { error: esError }; } else { response = getMockBulkCreateResponse([obj1, obj2]); } @@ -779,14 +632,14 @@ describe('SavedObjectsRepository', () => { const objects = [obj1, obj, obj2]; const result = await savedObjectsRepository.bulkCreate(objects); expect(client.bulk).toHaveBeenCalled(); - const objCall = esError ? expectObjArgs(obj) : []; + const objCall = isBulkError ? expectObjArgs(obj) : []; const body = [...expectObjArgs(obj1), ...objCall, ...expectObjArgs(obj2)]; expect(client.bulk).toHaveBeenCalledWith( expect.objectContaining({ body }), expect.anything() ); expect(result).toEqual({ - saved_objects: [expectSuccess(obj1), expectedError, expectSuccess(obj2)], + saved_objects: [expectSuccess(obj1), expectedErrorResult, expectSuccess(obj2)], }); }; @@ -878,25 +731,9 @@ describe('SavedObjectsRepository', () => { }); }); - it(`returns error when there is a version conflict (bulk)`, async () => { - const esError = { type: 'version_conflict_engine_exception' }; - await bulkCreateError(obj3, esError, expectErrorConflict(obj3)); - }); - - it(`returns error when document is missing`, async () => { - const esError = { type: 'document_missing_exception' }; - await bulkCreateError(obj3, esError, expectErrorNotFound(obj3)); - }); - - it(`returns error reason for other errors`, async () => { - const esError = { reason: 'some_other_error' }; - await bulkCreateError(obj3, esError, expectErrorResult(obj3, { message: esError.reason })); - }); - - it(`returns error string for other errors if no reason is defined`, async () => { - const esError = { foo: 'some_other_error' }; - const expectedError = expectErrorResult(obj3, { message: JSON.stringify(esError) }); - await bulkCreateError(obj3, esError, expectedError); + it(`returns bulk error`, async () => { + const expectedErrorResult = { type: obj3.type, id: obj3.id, error: 'Oh no, a bulk error!' }; + await bulkCreateError(obj3, true, expectedErrorResult); }); }); @@ -1530,16 +1367,22 @@ describe('SavedObjectsRepository', () => { }); describe('errors', () => { + afterEach(() => { + mockGetBulkOperationError.mockReset(); + }); + const obj = { type: 'dashboard', id: 'three', }; - const bulkUpdateError = async (obj, esError, expectedError) => { + const bulkUpdateError = async (obj, isBulkError, expectedErrorResult) => { const objects = [obj1, obj, obj2]; const mockResponse = getMockBulkUpdateResponse(objects); - if (esError) { - mockResponse.items[1].update = { error: esError }; + if (isBulkError) { + // mock the bulk error for only the second object + mockGetBulkOperationError.mockReturnValueOnce(undefined); + mockGetBulkOperationError.mockReturnValueOnce(expectedErrorResult.error); } client.bulk.mockResolvedValueOnce( elasticsearchClientMock.createSuccessTransportRequestPromise(mockResponse) @@ -1547,14 +1390,14 @@ describe('SavedObjectsRepository', () => { const result = await savedObjectsRepository.bulkUpdate(objects); expect(client.bulk).toHaveBeenCalled(); - const objCall = esError ? expectObjArgs(obj) : []; + const objCall = isBulkError ? expectObjArgs(obj) : []; const body = [...expectObjArgs(obj1), ...objCall, ...expectObjArgs(obj2)]; expect(client.bulk).toHaveBeenCalledWith( expect.objectContaining({ body }), expect.anything() ); expect(result).toEqual({ - saved_objects: [expectSuccess(obj1), expectedError, expectSuccess(obj2)], + saved_objects: [expectSuccess(obj1), expectedErrorResult, expectSuccess(obj2)], }); }; @@ -1592,19 +1435,19 @@ describe('SavedObjectsRepository', () => { it(`returns error when type is invalid`, async () => { const _obj = { ...obj, type: 'unknownType' }; - await bulkUpdateError(_obj, undefined, expectErrorNotFound(_obj)); + await bulkUpdateError(_obj, false, expectErrorNotFound(_obj)); }); it(`returns error when type is hidden`, async () => { const _obj = { ...obj, type: HIDDEN_TYPE }; - await bulkUpdateError(_obj, undefined, expectErrorNotFound(_obj)); + await bulkUpdateError(_obj, false, expectErrorNotFound(_obj)); }); it(`returns error when object namespace is '*'`, async () => { const _obj = { ...obj, namespace: '*' }; await bulkUpdateError( _obj, - undefined, + false, expectErrorResult(obj, createBadRequestError('"namespace" cannot be "*"')) ); }); @@ -1627,25 +1470,9 @@ describe('SavedObjectsRepository', () => { await bulkUpdateMultiError([obj1, _obj, obj2], { namespace }, mgetResponse); }); - it(`returns error when there is a version conflict (bulk)`, async () => { - const esError = { type: 'version_conflict_engine_exception' }; - await bulkUpdateError(obj, esError, expectErrorConflict(obj)); - }); - - it(`returns error when document is missing (bulk)`, async () => { - const esError = { type: 'document_missing_exception' }; - await bulkUpdateError(obj, esError, expectErrorNotFound(obj)); - }); - - it(`returns error reason for other errors (bulk)`, async () => { - const esError = { reason: 'some_other_error' }; - await bulkUpdateError(obj, esError, expectErrorResult(obj, { message: esError.reason })); - }); - - it(`returns error string for other errors if no reason is defined (bulk)`, async () => { - const esError = { foo: 'some_other_error' }; - const expectedError = expectErrorResult(obj, { message: JSON.stringify(esError) }); - await bulkUpdateError(obj, esError, expectedError); + it(`returns bulk error`, async () => { + const expectedErrorResult = { type: obj.type, id: obj.id, error: 'Oh no, a bulk error!' }; + await bulkUpdateError(obj, true, expectedErrorResult); }); }); @@ -3898,352 +3725,6 @@ describe('SavedObjectsRepository', () => { }); }); - describe('#deleteFromNamespaces', () => { - const id = 'some-id'; - const type = MULTI_NAMESPACE_TYPE; - const namespace1 = 'default'; - const namespace2 = 'foo-namespace'; - const namespace3 = 'bar-namespace'; - - const mockGetResponse = (type, id, namespaces) => { - // mock a document that exists in two namespaces - const mockResponse = getMockGetResponse({ type, id }); - mockResponse._source.namespaces = namespaces; - client.get.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise(mockResponse) - ); - }; - - const deleteFromNamespacesSuccess = async ( - type, - id, - namespaces, - currentNamespaces, - options - ) => { - mockGetResponse(type, id, currentNamespaces); - client.delete.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - _id: `${type}:${id}`, - ...mockVersionProps, - result: 'deleted', - }) - ); - client.update.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - _id: `${type}:${id}`, - ...mockVersionProps, - result: 'updated', - }) - ); - - return await savedObjectsRepository.deleteFromNamespaces(type, id, namespaces, options); - }; - - describe('client calls', () => { - describe('delete action', () => { - const deleteFromNamespacesSuccessDelete = async (expectFn, options, _type = type) => { - const test = async (namespaces) => { - await deleteFromNamespacesSuccess(_type, id, namespaces, namespaces, options); - expectFn(); - client.delete.mockClear(); - client.get.mockClear(); - }; - await test([namespace1]); - await test([namespace1, namespace2]); - }; - - it(`should use ES get action then delete action if the object has no namespaces remaining`, async () => { - const expectFn = () => { - expect(client.delete).toHaveBeenCalledTimes(1); - expect(client.get).toHaveBeenCalledTimes(1); - }; - await deleteFromNamespacesSuccessDelete(expectFn); - }); - - it(`formats the ES requests`, async () => { - const expectFn = () => { - expect(client.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: `${type}:${id}`, - }), - expect.anything() - ); - - const versionProperties = { - if_seq_no: mockVersionProps._seq_no, - if_primary_term: mockVersionProps._primary_term, - }; - expect(client.delete).toHaveBeenCalledWith( - expect.objectContaining({ - id: `${type}:${id}`, - ...versionProperties, - }), - expect.anything() - ); - }; - await deleteFromNamespacesSuccessDelete(expectFn); - }); - - it(`defaults to a refresh setting of wait_for`, async () => { - await deleteFromNamespacesSuccessDelete(() => - expect(client.delete).toHaveBeenCalledWith( - expect.objectContaining({ - refresh: 'wait_for', - }), - expect.anything() - ) - ); - }); - - it(`should use default index`, async () => { - const expectFn = () => - expect(client.delete).toHaveBeenCalledWith( - expect.objectContaining({ index: '.kibana-test' }), - expect.anything() - ); - await deleteFromNamespacesSuccessDelete(expectFn); - }); - - it(`should use custom index`, async () => { - const expectFn = () => - expect(client.delete).toHaveBeenCalledWith( - expect.objectContaining({ index: 'custom' }), - expect.anything() - ); - await deleteFromNamespacesSuccessDelete(expectFn, {}, MULTI_NAMESPACE_CUSTOM_INDEX_TYPE); - }); - }); - - describe('update action', () => { - const deleteFromNamespacesSuccessUpdate = async (expectFn, options, _type = type) => { - const test = async (remaining) => { - const currentNamespaces = [namespace1].concat(remaining); - await deleteFromNamespacesSuccess(_type, id, [namespace1], currentNamespaces, options); - expectFn(); - client.get.mockClear(); - client.update.mockClear(); - }; - await test([namespace2]); - await test([namespace2, namespace3]); - }; - - it(`should use ES get action then update action if the object has one or more namespaces remaining`, async () => { - const expectFn = () => { - expect(client.update).toHaveBeenCalledTimes(1); - expect(client.get).toHaveBeenCalledTimes(1); - }; - await deleteFromNamespacesSuccessUpdate(expectFn); - }); - - it(`formats the ES requests`, async () => { - let ctr = 0; - const expectFn = () => { - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ - id: `${type}:${id}`, - }), - expect.anything() - ); - const namespaces = ctr++ === 0 ? [namespace2] : [namespace2, namespace3]; - const versionProperties = { - if_seq_no: mockVersionProps._seq_no, - if_primary_term: mockVersionProps._primary_term, - }; - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ - id: `${type}:${id}`, - ...versionProperties, - body: { doc: { ...mockTimestampFields, namespaces } }, - }), - expect.anything() - ); - }; - await deleteFromNamespacesSuccessUpdate(expectFn); - }); - - it(`defaults to a refresh setting of wait_for`, async () => { - const expectFn = () => - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ - refresh: 'wait_for', - }), - expect.anything() - ); - await deleteFromNamespacesSuccessUpdate(expectFn); - }); - - it(`should use default index`, async () => { - const expectFn = () => - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ index: '.kibana-test' }), - expect.anything() - ); - await deleteFromNamespacesSuccessUpdate(expectFn); - }); - - it(`should use custom index`, async () => { - const expectFn = () => - expect(client.update).toHaveBeenCalledWith( - expect.objectContaining({ index: 'custom' }), - expect.anything() - ); - await deleteFromNamespacesSuccessUpdate(expectFn, {}, MULTI_NAMESPACE_CUSTOM_INDEX_TYPE); - }); - }); - }); - - describe('errors', () => { - const expectNotFoundError = async (type, id, namespaces, options) => { - await expect( - savedObjectsRepository.deleteFromNamespaces(type, id, namespaces, options) - ).rejects.toThrowError(createGenericNotFoundError(type, id)); - }; - const expectBadRequestError = async (type, id, namespaces, message) => { - await expect( - savedObjectsRepository.deleteFromNamespaces(type, id, namespaces) - ).rejects.toThrowError(createBadRequestError(message)); - }; - - it(`throws when type is invalid`, async () => { - await expectNotFoundError('unknownType', id, [namespace1, namespace2]); - expect(client.delete).not.toHaveBeenCalled(); - expect(client.update).not.toHaveBeenCalled(); - }); - - it(`throws when type is hidden`, async () => { - await expectNotFoundError(HIDDEN_TYPE, id, [namespace1, namespace2]); - expect(client.delete).not.toHaveBeenCalled(); - expect(client.update).not.toHaveBeenCalled(); - }); - - it(`throws when type is not shareable`, async () => { - const test = async (type) => { - const message = `${type} doesn't support multiple namespaces`; - await expectBadRequestError(type, id, [namespace1, namespace2], message); - expect(client.delete).not.toHaveBeenCalled(); - expect(client.update).not.toHaveBeenCalled(); - }; - await test('index-pattern'); - await test(MULTI_NAMESPACE_ISOLATED_TYPE); - await test(NAMESPACE_AGNOSTIC_TYPE); - }); - - it(`throws when namespaces is an empty array`, async () => { - const test = async (namespaces) => { - const message = 'namespaces must be a non-empty array of strings'; - await expectBadRequestError(type, id, namespaces, message); - expect(client.delete).not.toHaveBeenCalled(); - expect(client.update).not.toHaveBeenCalled(); - }; - await test([]); - }); - - it(`throws when ES is unable to find the document during get`, async () => { - client.get.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ found: false }) - ); - await expectNotFoundError(type, id, [namespace1, namespace2]); - expect(client.get).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES is unable to find the index during get`, async () => { - client.get.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({}, { statusCode: 404 }) - ); - await expectNotFoundError(type, id, [namespace1, namespace2]); - expect(client.get).toHaveBeenCalledTimes(1); - }); - - it(`throws when the document exists, but not in this namespace`, async () => { - mockGetResponse(type, id, [namespace1]); - await expectNotFoundError(type, id, [namespace1], { namespace: 'some-other-namespace' }); - expect(client.get).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES is unable to find the document during delete`, async () => { - mockGetResponse(type, id, [namespace1]); - client.delete.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ result: 'not_found' }) - ); - await expectNotFoundError(type, id, [namespace1]); - expect(client.get).toHaveBeenCalledTimes(1); - expect(client.delete).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES is unable to find the index during delete`, async () => { - mockGetResponse(type, id, [namespace1]); - client.delete.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - error: { type: 'index_not_found_exception' }, - }) - ); - await expectNotFoundError(type, id, [namespace1]); - expect(client.get).toHaveBeenCalledTimes(1); - expect(client.delete).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES returns an unexpected response`, async () => { - mockGetResponse(type, id, [namespace1]); - client.delete.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({ - result: 'something unexpected', - }) - ); - await expect( - savedObjectsRepository.deleteFromNamespaces(type, id, [namespace1]) - ).rejects.toThrowError('Unexpected Elasticsearch DELETE response'); - expect(client.get).toHaveBeenCalledTimes(1); - expect(client.delete).toHaveBeenCalledTimes(1); - }); - - it(`throws when ES is unable to find the document during update`, async () => { - mockGetResponse(type, id, [namespace1, namespace2]); - client.update.mockResolvedValueOnce( - elasticsearchClientMock.createSuccessTransportRequestPromise({}, { statusCode: 404 }) - ); - await expectNotFoundError(type, id, [namespace1]); - expect(client.get).toHaveBeenCalledTimes(1); - expect(client.update).toHaveBeenCalledTimes(1); - }); - }); - - describe('returns', () => { - it(`returns an empty namespaces array on success (delete)`, async () => { - const test = async (namespaces) => { - const result = await deleteFromNamespacesSuccess(type, id, namespaces, namespaces); - expect(result).toEqual({ namespaces: [] }); - client.delete.mockClear(); - }; - await test([namespace1]); - await test([namespace1, namespace2]); - }); - - it(`returns remaining namespaces on success (update)`, async () => { - const test = async (remaining) => { - const currentNamespaces = [namespace1].concat(remaining); - const result = await deleteFromNamespacesSuccess( - type, - id, - [namespace1], - currentNamespaces - ); - expect(result).toEqual({ namespaces: remaining }); - client.delete.mockClear(); - }; - await test([namespace2]); - await test([namespace2, namespace3]); - }); - - it(`succeeds when the document doesn't exist in all of the targeted namespaces`, async () => { - const namespaces = [namespace2]; - const currentNamespaces = [namespace1]; - const result = await deleteFromNamespacesSuccess(type, id, namespaces, currentNamespaces); - expect(result).toEqual({ namespaces: currentNamespaces }); - }); - }); - }); - describe('#update', () => { const id = 'logstash-*'; const type = 'index-pattern'; @@ -4722,4 +4203,65 @@ describe('SavedObjectsRepository', () => { ); }); }); + + describe('#collectMultiNamespaceReferences', () => { + afterEach(() => { + mockCollectMultiNamespaceReferences.mockReset(); + }); + + it('passes arguments to the collectMultiNamespaceReferences module and returns the result', async () => { + const objects = Symbol(); + const expectedResult = Symbol(); + mockCollectMultiNamespaceReferences.mockResolvedValue(expectedResult); + + await expect( + savedObjectsRepository.collectMultiNamespaceReferences(objects) + ).resolves.toEqual(expectedResult); + expect(mockCollectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(mockCollectMultiNamespaceReferences).toHaveBeenCalledWith( + expect.objectContaining({ objects }) + ); + }); + + it('returns an error from the collectMultiNamespaceReferences module', async () => { + const expectedResult = new Error('Oh no!'); + mockCollectMultiNamespaceReferences.mockRejectedValue(expectedResult); + + await expect(savedObjectsRepository.collectMultiNamespaceReferences([])).rejects.toEqual( + expectedResult + ); + }); + }); + + describe('#updateObjectsSpaces', () => { + afterEach(() => { + mockUpdateObjectsSpaces.mockReset(); + }); + + it('passes arguments to the updateObjectsSpaces module and returns the result', async () => { + const objects = Symbol(); + const spacesToAdd = Symbol(); + const spacesToRemove = Symbol(); + const options = Symbol(); + const expectedResult = Symbol(); + mockUpdateObjectsSpaces.mockResolvedValue(expectedResult); + + await expect( + savedObjectsRepository.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options) + ).resolves.toEqual(expectedResult); + expect(mockUpdateObjectsSpaces).toHaveBeenCalledTimes(1); + expect(mockUpdateObjectsSpaces).toHaveBeenCalledWith( + expect.objectContaining({ objects, spacesToAdd, spacesToRemove, options }) + ); + }); + + it('returns an error from the updateObjectsSpaces module', async () => { + const expectedResult = new Error('Oh no!'); + mockUpdateObjectsSpaces.mockRejectedValue(expectedResult); + + await expect(savedObjectsRepository.updateObjectsSpaces([], [], [])).rejects.toEqual( + expectedResult + ); + }); + }); }); diff --git a/src/core/server/saved_objects/service/lib/repository.test.mock.ts b/src/core/server/saved_objects/service/lib/repository.test.mock.ts index 3eba77b465819..f044fe9279fbf 100644 --- a/src/core/server/saved_objects/service/lib/repository.test.mock.ts +++ b/src/core/server/saved_objects/service/lib/repository.test.mock.ts @@ -6,6 +6,36 @@ * Side Public License, v 1. */ +import type { collectMultiNamespaceReferences } from './collect_multi_namespace_references'; +import type * as InternalUtils from './internal_utils'; +import type { updateObjectsSpaces } from './update_objects_spaces'; + +export const mockCollectMultiNamespaceReferences = jest.fn() as jest.MockedFunction< + typeof collectMultiNamespaceReferences +>; + +jest.mock('./collect_multi_namespace_references', () => ({ + collectMultiNamespaceReferences: mockCollectMultiNamespaceReferences, +})); + +export const mockGetBulkOperationError = jest.fn() as jest.MockedFunction< + typeof InternalUtils['getBulkOperationError'] +>; + +jest.mock('./internal_utils', () => { + const actual = jest.requireActual('./internal_utils'); + return { + ...actual, + getBulkOperationError: mockGetBulkOperationError, + }; +}); + +export const mockUpdateObjectsSpaces = jest.fn() as jest.MockedFunction; + +jest.mock('./update_objects_spaces', () => ({ + updateObjectsSpaces: mockUpdateObjectsSpaces, +})); + export const pointInTimeFinderMock = jest.fn(); jest.doMock('./point_in_time_finder', () => ({ PointInTimeFinder: pointInTimeFinderMock, diff --git a/src/core/server/saved_objects/service/lib/repository.ts b/src/core/server/saved_objects/service/lib/repository.ts index 2ef3be71407b0..c626a2b2acfb5 100644 --- a/src/core/server/saved_objects/service/lib/repository.ts +++ b/src/core/server/saved_objects/service/lib/repository.ts @@ -48,10 +48,6 @@ import { SavedObjectsBulkUpdateObject, SavedObjectsBulkUpdateOptions, SavedObjectsDeleteOptions, - SavedObjectsAddToNamespacesOptions, - SavedObjectsAddToNamespacesResponse, - SavedObjectsDeleteFromNamespacesOptions, - SavedObjectsDeleteFromNamespacesResponse, SavedObjectsRemoveReferencesToOptions, SavedObjectsRemoveReferencesToResponse, SavedObjectsResolveResponse, @@ -64,15 +60,31 @@ import { MutatingOperationRefreshSetting, } from '../../types'; import { LegacyUrlAlias, LEGACY_URL_ALIAS_TYPE } from '../../object_types'; -import { SavedObjectTypeRegistry } from '../../saved_objects_type_registry'; +import { ISavedObjectTypeRegistry } from '../../saved_objects_type_registry'; import { validateConvertFilterToKueryNode } from './filter_utils'; import { validateAndConvertAggregations } from './aggregations'; +import { + getBulkOperationError, + getExpectedVersionProperties, + getSavedObjectFromSource, + rawDocExistsInNamespace, +} from './internal_utils'; import { ALL_NAMESPACES_STRING, FIND_DEFAULT_PAGE, FIND_DEFAULT_PER_PAGE, SavedObjectsUtils, } from './utils'; +import { + collectMultiNamespaceReferences, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, +} from './collect_multi_namespace_references'; +import { + updateObjectsSpaces, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, +} from './update_objects_spaces'; // BEWARE: The SavedObjectClient depends on the implementation details of the SavedObjectsRepository // so any breaking changes to this repository are considered breaking changes to the SavedObjectsClient. @@ -95,7 +107,7 @@ export interface SavedObjectsRepositoryOptions { index: string; mappings: IndexMapping; client: ElasticsearchClient; - typeRegistry: SavedObjectTypeRegistry; + typeRegistry: ISavedObjectTypeRegistry; serializer: SavedObjectsSerializer; migrator: IKibanaMigrator; allowedTypes: string[]; @@ -134,7 +146,7 @@ export interface SavedObjectsDeleteByNamespaceOptions extends SavedObjectsBaseOp refresh?: boolean; } -const DEFAULT_REFRESH_SETTING = 'wait_for'; +export const DEFAULT_REFRESH_SETTING = 'wait_for'; /** * See {@link SavedObjectsRepository} @@ -160,7 +172,7 @@ export class SavedObjectsRepository { private _migrator: IKibanaMigrator; private _index: string; private _mappings: IndexMapping; - private _registry: SavedObjectTypeRegistry; + private _registry: ISavedObjectTypeRegistry; private _allowedTypes: string[]; private readonly client: RepositoryEsClient; private _serializer: SavedObjectsSerializer; @@ -176,7 +188,7 @@ export class SavedObjectsRepository { */ public static createRepository( migrator: IKibanaMigrator, - typeRegistry: SavedObjectTypeRegistry, + typeRegistry: ISavedObjectTypeRegistry, indexName: string, client: ElasticsearchClient, logger: Logger, @@ -511,16 +523,11 @@ export class SavedObjectsRepository { } const { requestedId, rawMigratedDoc, esRequestIndex } = expectedResult.value; - const { error, ...rawResponse } = Object.values( - bulkResponse?.body.items[esRequestIndex] ?? {} - )[0] as any; + const rawResponse = Object.values(bulkResponse?.body.items[esRequestIndex] ?? {})[0] as any; + const error = getBulkOperationError(rawMigratedDoc._source.type, requestedId, rawResponse); if (error) { - return { - id: requestedId, - type: rawMigratedDoc._source.type, - error: getBulkOperationError(error, rawMigratedDoc._source.type, requestedId), - }; + return { type: rawMigratedDoc._source.type, id: requestedId, error }; } // When method == 'index' the bulkResponse doesn't include the indexed @@ -989,7 +996,7 @@ export class SavedObjectsRepository { } // @ts-expect-error MultiGetHit._source is optional - return this.getSavedObjectFromSource(type, id, doc); + return getSavedObjectFromSource(this._registry, type, id, doc); }), }; } @@ -1033,7 +1040,7 @@ export class SavedObjectsRepository { throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); } - return this.getSavedObjectFromSource(type, id, body); + return getSavedObjectFromSource(this._registry, type, id, body); } /** @@ -1138,20 +1145,25 @@ export class SavedObjectsRepository { if (foundExactMatch && foundAliasMatch) { return { // @ts-expect-error MultiGetHit._source is optional - saved_object: this.getSavedObjectFromSource(type, id, exactMatchDoc), + saved_object: getSavedObjectFromSource(this._registry, type, id, exactMatchDoc), outcome: 'conflict', aliasTargetId: legacyUrlAlias.targetId, }; } else if (foundExactMatch) { return { // @ts-expect-error MultiGetHit._source is optional - saved_object: this.getSavedObjectFromSource(type, id, exactMatchDoc), + saved_object: getSavedObjectFromSource(this._registry, type, id, exactMatchDoc), outcome: 'exactMatch', }; } else if (foundAliasMatch) { return { - // @ts-expect-error MultiGetHit._source is optional - saved_object: this.getSavedObjectFromSource(type, legacyUrlAlias.targetId, aliasMatchDoc), + saved_object: getSavedObjectFromSource( + this._registry, + type, + legacyUrlAlias.targetId, + // @ts-expect-error MultiGetHit._source is optional + aliasMatchDoc + ), outcome: 'aliasMatch', aliasTargetId: legacyUrlAlias.targetId, }; @@ -1263,169 +1275,52 @@ export class SavedObjectsRepository { } /** - * Adds one or more namespaces to a given multi-namespace saved object. This method and - * [`deleteFromNamespaces`]{@link SavedObjectsRepository.deleteFromNamespaces} are the only ways to change which Spaces a multi-namespace - * saved object is shared to. + * Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace + * type. + * + * @param objects The objects to get the references for. */ - async addToNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsAddToNamespacesOptions = {} - ): Promise { - if (!this._allowedTypes.includes(type)) { - throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); - } - - if (!this._registry.isShareable(type)) { - throw SavedObjectsErrorHelpers.createBadRequestError( - `${type} doesn't support multiple namespaces` - ); - } - - if (!namespaces.length) { - throw SavedObjectsErrorHelpers.createBadRequestError( - 'namespaces must be a non-empty array of strings' - ); - } - - const { version, namespace, refresh = DEFAULT_REFRESH_SETTING } = options; - // we do not need to normalize the namespace to its ID format, since it will be converted to a namespace string before being used - - const rawId = this._serializer.generateRawId(undefined, type, id); - const preflightResult = await this.preflightCheckIncludesNamespace(type, id, namespace); - const existingNamespaces = getSavedObjectNamespaces(undefined, preflightResult); - // there should never be a case where a multi-namespace object does not have any existing namespaces - // however, it is a possibility if someone manually modifies the document in Elasticsearch - const time = this._getCurrentTime(); - - const doc = { - updated_at: time, - namespaces: existingNamespaces ? unique(existingNamespaces.concat(namespaces)) : namespaces, - }; - - const { statusCode } = await this.client.update( - { - id: rawId, - index: this.getIndexForType(type), - ...getExpectedVersionProperties(version, preflightResult), - refresh, - body: { - doc, - }, - }, - { ignore: [404] } - ); - - if (statusCode === 404) { - // see "404s from missing index" above - throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); - } - - return { namespaces: doc.namespaces }; + async collectMultiNamespaceReferences( + objects: SavedObjectsCollectMultiNamespaceReferencesObject[], + options?: SavedObjectsCollectMultiNamespaceReferencesOptions + ) { + return collectMultiNamespaceReferences({ + registry: this._registry, + allowedTypes: this._allowedTypes, + client: this.client, + serializer: this._serializer, + getIndexForType: this.getIndexForType.bind(this), + createPointInTimeFinder: this.createPointInTimeFinder.bind(this), + objects, + options, + }); } /** - * Removes one or more namespaces from a given multi-namespace saved object. If no namespaces remain, the saved object is deleted - * entirely. This method and [`addToNamespaces`]{@link SavedObjectsRepository.addToNamespaces} are the only ways to change which Spaces a - * multi-namespace saved object is shared to. + * Updates one or more objects to add and/or remove them from specified spaces. + * + * @param objects + * @param spacesToAdd + * @param spacesToRemove + * @param options */ - async deleteFromNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsDeleteFromNamespacesOptions = {} - ): Promise { - if (!this._allowedTypes.includes(type)) { - throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); - } - - if (!this._registry.isShareable(type)) { - throw SavedObjectsErrorHelpers.createBadRequestError( - `${type} doesn't support multiple namespaces` - ); - } - - if (!namespaces.length) { - throw SavedObjectsErrorHelpers.createBadRequestError( - 'namespaces must be a non-empty array of strings' - ); - } - - const { namespace, refresh = DEFAULT_REFRESH_SETTING } = options; - // we do not need to normalize the namespace to its ID format, since it will be converted to a namespace string before being used - - const rawId = this._serializer.generateRawId(undefined, type, id); - const preflightResult = await this.preflightCheckIncludesNamespace(type, id, namespace); - const existingNamespaces = getSavedObjectNamespaces(undefined, preflightResult); - // if there are somehow no existing namespaces, allow the operation to proceed and delete this saved object - const remainingNamespaces = existingNamespaces?.filter((x) => !namespaces.includes(x)); - - if (remainingNamespaces?.length) { - // if there is 1 or more namespace remaining, update the saved object - const time = this._getCurrentTime(); - - const doc = { - updated_at: time, - namespaces: remainingNamespaces, - }; - - const { statusCode } = await this.client.update( - { - id: rawId, - index: this.getIndexForType(type), - ...getExpectedVersionProperties(undefined, preflightResult), - refresh, - - body: { - doc, - }, - }, - { - ignore: [404], - } - ); - - if (statusCode === 404) { - // see "404s from missing index" above - throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); - } - return { namespaces: doc.namespaces }; - } else { - // if there are no namespaces remaining, delete the saved object - const { body, statusCode } = await this.client.delete( - { - id: this._serializer.generateRawId(undefined, type, id), - refresh, - ...getExpectedVersionProperties(undefined, preflightResult), - index: this.getIndexForType(type), - }, - { - ignore: [404], - } - ); - - const deleted = body.result === 'deleted'; - if (deleted) { - return { namespaces: [] }; - } - - const deleteDocNotFound = body.result === 'not_found'; - // @ts-expect-error - const deleteIndexNotFound = body.error && body.error.type === 'index_not_found_exception'; - if (deleteDocNotFound || deleteIndexNotFound) { - // see "404s from missing index" above - throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); - } - - throw new Error( - `Unexpected Elasticsearch DELETE response: ${JSON.stringify({ - type, - id, - response: { body, statusCode }, - })}` - ); - } + async updateObjectsSpaces( + objects: SavedObjectsUpdateObjectsSpacesObject[], + spacesToAdd: string[], + spacesToRemove: string[], + options?: SavedObjectsUpdateObjectsSpacesOptions + ) { + return updateObjectsSpaces({ + registry: this._registry, + allowedTypes: this._allowedTypes, + client: this.client, + serializer: this._serializer, + getIndexForType: this.getIndexForType.bind(this), + objects, + spacesToAdd, + spacesToRemove, + options, + }); } /** @@ -1617,21 +1512,19 @@ export class SavedObjectsRepository { const { type, id, namespaces, documentToSave, esRequestIndex } = expectedResult.value; const response = bulkUpdateResponse?.body.items[esRequestIndex] ?? {}; + const rawResponse = Object.values(response)[0] as any; + + const error = getBulkOperationError(type, id, rawResponse); + if (error) { + return { type, id, error }; + } + // When a bulk update operation is completed, any fields specified in `_sourceIncludes` will be found in the "get" value of the // returned object. We need to retrieve the `originId` if it exists so we can return it to the consumer. - const { error, _seq_no: seqNo, _primary_term: primaryTerm, get } = Object.values( - response - )[0] as any; + const { _seq_no: seqNo, _primary_term: primaryTerm, get } = rawResponse; // eslint-disable-next-line @typescript-eslint/naming-convention const { [type]: attributes, references, updated_at } = documentToSave; - if (error) { - return { - id, - type, - error: getBulkOperationError(error, type, id), - }; - } const { originId } = get._source; return { @@ -2055,10 +1948,10 @@ export class SavedObjectsRepository { * } * ``` */ - createPointInTimeFinder( + createPointInTimeFinder( findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies - ): ISavedObjectsPointInTimeFinder { + ): ISavedObjectsPointInTimeFinder { return new PointInTimeFinder(findOptions, { logger: this._logger, client: this, @@ -2108,28 +2001,8 @@ export class SavedObjectsRepository { return omit(savedObject, ['namespace']) as SavedObject; } - /** - * Check to ensure that a raw document exists in a namespace. If the document is not a multi-namespace type, then this returns `true` as - * we rely on the guarantees of the document ID format. If the document is a multi-namespace type, this checks to ensure that the - * document's `namespaces` value includes the string representation of the given namespace. - * - * WARNING: This should only be used for documents that were retrieved from Elasticsearch. Otherwise, the guarantees of the document ID - * format mentioned above do not apply. - */ - private rawDocExistsInNamespace(raw: SavedObjectsRawDoc, namespace?: string) { - const rawDocType = raw._source.type; - - // if the type is namespace isolated, or namespace agnostic, we can continue to rely on the guarantees - // of the document ID format and don't need to check this - if (!this._registry.isMultiNamespace(rawDocType)) { - return true; - } - - const namespaces = raw._source.namespaces; - const existsInNamespace = - namespaces?.includes(SavedObjectsUtils.namespaceIdToString(namespace)) || - namespaces?.includes('*'); - return existsInNamespace ?? false; + private rawDocExistsInNamespace(raw: SavedObjectsRawDoc, namespace: string | undefined) { + return rawDocExistsInNamespace(this._registry, raw, namespace); } /** @@ -2204,34 +2077,6 @@ export class SavedObjectsRepository { return body; } - private getSavedObjectFromSource( - type: string, - id: string, - doc: { _seq_no?: number; _primary_term?: number; _source: SavedObjectsRawDocSource } - ): SavedObject { - const { originId, updated_at: updatedAt } = doc._source; - - let namespaces: string[] = []; - if (!this._registry.isNamespaceAgnostic(type)) { - namespaces = doc._source.namespaces ?? [ - SavedObjectsUtils.namespaceIdToString(doc._source.namespace), - ]; - } - - return { - id, - type, - namespaces, - ...(originId && { originId }), - ...(updatedAt && { updated_at: updatedAt }), - version: encodeHitVersion(doc), - attributes: doc._source[type], - references: doc._source.references || [], - migrationVersion: doc._source.migrationVersion, - coreMigrationVersion: doc._source.coreMigrationVersion, - }; - } - private async resolveExactMatch( type: string, id: string, @@ -2242,43 +2087,6 @@ export class SavedObjectsRepository { } } -function getBulkOperationError( - error: { type: string; reason?: string; index?: string }, - type: string, - id: string -) { - switch (error.type) { - case 'version_conflict_engine_exception': - return errorContent(SavedObjectsErrorHelpers.createConflictError(type, id)); - case 'document_missing_exception': - return errorContent(SavedObjectsErrorHelpers.createGenericNotFoundError(type, id)); - case 'index_not_found_exception': - return errorContent(SavedObjectsErrorHelpers.createIndexAliasNotFoundError(error.index!)); - default: - return { - message: error.reason || JSON.stringify(error), - }; - } -} - -/** - * Returns an object with the expected version properties. This facilitates Elasticsearch's Optimistic Concurrency Control. - * - * @param version Optional version specified by the consumer. - * @param document Optional existing document that was obtained in a preflight operation. - */ -function getExpectedVersionProperties(version?: string, document?: SavedObjectsRawDoc) { - if (version) { - return decodeRequestVersion(version); - } else if (document) { - return { - if_seq_no: document._seq_no, - if_primary_term: document._primary_term, - }; - } - return {}; -} - /** * Returns a string array of namespaces for a given saved object. If the saved object is undefined, the result is an array that contains the * current namespace. Value may be undefined if an existing saved object has no namespaces attribute; this should not happen in normal diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.test.mock.ts b/src/core/server/saved_objects/service/lib/update_objects_spaces.test.mock.ts new file mode 100644 index 0000000000000..d7aa762e01aab --- /dev/null +++ b/src/core/server/saved_objects/service/lib/update_objects_spaces.test.mock.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type * as InternalUtils from './internal_utils'; + +export const mockGetBulkOperationError = jest.fn() as jest.MockedFunction< + typeof InternalUtils['getBulkOperationError'] +>; +export const mockGetExpectedVersionProperties = jest.fn() as jest.MockedFunction< + typeof InternalUtils['getExpectedVersionProperties'] +>; +export const mockRawDocExistsInNamespace = jest.fn() as jest.MockedFunction< + typeof InternalUtils['rawDocExistsInNamespace'] +>; + +jest.mock('./internal_utils', () => { + const actual = jest.requireActual('./internal_utils'); + return { + ...actual, + getBulkOperationError: mockGetBulkOperationError, + getExpectedVersionProperties: mockGetExpectedVersionProperties, + rawDocExistsInNamespace: mockRawDocExistsInNamespace, + }; +}); diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts b/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts new file mode 100644 index 0000000000000..489432a4ab169 --- /dev/null +++ b/src/core/server/saved_objects/service/lib/update_objects_spaces.test.ts @@ -0,0 +1,453 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + mockGetBulkOperationError, + mockGetExpectedVersionProperties, + mockRawDocExistsInNamespace, +} from './update_objects_spaces.test.mock'; + +import type { DeeplyMockedKeys } from '@kbn/utility-types/target/jest'; +import type { ElasticsearchClient } from 'src/core/server/elasticsearch'; +import { elasticsearchClientMock } from 'src/core/server/elasticsearch/client/mocks'; + +import { typeRegistryMock } from '../../saved_objects_type_registry.mock'; +import { SavedObjectsSerializer } from '../../serialization'; +import type { + SavedObjectsUpdateObjectsSpacesObject, + UpdateObjectsSpacesParams, +} from './update_objects_spaces'; +import { updateObjectsSpaces } from './update_objects_spaces'; + +type SetupParams = Partial< + Pick +>; + +const EXISTING_SPACE = 'existing-space'; +const VERSION_PROPS = { _seq_no: 1, _primary_term: 1 }; +const EXPECTED_VERSION_PROPS = { if_seq_no: 1, if_primary_term: 1 }; +const BULK_ERROR = { + error: 'Oh no, a bulk error!', + type: 'error_type', + message: 'error_message', + statusCode: 400, +}; + +const SHAREABLE_OBJ_TYPE = 'type-a'; +const NON_SHAREABLE_OBJ_TYPE = 'type-b'; +const SHAREABLE_HIDDEN_OBJ_TYPE = 'type-c'; + +const mockCurrentTime = new Date('2021-05-01T10:20:30Z'); + +beforeAll(() => { + jest.useFakeTimers('modern'); + jest.setSystemTime(mockCurrentTime); +}); + +beforeEach(() => { + mockGetExpectedVersionProperties.mockReturnValue(EXPECTED_VERSION_PROPS); + mockRawDocExistsInNamespace.mockReset(); + mockRawDocExistsInNamespace.mockReturnValue(true); // return true by default +}); + +afterAll(() => { + jest.useRealTimers(); +}); + +describe('#updateObjectsSpaces', () => { + let client: DeeplyMockedKeys; + + /** Sets up the type registry, saved objects client, etc. and return the full parameters object to be passed to `updateObjectsSpaces` */ + function setup({ objects = [], spacesToAdd = [], spacesToRemove = [], options }: SetupParams) { + const registry = typeRegistryMock.create(); + registry.isShareable.mockImplementation( + (type) => [SHAREABLE_OBJ_TYPE, SHAREABLE_HIDDEN_OBJ_TYPE].includes(type) // NON_SHAREABLE_OBJ_TYPE is excluded + ); + client = elasticsearchClientMock.createElasticsearchClient(); + const serializer = new SavedObjectsSerializer(registry); + return { + registry, + allowedTypes: [SHAREABLE_OBJ_TYPE, NON_SHAREABLE_OBJ_TYPE], // SHAREABLE_HIDDEN_OBJ_TYPE is excluded + client, + serializer, + getIndexForType: (type: string) => `index-for-${type}`, + objects, + spacesToAdd, + spacesToRemove, + options, + }; + } + + /** Mocks the saved objects client so it returns the expected results */ + function mockMgetResults(...results: Array<{ found: boolean }>) { + client.mget.mockReturnValueOnce( + elasticsearchClientMock.createSuccessTransportRequestPromise({ + docs: results.map((x) => + x.found + ? { + _id: 'doesnt-matter', + _index: 'doesnt-matter', + _source: { namespaces: [EXISTING_SPACE] }, + ...VERSION_PROPS, + found: true, + } + : { + _id: 'doesnt-matter', + _index: 'doesnt-matter', + found: false, + } + ), + }) + ); + } + + /** Asserts that mget is called for the given objects */ + function expectMgetArgs(...objects: SavedObjectsUpdateObjectsSpacesObject[]) { + const docs = objects.map(({ type, id }) => expect.objectContaining({ _id: `${type}:${id}` })); + expect(client.mget).toHaveBeenCalledWith({ body: { docs } }, expect.anything()); + } + + /** Mocks the saved objects client so it returns the expected results */ + function mockBulkResults(...results: Array<{ error: boolean }>) { + results.forEach(({ error }) => { + if (error) { + mockGetBulkOperationError.mockReturnValueOnce(BULK_ERROR); + } else { + mockGetBulkOperationError.mockReturnValueOnce(undefined); + } + }); + client.bulk.mockReturnValueOnce( + elasticsearchClientMock.createSuccessTransportRequestPromise({ + items: results.map(() => ({})), // as long as the result does not contain an error field, it is treated as a success + errors: false, + took: 0, + }) + ); + } + + /** Asserts that mget is called for the given objects */ + function expectBulkArgs( + ...objectActions: Array<{ + object: { type: string; id: string; namespaces?: string[] }; + action: 'update' | 'delete'; + }> + ) { + const body = objectActions.flatMap( + ({ object: { type, id, namespaces = expect.any(Array) }, action }) => { + const operation = { + [action]: { + _id: `${type}:${id}`, + _index: `index-for-${type}`, + ...EXPECTED_VERSION_PROPS, + }, + }; + return action === 'update' + ? [operation, { doc: { namespaces, updated_at: mockCurrentTime.toISOString() } }] // 'update' uses an operation and document metadata + : [operation]; // 'delete' only uses an operation + } + ); + expect(client.bulk).toHaveBeenCalledWith(expect.objectContaining({ body })); + } + + beforeEach(() => { + mockGetBulkOperationError.mockReset(); // reset calls and return undefined by default + }); + + describe('errors', () => { + it('throws when spacesToAdd and spacesToRemove are empty', async () => { + const objects = [{ type: SHAREABLE_OBJ_TYPE, id: 'id-1' }]; + const params = setup({ objects }); + + await expect(() => updateObjectsSpaces(params)).rejects.toThrow( + 'spacesToAdd and/or spacesToRemove must be a non-empty array of strings: Bad Request' + ); + }); + + it('throws when spacesToAdd and spacesToRemove intersect', async () => { + const objects = [{ type: SHAREABLE_OBJ_TYPE, id: 'id-1' }]; + const spacesToAdd = ['foo-space', 'bar-space']; + const spacesToRemove = ['bar-space', 'baz-space']; + const params = setup({ objects, spacesToAdd, spacesToRemove }); + + await expect(() => updateObjectsSpaces(params)).rejects.toThrow( + 'spacesToAdd and spacesToRemove cannot contain any of the same strings: Bad Request' + ); + }); + + it('throws when mget cluster call fails', async () => { + const objects = [{ type: SHAREABLE_OBJ_TYPE, id: 'id-1' }]; + const spacesToAdd = ['foo-space']; + const params = setup({ objects, spacesToAdd }); + client.mget.mockReturnValueOnce( + elasticsearchClientMock.createErrorTransportRequestPromise(new Error('mget error')) + ); + + await expect(() => updateObjectsSpaces(params)).rejects.toThrow('mget error'); + }); + + it('throws when bulk cluster call fails', async () => { + const objects = [{ type: SHAREABLE_OBJ_TYPE, id: 'id-1' }]; + const spacesToAdd = ['foo-space']; + const params = setup({ objects, spacesToAdd }); + mockMgetResults({ found: true }); + client.bulk.mockReturnValueOnce( + elasticsearchClientMock.createErrorTransportRequestPromise(new Error('bulk error')) + ); + + await expect(() => updateObjectsSpaces(params)).rejects.toThrow('bulk error'); + }); + + it('returns mix of type errors, mget/bulk cluster errors, and successes', async () => { + const obj1 = { type: SHAREABLE_HIDDEN_OBJ_TYPE, id: 'id-1' }; // invalid type (Not Found) + const obj2 = { type: NON_SHAREABLE_OBJ_TYPE, id: 'id-2' }; // non-shareable type (Bad Request) + // obj3 below is mocking an example where a SOC wrapper attempted to retrieve it in a pre-flight request but it was not found. + // Since it has 'spaces: []', that indicates it should be skipped for cluster calls and just returned as a Not Found error. + // Realistically this would not be intermingled with other requested objects that do not have 'spaces' arrays, but it's fine for this + // specific test case. + const obj3 = { type: SHAREABLE_OBJ_TYPE, id: 'id-3', spaces: [] }; // does not exist (Not Found) + const obj4 = { type: SHAREABLE_OBJ_TYPE, id: 'id-4' }; // mget error (found but doesn't exist in the current space) + const obj5 = { type: SHAREABLE_OBJ_TYPE, id: 'id-5' }; // mget error (Not Found) + const obj6 = { type: SHAREABLE_OBJ_TYPE, id: 'id-6' }; // bulk error (mocked as BULK_ERROR) + const obj7 = { type: SHAREABLE_OBJ_TYPE, id: 'id-7' }; // success + + const objects = [obj1, obj2, obj3, obj4, obj5, obj6, obj7]; + const spacesToAdd = ['foo-space']; + const params = setup({ objects, spacesToAdd }); + mockMgetResults({ found: true }, { found: false }, { found: true }, { found: true }); // results for obj4, obj5, obj6, and obj7 + mockRawDocExistsInNamespace.mockReturnValueOnce(false); // for obj4 + mockRawDocExistsInNamespace.mockReturnValueOnce(true); // for obj6 + mockRawDocExistsInNamespace.mockReturnValueOnce(true); // for obj7 + mockBulkResults({ error: true }, { error: false }); // results for obj6 and obj7 + + const result = await updateObjectsSpaces(params); + expect(client.mget).toHaveBeenCalledTimes(1); + expectMgetArgs(obj4, obj5, obj6, obj7); + expect(mockRawDocExistsInNamespace).toHaveBeenCalledTimes(3); + expect(client.bulk).toHaveBeenCalledTimes(1); + expectBulkArgs({ action: 'update', object: obj6 }, { action: 'update', object: obj7 }); + expect(result.objects).toEqual([ + { ...obj1, spaces: [], error: expect.objectContaining({ error: 'Not Found' }) }, + { ...obj2, spaces: [], error: expect.objectContaining({ error: 'Bad Request' }) }, + { ...obj3, spaces: [], error: expect.objectContaining({ error: 'Not Found' }) }, + { ...obj4, spaces: [], error: expect.objectContaining({ error: 'Not Found' }) }, + { ...obj5, spaces: [], error: expect.objectContaining({ error: 'Not Found' }) }, + { ...obj6, spaces: [], error: BULK_ERROR }, + { ...obj7, spaces: [EXISTING_SPACE, 'foo-space'] }, + ]); + }); + }); + + // Note: these test cases do not include requested objects that will result in errors (those are covered above) + describe('cluster and module calls', () => { + it('mget call skips objects that have "spaces" defined', async () => { + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [EXISTING_SPACE] }; // will not be retrieved + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2' }; // will be passed to mget + + const objects = [obj1, obj2]; + const spacesToAdd = ['foo-space']; + const params = setup({ objects, spacesToAdd }); + mockMgetResults({ found: true }); // result for obj2 + mockBulkResults({ error: false }, { error: false }); // results for obj1 and obj2 + + await updateObjectsSpaces(params); + expect(client.mget).toHaveBeenCalledTimes(1); + expectMgetArgs(obj2); + }); + + it('does not call mget if all objects have "spaces" defined', async () => { + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [EXISTING_SPACE] }; // will not be retrieved + + const objects = [obj1]; + const spacesToAdd = ['foo-space']; + const params = setup({ objects, spacesToAdd }); + mockBulkResults({ error: false }); // result for obj1 + + await updateObjectsSpaces(params); + expect(client.mget).not.toHaveBeenCalled(); + }); + + describe('bulk call skips objects that will not be changed', () => { + it('when adding spaces', async () => { + const space1 = 'space-to-add'; + const space2 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space1] }; // will not be changed + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2', spaces: [space2] }; // will be updated + + const objects = [obj1, obj2]; + const spacesToAdd = [space1]; + const params = setup({ objects, spacesToAdd }); + // this test case does not call mget + mockBulkResults({ error: false }); // result for obj2 + + await updateObjectsSpaces(params); + expect(client.bulk).toHaveBeenCalledTimes(1); + expectBulkArgs({ + action: 'update', + object: { ...obj2, namespaces: [space2, space1] }, + }); + }); + + it('when removing spaces', async () => { + const space1 = 'space-to-remove'; + const space2 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space2] }; // will not be changed + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2', spaces: [space1, space2] }; // will be updated to remove space1 + const obj3 = { type: SHAREABLE_OBJ_TYPE, id: 'id-3', spaces: [space1] }; // will be deleted (since it would have no spaces left) + + const objects = [obj1, obj2, obj3]; + const spacesToRemove = [space1]; + const params = setup({ objects, spacesToRemove }); + // this test case does not call mget + mockBulkResults({ error: false }, { error: false }); // results for obj2 and obj3 + + await updateObjectsSpaces(params); + expect(client.bulk).toHaveBeenCalledTimes(1); + expectBulkArgs( + { action: 'update', object: { ...obj2, namespaces: [space2] } }, + { action: 'delete', object: obj3 } + ); + }); + + it('when adding and removing spaces', async () => { + const space1 = 'space-to-add'; + const space2 = 'space-to-remove'; + const space3 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space1] }; // will not be changed + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2', spaces: [space3] }; // will be updated to add space1 + const obj3 = { type: SHAREABLE_OBJ_TYPE, id: 'id-3', spaces: [space1, space2] }; // will be updated to remove space2 + const obj4 = { type: SHAREABLE_OBJ_TYPE, id: 'id-4', spaces: [space2, space3] }; // will be updated to add space1 and remove space2 + + const objects = [obj1, obj2, obj3, obj4]; + const spacesToAdd = [space1]; + const spacesToRemove = [space2]; + const params = setup({ objects, spacesToAdd, spacesToRemove }); + // this test case does not call mget + mockBulkResults({ error: false }, { error: false }, { error: false }); // results for obj2, obj3, and obj4 + + await updateObjectsSpaces(params); + expect(client.bulk).toHaveBeenCalledTimes(1); + expectBulkArgs( + { action: 'update', object: { ...obj2, namespaces: [space3, space1] } }, + { action: 'update', object: { ...obj3, namespaces: [space1] } }, + { action: 'update', object: { ...obj4, namespaces: [space3, space1] } } + ); + }); + }); + + describe('does not call bulk if all objects do not need to be changed', () => { + it('when adding spaces', async () => { + const space = 'space-to-add'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space] }; // will not be changed + + const objects = [obj1]; + const spacesToAdd = [space]; + const params = setup({ objects, spacesToAdd }); + // this test case does not call mget or bulk + + await updateObjectsSpaces(params); + expect(client.bulk).not.toHaveBeenCalled(); + }); + + it('when removing spaces', async () => { + const space1 = 'space-to-remove'; + const space2 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space2] }; // will not be changed + + const objects = [obj1]; + const spacesToRemove = [space1]; + const params = setup({ objects, spacesToRemove }); + // this test case does not call mget or bulk + + await updateObjectsSpaces(params); + expect(client.bulk).not.toHaveBeenCalled(); + }); + + it('when adding and removing spaces', async () => { + const space1 = 'space-to-add'; + const space2 = 'space-to-remove'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space1] }; // will not be changed + + const objects = [obj1]; + const spacesToAdd = [space1]; + const spacesToRemove = [space2]; + const params = setup({ objects, spacesToAdd, spacesToRemove }); + // this test case does not call mget or bulk + + await updateObjectsSpaces(params); + expect(client.bulk).not.toHaveBeenCalled(); + }); + }); + }); + + describe('returns expected results', () => { + it('when adding spaces', async () => { + const space1 = 'space-to-add'; + const space2 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space1] }; // will not be changed + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2', spaces: [space2] }; // will be updated + + const objects = [obj1, obj2]; + const spacesToAdd = [space1]; + const params = setup({ objects, spacesToAdd }); + // this test case does not call mget + mockBulkResults({ error: false }); // result for obj2 + + const result = await updateObjectsSpaces(params); + expect(result.objects).toEqual([ + { ...obj1, spaces: [space1] }, + { ...obj2, spaces: [space2, space1] }, + ]); + }); + + it('when removing spaces', async () => { + const space1 = 'space-to-remove'; + const space2 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space2] }; // will not be changed + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2', spaces: [space1, space2] }; // will be updated to remove space1 + const obj3 = { type: SHAREABLE_OBJ_TYPE, id: 'id-3', spaces: [space1] }; // will be deleted (since it would have no spaces left) + + const objects = [obj1, obj2, obj3]; + const spacesToRemove = [space1]; + const params = setup({ objects, spacesToRemove }); + // this test case does not call mget + mockBulkResults({ error: false }, { error: false }); // results for obj2 and obj3 + + const result = await updateObjectsSpaces(params); + expect(result.objects).toEqual([ + { ...obj1, spaces: [space2] }, + { ...obj2, spaces: [space2] }, + { ...obj3, spaces: [] }, + ]); + }); + + it('when adding and removing spaces', async () => { + const space1 = 'space-to-add'; + const space2 = 'space-to-remove'; + const space3 = 'other-space'; + const obj1 = { type: SHAREABLE_OBJ_TYPE, id: 'id-1', spaces: [space1] }; // will not be changed + const obj2 = { type: SHAREABLE_OBJ_TYPE, id: 'id-2', spaces: [space3] }; // will be updated to add space1 + const obj3 = { type: SHAREABLE_OBJ_TYPE, id: 'id-3', spaces: [space1, space2] }; // will be updated to remove space2 + const obj4 = { type: SHAREABLE_OBJ_TYPE, id: 'id-4', spaces: [space2, space3] }; // will be updated to add space1 and remove space2 + + const objects = [obj1, obj2, obj3, obj4]; + const spacesToAdd = [space1]; + const spacesToRemove = [space2]; + const params = setup({ objects, spacesToAdd, spacesToRemove }); + // this test case does not call mget + mockBulkResults({ error: false }, { error: false }, { error: false }); // results for obj2, obj3, and obj4 + + const result = await updateObjectsSpaces(params); + expect(result.objects).toEqual([ + { ...obj1, spaces: [space1] }, + { ...obj2, spaces: [space3, space1] }, + { ...obj3, spaces: [space1] }, + { ...obj4, spaces: [space3, space1] }, + ]); + }); + }); +}); diff --git a/src/core/server/saved_objects/service/lib/update_objects_spaces.ts b/src/core/server/saved_objects/service/lib/update_objects_spaces.ts new file mode 100644 index 0000000000000..079549265385c --- /dev/null +++ b/src/core/server/saved_objects/service/lib/update_objects_spaces.ts @@ -0,0 +1,315 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { BulkOperationContainer, MultiGetOperation } from '@elastic/elasticsearch/api/types'; +import intersection from 'lodash/intersection'; + +import type { ISavedObjectTypeRegistry } from '../../saved_objects_type_registry'; +import type { SavedObjectsRawDocSource, SavedObjectsSerializer } from '../../serialization'; +import type { + MutatingOperationRefreshSetting, + SavedObjectError, + SavedObjectsBaseOptions, +} from '../../types'; +import type { DecoratedError } from './errors'; +import { SavedObjectsErrorHelpers } from './errors'; +import { + getBulkOperationError, + getExpectedVersionProperties, + rawDocExistsInNamespace, +} from './internal_utils'; +import { DEFAULT_REFRESH_SETTING } from './repository'; +import type { RepositoryEsClient } from './repository_es_client'; + +/** + * An object that should have its spaces updated. + * + * @public + */ +export interface SavedObjectsUpdateObjectsSpacesObject { + /** The type of the object to update */ + id: string; + /** The ID of the object to update */ + type: string; + /** + * The space(s) that the object to update currently exists in. This is only intended to be used by SOC wrappers. + * + * @internal + */ + spaces?: string[]; + /** + * The version of the object to update; this is used for optimistic concurrency control. This is only intended to be used by SOC wrappers. + * + * @internal + */ + version?: string; +} + +/** + * Options for the update operation. + * + * @public + */ +export interface SavedObjectsUpdateObjectsSpacesOptions extends SavedObjectsBaseOptions { + /** The Elasticsearch Refresh setting for this operation */ + refresh?: MutatingOperationRefreshSetting; +} + +/** + * The response when objects' spaces are updated. + * + * @public + */ +export interface SavedObjectsUpdateObjectsSpacesResponse { + objects: SavedObjectsUpdateObjectsSpacesResponseObject[]; +} + +/** + * Details about a specific object's update result. + * + * @public + */ +export interface SavedObjectsUpdateObjectsSpacesResponseObject { + /** The type of the referenced object */ + type: string; + /** The ID of the referenced object */ + id: string; + /** The space(s) that the referenced object exists in */ + spaces: string[]; + /** Included if there was an error updating this object's spaces */ + error?: SavedObjectError; +} + +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +type Left = { tag: 'Left'; error: SavedObjectsUpdateObjectsSpacesResponseObject }; +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +type Right = { tag: 'Right'; value: Record }; +type Either = Left | Right; +const isLeft = (either: Either): either is Left => either.tag === 'Left'; +const isRight = (either: Either): either is Right => either.tag === 'Right'; + +/** + * Parameters for the updateObjectsSpaces function. + * + * @internal + */ +export interface UpdateObjectsSpacesParams { + registry: ISavedObjectTypeRegistry; + allowedTypes: string[]; + client: RepositoryEsClient; + serializer: SavedObjectsSerializer; + getIndexForType: (type: string) => string; + objects: SavedObjectsUpdateObjectsSpacesObject[]; + spacesToAdd: string[]; + spacesToRemove: string[]; + options?: SavedObjectsUpdateObjectsSpacesOptions; +} + +/** + * Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace + * type. + */ +export async function updateObjectsSpaces({ + registry, + allowedTypes, + client, + serializer, + getIndexForType, + objects, + spacesToAdd, + spacesToRemove, + options = {}, +}: UpdateObjectsSpacesParams): Promise { + if (!spacesToAdd.length && !spacesToRemove.length) { + throw SavedObjectsErrorHelpers.createBadRequestError( + 'spacesToAdd and/or spacesToRemove must be a non-empty array of strings' + ); + } + if (intersection(spacesToAdd, spacesToRemove).length > 0) { + throw SavedObjectsErrorHelpers.createBadRequestError( + 'spacesToAdd and spacesToRemove cannot contain any of the same strings' + ); + } + + const { namespace } = options; + + let bulkGetRequestIndexCounter = 0; + const expectedBulkGetResults: Either[] = objects.map((object) => { + const { type, id, spaces, version } = object; + + if (!allowedTypes.includes(type)) { + const error = errorContent(SavedObjectsErrorHelpers.createGenericNotFoundError(type, id)); + return { + tag: 'Left' as 'Left', + error: { id, type, spaces: [], error }, + }; + } + if (!registry.isShareable(type)) { + const error = errorContent( + SavedObjectsErrorHelpers.createBadRequestError( + `${type} doesn't support multiple namespaces` + ) + ); + return { + tag: 'Left' as 'Left', + error: { id, type, spaces: [], error }, + }; + } + + return { + tag: 'Right' as 'Right', + value: { + type, + id, + spaces, + version, + ...(!spaces && { esRequestIndex: bulkGetRequestIndexCounter++ }), + }, + }; + }); + + const bulkGetDocs = expectedBulkGetResults.reduce((acc, x) => { + if (isRight(x) && x.value.esRequestIndex !== undefined) { + acc.push({ + _id: serializer.generateRawId(undefined, x.value.type, x.value.id), + _index: getIndexForType(x.value.type), + _source: ['type', 'namespaces'], + }); + } + return acc; + }, []); + const bulkGetResponse = bulkGetDocs.length + ? await client.mget( + { body: { docs: bulkGetDocs } }, + { ignore: [404] } + ) + : undefined; + + const time = new Date().toISOString(); + let bulkOperationRequestIndexCounter = 0; + const bulkOperationParams: BulkOperationContainer[] = []; + const expectedBulkOperationResults: Either[] = expectedBulkGetResults.map( + (expectedBulkGetResult) => { + if (isLeft(expectedBulkGetResult)) { + return expectedBulkGetResult; + } + + const { id, type, spaces, version, esRequestIndex } = expectedBulkGetResult.value; + + let currentSpaces: string[] = spaces; + let versionProperties; + if (esRequestIndex !== undefined) { + const doc = bulkGetResponse?.body.docs[esRequestIndex]; + // @ts-expect-error MultiGetHit._source is optional + if (!doc?.found || !rawDocExistsInNamespace(registry, doc, namespace)) { + const error = errorContent(SavedObjectsErrorHelpers.createGenericNotFoundError(type, id)); + return { + tag: 'Left' as 'Left', + error: { id, type, spaces: [], error }, + }; + } + currentSpaces = doc._source?.namespaces ?? []; + // @ts-expect-error MultiGetHit._source is optional + versionProperties = getExpectedVersionProperties(version, doc); + } else if (spaces?.length === 0) { + // A SOC wrapper attempted to retrieve this object in a pre-flight request and it was not found. + const error = errorContent(SavedObjectsErrorHelpers.createGenericNotFoundError(type, id)); + return { + tag: 'Left' as 'Left', + error: { id, type, spaces: [], error }, + }; + } else { + versionProperties = getExpectedVersionProperties(version); + } + + const { newSpaces, isUpdateRequired } = getNewSpacesArray( + currentSpaces, + spacesToAdd, + spacesToRemove + ); + const expectedResult = { + type, + id, + newSpaces, + ...(isUpdateRequired && { esRequestIndex: bulkOperationRequestIndexCounter++ }), + }; + + if (isUpdateRequired) { + const documentMetadata = { + _id: serializer.generateRawId(undefined, type, id), + _index: getIndexForType(type), + ...versionProperties, + }; + if (newSpaces.length) { + const documentToSave = { updated_at: time, namespaces: newSpaces }; + // @ts-expect-error BulkOperation.retry_on_conflict, BulkOperation.routing. BulkOperation.version, and BulkOperation.version_type are optional + bulkOperationParams.push({ update: documentMetadata }, { doc: documentToSave }); + } else { + // @ts-expect-error BulkOperation.retry_on_conflict, BulkOperation.routing. BulkOperation.version, and BulkOperation.version_type are optional + bulkOperationParams.push({ delete: documentMetadata }); + } + } + + return { tag: 'Right' as 'Right', value: expectedResult }; + } + ); + + const { refresh = DEFAULT_REFRESH_SETTING } = options; + const bulkOperationResponse = bulkOperationParams.length + ? await client.bulk({ refresh, body: bulkOperationParams, require_alias: true }) + : undefined; + + return { + objects: expectedBulkOperationResults.map( + (expectedResult) => { + if (isLeft(expectedResult)) { + return expectedResult.error; + } + + const { type, id, newSpaces, esRequestIndex } = expectedResult.value; + if (esRequestIndex !== undefined) { + const response = bulkOperationResponse?.body.items[esRequestIndex] ?? {}; + const rawResponse = Object.values(response)[0] as any; + const error = getBulkOperationError(type, id, rawResponse); + if (error) { + return { id, type, spaces: [], error }; + } + } + + return { id, type, spaces: newSpaces }; + } + ), + }; +} + +/** Extracts the contents of a decorated error to return the attributes for bulk operations. */ +function errorContent(error: DecoratedError) { + return error.output.payload; +} + +/** Gets the remaining spaces for an object after adding new ones and removing old ones. */ +function getNewSpacesArray( + existingSpaces: string[], + spacesToAdd: string[], + spacesToRemove: string[] +) { + const addSet = new Set(spacesToAdd); + const removeSet = new Set(spacesToRemove); + const newSpaces = existingSpaces + .filter((x) => { + addSet.delete(x); + return !removeSet.delete(x); + }) + .concat(Array.from(addSet)); + + const isAnySpaceAdded = addSet.size > 0; + const isAnySpaceRemoved = removeSet.size < spacesToRemove.length; + const isUpdateRequired = isAnySpaceAdded || isAnySpaceRemoved; + + return { newSpaces, isUpdateRequired }; +} diff --git a/src/core/server/saved_objects/service/saved_objects_client.mock.ts b/src/core/server/saved_objects/service/saved_objects_client.mock.ts index 544e92e32f1a1..e02387d41addf 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.mock.ts +++ b/src/core/server/saved_objects/service/saved_objects_client.mock.ts @@ -26,9 +26,9 @@ const create = () => { openPointInTimeForType: jest.fn().mockResolvedValue({ id: 'some_pit_id' }), resolve: jest.fn(), update: jest.fn(), - addToNamespaces: jest.fn(), - deleteFromNamespaces: jest.fn(), removeReferencesTo: jest.fn(), + collectMultiNamespaceReferences: jest.fn(), + updateObjectsSpaces: jest.fn(), } as unknown) as jest.Mocked; mock.createPointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ diff --git a/src/core/server/saved_objects/service/saved_objects_client.test.js b/src/core/server/saved_objects/service/saved_objects_client.test.js index 29381c7e418b5..1a369475f2c6d 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.test.js +++ b/src/core/server/saved_objects/service/saved_objects_client.test.js @@ -237,52 +237,39 @@ test(`#bulkUpdate`, async () => { expect(result).toBe(returnValue); }); -test(`#addToNamespaces`, async () => { +test(`#collectMultiNamespaceReferences`, async () => { const returnValue = Symbol(); const mockRepository = { - addToNamespaces: jest.fn().mockResolvedValue(returnValue), + collectMultiNamespaceReferences: jest.fn().mockResolvedValue(returnValue), }; const client = new SavedObjectsClient(mockRepository); - const type = Symbol(); - const id = Symbol(); - const namespaces = Symbol(); - const options = Symbol(); - const result = await client.addToNamespaces(type, id, namespaces, options); - - expect(mockRepository.addToNamespaces).toHaveBeenCalledWith(type, id, namespaces, options); - expect(result).toBe(returnValue); -}); - -test(`#deleteFromNamespaces`, async () => { - const returnValue = Symbol(); - const mockRepository = { - deleteFromNamespaces: jest.fn().mockResolvedValue(returnValue), - }; - const client = new SavedObjectsClient(mockRepository); - - const type = Symbol(); - const id = Symbol(); - const namespaces = Symbol(); + const objects = Symbol(); const options = Symbol(); - const result = await client.deleteFromNamespaces(type, id, namespaces, options); + const result = await client.collectMultiNamespaceReferences(objects, options); - expect(mockRepository.deleteFromNamespaces).toHaveBeenCalledWith(type, id, namespaces, options); + expect(mockRepository.collectMultiNamespaceReferences).toHaveBeenCalledWith(objects, options); expect(result).toBe(returnValue); }); -test(`#removeReferencesTo`, async () => { +test(`#updateObjectsSpaces`, async () => { const returnValue = Symbol(); const mockRepository = { - removeReferencesTo: jest.fn().mockResolvedValue(returnValue), + updateObjectsSpaces: jest.fn().mockResolvedValue(returnValue), }; const client = new SavedObjectsClient(mockRepository); - const type = Symbol(); - const id = Symbol(); + const objects = Symbol(); + const spacesToAdd = Symbol(); + const spacesToRemove = Symbol(); const options = Symbol(); - const result = await client.removeReferencesTo(type, id, options); - - expect(mockRepository.removeReferencesTo).toHaveBeenCalledWith(type, id, options); + const result = await client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options); + + expect(mockRepository.updateObjectsSpaces).toHaveBeenCalledWith( + objects, + spacesToAdd, + spacesToRemove, + options + ); expect(result).toBe(returnValue); }); diff --git a/src/core/server/saved_objects/service/saved_objects_client.ts b/src/core/server/saved_objects/service/saved_objects_client.ts index bf5cae0736cad..af682cfb81296 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.ts +++ b/src/core/server/saved_objects/service/saved_objects_client.ts @@ -11,6 +11,11 @@ import type { ISavedObjectsPointInTimeFinder, SavedObjectsCreatePointInTimeFinderOptions, SavedObjectsCreatePointInTimeFinderDependencies, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectsCollectMultiNamespaceReferencesResponse, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, } from './lib'; import { SavedObject, @@ -218,44 +223,6 @@ export interface SavedObjectsUpdateOptions extends SavedOb upsert?: Attributes; } -/** - * - * @public - */ -export interface SavedObjectsAddToNamespacesOptions extends SavedObjectsBaseOptions { - /** An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. */ - version?: string; - /** The Elasticsearch Refresh setting for this operation */ - refresh?: MutatingOperationRefreshSetting; -} - -/** - * - * @public - */ -export interface SavedObjectsAddToNamespacesResponse { - /** The namespaces the object exists in after this operation is complete. */ - namespaces: string[]; -} - -/** - * - * @public - */ -export interface SavedObjectsDeleteFromNamespacesOptions extends SavedObjectsBaseOptions { - /** The Elasticsearch Refresh setting for this operation */ - refresh?: MutatingOperationRefreshSetting; -} - -/** - * - * @public - */ -export interface SavedObjectsDeleteFromNamespacesResponse { - /** The namespaces the object exists in after this operation is complete. An empty array indicates the object was deleted. */ - namespaces: string[]; -} - /** * * @public @@ -536,40 +503,6 @@ export class SavedObjectsClient { return await this._repository.update(type, id, attributes, options); } - /** - * Adds namespaces to a SavedObject - * - * @param type - * @param id - * @param namespaces - * @param options - */ - async addToNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsAddToNamespacesOptions = {} - ): Promise { - return await this._repository.addToNamespaces(type, id, namespaces, options); - } - - /** - * Removes namespaces from a SavedObject - * - * @param type - * @param id - * @param namespaces - * @param options - */ - async deleteFromNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsDeleteFromNamespacesOptions = {} - ): Promise { - return await this._repository.deleteFromNamespaces(type, id, namespaces, options); - } - /** * Bulk Updates multiple SavedObject at once * @@ -665,14 +598,49 @@ export class SavedObjectsClient { * } * ``` */ - createPointInTimeFinder( + createPointInTimeFinder( findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies - ): ISavedObjectsPointInTimeFinder { + ): ISavedObjectsPointInTimeFinder { return this._repository.createPointInTimeFinder(findOptions, { client: this, // Include dependencies last so that SO client wrappers have their settings applied. ...dependencies, }); } + + /** + * Gets all references and transitive references of the listed objects. Ignores any object that is not a multi-namespace type. + * + * @param objects + * @param options + */ + async collectMultiNamespaceReferences( + objects: SavedObjectsCollectMultiNamespaceReferencesObject[], + options?: SavedObjectsCollectMultiNamespaceReferencesOptions + ): Promise { + return await this._repository.collectMultiNamespaceReferences(objects, options); + } + + /** + * Updates one or more objects to add and/or remove them from specified spaces. + * + * @param objects + * @param spacesToAdd + * @param spacesToRemove + * @param options + */ + async updateObjectsSpaces( + objects: SavedObjectsUpdateObjectsSpacesObject[], + spacesToAdd: string[], + spacesToRemove: string[], + options?: SavedObjectsUpdateObjectsSpacesOptions + ) { + return await this._repository.updateObjectsSpaces( + objects, + spacesToAdd, + spacesToRemove, + options + ); + } } diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index f4c70d718bc87..972e220baae3e 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -1255,9 +1255,9 @@ export type ISavedObjectsExporter = PublicMethodsOf; export type ISavedObjectsImporter = PublicMethodsOf; // @public (undocumented) -export interface ISavedObjectsPointInTimeFinder { +export interface ISavedObjectsPointInTimeFinder { close: () => Promise; - find: () => AsyncGenerator; + find: () => AsyncGenerator>; } // @public @@ -2144,6 +2144,7 @@ export type SavedObjectAttributeSingle = string | number | boolean | null | unde // @public (undocumented) export interface SavedObjectExportBaseOptions { excludeExportDetails?: boolean; + includeNamespaces?: boolean; includeReferencesDeep?: boolean; namespace?: string; request: KibanaRequest; @@ -2175,15 +2176,18 @@ export interface SavedObjectReference { type: string; } -// @public (undocumented) -export interface SavedObjectsAddToNamespacesOptions extends SavedObjectsBaseOptions { - refresh?: MutatingOperationRefreshSetting; - version?: string; -} - -// @public (undocumented) -export interface SavedObjectsAddToNamespacesResponse { - namespaces: string[]; +// @public +export interface SavedObjectReferenceWithContext { + id: string; + inboundReferences: Array<{ + type: string; + id: string; + name: string; + }>; + isMissing?: boolean; + spaces: string[]; + spacesWithMatchingAliases?: string[]; + type: string; } // Warning: (ae-forgotten-export) The symbol "SavedObjectDoc" needs to be exported by the entry point index.d.ts @@ -2277,16 +2281,15 @@ export interface SavedObjectsCheckConflictsResponse { export class SavedObjectsClient { // @internal constructor(repository: ISavedObjectsRepository); - addToNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsAddToNamespacesOptions): Promise; bulkCreate(objects: Array>, options?: SavedObjectsCreateOptions): Promise>; bulkGet(objects?: SavedObjectsBulkGetObject[], options?: SavedObjectsBaseOptions): Promise>; bulkUpdate(objects: Array>, options?: SavedObjectsBulkUpdateOptions): Promise>; checkConflicts(objects?: SavedObjectsCheckConflictsObject[], options?: SavedObjectsBaseOptions): Promise; closePointInTime(id: string, options?: SavedObjectsClosePointInTimeOptions): Promise; + collectMultiNamespaceReferences(objects: SavedObjectsCollectMultiNamespaceReferencesObject[], options?: SavedObjectsCollectMultiNamespaceReferencesOptions): Promise; create(type: string, attributes: T, options?: SavedObjectsCreateOptions): Promise>; - createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; + createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>; - deleteFromNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsDeleteFromNamespacesOptions): Promise; // (undocumented) static errors: typeof SavedObjectsErrorHelpers; // (undocumented) @@ -2297,6 +2300,7 @@ export class SavedObjectsClient { removeReferencesTo(type: string, id: string, options?: SavedObjectsRemoveReferencesToOptions): Promise; resolve(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; update(type: string, id: string, attributes: Partial, options?: SavedObjectsUpdateOptions): Promise>; + updateObjectsSpaces(objects: SavedObjectsUpdateObjectsSpacesObject[], spacesToAdd: string[], spacesToRemove: string[], options?: SavedObjectsUpdateObjectsSpacesOptions): Promise; } // @public @@ -2341,6 +2345,25 @@ export interface SavedObjectsClosePointInTimeResponse { succeeded: boolean; } +// @public +export interface SavedObjectsCollectMultiNamespaceReferencesObject { + // (undocumented) + id: string; + // (undocumented) + type: string; +} + +// @public +export interface SavedObjectsCollectMultiNamespaceReferencesOptions extends SavedObjectsBaseOptions { + purpose?: 'collectMultiNamespaceReferences' | 'updateObjectsSpaces'; +} + +// @public +export interface SavedObjectsCollectMultiNamespaceReferencesResponse { + // (undocumented) + objects: SavedObjectReferenceWithContext[]; +} + // @public export interface SavedObjectsComplexFieldMapping { // (undocumented) @@ -2401,16 +2424,6 @@ export interface SavedObjectsDeleteByNamespaceOptions extends SavedObjectsBaseOp refresh?: boolean; } -// @public (undocumented) -export interface SavedObjectsDeleteFromNamespacesOptions extends SavedObjectsBaseOptions { - refresh?: MutatingOperationRefreshSetting; -} - -// @public (undocumented) -export interface SavedObjectsDeleteFromNamespacesResponse { - namespaces: string[]; -} - // @public (undocumented) export interface SavedObjectsDeleteOptions extends SavedObjectsBaseOptions { force?: boolean; @@ -2884,21 +2897,20 @@ export interface SavedObjectsRemoveReferencesToResponse extends SavedObjectsBase // @public (undocumented) export class SavedObjectsRepository { - addToNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsAddToNamespacesOptions): Promise; bulkCreate(objects: Array>, options?: SavedObjectsCreateOptions): Promise>; bulkGet(objects?: SavedObjectsBulkGetObject[], options?: SavedObjectsBaseOptions): Promise>; bulkUpdate(objects: Array>, options?: SavedObjectsBulkUpdateOptions): Promise>; checkConflicts(objects?: SavedObjectsCheckConflictsObject[], options?: SavedObjectsBaseOptions): Promise; closePointInTime(id: string, options?: SavedObjectsClosePointInTimeOptions): Promise; + collectMultiNamespaceReferences(objects: SavedObjectsCollectMultiNamespaceReferencesObject[], options?: SavedObjectsCollectMultiNamespaceReferencesOptions): Promise; create(type: string, attributes: T, options?: SavedObjectsCreateOptions): Promise>; - createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; + createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; // Warning: (ae-forgotten-export) The symbol "IKibanaMigrator" needs to be exported by the entry point index.d.ts // // @internal - static createRepository(migrator: IKibanaMigrator, typeRegistry: SavedObjectTypeRegistry, indexName: string, client: ElasticsearchClient, logger: Logger, includedHiddenTypes?: string[], injectedConstructor?: any): ISavedObjectsRepository; + static createRepository(migrator: IKibanaMigrator, typeRegistry: ISavedObjectTypeRegistry, indexName: string, client: ElasticsearchClient, logger: Logger, includedHiddenTypes?: string[], injectedConstructor?: any): ISavedObjectsRepository; delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>; deleteByNamespace(namespace: string, options?: SavedObjectsDeleteByNamespaceOptions): Promise; - deleteFromNamespaces(type: string, id: string, namespaces: string[], options?: SavedObjectsDeleteFromNamespacesOptions): Promise; // (undocumented) find(options: SavedObjectsFindOptions): Promise>; get(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; @@ -2907,6 +2919,7 @@ export class SavedObjectsRepository { removeReferencesTo(type: string, id: string, options?: SavedObjectsRemoveReferencesToOptions): Promise; resolve(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; update(type: string, id: string, attributes: Partial, options?: SavedObjectsUpdateOptions): Promise>; + updateObjectsSpaces(objects: SavedObjectsUpdateObjectsSpacesObject[], spacesToAdd: string[], spacesToRemove: string[], options?: SavedObjectsUpdateObjectsSpacesOptions): Promise; } // @public @@ -2938,7 +2951,7 @@ export class SavedObjectsSerializer { generateRawId(namespace: string | undefined, type: string, id: string): string; generateRawLegacyUrlAliasId(namespace: string, type: string, id: string): string; isRawSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): boolean; - rawToSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): SavedObjectSanitizedDoc; + rawToSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): SavedObjectSanitizedDoc; savedObjectToRaw(savedObj: SavedObjectSanitizedDoc): SavedObjectsRawDoc; } @@ -3004,6 +3017,35 @@ export interface SavedObjectsTypeMappingDefinition { properties: SavedObjectsMappingProperties; } +// @public +export interface SavedObjectsUpdateObjectsSpacesObject { + id: string; + // @internal + spaces?: string[]; + type: string; + // @internal + version?: string; +} + +// @public +export interface SavedObjectsUpdateObjectsSpacesOptions extends SavedObjectsBaseOptions { + refresh?: MutatingOperationRefreshSetting; +} + +// @public +export interface SavedObjectsUpdateObjectsSpacesResponse { + // (undocumented) + objects: SavedObjectsUpdateObjectsSpacesResponseObject[]; +} + +// @public +export interface SavedObjectsUpdateObjectsSpacesResponseObject { + error?: SavedObjectError; + id: string; + spaces: string[]; + type: string; +} + // @public (undocumented) export interface SavedObjectsUpdateOptions extends SavedObjectsBaseOptions { references?: SavedObjectReference[]; diff --git a/src/core/server/types.ts b/src/core/server/types.ts index be07a3cfb1fd3..77b5378f9477f 100644 --- a/src/core/server/types.ts +++ b/src/core/server/types.ts @@ -37,6 +37,10 @@ export type { SavedObjectsClientContract, SavedObjectsNamespaceType, } from './saved_objects/types'; +export type { + SavedObjectReferenceWithContext, + SavedObjectsCollectMultiNamespaceReferencesResponse, +} from './saved_objects/service'; export type { DomainDeprecationDetails, DeprecationsGetResponse } from './deprecations/types'; export * from './ui_settings/types'; export type { EnvironmentMode, PackageInfo } from '@kbn/config'; diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index a71ce360a2190..dbb49825b2409 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -993,7 +993,7 @@ export class IndexPatternsServiceProvider implements Plugin_3, { expressions, usageCollection }: IndexPatternsServiceSetupDeps): void; // (undocumented) start(core: CoreStart, { fieldFormats, logger }: IndexPatternsServiceStartDeps): { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: ElasticsearchClient_2) => Promise; + indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: ElasticsearchClient_2) => Promise; }; } @@ -1263,7 +1263,7 @@ export class Plugin implements Plugin_2 Promise; }; indexPatterns: { - indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; + indexPatternsServiceFactory: (savedObjectsClient: Pick, elasticsearchClient: import("../../../core/server").ElasticsearchClient) => Promise; }; search: ISearchStart>; }; diff --git a/src/plugins/spaces_oss/public/api.ts b/src/plugins/spaces_oss/public/api.ts index e460d9a43ef6b..ddee9c0528ba1 100644 --- a/src/plugins/spaces_oss/public/api.ts +++ b/src/plugins/spaces_oss/public/api.ts @@ -169,8 +169,8 @@ export interface ShareToSpaceFlyoutProps { behaviorContext?: 'within-space' | 'outside-space'; /** * Optional handler that is called when the user has saved changes and there are spaces to be added to and/or removed from the object. If - * this is not defined, a default handler will be used that calls `/api/spaces/_share_saved_object_add` and/or - * `/api/spaces/_share_saved_object_remove` and displays toast(s) indicating what occurred. + * this is not defined, a default handler will be used that calls `/api/spaces/_update_objects_spaces` and displays a toast indicating + * what occurred. */ changeSpacesHandler?: (spacesToAdd: string[], spacesToRemove: string[]) => Promise; /** diff --git a/test/api_integration/apis/saved_objects/migrations.ts b/test/api_integration/apis/saved_objects/migrations.ts index dcd34c604dc31..d009a66e9df55 100644 --- a/test/api_integration/apis/saved_objects/migrations.ts +++ b/test/api_integration/apis/saved_objects/migrations.ts @@ -574,6 +574,7 @@ export default ({ getService }: FtrProviderContext) => { id: 'legacy-url-alias:spacex:foo:1', type: 'legacy-url-alias', 'legacy-url-alias': { + sourceId: '1', targetId: newFooId, targetNamespace: 'spacex', targetType: 'foo', @@ -606,6 +607,7 @@ export default ({ getService }: FtrProviderContext) => { id: 'legacy-url-alias:spacex:bar:1', type: 'legacy-url-alias', 'legacy-url-alias': { + sourceId: '1', targetId: newBarId, targetNamespace: 'spacex', targetType: 'bar', diff --git a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts index d18e7e427eeca..10a645295e2de 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts @@ -1819,6 +1819,82 @@ describe('#closePointInTime', () => { expect(mockBaseClient.closePointInTime).toHaveBeenCalledTimes(1); }); + + describe('#collectMultiNamespaceReferences', () => { + it('redirects request to underlying base client', async () => { + const objects = [{ type: 'foo', id: 'bar' }]; + const options = { namespace: 'some-ns' }; + await wrapper.collectMultiNamespaceReferences(objects, options); + + expect(mockBaseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(mockBaseClient.collectMultiNamespaceReferences).toHaveBeenCalledWith(objects, options); + }); + + it('returns response from underlying client', async () => { + const returnValue = { objects: [] }; + mockBaseClient.collectMultiNamespaceReferences.mockResolvedValue(returnValue); + + const objects = [{ type: 'foo', id: 'bar' }]; + const result = await wrapper.collectMultiNamespaceReferences(objects); + + expect(result).toBe(returnValue); + }); + + it('fails if base client fails', async () => { + const failureReason = new Error('Something bad happened...'); + mockBaseClient.collectMultiNamespaceReferences.mockRejectedValue(failureReason); + + const objects = [{ type: 'foo', id: 'bar' }]; + await expect(wrapper.collectMultiNamespaceReferences(objects)).rejects.toThrowError( + failureReason + ); + + expect(mockBaseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + }); + }); + + describe('#updateObjectsSpaces', () => { + const objects = [{ type: 'foo', id: 'bar' }]; + const spacesToAdd = ['space-x']; + const spacesToRemove = ['space-y']; + const options = {}; + it('redirects request to underlying base client', async () => { + await wrapper.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options); + + expect(mockBaseClient.updateObjectsSpaces).toHaveBeenCalledTimes(1); + expect(mockBaseClient.updateObjectsSpaces).toHaveBeenCalledWith( + objects, + spacesToAdd, + spacesToRemove, + options + ); + }); + + it('returns response from underlying client', async () => { + const returnValue = { objects: [] }; + mockBaseClient.updateObjectsSpaces.mockResolvedValue(returnValue); + + const result = await wrapper.updateObjectsSpaces( + objects, + spacesToAdd, + spacesToRemove, + options + ); + + expect(result).toBe(returnValue); + }); + + it('fails if base client fails', async () => { + const failureReason = new Error('Something bad happened...'); + mockBaseClient.updateObjectsSpaces.mockRejectedValue(failureReason); + + await expect( + wrapper.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options) + ).rejects.toThrowError(failureReason); + + expect(mockBaseClient.updateObjectsSpaces).toHaveBeenCalledTimes(1); + }); + }); }); describe('#createPointInTimeFinder', () => { diff --git a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts index 9b699d6ce007c..a339f213bdce4 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts @@ -8,7 +8,6 @@ import type { ISavedObjectTypeRegistry, SavedObject, - SavedObjectsAddToNamespacesOptions, SavedObjectsBaseOptions, SavedObjectsBulkCreateObject, SavedObjectsBulkGetObject, @@ -18,15 +17,19 @@ import type { SavedObjectsCheckConflictsObject, SavedObjectsClientContract, SavedObjectsClosePointInTimeOptions, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectsCollectMultiNamespaceReferencesResponse, SavedObjectsCreateOptions, SavedObjectsCreatePointInTimeFinderDependencies, SavedObjectsCreatePointInTimeFinderOptions, - SavedObjectsDeleteFromNamespacesOptions, SavedObjectsFindOptions, SavedObjectsFindResponse, SavedObjectsOpenPointInTimeOptions, SavedObjectsRemoveReferencesToOptions, SavedObjectsRemoveReferencesToResponse, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, SavedObjectsUpdateOptions, SavedObjectsUpdateResponse, } from 'src/core/server'; @@ -228,24 +231,6 @@ export class EncryptedSavedObjectsClientWrapper implements SavedObjectsClientCon ); } - public async addToNamespaces( - type: string, - id: string, - namespaces: string[], - options?: SavedObjectsAddToNamespacesOptions - ) { - return await this.options.baseClient.addToNamespaces(type, id, namespaces, options); - } - - public async deleteFromNamespaces( - type: string, - id: string, - namespaces: string[], - options?: SavedObjectsDeleteFromNamespacesOptions - ) { - return await this.options.baseClient.deleteFromNamespaces(type, id, namespaces, options); - } - public async removeReferencesTo( type: string, id: string, @@ -265,17 +250,38 @@ export class EncryptedSavedObjectsClientWrapper implements SavedObjectsClientCon return await this.options.baseClient.closePointInTime(id, options); } - public createPointInTimeFinder( + public createPointInTimeFinder( findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies ) { - return this.options.baseClient.createPointInTimeFinder(findOptions, { + return this.options.baseClient.createPointInTimeFinder(findOptions, { client: this, // Include dependencies last so that subsequent SO client wrappers have their settings applied. ...dependencies, }); } + public async collectMultiNamespaceReferences( + objects: SavedObjectsCollectMultiNamespaceReferencesObject[], + options?: SavedObjectsCollectMultiNamespaceReferencesOptions + ): Promise { + return await this.options.baseClient.collectMultiNamespaceReferences(objects, options); + } + + public async updateObjectsSpaces( + objects: SavedObjectsUpdateObjectsSpacesObject[], + spacesToAdd: string[], + spacesToRemove: string[], + options?: SavedObjectsUpdateObjectsSpacesOptions + ) { + return await this.options.baseClient.updateObjectsSpaces( + objects, + spacesToAdd, + spacesToRemove, + options + ); + } + /** * Strips encrypted attributes from any non-bulk Saved Objects API response. If type isn't * registered, response is returned as is. diff --git a/x-pack/plugins/ml/public/application/components/job_spaces_list/job_spaces_list.tsx b/x-pack/plugins/ml/public/application/components/job_spaces_list/job_spaces_list.tsx index 912dfe99aa3ed..85d1301fee957 100644 --- a/x-pack/plugins/ml/public/application/components/job_spaces_list/job_spaces_list.tsx +++ b/x-pack/plugins/ml/public/application/components/job_spaces_list/job_spaces_list.tsx @@ -37,13 +37,17 @@ export const JobSpacesList: FC = ({ spacesApi, spaceIds, jobId, jobType, const [showFlyout, setShowFlyout] = useState(false); - async function changeSpacesHandler(spacesToAdd: string[], spacesToRemove: string[]) { - if (spacesToAdd.length) { - const resp = await ml.savedObjects.assignJobToSpace(jobType, [jobId], spacesToAdd); - handleApplySpaces(resp); - } - if (spacesToRemove.length && !spacesToAdd.includes(ALL_SPACES_ID)) { - const resp = await ml.savedObjects.removeJobFromSpace(jobType, [jobId], spacesToRemove); + async function changeSpacesHandler(spacesToAdd: string[], spacesToMaybeRemove: string[]) { + // If the user is adding the job to all current and future spaces, don't remove it from any specified spaces + const spacesToRemove = spacesToAdd.includes(ALL_SPACES_ID) ? [] : spacesToMaybeRemove; + + if (spacesToAdd.length || spacesToRemove.length) { + const resp = await ml.savedObjects.updateJobsSpaces( + jobType, + [jobId], + spacesToAdd, + spacesToRemove + ); handleApplySpaces(resp); } onClose(); diff --git a/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts b/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts index 38cbeb486df09..dd2e35f3f7759 100644 --- a/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts +++ b/x-pack/plugins/ml/public/application/services/ml_api_service/saved_objects.ts @@ -26,18 +26,15 @@ export const savedObjectsApiProvider = (httpService: HttpService) => ({ method: 'GET', }); }, - assignJobToSpace(jobType: JobType, jobIds: string[], spaces: string[]) { - const body = JSON.stringify({ jobType, jobIds, spaces }); + updateJobsSpaces( + jobType: JobType, + jobIds: string[], + spacesToAdd: string[], + spacesToRemove: string[] + ) { + const body = JSON.stringify({ jobType, jobIds, spacesToAdd, spacesToRemove }); return httpService.http({ - path: `${basePath()}/saved_objects/assign_job_to_space`, - method: 'POST', - body, - }); - }, - removeJobFromSpace(jobType: JobType, jobIds: string[], spaces: string[]) { - const body = JSON.stringify({ jobType, jobIds, spaces }); - return httpService.http({ - path: `${basePath()}/saved_objects/remove_job_from_space`, + path: `${basePath()}/saved_objects/update_jobs_spaces`, method: 'POST', body, }); diff --git a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts index 81db7ca15b258..803bd0ae4cb3a 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts +++ b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts @@ -776,10 +776,11 @@ export class DataRecognizer { this._request ); if (canCreateGlobalJobs === true) { - await this._jobSavedObjectService.assignJobsToSpaces( + await this._jobSavedObjectService.updateJobsSpaces( 'anomaly-detector', jobs.map((j) => j.id), - ['*'] + ['*'], // spacesToAdd + [] // spacesToRemove ); } } diff --git a/x-pack/plugins/ml/server/routes/apidoc.json b/x-pack/plugins/ml/server/routes/apidoc.json index 7b54e48099d60..16cd3ea8df629 100644 --- a/x-pack/plugins/ml/server/routes/apidoc.json +++ b/x-pack/plugins/ml/server/routes/apidoc.json @@ -147,8 +147,7 @@ "SavedObjectsStatus", "SyncJobSavedObjects", "InitializeJobSavedObjects", - "AssignJobsToSpaces", - "RemoveJobsFromSpaces", + "UpdateJobsSpaces", "RemoveJobsFromCurrentSpace", "JobsSpaces", "CanDeleteJob", diff --git a/x-pack/plugins/ml/server/routes/saved_objects.ts b/x-pack/plugins/ml/server/routes/saved_objects.ts index c93730517cc11..e9fb748a4c7f8 100644 --- a/x-pack/plugins/ml/server/routes/saved_objects.ts +++ b/x-pack/plugins/ml/server/routes/saved_objects.ts @@ -126,15 +126,15 @@ export function savedObjectsRoutes( /** * @apiGroup JobSavedObjects * - * @api {post} /api/ml/saved_objects/assign_job_to_space Assign jobs to spaces - * @apiName AssignJobsToSpaces - * @apiDescription Add list of spaces to a list of jobs + * @api {post} /api/ml/saved_objects/update_jobs_spaces Update what spaces jobs are assigned to + * @apiName UpdateJobsSpaces + * @apiDescription Update a list of jobs to add and/or remove them from given spaces * * @apiSchema (body) jobsAndSpaces */ router.post( { - path: '/api/ml/saved_objects/assign_job_to_space', + path: '/api/ml/saved_objects/update_jobs_spaces', validate: { body: jobsAndSpaces, }, @@ -144,43 +144,14 @@ export function savedObjectsRoutes( }, routeGuard.fullLicenseAPIGuard(async ({ request, response, jobSavedObjectService }) => { try { - const { jobType, jobIds, spaces } = request.body; + const { jobType, jobIds, spacesToAdd, spacesToRemove } = request.body; - const body = await jobSavedObjectService.assignJobsToSpaces(jobType, jobIds, spaces); - - return response.ok({ - body, - }); - } catch (e) { - return response.customError(wrapError(e)); - } - }) - ); - - /** - * @apiGroup JobSavedObjects - * - * @api {post} /api/ml/saved_objects/remove_job_from_space Remove jobs from spaces - * @apiName RemoveJobsFromSpaces - * @apiDescription Remove a list of spaces from a list of jobs - * - * @apiSchema (body) jobsAndSpaces - */ - router.post( - { - path: '/api/ml/saved_objects/remove_job_from_space', - validate: { - body: jobsAndSpaces, - }, - options: { - tags: ['access:ml:canCreateJob', 'access:ml:canCreateDataFrameAnalytics'], - }, - }, - routeGuard.fullLicenseAPIGuard(async ({ request, response, jobSavedObjectService }) => { - try { - const { jobType, jobIds, spaces } = request.body; - - const body = await jobSavedObjectService.removeJobsFromSpaces(jobType, jobIds, spaces); + const body = await jobSavedObjectService.updateJobsSpaces( + jobType, + jobIds, + spacesToAdd, + spacesToRemove + ); return response.ok({ body, @@ -227,9 +198,12 @@ export function savedObjectsRoutes( }); } - const body = await jobSavedObjectService.removeJobsFromSpaces(jobType, jobIds, [ - currentSpaceId, - ]); + const body = await jobSavedObjectService.updateJobsSpaces( + jobType, + jobIds, + [], // spacesToAdd + [currentSpaceId] // spacesToRemove + ); return response.ok({ body, diff --git a/x-pack/plugins/ml/server/routes/schemas/saved_objects.ts b/x-pack/plugins/ml/server/routes/schemas/saved_objects.ts index 85f56c1ffb412..64d0b291772f9 100644 --- a/x-pack/plugins/ml/server/routes/schemas/saved_objects.ts +++ b/x-pack/plugins/ml/server/routes/schemas/saved_objects.ts @@ -17,7 +17,8 @@ export const jobTypeSchema = schema.object({ jobType: jobTypeLiterals }); export const jobsAndSpaces = schema.object({ jobType: jobTypeLiterals, jobIds: schema.arrayOf(schema.string()), - spaces: schema.arrayOf(schema.string()), + spacesToAdd: schema.arrayOf(schema.string()), + spacesToRemove: schema.arrayOf(schema.string()), }); export const jobsAndCurrentSpace = schema.object({ diff --git a/x-pack/plugins/ml/server/saved_objects/service.ts b/x-pack/plugins/ml/server/saved_objects/service.ts index 7a39f2ed5ebfe..da7d11776ee53 100644 --- a/x-pack/plugins/ml/server/saved_objects/service.ts +++ b/x-pack/plugins/ml/server/saved_objects/service.ts @@ -301,51 +301,60 @@ export function jobSavedObjectServiceFactory( return filterJobObjectIdsForSpace('anomaly-detector', ids, 'datafeed_id', allowWildcards); } - async function assignJobsToSpaces(jobType: JobType, jobIds: string[], spaces: string[]) { + async function updateJobsSpaces( + jobType: JobType, + jobIds: string[], + spacesToAdd: string[], + spacesToRemove: string[] + ) { const results: Record = {}; const jobs = await _getJobObjects(jobType); - for (const id of jobIds) { - const job = jobs.find((j) => j.attributes.job_id === id); + const jobObjectIdMap = new Map(); + const objectsToUpdate: Array<{ type: string; id: string }> = []; + for (const jobId of jobIds) { + const job = jobs.find((j) => j.attributes.job_id === jobId); if (job === undefined) { - results[id] = { + results[jobId] = { success: false, - error: createError(id, 'job_id'), + error: createError(jobId, 'job_id'), }; } else { - try { - await savedObjectsClient.addToNamespaces(ML_SAVED_OBJECT_TYPE, job.id, spaces); - results[id] = { - success: true, - }; - } catch (error) { - results[id] = { - success: false, - error: getSavedObjectClientError(error), - }; - } + jobObjectIdMap.set(job.id, jobId); + objectsToUpdate.push({ type: ML_SAVED_OBJECT_TYPE, id: job.id }); } } - return results; - } - async function removeJobsFromSpaces(jobType: JobType, jobIds: string[], spaces: string[]) { - const results: Record = {}; - const jobs = await _getJobObjects(jobType); - for (const job of jobs) { - if (jobIds.includes(job.attributes.job_id)) { - try { - await savedObjectsClient.deleteFromNamespaces(ML_SAVED_OBJECT_TYPE, job.id, spaces); - results[job.attributes.job_id] = { - success: true, - }; - } catch (error) { - results[job.attributes.job_id] = { + try { + const updateResult = await savedObjectsClient.updateObjectsSpaces( + objectsToUpdate, + spacesToAdd, + spacesToRemove + ); + updateResult.objects.forEach(({ id: objectId, error }) => { + const jobId = jobObjectIdMap.get(objectId)!; + if (error) { + results[jobId] = { success: false, error: getSavedObjectClientError(error), }; + } else { + results[jobId] = { + success: true, + }; } - } + }); + } catch (error) { + // If the entire operation failed, return success: false for each job + const clientError = getSavedObjectClientError(error); + objectsToUpdate.forEach(({ id: objectId }) => { + const jobId = jobObjectIdMap.get(objectId)!; + results[jobId] = { + success: false, + error: clientError, + }; + }); } + return results; } @@ -372,8 +381,7 @@ export function jobSavedObjectServiceFactory( filterJobIdsForSpace, filterDatafeedsForSpace, filterDatafeedIdsForSpace, - assignJobsToSpaces, - removeJobsFromSpaces, + updateJobsSpaces, bulkCreateJobs, getAllJobObjectsForAllSpaces, canCreateGlobalJobs, diff --git a/x-pack/plugins/security/server/audit/audit_events.ts b/x-pack/plugins/security/server/audit/audit_events.ts index 70d8149682370..611e7bd456da3 100644 --- a/x-pack/plugins/security/server/audit/audit_events.ts +++ b/x-pack/plugins/security/server/audit/audit_events.ts @@ -142,6 +142,8 @@ export enum SavedObjectAction { REMOVE_REFERENCES = 'saved_object_remove_references', OPEN_POINT_IN_TIME = 'saved_object_open_point_in_time', CLOSE_POINT_IN_TIME = 'saved_object_close_point_in_time', + COLLECT_MULTINAMESPACE_REFERENCES = 'saved_object_collect_multinamespace_references', // this is separate from 'saved_object_get' because the user is only accessing an object's metadata + UPDATE_OBJECTS_SPACES = 'saved_object_update_objects_spaces', // this is separate from 'saved_object_update' because the user is only updating an object's metadata } type VerbsTuple = [string, string, string]; @@ -170,6 +172,16 @@ const savedObjectAuditVerbs: Record = { 'removing references to', 'removed references to', ], + saved_object_collect_multinamespace_references: [ + 'collect references and spaces of', + 'collecting references and spaces of', + 'collected references and spaces of', + ], + saved_object_update_objects_spaces: [ + 'update spaces of', + 'updating spaces of', + 'updated spaces of', + ], }; const savedObjectAuditTypes: Record = { @@ -184,6 +196,8 @@ const savedObjectAuditTypes: Record = { saved_object_open_point_in_time: 'creation', saved_object_close_point_in_time: 'deletion', saved_object_remove_references: 'change', + saved_object_collect_multinamespace_references: 'access', + saved_object_update_objects_spaces: 'change', }; export interface SavedObjectEventParams { diff --git a/x-pack/plugins/security/server/saved_objects/ensure_authorized.test.ts b/x-pack/plugins/security/server/saved_objects/ensure_authorized.test.ts new file mode 100644 index 0000000000000..531b547a1f275 --- /dev/null +++ b/x-pack/plugins/security/server/saved_objects/ensure_authorized.test.ts @@ -0,0 +1,226 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectsClientContract } from 'src/core/server'; + +import type { CheckSavedObjectsPrivileges } from '../authorization'; +import { Actions } from '../authorization'; +import type { CheckPrivilegesResponse } from '../authorization/types'; +import type { EnsureAuthorizedResult } from './ensure_authorized'; +import { ensureAuthorized, getEnsureAuthorizedActionResult } from './ensure_authorized'; + +describe('ensureAuthorized', () => { + function setupDependencies() { + const actions = new Actions('some-version'); + jest + .spyOn(actions.savedObject, 'get') + .mockImplementation((type: string, action: string) => `mock-saved_object:${type}/${action}`); + const errors = ({ + decorateForbiddenError: jest.fn().mockImplementation((err) => err), + decorateGeneralError: jest.fn().mockImplementation((err) => err), + } as unknown) as jest.Mocked; + const checkSavedObjectsPrivilegesAsCurrentUser: jest.MockedFunction = jest.fn(); + return { actions, errors, checkSavedObjectsPrivilegesAsCurrentUser }; + } + + // These arguments are used for all unit tests below + const types = ['a', 'b', 'c']; + const actions = ['foo', 'bar']; + const namespaces = ['x', 'y']; + + const mockAuthorizedResolvedPrivileges = { + hasAllRequested: true, + privileges: { + kibana: [ + { privilege: 'mock-saved_object:a/foo', authorized: true }, + { privilege: 'mock-saved_object:a/bar', authorized: true }, + { resource: 'x', privilege: 'mock-saved_object:b/foo', authorized: true }, + { resource: 'x', privilege: 'mock-saved_object:b/bar', authorized: true }, + { resource: 'x', privilege: 'mock-saved_object:c/foo', authorized: true }, + { resource: 'x', privilege: 'mock-saved_object:c/bar', authorized: true }, + { resource: 'y', privilege: 'mock-saved_object:b/foo', authorized: true }, + { resource: 'y', privilege: 'mock-saved_object:b/bar', authorized: true }, + { resource: 'y', privilege: 'mock-saved_object:c/foo', authorized: true }, + { resource: 'y', privilege: 'mock-saved_object:c/bar', authorized: true }, + ], + }, + } as CheckPrivilegesResponse; + + test('calls checkSavedObjectsPrivilegesAsCurrentUser with expected privilege actions and namespaces', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue( + mockAuthorizedResolvedPrivileges + ); + await ensureAuthorized(deps, types, actions, namespaces); + expect(deps.checkSavedObjectsPrivilegesAsCurrentUser).toHaveBeenCalledWith( + [ + 'mock-saved_object:a/foo', + 'mock-saved_object:a/bar', + 'mock-saved_object:b/foo', + 'mock-saved_object:b/bar', + 'mock-saved_object:c/foo', + 'mock-saved_object:c/bar', + ], + namespaces + ); + }); + + test('throws an error when privilege check fails', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockRejectedValue(new Error('Oh no!')); + expect(ensureAuthorized(deps, [], [], [])).rejects.toThrowError('Oh no!'); + }); + + describe('fully authorized', () => { + const expectedResult = { + status: 'fully_authorized', + typeActionMap: new Map([ + [ + 'a', + { + foo: { isGloballyAuthorized: true, authorizedSpaces: [] }, + bar: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }, + ], + ['b', { foo: { authorizedSpaces: ['x', 'y'] }, bar: { authorizedSpaces: ['x', 'y'] } }], + ['c', { foo: { authorizedSpaces: ['x', 'y'] }, bar: { authorizedSpaces: ['x', 'y'] } }], + ]), + }; + + test('with default options', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue( + mockAuthorizedResolvedPrivileges + ); + const result = await ensureAuthorized(deps, types, actions, namespaces); + expect(result).toEqual(expectedResult); + }); + + test('with requireFullAuthorization=false', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue( + mockAuthorizedResolvedPrivileges + ); + const options = { requireFullAuthorization: false }; + const result = await ensureAuthorized(deps, types, actions, namespaces, options); + expect(result).toEqual(expectedResult); + }); + }); + + describe('partially authorized', () => { + const resolvedPrivileges = { + hasAllRequested: false, + privileges: { + kibana: [ + // For type 'a', the user is authorized to use 'foo' action but not 'bar' action (all spaces) + // For type 'b', the user is authorized to use 'foo' action but not 'bar' action (both spaces) + // For type 'c', the user is authorized to use both actions in space 'x' but not space 'y' + { privilege: 'mock-saved_object:a/foo', authorized: true }, + { privilege: 'mock-saved_object:a/bar', authorized: false }, + { privilege: 'mock-saved_object:a/bar', authorized: true }, // fail-secure check + { resource: 'x', privilege: 'mock-saved_object:b/foo', authorized: true }, + { resource: 'x', privilege: 'mock-saved_object:b/bar', authorized: false }, + { resource: 'x', privilege: 'mock-saved_object:c/foo', authorized: true }, + { privilege: 'mock-saved_object:c/foo', authorized: false }, // inverse fail-secure check + { resource: 'x', privilege: 'mock-saved_object:c/bar', authorized: true }, + { resource: 'y', privilege: 'mock-saved_object:b/foo', authorized: true }, + { resource: 'y', privilege: 'mock-saved_object:b/bar', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:c/foo', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:c/bar', authorized: false }, + { privilege: 'mock-saved_object:c/bar', authorized: true }, // fail-secure check + { resource: 'y', privilege: 'mock-saved_object:c/bar', authorized: true }, // fail-secure check + // The fail-secure checks are a contrived scenario, as we *shouldn't* get both an unauthorized and authorized result for a given resource... + // However, in case we do, we should fail-secure (authorized + unauthorized = unauthorized) + ], + }, + } as CheckPrivilegesResponse; + + test('with default options', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue(resolvedPrivileges); + expect( + ensureAuthorized(deps, types, actions, namespaces) + ).rejects.toThrowErrorMatchingInlineSnapshot(`"Unable to (bar a),(bar b),(bar c),(foo c)"`); + }); + + test('with requireFullAuthorization=false', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue(resolvedPrivileges); + const options = { requireFullAuthorization: false }; + const result = await ensureAuthorized(deps, types, actions, namespaces, options); + expect(result).toEqual({ + status: 'partially_authorized', + typeActionMap: new Map([ + ['a', { foo: { isGloballyAuthorized: true, authorizedSpaces: [] } }], + ['b', { foo: { authorizedSpaces: ['x', 'y'] } }], + ['c', { foo: { authorizedSpaces: ['x'] }, bar: { authorizedSpaces: ['x'] } }], + ]), + }); + }); + }); + + describe('unauthorized', () => { + const resolvedPrivileges = { + hasAllRequested: false, + privileges: { + kibana: [ + { privilege: 'mock-saved_object:a/foo', authorized: false }, + { privilege: 'mock-saved_object:a/bar', authorized: false }, + { privilege: 'mock-saved_object:a/bar', authorized: true }, // fail-secure check + { resource: 'x', privilege: 'mock-saved_object:b/foo', authorized: false }, + { resource: 'x', privilege: 'mock-saved_object:b/bar', authorized: false }, + { resource: 'x', privilege: 'mock-saved_object:c/foo', authorized: false }, + { resource: 'x', privilege: 'mock-saved_object:c/bar', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:a/foo', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:a/bar', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:b/foo', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:b/bar', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:c/foo', authorized: false }, + { resource: 'y', privilege: 'mock-saved_object:c/bar', authorized: false }, + { privilege: 'mock-saved_object:c/bar', authorized: true }, // fail-secure check + { resource: 'y', privilege: 'mock-saved_object:c/bar', authorized: true }, // fail-secure check + // The fail-secure checks are a contrived scenario, as we *shouldn't* get both an unauthorized and authorized result for a given resource... + // However, in case we do, we should fail-secure (authorized + unauthorized = unauthorized) + ], + }, + } as CheckPrivilegesResponse; + + test('with default options', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue(resolvedPrivileges); + expect( + ensureAuthorized(deps, types, actions, namespaces) + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Unable to (bar a),(bar b),(bar c),(foo a),(foo b),(foo c)"` + ); + }); + + test('with requireFullAuthorization=false', async () => { + const deps = setupDependencies(); + deps.checkSavedObjectsPrivilegesAsCurrentUser.mockResolvedValue(resolvedPrivileges); + const options = { requireFullAuthorization: false }; + const result = await ensureAuthorized(deps, types, actions, namespaces, options); + expect(result).toEqual({ status: 'unauthorized', typeActionMap: new Map() }); + }); + }); +}); + +describe('getEnsureAuthorizedActionResult', () => { + const typeActionMap: EnsureAuthorizedResult<'action'>['typeActionMap'] = new Map([ + ['type', { action: { authorizedSpaces: ['space-id'] } }], + ]); + + test('returns the appropriate result if it is in the typeActionMap', () => { + const result = getEnsureAuthorizedActionResult('type', 'action', typeActionMap); + expect(result).toEqual({ authorizedSpaces: ['space-id'] }); + }); + + test('returns an unauthorized result if it is not in the typeActionMap', () => { + const result = getEnsureAuthorizedActionResult('other-type', 'action', typeActionMap); + expect(result).toEqual({ authorizedSpaces: [] }); + }); +}); diff --git a/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts b/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts new file mode 100644 index 0000000000000..0ce7b5f78f13b --- /dev/null +++ b/x-pack/plugins/security/server/saved_objects/ensure_authorized.ts @@ -0,0 +1,165 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectsClientContract } from 'src/core/server'; + +import type { Actions, CheckSavedObjectsPrivileges } from '../authorization'; +import type { CheckPrivilegesResponse } from '../authorization/types'; + +export interface EnsureAuthorizedDependencies { + actions: Actions; + errors: SavedObjectsClientContract['errors']; + checkSavedObjectsPrivilegesAsCurrentUser: CheckSavedObjectsPrivileges; +} + +export interface EnsureAuthorizedOptions { + /** Whether or not to throw an error if the user is not fully authorized. Default is true. */ + requireFullAuthorization?: boolean; +} + +export interface EnsureAuthorizedResult { + status: 'fully_authorized' | 'partially_authorized' | 'unauthorized'; + typeActionMap: Map>; +} + +export interface EnsureAuthorizedActionResult { + authorizedSpaces: string[]; + isGloballyAuthorized?: boolean; +} + +/** + * Checks to ensure a user is authorized to access object types in given spaces. + * + * @param {EnsureAuthorizedDependencies} deps the dependencies needed to make the privilege checks. + * @param {string[]} types the type(s) to check privileges for. + * @param {T[]} actions the action(s) to check privileges for. + * @param {string[]} spaceIds the id(s) of spaces to check privileges for. + * @param {EnsureAuthorizedOptions} options the options to use. + */ +export async function ensureAuthorized( + deps: EnsureAuthorizedDependencies, + types: string[], + actions: T[], + spaceIds: string[], + options: EnsureAuthorizedOptions = {} +): Promise> { + const { requireFullAuthorization = true } = options; + const privilegeActionsMap = new Map( + types.flatMap((type) => + actions.map((action) => [deps.actions.savedObject.get(type, action), { type, action }]) + ) + ); + const privilegeActions = Array.from(privilegeActionsMap.keys()); + const { hasAllRequested, privileges } = await checkPrivileges(deps, privilegeActions, spaceIds); + + const missingPrivileges = getMissingPrivileges(privileges); + const typeActionMap = privileges.kibana.reduce< + Map> + >((acc, { resource, privilege }) => { + const missingPrivilegesAtResource = + (resource && missingPrivileges.get(resource)?.has(privilege)) || + (!resource && missingPrivileges.get(undefined)?.has(privilege)); + + if (missingPrivilegesAtResource) { + return acc; + } + const { type, action } = privilegeActionsMap.get(privilege)!; // always defined + const actionAuthorizations = acc.get(type) ?? ({} as Record); + const authorization: EnsureAuthorizedActionResult = actionAuthorizations[action] ?? { + authorizedSpaces: [], + }; + + if (resource === undefined) { + return acc.set(type, { + ...actionAuthorizations, + [action]: { ...authorization, isGloballyAuthorized: true }, + }); + } + + return acc.set(type, { + ...actionAuthorizations, + [action]: { + ...authorization, + authorizedSpaces: authorization.authorizedSpaces.concat(resource), + }, + }); + }, new Map()); + + if (hasAllRequested) { + return { typeActionMap, status: 'fully_authorized' }; + } + + if (!requireFullAuthorization) { + const isPartiallyAuthorized = typeActionMap.size > 0; + if (isPartiallyAuthorized) { + return { typeActionMap, status: 'partially_authorized' }; + } else { + return { typeActionMap, status: 'unauthorized' }; + } + } + + // Neither fully nor partially authorized. Bail with error. + const uniqueUnauthorizedPrivileges = [...missingPrivileges.entries()].reduce( + (acc, [, privilegeSet]) => new Set([...acc, ...privilegeSet]), + new Set() + ); + const targetTypesAndActions = [...uniqueUnauthorizedPrivileges] + .map((privilege) => { + const { type, action } = privilegeActionsMap.get(privilege)!; + return `(${action} ${type})`; + }) + .sort() + .join(','); + const msg = `Unable to ${targetTypesAndActions}`; + throw deps.errors.decorateForbiddenError(new Error(msg)); +} + +/** + * Helper function that, given an `EnsureAuthorizedResult`, checks to see what spaces the user is authorized to perform a given action for + * the given object type. + * + * @param {string} objectType the object type to check. + * @param {T} action the action to check. + * @param {EnsureAuthorizedResult['typeActionMap']} typeActionMap the typeActionMap from an EnsureAuthorizedResult. + */ +export function getEnsureAuthorizedActionResult( + objectType: string, + action: T, + typeActionMap: EnsureAuthorizedResult['typeActionMap'] +): EnsureAuthorizedActionResult { + const record = typeActionMap.get(objectType) ?? ({} as Record); + return record[action] ?? { authorizedSpaces: [] }; +} + +async function checkPrivileges( + deps: EnsureAuthorizedDependencies, + actions: string | string[], + namespaceOrNamespaces?: string | Array +) { + try { + return await deps.checkSavedObjectsPrivilegesAsCurrentUser(actions, namespaceOrNamespaces); + } catch (error) { + throw deps.errors.decorateGeneralError(error, error.body && error.body.reason); + } +} + +function getMissingPrivileges(privileges: CheckPrivilegesResponse['privileges']) { + return privileges.kibana.reduce>>( + (acc, { resource, privilege, authorized }) => { + if (!authorized) { + if (resource) { + acc.set(resource, (acc.get(resource) || new Set()).add(privilege)); + } + // Fail-secure: if a user is not authorized for a specific resource, they are not authorized for the global resource too (global resource is undefined) + // The inverse is not true; if a user is not authorized for the global resource, they may still be authorized for a specific resource + acc.set(undefined, (acc.get(undefined) || new Set()).add(privilege)); + } + return acc; + }, + new Map() + ); +} diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.mocks.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.mocks.ts new file mode 100644 index 0000000000000..9e772f5394cc2 --- /dev/null +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.mocks.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ensureAuthorized } from './ensure_authorized'; + +export const mockEnsureAuthorized = jest.fn() as jest.MockedFunction; + +jest.mock('./ensure_authorized', () => { + return { + ...jest.requireActual('./ensure_authorized'), + ensureAuthorized: mockEnsureAuthorized, + }; +}); diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts index 2658f4edec5ac..e5a2340aba3f0 100644 --- a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts @@ -5,7 +5,15 @@ * 2.0. */ -import type { EcsEventOutcome, SavedObjectsClientContract } from 'src/core/server'; +import { mockEnsureAuthorized } from './secure_saved_objects_client_wrapper.test.mocks'; + +import type { + EcsEventOutcome, + SavedObject, + SavedObjectReferenceWithContext, + SavedObjectsClientContract, + SavedObjectsUpdateObjectsSpacesResponseObject, +} from 'src/core/server'; import { httpServerMock, savedObjectsClientMock } from 'src/core/server/mocks'; import type { AuditEvent } from '../audit'; @@ -20,6 +28,7 @@ jest.mock('src/core/server/saved_objects/service/lib/utils', () => { ); return { SavedObjectsUtils: { + ...SavedObjectsUtils, createEmptyFindResponse: SavedObjectsUtils.createEmptyFindResponse, generateId: () => 'mock-saved-object-id', }, @@ -179,8 +188,6 @@ const expectObjectNamespaceFiltering = async ( clientOpts.baseClient.get.mockReturnValue(returnValue as any); // 'resolve' is excluded because it has a specific test case written for it clientOpts.baseClient.update.mockReturnValue(returnValue as any); - clientOpts.baseClient.addToNamespaces.mockReturnValue(returnValue as any); - clientOpts.baseClient.deleteFromNamespaces.mockReturnValue(returnValue as any); const result = await fn.bind(client)(...Object.values(args)); // we will never redact the "All Spaces" ID @@ -210,7 +217,7 @@ const expectAuditEvent = ( }), kibana: savedObject ? expect.objectContaining({ - saved_object: savedObject, + saved_object: { type: savedObject.type, id: savedObject.id }, }) : expect.anything(), }) @@ -313,146 +320,12 @@ beforeEach(() => { clientOpts = createSecureSavedObjectsClientWrapperOptions(); client = new SecureSavedObjectsClientWrapper(clientOpts); - // succeed privilege checks by default + // succeed legacyEnsureAuthorized privilege checks by default clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( getMockCheckPrivilegesSuccess ); -}); - -describe('#addToNamespaces', () => { - const type = 'foo'; - const id = `${type}-id`; - const newNs1 = 'foo-namespace'; - const newNs2 = 'bar-namespace'; - const namespaces = [newNs1, newNs2]; - const currentNs = 'default'; - const privilege = `mock-saved_object:${type}/share_to_space`; - - test(`throws decorated GeneralError when hasPrivileges rejects promise`, async () => { - await expectGeneralError(client.addToNamespaces, { type, id, namespaces }); - }); - - test(`throws decorated ForbiddenError when unauthorized to create in new space`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( - getMockCheckPrivilegesFailure - ); - - await expect(client.addToNamespaces(type, id, namespaces)).rejects.toThrowError( - clientOpts.forbiddenError - ); - - expect(clientOpts.errors.decorateForbiddenError).toHaveBeenCalledTimes(1); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure).toHaveBeenCalledTimes(1); - expect( - clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure - ).toHaveBeenCalledWith( - USERNAME, - 'addToNamespacesCreate', - [type], - namespaces.sort(), - [{ privilege, spaceId: newNs1 }], - { id, type, namespaces, options: {} } - ); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).not.toHaveBeenCalled(); - }); - - test(`throws decorated ForbiddenError when unauthorized to update in current space`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementationOnce( - getMockCheckPrivilegesSuccess // create - ); - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( - getMockCheckPrivilegesFailure // update - ); - - await expect(client.addToNamespaces(type, id, namespaces)).rejects.toThrowError( - clientOpts.forbiddenError - ); - expect(clientOpts.errors.decorateForbiddenError).toHaveBeenCalledTimes(1); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure).toHaveBeenCalledTimes(1); - expect( - clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure - ).toHaveBeenLastCalledWith( - USERNAME, - 'addToNamespacesUpdate', - [type], - [currentNs], - [{ privilege, spaceId: currentNs }], - { id, type, namespaces, options: {} } - ); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).toHaveBeenCalledTimes(1); - }); - - test(`returns result of baseClient.addToNamespaces when authorized`, async () => { - const apiCallReturnValue = Symbol(); - clientOpts.baseClient.addToNamespaces.mockReturnValue(apiCallReturnValue as any); - - const result = await client.addToNamespaces(type, id, namespaces); - expect(result).toBe(apiCallReturnValue); - - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure).not.toHaveBeenCalled(); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).toHaveBeenCalledTimes(2); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).toHaveBeenNthCalledWith( - 1, - USERNAME, - 'addToNamespacesCreate', // action for privilege check is 'share_to_space', but auditAction is 'addToNamespacesCreate' - [type], - namespaces.sort(), - { type, id, namespaces, options: {} } - ); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).toHaveBeenNthCalledWith( - 2, - USERNAME, - 'addToNamespacesUpdate', // action for privilege check is 'share_to_space', but auditAction is 'addToNamespacesUpdate' - [type], - [currentNs], - { type, id, namespaces, options: {} } - ); - }); - - test(`checks privileges for user, actions, and namespaces`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementationOnce( - getMockCheckPrivilegesSuccess // create - ); - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( - getMockCheckPrivilegesFailure // update - ); - - await expect(client.addToNamespaces(type, id, namespaces)).rejects.toThrow(); // test is simpler with error case - - expect(clientOpts.checkSavedObjectsPrivilegesAsCurrentUser).toHaveBeenCalledTimes(2); - expect(clientOpts.checkSavedObjectsPrivilegesAsCurrentUser).toHaveBeenNthCalledWith( - 1, - [privilege], - namespaces - ); - expect(clientOpts.checkSavedObjectsPrivilegesAsCurrentUser).toHaveBeenNthCalledWith( - 2, - [privilege], - undefined // default namespace - ); - }); - - test(`filters namespaces that the user doesn't have access to`, async () => { - // this operation is unique because it requires two privilege checks before it executes - await expectObjectNamespaceFiltering(client.addToNamespaces, { type, id, namespaces }, 2); - }); - - test(`adds audit event when successful`, async () => { - const apiCallReturnValue = Symbol(); - clientOpts.baseClient.addToNamespaces.mockReturnValue(apiCallReturnValue as any); - await client.addToNamespaces(type, id, namespaces); - - expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(1); - expectAuditEvent('saved_object_add_to_spaces', 'unknown', { type, id }); - }); - - test(`adds audit event when not successful`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockRejectedValue(new Error()); - await expect(() => client.addToNamespaces(type, id, namespaces)).rejects.toThrow(); - expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(1); - expectAuditEvent('saved_object_add_to_spaces', 'failure', { type, id }); - }); + mockEnsureAuthorized.mockReset(); }); describe('#bulkCreate', () => { @@ -1163,92 +1036,6 @@ describe('#resolve', () => { }); }); -describe('#deleteFromNamespaces', () => { - const type = 'foo'; - const id = `${type}-id`; - const namespace1 = 'default'; - const namespace2 = 'another-namespace'; - const namespaces = [namespace1, namespace2]; - const privilege = `mock-saved_object:${type}/share_to_space`; - - test(`throws decorated GeneralError when hasPrivileges rejects promise`, async () => { - await expectGeneralError(client.deleteFromNamespaces, { type, id, namespaces }); - }); - - test(`throws decorated ForbiddenError when unauthorized`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( - getMockCheckPrivilegesFailure - ); - - await expect(client.deleteFromNamespaces(type, id, namespaces)).rejects.toThrowError( - clientOpts.forbiddenError - ); - - expect(clientOpts.errors.decorateForbiddenError).toHaveBeenCalledTimes(1); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure).toHaveBeenCalledTimes(1); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure).toHaveBeenCalledWith( - USERNAME, - 'deleteFromNamespaces', // action for privilege check is 'share_to_space', but auditAction is 'deleteFromNamespaces' - [type], - namespaces.sort(), - [{ privilege, spaceId: namespace1 }], - { type, id, namespaces, options: {} } - ); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).not.toHaveBeenCalled(); - }); - - test(`returns result of baseClient.deleteFromNamespaces when authorized`, async () => { - const apiCallReturnValue = Symbol(); - clientOpts.baseClient.deleteFromNamespaces.mockReturnValue(apiCallReturnValue as any); - - const result = await client.deleteFromNamespaces(type, id, namespaces); - expect(result).toBe(apiCallReturnValue); - - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationFailure).not.toHaveBeenCalled(); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).toHaveBeenCalledTimes(1); - expect(clientOpts.legacyAuditLogger.savedObjectsAuthorizationSuccess).toHaveBeenCalledWith( - USERNAME, - 'deleteFromNamespaces', // action for privilege check is 'share_to_space', but auditAction is 'deleteFromNamespaces' - [type], - namespaces.sort(), - { type, id, namespaces, options: {} } - ); - }); - - test(`checks privileges for user, actions, and namespace`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockImplementation( - getMockCheckPrivilegesFailure - ); - - await expect(client.deleteFromNamespaces(type, id, namespaces)).rejects.toThrow(); // test is simpler with error case - - expect(clientOpts.checkSavedObjectsPrivilegesAsCurrentUser).toHaveBeenCalledTimes(1); - expect(clientOpts.checkSavedObjectsPrivilegesAsCurrentUser).toHaveBeenCalledWith( - [privilege], - namespaces - ); - }); - - test(`filters namespaces that the user doesn't have access to`, async () => { - await expectObjectNamespaceFiltering(client.deleteFromNamespaces, { type, id, namespaces }); - }); - - test(`adds audit event when successful`, async () => { - const apiCallReturnValue = Symbol(); - clientOpts.baseClient.deleteFromNamespaces.mockReturnValue(apiCallReturnValue as any); - await client.deleteFromNamespaces(type, id, namespaces); - expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(1); - expectAuditEvent('saved_object_delete_from_spaces', 'unknown', { type, id }); - }); - - test(`adds audit event when not successful`, async () => { - clientOpts.checkSavedObjectsPrivilegesAsCurrentUser.mockRejectedValue(new Error()); - await expect(() => client.deleteFromNamespaces(type, id, namespaces)).rejects.toThrow(); - expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(1); - expectAuditEvent('saved_object_delete_from_spaces', 'failure', { type, id }); - }); -}); - describe('#update', () => { const type = 'foo'; const id = `${type}-id`; @@ -1351,6 +1138,583 @@ describe('#removeReferencesTo', () => { }); }); +/** + * Naming conventions used in this group of tests: + * * 'reqObj' is an object that the consumer requests (SavedObjectsCollectMultiNamespaceReferencesObject) + * * 'obj' is the object result that was fetched from Elasticsearch (SavedObjectReferenceWithContext) + */ +describe('#collectMultiNamespaceReferences', () => { + const AUDIT_ACTION = 'saved_object_collect_multinamespace_references'; + const spaceX = 'space-x'; + const spaceY = 'space-y'; + const spaceZ = 'space-z'; + + /** Returns a valid inboundReferences field for mock baseClient results. */ + function getInboundRefsFrom( + ...objects: Array<{ type: string; id: string }> + ): Pick { + return { + inboundReferences: objects.map(({ type, id }) => { + return { type, id, name: `ref-${type}:${id}` }; + }), + }; + } + + beforeEach(() => { + // by default, the result is a success, each object exists in the current space and another space + clientOpts.baseClient.collectMultiNamespaceReferences.mockImplementation((objects) => + Promise.resolve({ + objects: objects.map(({ type, id }) => ({ + type, + id, + spaces: [spaceX, spaceY, spaceZ], + inboundReferences: [], + })), + }) + ); + }); + + describe('errors', () => { + const reqObj1 = { type: 'a', id: '1' }; + const reqObj2 = { type: 'b', id: '2' }; + const reqObj3 = { type: 'c', id: '3' }; + + test(`throws an error if the base client operation fails`, async () => { + clientOpts.baseClient.collectMultiNamespaceReferences.mockRejectedValue(new Error('Oh no!')); + await expect(() => + client.collectMultiNamespaceReferences([reqObj1], { namespace: spaceX }) + ).rejects.toThrowError('Oh no!'); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).not.toHaveBeenCalled(); + expect(clientOpts.auditLogger.log).not.toHaveBeenCalled(); + }); + + describe(`throws decorated ForbiddenError and adds audit events when unauthorized`, () => { + test(`with purpose 'collectMultiNamespaceReferences'`, async () => { + // Use the default mocked results for the base client call. + // This fails because the user is not authorized to bulk_get type 'c' in the current space. + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('a', { bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] } }) + .set('b', { bulk_get: { authorizedSpaces: [spaceX, spaceY] } }) + .set('c', { bulk_get: { authorizedSpaces: [spaceY] } }), + }); + const options = { namespace: spaceX }; // spaceX is the current space + await expect(() => + client.collectMultiNamespaceReferences([reqObj1, reqObj2, reqObj3], options) + ).rejects.toThrowError(clientOpts.forbiddenError); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(3); + expectAuditEvent(AUDIT_ACTION, 'failure', reqObj1); + expectAuditEvent(AUDIT_ACTION, 'failure', reqObj2); + expectAuditEvent(AUDIT_ACTION, 'failure', reqObj3); + }); + + test(`with purpose 'updateObjectsSpaces'`, async () => { + // Use the default mocked results for the base client call. + // This fails because the user is not authorized to share_to_space type 'c' in the current space. + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('a', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + share_to_space: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }) + .set('b', { + bulk_get: { authorizedSpaces: [spaceX, spaceY] }, + share_to_space: { authorizedSpaces: [spaceX, spaceY] }, + }) + .set('c', { + bulk_get: { authorizedSpaces: [spaceX, spaceY] }, + share_to_space: { authorizedSpaces: [spaceY] }, + }), + }); + const options = { namespace: spaceX, purpose: 'updateObjectsSpaces' as const }; // spaceX is the current space + await expect(() => + client.collectMultiNamespaceReferences([reqObj1, reqObj2, reqObj3], options) + ).rejects.toThrowError(clientOpts.forbiddenError); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(3); + expectAuditEvent(AUDIT_ACTION, 'failure', reqObj1); + expectAuditEvent(AUDIT_ACTION, 'failure', reqObj2); + expectAuditEvent(AUDIT_ACTION, 'failure', reqObj3); + }); + }); + + test(`throws an error if the base client result includes a requested object without a valid inbound reference`, async () => { + // We *shouldn't* ever get an inbound reference that is not also present in the base client response objects array. + const spaces = [spaceX]; + + const obj1 = { ...reqObj1, spaces, inboundReferences: [] }; + const obj2 = { + type: 'a', + id: '2', + spaces, + ...getInboundRefsFrom({ type: 'some-type', id: 'some-id' }), + }; + clientOpts.baseClient.collectMultiNamespaceReferences.mockResolvedValueOnce({ + objects: [obj1, obj2], + }); + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map().set('a', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }), + }); + // When the loop gets to obj2, it will determine that the user is authorized for the object but *not* for the graph. However, it will + // also determine that there is *no* valid inbound reference tying this object back to what was requested. In this case, throw an + // error. + + const options = { namespace: spaceX }; // spaceX is the current space + await expect(() => + client.collectMultiNamespaceReferences([reqObj1], options) + ).rejects.toThrowError('Unexpected inbound reference to "some-type:some-id"'); + }); + }); + + describe(`checks privileges`, () => { + // Other test cases below contain more complex assertions for privilege checks, but these focus on the current space (default vs non-default) + const reqObj1 = { type: 'a', id: '1' }; + const obj1 = { ...reqObj1, spaces: ['*'], inboundReferences: [] }; + + beforeEach(() => { + clientOpts.baseClient.collectMultiNamespaceReferences.mockResolvedValueOnce({ + objects: [obj1], + }); + mockEnsureAuthorized.mockResolvedValue({ + status: 'fully_authorized', + typeActionMap: new Map().set('a', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, // success case for the simplest test + }), + }); + }); + + test(`in the default space`, async () => { + await client.collectMultiNamespaceReferences([reqObj1]); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['a'], // unique types of the fetched objects + ['bulk_get'], // actions + ['default'], // unique spaces that the fetched objects exist in, along with the current space + { requireFullAuthorization: false } + ); + }); + + test(`in a non-default space`, async () => { + await client.collectMultiNamespaceReferences([reqObj1], { namespace: spaceX }); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['a'], // unique types of the fetched objects + ['bulk_get'], // actions + [spaceX], // unique spaces that the fetched objects exist in, along with the current space + { requireFullAuthorization: false } + ); + }); + }); + + describe(`checks privileges, filters/redacts objects correctly, and records audit events`, () => { + const reqObj1 = { type: 'a', id: '1' }; + const reqObj2 = { type: 'b', id: '2' }; + const spaces = [spaceX, spaceY, spaceZ]; + + // Actual object graph: + // ─► obj1 (a:1) ─┬─► obj3 (c:3) ───► obj5 (c:5) ─► obj8 (c:8) ─┐ + // │ ▲ │ + // │ │ │ + // └─► obj4 (d:4) ─┬─► obj6 (c:6) ◄──────────────┘ + // ─► obj2 (b:2) └─► obj7 (c:7) + // + // Object graph that the consumer sees after authorization: + // ─► obj1 (a:1) ─┬─► obj3 (c:3) ───► obj5 (c:5) ─► obj8 (c:8) ─► obj6 (c:6) ─┐ + // │ ▲ │ + // │ └───────────────────────────────────┘ + // └─► obj4 (d:4) + // ─► obj2 (b:2) + const obj1 = { ...reqObj1, spaces, inboundReferences: [] }; + const obj2 = { ...reqObj2, spaces: [], inboundReferences: [] }; // non-multi-namespace types and hidden types will be returned with an empty spaces array + const obj3 = { type: 'c', id: '3', spaces, ...getInboundRefsFrom(obj1) }; + const obj4 = { type: 'd', id: '4', spaces, ...getInboundRefsFrom(obj1) }; + const obj5 = { + type: 'c', + id: '5', + spaces: ['*'], + ...getInboundRefsFrom(obj3, { type: 'c', id: '6' }), + }; + const obj6 = { + type: 'c', + id: '6', + spaces, + ...getInboundRefsFrom(obj4, { type: 'c', id: '8' }), + }; + const obj7 = { type: 'c', id: '7', spaces, ...getInboundRefsFrom(obj4) }; + const obj8 = { type: 'c', id: '8', spaces, ...getInboundRefsFrom(obj5) }; + + beforeEach(() => { + clientOpts.baseClient.collectMultiNamespaceReferences.mockResolvedValueOnce({ + objects: [obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8], + }); + }); + + test(`with purpose 'collectMultiNamespaceReferences'`, async () => { + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('a', { bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] } }) + .set('b', { bulk_get: { authorizedSpaces: [spaceX] } }) + .set('c', { bulk_get: { authorizedSpaces: [spaceX] } }), + // the user is not authorized to read type 'd' + }); + + const options = { namespace: spaceX }; // spaceX is the current space + const result = await client.collectMultiNamespaceReferences([reqObj1, reqObj2], options); + expect(result).toEqual({ + objects: [ + obj1, // obj1's spaces array is not redacted because the user is globally authorized to access it + obj2, // obj2 has an empty spaces array (see above) + { ...obj3, spaces: [spaceX, '?', '?'] }, + { ...obj4, spaces: [], isMissing: true }, // obj4 is marked as Missing because the user was not authorized to access it + obj5, // obj5's spaces array is not redacted, because it exists in All Spaces + // obj7 is not included at all because the user was not authorized to access its inbound reference (obj4) + { ...obj8, spaces: [spaceX, '?', '?'] }, + { ...obj6, spaces: [spaceX, '?', '?'], ...getInboundRefsFrom(obj8) }, // obj6 is at the back of the list and its inboundReferences array is redacted because the user is not authorized to access one of its inbound references, obj4 + ], + }); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledWith( + [reqObj1, reqObj2], + options + ); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['a', 'b', 'c', 'd'], // unique types of the fetched objects + ['bulk_get'], // actions + [spaceX, spaceY, spaceZ], // unique spaces that the fetched objects exist in, along with the current space + { requireFullAuthorization: false } + ); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(5); + expectAuditEvent(AUDIT_ACTION, 'success', obj1); + expectAuditEvent(AUDIT_ACTION, 'success', obj3); + expectAuditEvent(AUDIT_ACTION, 'success', obj5); + expectAuditEvent(AUDIT_ACTION, 'success', obj8); + expectAuditEvent(AUDIT_ACTION, 'success', obj6); + // obj2, obj4, and obj7 are intentionally excluded from the audit record because we did not return any information about them to the user + }); + + test(`with purpose 'updateObjectsSpaces'`, async () => { + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('a', { + share_to_space: { authorizedSpaces: [spaceX] }, + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + // Even though the user can only share type 'a' in spaceX, we won't redact spaceY or spaceZ because the user has global read privileges + }) + .set('b', { + share_to_space: { authorizedSpaces: [spaceX] }, + bulk_get: { authorizedSpaces: [spaceX, spaceY] }, + }) + .set('c', { + share_to_space: { authorizedSpaces: [spaceX] }, + bulk_get: { authorizedSpaces: [spaceX, spaceY] }, + // Even though the user can only share type 'c' in spaceX, we won't redact spaceY because the user has read privileges there + }), + // the user is not authorized to read or share type 'd' + }); + + const options = { namespace: spaceX, purpose: 'updateObjectsSpaces' as const }; // spaceX is the current space + const result = await client.collectMultiNamespaceReferences([reqObj1, reqObj2], options); + expect(result).toEqual({ + objects: [ + obj1, // obj1's spaces array is not redacted because the user is globally authorized to access it + obj2, // obj2 has an empty spaces array (see above) + { ...obj3, spaces: [spaceX, spaceY, '?'] }, + { ...obj4, spaces: [], isMissing: true }, // obj4 is marked as Missing because the user was not authorized to access it + obj5, // obj5's spaces array is not redacted, because it exists in All Spaces + // obj7 is not included at all because the user was not authorized to access its inbound reference (obj4) + { ...obj8, spaces: [spaceX, spaceY, '?'] }, + { ...obj6, spaces: [spaceX, spaceY, '?'], ...getInboundRefsFrom(obj8) }, // obj6 is at the back of the list and its inboundReferences array is redacted because the user is not authorized to access one of its inbound references, obj4 + ], + }); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(clientOpts.baseClient.collectMultiNamespaceReferences).toHaveBeenCalledWith( + [reqObj1, reqObj2], + options + ); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['a', 'b', 'c', 'd'], // unique types of the fetched objects + ['bulk_get', 'share_to_space'], // actions + [spaceX, spaceY, spaceZ], // unique spaces that the fetched objects exist in, along with the current space + { requireFullAuthorization: false } + ); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(5); + expectAuditEvent(AUDIT_ACTION, 'success', obj1); + expectAuditEvent(AUDIT_ACTION, 'success', obj3); + expectAuditEvent(AUDIT_ACTION, 'success', obj5); + expectAuditEvent(AUDIT_ACTION, 'success', obj8); + expectAuditEvent(AUDIT_ACTION, 'success', obj6); + // obj2, obj4, and obj7 are intentionally excluded from the audit record because we did not return any information about them to the user + }); + }); +}); + +describe('#updateObjectsSpaces', () => { + const AUDIT_ACTION = 'saved_object_update_objects_spaces'; + const spaceA = 'space-a'; + const spaceB = 'space-b'; + const spaceC = 'space-c'; + const spaceD = 'space-d'; + const obj1 = { type: 'x', id: '1' }; + const obj2 = { type: 'y', id: '2' }; + const obj3 = { type: 'z', id: '3' }; + const obj4 = { type: 'z', id: '4' }; + const obj5 = { type: 'z', id: '5' }; + + describe('errors', () => { + test(`throws an error if the base client bulkGet operation fails`, async () => { + clientOpts.baseClient.bulkGet.mockRejectedValue(new Error('Oh no!')); + await expect(() => + client.updateObjectsSpaces([obj1], [spaceA], [spaceB], { namespace: spaceC }) + ).rejects.toThrowError('Oh no!'); + expect(clientOpts.baseClient.bulkGet).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).not.toHaveBeenCalled(); + expect(clientOpts.auditLogger.log).not.toHaveBeenCalled(); + }); + + test(`throws decorated ForbiddenError and adds audit events when unauthorized`, async () => { + clientOpts.baseClient.bulkGet.mockResolvedValue({ + saved_objects: [ + { ...obj1, namespaces: [spaceB, spaceC, spaceD] }, + { ...obj2, namespaces: [spaceB, spaceC, spaceD] }, + { ...obj3, namespaces: [spaceB, spaceC, spaceD] }, + ] as SavedObject[], + }); + // This fails because the user is not authorized to share_to_space type 'z' in the current space. + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('x', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + share_to_space: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }) + .set('y', { + bulk_get: { authorizedSpaces: [spaceA, spaceB, spaceC, spaceD] }, + share_to_space: { authorizedSpaces: [spaceA, spaceB, spaceC, spaceD] }, + }) + .set('z', { + bulk_get: { authorizedSpaces: [spaceA, spaceB, spaceC] }, + share_to_space: { authorizedSpaces: [spaceA, spaceB] }, + }), + }); + + const objects = [obj1, obj2, obj3]; + const spacesToAdd = [spaceA]; + const spacesToRemove = [spaceB]; + const options = { namespace: spaceC }; // spaceC is the current space + await expect(() => + client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options) + ).rejects.toThrowError(clientOpts.forbiddenError); + expect(clientOpts.baseClient.bulkGet).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(3); + expectAuditEvent(AUDIT_ACTION, 'failure', obj1); + expectAuditEvent(AUDIT_ACTION, 'failure', obj2); + expectAuditEvent(AUDIT_ACTION, 'failure', obj3); + expect(clientOpts.baseClient.updateObjectsSpaces).not.toHaveBeenCalled(); + }); + + test(`throws an error if the base client updateObjectsSpaces operation fails`, async () => { + clientOpts.baseClient.bulkGet.mockResolvedValue({ + saved_objects: [ + { ...obj1, namespaces: [spaceB, spaceC, spaceD] }, + { ...obj2, namespaces: [spaceB, spaceC, spaceD] }, + { ...obj3, namespaces: [spaceB, spaceC, spaceD] }, + ] as SavedObject[], + }); + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('x', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + share_to_space: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }) + .set('y', { + bulk_get: { authorizedSpaces: [spaceA, spaceB, spaceC, spaceD] }, + share_to_space: { authorizedSpaces: [spaceA, spaceB, spaceC] }, + }) + .set('z', { + bulk_get: { authorizedSpaces: [spaceA, spaceB, spaceC] }, + share_to_space: { authorizedSpaces: [spaceA, spaceB, spaceC] }, + }), + }); + clientOpts.baseClient.updateObjectsSpaces.mockRejectedValue(new Error('Oh no!')); + + const objects = [obj1, obj2, obj3]; + const spacesToAdd = [spaceA]; + const spacesToRemove = [spaceB]; + const options = { namespace: spaceC }; // spaceC is the current space + await expect(() => + client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options) + ).rejects.toThrowError('Oh no!'); + expect(clientOpts.baseClient.bulkGet).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(3); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj1); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj2); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj3); + expect(clientOpts.baseClient.updateObjectsSpaces).toHaveBeenCalledTimes(1); + }); + }); + + test(`checks privileges, filters/redacts objects correctly, and records audit events`, async () => { + const bulkGetResults = [ + { ...obj1, namespaces: [spaceB, spaceC, spaceD], version: 'v1' }, + { ...obj2, namespaces: [spaceB, spaceC, spaceD], version: 'v2' }, + { ...obj3, namespaces: [spaceB, spaceC, spaceD], version: 'v3' }, + { ...obj4, namespaces: ['*'], version: 'v4' }, // obj4 exists in all spaces + { ...obj5, namespaces: [spaceB, spaceC, spaceD], version: 'v5' }, + ] as SavedObject[]; + clientOpts.baseClient.bulkGet.mockResolvedValue({ saved_objects: bulkGetResults }); + mockEnsureAuthorized.mockResolvedValue({ + status: 'partially_authorized', + typeActionMap: new Map() + .set('x', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + share_to_space: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }) + .set('y', { + bulk_get: { authorizedSpaces: [spaceA, spaceB, spaceC, spaceD] }, + share_to_space: { authorizedSpaces: [spaceA, spaceB, spaceC] }, + }) + .set('z', { + bulk_get: { authorizedSpaces: [spaceA, spaceB, spaceC] }, // the user is not authorized to bulkGet type 'z' in spaceD, so it will be redacted from the results + share_to_space: { authorizedSpaces: [spaceA, spaceB, spaceC] }, + }), + }); + clientOpts.baseClient.updateObjectsSpaces.mockResolvedValue({ + objects: [ + // Each object was added to spaceA and removed from spaceB + { ...obj1, spaces: [spaceA, spaceC, spaceD] }, + { ...obj2, spaces: [spaceA, spaceC, spaceD] }, + { ...obj3, spaces: [spaceA, spaceC, spaceD] }, + { ...obj4, spaces: ['*', spaceA] }, // even though this object exists in all spaces, we won't pass '*' to ensureAuthorized + { ...obj5, spaces: [], error: new Error('Oh no!') }, // we encountered an error when attempting to update obj5 + ] as SavedObjectsUpdateObjectsSpacesResponseObject[], + }); + + const objects = [obj1, obj2, obj3, obj4, obj5]; + const spacesToAdd = [spaceA]; + const spacesToRemove = [spaceB]; + const options = { namespace: spaceC }; // spaceC is the current space + const result = await client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options); + expect(result).toEqual({ + objects: [ + { ...obj1, spaces: [spaceA, spaceC, spaceD] }, // obj1's spaces array is not redacted because the user is globally authorized to access it + { ...obj2, spaces: [spaceA, spaceC, spaceD] }, // obj2's spaces array is not redacted because the user is authorized to access it in each space + { ...obj3, spaces: [spaceA, spaceC, '?'] }, // obj3's spaces array is redacted because the user is not authorized to access it in spaceD + { ...obj4, spaces: ['*', spaceA] }, + { ...obj5, spaces: [], error: new Error('Oh no!') }, + ], + }); + + expect(clientOpts.baseClient.bulkGet).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['x', 'y', 'z'], // unique types of the fetched objects + ['bulk_get', 'share_to_space'], // actions + [spaceC, spaceA, spaceB, spaceD], // unique spaces of: the current space, spacesToAdd, spacesToRemove, and spaces that the fetched objects exist in (excludes '*') + { requireFullAuthorization: false } + ); + expect(clientOpts.auditLogger.log).toHaveBeenCalledTimes(5); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj1); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj2); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj3); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj4); + expectAuditEvent(AUDIT_ACTION, 'unknown', obj5); + expect(clientOpts.baseClient.updateObjectsSpaces).toHaveBeenCalledTimes(1); + expect(clientOpts.baseClient.updateObjectsSpaces).toHaveBeenCalledWith( + bulkGetResults.map(({ namespaces: spaces, ...otherAttrs }) => ({ spaces, ...otherAttrs })), + spacesToAdd, + spacesToRemove, + options + ); + }); + + test(`checks privileges for the global resource when spacesToAdd includes '*'`, async () => { + const bulkGetResults = [{ ...obj1, namespaces: [spaceA], version: 'v1' }] as SavedObject[]; + clientOpts.baseClient.bulkGet.mockResolvedValue({ saved_objects: bulkGetResults }); + mockEnsureAuthorized.mockResolvedValue({ + status: 'fully_authorized', + typeActionMap: new Map().set('x', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + share_to_space: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }), + }); + clientOpts.baseClient.updateObjectsSpaces.mockResolvedValue({ + objects: [ + // The object was removed from spaceA and added to '*' + { ...obj1, spaces: ['*'] }, + ] as SavedObjectsUpdateObjectsSpacesResponseObject[], + }); + + const objects = [obj1]; + const spacesToAdd = ['*']; + const spacesToRemove = [spaceA]; + const options = { namespace: spaceC }; // spaceC is the current space + await client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options); + + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['x'], // unique types of the fetched objects + ['bulk_get', 'share_to_space'], // actions + [spaceC, '*', spaceA], // unique spaces of: the current space, spacesToAdd, spacesToRemove, and spaces that the fetched objects exist in (excludes '*') + { requireFullAuthorization: false } + ); + }); + + test(`checks privileges for the global resource when spacesToRemove includes '*'`, async () => { + const bulkGetResults = [{ ...obj1, namespaces: ['*'], version: 'v1' }] as SavedObject[]; + clientOpts.baseClient.bulkGet.mockResolvedValue({ saved_objects: bulkGetResults }); + mockEnsureAuthorized.mockResolvedValue({ + status: 'fully_authorized', + typeActionMap: new Map().set('x', { + bulk_get: { isGloballyAuthorized: true, authorizedSpaces: [] }, + share_to_space: { isGloballyAuthorized: true, authorizedSpaces: [] }, + }), + }); + clientOpts.baseClient.updateObjectsSpaces.mockResolvedValue({ + objects: [ + // The object was removed from spaceA and added to '*' + { ...obj1, spaces: ['*'] }, + ] as SavedObjectsUpdateObjectsSpacesResponseObject[], + }); + + const objects = [obj1]; + const spacesToAdd = [spaceA]; + const spacesToRemove = ['*']; + const options = { namespace: spaceC }; // spaceC is the current space + await client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options); + + expect(mockEnsureAuthorized).toHaveBeenCalledTimes(1); + expect(mockEnsureAuthorized).toHaveBeenCalledWith( + expect.any(Object), // dependencies + ['x'], // unique types of the fetched objects + ['bulk_get', 'share_to_space'], // actions + [spaceC, spaceA, '*'], // unique spaces of: the current space, spacesToAdd, spacesToRemove, and spaces that the fetched objects exist in (excludes '*') + { requireFullAuthorization: false } + ); + }); +}); + describe('other', () => { test(`assigns errors from constructor to .errors`, () => { expect(client.errors).toBe(clientOpts.errors); diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts index 066a720f70721..ef3dcac4c064b 100644 --- a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts @@ -7,7 +7,7 @@ import type { PublicMethodsOf } from '@kbn/utility-types'; import type { - SavedObjectsAddToNamespacesOptions, + SavedObjectReferenceWithContext, SavedObjectsBaseOptions, SavedObjectsBulkCreateObject, SavedObjectsBulkGetObject, @@ -15,13 +15,17 @@ import type { SavedObjectsCheckConflictsObject, SavedObjectsClientContract, SavedObjectsClosePointInTimeOptions, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectsCollectMultiNamespaceReferencesResponse, SavedObjectsCreateOptions, SavedObjectsCreatePointInTimeFinderDependencies, SavedObjectsCreatePointInTimeFinderOptions, - SavedObjectsDeleteFromNamespacesOptions, SavedObjectsFindOptions, SavedObjectsOpenPointInTimeOptions, SavedObjectsRemoveReferencesToOptions, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, SavedObjectsUpdateOptions, } from 'src/core/server'; @@ -32,6 +36,12 @@ import { SavedObjectAction, savedObjectEvent } from '../audit'; import type { Actions, CheckSavedObjectsPrivileges } from '../authorization'; import type { CheckPrivilegesResponse } from '../authorization/types'; import type { SpacesService } from '../plugin'; +import type { + EnsureAuthorizedDependencies, + EnsureAuthorizedOptions, + EnsureAuthorizedResult, +} from './ensure_authorized'; +import { ensureAuthorized, getEnsureAuthorizedActionResult } from './ensure_authorized'; interface SecureSavedObjectsClientWrapperOptions { actions: Actions; @@ -51,21 +61,20 @@ interface SavedObjectsNamespaces { saved_objects: SavedObjectNamespaces[]; } -interface EnsureAuthorizedOptions { +interface LegacyEnsureAuthorizedOptions { args?: Record; auditAction?: string; requireFullAuthorization?: boolean; } -interface EnsureAuthorizedResult { +interface LegacyEnsureAuthorizedResult { status: 'fully_authorized' | 'partially_authorized' | 'unauthorized'; - typeMap: Map; + typeMap: Map; } -interface EnsureAuthorizedTypeResult { +interface LegacyEnsureAuthorizedTypeResult { authorizedSpaces: string[]; isGloballyAuthorized?: boolean; } - export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContract { private readonly actions: Actions; private readonly legacyAuditLogger: PublicMethodsOf; @@ -102,7 +111,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra const namespaces = [optionsWithId.namespace, ...(optionsWithId.initialNamespaces || [])]; try { const args = { type, attributes, options: optionsWithId }; - await this.ensureAuthorized(type, 'create', namespaces, { args }); + await this.legacyEnsureAuthorized(type, 'create', namespaces, { args }); } catch (error) { this.auditLogger.log( savedObjectEvent({ @@ -131,7 +140,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ) { const args = { objects, options }; const types = this.getUniqueObjectTypes(objects); - await this.ensureAuthorized(types, 'bulk_create', options.namespace, { + await this.legacyEnsureAuthorized(types, 'bulk_create', options.namespace, { args, auditAction: 'checkConflicts', }); @@ -154,7 +163,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ); try { const args = { objects: objectsWithId, options }; - await this.ensureAuthorized( + await this.legacyEnsureAuthorized( this.getUniqueObjectTypes(objectsWithId), 'bulk_create', namespaces, @@ -191,7 +200,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra public async delete(type: string, id: string, options: SavedObjectsBaseOptions = {}) { try { const args = { type, id, options }; - await this.ensureAuthorized(type, 'delete', options.namespace, { args }); + await this.legacyEnsureAuthorized(type, 'delete', options.namespace, { args }); } catch (error) { this.auditLogger.log( savedObjectEvent({ @@ -230,7 +239,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra } const args = { options }; - const { status, typeMap } = await this.ensureAuthorized( + const { status, typeMap } = await this.legacyEnsureAuthorized( options.type, 'find', options.namespaces, @@ -278,7 +287,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ) { try { const args = { objects, options }; - await this.ensureAuthorized( + await this.legacyEnsureAuthorized( this.getUniqueObjectTypes(objects), 'bulk_get', options.namespace, @@ -318,7 +327,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra public async get(type: string, id: string, options: SavedObjectsBaseOptions = {}) { try { const args = { type, id, options }; - await this.ensureAuthorized(type, 'get', options.namespace, { args }); + await this.legacyEnsureAuthorized(type, 'get', options.namespace, { args }); } catch (error) { this.auditLogger.log( savedObjectEvent({ @@ -349,7 +358,10 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ) { try { const args = { type, id, options }; - await this.ensureAuthorized(type, 'get', options.namespace, { args, auditAction: 'resolve' }); + await this.legacyEnsureAuthorized(type, 'get', options.namespace, { + args, + auditAction: 'resolve', + }); } catch (error) { this.auditLogger.log( savedObjectEvent({ @@ -386,7 +398,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ) { try { const args = { type, id, attributes, options }; - await this.ensureAuthorized(type, 'update', options.namespace, { args }); + await this.legacyEnsureAuthorized(type, 'update', options.namespace, { args }); } catch (error) { this.auditLogger.log( savedObjectEvent({ @@ -409,90 +421,6 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra return await this.redactSavedObjectNamespaces(savedObject, [options.namespace]); } - public async addToNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsAddToNamespacesOptions = {} - ) { - const { namespace } = options; - try { - const args = { type, id, namespaces, options }; - // To share an object, the user must have the "share_to_space" permission in each of the destination namespaces. - await this.ensureAuthorized(type, 'share_to_space', namespaces, { - args, - auditAction: 'addToNamespacesCreate', - }); - - // To share an object, the user must also have the "share_to_space" permission in one or more of the source namespaces. Because the - // `addToNamespaces` operation is scoped to the current namespace, we can just check if the user has the "share_to_space" permission in - // the current namespace. If the user has permission, but the saved object doesn't exist in this namespace, the base client operation - // will result in a 404 error. - await this.ensureAuthorized(type, 'share_to_space', namespace, { - args, - auditAction: 'addToNamespacesUpdate', - }); - } catch (error) { - this.auditLogger.log( - savedObjectEvent({ - action: SavedObjectAction.ADD_TO_SPACES, - savedObject: { type, id }, - addToSpaces: namespaces, - error, - }) - ); - throw error; - } - this.auditLogger.log( - savedObjectEvent({ - action: SavedObjectAction.ADD_TO_SPACES, - outcome: 'unknown', - savedObject: { type, id }, - addToSpaces: namespaces, - }) - ); - - const response = await this.baseClient.addToNamespaces(type, id, namespaces, options); - return await this.redactSavedObjectNamespaces(response, [namespace, ...namespaces]); - } - - public async deleteFromNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsDeleteFromNamespacesOptions = {} - ) { - try { - const args = { type, id, namespaces, options }; - // To un-share an object, the user must have the "share_to_space" permission in each of the target namespaces. - await this.ensureAuthorized(type, 'share_to_space', namespaces, { - args, - auditAction: 'deleteFromNamespaces', - }); - } catch (error) { - this.auditLogger.log( - savedObjectEvent({ - action: SavedObjectAction.DELETE_FROM_SPACES, - savedObject: { type, id }, - deleteFromSpaces: namespaces, - error, - }) - ); - throw error; - } - this.auditLogger.log( - savedObjectEvent({ - action: SavedObjectAction.DELETE_FROM_SPACES, - outcome: 'unknown', - savedObject: { type, id }, - deleteFromSpaces: namespaces, - }) - ); - - const response = await this.baseClient.deleteFromNamespaces(type, id, namespaces, options); - return await this.redactSavedObjectNamespaces(response, namespaces); - } - public async bulkUpdate( objects: Array> = [], options: SavedObjectsBaseOptions = {} @@ -505,9 +433,14 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra const namespaces = [options?.namespace, ...objectNamespaces]; try { const args = { objects, options }; - await this.ensureAuthorized(this.getUniqueObjectTypes(objects), 'bulk_update', namespaces, { - args, - }); + await this.legacyEnsureAuthorized( + this.getUniqueObjectTypes(objects), + 'bulk_update', + namespaces, + { + args, + } + ); } catch (error) { objects.forEach(({ type, id }) => this.auditLogger.log( @@ -541,7 +474,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ) { try { const args = { type, id, options }; - await this.ensureAuthorized(type, 'delete', options.namespace, { + await this.legacyEnsureAuthorized(type, 'delete', options.namespace, { args, auditAction: 'removeReferences', }); @@ -573,7 +506,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ) { try { const args = { type, options }; - await this.ensureAuthorized(type, 'open_point_in_time', options?.namespace, { + await this.legacyEnsureAuthorized(type, 'open_point_in_time', options?.namespace, { args, // Partial authorization is acceptable in this case because this method is only designed // to be used with `find`, which already allows for partial authorization. @@ -618,20 +551,254 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra return await this.baseClient.closePointInTime(id, options); } - public createPointInTimeFinder( + public createPointInTimeFinder( findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies ) { // We don't need to perform an authorization check here or add an audit log, because // `createPointInTimeFinder` is simply a helper that calls `find`, `openPointInTimeForType`, // and `closePointInTime` internally, so authz checks and audit logs will already be applied. - return this.baseClient.createPointInTimeFinder(findOptions, { + return this.baseClient.createPointInTimeFinder(findOptions, { client: this, // Include dependencies last so that subsequent SO client wrappers have their settings applied. ...dependencies, }); } + public async collectMultiNamespaceReferences( + objects: SavedObjectsCollectMultiNamespaceReferencesObject[], + options: SavedObjectsCollectMultiNamespaceReferencesOptions = {} + ): Promise { + const currentSpaceId = SavedObjectsUtils.namespaceIdToString(options.namespace); // We need this whether the Spaces plugin is enabled or not. + + // We don't know the space(s) that each object exists in, so we'll collect the objects and references first, then check authorization. + const response = await this.baseClient.collectMultiNamespaceReferences(objects, options); + const uniqueTypes = this.getUniqueObjectTypes(response.objects); + const uniqueSpaces = this.getUniqueSpaces( + currentSpaceId, + ...response.objects.flatMap(({ spaces, spacesWithMatchingAliases = [] }) => + spaces.concat(spacesWithMatchingAliases) + ) + ); + + const { typeActionMap } = await this.ensureAuthorized( + uniqueTypes, + options.purpose === 'updateObjectsSpaces' ? ['bulk_get', 'share_to_space'] : ['bulk_get'], + uniqueSpaces, + { requireFullAuthorization: false } + ); + + // The user must be authorized to access every requested object in the current space. + // Note: non-multi-namespace object types will have an empty spaces array. + const authAction = options.purpose === 'updateObjectsSpaces' ? 'share_to_space' : 'bulk_get'; + try { + this.ensureAuthorizedInAllSpaces(objects, authAction, typeActionMap, [currentSpaceId]); + } catch (error) { + objects.forEach(({ type, id }) => + this.auditLogger.log( + savedObjectEvent({ + action: SavedObjectAction.COLLECT_MULTINAMESPACE_REFERENCES, + savedObject: { type, id }, + error, + }) + ) + ); + throw error; + } + + // The user is authorized to access all of the requested objects in the space(s) that they exist in. + // Now: 1. omit any result objects that the user has no access to, 2. for the rest, redact any space(s) that the user is not authorized + // for, and 3. create audit records for any objects that will be returned to the user. + const requestedObjectsSet = objects.reduce( + (acc, { type, id }) => acc.add(`${type}:${id}`), + new Set() + ); + const retrievedObjectsSet = response.objects.reduce( + (acc, { type, id }) => acc.add(`${type}:${id}`), + new Set() + ); + const traversedObjects = new Set(); + const filteredObjectsMap = new Map(); + const getIsAuthorizedForInboundReference = (inbound: { type: string; id: string }) => { + const found = filteredObjectsMap.get(`${inbound.type}:${inbound.id}`); + return found && !found.isMissing; // If true, this object can be linked back to one of the requested objects + }; + let objectsToProcess = [...response.objects]; + while (objectsToProcess.length > 0) { + const obj = objectsToProcess.shift()!; + const { type, id, spaces, inboundReferences } = obj; + const objKey = `${type}:${id}`; + traversedObjects.add(objKey); + // Is the user authorized to access this object in all required space(s)? + const isAuthorizedForObject = isAuthorizedForObjectInAllSpaces( + type, + authAction, + typeActionMap, + [currentSpaceId] + ); + // Redact the inbound references so we don't leak any info about other objects that the user is not authorized to access + const redactedInboundReferences = inboundReferences.filter((inbound) => { + if (inbound.type === type && inbound.id === id) { + // circular reference, don't redact it + return true; + } + return getIsAuthorizedForInboundReference(inbound); + }); + // If the user is not authorized to access at least one inbound reference of this object, then we should omit this object. + const isAuthorizedForGraph = + requestedObjectsSet.has(objKey) || // If true, this is one of the requested objects, and we checked authorization above + redactedInboundReferences.some(getIsAuthorizedForInboundReference); + + if (isAuthorizedForObject && isAuthorizedForGraph) { + if (spaces.length) { + // Don't generate audit records for "empty results" with zero spaces (requested object was a non-multi-namespace type or hidden type) + this.auditLogger.log( + savedObjectEvent({ + action: SavedObjectAction.COLLECT_MULTINAMESPACE_REFERENCES, + savedObject: { type, id }, + }) + ); + } + filteredObjectsMap.set(objKey, obj); + } else if (!isAuthorizedForObject && isAuthorizedForGraph) { + filteredObjectsMap.set(objKey, { ...obj, spaces: [], isMissing: true }); + } else if (isAuthorizedForObject && !isAuthorizedForGraph) { + const hasUntraversedInboundReferences = inboundReferences.some( + (ref) => + !traversedObjects.has(`${ref.type}:${ref.id}`) && + retrievedObjectsSet.has(`${ref.type}:${ref.id}`) + ); + + if (hasUntraversedInboundReferences) { + // this object has inbound reference(s) that we haven't traversed yet; bump it to the back of the list + objectsToProcess = [...objectsToProcess, obj]; + } else { + // There should never be a missing inbound reference. + // If there is, then something has gone terribly wrong. + const missingInboundReference = inboundReferences.find( + (ref) => + !traversedObjects.has(`${ref.type}:${ref.id}`) && + !retrievedObjectsSet.has(`${ref.type}:${ref.id}`) + ); + + if (missingInboundReference) { + throw new Error( + `Unexpected inbound reference to "${missingInboundReference.type}:${missingInboundReference.id}"` + ); + } + } + } + } + + const filteredAndRedactedObjects = [...filteredObjectsMap.values()].map((obj) => { + const { type, id, spaces, spacesWithMatchingAliases, inboundReferences } = obj; + // Redact the inbound references so we don't leak any info about other objects that the user is not authorized to access + const redactedInboundReferences = inboundReferences.filter((inbound) => { + if (inbound.type === type && inbound.id === id) { + // circular reference, don't redact it + return true; + } + return getIsAuthorizedForInboundReference(inbound); + }); + const redactedSpaces = getRedactedSpaces(type, 'bulk_get', typeActionMap, spaces); + const redactedSpacesWithMatchingAliases = + spacesWithMatchingAliases && + getRedactedSpaces(type, 'bulk_get', typeActionMap, spacesWithMatchingAliases); + return { + ...obj, + spaces: redactedSpaces, + ...(redactedSpacesWithMatchingAliases && { + spacesWithMatchingAliases: redactedSpacesWithMatchingAliases, + }), + inboundReferences: redactedInboundReferences, + }; + }); + + return { + objects: filteredAndRedactedObjects, + }; + } + + public async updateObjectsSpaces( + objects: SavedObjectsUpdateObjectsSpacesObject[], + spacesToAdd: string[], + spacesToRemove: string[], + options: SavedObjectsUpdateObjectsSpacesOptions = {} + ) { + const { namespace } = options; + const currentSpaceId = SavedObjectsUtils.namespaceIdToString(namespace); // We need this whether the Spaces plugin is enabled or not. + + const allSpacesSet = new Set([currentSpaceId, ...spacesToAdd, ...spacesToRemove]); + const bulkGetResponse = await this.baseClient.bulkGet(objects, { namespace }); + const objectsToUpdate = objects.map(({ type, id }, i) => { + const { namespaces: spaces = [], version } = bulkGetResponse.saved_objects[i]; + // If 'namespaces' is undefined, the object was not found (or it is namespace-agnostic). + // Either way, we will pass in an empty 'spaces' array to the base client, which will cause it to skip this object. + for (const space of spaces) { + if (space !== ALL_SPACES_ID) { + // If this is a specific space, add it to the spaces we'll check privileges for (don't accidentally check for global privileges) + allSpacesSet.add(space); + } + } + return { type, id, spaces, version }; + }); + + const uniqueTypes = this.getUniqueObjectTypes(objects); + const { typeActionMap } = await this.ensureAuthorized( + uniqueTypes, + ['bulk_get', 'share_to_space'], + Array.from(allSpacesSet), + { requireFullAuthorization: false } + ); + + const addToSpaces = spacesToAdd.length ? spacesToAdd : undefined; + const deleteFromSpaces = spacesToRemove.length ? spacesToRemove : undefined; + try { + // The user must be authorized to share every requested object in each of: the current space, spacesToAdd, and spacesToRemove. + const spaces = this.getUniqueSpaces(currentSpaceId, ...spacesToAdd, ...spacesToRemove); + this.ensureAuthorizedInAllSpaces(objects, 'share_to_space', typeActionMap, spaces); + } catch (error) { + objects.forEach(({ type, id }) => + this.auditLogger.log( + savedObjectEvent({ + action: SavedObjectAction.UPDATE_OBJECTS_SPACES, + savedObject: { type, id }, + addToSpaces, + deleteFromSpaces, + error, + }) + ) + ); + throw error; + } + for (const { type, id } of objectsToUpdate) { + this.auditLogger.log( + savedObjectEvent({ + action: SavedObjectAction.UPDATE_OBJECTS_SPACES, + outcome: 'unknown', + savedObject: { type, id }, + addToSpaces, + deleteFromSpaces, + }) + ); + } + + const response = await this.baseClient.updateObjectsSpaces( + objectsToUpdate, + spacesToAdd, + spacesToRemove, + { namespace } + ); + // Now that we have updated the objects' spaces, redact any spaces that the user is not authorized to see from the response. + const redactedObjects = response.objects.map((obj) => { + const { type, spaces } = obj; + const redactedSpaces = getRedactedSpaces(type, 'bulk_get', typeActionMap, spaces); + return { ...obj, spaces: redactedSpaces }; + }); + + return { objects: redactedObjects }; + } + private async checkPrivileges( actions: string | string[], namespaceOrNamespaces?: string | Array @@ -643,12 +810,12 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra } } - private async ensureAuthorized( + private async legacyEnsureAuthorized( typeOrTypes: string | string[], action: string, namespaceOrNamespaces: undefined | string | Array, - options: EnsureAuthorizedOptions = {} - ): Promise { + options: LegacyEnsureAuthorizedOptions = {} + ): Promise { const { args, auditAction = action, requireFullAuthorization = true } = options; const types = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes]; const actionsToTypesMap = new Map( @@ -663,7 +830,7 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra ).sort() as string[]; const missingPrivileges = this.getMissingPrivileges(privileges); - const typeMap = privileges.kibana.reduce>( + const typeMap = privileges.kibana.reduce>( (acc, { resource, privilege, authorized }) => { if (!authorized) { return acc; @@ -724,6 +891,45 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra } } + /** Unlike `legacyEnsureAuthorized`, this accepts multiple actions, and it does not utilize legacy audit logging */ + private async ensureAuthorized( + types: string[], + actions: T[], + namespaces: string[], + options?: EnsureAuthorizedOptions + ) { + const ensureAuthorizedDependencies: EnsureAuthorizedDependencies = { + actions: this.actions, + errors: this.errors, + checkSavedObjectsPrivilegesAsCurrentUser: this.checkSavedObjectsPrivilegesAsCurrentUser, + }; + return ensureAuthorized(ensureAuthorizedDependencies, types, actions, namespaces, options); + } + + /** + * If `ensureAuthorized` was called with `requireFullAuthorization: false`, this can be used with the result to ensure that a given + * array of objects are authorized in the required space(s). + */ + private ensureAuthorizedInAllSpaces( + objects: Array<{ type: string }>, + action: T, + typeActionMap: EnsureAuthorizedResult['typeActionMap'], + spaces: string[] + ) { + const uniqueTypes = uniq(objects.map(({ type }) => type)); + const unauthorizedTypes = new Set(); + for (const type of uniqueTypes) { + if (!isAuthorizedForObjectInAllSpaces(type, action, typeActionMap, spaces)) { + unauthorizedTypes.add(type); + } + } + if (unauthorizedTypes.size > 0) { + const targetTypes = Array.from(unauthorizedTypes).sort().join(','); + const msg = `Unable to ${action} ${targetTypes}`; + throw this.errors.decorateForbiddenError(new Error(msg)); + } + } + private getMissingPrivileges(privileges: CheckPrivilegesResponse['privileges']) { return privileges.kibana .filter(({ authorized }) => !authorized) @@ -734,6 +940,16 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra return uniq(objects.map((o) => o.type)); } + /** + * Given a list of spaces, returns a unique array of spaces. + * Excludes `'*'`, which is an identifier for All Spaces but is not an actual space. + */ + private getUniqueSpaces(...spaces: string[]) { + const set = new Set(spaces); + set.delete(ALL_SPACES_ID); + return Array.from(set); + } + private async getNamespacesPrivilegeMap( namespaces: string[], previouslyAuthorizedSpaceIds: string[] @@ -854,3 +1070,33 @@ function namespaceComparator(a: string, b: string) { } return A > B ? 1 : A < B ? -1 : 0; } + +function isAuthorizedForObjectInAllSpaces( + objectType: string, + action: T, + typeActionMap: EnsureAuthorizedResult['typeActionMap'], + spacesToAuthorizeFor: string[] +) { + const actionResult = getEnsureAuthorizedActionResult(objectType, action, typeActionMap); + const { authorizedSpaces, isGloballyAuthorized } = actionResult; + const authorizedSpacesSet = new Set(authorizedSpaces); + return ( + isGloballyAuthorized || spacesToAuthorizeFor.every((space) => authorizedSpacesSet.has(space)) + ); +} + +function getRedactedSpaces( + objectType: string, + action: T, + typeActionMap: EnsureAuthorizedResult['typeActionMap'], + spacesToRedact: string[] +) { + const actionResult = getEnsureAuthorizedActionResult(objectType, action, typeActionMap); + const { authorizedSpaces, isGloballyAuthorized } = actionResult; + const authorizedSpacesSet = new Set(authorizedSpaces); + return spacesToRedact + .map((x) => + isGloballyAuthorized || x === ALL_SPACES_ID || authorizedSpacesSet.has(x) ? x : UNKNOWN_SPACE + ) + .sort(namespaceComparator); +} diff --git a/x-pack/plugins/spaces/common/index.ts b/x-pack/plugins/spaces/common/index.ts index 38a452a82a6f9..9935d8055ec30 100644 --- a/x-pack/plugins/spaces/common/index.ts +++ b/x-pack/plugins/spaces/common/index.ts @@ -8,4 +8,4 @@ export { isReservedSpace } from './is_reserved_space'; export { MAX_SPACE_INITIALS, SPACE_SEARCH_COUNT_THRESHOLD, ENTER_SPACE_PATH } from './constants'; export { addSpaceIdToPath, getSpaceIdFromPath } from './lib/spaces_url_parser'; -export { GetAllSpacesOptions, GetAllSpacesPurpose, GetSpaceResult } from './types'; +export type { GetAllSpacesOptions, GetAllSpacesPurpose, GetSpaceResult } from './types'; diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx index b5b7c7c657b1b..4ec90b7e3826b 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.test.tsx @@ -280,7 +280,7 @@ describe('ShareToSpaceFlyout', () => { it('handles errors thrown from shareSavedObjectsAdd API call', async () => { const { wrapper, mockSpacesManager, mockToastNotifications } = await setup(); - mockSpacesManager.shareSavedObjectAdd.mockRejectedValue( + mockSpacesManager.updateSavedObjectsSpaces.mockRejectedValue( Boom.serverUnavailable('Something bad happened') ); @@ -303,39 +303,7 @@ describe('ShareToSpaceFlyout', () => { wrapper.update(); }); - expect(mockSpacesManager.shareSavedObjectAdd).toHaveBeenCalled(); - expect(mockSpacesManager.shareSavedObjectRemove).not.toHaveBeenCalled(); - expect(mockToastNotifications.addError).toHaveBeenCalled(); - }); - - it('handles errors thrown from shareSavedObjectsRemove API call', async () => { - const { wrapper, mockSpacesManager, mockToastNotifications } = await setup(); - - mockSpacesManager.shareSavedObjectRemove.mockRejectedValue( - Boom.serverUnavailable('Something bad happened') - ); - - expect(wrapper.find(ShareToSpaceForm)).toHaveLength(1); - expect(wrapper.find(EuiLoadingSpinner)).toHaveLength(0); - expect(wrapper.find(NoSpacesAvailable)).toHaveLength(0); - - // Using props callback instead of simulating clicks, - // because EuiSelectable uses a virtualized list, which isn't easily testable via test subjects - const spaceSelector = wrapper.find(SelectableSpacesControl); - act(() => { - spaceSelector.props().onChange(['space-2', 'space-3']); - }); - - const startButton = findTestSubject(wrapper, 'sts-initiate-button'); - - await act(async () => { - startButton.simulate('click'); - await nextTick(); - wrapper.update(); - }); - - expect(mockSpacesManager.shareSavedObjectAdd).toHaveBeenCalled(); - expect(mockSpacesManager.shareSavedObjectRemove).toHaveBeenCalled(); + expect(mockSpacesManager.updateSavedObjectsSpaces).toHaveBeenCalled(); expect(mockToastNotifications.addError).toHaveBeenCalled(); }); @@ -369,9 +337,11 @@ describe('ShareToSpaceFlyout', () => { }); const { type, id } = savedObjectToShare; - const { shareSavedObjectAdd, shareSavedObjectRemove } = mockSpacesManager; - expect(shareSavedObjectAdd).toHaveBeenCalledWith({ type, id }, ['space-2', 'space-3']); - expect(shareSavedObjectRemove).not.toHaveBeenCalled(); + expect(mockSpacesManager.updateSavedObjectsSpaces).toHaveBeenCalledWith( + [{ type, id }], + ['space-2', 'space-3'], + [] + ); expect(mockToastNotifications.addSuccess).toHaveBeenCalledTimes(1); expect(mockToastNotifications.addError).not.toHaveBeenCalled(); @@ -408,9 +378,11 @@ describe('ShareToSpaceFlyout', () => { }); const { type, id } = savedObjectToShare; - const { shareSavedObjectAdd, shareSavedObjectRemove } = mockSpacesManager; - expect(shareSavedObjectAdd).not.toHaveBeenCalled(); - expect(shareSavedObjectRemove).toHaveBeenCalledWith({ type, id }, ['space-1']); + expect(mockSpacesManager.updateSavedObjectsSpaces).toHaveBeenCalledWith( + [{ type, id }], + [], + ['space-1'] + ); expect(mockToastNotifications.addSuccess).toHaveBeenCalledTimes(1); expect(mockToastNotifications.addError).not.toHaveBeenCalled(); @@ -447,11 +419,13 @@ describe('ShareToSpaceFlyout', () => { }); const { type, id } = savedObjectToShare; - const { shareSavedObjectAdd, shareSavedObjectRemove } = mockSpacesManager; - expect(shareSavedObjectAdd).toHaveBeenCalledWith({ type, id }, ['space-2', 'space-3']); - expect(shareSavedObjectRemove).toHaveBeenCalledWith({ type, id }, ['space-1']); + expect(mockSpacesManager.updateSavedObjectsSpaces).toHaveBeenCalledWith( + [{ type, id }], + ['space-2', 'space-3'], + ['space-1'] + ); - expect(mockToastNotifications.addSuccess).toHaveBeenCalledTimes(2); + expect(mockToastNotifications.addSuccess).toHaveBeenCalledTimes(1); expect(mockToastNotifications.addError).not.toHaveBeenCalled(); expect(onClose).toHaveBeenCalledTimes(1); }); diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx index fc5d42df8af5e..d8fc0f299d8e6 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx @@ -46,8 +46,17 @@ const LazyCopyToSpaceFlyout = lazy(() => ); const ALL_SPACES_TARGET = i18n.translate('xpack.spaces.shareToSpace.allSpacesTarget', { - defaultMessage: 'all', + defaultMessage: 'all spaces', }); +function getSpacesTargetString(spaces: string[]) { + if (spaces.includes(ALL_SPACES_ID)) { + return ALL_SPACES_TARGET; + } + return i18n.translate('xpack.spaces.shareToSpace.spacesTarget', { + defaultMessage: '{spacesCount, plural, one {# space} other {# spaces}}', + values: { spacesCount: spaces.length }, + }); +} const arraysAreEqual = (a: unknown[], b: unknown[]) => a.every((x) => b.includes(x)) && b.every((x) => a.includes(x)); @@ -59,44 +68,46 @@ function createDefaultChangeSpacesHandler( ) { return async (spacesToAdd: string[], spacesToRemove: string[]) => { const { type, id, title } = object; + const objects = [{ type, id }]; const toastTitle = i18n.translate('xpack.spaces.shareToSpace.shareSuccessTitle', { values: { objectNoun: object.noun }, defaultMessage: 'Updated {objectNoun}', + description: `Object noun can be plural or singular, examples: "Updated objects", "Updated job"`, }); + await spacesManager.updateSavedObjectsSpaces(objects, spacesToAdd, spacesToRemove); + const isSharedToAllSpaces = spacesToAdd.includes(ALL_SPACES_ID); - if (spacesToAdd.length > 0) { - await spacesManager.shareSavedObjectAdd({ type, id }, spacesToAdd); - const spaceTargets = isSharedToAllSpaces ? ALL_SPACES_TARGET : `${spacesToAdd.length}`; - const toastText = - !isSharedToAllSpaces && spacesToAdd.length === 1 - ? i18n.translate('xpack.spaces.shareToSpace.shareAddSuccessTextSingular', { - defaultMessage: `'{object}' was added to 1 space.`, - values: { object: title }, - }) - : i18n.translate('xpack.spaces.shareToSpace.shareAddSuccessTextPlural', { - defaultMessage: `'{object}' was added to {spaceTargets} spaces.`, - values: { object: title, spaceTargets }, - }); - toastNotifications.addSuccess({ title: toastTitle, text: toastText }); - } - if (spacesToRemove.length > 0) { - await spacesManager.shareSavedObjectRemove({ type, id }, spacesToRemove); - const isUnsharedFromAllSpaces = spacesToRemove.includes(ALL_SPACES_ID); - const spaceTargets = isUnsharedFromAllSpaces ? ALL_SPACES_TARGET : `${spacesToRemove.length}`; - const toastText = - !isUnsharedFromAllSpaces && spacesToRemove.length === 1 - ? i18n.translate('xpack.spaces.shareToSpace.shareRemoveSuccessTextSingular', { - defaultMessage: `'{object}' was removed from 1 space.`, - values: { object: title }, - }) - : i18n.translate('xpack.spaces.shareToSpace.shareRemoveSuccessTextPlural', { - defaultMessage: `'{object}' was removed from {spaceTargets} spaces.`, - values: { object: title, spaceTargets }, - }); - if (!isSharedToAllSpaces) { - toastNotifications.addSuccess({ title: toastTitle, text: toastText }); - } + let toastText: string; + if (spacesToAdd.length > 0 && spacesToRemove.length > 0 && !isSharedToAllSpaces) { + toastText = i18n.translate('xpack.spaces.shareToSpace.shareSuccessAddRemoveText', { + defaultMessage: `'{object}' was added to {spacesTargetAdd} and removed from {spacesTargetRemove}.`, // TODO: update to include # of references and/or # of tags + values: { + object: title, + spacesTargetAdd: getSpacesTargetString(spacesToAdd), + spacesTargetRemove: getSpacesTargetString(spacesToRemove), + }, + description: `Uses output of xpack.spaces.shareToSpace.spacesTarget or xpack.spaces.shareToSpace.allSpacesTarget as 'spacesTarget...' inputs. Example strings: "'Finance dashboard' was added to 1 space and removed from 2 spaces.", "'Finance dashboard' was added to 3 spaces and removed from all spaces."`, + }); + } else if (spacesToAdd.length > 0) { + toastText = i18n.translate('xpack.spaces.shareToSpace.shareSuccessAddText', { + defaultMessage: `'{object}' was added to {spacesTarget}.`, // TODO: update to include # of references and/or # of tags + values: { + object: title, + spacesTarget: getSpacesTargetString(spacesToAdd), + }, + description: `Uses output of xpack.spaces.shareToSpace.spacesTarget or xpack.spaces.shareToSpace.allSpacesTarget as 'spacesTarget' input. Example strings: "'Finance dashboard' was added to 1 space.", "'Finance dashboard' was added to all spaces."`, + }); + } else { + toastText = i18n.translate('xpack.spaces.shareToSpace.shareSuccessRemoveText', { + defaultMessage: `'{object}' was removed from {spacesTarget}.`, // TODO: update to include # of references and/or # of tags + values: { + object: title, + spacesTarget: getSpacesTargetString(spacesToRemove), + }, + description: `Uses output of xpack.spaces.shareToSpace.spacesTarget or xpack.spaces.shareToSpace.allSpacesTarget as 'spacesTarget' input. Example strings: "'Finance dashboard' was removed from 1 space.", "'Finance dashboard' was removed from all spaces."`, + }); } + toastNotifications.addSuccess({ title: toastTitle, text: toastText }); }; } @@ -148,9 +159,11 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { spaces: ShareToSpaceTarget[]; }>({ isLoading: true, spaces: [] }); useEffect(() => { - const getPermissions = spacesManager.getShareSavedObjectPermissions(savedObjectTarget.type); - Promise.all([shareToSpacesDataPromise, getPermissions]) - .then(([shareToSpacesData, permissions]) => { + const { type, id } = savedObjectTarget; + const getShareableReferences = spacesManager.getShareableReferences([{ type, id }]); // NOTE: not used yet, this is just included so you can see the request/response in Dev Tools + const getPermissions = spacesManager.getShareSavedObjectPermissions(type); + Promise.all([shareToSpacesDataPromise, getShareableReferences, getPermissions]) + .then(([shareToSpacesData, shareableReferences, permissions]) => { const activeSpaceId = !enableSpaceAgnosticBehavior && shareToSpacesData.activeSpaceId; const selectedSpaceIds = savedObjectTarget.namespaces.filter( (spaceId) => spaceId !== activeSpaceId diff --git a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts index ccb475369104a..39c06a2bc874d 100644 --- a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts +++ b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.mock.ts @@ -22,8 +22,8 @@ function createSpacesManagerMock() { updateSpace: jest.fn().mockResolvedValue(undefined), deleteSpace: jest.fn().mockResolvedValue(undefined), copySavedObjects: jest.fn().mockResolvedValue(undefined), - shareSavedObjectAdd: jest.fn().mockResolvedValue(undefined), - shareSavedObjectRemove: jest.fn().mockResolvedValue(undefined), + getShareableReferences: jest.fn().mockResolvedValue(undefined), + updateSavedObjectsSpaces: jest.fn().mockResolvedValue(undefined), resolveCopySavedObjectsErrors: jest.fn().mockResolvedValue(undefined), getShareSavedObjectPermissions: jest.fn().mockResolvedValue(undefined), redirectToSpaceSelector: jest.fn().mockResolvedValue(undefined), diff --git a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts index 1cae128299197..a7201def5ed40 100644 --- a/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts +++ b/x-pack/plugins/spaces/public/spaces_manager/spaces_manager.ts @@ -9,7 +9,10 @@ import type { Observable } from 'rxjs'; import { BehaviorSubject } from 'rxjs'; import { skipWhile } from 'rxjs/operators'; -import type { HttpSetup } from 'src/core/public'; +import type { + HttpSetup, + SavedObjectsCollectMultiNamespaceReferencesResponse, +} from 'src/core/public'; import type { Space } from 'src/plugins/spaces_oss/common'; import type { GetAllSpacesOptions, GetSpaceResult } from '../../common'; @@ -136,15 +139,21 @@ export class SpacesManager { }); } - public async shareSavedObjectAdd(object: SavedObjectTarget, spaces: string[]): Promise { - return this.http.post(`/api/spaces/_share_saved_object_add`, { - body: JSON.stringify({ object, spaces }), + public async getShareableReferences( + objects: SavedObjectTarget[] + ): Promise { + return this.http.post(`/api/spaces/_get_shareable_references`, { + body: JSON.stringify({ objects }), }); } - public async shareSavedObjectRemove(object: SavedObjectTarget, spaces: string[]): Promise { - return this.http.post(`/api/spaces/_share_saved_object_remove`, { - body: JSON.stringify({ object, spaces }), + public async updateSavedObjectsSpaces( + objects: SavedObjectTarget[], + spacesToAdd: string[], + spacesToRemove: string[] + ): Promise { + return this.http.post(`/api/spaces/_update_objects_spaces`, { + body: JSON.stringify({ objects, spacesToAdd, spacesToRemove }), }); } diff --git a/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts index a8d8ed9b868c8..74ada21399f6e 100644 --- a/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts +++ b/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts @@ -9,7 +9,6 @@ import { Readable } from 'stream'; import type { SavedObjectsExportByObjectOptions, - SavedObjectsImportOptions, SavedObjectsImportResponse, SavedObjectsImportSuccess, } from 'src/core/server'; @@ -26,12 +25,9 @@ import { copySavedObjectsToSpacesFactory } from './copy_to_spaces'; interface SetupOpts { objects: Array<{ type: string; id: string; attributes: Record }>; exportByObjectsImpl?: (opts: SavedObjectsExportByObjectOptions) => Promise; - importSavedObjectsFromStreamImpl?: ( - opts: SavedObjectsImportOptions - ) => Promise; } -const expectStreamToContainObjects = async ( +const expectStreamToEqualObjects = async ( stream: Readable, expectedObjects: SetupOpts['objects'] ) => { @@ -50,10 +46,18 @@ const expectStreamToContainObjects = async ( }; describe('copySavedObjectsToSpaces', () => { + const FAILURE_SPACE = 'failure-space'; const mockExportResults = [ - { type: 'dashboard', id: 'my-dashboard', attributes: {} }, - { type: 'visualization', id: 'my-viz', attributes: {} }, - { type: 'index-pattern', id: 'my-index-pattern', attributes: {} }, + // For this test case, these three objects can be shared to multiple spaces + { type: 'dashboard', id: 'my-dashboard', namespaces: ['source'], attributes: {} }, + { type: 'visualization', id: 'my-viz', namespaces: ['source', 'destination1'], attributes: {} }, + { + type: 'index-pattern', + id: 'my-index-pattern', + namespaces: ['source', 'destination1', 'destination2'], + attributes: {}, + }, + // This object is namespace-agnostic and cannot be copied to another space { type: 'globaltype', id: 'my-globaltype', attributes: {} }, ]; @@ -73,7 +77,7 @@ describe('copySavedObjectsToSpaces', () => { // don't need to include all types, just need a positive case (agnostic) and a negative case (non-agnostic) { name: 'dashboard', - namespaceType: 'single', + namespaceType: 'multiple', hidden: false, mappings: { properties: {} }, }, @@ -105,21 +109,45 @@ describe('copySavedObjectsToSpaces', () => { }); savedObjectsImporter.import.mockImplementation(async (opts) => { - const defaultImpl = async () => { - // namespace-agnostic types should be filtered out before import - const filteredObjects = setupOpts.objects.filter(({ type }) => type !== 'globaltype'); - await expectStreamToContainObjects(opts.readStream, filteredObjects); - const response: SavedObjectsImportResponse = { - success: true, - successCount: filteredObjects.length, - successResults: [('Some success(es) occurred!' as unknown) as SavedObjectsImportSuccess], - warnings: [], - }; - - return Promise.resolve(response); + if (opts.namespace === FAILURE_SPACE) { + throw new Error(`Some error occurred!`); + } + + // expectedObjects will never include globaltype, and each object will have its namespaces field omitted + let expectedObjects = [ + { type: 'dashboard', id: 'my-dashboard', attributes: {} }, + { type: 'visualization', id: 'my-viz', attributes: {} }, + { type: 'index-pattern', id: 'my-index-pattern', attributes: {} }, + ]; + + if (!opts.createNewCopies) { + // if we are *not* creating new copies of objects, then we check destination spaces so we don't try to copy an object to a space where it already exists + switch (opts.namespace) { + case 'destination1': + expectedObjects = [ + { type: 'dashboard', id: 'my-dashboard', attributes: {} }, + // the visualization and index-pattern are not imported into destination1, they already exist there + ]; + break; + case 'destination2': + expectedObjects = [ + { type: 'dashboard', id: 'my-dashboard', attributes: {} }, + { type: 'visualization', id: 'my-viz', attributes: {} }, + // the index-pattern is not imported into destination2, it already exists there + ]; + break; + } + } + + await expectStreamToEqualObjects(opts.readStream, expectedObjects); + const response: SavedObjectsImportResponse = { + success: true, + successCount: expectedObjects.length, + successResults: [('Some success(es) occurred!' as unknown) as SavedObjectsImportSuccess], + warnings: [], }; - return setupOpts.importSavedObjectsFromStreamImpl?.(opts) ?? defaultImpl(); + return Promise.resolve(response); }); return { @@ -154,7 +182,7 @@ describe('copySavedObjectsToSpaces', () => { "destination1": Object { "errors": undefined, "success": true, - "successCount": 3, + "successCount": 1, "successResults": Array [ "Some success(es) occurred!", ], @@ -162,7 +190,7 @@ describe('copySavedObjectsToSpaces', () => { "destination2": Object { "errors": undefined, "success": true, - "successCount": 3, + "successCount": 2, "successResults": Array [ "Some success(es) occurred!", ], @@ -173,6 +201,7 @@ describe('copySavedObjectsToSpaces', () => { expect(savedObjectsExporter.exportByObjects).toHaveBeenCalledWith({ request: expect.any(Object), excludeExportDetails: true, + includeNamespaces: true, includeReferencesDeep: true, namespace, objects, @@ -193,23 +222,74 @@ describe('copySavedObjectsToSpaces', () => { }); }); + it('does not skip copying objects to spaces where they already exist if createNewCopies is enabled', async () => { + const { savedObjects, savedObjectsExporter, savedObjectsImporter } = setup({ + objects: mockExportResults.map(({ namespaces, ...remainingAttrs }) => ({ + ...remainingAttrs, // the objects are exported without the namespaces array + })), + }); + + const request = httpServerMock.createKibanaRequest(); + + const copySavedObjectsToSpaces = copySavedObjectsToSpacesFactory(savedObjects, request); + + const namespace = 'sourceSpace'; + const objects = [{ type: 'dashboard', id: 'my-dashboard' }]; + const result = await copySavedObjectsToSpaces(namespace, ['destination1', 'destination2'], { + includeReferences: true, + overwrite: false, + objects, + createNewCopies: true, + }); + + expect(result).toMatchInlineSnapshot(` + Object { + "destination1": Object { + "errors": undefined, + "success": true, + "successCount": 3, + "successResults": Array [ + "Some success(es) occurred!", + ], + }, + "destination2": Object { + "errors": undefined, + "success": true, + "successCount": 3, + "successResults": Array [ + "Some success(es) occurred!", + ], + }, + } + `); + + expect(savedObjectsExporter.exportByObjects).toHaveBeenCalledWith({ + request: expect.any(Object), + excludeExportDetails: true, + includeNamespaces: false, + includeReferencesDeep: true, + namespace, + objects, + }); + + const importOptions = { + createNewCopies: true, + overwrite: false, + readStream: expect.any(Readable), + }; + expect(savedObjectsImporter.import).toHaveBeenNthCalledWith(1, { + ...importOptions, + namespace: 'destination1', + }); + expect(savedObjectsImporter.import).toHaveBeenNthCalledWith(2, { + ...importOptions, + namespace: 'destination2', + }); + }); + it(`doesn't stop copy if some spaces fail`, async () => { const { savedObjects } = setup({ objects: mockExportResults, - importSavedObjectsFromStreamImpl: async (opts) => { - if (opts.namespace === 'failure-space') { - throw new Error(`Some error occurred!`); - } - // namespace-agnostic types should be filtered out before import - const filteredObjects = mockExportResults.filter(({ type }) => type !== 'globaltype'); - await expectStreamToContainObjects(opts.readStream, filteredObjects); - return Promise.resolve({ - success: true, - successCount: filteredObjects.length, - successResults: [('Some success(es) occurred!' as unknown) as SavedObjectsImportSuccess], - warnings: [], - }); - }, }); const request = httpServerMock.createKibanaRequest(); @@ -218,7 +298,7 @@ describe('copySavedObjectsToSpaces', () => { const result = await copySavedObjectsToSpaces( 'sourceSpace', - ['failure-space', 'non-existent-space', 'marketing'], + [FAILURE_SPACE, 'non-existent-space', 'marketing'], { includeReferences: true, overwrite: true, @@ -226,6 +306,7 @@ describe('copySavedObjectsToSpaces', () => { createNewCopies: false, } ); + // See savedObjectsImporter.import mock implementation above; FAILURE_SPACE is a special case that will throw an error expect(result).toMatchInlineSnapshot(` Object { diff --git a/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts index 29dac92e5fc6d..ed09c4d39d137 100644 --- a/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts +++ b/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts @@ -9,6 +9,7 @@ import type { Readable } from 'stream'; import type { CoreStart, KibanaRequest, SavedObject } from 'src/core/server'; +import { ALL_SPACES_ID } from '../../../common/constants'; import { spaceIdToNamespace } from '../utils/namespace'; import { createEmptyFailureResponse } from './lib/create_empty_failure_response'; import { getIneligibleTypes } from './lib/get_ineligible_types'; @@ -27,14 +28,12 @@ export function copySavedObjectsToSpacesFactory( const savedObjectsExporter = createExporter(savedObjectsClient); const savedObjectsImporter = createImporter(savedObjectsClient); - const exportRequestedObjects = async ( - sourceSpaceId: string, - options: Pick - ) => { + const exportRequestedObjects = async (sourceSpaceId: string, options: CopyOptions) => { const objectStream = await savedObjectsExporter.exportByObjects({ request, namespace: spaceIdToNamespace(sourceSpaceId), includeReferencesDeep: options.includeReferences, + includeNamespaces: !options.createNewCopies, // if we are not creating new copies, then include namespaces; this will ensure we can check for objects that already exist in the destination space below excludeExportDetails: true, objects: options.objects, }); @@ -76,13 +75,23 @@ export function copySavedObjectsToSpacesFactory( const exportedSavedObjects = await exportRequestedObjects(sourceSpaceId, options); const ineligibleTypes = getIneligibleTypes(getTypeRegistry()); const filteredObjects = exportedSavedObjects.filter( - ({ type }) => !ineligibleTypes.includes(type) + ({ type, namespaces }) => + // Don't attempt to copy ineligible types or objects that already exist in all spaces + !ineligibleTypes.includes(type) && !namespaces?.includes(ALL_SPACES_ID) ); for (const spaceId of destinationSpaceIds) { + const objectsToImport: SavedObject[] = []; + for (const { namespaces, ...object } of filteredObjects) { + if (!namespaces?.includes(spaceId)) { + // We check to ensure that each object doesn't already exist in the destination. If we don't do this, the consumer will see a + // conflict and have the option to skip or overwrite the object, both of which are effectively a no-op. + objectsToImport.push(object); + } + } response[spaceId] = await importObjectsToSpace( spaceId, - createReadableStreamFromArray(filteredObjects), + createReadableStreamFromArray(objectsToImport), options ); } diff --git a/x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts index 1ce030ef05d12..72a3921618ddc 100644 --- a/x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts +++ b/x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts @@ -91,6 +91,10 @@ export function resolveCopySavedObjectsToSpacesConflictsFactory( const retries = entryRetries.map((retry) => ({ ...retry, replaceReferences: [] })); + // We do *not* include a check to ensure that each object doesn't already exist in the destination. Since we already do this in + // copySavedObjectsToSpaces, it is much less likely to occur while resolving copy errors, and as such we've omitted the same check + // here to reduce complexity and test cases. + response[spaceId] = await resolveConflictsForSpace( spaceId, createReadableStreamFromArray(filteredObjects), diff --git a/x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.test.ts b/x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.test.ts new file mode 100644 index 0000000000000..1100f767c33b8 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.test.ts @@ -0,0 +1,144 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as Rx from 'rxjs'; + +import type { RouteValidatorConfig } from 'src/core/server'; +import { kibanaResponseFactory } from 'src/core/server'; +import { + coreMock, + httpServerMock, + httpServiceMock, + loggingSystemMock, +} from 'src/core/server/mocks'; + +import { spacesConfig } from '../../../lib/__fixtures__'; +import { SpacesClientService } from '../../../spaces_client'; +import { SpacesService } from '../../../spaces_service'; +import { usageStatsServiceMock } from '../../../usage_stats/usage_stats_service.mock'; +import { + createMockSavedObjectsRepository, + createMockSavedObjectsService, + createSpaces, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { initGetShareableReferencesApi } from './get_shareable_references'; + +describe('get shareable references', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map((s) => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter(); + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + const log = loggingSystemMock.create().get('spaces'); + const coreStart = coreMock.createStart(); + const { savedObjects, savedObjectsClient } = createMockSavedObjectsService(spaces); + coreStart.savedObjects = savedObjects; + + const clientService = new SpacesClientService(jest.fn()); + clientService + .setup({ config$: Rx.of(spacesConfig) }) + .setClientRepositoryFactory(() => savedObjectsRepositoryMock); + + const service = new SpacesService(); + service.setup({ + basePath: httpService.basePath, + }); + + const usageStatsServicePromise = Promise.resolve(usageStatsServiceMock.createSetupContract()); + + const clientServiceStart = clientService.start(coreStart); + + const spacesServiceStart = service.start({ + basePath: coreStart.http.basePath, + spacesClientService: clientServiceStart, + }); + initGetShareableReferencesApi({ + externalRouter: router, + getStartServices: async () => [coreStart, {}, {}], + log, + getSpacesService: () => spacesServiceStart, + usageStatsServicePromise, + }); + + const [[getShareableReferences, getShareableReferencesRouteHandler]] = router.post.mock.calls; + + return { + coreStart, + savedObjectsClient, + getShareableReferences: { + routeValidation: getShareableReferences.validate as RouteValidatorConfig<{}, {}, {}>, + routeHandler: getShareableReferencesRouteHandler, + }, + savedObjectsRepositoryMock, + }; + }; + + describe('POST /api/spaces/_get_shareable_references', () => { + it(`returns http/403 when the license is invalid`, async () => { + const { getShareableReferences } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'post', + }); + + const response = await getShareableReferences.routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it('passes arguments to the saved objects client and returns the result', async () => { + const { getShareableReferences, savedObjectsClient } = await setup(); + const reqObj1 = { type: 'a', id: 'id-1' }; + const reqObjects = [reqObj1]; + const payload = { objects: reqObjects }; + const collectedObjects = [ + // the return value of collectMultiNamespaceReferences includes the 1 requested object, along with the 2 references + { ...reqObj1, spaces: ['space-1'], inboundReferences: [] }, + { + type: 'b', + id: 'id-4', + spaces: ['space-1', '?', '?'], + inboundReferences: [{ ...reqObj1, name: 'ref-a:1' }], + }, + { + type: 'c', + id: 'id-5', + spaces: ['space-1', 'space-2'], + inboundReferences: [{ ...reqObj1, name: 'ref-a:1' }], + }, + ]; + savedObjectsClient.collectMultiNamespaceReferences.mockResolvedValue({ + objects: collectedObjects, + }); + + const request = httpServerMock.createKibanaRequest({ body: payload, method: 'post' }); + const response = await getShareableReferences.routeHandler( + mockRouteContext, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(200); + expect(response.payload).toEqual({ objects: collectedObjects }); + expect(savedObjectsClient.collectMultiNamespaceReferences).toHaveBeenCalledTimes(1); + expect(savedObjectsClient.collectMultiNamespaceReferences).toHaveBeenCalledWith(reqObjects, { + purpose: 'updateObjectsSpaces', + }); + }); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.ts b/x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.ts new file mode 100644 index 0000000000000..a7afd38dcecb0 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/get_shareable_references.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema } from '@kbn/config-schema'; + +import { wrapError } from '../../../lib/errors'; +import { createLicensedRouteHandler } from '../../lib'; +import type { ExternalRouteDeps } from './'; + +export function initGetShareableReferencesApi(deps: ExternalRouteDeps) { + const { externalRouter, getStartServices } = deps; + + externalRouter.post( + { + path: '/api/spaces/_get_shareable_references', + validate: { + body: schema.object({ + objects: schema.arrayOf(schema.object({ type: schema.string(), id: schema.string() })), + }), + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + const [startServices] = await getStartServices(); + const scopedClient = startServices.savedObjects.getScopedClient(request); + + const { objects } = request.body; + + try { + const collectedObjects = await scopedClient.collectMultiNamespaceReferences(objects, { + purpose: 'updateObjectsSpaces', + }); + return response.ok({ body: collectedObjects }); + } catch (error) { + return response.customError(wrapError(error)); + } + }) + ); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/index.ts b/x-pack/plugins/spaces/server/routes/api/external/index.ts index 3e2a523d767ea..9cebd8d0f9352 100644 --- a/x-pack/plugins/spaces/server/routes/api/external/index.ts +++ b/x-pack/plugins/spaces/server/routes/api/external/index.ts @@ -14,9 +14,10 @@ import { initCopyToSpacesApi } from './copy_to_space'; import { initDeleteSpacesApi } from './delete'; import { initGetSpaceApi } from './get'; import { initGetAllSpacesApi } from './get_all'; +import { initGetShareableReferencesApi } from './get_shareable_references'; import { initPostSpacesApi } from './post'; import { initPutSpacesApi } from './put'; -import { initShareToSpacesApi } from './share_to_space'; +import { initUpdateObjectsSpacesApi } from './update_objects_spaces'; export interface ExternalRouteDeps { externalRouter: SpacesRouter; @@ -33,5 +34,6 @@ export function initExternalSpacesApi(deps: ExternalRouteDeps) { initPostSpacesApi(deps); initPutSpacesApi(deps); initCopyToSpacesApi(deps); - initShareToSpacesApi(deps); + initUpdateObjectsSpacesApi(deps); + initGetShareableReferencesApi(deps); } diff --git a/x-pack/plugins/spaces/server/routes/api/external/share_to_space.test.ts b/x-pack/plugins/spaces/server/routes/api/external/share_to_space.test.ts deleted file mode 100644 index cae6fd152d8ff..0000000000000 --- a/x-pack/plugins/spaces/server/routes/api/external/share_to_space.test.ts +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as Rx from 'rxjs'; - -import type { ObjectType } from '@kbn/config-schema'; -import type { RouteValidatorConfig } from 'src/core/server'; -import { kibanaResponseFactory } from 'src/core/server'; -import { - coreMock, - httpServerMock, - httpServiceMock, - loggingSystemMock, -} from 'src/core/server/mocks'; - -import { spacesConfig } from '../../../lib/__fixtures__'; -import { SpacesClientService } from '../../../spaces_client'; -import { SpacesService } from '../../../spaces_service'; -import { usageStatsServiceMock } from '../../../usage_stats/usage_stats_service.mock'; -import { - createMockSavedObjectsRepository, - createMockSavedObjectsService, - createSpaces, - mockRouteContext, - mockRouteContextWithInvalidLicense, -} from '../__fixtures__'; -import { initShareToSpacesApi } from './share_to_space'; - -describe('share to space', () => { - const spacesSavedObjects = createSpaces(); - const spaces = spacesSavedObjects.map((s) => ({ id: s.id, ...s.attributes })); - - const setup = async () => { - const httpService = httpServiceMock.createSetupContract(); - const router = httpService.createRouter(); - const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); - const log = loggingSystemMock.create().get('spaces'); - const coreStart = coreMock.createStart(); - const { savedObjects, savedObjectsClient } = createMockSavedObjectsService(spaces); - coreStart.savedObjects = savedObjects; - - const clientService = new SpacesClientService(jest.fn()); - clientService - .setup({ config$: Rx.of(spacesConfig) }) - .setClientRepositoryFactory(() => savedObjectsRepositoryMock); - - const service = new SpacesService(); - service.setup({ - basePath: httpService.basePath, - }); - - const usageStatsServicePromise = Promise.resolve(usageStatsServiceMock.createSetupContract()); - - const clientServiceStart = clientService.start(coreStart); - - const spacesServiceStart = service.start({ - basePath: coreStart.http.basePath, - spacesClientService: clientServiceStart, - }); - initShareToSpacesApi({ - externalRouter: router, - getStartServices: async () => [coreStart, {}, {}], - log, - getSpacesService: () => spacesServiceStart, - usageStatsServicePromise, - }); - - const [ - [shareAdd, ctsRouteHandler], - [shareRemove, resolveRouteHandler], - ] = router.post.mock.calls; - - return { - coreStart, - savedObjectsClient, - shareAdd: { - routeValidation: shareAdd.validate as RouteValidatorConfig<{}, {}, {}>, - routeHandler: ctsRouteHandler, - }, - shareRemove: { - routeValidation: shareRemove.validate as RouteValidatorConfig<{}, {}, {}>, - routeHandler: resolveRouteHandler, - }, - savedObjectsRepositoryMock, - }; - }; - - describe('POST /api/spaces/_share_saved_object_add', () => { - const object = { id: 'foo', type: 'bar' }; - - it(`returns http/403 when the license is invalid`, async () => { - const { shareAdd } = await setup(); - - const request = httpServerMock.createKibanaRequest({ method: 'post' }); - const response = await shareAdd.routeHandler( - mockRouteContextWithInvalidLicense, - request, - kibanaResponseFactory - ); - - expect(response.status).toEqual(403); - expect(response.payload).toEqual({ - message: 'License is invalid for spaces', - }); - }); - - it(`requires at least 1 space ID`, async () => { - const { shareAdd } = await setup(); - const payload = { spaces: [], object }; - - expect(() => - (shareAdd.routeValidation.body as ObjectType).validate(payload) - ).toThrowErrorMatchingInlineSnapshot(`"[spaces]: must specify one or more space ids"`); - }); - - it(`requires space IDs to be unique`, async () => { - const { shareAdd } = await setup(); - const payload = { spaces: ['a-space', 'a-space'], object }; - - expect(() => - (shareAdd.routeValidation.body as ObjectType).validate(payload) - ).toThrowErrorMatchingInlineSnapshot(`"[spaces]: duplicate space ids are not allowed"`); - }); - - it(`requires well-formed space IDS`, async () => { - const { shareAdd } = await setup(); - const payload = { spaces: ['a-space', 'a-space-invalid-!@#$%^&*()'], object }; - - expect(() => - (shareAdd.routeValidation.body as ObjectType).validate(payload) - ).toThrowErrorMatchingInlineSnapshot( - `"[spaces.1]: lower case, a-z, 0-9, \\"_\\", and \\"-\\" are allowed, OR \\"*\\""` - ); - }); - - it(`allows all spaces ("*")`, async () => { - const { shareAdd } = await setup(); - const payload = { spaces: ['*'], object }; - - expect(() => - (shareAdd.routeValidation.body as ObjectType).validate(payload) - ).not.toThrowError(); - }); - - it('adds the object to the specified space(s)', async () => { - const { shareAdd, savedObjectsClient } = await setup(); - const payload = { spaces: ['a-space', 'b-space'], object }; - - const request = httpServerMock.createKibanaRequest({ body: payload, method: 'post' }); - const response = await shareAdd.routeHandler( - mockRouteContext, - request, - kibanaResponseFactory - ); - - const { status } = response; - expect(status).toEqual(204); - expect(savedObjectsClient.addToNamespaces).toHaveBeenCalledTimes(1); - expect(savedObjectsClient.addToNamespaces).toHaveBeenCalledWith( - payload.object.type, - payload.object.id, - payload.spaces - ); - }); - }); - - describe('POST /api/spaces/_share_saved_object_remove', () => { - const object = { id: 'foo', type: 'bar' }; - - it(`returns http/403 when the license is invalid`, async () => { - const { shareRemove } = await setup(); - - const request = httpServerMock.createKibanaRequest({ - method: 'post', - }); - - const response = await shareRemove.routeHandler( - mockRouteContextWithInvalidLicense, - request, - kibanaResponseFactory - ); - - expect(response.status).toEqual(403); - expect(response.payload).toEqual({ - message: 'License is invalid for spaces', - }); - }); - - it(`requires at least 1 space ID`, async () => { - const { shareRemove } = await setup(); - const payload = { spaces: [], object }; - - expect(() => - (shareRemove.routeValidation.body as ObjectType).validate(payload) - ).toThrowErrorMatchingInlineSnapshot(`"[spaces]: must specify one or more space ids"`); - }); - - it(`requires space IDs to be unique`, async () => { - const { shareRemove } = await setup(); - const payload = { spaces: ['a-space', 'a-space'], object }; - - expect(() => - (shareRemove.routeValidation.body as ObjectType).validate(payload) - ).toThrowErrorMatchingInlineSnapshot(`"[spaces]: duplicate space ids are not allowed"`); - }); - - it(`requires well-formed space IDS`, async () => { - const { shareRemove } = await setup(); - const payload = { spaces: ['a-space', 'a-space-invalid-!@#$%^&*()'], object }; - - expect(() => - (shareRemove.routeValidation.body as ObjectType).validate(payload) - ).toThrowErrorMatchingInlineSnapshot( - `"[spaces.1]: lower case, a-z, 0-9, \\"_\\", and \\"-\\" are allowed, OR \\"*\\""` - ); - }); - - it(`allows all spaces ("*")`, async () => { - const { shareRemove } = await setup(); - const payload = { spaces: ['*'], object }; - - expect(() => - (shareRemove.routeValidation.body as ObjectType).validate(payload) - ).not.toThrowError(); - }); - - it('removes the object from the specified space(s)', async () => { - const { shareRemove, savedObjectsClient } = await setup(); - const payload = { spaces: ['a-space', 'b-space'], object }; - - const request = httpServerMock.createKibanaRequest({ body: payload, method: 'post' }); - const response = await shareRemove.routeHandler( - mockRouteContext, - request, - kibanaResponseFactory - ); - - const { status } = response; - expect(status).toEqual(204); - expect(savedObjectsClient.deleteFromNamespaces).toHaveBeenCalledTimes(1); - expect(savedObjectsClient.deleteFromNamespaces).toHaveBeenCalledWith( - payload.object.type, - payload.object.id, - payload.spaces - ); - }); - }); -}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/share_to_space.ts b/x-pack/plugins/spaces/server/routes/api/external/share_to_space.ts deleted file mode 100644 index 1c6f254354cb2..0000000000000 --- a/x-pack/plugins/spaces/server/routes/api/external/share_to_space.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { schema } from '@kbn/config-schema'; - -import { ALL_SPACES_ID } from '../../../../common/constants'; -import { wrapError } from '../../../lib/errors'; -import { SPACE_ID_REGEX } from '../../../lib/space_schema'; -import { createLicensedRouteHandler } from '../../lib'; -import type { ExternalRouteDeps } from './'; - -const uniq = (arr: T[]): T[] => Array.from(new Set(arr)); -export function initShareToSpacesApi(deps: ExternalRouteDeps) { - const { externalRouter, getStartServices } = deps; - - const shareSchema = schema.object({ - spaces: schema.arrayOf( - schema.string({ - validate: (value) => { - if (value !== ALL_SPACES_ID && !SPACE_ID_REGEX.test(value)) { - return `lower case, a-z, 0-9, "_", and "-" are allowed, OR "*"`; - } - }, - }), - { - validate: (spaceIds) => { - if (!spaceIds.length) { - return 'must specify one or more space ids'; - } else if (uniq(spaceIds).length !== spaceIds.length) { - return 'duplicate space ids are not allowed'; - } - }, - } - ), - object: schema.object({ type: schema.string(), id: schema.string() }), - }); - - externalRouter.post( - { path: '/api/spaces/_share_saved_object_add', validate: { body: shareSchema } }, - createLicensedRouteHandler(async (_context, request, response) => { - const [startServices] = await getStartServices(); - const scopedClient = startServices.savedObjects.getScopedClient(request); - - const spaces = request.body.spaces; - const { type, id } = request.body.object; - - try { - await scopedClient.addToNamespaces(type, id, spaces); - } catch (error) { - return response.customError(wrapError(error)); - } - return response.noContent(); - }) - ); - - externalRouter.post( - { path: '/api/spaces/_share_saved_object_remove', validate: { body: shareSchema } }, - createLicensedRouteHandler(async (_context, request, response) => { - const [startServices] = await getStartServices(); - const scopedClient = startServices.savedObjects.getScopedClient(request); - - const spaces = request.body.spaces; - const { type, id } = request.body.object; - - try { - await scopedClient.deleteFromNamespaces(type, id, spaces); - } catch (error) { - return response.customError(wrapError(error)); - } - return response.noContent(); - }) - ); -} diff --git a/x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.test.ts b/x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.test.ts new file mode 100644 index 0000000000000..06968c3bcb50e --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.test.ts @@ -0,0 +1,176 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as Rx from 'rxjs'; + +import type { ObjectType } from '@kbn/config-schema'; +import type { RouteValidatorConfig } from 'src/core/server'; +import { kibanaResponseFactory } from 'src/core/server'; +import { + coreMock, + httpServerMock, + httpServiceMock, + loggingSystemMock, +} from 'src/core/server/mocks'; + +import { spacesConfig } from '../../../lib/__fixtures__'; +import { SpacesClientService } from '../../../spaces_client'; +import { SpacesService } from '../../../spaces_service'; +import { usageStatsServiceMock } from '../../../usage_stats/usage_stats_service.mock'; +import { + createMockSavedObjectsRepository, + createMockSavedObjectsService, + createSpaces, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { initUpdateObjectsSpacesApi } from './update_objects_spaces'; + +describe('update_objects_spaces', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map((s) => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter(); + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + const log = loggingSystemMock.create().get('spaces'); + const coreStart = coreMock.createStart(); + const { savedObjects, savedObjectsClient } = createMockSavedObjectsService(spaces); + coreStart.savedObjects = savedObjects; + + const clientService = new SpacesClientService(jest.fn()); + clientService + .setup({ config$: Rx.of(spacesConfig) }) + .setClientRepositoryFactory(() => savedObjectsRepositoryMock); + + const service = new SpacesService(); + service.setup({ + basePath: httpService.basePath, + }); + + const usageStatsServicePromise = Promise.resolve(usageStatsServiceMock.createSetupContract()); + + const clientServiceStart = clientService.start(coreStart); + + const spacesServiceStart = service.start({ + basePath: coreStart.http.basePath, + spacesClientService: clientServiceStart, + }); + initUpdateObjectsSpacesApi({ + externalRouter: router, + getStartServices: async () => [coreStart, {}, {}], + log, + getSpacesService: () => spacesServiceStart, + usageStatsServicePromise, + }); + + const [[updateObjectsSpaces, updateObjectsSpacesRouteHandler]] = router.post.mock.calls; + + return { + coreStart, + savedObjectsClient, + updateObjectsSpaces: { + routeValidation: updateObjectsSpaces.validate as RouteValidatorConfig<{}, {}, {}>, + routeHandler: updateObjectsSpacesRouteHandler, + }, + savedObjectsRepositoryMock, + }; + }; + + describe('POST /api/spaces/_update_objects_spaces', () => { + const objects = [{ id: 'foo', type: 'bar' }]; + + it(`returns http/403 when the license is invalid`, async () => { + const { updateObjectsSpaces } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'post', + }); + + const response = await updateObjectsSpaces.routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it(`requires space IDs to be unique`, async () => { + const { updateObjectsSpaces } = await setup(); + const targetSpaces = ['a-space', 'a-space']; + const payload1 = { objects, spacesToAdd: targetSpaces, spacesToRemove: [] }; + const payload2 = { objects, spacesToAdd: [], spacesToRemove: targetSpaces }; + + expect(() => + (updateObjectsSpaces.routeValidation.body as ObjectType).validate(payload1) + ).toThrowErrorMatchingInlineSnapshot(`"[spacesToAdd]: duplicate space ids are not allowed"`); + expect(() => + (updateObjectsSpaces.routeValidation.body as ObjectType).validate(payload2) + ).toThrowErrorMatchingInlineSnapshot( + `"[spacesToRemove]: duplicate space ids are not allowed"` + ); + }); + + it(`requires well-formed space IDS`, async () => { + const { updateObjectsSpaces } = await setup(); + const targetSpaces = ['a-space', 'a-space-invalid-!@#$%^&*()']; + const payload1 = { objects, spacesToAdd: targetSpaces, spacesToRemove: [] }; + const payload2 = { objects, spacesToAdd: [], spacesToRemove: targetSpaces }; + + expect(() => + (updateObjectsSpaces.routeValidation.body as ObjectType).validate(payload1) + ).toThrowErrorMatchingInlineSnapshot( + `"[spacesToAdd.1]: lower case, a-z, 0-9, \\"_\\", and \\"-\\" are allowed, OR \\"*\\""` + ); + expect(() => + (updateObjectsSpaces.routeValidation.body as ObjectType).validate(payload2) + ).toThrowErrorMatchingInlineSnapshot( + `"[spacesToRemove.1]: lower case, a-z, 0-9, \\"_\\", and \\"-\\" are allowed, OR \\"*\\""` + ); + }); + + it(`allows all spaces ("*")`, async () => { + const { updateObjectsSpaces } = await setup(); + const targetSpaces = ['*']; + const payload1 = { objects, spacesToAdd: targetSpaces, spacesToRemove: [] }; + const payload2 = { objects, spacesToAdd: [], spacesToRemove: targetSpaces }; + + expect(() => + (updateObjectsSpaces.routeValidation.body as ObjectType).validate(payload1) + ).not.toThrowError(); + expect(() => + (updateObjectsSpaces.routeValidation.body as ObjectType).validate(payload2) + ).not.toThrowError(); + }); + + it('passes arguments to the saved objects client and returns the result', async () => { + const { updateObjectsSpaces, savedObjectsClient } = await setup(); + const payload = { objects, spacesToAdd: ['a-space'], spacesToRemove: ['b-space'] }; + + const request = httpServerMock.createKibanaRequest({ body: payload, method: 'post' }); + const response = await updateObjectsSpaces.routeHandler( + mockRouteContext, + request, + kibanaResponseFactory + ); + + const { status } = response; + expect(status).toEqual(200); + expect(savedObjectsClient.updateObjectsSpaces).toHaveBeenCalledTimes(1); + expect(savedObjectsClient.updateObjectsSpaces).toHaveBeenCalledWith( + objects, + payload.spacesToAdd, + payload.spacesToRemove + ); + }); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.ts b/x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.ts new file mode 100644 index 0000000000000..4486d4b3ade09 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/update_objects_spaces.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { schema } from '@kbn/config-schema'; + +import { ALL_SPACES_ID } from '../../../../common/constants'; +import { wrapError } from '../../../lib/errors'; +import { SPACE_ID_REGEX } from '../../../lib/space_schema'; +import { createLicensedRouteHandler } from '../../lib'; +import type { ExternalRouteDeps } from './'; + +export function initUpdateObjectsSpacesApi(deps: ExternalRouteDeps) { + const { externalRouter, getStartServices } = deps; + + const spacesSchema = schema.arrayOf( + schema.string({ + validate: (value) => { + if (value !== ALL_SPACES_ID && !SPACE_ID_REGEX.test(value)) { + return `lower case, a-z, 0-9, "_", and "-" are allowed, OR "*"`; + } + }, + }), + { + validate: (spaceIds) => { + if (uniq(spaceIds).length !== spaceIds.length) { + return 'duplicate space ids are not allowed'; + } + }, + } + ); + + externalRouter.post( + { + path: '/api/spaces/_update_objects_spaces', + validate: { + body: schema.object({ + objects: schema.arrayOf(schema.object({ type: schema.string(), id: schema.string() })), + spacesToAdd: spacesSchema, + spacesToRemove: spacesSchema, + }), + }, + }, + createLicensedRouteHandler(async (_context, request, response) => { + const [startServices] = await getStartServices(); + const scopedClient = startServices.savedObjects.getScopedClient(request); + + const { objects, spacesToAdd, spacesToRemove } = request.body; + + try { + const updateObjectsSpacesResponse = await scopedClient.updateObjectsSpaces( + objects, + spacesToAdd, + spacesToRemove + ); + return response.ok({ body: updateObjectsSpacesResponse }); + } catch (error) { + return response.customError(wrapError(error)); + } + }) + ); +} + +/** Returns all unique elements of an array. */ +function uniq(arr: T[]): T[] { + return Array.from(new Set(arr)); +} diff --git a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts index cbb71d4bbcf81..56bfe71b581ed 100644 --- a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts +++ b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.test.ts @@ -503,66 +503,6 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; }); }); - describe('#addToNamespaces', () => { - test(`throws error if options.namespace is specified`, async () => { - const { client } = createSpacesSavedObjectsClient(); - - await expect( - // @ts-expect-error - client.addToNamespaces(null, null, null, { namespace: 'bar' }) - ).rejects.toThrow(ERROR_NAMESPACE_SPECIFIED); - }); - - test(`supplements options with the current namespace`, async () => { - const { client, baseClient } = createSpacesSavedObjectsClient(); - const expectedReturnValue = { namespaces: ['foo', 'bar'] }; - baseClient.addToNamespaces.mockReturnValue(Promise.resolve(expectedReturnValue)); - - const type = Symbol(); - const id = Symbol(); - const namespaces = Symbol(); - const options = Object.freeze({ foo: 'bar' }); - // @ts-expect-error - const actualReturnValue = await client.addToNamespaces(type, id, namespaces, options); - - expect(actualReturnValue).toBe(expectedReturnValue); - expect(baseClient.addToNamespaces).toHaveBeenCalledWith(type, id, namespaces, { - foo: 'bar', - namespace: currentSpace.expectedNamespace, - }); - }); - }); - - describe('#deleteFromNamespaces', () => { - test(`throws error if options.namespace is specified`, async () => { - const { client } = createSpacesSavedObjectsClient(); - - await expect( - // @ts-expect-error - client.deleteFromNamespaces(null, null, null, { namespace: 'bar' }) - ).rejects.toThrow(ERROR_NAMESPACE_SPECIFIED); - }); - - test(`supplements options with the current namespace`, async () => { - const { client, baseClient } = createSpacesSavedObjectsClient(); - const expectedReturnValue = { namespaces: ['foo', 'bar'] }; - baseClient.deleteFromNamespaces.mockReturnValue(Promise.resolve(expectedReturnValue)); - - const type = Symbol(); - const id = Symbol(); - const namespaces = Symbol(); - const options = Object.freeze({ foo: 'bar' }); - // @ts-expect-error - const actualReturnValue = await client.deleteFromNamespaces(type, id, namespaces, options); - - expect(actualReturnValue).toBe(expectedReturnValue); - expect(baseClient.deleteFromNamespaces).toHaveBeenCalledWith(type, id, namespaces, { - foo: 'bar', - namespace: currentSpace.expectedNamespace, - }); - }); - }); - describe('#removeReferencesTo', () => { test(`throws error if options.namespace is specified`, async () => { const { client } = createSpacesSavedObjectsClient(); @@ -681,5 +621,70 @@ const ERROR_NAMESPACE_SPECIFIED = 'Spaces currently determines the namespaces'; expect(baseClient.createPointInTimeFinder).toHaveBeenCalledWith(options, dependencies); }); }); + + describe('#collectMultiNamespaceReferences', () => { + test(`throws error if options.namespace is specified`, async () => { + const { client } = createSpacesSavedObjectsClient(); + + await expect( + client.collectMultiNamespaceReferences([], { namespace: 'bar' }) + ).rejects.toThrow(ERROR_NAMESPACE_SPECIFIED); + }); + + test(`supplements options with the current namespace`, async () => { + const { client, baseClient } = createSpacesSavedObjectsClient(); + const expectedReturnValue = { objects: [] }; + baseClient.collectMultiNamespaceReferences.mockReturnValue( + Promise.resolve(expectedReturnValue) + ); + + const objects = [{ type: 'foo', id: 'bar' }]; + const options = Object.freeze({ foo: 'bar' }); + // @ts-expect-error + const actualReturnValue = await client.collectMultiNamespaceReferences(objects, options); + + expect(actualReturnValue).toBe(expectedReturnValue); + expect(baseClient.collectMultiNamespaceReferences).toHaveBeenCalledWith(objects, { + foo: 'bar', + namespace: currentSpace.expectedNamespace, + }); + }); + }); + + describe('#updateObjectsSpaces', () => { + test(`throws error if options.namespace is specified`, async () => { + const { client } = createSpacesSavedObjectsClient(); + + await expect(client.updateObjectsSpaces([], [], [], { namespace: 'bar' })).rejects.toThrow( + ERROR_NAMESPACE_SPECIFIED + ); + }); + + test(`supplements options with the current namespace`, async () => { + const { client, baseClient } = createSpacesSavedObjectsClient(); + const expectedReturnValue = { objects: [] }; + baseClient.updateObjectsSpaces.mockReturnValue(Promise.resolve(expectedReturnValue)); + + const objects = [{ type: 'foo', id: 'bar' }]; + const spacesToAdd = ['space-x']; + const spacesToRemove = ['space-y']; + const options = Object.freeze({ foo: 'bar' }); + const actualReturnValue = await client.updateObjectsSpaces( + objects, + spacesToAdd, + spacesToRemove, + // @ts-expect-error + options + ); + + expect(actualReturnValue).toBe(expectedReturnValue); + expect(baseClient.updateObjectsSpaces).toHaveBeenCalledWith( + objects, + spacesToAdd, + spacesToRemove, + { foo: 'bar', namespace: currentSpace.expectedNamespace } + ); + }); + }); }); }); diff --git a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts index 4254615ac7d5f..e344aa8cecf07 100644 --- a/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts +++ b/x-pack/plugins/spaces/server/saved_objects/spaces_saved_objects_client.ts @@ -9,7 +9,6 @@ import Boom from '@hapi/boom'; import type { ISavedObjectTypeRegistry, - SavedObjectsAddToNamespacesOptions, SavedObjectsBaseOptions, SavedObjectsBulkCreateObject, SavedObjectsBulkGetObject, @@ -17,13 +16,17 @@ import type { SavedObjectsCheckConflictsObject, SavedObjectsClientContract, SavedObjectsClosePointInTimeOptions, + SavedObjectsCollectMultiNamespaceReferencesObject, + SavedObjectsCollectMultiNamespaceReferencesOptions, + SavedObjectsCollectMultiNamespaceReferencesResponse, SavedObjectsCreateOptions, SavedObjectsCreatePointInTimeFinderDependencies, SavedObjectsCreatePointInTimeFinderOptions, - SavedObjectsDeleteFromNamespacesOptions, SavedObjectsFindOptions, SavedObjectsOpenPointInTimeOptions, SavedObjectsRemoveReferencesToOptions, + SavedObjectsUpdateObjectsSpacesObject, + SavedObjectsUpdateObjectsSpacesOptions, SavedObjectsUpdateOptions, } from 'src/core/server'; @@ -300,86 +303,80 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { } /** - * Adds namespaces to a SavedObject + * Updates an array of objects by id * - * @param type - * @param id - * @param namespaces - * @param options + * @param {array} objects - an array ids, or an array of objects containing id, type, attributes and optionally version, references and namespace + * @returns {promise} - { saved_objects: [{ id, type, version, attributes }] } + * @example + * + * bulkUpdate([ + * { id: 'one', type: 'config', attributes: { title: 'My new title'}, version: 'd7rhfk47d=' }, + * { id: 'foo', type: 'index-pattern', attributes: {} } + * ]) */ - public async addToNamespaces( - type: string, - id: string, - namespaces: string[], - options: SavedObjectsAddToNamespacesOptions = {} + public async bulkUpdate( + objects: Array> = [], + options: SavedObjectsBaseOptions = {} ) { throwErrorIfNamespaceSpecified(options); - - return await this.client.addToNamespaces(type, id, namespaces, { + return await this.client.bulkUpdate(objects, { ...options, namespace: spaceIdToNamespace(this.spaceId), }); } /** - * Removes namespaces from a SavedObject + * Remove outward references to given object. * * @param type * @param id - * @param namespaces * @param options */ - public async deleteFromNamespaces( + public async removeReferencesTo( type: string, id: string, - namespaces: string[], - options: SavedObjectsDeleteFromNamespacesOptions = {} + options: SavedObjectsRemoveReferencesToOptions = {} ) { throwErrorIfNamespaceSpecified(options); - - return await this.client.deleteFromNamespaces(type, id, namespaces, { + return await this.client.removeReferencesTo(type, id, { ...options, namespace: spaceIdToNamespace(this.spaceId), }); } /** - * Updates an array of objects by id + * Gets all references and transitive references of the listed objects. Ignores any object that is not a multi-namespace type. * - * @param {array} objects - an array ids, or an array of objects containing id, type, attributes and optionally version, references and namespace - * @returns {promise} - { saved_objects: [{ id, type, version, attributes }] } - * @example - * - * bulkUpdate([ - * { id: 'one', type: 'config', attributes: { title: 'My new title'}, version: 'd7rhfk47d=' }, - * { id: 'foo', type: 'index-pattern', attributes: {} } - * ]) + * @param objects + * @param options */ - public async bulkUpdate( - objects: Array> = [], - options: SavedObjectsBaseOptions = {} - ) { + public async collectMultiNamespaceReferences( + objects: SavedObjectsCollectMultiNamespaceReferencesObject[], + options: SavedObjectsCollectMultiNamespaceReferencesOptions = {} + ): Promise { throwErrorIfNamespaceSpecified(options); - return await this.client.bulkUpdate(objects, { + return await this.client.collectMultiNamespaceReferences(objects, { ...options, namespace: spaceIdToNamespace(this.spaceId), }); } /** - * Remove outward references to given object. + * Updates one or more objects to add and/or remove them from specified spaces. * - * @param type - * @param id + * @param objects + * @param spacesToAdd + * @param spacesToRemove * @param options */ - public async removeReferencesTo( - type: string, - id: string, - options: SavedObjectsRemoveReferencesToOptions = {} + public async updateObjectsSpaces( + objects: SavedObjectsUpdateObjectsSpacesObject[], + spacesToAdd: string[], + spacesToRemove: string[], + options: SavedObjectsUpdateObjectsSpacesOptions = {} ) { throwErrorIfNamespaceSpecified(options); - return await this.client.removeReferencesTo(type, id, { + return await this.client.updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, { ...options, namespace: spaceIdToNamespace(this.spaceId), }); @@ -434,7 +431,7 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { * @param {object} findOptions - {@link SavedObjectsCreatePointInTimeFinderOptions} * @param {object} [dependencies] - {@link SavedObjectsCreatePointInTimeFinderDependencies} */ - createPointInTimeFinder( + createPointInTimeFinder( findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies ) { @@ -443,7 +440,7 @@ export class SpacesSavedObjectsClient implements SavedObjectsClientContract { // is simply a helper that calls `find`, `openPointInTimeForType`, and // `closePointInTime` internally, so namespaces will already be handled // in those methods. - return this.client.createPointInTimeFinder(findOptions, { + return this.client.createPointInTimeFinder(findOptions, { client: this, // Include dependencies last so that subsequent SO client wrappers have their settings applied. ...dependencies, diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 244b294baffe5..ae61f24201ce5 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -22821,8 +22821,6 @@ "xpack.spaces.shareToSpace.privilegeWarningTitle": "追加の権限が必要です", "xpack.spaces.shareToSpace.redirectLegacyUrlToast.text": "検索している{objectNoun}は新しい場所にあります。今後はこのURLを使用してください。", "xpack.spaces.shareToSpace.redirectLegacyUrlToast.title": "新しいURLに移動しました", - "xpack.spaces.shareToSpace.shareAddSuccessTextPlural": "「{object}」は{spaceTargets}個のスペースに追加されました。", - "xpack.spaces.shareToSpace.shareAddSuccessTextSingular": "「{object}」は1つのスペースに追加されました。", "xpack.spaces.shareToSpace.shareErrorTitle": "{objectNoun}の更新エラー", "xpack.spaces.shareToSpace.shareModeControl.hiddenCountLabel": "+{hiddenCount}個が非表示", "xpack.spaces.shareToSpace.shareModeControl.selectedCountLabel": "{selectedCount}個が選択済み", @@ -22833,8 +22831,6 @@ "xpack.spaces.shareToSpace.shareModeControl.shareToAllSpaces.title": "すべてのスペース", "xpack.spaces.shareToSpace.shareModeControl.shareToExplicitSpaces.text": "選択したスペースでのみ{objectNoun}を使用可能にします。", "xpack.spaces.shareToSpace.shareModeControl.shareToExplicitSpaces.title": "スペースを選択", - "xpack.spaces.shareToSpace.shareRemoveSuccessTextPlural": "「{object}」は{spaceTargets}個のスペースから削除されました。", - "xpack.spaces.shareToSpace.shareRemoveSuccessTextSingular": "「{object}」は1つのスペースから削除されました。", "xpack.spaces.shareToSpace.shareSuccessTitle": "{objectNoun}を更新しました", "xpack.spaces.shareToSpace.shareToSpacesButton": "保存して閉じる", "xpack.spaces.shareToSpace.shareWarningBody": "変更は選択した各スペースに表示されます。変更を同期しない場合は、{makeACopyLink}。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 8bdffce98d4ab..ecd6c0d68a94f 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -23182,8 +23182,6 @@ "xpack.spaces.shareToSpace.privilegeWarningTitle": "需要其他权限", "xpack.spaces.shareToSpace.redirectLegacyUrlToast.text": "您正在寻找的{objectNoun}具有新的位置。从现在开始使用此 URL。", "xpack.spaces.shareToSpace.redirectLegacyUrlToast.title": "我们已将您重定向到新 URL", - "xpack.spaces.shareToSpace.shareAddSuccessTextPlural": "“{object}”已添加到 {spaceTargets} 个工作区。", - "xpack.spaces.shareToSpace.shareAddSuccessTextSingular": "“{object}”已添加到 1 个工作区。", "xpack.spaces.shareToSpace.shareErrorTitle": "更新 {objectNoun} 时出错", "xpack.spaces.shareToSpace.shareModeControl.hiddenCountLabel": "+{hiddenCount} 个已隐藏", "xpack.spaces.shareToSpace.shareModeControl.selectedCountLabel": "{selectedCount} 个已选择", @@ -23194,8 +23192,6 @@ "xpack.spaces.shareToSpace.shareModeControl.shareToAllSpaces.title": "所有工作区", "xpack.spaces.shareToSpace.shareModeControl.shareToExplicitSpaces.text": "仅使 {objectNoun} 在选定工作区中可用。", "xpack.spaces.shareToSpace.shareModeControl.shareToExplicitSpaces.title": "选择工作区", - "xpack.spaces.shareToSpace.shareRemoveSuccessTextPlural": "“{object}”已从 {spaceTargets} 个工作区中移除。", - "xpack.spaces.shareToSpace.shareRemoveSuccessTextSingular": "“{object}”已从 1 个工作区中移除。", "xpack.spaces.shareToSpace.shareSuccessTitle": "已更新 {objectNoun}", "xpack.spaces.shareToSpace.shareToSpacesButton": "保存并关闭", "xpack.spaces.shareToSpace.shareWarningBody": "您的更改显示在您选择的每个工作区中。如果不想同步您的更改,{makeACopyLink}。", diff --git a/x-pack/test/api_integration/apis/ml/saved_objects/can_delete_job.ts b/x-pack/test/api_integration/apis/ml/saved_objects/can_delete_job.ts index c7af01c60fa52..19d50474fcc73 100644 --- a/x-pack/test/api_integration/apis/ml/saved_objects/can_delete_job.ts +++ b/x-pack/test/api_integration/apis/ml/saved_objects/can_delete_job.ts @@ -53,7 +53,7 @@ export default ({ getService }: FtrProviderContext) => { idStarSpace ); - await ml.api.asignJobToSpaces(adJobIdSpace12, 'anomaly-detector', [idSpace2], idSpace1); + await ml.api.updateJobSpaces(adJobIdSpace12, 'anomaly-detector', [idSpace2], [], idSpace1); await ml.api.assertJobSpaces(adJobIdSpace12, 'anomaly-detector', [idSpace1, idSpace2]); await ml.testResources.setKibanaTimeZoneToUTC(); diff --git a/x-pack/test/api_integration/apis/ml/saved_objects/index.ts b/x-pack/test/api_integration/apis/ml/saved_objects/index.ts index a4e9458609b0c..99ef48b2337d5 100644 --- a/x-pack/test/api_integration/apis/ml/saved_objects/index.ts +++ b/x-pack/test/api_integration/apis/ml/saved_objects/index.ts @@ -10,11 +10,10 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('saved objects', function () { loadTestFile(require.resolve('./jobs_spaces')); - loadTestFile(require.resolve('./assign_job_to_space')); loadTestFile(require.resolve('./can_delete_job')); loadTestFile(require.resolve('./initialize')); loadTestFile(require.resolve('./status')); - loadTestFile(require.resolve('./remove_job_from_space')); loadTestFile(require.resolve('./sync')); + loadTestFile(require.resolve('./update_jobs_spaces')); }); } diff --git a/x-pack/test/api_integration/apis/ml/saved_objects/remove_job_from_space.ts b/x-pack/test/api_integration/apis/ml/saved_objects/remove_job_from_space.ts deleted file mode 100644 index dec4523d39535..0000000000000 --- a/x-pack/test/api_integration/apis/ml/saved_objects/remove_job_from_space.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; -import { USER } from '../../../../functional/services/ml/security_common'; -import { COMMON_REQUEST_HEADERS } from '../../../../functional/services/ml/common_api'; -import { JobType } from '../../../../../plugins/ml/common/types/saved_objects'; - -export default ({ getService }: FtrProviderContext) => { - const ml = getService('ml'); - const spacesService = getService('spaces'); - const supertest = getService('supertestWithoutAuth'); - - const adJobId = 'fq_single'; - const idSpace1 = 'space1'; - const idSpace2 = 'space2'; - - async function runRequest( - requestBody: { - jobType: JobType; - jobIds: string[]; - spaces: string[]; - }, - expectedStatusCode: number, - user: USER, - space?: string - ) { - const { body } = await supertest - .post(`${space ? `/s/${space}` : ''}/api/ml/saved_objects/remove_job_from_space`) - .auth(user, ml.securityCommon.getPasswordForUser(user)) - .set(COMMON_REQUEST_HEADERS) - .send(requestBody) - .expect(expectedStatusCode); - - return body; - } - - describe('POST saved_objects/remove_job_from_space', () => { - before(async () => { - await spacesService.create({ id: idSpace1, name: 'space_one', disabledFeatures: [] }); - await spacesService.create({ id: idSpace2, name: 'space_two', disabledFeatures: [] }); - - await ml.testResources.setKibanaTimeZoneToUTC(); - }); - - beforeEach(async () => { - await ml.api.createAnomalyDetectionJob( - ml.commonConfig.getADFqSingleMetricJobConfig(adJobId), - idSpace1 - ); - }); - - afterEach(async () => { - await ml.api.cleanMlIndices(); - await ml.testResources.cleanMLSavedObjects(); - }); - - after(async () => { - await spacesService.delete(idSpace1); - await spacesService.delete(idSpace2); - }); - - it('should remove job from same space', async () => { - await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [idSpace1]); - - const body = await runRequest( - { - jobType: 'anomaly-detector', - jobIds: [adJobId], - spaces: [idSpace1], - }, - 200, - USER.ML_POWERUSER_ALL_SPACES, - idSpace1 - ); - - expect(body).to.eql({ [adJobId]: { success: true } }); - await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', []); - }); - - it('should not find job to remove from different space', async () => { - await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [idSpace1]); - - const body = await runRequest( - { - jobType: 'anomaly-detector', - jobIds: [adJobId], - spaces: [idSpace1], - }, - 200, - USER.ML_POWERUSER_ALL_SPACES, - idSpace2 - ); - - expect(body).to.eql({}); - await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [idSpace1]); - }); - }); -}; diff --git a/x-pack/test/api_integration/apis/ml/saved_objects/assign_job_to_space.ts b/x-pack/test/api_integration/apis/ml/saved_objects/update_jobs_spaces.ts similarity index 85% rename from x-pack/test/api_integration/apis/ml/saved_objects/assign_job_to_space.ts rename to x-pack/test/api_integration/apis/ml/saved_objects/update_jobs_spaces.ts index 12bd89716c044..89233fe11dbc6 100644 --- a/x-pack/test/api_integration/apis/ml/saved_objects/assign_job_to_space.ts +++ b/x-pack/test/api_integration/apis/ml/saved_objects/update_jobs_spaces.ts @@ -27,13 +27,14 @@ export default ({ getService }: FtrProviderContext) => { requestBody: { jobType: JobType; jobIds: string[]; - spaces: string[]; + spacesToAdd: string[]; + spacesToRemove: string[]; }, expectedStatusCode: number, user: USER ) { const { body } = await supertest - .post(`/api/ml/saved_objects/assign_job_to_space`) + .post(`/api/ml/saved_objects/update_jobs_spaces`) .auth(user, ml.securityCommon.getPasswordForUser(user)) .set(COMMON_REQUEST_HEADERS) .send(requestBody) @@ -42,7 +43,7 @@ export default ({ getService }: FtrProviderContext) => { return body; } - describe('POST saved_objects/assign_job_to_space', () => { + describe('POST saved_objects/update_jobs_spaces', () => { before(async () => { await esArchiver.loadIfNeeded('ml/ihp_outlier'); await spacesService.create({ id: idSpace1, name: 'space_one', disabledFeatures: [] }); @@ -74,14 +75,15 @@ export default ({ getService }: FtrProviderContext) => { { jobType: 'anomaly-detector', jobIds: [adJobId], - spaces: [idSpace1], + spacesToAdd: [idSpace1], + spacesToRemove: [defaultSpaceId], }, 200, USER.ML_POWERUSER_SPACE1 ); expect(body).to.eql({ [adJobId]: { success: true } }); - await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [defaultSpaceId, idSpace1]); + await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [idSpace1]); }); it('should assign DFA job to space for user with access to that space', async () => { @@ -90,23 +92,25 @@ export default ({ getService }: FtrProviderContext) => { { jobType: 'data-frame-analytics', jobIds: [dfaJobId], - spaces: [idSpace1], + spacesToAdd: [idSpace1], + spacesToRemove: [defaultSpaceId], }, 200, USER.ML_POWERUSER_SPACE1 ); expect(body).to.eql({ [dfaJobId]: { success: true } }); - await ml.api.assertJobSpaces(dfaJobId, 'data-frame-analytics', [defaultSpaceId, idSpace1]); + await ml.api.assertJobSpaces(dfaJobId, 'data-frame-analytics', [idSpace1]); }); - it('should fail to assign AD job to space the user has no access to', async () => { + it('should fail to update AD job spaces for space the user has no access to', async () => { await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [defaultSpaceId]); const body = await runRequest( { jobType: 'anomaly-detector', jobIds: [adJobId], - spaces: [idSpace2], + spacesToAdd: [idSpace2], + spacesToRemove: [], }, 200, USER.ML_POWERUSER_SPACE1 @@ -116,13 +120,14 @@ export default ({ getService }: FtrProviderContext) => { await ml.api.assertJobSpaces(adJobId, 'anomaly-detector', [defaultSpaceId]); }); - it('should fail to assign DFA job to space the user has no access to', async () => { + it('should fail to update DFA job spaces for space the user has no access to', async () => { await ml.api.assertJobSpaces(dfaJobId, 'data-frame-analytics', [defaultSpaceId]); const body = await runRequest( { jobType: 'data-frame-analytics', jobIds: [dfaJobId], - spaces: [idSpace2], + spacesToAdd: [idSpace2], + spacesToRemove: [], }, 200, USER.ML_POWERUSER_SPACE1 diff --git a/x-pack/test/functional/services/ml/api.ts b/x-pack/test/functional/services/ml/api.ts index c0e3dedd8e191..d341a27455a3c 100644 --- a/x-pack/test/functional/services/ml/api.ts +++ b/x-pack/test/functional/services/ml/api.ts @@ -892,26 +892,17 @@ export function MachineLearningAPIProvider({ getService }: FtrProviderContext) { await this.waitForAnalyticsState(dfaConfig.id, DATA_FRAME_TASK_STATE.STOPPED); }, - async asignJobToSpaces(jobId: string, jobType: JobType, spacesToAdd: string[], space?: string) { - const { body } = await kbnSupertest - .post(`${space ? `/s/${space}` : ''}/api/ml/saved_objects/assign_job_to_space`) - .set(COMMON_REQUEST_HEADERS) - .send({ jobType, jobIds: [jobId], spaces: spacesToAdd }) - .expect(200); - - expect(body).to.eql({ [jobId]: { success: true } }); - }, - - async removeJobFromSpaces( + async updateJobSpaces( jobId: string, jobType: JobType, + spacesToAdd: string[], spacesToRemove: string[], space?: string ) { const { body } = await kbnSupertest - .post(`${space ? `/s/${space}` : ''}/api/ml/saved_objects/remove_job_from_space`) + .post(`${space ? `/s/${space}` : ''}/api/ml/saved_objects/update_jobs_spaces`) .set(COMMON_REQUEST_HEADERS) - .send({ jobType, jobIds: [jobId], spaces: spacesToRemove }) + .send({ jobType, jobIds: [jobId], spacesToAdd, spacesToRemove }) .expect(200); expect(body).to.eql({ [jobId]: { success: true } }); diff --git a/x-pack/test/saved_object_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json b/x-pack/test/saved_object_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json index 5fac012d5e8b9..d83c550c15ff6 100644 --- a/x-pack/test/saved_object_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json +++ b/x-pack/test/saved_object_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json @@ -544,6 +544,7 @@ "type": "legacy-url-alias", "updated_at": "2017-09-21T18:51:23.794Z", "legacy-url-alias": { + "sourceId": "alias-match", "targetNamespace": "space_1", "targetType": "resolvetype", "targetId": "alias-match-newid" @@ -561,6 +562,7 @@ "type": "legacy-url-alias", "updated_at": "2017-09-21T18:51:23.794Z", "legacy-url-alias": { + "sourceId": "disabled", "targetNamespace": "space_1", "targetType": "resolvetype", "targetId": "alias-match-newid", @@ -611,6 +613,7 @@ "type": "legacy-url-alias", "updated_at": "2017-09-21T18:51:23.794Z", "legacy-url-alias": { + "sourceId": "conflict", "targetNamespace": "space_1", "targetType": "resolvetype", "targetId": "conflict-newid" diff --git a/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json b/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json index 5ce6c0ce6b7c5..ed52be26c7e53 100644 --- a/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json +++ b/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json @@ -388,6 +388,9 @@ }, "type": "sharedtype", "namespaces": ["default"], + "references": [ + { "type": "sharedtype", "id": "each_space", "name": "refname" } + ], "updated_at": "2017-09-21T18:59:16.270Z" }, "type": "doc" @@ -405,12 +408,33 @@ }, "type": "sharedtype", "namespaces": ["space_1"], + "references": [ + { "type": "sharedtype", "id": "each_space", "name": "refname" } + ], "updated_at": "2017-09-21T18:59:16.270Z" }, "type": "doc" } } +{ + "type": "doc", + "value": { + "id": "legacy-url-alias:space_1:sharedtype:default_only", + "index": ".kibana", + "source": { + "type": "legacy-url-alias", + "updated_at": "2017-09-21T18:51:23.794Z", + "legacy-url-alias": { + "sourceId": "default_only", + "targetNamespace": "space_1", + "targetType": "sharedtype", + "targetId": "space_1_only" + } + } + } +} + { "type": "doc", "value": { @@ -422,12 +446,52 @@ }, "type": "sharedtype", "namespaces": ["space_2"], + "references": [ + { "type": "sharedtype", "id": "each_space", "name": "refname" } + ], "updated_at": "2017-09-21T18:59:16.270Z" }, "type": "doc" } } +{ + "type": "doc", + "value": { + "id": "legacy-url-alias:space_2:sharedtype:default_only", + "index": ".kibana", + "source": { + "type": "legacy-url-alias", + "updated_at": "2017-09-21T18:51:23.794Z", + "legacy-url-alias": { + "sourceId": "default_only", + "targetNamespace": "space_2", + "targetType": "sharedtype", + "targetId": "space_2_only" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "legacy-url-alias:other_space:sharedtype:default_only", + "index": ".kibana", + "source": { + "type": "legacy-url-alias", + "updated_at": "2017-09-21T18:51:23.794Z", + "legacy-url-alias": { + "sourceId": "default_only", + "targetNamespace": "other_space", + "targetType": "sharedtype", + "targetId": "other_id", + "disabled": true + } + } + } +} + { "type": "doc", "value": { @@ -490,6 +554,12 @@ }, "type": "sharedtype", "namespaces": ["default", "space_1", "space_2"], + "references": [ + { "type": "sharedtype", "id": "default_only", "name": "refname" }, + { "type": "sharedtype", "id": "space_1_only", "name": "refname" }, + { "type": "sharedtype", "id": "space_2_only", "name": "refname" }, + { "type": "sharedtype", "id": "all_spaces", "name": "refname" } + ], "updated_at": "2017-09-21T18:59:16.270Z" }, "type": "doc" 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 f26edf71b482c..e264e574a3cea 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 @@ -37,7 +37,10 @@ interface CopyToSpaceTests { withConflictsResponse: (resp: TestResponse) => Promise; noConflictsResponse: (resp: TestResponse) => Promise; }; - multiNamespaceTestCases: (overwrite: boolean) => CopyToSpaceMultiNamespaceTest[]; + multiNamespaceTestCases: ( + overwrite: boolean, + createNewCopies: boolean + ) => CopyToSpaceMultiNamespaceTest[]; } interface CopyToSpaceTestDefinition { @@ -427,7 +430,7 @@ export function copyToSpaceTestSuiteFactory( const createMultiNamespaceTestCases = ( spaceId: string, outcome: 'authorized' | 'unauthorizedRead' | 'unauthorizedWrite' | 'noAccess' = 'authorized' - ) => (overwrite: boolean): CopyToSpaceMultiNamespaceTest[] => { + ) => (overwrite: boolean, createNewCopies: boolean): CopyToSpaceMultiNamespaceTest[] => { // the status code of the HTTP response differs depending on the error type // a 403 error actually comes back as an HTTP 200 response const statusCode = outcome === 'noAccess' ? 403 : 200; @@ -451,6 +454,17 @@ export function copyToSpaceTestSuiteFactory( }); }; + const expectNewCopyResponse = (response: TestResponse, sourceId: string, title: string) => { + const { success, successCount, successResults, errors } = getResult(response); + expect(success).to.eql(true); + expect(successCount).to.eql(1); + const destinationId = successResults![0].destinationId; + expect(destinationId).to.match(v4); + const meta = { title, icon: 'beaker' }; + expect(successResults).to.eql([{ type, id: sourceId, meta, destinationId }]); + expect(errors).to.be(undefined); + }; + return [ { testTitle: 'copying with no conflict', @@ -458,14 +472,10 @@ export function copyToSpaceTestSuiteFactory( statusCode, response: async (response: TestResponse) => { if (outcome === 'authorized') { - const { success, successCount, successResults, errors } = getResult(response); - expect(success).to.eql(true); - expect(successCount).to.eql(1); - const destinationId = successResults![0].destinationId; - expect(destinationId).to.match(v4); - const meta = { title: 'A shared saved-object in one space', icon: 'beaker' }; - expect(successResults).to.eql([{ type, id: noConflictId, meta, destinationId }]); - expect(errors).to.be(undefined); + const title = 'A shared saved-object in one space'; + // It doesn't matter if createNewCopies is enabled or not, a new copy will be created because two objects cannot exist with the same ID. + // Note: if createNewCopies is disabled, the new object will have an originId property that matches the source ID, but this is not included in the HTTP response. + expectNewCopyResponse(response, noConflictId, title); } else if (outcome === 'noAccess') { expectRouteForbiddenResponse(response); } else { @@ -479,22 +489,23 @@ export function copyToSpaceTestSuiteFactory( objects: [{ type, id: exactMatchId }], statusCode, response: async (response: TestResponse) => { - if (outcome === 'authorized') { + if (outcome === 'authorized' || (outcome === 'unauthorizedWrite' && !createNewCopies)) { + // If the user is authorized to read in the current space, and is authorized to read in the destination space but not to write + // (outcome === 'unauthorizedWrite'), *and* createNewCopies is not enabled, the object will be skipped (because it already + // exists in the destination space) and the user will encounter an empty success result. + // On the other hand, if the user is authorized to read in the current space but not the destination space (outcome === + // 'unauthorizedRead'), the copy attempt will proceed because they are not aware that the object already exists in the + // destination space. In that case, they will encounter a 403 error. const { success, successCount, successResults, errors } = getResult(response); const title = 'A shared saved-object in the default, space_1, and space_2 spaces'; - const meta = { title, icon: 'beaker' }; - if (overwrite) { - expect(success).to.eql(true); - expect(successCount).to.eql(1); - expect(successResults).to.eql([{ type, id: exactMatchId, meta, overwrite: true }]); - expect(errors).to.be(undefined); + if (createNewCopies) { + expectNewCopyResponse(response, exactMatchId, title); } else { - expect(success).to.eql(false); + // It doesn't matter if overwrite is enabled or not, the object will not be copied because it already exists in the destination space + expect(success).to.eql(true); expect(successCount).to.eql(0); expect(successResults).to.be(undefined); - expect(errors).to.eql([ - { error: { type: 'conflict' }, type, id: exactMatchId, title, meta }, - ]); + expect(errors).to.be(undefined); } } else if (outcome === 'noAccess') { expectRouteForbiddenResponse(response); @@ -514,7 +525,9 @@ export function copyToSpaceTestSuiteFactory( const title = 'A shared saved-object in one space'; const meta = { title, icon: 'beaker' }; const destinationId = 'conflict_1_space_2'; - if (overwrite) { + if (createNewCopies) { + expectNewCopyResponse(response, inexactMatchId, title); + } else if (overwrite) { expect(success).to.eql(true); expect(successCount).to.eql(1); expect(successResults).to.eql([ @@ -550,27 +563,34 @@ export function copyToSpaceTestSuiteFactory( response: async (response: TestResponse) => { if (outcome === 'authorized') { const { success, successCount, successResults, errors } = getResult(response); - const updatedAt = '2017-09-21T18:59:16.270Z'; - const destinations = [ - // response should be sorted by updatedAt in descending order - { id: 'conflict_2_space_2', title: 'A shared saved-object in one space', updatedAt }, - { id: 'conflict_2_all', title: 'A shared saved-object in all spaces', updatedAt }, - ]; - expect(success).to.eql(false); - expect(successCount).to.eql(0); - expect(successResults).to.be(undefined); - expect(errors).to.eql([ - { - error: { type: 'ambiguous_conflict', destinations }, - type, - id: ambiguousConflictId, - title: 'A shared saved-object in one space', - meta: { + const title = 'A shared saved-object in one space'; + if (createNewCopies) { + expectNewCopyResponse(response, ambiguousConflictId, title); + } else { + // It doesn't matter if overwrite is enabled or not, the object will not be copied because there are two matches in the destination space + const updatedAt = '2017-09-21T18:59:16.270Z'; + const destinations = [ + // response should be sorted by updatedAt in descending order + { + id: 'conflict_2_space_2', title: 'A shared saved-object in one space', - icon: 'beaker', + updatedAt, }, - }, - ]); + { id: 'conflict_2_all', title: 'A shared saved-object in all spaces', updatedAt }, + ]; + expect(success).to.eql(false); + expect(successCount).to.eql(0); + expect(successResults).to.be(undefined); + expect(errors).to.eql([ + { + error: { type: 'ambiguous_conflict', destinations }, + type, + id: ambiguousConflictId, + title, + meta: { title, icon: 'beaker' }, + }, + ]); + } } else if (outcome === 'noAccess') { expectRouteForbiddenResponse(response); } else { @@ -726,15 +746,19 @@ export function copyToSpaceTestSuiteFactory( }); }); - [false, true].forEach((overwrite) => { + [ + [false, false], + [false, true], // createNewCopies enabled + [true, false], // overwrite enabled + // we don't specify tese cases with both overwrite and createNewCopies enabled, since overwrite won't matter in that scenario + ].forEach(([overwrite, createNewCopies]) => { const spaces = ['space_2']; const includeReferences = false; - const createNewCopies = false; - describe(`multi-namespace types with overwrite=${overwrite}`, () => { + describe(`multi-namespace types with overwrite=${overwrite} and createNewCopies=${createNewCopies}`, () => { before(() => esArchiver.load('saved_objects/spaces')); after(() => esArchiver.unload('saved_objects/spaces')); - const testCases = tests.multiNamespaceTestCases(overwrite); + const testCases = tests.multiNamespaceTestCases(overwrite, createNewCopies); testCases.forEach(({ testTitle, objects, statusCode, response }) => { it(`should return ${statusCode} when ${testTitle}`, async () => { return supertest diff --git a/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts b/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts new file mode 100644 index 0000000000000..a10e28d52924e --- /dev/null +++ b/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts @@ -0,0 +1,270 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { deepFreeze } from '@kbn/std'; +import { SuperTest } from 'supertest'; +import { + SavedObjectsCollectMultiNamespaceReferencesResponse, + SavedObjectReferenceWithContext, +} from '../../../../../src/core/server'; +import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../lib/saved_object_test_cases'; +import { SPACES } from '../lib/spaces'; +import { + expectResponses, + getUrlPrefix, +} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; +import { + ExpectResponseBody, + TestDefinition, + TestSuite, +} from '../../../saved_object_api_integration/common/lib/types'; + +export interface GetShareableReferencesTestDefinition extends TestDefinition { + request: { + objects: Array<{ type: string; id: string }>; + }; +} +export type GetShareableReferencesTestSuite = TestSuite; +export interface GetShareableReferencesTestCase { + objects: Array<{ type: string; id: string }>; + expectedResults: SavedObjectReferenceWithContext[]; +} + +const { + DEFAULT: { spaceId: DEFAULT_SPACE_ID }, + SPACE_1: { spaceId: SPACE_1_ID }, + SPACE_2: { spaceId: SPACE_2_ID }, +} = SPACES; +export const TEST_CASE_OBJECTS: Record = deepFreeze({ + SHAREABLE_TYPE: { type: 'sharedtype', id: CASES.EACH_SPACE.id }, // contains references to four other objects + SHAREABLE_TYPE_DOES_NOT_EXIST: { type: 'sharedtype', id: 'does-not-exist' }, + NON_SHAREABLE_TYPE: { type: 'dashboard', id: 'my_dashboard' }, // one of these exists in each space +}); +// Expected results for each space are defined here since they are used in multiple test suites +export const EXPECTED_RESULTS: Record = { + IN_DEFAULT_SPACE: [ + { + ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, + spaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + inboundReferences: [{ type: 'sharedtype', id: CASES.DEFAULT_ONLY.id, name: 'refname' }], // only reflects inbound reference that exist in the default space + }, + { + ...TEST_CASE_OBJECTS.SHAREABLE_TYPE_DOES_NOT_EXIST, + spaces: [], + inboundReferences: [], + isMissing: true, // doesn't exist anywhere + }, + { ...TEST_CASE_OBJECTS.NON_SHAREABLE_TYPE, spaces: [], inboundReferences: [] }, // not missing, but has an empty spaces array because it is not a shareable type + { + type: 'sharedtype', + id: CASES.DEFAULT_ONLY.id, + spaces: [DEFAULT_SPACE_ID], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + spacesWithMatchingAliases: [SPACE_1_ID, SPACE_2_ID], // aliases with a matching targetType and sourceId exist in two other spaces + }, + { + type: 'sharedtype', + id: CASES.SPACE_1_ONLY.id, + spaces: [], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + isMissing: true, // doesn't exist in the default space + }, + { + type: 'sharedtype', + id: CASES.SPACE_2_ONLY.id, + spaces: [], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + isMissing: true, // doesn't exist in the default space + }, + { + type: 'sharedtype', + id: CASES.ALL_SPACES.id, + spaces: ['*'], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + }, + ], + IN_SPACE_1: [ + { + ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, + spaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + inboundReferences: [{ type: 'sharedtype', id: CASES.SPACE_1_ONLY.id, name: 'refname' }], // only reflects inbound reference that exist in space 1 + }, + { + ...TEST_CASE_OBJECTS.SHAREABLE_TYPE_DOES_NOT_EXIST, + spaces: [], + inboundReferences: [], + isMissing: true, // doesn't exist anywhere + }, + { ...TEST_CASE_OBJECTS.NON_SHAREABLE_TYPE, spaces: [], inboundReferences: [] }, // not missing, but has an empty spaces array because it is not a shareable type + { + type: 'sharedtype', + id: CASES.DEFAULT_ONLY.id, + spaces: [], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + isMissing: true, // doesn't exist in space 1 + }, + { + type: 'sharedtype', + id: CASES.SPACE_1_ONLY.id, + spaces: [SPACE_1_ID], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + }, + { + type: 'sharedtype', + id: CASES.SPACE_2_ONLY.id, + spaces: [], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + isMissing: true, // doesn't exist in space 1 + }, + { + type: 'sharedtype', + id: CASES.ALL_SPACES.id, + spaces: ['*'], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + }, + ], + IN_SPACE_2: [ + { + ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, + spaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + inboundReferences: [{ type: 'sharedtype', id: CASES.SPACE_2_ONLY.id, name: 'refname' }], // only reflects inbound reference that exist in space 2 + }, + { + ...TEST_CASE_OBJECTS.SHAREABLE_TYPE_DOES_NOT_EXIST, + spaces: [], + inboundReferences: [], + isMissing: true, // doesn't exist anywhere + }, + { ...TEST_CASE_OBJECTS.NON_SHAREABLE_TYPE, spaces: [], inboundReferences: [] }, // not missing, but has an empty spaces array because it is not a shareable type + { + type: 'sharedtype', + id: CASES.DEFAULT_ONLY.id, + spaces: [], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + isMissing: true, // doesn't exist in space 2 + }, + { + type: 'sharedtype', + id: CASES.SPACE_1_ONLY.id, + spaces: [], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + isMissing: true, // doesn't exist in space 2 + }, + { + type: 'sharedtype', + id: CASES.SPACE_2_ONLY.id, + spaces: [SPACE_2_ID], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + }, + { + type: 'sharedtype', + id: CASES.ALL_SPACES.id, + spaces: ['*'], + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], + }, + ], +}; + +const createRequest = ({ objects }: GetShareableReferencesTestCase) => ({ objects }); +const getTestTitle = ({ objects }: GetShareableReferencesTestCase) => { + const objStr = objects.map(({ type, id }) => `${type}:${id}`).join(','); + return `{objects: [${objStr}]}`; +}; +const getRedactedSpaces = (authorizedSpace: string | undefined, spaces: string[]) => { + if (!authorizedSpace) { + return spaces; // if authorizedSpace is undefined, we should not redact any spaces + } + const redactedSpaces = spaces.map((x) => (x !== authorizedSpace && x !== '*' ? '?' : x)); + return redactedSpaces.sort((a, b) => (a === '?' ? 1 : b === '?' ? -1 : 0)); // unknown spaces are always at the end of the array +}; + +export function getShareableReferencesTestSuiteFactory(esArchiver: any, supertest: SuperTest) { + const expectForbidden = expectResponses.forbiddenTypes('share_to_space'); + const expectResponseBody = ( + testCase: GetShareableReferencesTestCase, + statusCode: 200 | 403, + authorizedSpace?: string + ): ExpectResponseBody => async (response: Record) => { + if (statusCode === 403) { + const types = testCase.objects.map((x) => x.type); + await expectForbidden(types)(response); + } else { + const { expectedResults } = testCase; + const apiResponse = response.body as SavedObjectsCollectMultiNamespaceReferencesResponse; + expect(apiResponse.objects).to.have.length(expectedResults.length); + expectedResults.forEach((expectedResult, i) => { + const { spaces, spacesWithMatchingAliases } = expectedResult; + const expectedSpaces = getRedactedSpaces(authorizedSpace, spaces); + const expectedSpacesWithMatchingAliases = + spacesWithMatchingAliases && + getRedactedSpaces(authorizedSpace, spacesWithMatchingAliases); + const expected = { + ...expectedResult, + spaces: expectedSpaces, + ...(expectedSpacesWithMatchingAliases && { + spacesWithMatchingAliases: expectedSpacesWithMatchingAliases, + }), + }; + expect(apiResponse.objects[i]).to.eql(expected); + }); + } + }; + const createTestDefinitions = ( + testCases: GetShareableReferencesTestCase | GetShareableReferencesTestCase[], + forbidden: boolean, + options: { + /** If defined, will expect results to have redacted any spaces that do not match this one. */ + authorizedSpace?: string; + responseBodyOverride?: ExpectResponseBody; + } = {} + ): GetShareableReferencesTestDefinition[] => { + const cases = Array.isArray(testCases) ? testCases : [testCases]; + const responseStatusCode = forbidden ? 403 : 200; + return cases.map((x) => ({ + title: getTestTitle(x), + responseStatusCode, + request: createRequest(x), + responseBody: + options?.responseBodyOverride || + expectResponseBody(x, responseStatusCode, options.authorizedSpace), + })); + }; + + const makeGetShareableReferencesTest = (describeFn: Mocha.SuiteFunction) => ( + description: string, + definition: GetShareableReferencesTestSuite + ) => { + const { user, spaceId = SPACES.DEFAULT.spaceId, tests } = definition; + + describeFn(description, () => { + before(() => esArchiver.load('saved_objects/spaces')); + after(() => esArchiver.unload('saved_objects/spaces')); + + for (const test of tests) { + it(`should return ${test.responseStatusCode} ${test.title}`, async () => { + const requestBody = test.request; + await supertest + .post(`${getUrlPrefix(spaceId)}/api/spaces/_get_shareable_references`) + .auth(user?.username, user?.password) + .send(requestBody) + .expect(test.responseStatusCode) + .then(test.responseBody); + }); + } + }); + }; + + const addTests = makeGetShareableReferencesTest(describe); + // @ts-ignore + addTests.only = makeGetShareableReferencesTest(describe.only); + + return { + addTests, + createTestDefinitions, + }; +} diff --git a/x-pack/test/spaces_api_integration/common/suites/share_add.ts b/x-pack/test/spaces_api_integration/common/suites/share_add.ts deleted file mode 100644 index bec951bff67a5..0000000000000 --- a/x-pack/test/spaces_api_integration/common/suites/share_add.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { SuperTest } from 'supertest'; -import { SavedObjectsErrorHelpers } from '../../../../../src/core/server'; -import { SPACES } from '../lib/spaces'; -import { - expectResponses, - getUrlPrefix, -} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; -import { - ExpectResponseBody, - TestDefinition, - TestSuite, -} from '../../../saved_object_api_integration/common/lib/types'; - -export interface ShareAddTestDefinition extends TestDefinition { - request: { spaces: string[]; object: { type: string; id: string } }; -} -export type ShareAddTestSuite = TestSuite; -export interface ShareAddTestCase { - id: string; - namespaces: string[]; - failure?: 400 | 403 | 404; -} - -const TYPE = 'sharedtype'; -const createRequest = ({ id, namespaces }: ShareAddTestCase) => ({ - spaces: namespaces, - object: { type: TYPE, id }, -}); -const getTestTitle = ({ id, namespaces }: ShareAddTestCase) => - `{id: ${id}, namespaces: [${namespaces.join(',')}]}`; - -export function shareAddTestSuiteFactory(esArchiver: any, supertest: SuperTest) { - const expectForbidden = expectResponses.forbiddenTypes('share_to_space'); - const expectResponseBody = (testCase: ShareAddTestCase): ExpectResponseBody => async ( - response: Record - ) => { - const { id, failure } = testCase; - const object = response.body; - if (failure === 403) { - await expectForbidden(TYPE)(response); - } else if (failure === 404) { - const error = SavedObjectsErrorHelpers.createGenericNotFoundError(TYPE, id); - expect(object.error).to.eql(error.output.payload.error); - expect(object.statusCode).to.eql(error.output.payload.statusCode); - } else { - // success - expect(object).to.eql({}); - } - }; - const createTestDefinitions = ( - testCases: ShareAddTestCase | ShareAddTestCase[], - forbidden: boolean, - options?: { - responseBodyOverride?: ExpectResponseBody; - } - ): ShareAddTestDefinition[] => { - let cases = Array.isArray(testCases) ? testCases : [testCases]; - if (forbidden) { - // override the expected result in each test case - cases = cases.map((x) => ({ ...x, failure: 403 })); - } - return cases.map((x) => ({ - title: getTestTitle(x), - responseStatusCode: x.failure ?? 204, - request: createRequest(x), - responseBody: options?.responseBodyOverride || expectResponseBody(x), - })); - }; - - const makeShareAddTest = (describeFn: Mocha.SuiteFunction) => ( - description: string, - definition: ShareAddTestSuite - ) => { - const { user, spaceId = SPACES.DEFAULT.spaceId, tests } = definition; - - describeFn(description, () => { - before(() => esArchiver.load('saved_objects/spaces')); - after(() => esArchiver.unload('saved_objects/spaces')); - - for (const test of tests) { - it(`should return ${test.responseStatusCode} ${test.title}`, async () => { - const requestBody = test.request; - await supertest - .post(`${getUrlPrefix(spaceId)}/api/spaces/_share_saved_object_add`) - .auth(user?.username, user?.password) - .send(requestBody) - .expect(test.responseStatusCode) - .then(test.responseBody); - }); - } - }); - }; - - const addTests = makeShareAddTest(describe); - // @ts-ignore - addTests.only = makeShareAddTest(describe.only); - - return { - addTests, - createTestDefinitions, - }; -} diff --git a/x-pack/test/spaces_api_integration/common/suites/share_remove.ts b/x-pack/test/spaces_api_integration/common/suites/share_remove.ts deleted file mode 100644 index 8b29c7e4d8bed..0000000000000 --- a/x-pack/test/spaces_api_integration/common/suites/share_remove.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { SuperTest } from 'supertest'; -import { SavedObjectsErrorHelpers } from '../../../../../src/core/server'; -import { SPACES } from '../lib/spaces'; -import { - expectResponses, - getUrlPrefix, - getTestTitle, -} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; -import { - ExpectResponseBody, - TestDefinition, - TestSuite, -} from '../../../saved_object_api_integration/common/lib/types'; - -export interface ShareRemoveTestDefinition extends TestDefinition { - request: { spaces: string[]; object: { type: string; id: string } }; -} -export type ShareRemoveTestSuite = TestSuite; -export interface ShareRemoveTestCase { - id: string; - namespaces: string[]; - failure?: 400 | 403 | 404; -} - -const TYPE = 'sharedtype'; -const createRequest = ({ id, namespaces }: ShareRemoveTestCase) => ({ - spaces: namespaces, - object: { type: TYPE, id }, -}); - -export function shareRemoveTestSuiteFactory(esArchiver: any, supertest: SuperTest) { - const expectForbidden = expectResponses.forbiddenTypes('share_to_space'); - const expectResponseBody = (testCase: ShareRemoveTestCase): ExpectResponseBody => async ( - response: Record - ) => { - const { id, failure } = testCase; - const object = response.body; - if (failure === 403) { - await expectForbidden(TYPE)(response); - } else if (failure === 404) { - const error = SavedObjectsErrorHelpers.createGenericNotFoundError(TYPE, id); - expect(object.error).to.eql(error.output.payload.error); - expect(object.statusCode).to.eql(error.output.payload.statusCode); - } else { - // success - expect(object).to.eql({}); - } - }; - const createTestDefinitions = ( - testCases: ShareRemoveTestCase | ShareRemoveTestCase[], - forbidden: boolean, - options?: { - responseBodyOverride?: ExpectResponseBody; - } - ): ShareRemoveTestDefinition[] => { - let cases = Array.isArray(testCases) ? testCases : [testCases]; - if (forbidden) { - // override the expected result in each test case - cases = cases.map((x) => ({ ...x, failure: 403 })); - } - return cases.map((x) => ({ - title: getTestTitle({ ...x, type: TYPE }), - responseStatusCode: x.failure ?? 204, - request: createRequest(x), - responseBody: options?.responseBodyOverride || expectResponseBody(x), - })); - }; - - const makeShareRemoveTest = (describeFn: Mocha.SuiteFunction) => ( - description: string, - definition: ShareRemoveTestSuite - ) => { - const { user, spaceId = SPACES.DEFAULT.spaceId, tests } = definition; - - describeFn(description, () => { - before(() => esArchiver.load('saved_objects/spaces')); - after(() => esArchiver.unload('saved_objects/spaces')); - - for (const test of tests) { - it(`should return ${test.responseStatusCode} ${test.title}`, async () => { - const requestBody = test.request; - await supertest - .post(`${getUrlPrefix(spaceId)}/api/spaces/_share_saved_object_remove`) - .auth(user?.username, user?.password) - .send(requestBody) - .expect(test.responseStatusCode) - .then(test.responseBody); - }); - } - }); - }; - - const addTests = makeShareRemoveTest(describe); - // @ts-ignore - addTests.only = makeShareRemoveTest(describe.only); - - return { - addTests, - createTestDefinitions, - }; -} diff --git a/x-pack/test/spaces_api_integration/common/suites/update_objects_spaces.ts b/x-pack/test/spaces_api_integration/common/suites/update_objects_spaces.ts new file mode 100644 index 0000000000000..7664deb6b0bdf --- /dev/null +++ b/x-pack/test/spaces_api_integration/common/suites/update_objects_spaces.ts @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { without, uniq } from 'lodash'; +import { SuperTest } from 'supertest'; +import { + SavedObjectsErrorHelpers, + SavedObjectsUpdateObjectsSpacesResponse, +} from '../../../../../src/core/server'; +import { SPACES } from '../lib/spaces'; +import { + expectResponses, + getUrlPrefix, +} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; +import { + ExpectResponseBody, + TestDefinition, + TestSuite, +} from '../../../saved_object_api_integration/common/lib/types'; + +export interface UpdateObjectsSpacesTestDefinition extends TestDefinition { + request: { + objects: Array<{ type: string; id: string }>; + spacesToAdd: string[]; + spacesToRemove: string[]; + }; +} +export type UpdateObjectsSpacesTestSuite = TestSuite; +export interface UpdateObjectsSpacesTestCase { + objects: Array<{ + id: string; + existingNamespaces: string[]; + failure?: 400 | 404; + }>; + spacesToAdd: string[]; + spacesToRemove: string[]; +} + +const TYPE = 'sharedtype'; +const createRequest = ({ objects, spacesToAdd, spacesToRemove }: UpdateObjectsSpacesTestCase) => ({ + objects: objects.map(({ id }) => ({ type: TYPE, id })), + spacesToAdd, + spacesToRemove, +}); +const getTestTitle = ({ objects, spacesToAdd, spacesToRemove }: UpdateObjectsSpacesTestCase) => { + const objStr = objects.map(({ id }) => id).join(','); + const addStr = spacesToAdd.join(','); + const remStr = spacesToRemove.join(','); + return `{objects: [${objStr}], spacesToAdd: [${addStr}], spacesToRemove: [${remStr}]}`; +}; + +export function updateObjectsSpacesTestSuiteFactory(esArchiver: any, supertest: SuperTest) { + const expectForbidden = expectResponses.forbiddenTypes('share_to_space'); + const expectResponseBody = ( + testCase: UpdateObjectsSpacesTestCase, + statusCode: 200 | 403, + authorizedSpace?: string + ): ExpectResponseBody => async (response: Record) => { + if (statusCode === 403) { + await expectForbidden(TYPE)(response); + } else { + const { objects, spacesToAdd, spacesToRemove } = testCase; + const apiResponse = response.body as SavedObjectsUpdateObjectsSpacesResponse; + objects.forEach(({ id, existingNamespaces, failure }, i) => { + const object = apiResponse.objects[i]; + if (failure === 404) { + const error = SavedObjectsErrorHelpers.createGenericNotFoundError(TYPE, id); + expect(object.error).to.eql(error.output.payload); + } else { + // success + const expectedSpaces = without( + uniq([...existingNamespaces, ...spacesToAdd]), + ...spacesToRemove + ).map((x) => (authorizedSpace && x !== authorizedSpace && x !== '*' ? '?' : x)); + + const result = apiResponse.objects[i]; + expect(result.type).to.eql(TYPE); + expect(result.id).to.eql(id); + expect(result.spaces.sort()).to.eql(expectedSpaces.sort()); + } + }); + } + }; + const createTestDefinitions = ( + testCases: UpdateObjectsSpacesTestCase | UpdateObjectsSpacesTestCase[], + forbidden: boolean, + options: { + /** If defined, will expect results to have redacted any spaces that do not match this one. */ + authorizedSpace?: string; + responseBodyOverride?: ExpectResponseBody; + } = {} + ): UpdateObjectsSpacesTestDefinition[] => { + const cases = Array.isArray(testCases) ? testCases : [testCases]; + const responseStatusCode = forbidden ? 403 : 200; + return cases.map((x) => ({ + title: getTestTitle(x), + responseStatusCode, + request: createRequest(x), + responseBody: + options?.responseBodyOverride || + expectResponseBody(x, responseStatusCode, options.authorizedSpace), + })); + }; + + const makeUpdateObjectsSpacesTest = (describeFn: Mocha.SuiteFunction) => ( + description: string, + definition: UpdateObjectsSpacesTestSuite + ) => { + const { user, spaceId = SPACES.DEFAULT.spaceId, tests } = definition; + + describeFn(description, () => { + before(() => esArchiver.load('saved_objects/spaces')); + after(() => esArchiver.unload('saved_objects/spaces')); + + for (const test of tests) { + it(`should return ${test.responseStatusCode} ${test.title}`, async () => { + const requestBody = test.request; + await supertest + .post(`${getUrlPrefix(spaceId)}/api/spaces/_update_objects_spaces`) + .auth(user?.username, user?.password) + .send(requestBody) + .expect(test.responseStatusCode) + .then(test.responseBody); + }); + } + }); + }; + + const addTests = makeUpdateObjectsSpacesTest(describe); + // @ts-ignore + addTests.only = makeUpdateObjectsSpacesTest(describe.only); + + return { + addTests, + createTestDefinitions, + }; +} diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/get_shareable_references.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/get_shareable_references.ts new file mode 100644 index 0000000000000..d3466dd511e82 --- /dev/null +++ b/x-pack/test/spaces_api_integration/security_and_spaces/apis/get_shareable_references.ts @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SPACES } from '../../common/lib/spaces'; +import { getTestScenarios } from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; +import { TestUser } from '../../../saved_object_api_integration/common/lib/types'; +import { + getShareableReferencesTestSuiteFactory, + GetShareableReferencesTestCase, + GetShareableReferencesTestDefinition, + TEST_CASE_OBJECTS, + EXPECTED_RESULTS, +} from '../../common/suites/get_shareable_references'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +const { + DEFAULT: { spaceId: DEFAULT_SPACE_ID }, + SPACE_1: { spaceId: SPACE_1_ID }, + SPACE_2: { spaceId: SPACE_2_ID }, +} = SPACES; + +const createTestCases = (spaceId: string): GetShareableReferencesTestCase[] => { + const objects = [ + // requested objects are the same for each space + TEST_CASE_OBJECTS.SHAREABLE_TYPE, + TEST_CASE_OBJECTS.SHAREABLE_TYPE_DOES_NOT_EXIST, + TEST_CASE_OBJECTS.NON_SHAREABLE_TYPE, + ]; + + if (spaceId === DEFAULT_SPACE_ID) { + return [{ objects, expectedResults: EXPECTED_RESULTS.IN_DEFAULT_SPACE }]; + } else if (spaceId === SPACE_1_ID) { + return [{ objects, expectedResults: EXPECTED_RESULTS.IN_SPACE_1 }]; + } else if (spaceId === SPACE_2_ID) { + return [{ objects, expectedResults: EXPECTED_RESULTS.IN_SPACE_2 }]; + } + throw new Error(`Unexpected test case for space '${spaceId}'!`); +}; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertestWithoutAuth'); + const esArchiver = getService('esArchiver'); + + const { addTests, createTestDefinitions } = getShareableReferencesTestSuiteFactory( + esArchiver, + supertest + ); + const createTests = (spaceId: string) => { + const testCases = createTestCases(spaceId); + return { + unauthorized: createTestDefinitions(testCases, true), + authorizedThisSpace: createTestDefinitions(testCases, false, { authorizedSpace: spaceId }), + authorizedGlobally: createTestDefinitions(testCases, false), + }; + }; + + describe('_get_shareable_references', () => { + getTestScenarios().securityAndSpaces.forEach(({ spaceId, users }) => { + const suffix = ` targeting the ${spaceId} space`; + const { unauthorized, authorizedThisSpace, authorizedGlobally } = createTests(spaceId); + const _addTests = (user: TestUser, tests: GetShareableReferencesTestDefinition[]) => { + addTests(`${user.description}${suffix}`, { user, spaceId, tests }); + }; + + [ + users.noAccess, + users.legacyAll, + users.dualRead, + users.readGlobally, + users.readAtSpace, + users.allAtOtherSpace, + ].forEach((user) => { + _addTests(user, unauthorized); + }); + _addTests(users.allAtSpace, authorizedThisSpace); + [users.dualAll, users.allGlobally, users.superuser].forEach((user) => { + _addTests(user, authorizedGlobally); + }); + }); + }); +} diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts index 3a775b0579a20..4bb4d10eaabf8 100644 --- a/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts +++ b/x-pack/test/spaces_api_integration/security_and_spaces/apis/index.ts @@ -25,9 +25,9 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { loadTestFile(require.resolve('./create')); loadTestFile(require.resolve('./delete')); loadTestFile(require.resolve('./get_all')); + loadTestFile(require.resolve('./get_shareable_references')); loadTestFile(require.resolve('./get')); - loadTestFile(require.resolve('./share_add')); - loadTestFile(require.resolve('./share_remove')); loadTestFile(require.resolve('./update')); + loadTestFile(require.resolve('./update_objects_spaces')); }); } diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/share_add.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/share_add.ts deleted file mode 100644 index 050cb81874cd3..0000000000000 --- a/x-pack/test/spaces_api_integration/security_and_spaces/apis/share_add.ts +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SPACES } from '../../common/lib/spaces'; -import { - testCaseFailures, - getTestScenarios, -} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; -import { TestUser } from '../../../saved_object_api_integration/common/lib/types'; -import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../../common/lib/saved_object_test_cases'; -import { - shareAddTestSuiteFactory, - ShareAddTestDefinition, - ShareAddTestCase, -} from '../../common/suites/share_add'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -const { - DEFAULT: { spaceId: DEFAULT_SPACE_ID }, - SPACE_1: { spaceId: SPACE_1_ID }, - SPACE_2: { spaceId: SPACE_2_ID }, -} = SPACES; -const { fail404 } = testCaseFailures; - -const createTestCases = (spaceId: string) => { - const namespaces = [spaceId]; - return [ - // Test cases to check adding the target namespace to different saved objects - { ...CASES.DEFAULT_ONLY, namespaces, ...fail404(spaceId !== DEFAULT_SPACE_ID) }, - { ...CASES.SPACE_1_ONLY, namespaces, ...fail404(spaceId !== SPACE_1_ID) }, - { ...CASES.SPACE_2_ONLY, namespaces, ...fail404(spaceId !== SPACE_2_ID) }, - { ...CASES.DEFAULT_AND_SPACE_1, namespaces, ...fail404(spaceId === SPACE_2_ID) }, - { ...CASES.DEFAULT_AND_SPACE_2, namespaces, ...fail404(spaceId === SPACE_1_ID) }, - { ...CASES.SPACE_1_AND_SPACE_2, namespaces, ...fail404(spaceId === DEFAULT_SPACE_ID) }, - { ...CASES.ALL_SPACES, namespaces }, - { ...CASES.DOES_NOT_EXIST, namespaces, ...fail404() }, - // Test case to check adding all spaces ("*") to a saved object - { ...CASES.EACH_SPACE, namespaces: ['*'] }, - // Test cases to check adding multiple namespaces to different saved objects that exist in one space - // These are non-exhaustive, they only check cases for adding two additional namespaces to a saved object - // More permutations are covered in the corresponding spaces_only test suite - { - ...CASES.DEFAULT_ONLY, - namespaces: [SPACE_1_ID, SPACE_2_ID], - ...fail404(spaceId !== DEFAULT_SPACE_ID), - }, - { - ...CASES.SPACE_1_ONLY, - namespaces: [DEFAULT_SPACE_ID, SPACE_2_ID], - ...fail404(spaceId !== SPACE_1_ID), - }, - { - ...CASES.SPACE_2_ONLY, - namespaces: [DEFAULT_SPACE_ID, SPACE_1_ID], - ...fail404(spaceId !== SPACE_2_ID), - }, - ]; -}; -const calculateSingleSpaceAuthZ = ( - testCases: ReturnType, - spaceId: string -) => { - const targetsAllSpaces: ShareAddTestCase[] = []; - const targetsOtherSpace: ShareAddTestCase[] = []; - const doesntExistInThisSpace: ShareAddTestCase[] = []; - const existsInThisSpace: ShareAddTestCase[] = []; - - for (const testCase of testCases) { - const { namespaces, existingNamespaces } = testCase; - if (namespaces.includes('*')) { - targetsAllSpaces.push(testCase); - } else if (!namespaces.includes(spaceId) || namespaces.length > 1) { - targetsOtherSpace.push(testCase); - } else if (!existingNamespaces.includes(spaceId)) { - doesntExistInThisSpace.push(testCase); - } else { - existsInThisSpace.push(testCase); - } - } - return { targetsAllSpaces, targetsOtherSpace, doesntExistInThisSpace, existsInThisSpace }; -}; -// eslint-disable-next-line import/no-default-export -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertestWithoutAuth'); - const esArchiver = getService('esArchiver'); - - const { addTests, createTestDefinitions } = shareAddTestSuiteFactory(esArchiver, supertest); - const createTests = (spaceId: string) => { - const testCases = createTestCases(spaceId); - const thisSpace = calculateSingleSpaceAuthZ(testCases, spaceId); - const otherSpaceId = spaceId === DEFAULT_SPACE_ID ? SPACE_1_ID : DEFAULT_SPACE_ID; - const otherSpace = calculateSingleSpaceAuthZ(testCases, otherSpaceId); - return { - unauthorized: createTestDefinitions(testCases, true), - authorizedInSpace: [ - createTestDefinitions(thisSpace.targetsAllSpaces, true), - createTestDefinitions(thisSpace.targetsOtherSpace, true), - createTestDefinitions(thisSpace.doesntExistInThisSpace, false), - createTestDefinitions(thisSpace.existsInThisSpace, false), - ].flat(), - authorizedInOtherSpace: [ - createTestDefinitions(thisSpace.targetsAllSpaces, true), - createTestDefinitions(otherSpace.targetsOtherSpace, true), - // If the preflight GET request fails, it will return a 404 error; users who are authorized to share saved objects in the target - // space(s) but are not authorized to share saved objects in this space will see a 403 error instead of 404. This is a safeguard to - // prevent potential information disclosure of the spaces that a given saved object may exist in. - createTestDefinitions(otherSpace.doesntExistInThisSpace, true), - createTestDefinitions(otherSpace.existsInThisSpace, false), - ].flat(), - authorized: createTestDefinitions(testCases, false), - }; - }; - - describe('_share_saved_object_add', () => { - getTestScenarios().securityAndSpaces.forEach(({ spaceId, users }) => { - const suffix = ` targeting the ${spaceId} space`; - const { unauthorized, authorizedInSpace, authorizedInOtherSpace, authorized } = createTests( - spaceId - ); - const _addTests = (user: TestUser, tests: ShareAddTestDefinition[]) => { - addTests(`${user.description}${suffix}`, { user, spaceId, tests }); - }; - - [ - users.noAccess, - users.legacyAll, - users.dualRead, - users.readGlobally, - users.readAtSpace, - ].forEach((user) => { - _addTests(user, unauthorized); - }); - _addTests(users.allAtSpace, authorizedInSpace); - _addTests(users.allAtOtherSpace, authorizedInOtherSpace); - [users.dualAll, users.allGlobally, users.superuser].forEach((user) => { - _addTests(user, authorized); - }); - }); - }); -} diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/share_remove.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/share_remove.ts deleted file mode 100644 index a5f18cf129d4c..0000000000000 --- a/x-pack/test/spaces_api_integration/security_and_spaces/apis/share_remove.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SPACES } from '../../common/lib/spaces'; -import { - testCaseFailures, - getTestScenarios, -} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; -import { TestUser } from '../../../saved_object_api_integration/common/lib/types'; -import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../../common/lib/saved_object_test_cases'; -import { - shareRemoveTestSuiteFactory, - ShareRemoveTestCase, - ShareRemoveTestDefinition, -} from '../../common/suites/share_remove'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -const { - DEFAULT: { spaceId: DEFAULT_SPACE_ID }, - SPACE_1: { spaceId: SPACE_1_ID }, - SPACE_2: { spaceId: SPACE_2_ID }, -} = SPACES; -const { fail404 } = testCaseFailures; - -const createTestCases = (spaceId: string) => { - // Test cases to check removing the target namespace from different saved objects - let namespaces = [spaceId]; - const singleSpace = [ - { id: CASES.DEFAULT_ONLY.id, namespaces, ...fail404(spaceId !== DEFAULT_SPACE_ID) }, - { id: CASES.SPACE_1_ONLY.id, namespaces, ...fail404(spaceId !== SPACE_1_ID) }, - { id: CASES.SPACE_2_ONLY.id, namespaces, ...fail404(spaceId !== SPACE_2_ID) }, - { id: CASES.DEFAULT_AND_SPACE_1.id, namespaces, ...fail404(spaceId === SPACE_2_ID) }, - { id: CASES.DEFAULT_AND_SPACE_2.id, namespaces, ...fail404(spaceId === SPACE_1_ID) }, - { id: CASES.SPACE_1_AND_SPACE_2.id, namespaces, ...fail404(spaceId === DEFAULT_SPACE_ID) }, - { id: CASES.EACH_SPACE.id, namespaces }, - { id: CASES.DOES_NOT_EXIST.id, namespaces, ...fail404() }, - ] as ShareRemoveTestCase[]; - - namespaces = [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID]; - const multipleSpaces = [ - // Test case to check removing all spaces from a saved object that exists in all spaces; - // It fails the second time because the object no longer exists - { ...CASES.ALL_SPACES, namespaces: ['*'] }, - { ...CASES.ALL_SPACES, namespaces: ['*'], ...fail404() }, - // Test cases to check removing all three namespaces from different saved objects that exist in two spaces - // These are non-exhaustive, they only check some cases -- each object will result in a 404, either because - // it never existed in the target namespace, or it was removed in one of the test cases above - // More permutations are covered in the corresponding spaces_only test suite - { id: CASES.DEFAULT_AND_SPACE_1.id, namespaces, ...fail404() }, - { id: CASES.DEFAULT_AND_SPACE_2.id, namespaces, ...fail404() }, - { id: CASES.SPACE_1_AND_SPACE_2.id, namespaces, ...fail404() }, - ] as ShareRemoveTestCase[]; - - const allCases = singleSpace.concat(multipleSpaces); - return { singleSpace, multipleSpaces, allCases }; -}; - -// eslint-disable-next-line import/no-default-export -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertestWithoutAuth'); - const esArchiver = getService('esArchiver'); - - const { addTests, createTestDefinitions } = shareRemoveTestSuiteFactory(esArchiver, supertest); - const createTests = (spaceId: string) => { - const { singleSpace, multipleSpaces, allCases } = createTestCases(spaceId); - return { - unauthorized: createTestDefinitions(allCases, true), - authorizedThisSpace: [ - createTestDefinitions(singleSpace, false), - createTestDefinitions(multipleSpaces, true), - ].flat(), - authorizedGlobally: createTestDefinitions(allCases, false), - }; - }; - - describe('_share_saved_object_remove', () => { - getTestScenarios().securityAndSpaces.forEach(({ spaceId, users }) => { - const suffix = ` targeting the ${spaceId} space`; - const { unauthorized, authorizedThisSpace, authorizedGlobally } = createTests(spaceId); - const _addTests = (user: TestUser, tests: ShareRemoveTestDefinition[]) => { - addTests(`${user.description}${suffix}`, { user, spaceId, tests }); - }; - - [ - users.noAccess, - users.legacyAll, - users.dualRead, - users.readGlobally, - users.readAtSpace, - users.allAtOtherSpace, - ].forEach((user) => { - _addTests(user, unauthorized); - }); - _addTests(users.allAtSpace, authorizedThisSpace); - [users.dualAll, users.allGlobally, users.superuser].forEach((user) => { - _addTests(user, authorizedGlobally); - }); - }); - }); -} diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/update_objects_spaces.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/update_objects_spaces.ts new file mode 100644 index 0000000000000..36f50aa165e72 --- /dev/null +++ b/x-pack/test/spaces_api_integration/security_and_spaces/apis/update_objects_spaces.ts @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SPACES } from '../../common/lib/spaces'; +import { + testCaseFailures, + getTestScenarios, +} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; +import { TestUser } from '../../../saved_object_api_integration/common/lib/types'; +import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../../common/lib/saved_object_test_cases'; +import { + updateObjectsSpacesTestSuiteFactory, + UpdateObjectsSpacesTestDefinition, + UpdateObjectsSpacesTestCase, +} from '../../common/suites/update_objects_spaces'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +const { + DEFAULT: { spaceId: DEFAULT_SPACE_ID }, + SPACE_1: { spaceId: SPACE_1_ID }, + SPACE_2: { spaceId: SPACE_2_ID }, +} = SPACES; +const { fail404 } = testCaseFailures; + +const createTestCases = (spaceId: string): UpdateObjectsSpacesTestCase[] => { + const eachSpace = [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID]; + return [ + // Test case to check adding and removing all spaces ("*") to a saved object + { + objects: [CASES.EACH_SPACE], + spacesToAdd: ['*'], + spacesToRemove: [], + }, + { + objects: [{ id: CASES.EACH_SPACE.id, existingNamespaces: [...eachSpace, '*'] }], + spacesToAdd: [], + spacesToRemove: ['*'], + }, + + // Test cases to check adding and removing multiple namespaces to different saved objects that exist in one space + // These are non-exhaustive, they only check cases for adding two additional namespaces to a saved object + // More permutations are covered in the corresponding spaces_only test suite + { + objects: [{ ...CASES.DEFAULT_ONLY, ...fail404(spaceId !== DEFAULT_SPACE_ID) }], + spacesToAdd: [SPACE_1_ID, SPACE_2_ID], + spacesToRemove: [], + }, + { + objects: [{ ...CASES.SPACE_1_ONLY, ...fail404(spaceId !== SPACE_1_ID) }], + spacesToAdd: [DEFAULT_SPACE_ID, SPACE_2_ID], + spacesToRemove: [], + }, + { + objects: [{ ...CASES.SPACE_2_ONLY, ...fail404(spaceId !== SPACE_2_ID) }], + spacesToAdd: [DEFAULT_SPACE_ID, SPACE_1_ID], + spacesToRemove: [], + }, + { + objects: [ + { + id: CASES.DEFAULT_ONLY.id, + existingNamespaces: eachSpace, + ...fail404(spaceId !== DEFAULT_SPACE_ID), + }, + { + id: CASES.SPACE_1_ONLY.id, + existingNamespaces: eachSpace, + ...fail404(spaceId !== SPACE_1_ID), + }, + { + id: CASES.SPACE_2_ONLY.id, + existingNamespaces: eachSpace, + ...fail404(spaceId !== SPACE_2_ID), + }, + ], + spacesToAdd: [], + spacesToRemove: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + }, + + // Test cases to check adding and removing the target namespace to different saved objects + { + objects: [ + { ...CASES.DEFAULT_AND_SPACE_1, ...fail404(spaceId === SPACE_2_ID) }, + { ...CASES.DEFAULT_AND_SPACE_2, ...fail404(spaceId === SPACE_1_ID) }, + { ...CASES.SPACE_1_AND_SPACE_2, ...fail404(spaceId === DEFAULT_SPACE_ID) }, + CASES.ALL_SPACES, + { ...CASES.DOES_NOT_EXIST, ...fail404() }, + ], + spacesToAdd: [spaceId], + spacesToRemove: [], + }, + { + objects: [ + { ...CASES.DEFAULT_AND_SPACE_1, ...fail404(spaceId === SPACE_2_ID) }, + { ...CASES.DEFAULT_AND_SPACE_2, ...fail404(spaceId === SPACE_1_ID) }, + { ...CASES.SPACE_1_AND_SPACE_2, ...fail404(spaceId === DEFAULT_SPACE_ID) }, + { id: CASES.ALL_SPACES.id, existingNamespaces: ['*', spaceId] }, + { ...CASES.DOES_NOT_EXIST, ...fail404() }, + ], + spacesToAdd: [], + spacesToRemove: [spaceId], + }, + ]; +}; +const calculateSingleSpaceAuthZ = (testCases: UpdateObjectsSpacesTestCase[], spaceId: string) => { + const targetsThisSpace: UpdateObjectsSpacesTestCase[] = []; + const targetsOtherSpace: UpdateObjectsSpacesTestCase[] = []; + + for (const testCase of testCases) { + const { spacesToAdd, spacesToRemove } = testCase; + const spacesToAddOrRemove = [...spacesToAdd, ...spacesToRemove]; + if (spacesToAddOrRemove.length === 1 && spacesToAddOrRemove[0] === spaceId) { + targetsThisSpace.push(testCase); + } else { + targetsOtherSpace.push(testCase); + } + } + return { targetsThisSpace, targetsOtherSpace }; +}; +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertestWithoutAuth'); + const esArchiver = getService('esArchiver'); + + const { addTests, createTestDefinitions } = updateObjectsSpacesTestSuiteFactory( + esArchiver, + supertest + ); + const createTests = (spaceId: string) => { + const testCases = createTestCases(spaceId); + const { targetsThisSpace, targetsOtherSpace } = calculateSingleSpaceAuthZ(testCases, spaceId); + return { + unauthorized: createTestDefinitions(testCases, true), + authorizedThisSpace: [ + createTestDefinitions(targetsOtherSpace, true), + createTestDefinitions(targetsThisSpace, false, { authorizedSpace: spaceId }), + ].flat(), + authorizedGlobally: createTestDefinitions(testCases, false), + }; + }; + + describe('_update_objects_spaces', () => { + getTestScenarios().securityAndSpaces.forEach(({ spaceId, users }) => { + const suffix = ` targeting the ${spaceId} space`; + const { unauthorized, authorizedThisSpace, authorizedGlobally } = createTests(spaceId); + const _addTests = (user: TestUser, tests: UpdateObjectsSpacesTestDefinition[]) => { + addTests(`${user.description}${suffix}`, { user, spaceId, tests }); + }; + + [ + users.noAccess, + users.legacyAll, + users.dualRead, + users.readGlobally, + users.readAtSpace, + users.allAtOtherSpace, + ].forEach((user) => { + _addTests(user, unauthorized); + }); + _addTests(users.allAtSpace, authorizedThisSpace); + [users.dualAll, users.allGlobally, users.superuser].forEach((user) => { + _addTests(user, authorizedGlobally); + }); + }); + }); +} diff --git a/x-pack/test/spaces_api_integration/spaces_only/apis/get_shareable_references.ts b/x-pack/test/spaces_api_integration/spaces_only/apis/get_shareable_references.ts new file mode 100644 index 0000000000000..5eec1dda83e5a --- /dev/null +++ b/x-pack/test/spaces_api_integration/spaces_only/apis/get_shareable_references.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SPACES } from '../../common/lib/spaces'; +import { getTestScenarios } from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; +import { + getShareableReferencesTestSuiteFactory, + GetShareableReferencesTestCase, + TEST_CASE_OBJECTS, + EXPECTED_RESULTS, +} from '../../common/suites/get_shareable_references'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +const { + DEFAULT: { spaceId: DEFAULT_SPACE_ID }, + SPACE_1: { spaceId: SPACE_1_ID }, + SPACE_2: { spaceId: SPACE_2_ID }, +} = SPACES; + +const createTestCases = (spaceId: string): GetShareableReferencesTestCase[] => { + const objects = [ + // requested objects are the same for each space + TEST_CASE_OBJECTS.SHAREABLE_TYPE, + TEST_CASE_OBJECTS.SHAREABLE_TYPE_DOES_NOT_EXIST, + TEST_CASE_OBJECTS.NON_SHAREABLE_TYPE, + ]; + + if (spaceId === DEFAULT_SPACE_ID) { + return [{ objects, expectedResults: EXPECTED_RESULTS.IN_DEFAULT_SPACE }]; + } else if (spaceId === SPACE_1_ID) { + return [{ objects, expectedResults: EXPECTED_RESULTS.IN_SPACE_1 }]; + } else if (spaceId === SPACE_2_ID) { + return [{ objects, expectedResults: EXPECTED_RESULTS.IN_SPACE_2 }]; + } + throw new Error(`Unexpected test case for space '${spaceId}'!`); +}; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + + const { addTests, createTestDefinitions } = getShareableReferencesTestSuiteFactory( + esArchiver, + supertest + ); + const createTests = (spaceId: string) => { + const testCases = createTestCases(spaceId); + return createTestDefinitions(testCases, false); + }; + + describe('_get_shareable_references', () => { + getTestScenarios().spaces.forEach(({ spaceId }) => { + const tests = createTests(spaceId); + addTests(`targeting the ${spaceId} space`, { spaceId, tests }); + }); + }); +} diff --git a/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts b/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts index 6c52f731289e7..489e2c2d22ffa 100644 --- a/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts +++ b/x-pack/test/spaces_api_integration/spaces_only/apis/index.ts @@ -17,9 +17,9 @@ export default function spacesOnlyTestSuite({ loadTestFile }: FtrProviderContext loadTestFile(require.resolve('./create')); loadTestFile(require.resolve('./delete')); loadTestFile(require.resolve('./get_all')); + loadTestFile(require.resolve('./get_shareable_references')); loadTestFile(require.resolve('./get')); - loadTestFile(require.resolve('./share_add')); - loadTestFile(require.resolve('./share_remove')); loadTestFile(require.resolve('./update')); + loadTestFile(require.resolve('./update_objects_spaces')); }); } diff --git a/x-pack/test/spaces_api_integration/spaces_only/apis/share_add.ts b/x-pack/test/spaces_api_integration/spaces_only/apis/share_add.ts deleted file mode 100644 index 77af9221d6b9c..0000000000000 --- a/x-pack/test/spaces_api_integration/spaces_only/apis/share_add.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SPACES } from '../../common/lib/spaces'; -import { - testCaseFailures, - getTestScenarios, -} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; -import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../../common/lib/saved_object_test_cases'; -import { shareAddTestSuiteFactory } from '../../common/suites/share_add'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -const { - DEFAULT: { spaceId: DEFAULT_SPACE_ID }, - SPACE_1: { spaceId: SPACE_1_ID }, - SPACE_2: { spaceId: SPACE_2_ID }, -} = SPACES; -const { fail404 } = testCaseFailures; - -/** - * Single-namespace test cases - * @param spaceId the namespace to add to each saved object - */ -const createSingleTestCases = (spaceId: string) => { - const namespaces = ['some-space-id']; - return [ - { ...CASES.DEFAULT_ONLY, namespaces, ...fail404(spaceId !== DEFAULT_SPACE_ID) }, - { ...CASES.SPACE_1_ONLY, namespaces, ...fail404(spaceId !== SPACE_1_ID) }, - { ...CASES.SPACE_2_ONLY, namespaces, ...fail404(spaceId !== SPACE_2_ID) }, - { ...CASES.DEFAULT_AND_SPACE_1, namespaces, ...fail404(spaceId === SPACE_2_ID) }, - { ...CASES.DEFAULT_AND_SPACE_2, namespaces, ...fail404(spaceId === SPACE_1_ID) }, - { ...CASES.SPACE_1_AND_SPACE_2, namespaces, ...fail404(spaceId === DEFAULT_SPACE_ID) }, - { ...CASES.EACH_SPACE, namespaces }, - { ...CASES.ALL_SPACES, namespaces }, - { ...CASES.DOES_NOT_EXIST, namespaces, ...fail404() }, - ]; -}; -/** - * Multi-namespace test cases - * These are non-exhaustive, but they check different permutations of saved objects and spaces to add - */ -const createMultiTestCases = () => { - const eachSpace = [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID]; - const allSpaces = ['*']; - // for each of the cases below, test adding each space and all spaces to the object - const one = [ - { id: CASES.DEFAULT_ONLY.id, namespaces: eachSpace }, - { id: CASES.DEFAULT_ONLY.id, namespaces: allSpaces }, - ]; - const two = [ - { id: CASES.DEFAULT_AND_SPACE_1.id, namespaces: eachSpace }, - { id: CASES.DEFAULT_AND_SPACE_1.id, namespaces: allSpaces }, - ]; - const three = [ - { id: CASES.EACH_SPACE.id, namespaces: eachSpace }, - { id: CASES.EACH_SPACE.id, namespaces: allSpaces }, - ]; - const four = [ - { id: CASES.ALL_SPACES.id, namespaces: eachSpace }, - { id: CASES.ALL_SPACES.id, namespaces: allSpaces }, - ]; - return { one, two, three, four }; -}; - -// eslint-disable-next-line import/no-default-export -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - - const { addTests, createTestDefinitions } = shareAddTestSuiteFactory(esArchiver, supertest); - const createSingleTests = (spaceId: string) => { - const testCases = createSingleTestCases(spaceId); - return createTestDefinitions(testCases, false); - }; - const createMultiTests = () => { - const testCases = createMultiTestCases(); - return { - one: createTestDefinitions(testCases.one, false), - two: createTestDefinitions(testCases.two, false), - three: createTestDefinitions(testCases.three, false), - four: createTestDefinitions(testCases.four, false), - }; - }; - - describe('_share_saved_object_add', () => { - getTestScenarios().spaces.forEach(({ spaceId }) => { - const tests = createSingleTests(spaceId); - addTests(`targeting the ${spaceId} space`, { spaceId, tests }); - }); - const { one, two, three, four } = createMultiTests(); - addTests('for a saved object in the default space', { tests: one }); - addTests('for a saved object in the default and space_1 spaces', { tests: two }); - addTests('for a saved object in the default, space_1, and space_2 spaces', { tests: three }); - addTests('for a saved object in all spaces', { tests: four }); - }); -} diff --git a/x-pack/test/spaces_api_integration/spaces_only/apis/share_remove.ts b/x-pack/test/spaces_api_integration/spaces_only/apis/share_remove.ts deleted file mode 100644 index 22e18e7308f6b..0000000000000 --- a/x-pack/test/spaces_api_integration/spaces_only/apis/share_remove.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SPACES } from '../../common/lib/spaces'; -import { - testCaseFailures, - getTestScenarios, -} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; -import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../../common/lib/saved_object_test_cases'; -import { shareRemoveTestSuiteFactory } from '../../common/suites/share_remove'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -const { - DEFAULT: { spaceId: DEFAULT_SPACE_ID }, - SPACE_1: { spaceId: SPACE_1_ID }, - SPACE_2: { spaceId: SPACE_2_ID }, -} = SPACES; -const { fail404 } = testCaseFailures; - -/** - * Single-namespace test cases - * @param spaceId the namespace to remove from each saved object - */ -const createSingleTestCases = (spaceId: string) => { - const namespaces = [spaceId]; - return [ - { ...CASES.DEFAULT_ONLY, namespaces, ...fail404(spaceId !== DEFAULT_SPACE_ID) }, - { ...CASES.SPACE_1_ONLY, namespaces, ...fail404(spaceId !== SPACE_1_ID) }, - { ...CASES.SPACE_2_ONLY, namespaces, ...fail404(spaceId !== SPACE_2_ID) }, - { ...CASES.DEFAULT_AND_SPACE_1, namespaces, ...fail404(spaceId === SPACE_2_ID) }, - { ...CASES.DEFAULT_AND_SPACE_2, namespaces, ...fail404(spaceId === SPACE_1_ID) }, - { ...CASES.SPACE_1_AND_SPACE_2, namespaces, ...fail404(spaceId === DEFAULT_SPACE_ID) }, - { ...CASES.EACH_SPACE, namespaces }, - { ...CASES.DOES_NOT_EXIST, namespaces, ...fail404() }, - ]; -}; -/** - * Multi-namespace test cases - * These are non-exhaustive, but they check different permutations of saved objects and spaces to remove - */ -const createMultiTestCases = () => { - const nonExistentSpaceId = 'does_not_exist'; // space that doesn't exist - let id = CASES.DEFAULT_ONLY.id; - const one = [ - { id, namespaces: [nonExistentSpaceId] }, - { id, namespaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID] }, - { id, namespaces: [DEFAULT_SPACE_ID], ...fail404() }, // this saved object no longer exists - ]; - id = CASES.DEFAULT_AND_SPACE_1.id; - const two = [ - { id, namespaces: [DEFAULT_SPACE_ID, nonExistentSpaceId] }, - // this saved object will not be found in the context of the current namespace ('default') - { id, namespaces: [DEFAULT_SPACE_ID], ...fail404() }, // this object's namespaces no longer contains DEFAULT_SPACE_ID - { id, namespaces: [SPACE_1_ID], ...fail404() }, // this object's namespaces does contain SPACE_1_ID - ]; - id = CASES.EACH_SPACE.id; - const three = [ - { id, namespaces: [DEFAULT_SPACE_ID, SPACE_1_ID, nonExistentSpaceId] }, - // this saved object will not be found in the context of the current namespace ('default') - { id, namespaces: [DEFAULT_SPACE_ID], ...fail404() }, // this object's namespaces no longer contains DEFAULT_SPACE_ID - { id, namespaces: [SPACE_1_ID], ...fail404() }, // this object's namespaces no longer contains SPACE_1_ID - { id, namespaces: [SPACE_2_ID], ...fail404() }, // this object's namespaces does contain SPACE_2_ID - ]; - id = CASES.ALL_SPACES.id; - const four = [ - { id, namespaces: [DEFAULT_SPACE_ID, SPACE_1_ID, nonExistentSpaceId] }, - // this saved object will still be found in the context of the current namespace ('default') - { id, namespaces: ['*'] }, - // this object no longer exists - { id, namespaces: ['*'], ...fail404() }, - ]; - return { one, two, three, four }; -}; - -// eslint-disable-next-line import/no-default-export -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const esArchiver = getService('esArchiver'); - - const { addTests, createTestDefinitions } = shareRemoveTestSuiteFactory(esArchiver, supertest); - const createSingleTests = (spaceId: string) => { - const testCases = createSingleTestCases(spaceId); - return createTestDefinitions(testCases, false); - }; - const createMultiTests = () => { - const testCases = createMultiTestCases(); - return { - one: createTestDefinitions(testCases.one, false), - two: createTestDefinitions(testCases.two, false), - three: createTestDefinitions(testCases.three, false), - four: createTestDefinitions(testCases.four, false), - }; - }; - - describe('_share_saved_object_remove', () => { - getTestScenarios().spaces.forEach(({ spaceId }) => { - const tests = createSingleTests(spaceId); - addTests(`targeting the ${spaceId} space`, { spaceId, tests }); - }); - const { one, two, three, four } = createMultiTests(); - addTests('for a saved object in the default space', { tests: one }); - addTests('for a saved object in the default and space_1 spaces', { tests: two }); - addTests('for a saved object in the default, space_1, and space_2 spaces', { tests: three }); - addTests('for a saved object in all spaces', { tests: four }); - }); -} diff --git a/x-pack/test/spaces_api_integration/spaces_only/apis/update_objects_spaces.ts b/x-pack/test/spaces_api_integration/spaces_only/apis/update_objects_spaces.ts new file mode 100644 index 0000000000000..865d5eca22cbd --- /dev/null +++ b/x-pack/test/spaces_api_integration/spaces_only/apis/update_objects_spaces.ts @@ -0,0 +1,143 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SPACES } from '../../common/lib/spaces'; +import { + testCaseFailures, + getTestScenarios, +} from '../../../saved_object_api_integration/common/lib/saved_object_test_utils'; +import { MULTI_NAMESPACE_SAVED_OBJECT_TEST_CASES as CASES } from '../../common/lib/saved_object_test_cases'; +import { updateObjectsSpacesTestSuiteFactory } from '../../common/suites/update_objects_spaces'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +const { + DEFAULT: { spaceId: DEFAULT_SPACE_ID }, + SPACE_1: { spaceId: SPACE_1_ID }, + SPACE_2: { spaceId: SPACE_2_ID }, +} = SPACES; +const { fail404 } = testCaseFailures; + +/** + * Single-part test cases, which can be run in a single batch + * @param spaceId the space in which the test will take place (and the space the object will be removed from) + */ +const createSinglePartTestCases = (spaceId: string) => { + const spacesToAdd = ['some-space-id']; + const spacesToRemove = [spaceId]; + return { + objects: [ + { ...CASES.DEFAULT_ONLY, ...fail404(spaceId !== DEFAULT_SPACE_ID) }, + { ...CASES.SPACE_1_ONLY, ...fail404(spaceId !== SPACE_1_ID) }, + { ...CASES.SPACE_2_ONLY, ...fail404(spaceId !== SPACE_2_ID) }, + { ...CASES.DEFAULT_AND_SPACE_1, ...fail404(spaceId === SPACE_2_ID) }, + { ...CASES.DEFAULT_AND_SPACE_2, ...fail404(spaceId === SPACE_1_ID) }, + { ...CASES.SPACE_1_AND_SPACE_2, ...fail404(spaceId === DEFAULT_SPACE_ID) }, + CASES.EACH_SPACE, + CASES.ALL_SPACES, + { ...CASES.DOES_NOT_EXIST, ...fail404() }, + ], + spacesToAdd, + spacesToRemove, + }; +}; +/** + * Multi-part test cases, which have to be run sequentially + * These are non-exhaustive, but they check different permutations of saved objects and spaces to add + */ +const createMultiPartTestCases = () => { + const nonExistentSpace = 'does_not_exist'; // space that doesn't exist + const eachSpace = [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID]; + const group1 = [ + // first, add this object to each space and remove it from nonExistentSpace + // this will succeed even though the object already exists in the default space and it doesn't exist in nonExistentSpace + { objects: [CASES.DEFAULT_ONLY], spacesToAdd: eachSpace, spacesToRemove: [nonExistentSpace] }, + // second, add this object to nonExistentSpace and all spaces, and remove it from the default space + { + objects: [{ id: CASES.DEFAULT_ONLY.id, existingNamespaces: eachSpace }], + spacesToAdd: [nonExistentSpace, '*'], + spacesToRemove: [DEFAULT_SPACE_ID], + }, + // third, remove the object from all spaces + // the object is still accessible in the context of the default space because it currently exists in all spaces + { + objects: [ + { + id: CASES.DEFAULT_ONLY.id, + existingNamespaces: [SPACE_1_ID, SPACE_2_ID, nonExistentSpace, '*'], + }, + ], + spacesToAdd: [], + spacesToRemove: ['*'], + }, + // fourth, remove the object from space_1 + // this will fail because, even though the object still exists, it no longer exists in the context of the default space + { + objects: [ + { + id: CASES.DEFAULT_ONLY.id, + existingNamespaces: [SPACE_1_ID, SPACE_2_ID, nonExistentSpace], + ...fail404(), + }, + ], + spacesToAdd: [], + spacesToRemove: [SPACE_1_ID], + }, + ]; + const group2 = [ + // first, add this object to space_2 and remove it from space_1 + { + objects: [CASES.DEFAULT_AND_SPACE_1], + spacesToAdd: [SPACE_2_ID], + spacesToRemove: [SPACE_1_ID], + }, + // second, remove this object from the default space and space_2 + // since the object would no longer exist in any spaces, it will be deleted + { + objects: [ + { id: CASES.DEFAULT_AND_SPACE_1.id, existingNamespaces: [DEFAULT_SPACE_ID, SPACE_2_ID] }, + ], + spacesToAdd: [], + spacesToRemove: [DEFAULT_SPACE_ID, SPACE_1_ID], + }, + // fourth, add the object to the default space + // this will fail because the object no longer exists + { + objects: [{ id: CASES.DEFAULT_AND_SPACE_1.id, existingNamespaces: [], ...fail404() }], + spacesToAdd: [DEFAULT_SPACE_ID], + spacesToRemove: [], + }, + ]; + return [...group1, ...group2]; +}; + +// eslint-disable-next-line import/no-default-export +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + + const { addTests, createTestDefinitions } = updateObjectsSpacesTestSuiteFactory( + esArchiver, + supertest + ); + const createSinglePartTests = (spaceId: string) => { + const testCases = createSinglePartTestCases(spaceId); + return createTestDefinitions(testCases, false); + }; + const createMultiPartTests = () => { + const testCases = createMultiPartTestCases(); + return createTestDefinitions(testCases, false); + }; + + describe('_update_objects_spaces', () => { + getTestScenarios().spaces.forEach(({ spaceId }) => { + const tests = createSinglePartTests(spaceId); + addTests(`targeting the ${spaceId} space`, { spaceId, tests }); + }); + const multiPartTests = createMultiPartTests(); + addTests('multi-part tests in the default space', { tests: multiPartTests }); + }); +} From 7124719d5ba037bdcbd7ec053b50e0e9b4759fac Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 14 May 2021 21:12:20 +0100 Subject: [PATCH 110/144] chore(NA): moving @kbn/i18n into bazel (#99390) * chore(NA): moving @kbn/i18n into bazel * chore(NA): include javascript locales.js files * chore(NA): remove build scripts * chore(NA): remove node types on browser Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../monorepo-packages.asciidoc | 1 + package.json | 2 +- packages/BUILD.bazel | 1 + packages/kbn-i18n/BUILD.bazel | 154 ++++++++++++++++++ packages/kbn-i18n/package.json | 7 +- packages/kbn-i18n/scripts/build.js | 85 ---------- packages/kbn-i18n/tsconfig.browser.json | 21 +++ packages/kbn-i18n/tsconfig.json | 7 +- packages/kbn-interpreter/package.json | 3 - packages/kbn-monaco/package.json | 3 - packages/kbn-test/package.json | 1 - packages/kbn-ui-shared-deps/package.json | 1 - x-pack/package.json | 1 - yarn.lock | 2 +- 14 files changed, 184 insertions(+), 105 deletions(-) create mode 100644 packages/kbn-i18n/BUILD.bazel delete mode 100644 packages/kbn-i18n/scripts/build.js create mode 100644 packages/kbn-i18n/tsconfig.browser.json diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 92dc2a1a24377..06a5326d7f89a 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -79,6 +79,7 @@ yarn kbn watch-bazel - @kbn/eslint-import-resolver-kibana - @kbn/eslint-plugin-eslint - @kbn/expect +- @kbn/i18n - @kbn/legacy-logging - @kbn/logging - @kbn/securitysolution-constants diff --git a/package.json b/package.json index b79724dbb63bc..eddb6e6697347 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "@kbn/config": "link:bazel-bin/packages/kbn-config/npm_module", "@kbn/config-schema": "link:bazel-bin/packages/kbn-config-schema/npm_module", "@kbn/crypto": "link:bazel-bin/packages/kbn-crypto/npm_module", - "@kbn/i18n": "link:packages/kbn-i18n", + "@kbn/i18n": "link:bazel-bin/packages/kbn-i18n/npm_module", "@kbn/interpreter": "link:packages/kbn-interpreter", "@kbn/io-ts-utils": "link:packages/kbn-io-ts-utils", "@kbn/legacy-logging": "link:bazel-bin/packages/kbn-legacy-logging/npm_module", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index a9c87043575fa..889e34a1d9c22 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -21,6 +21,7 @@ filegroup( "//packages/kbn-eslint-import-resolver-kibana:build", "//packages/kbn-eslint-plugin-eslint:build", "//packages/kbn-expect:build", + "//packages/kbn-i18n:build", "//packages/kbn-legacy-logging:build", "//packages/kbn-logging:build", "//packages/kbn-plugin-generator:build", diff --git a/packages/kbn-i18n/BUILD.bazel b/packages/kbn-i18n/BUILD.bazel new file mode 100644 index 0000000000000..d71f7d78b1221 --- /dev/null +++ b/packages/kbn-i18n/BUILD.bazel @@ -0,0 +1,154 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-i18n" +PKG_REQUIRE_NAME = "@kbn/i18n" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + "src/core/locales.js", + "types/**/*.ts", + ], + exclude = [ + "**/*.test.*", + "**/__fixtures__/**", + "**/__snapshots__/**", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "angular/package.json", + "react/package.json", + "package.json", + "GUIDELINE.md", + "README.md" +] + +SRC_DEPS = [ + "//packages/kbn-babel-preset", + "//packages/kbn-dev-utils", + "@npm//@babel/core", + "@npm//babel-loader", + "@npm//del", + "@npm//getopts", + "@npm//intl-format-cache", + "@npm//intl-messageformat", + "@npm//intl-relativeformat", + "@npm//prop-types", + "@npm//react", + "@npm//react-intl", + "@npm//supports-color", +] + +TYPES_DEPS = [ + "@npm//typescript", + "@npm//@types/angular", + "@npm//@types/intl-relativeformat", + "@npm//@types/jest", + "@npm//@types/prop-types", + "@npm//@types/react", + "@npm//@types/react-intl", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_config( + name = "tsconfig_browser", + src = "tsconfig.browser.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.browser.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + allow_js = True, + declaration = True, + declaration_dir = "types", + declaration_map = True, + incremental = True, + out_dir = "node", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +ts_project( + name = "tsc_browser", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + allow_js = True, + declaration = False, + incremental = True, + out_dir = "web", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig_browser", +) + +filegroup( + name = "tsc_types", + srcs = [":tsc"], + output_group = "types", +) + +filegroup( + name = "target_files", + srcs = [ + ":tsc", + ":tsc_browser", + ":tsc_types", + ], +) + +pkg_npm( + name = "target", + deps = [ + ":target_files", + ], +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":target"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-i18n/package.json b/packages/kbn-i18n/package.json index 1f9d21f724ea8..36b625b1097bf 100644 --- a/packages/kbn-i18n/package.json +++ b/packages/kbn-i18n/package.json @@ -5,10 +5,5 @@ "types": "./target/types/index.d.ts", "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0", - "private": true, - "scripts": { - "build": "node scripts/build", - "kbn:bootstrap": "node scripts/build --source-maps", - "kbn:watch": "node scripts/build --watch --source-maps" - } + "private": true } \ No newline at end of file diff --git a/packages/kbn-i18n/scripts/build.js b/packages/kbn-i18n/scripts/build.js deleted file mode 100644 index 62ef2f59239d0..0000000000000 --- a/packages/kbn-i18n/scripts/build.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -const { resolve } = require('path'); - -const del = require('del'); -const supportsColor = require('supports-color'); -const { run, withProcRunner } = require('@kbn/dev-utils'); - -const ROOT_DIR = resolve(__dirname, '..'); -const BUILD_DIR = resolve(ROOT_DIR, 'target'); - -const padRight = (width, str) => - str.length >= width ? str : `${str}${' '.repeat(width - str.length)}`; - -run( - async ({ log, flags }) => { - await withProcRunner(log, async (proc) => { - log.info('Deleting old output'); - await del(BUILD_DIR); - - const cwd = ROOT_DIR; - const env = { ...process.env }; - if (supportsColor.stdout) { - env.FORCE_COLOR = 'true'; - } - - log.info(`Starting babel and typescript${flags.watch ? ' in watch mode' : ''}`); - await Promise.all([ - ...['web', 'node'].map((subTask) => - proc.run(padRight(10, `babel:${subTask}`), { - cmd: 'babel', - args: [ - 'src', - '--config-file', - require.resolve('../babel.config.js'), - '--out-dir', - resolve(BUILD_DIR, subTask), - '--extensions', - '.ts,.js,.tsx', - ...(flags.watch ? ['--watch'] : ['--quiet']), - ...(!flags['source-maps'] || !!process.env.CODE_COVERAGE - ? [] - : ['--source-maps', 'inline']), - ], - wait: true, - env: { - ...env, - BABEL_ENV: subTask, - }, - cwd, - }) - ), - - proc.run(padRight(10, 'tsc'), { - cmd: 'tsc', - args: [ - ...(flags.watch ? ['--watch', '--preserveWatchOutput', 'true'] : []), - ...(flags['source-maps'] ? ['--declarationMap', 'true'] : []), - ], - wait: true, - env, - cwd, - }), - ]); - - log.success('Complete'); - }); - }, - { - description: 'Simple build tool for @kbn/i18n package', - flags: { - boolean: ['watch', 'source-maps'], - help: ` - --watch Run in watch mode - --source-maps Include sourcemaps - `, - }, - } -); diff --git a/packages/kbn-i18n/tsconfig.browser.json b/packages/kbn-i18n/tsconfig.browser.json new file mode 100644 index 0000000000000..9ee4aeed8da21 --- /dev/null +++ b/packages/kbn-i18n/tsconfig.browser.json @@ -0,0 +1,21 @@ +{ + "extends": "../../tsconfig.browser.json", + "compilerOptions": { + "allowJs": true, + "incremental": true, + "outDir": "./target/web", + "declaration": false, + "isolatedModules": true, + "sourceMap": true, + "sourceRoot": "../../../../../packages/kbn-i18n/src" + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "types/intl_format_cache.d.ts", + "types/intl_relativeformat.d.ts" + ], + "exclude": [ + "**/__fixtures__/**/*" + ] +} diff --git a/packages/kbn-i18n/tsconfig.json b/packages/kbn-i18n/tsconfig.json index 9d4cb8c9b0972..ddb21915eac50 100644 --- a/packages/kbn-i18n/tsconfig.json +++ b/packages/kbn-i18n/tsconfig.json @@ -1,9 +1,10 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": false, - "outDir": "./target/types", - "emitDeclarationOnly": true, + "allowJs": true, + "incremental": true, + "declarationDir": "./target/types", + "outDir": "./target/node", "declaration": true, "declarationMap": true, "sourceMap": true, diff --git a/packages/kbn-interpreter/package.json b/packages/kbn-interpreter/package.json index 997fbb0eb8a4f..fc0936f4b5f53 100644 --- a/packages/kbn-interpreter/package.json +++ b/packages/kbn-interpreter/package.json @@ -8,8 +8,5 @@ "build": "node scripts/build", "kbn:bootstrap": "node scripts/build --dev", "kbn:watch": "node scripts/build --dev --watch" - }, - "dependencies": { - "@kbn/i18n": "link:../kbn-i18n" } } \ No newline at end of file diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index 75f1d74f1c9c9..e818351e7e470 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -9,8 +9,5 @@ "build": "node ./scripts/build.js", "kbn:bootstrap": "yarn build --dev", "build:antlr4ts": "../../node_modules/antlr4ts-cli/antlr4ts ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js" - }, - "dependencies": { - "@kbn/i18n": "link:../kbn-i18n" } } diff --git a/packages/kbn-test/package.json b/packages/kbn-test/package.json index a668d8c1f8588..e8e42de3114aa 100644 --- a/packages/kbn-test/package.json +++ b/packages/kbn-test/package.json @@ -14,7 +14,6 @@ "devOnly": true }, "dependencies": { - "@kbn/i18n": "link:../kbn-i18n", "@kbn/optimizer": "link:../kbn-optimizer" } } \ No newline at end of file diff --git a/packages/kbn-ui-shared-deps/package.json b/packages/kbn-ui-shared-deps/package.json index 54d983bf1bf44..c284be4487a5f 100644 --- a/packages/kbn-ui-shared-deps/package.json +++ b/packages/kbn-ui-shared-deps/package.json @@ -9,7 +9,6 @@ "kbn:watch": "node scripts/build --dev --watch" }, "dependencies": { - "@kbn/i18n": "link:../kbn-i18n", "@kbn/monaco": "link:../kbn-monaco" } } \ No newline at end of file diff --git a/x-pack/package.json b/x-pack/package.json index 91caae7a976e4..04f808c89764d 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -32,7 +32,6 @@ "@kbn/test": "link:../packages/kbn-test" }, "dependencies": { - "@kbn/i18n": "link:../packages/kbn-i18n", "@kbn/interpreter": "link:../packages/kbn-interpreter", "@kbn/ui-framework": "link:../packages/kbn-ui-framework" } diff --git a/yarn.lock b/yarn.lock index 4857c7c908293..dda4855e13d96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2658,7 +2658,7 @@ version "0.0.0" uid "" -"@kbn/i18n@link:packages/kbn-i18n": +"@kbn/i18n@link:bazel-bin/packages/kbn-i18n/npm_module": version "0.0.0" uid "" From ed797e724b868f0a95ef0b17301631cb09fc3a07 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 14 May 2021 21:14:45 +0100 Subject: [PATCH 111/144] chore(NA): moving @kbn/server-http-tools into bazel (#100153) --- .../monorepo-packages.asciidoc | 1 + package.json | 2 +- packages/BUILD.bazel | 1 + packages/kbn-cli-dev-mode/package.json | 1 - packages/kbn-server-http-tools/BUILD.bazel | 90 +++++++++++++++++++ packages/kbn-server-http-tools/package.json | 10 +-- packages/kbn-server-http-tools/tsconfig.json | 3 +- yarn.lock | 2 +- 8 files changed, 97 insertions(+), 13 deletions(-) create mode 100644 packages/kbn-server-http-tools/BUILD.bazel diff --git a/docs/developer/getting-started/monorepo-packages.asciidoc b/docs/developer/getting-started/monorepo-packages.asciidoc index 06a5326d7f89a..e81875d7893dd 100644 --- a/docs/developer/getting-started/monorepo-packages.asciidoc +++ b/docs/developer/getting-started/monorepo-packages.asciidoc @@ -89,6 +89,7 @@ yarn kbn watch-bazel - kbn/securitysolution-io-ts-types - @kbn/securitysolution-io-ts-utils - @kbn/securitysolution-utils +- @kbn/server-http-tools - @kbn/std - @kbn/telemetry-utils - @kbn/tinymath diff --git a/package.json b/package.json index eddb6e6697347..8024ecafde769 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "@kbn/securitysolution-io-ts-list-types": "link:bazel-bin/packages/kbn-securitysolution-io-ts-list-types/npm_module", "@kbn/securitysolution-io-ts-utils": "link:bazel-bin/packages/kbn-securitysolution-io-ts-utils/npm_module", "@kbn/securitysolution-utils": "link:bazel-bin/packages/kbn-securitysolution-utils/npm_module", - "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", + "@kbn/server-http-tools": "link:bazel-bin/packages/kbn-server-http-tools/npm_module", "@kbn/server-route-repository": "link:packages/kbn-server-route-repository", "@kbn/std": "link:bazel-bin/packages/kbn-std/npm_module", "@kbn/tinymath": "link:bazel-bin/packages/kbn-tinymath/npm_module", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 889e34a1d9c22..76250d8a1e864 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -32,6 +32,7 @@ filegroup( "//packages/kbn-securitysolution-io-ts-utils:build", "//packages/kbn-securitysolution-utils:build", "//packages/kbn-securitysolution-es-utils:build", + "//packages/kbn-server-http-tools:build", "//packages/kbn-std:build", "//packages/kbn-telemetry-tools:build", "//packages/kbn-tinymath:build", diff --git a/packages/kbn-cli-dev-mode/package.json b/packages/kbn-cli-dev-mode/package.json index 0401e6a82e11a..dd491de55c075 100644 --- a/packages/kbn-cli-dev-mode/package.json +++ b/packages/kbn-cli-dev-mode/package.json @@ -14,7 +14,6 @@ "devOnly": true }, "dependencies": { - "@kbn/server-http-tools": "link:../kbn-server-http-tools", "@kbn/optimizer": "link:../kbn-optimizer" } } \ No newline at end of file diff --git a/packages/kbn-server-http-tools/BUILD.bazel b/packages/kbn-server-http-tools/BUILD.bazel new file mode 100644 index 0000000000000..61570969c85f1 --- /dev/null +++ b/packages/kbn-server-http-tools/BUILD.bazel @@ -0,0 +1,90 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library", "pkg_npm") + +PKG_BASE_NAME = "kbn-server-http-tools" +PKG_REQUIRE_NAME = "@kbn/server-http-tools" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", + "README.md" +] + +SRC_DEPS = [ + "//packages/kbn-config-schema", + "//packages/kbn-crypto", + "@npm//@hapi/hapi", + "@npm//@hapi/hoek", + "@npm//joi", + "@npm//moment", + "@npm//uuid", +] + +TYPES_DEPS = [ + "@npm//@types/hapi__hapi", + "@npm//@types/joi", + "@npm//@types/node", + "@npm//@types/uuid", +] + +DEPS = SRC_DEPS + TYPES_DEPS + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + ], +) + +ts_project( + name = "tsc", + args = ['--pretty'], + srcs = SRCS, + deps = DEPS, + declaration = True, + declaration_map = True, + incremental = True, + out_dir = "target", + source_map = True, + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_BASE_NAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = [":tsc"] + DEPS, + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [ + ":%s" % PKG_BASE_NAME, + ] +) + +filegroup( + name = "build", + srcs = [ + ":npm_module", + ], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-server-http-tools/package.json b/packages/kbn-server-http-tools/package.json index c44bf17079aab..7ec52743f027e 100644 --- a/packages/kbn-server-http-tools/package.json +++ b/packages/kbn-server-http-tools/package.json @@ -4,13 +4,5 @@ "types": "./target/index.d.ts", "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0", - "private": true, - "scripts": { - "build": "rm -rf target && ../../node_modules/.bin/tsc", - "kbn:bootstrap": "yarn build", - "kbn:watch": "yarn build --watch" - }, - "devDependencies": { - "@kbn/utility-types": "link:../kbn-utility-types" - } + "private": true } diff --git a/packages/kbn-server-http-tools/tsconfig.json b/packages/kbn-server-http-tools/tsconfig.json index 2f3e4626a04ce..034cbd2334919 100644 --- a/packages/kbn-server-http-tools/tsconfig.json +++ b/packages/kbn-server-http-tools/tsconfig.json @@ -1,10 +1,11 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "incremental": false, + "incremental": true, "outDir": "./target", "declaration": true, "declarationMap": true, + "rootDir": "src", "sourceMap": true, "sourceRoot": "../../../../packages/kbn-server-http-tools/src" }, diff --git a/yarn.lock b/yarn.lock index dda4855e13d96..1f7c47baccf1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2727,7 +2727,7 @@ version "0.0.0" uid "" -"@kbn/server-http-tools@link:packages/kbn-server-http-tools": +"@kbn/server-http-tools@link:bazel-bin/packages/kbn-server-http-tools/npm_module": version "0.0.0" uid "" From b95586f0f462e07295c89c6c277ee8ecc16248a2 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Fri, 14 May 2021 15:38:20 -0500 Subject: [PATCH 112/144] [index patterns] deprecate IIndexPattern and IFieldType interfaces (#100013) * deprecate IIndexPattern and IFieldType * update api docs Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/kibana-plugin-plugins-data-public.ifieldtype.md | 5 +++++ .../kibana-plugin-plugins-data-public.iindexpattern.md | 5 ++++- .../plugins/data/public/kibana-plugin-plugins-data-public.md | 2 +- .../server/kibana-plugin-plugins-data-server.ifieldtype.md | 5 +++++ src/plugins/data/common/index_patterns/fields/types.ts | 4 ++++ src/plugins/data/common/index_patterns/types.ts | 3 ++- src/plugins/data/public/public.api.md | 4 ++-- src/plugins/data/server/server.api.md | 2 +- 8 files changed, 24 insertions(+), 6 deletions(-) diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md index 2b3d3df1ec8d0..4e3dea5549b56 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ifieldtype.md @@ -4,6 +4,11 @@ ## IFieldType interface +> Warning: This API is now obsolete. +> +> Use IndexPatternField or FieldSpec instead +> + Signature: ```typescript diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md index 3a78395b42754..bf7f88ab37039 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpattern.md @@ -4,7 +4,10 @@ ## IIndexPattern interface -IIndexPattern allows for an IndexPattern OR an index pattern saved object too ambiguous, should be avoided +> Warning: This API is now obsolete. +> +> IIndexPattern allows for an IndexPattern OR an index pattern saved object Use IndexPattern or IndexPatternSpec instead +> Signature: diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md index 58a225a3a4bc3..7f5a042e0ab81 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md @@ -67,7 +67,7 @@ | [IEsSearchRequest](./kibana-plugin-plugins-data-public.iessearchrequest.md) | | | [IFieldSubType](./kibana-plugin-plugins-data-public.ifieldsubtype.md) | | | [IFieldType](./kibana-plugin-plugins-data-public.ifieldtype.md) | | -| [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) | IIndexPattern allows for an IndexPattern OR an index pattern saved object too ambiguous, should be avoided | +| [IIndexPattern](./kibana-plugin-plugins-data-public.iindexpattern.md) | | | [IIndexPatternFieldList](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.md) | | | [IKibanaSearchRequest](./kibana-plugin-plugins-data-public.ikibanasearchrequest.md) | | | [IKibanaSearchResponse](./kibana-plugin-plugins-data-public.ikibanasearchresponse.md) | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md index 48836a1b620b8..5ac48d26a85d6 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ifieldtype.md @@ -4,6 +4,11 @@ ## IFieldType interface +> Warning: This API is now obsolete. +> +> Use IndexPatternField or FieldSpec instead +> + Signature: ```typescript diff --git a/src/plugins/data/common/index_patterns/fields/types.ts b/src/plugins/data/common/index_patterns/fields/types.ts index fa8f6c3bc1dc8..565dd6d926948 100644 --- a/src/plugins/data/common/index_patterns/fields/types.ts +++ b/src/plugins/data/common/index_patterns/fields/types.ts @@ -8,6 +8,10 @@ import { FieldSpec, IFieldSubType, IndexPattern } from '../..'; +/** + * @deprecated + * Use IndexPatternField or FieldSpec instead + */ export interface IFieldType { name: string; type: string; diff --git a/src/plugins/data/common/index_patterns/types.ts b/src/plugins/data/common/index_patterns/types.ts index c906b809b08c4..0fcdea1a878eb 100644 --- a/src/plugins/data/common/index_patterns/types.ts +++ b/src/plugins/data/common/index_patterns/types.ts @@ -25,8 +25,9 @@ export interface RuntimeField { } /** + * @deprecated * IIndexPattern allows for an IndexPattern OR an index pattern saved object - * too ambiguous, should be avoided + * Use IndexPattern or IndexPatternSpec instead */ export interface IIndexPattern { fields: IFieldType[]; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 54cea5e09121b..8561d7bf8d6f5 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -1178,7 +1178,7 @@ export interface IFieldSubType { // Warning: (ae-missing-release-tag) "IFieldType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public (undocumented) +// @public @deprecated (undocumented) export interface IFieldType { // (undocumented) aggregatable?: boolean; @@ -1222,7 +1222,7 @@ export interface IFieldType { // Warning: (ae-missing-release-tag) "IIndexPattern" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public +// @public @deprecated (undocumented) export interface IIndexPattern { // Warning: (ae-forgotten-export) The symbol "SerializedFieldFormat" needs to be exported by the entry point index.d.ts // diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index dbb49825b2409..ffdff2e33cf9c 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -692,7 +692,7 @@ export interface IFieldSubType { // Warning: (ae-missing-release-tag) "IFieldType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // -// @public (undocumented) +// @public @deprecated (undocumented) export interface IFieldType { // (undocumented) aggregatable?: boolean; From 47f4bfc7829dda595a3ea61b2872714fd35b9dbc Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Fri, 14 May 2021 17:07:21 -0400 Subject: [PATCH 113/144] [Lens] Create managedReference type for formulas (#99729) * [Lens] Create managedReference type for formulas * Fix test failures * Fix i18n types * Delete managedReference when replacing * Tests for formula * Refactoring from code review Co-authored-by: Joe Reuter Co-authored-by: Marco Liberati Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../workspace_panel/workspace_panel.test.tsx | 198 +--- .../dimension_panel/dimension_editor.tsx | 8 +- .../dimension_panel/dimension_panel.test.tsx | 97 +- .../droppable/droppable.test.ts | 6 +- .../droppable/on_drop_handler.ts | 2 +- .../dimension_panel/reference_editor.test.tsx | 25 + .../dimension_panel/reference_editor.tsx | 8 +- .../indexpattern.test.ts | 113 +- .../operations/__mocks__/index.ts | 4 +- .../definitions/calculations/counter_rate.tsx | 8 +- .../calculations/cumulative_sum.tsx | 8 +- .../definitions/calculations/differences.tsx | 8 +- .../calculations/moving_average.tsx | 22 +- .../definitions/calculations/utils.test.ts | 4 +- .../operations/definitions/cardinality.tsx | 16 +- .../operations/definitions/count.tsx | 6 +- .../definitions/date_histogram.test.tsx | 1 + .../operations/definitions/date_histogram.tsx | 5 +- .../definitions/filters/filters.test.tsx | 1 + .../definitions/formula/formula.test.tsx | 987 ++++++++++++++++++ .../definitions/formula/formula.tsx | 155 +++ .../definitions/formula/generate.ts | 90 ++ .../operations/definitions/formula/index.ts | 10 + .../operations/definitions/formula/math.tsx | 111 ++ .../operations/definitions/formula/parse.ts | 210 ++++ .../operations/definitions/formula/types.ts | 25 + .../operations/definitions/formula/util.ts | 317 ++++++ .../definitions/formula/validation.ts | 687 ++++++++++++ .../operations/definitions/helpers.test.ts | 2 +- .../operations/definitions/helpers.tsx | 52 +- .../operations/definitions/index.ts | 115 +- .../definitions/last_value.test.tsx | 1 + .../operations/definitions/last_value.tsx | 11 +- .../operations/definitions/metrics.tsx | 16 +- .../definitions/percentile.test.tsx | 39 +- .../operations/definitions/percentile.tsx | 9 +- .../definitions/ranges/ranges.test.tsx | 1 + .../definitions/terms/terms.test.tsx | 1 + .../operations/layer_helpers.test.ts | 294 +++++- .../operations/layer_helpers.ts | 204 +++- .../operations/mocks.ts | 2 +- .../operations/operations.test.ts | 8 + .../operations/operations.ts | 71 +- .../indexpattern_datasource/to_expression.ts | 43 +- .../public/indexpattern_datasource/utils.ts | 14 +- 45 files changed, 3634 insertions(+), 381 deletions(-) create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.test.tsx create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/generate.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/index.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/parse.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/types.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/util.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index e741b9ee243db..baa9d45a431ea 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -29,12 +29,7 @@ import { ReactWrapper } from 'enzyme'; import { DragDrop, ChildDragDropProvider } from '../../../drag_drop'; import { fromExpression } from '@kbn/interpreter/common'; import { coreMock } from 'src/core/public/mocks'; -import { - DataPublicPluginStart, - esFilters, - IFieldType, - IIndexPattern, -} from '../../../../../../../src/plugins/data/public'; +import { esFilters, IFieldType, IIndexPattern } from '../../../../../../../src/plugins/data/public'; import { UiActionsStart } from '../../../../../../../src/plugins/ui_actions/public'; import { uiActionsPluginMock } from '../../../../../../../src/plugins/ui_actions/public/mocks'; import { TriggerContract } from '../../../../../../../src/plugins/ui_actions/public/triggers'; @@ -55,6 +50,25 @@ function createCoreStartWithPermissions(newCapabilities = defaultPermissions) { return core; } +function getDefaultProps() { + return { + activeDatasourceId: 'mock', + datasourceStates: {}, + datasourceMap: {}, + framePublicAPI: createMockFramePublicAPI(), + activeVisualizationId: 'vis', + visualizationState: {}, + dispatch: () => {}, + ExpressionRenderer: createExpressionRendererMock(), + core: createCoreStartWithPermissions(), + plugins: { + uiActions: uiActionsPluginMock.createStartContract(), + data: dataPluginMock.createStartContract(), + }, + getSuggestionForField: () => undefined, + }; +} + describe('workspace_panel', () => { let mockVisualization: jest.Mocked; let mockVisualization2: jest.Mocked; @@ -62,21 +76,18 @@ describe('workspace_panel', () => { let expressionRendererMock: jest.Mock; let uiActionsMock: jest.Mocked; - let dataMock: jest.Mocked; let trigger: jest.Mocked; let instance: ReactWrapper; beforeEach(() => { + // These are used in specific tests to assert function calls trigger = ({ exec: jest.fn() } as unknown) as jest.Mocked; uiActionsMock = uiActionsPluginMock.createStartContract(); - dataMock = dataPluginMock.createStartContract(); uiActionsMock.getTrigger.mockReturnValue(trigger); mockVisualization = createMockVisualization(); mockVisualization2 = createMockVisualization(); - mockDatasource = createMockDatasource('a'); - expressionRendererMock = createExpressionRendererMock(); }); @@ -87,23 +98,14 @@ describe('workspace_panel', () => { it('should render an explanatory text if no visualization is active', () => { instance = mount( {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); - expect(instance.find('[data-test-subj="empty-workspace"]')).toHaveLength(2); expect(instance.find(expressionRendererMock)).toHaveLength(0); }); @@ -111,20 +113,10 @@ describe('workspace_panel', () => { it('should render an explanatory text if the visualization does not produce an expression', () => { instance = mount( null }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -135,20 +127,10 @@ describe('workspace_panel', () => { it('should render an explanatory text if the datasource does not produce an expression', () => { instance = mount( 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -166,7 +148,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -204,10 +180,11 @@ describe('workspace_panel', () => { }; mockDatasource.toExpression.mockReturnValue('datasource'); mockDatasource.getLayers.mockReturnValue(['first']); + const props = getDefaultProps(); instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} + plugins={{ ...props.plugins, uiActions: uiActionsMock }} /> ); @@ -251,7 +223,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} dispatch={dispatch} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -298,7 +265,7 @@ describe('workspace_panel', () => { instance = mount( { mock2: mockDatasource2, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -382,7 +343,7 @@ describe('workspace_panel', () => { await act(async () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); }); @@ -439,7 +394,7 @@ describe('workspace_panel', () => { await act(async () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); }); @@ -494,7 +443,7 @@ describe('workspace_panel', () => { }; instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -532,7 +474,7 @@ describe('workspace_panel', () => { instance = mount( { visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} // Use cannot navigate to the management page core={createCoreStartWithPermissions({ navLinks: { management: false }, management: { kibana: { indexPatterns: true } }, })} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -575,7 +512,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} // user can go to management, but indexPatterns management is not accessible core={createCoreStartWithPermissions({ navLinks: { management: true }, management: { kibana: { indexPatterns: false } }, })} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -621,7 +552,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -663,7 +587,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: mockVisualization, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -707,7 +624,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: mockVisualization, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -748,7 +658,7 @@ describe('workspace_panel', () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); @@ -787,7 +690,7 @@ describe('workspace_panel', () => { await act(async () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); }); @@ -832,7 +729,7 @@ describe('workspace_panel', () => { await act(async () => { instance = mount( { mock: mockDatasource, }} framePublicAPI={framePublicAPI} - activeVisualizationId="vis" visualizationMap={{ vis: { ...mockVisualization, toExpression: () => 'vis' }, }} - visualizationState={{}} - dispatch={() => {}} ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} - getSuggestionForField={() => undefined} /> ); }); @@ -900,7 +791,7 @@ describe('workspace_panel', () => { dropTargetsByOrder={undefined} > { mock: mockDatasource, }} framePublicAPI={frame} - activeVisualizationId={'vis'} visualizationMap={{ vis: mockVisualization, vis2: mockVisualization2, }} - visualizationState={{}} dispatch={mockDispatch} - ExpressionRenderer={expressionRendererMock} - core={createCoreStartWithPermissions()} - plugins={{ uiActions: uiActionsMock, data: dataMock }} getSuggestionForField={mockGetSuggestionForField} /> diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index b74e97df4a895..d84d418ff231c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -151,6 +151,7 @@ export function DimensionEditor(props: DimensionEditorProps) { const possibleOperations = useMemo(() => { return Object.values(operationDefinitionMap) + .filter(({ hidden }) => !hidden) .sort((op1, op2) => { return op1.displayName.localeCompare(op2.displayName); }) @@ -242,6 +243,7 @@ export function DimensionEditor(props: DimensionEditorProps) { onClick() { if ( operationDefinitionMap[operationType].input === 'none' || + operationDefinitionMap[operationType].input === 'managedReference' || operationDefinitionMap[operationType].input === 'fullReference' ) { // Clear invalid state because we are reseting to a valid column @@ -319,7 +321,8 @@ export function DimensionEditor(props: DimensionEditorProps) { // Need to workout early on the error to decide whether to show this or an help text const fieldErrorMessage = - (selectedOperationDefinition?.input !== 'fullReference' || + ((selectedOperationDefinition?.input !== 'fullReference' && + selectedOperationDefinition?.input !== 'managedReference') || (incompleteOperation && operationDefinitionMap[incompleteOperation].input === 'field')) && getErrorMessage( selectedColumn, @@ -447,6 +450,7 @@ export function DimensionEditor(props: DimensionEditorProps) { currentColumn={state.layers[layerId].columns[columnId]} dateRange={dateRange} indexPattern={currentIndexPattern} + operationDefinitionMap={operationDefinitionMap} {...services} /> @@ -586,7 +590,7 @@ export function DimensionEditor(props: DimensionEditorProps) { function getErrorMessage( selectedColumn: IndexPatternColumn | undefined, incompleteOperation: boolean, - input: 'none' | 'field' | 'fullReference' | undefined, + input: 'none' | 'field' | 'fullReference' | 'managedReference' | undefined, fieldInvalid: boolean ) { if (selectedColumn && incompleteOperation) { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx index f80b12aecabde..333caf259fe2f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.test.tsx @@ -25,14 +25,13 @@ import { import { mountWithIntl as mount, shallowWithIntl as shallow } from '@kbn/test/jest'; import { IUiSettingsClient, SavedObjectsClientContract, HttpSetup, CoreSetup } from 'kibana/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; +import { generateId } from '../../id_generator'; import { IndexPatternPrivateState } from '../types'; import { IndexPatternColumn, replaceColumn } from '../operations'; import { documentField } from '../document_field'; import { OperationMetadata } from '../../types'; import { DateHistogramIndexPatternColumn } from '../operations/definitions/date_histogram'; import { getFieldByNameFactory } from '../pure_helpers'; -import { DimensionEditor } from './dimension_editor'; -import { AdvancedOptions } from './advanced_options'; import { Filtering } from './filtering'; jest.mock('../loader'); @@ -48,6 +47,7 @@ jest.mock('lodash', () => { debounce: (fn: unknown) => fn, }; }); +jest.mock('../../id_generator'); const fields = [ { @@ -388,6 +388,15 @@ describe('IndexPatternDimensionEditorPanel', () => { ); }); + it('should not display hidden operation types', () => { + wrapper = mount(); + + const items: EuiListGroupItemProps[] = wrapper.find(EuiListGroup).prop('listItems') || []; + + expect(items.find(({ id }) => id === 'math')).toBeUndefined(); + expect(items.find(({ id }) => id === 'formula')).toBeUndefined(); + }); + it('should indicate that reference-based operations are not compatible when they are incomplete', () => { wrapper = mount( { } it('should not show custom options if time scaling is not available', () => { - wrapper = shallow( + wrapper = mount( { })} /> ); + wrapper + .find('[data-test-subj="indexPattern-advanced-popover"]') + .hostNodes() + .simulate('click'); expect( - wrapper - .find(DimensionEditor) - .dive() - .find(AdvancedOptions) - .dive() - .find('[data-test-subj="indexPattern-time-scaling-enable"]') + wrapper.find('[data-test-subj="indexPattern-time-scaling-enable"]').hostNodes() ).toHaveLength(0); }); it('should show custom options if time scaling is available', () => { - wrapper = shallow(); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-advanced-popover"]') + .hostNodes() + .simulate('click'); expect( - wrapper - .find(DimensionEditor) - .dive() - .find(AdvancedOptions) - .dive() - .find('[data-test-subj="indexPattern-time-scaling-enable"]') + wrapper.find('[data-test-subj="indexPattern-time-scaling-enable"]').hostNodes() ).toHaveLength(1); }); @@ -1114,14 +1121,15 @@ describe('IndexPatternDimensionEditorPanel', () => { it('should allow to set time scaling initially', () => { const props = getProps({}); - wrapper = shallow(); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-advanced-popover"]') + .hostNodes() + .simulate('click'); wrapper - .find(DimensionEditor) - .dive() - .find(AdvancedOptions) - .dive() .find('[data-test-subj="indexPattern-time-scaling-enable"]') - .prop('onClick')!({} as MouseEvent); + .hostNodes() + .simulate('click'); expect(props.setState).toHaveBeenCalledWith( { ...props.state, @@ -1205,6 +1213,10 @@ describe('IndexPatternDimensionEditorPanel', () => { it('should allow to change time scaling', () => { const props = getProps({ timeScale: 's', label: 'Count of records per second' }); wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-advanced-popover"]') + .hostNodes() + .simulate('click'); wrapper .find('[data-test-subj="indexPattern-time-scaling-unit"]') .find(EuiSelect) @@ -1321,33 +1333,32 @@ describe('IndexPatternDimensionEditorPanel', () => { } it('should not show custom options if time scaling is not available', () => { - wrapper = shallow( + wrapper = mount( ); expect( - wrapper - .find(DimensionEditor) - .dive() - .find(AdvancedOptions) - .dive() - .find('[data-test-subj="indexPattern-filter-by-enable"]') + wrapper.find('[data-test-subj="indexPattern-advanced-popover"]').hostNodes() ).toHaveLength(0); }); it('should show custom options if filtering is available', () => { - wrapper = shallow(); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-advanced-popover"]') + .hostNodes() + .simulate('click'); expect( - wrapper - .find(DimensionEditor) - .dive() - .find(AdvancedOptions) - .dive() - .find('[data-test-subj="indexPattern-filter-by-enable"]') + wrapper.find('[data-test-subj="indexPattern-filter-by-enable"]').hostNodes() ).toHaveLength(1); }); @@ -1364,14 +1375,15 @@ describe('IndexPatternDimensionEditorPanel', () => { it('should allow to set filter initially', () => { const props = getProps({}); - wrapper = shallow(); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-advanced-popover"]') + .hostNodes() + .simulate('click'); wrapper - .find(DimensionEditor) - .dive() - .find(AdvancedOptions) - .dive() .find('[data-test-subj="indexPattern-filter-by-enable"]') - .prop('onClick')!({} as MouseEvent); + .hostNodes() + .simulate('click'); expect(props.setState).toHaveBeenCalledWith( { ...props.state, @@ -1934,6 +1946,7 @@ describe('IndexPatternDimensionEditorPanel', () => { }); it('should hide the top level field selector when switching from non-reference to reference', () => { + (generateId as jest.Mock).mockReturnValue(`second`); wrapper = mount(); expect(wrapper.find('ReferenceEditor')).toHaveLength(0); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts index 9410843c0811a..a77a980257c88 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts @@ -904,7 +904,7 @@ describe('IndexPatternDimensionEditorPanel', () => { layers: { first: { ...testState.layers.first, - columnOrder: ['ref1', 'col1', 'ref1Copy', 'col1Copy'], + columnOrder: ['col1', 'ref1', 'ref1Copy', 'col1Copy'], columns: { ref1: testState.layers.first.columns.ref1, col1: testState.layers.first.columns.col1, @@ -974,7 +974,7 @@ describe('IndexPatternDimensionEditorPanel', () => { layers: { first: { ...testState.layers.first, - columnOrder: ['ref1', 'ref2', 'col1', 'ref1Copy', 'ref2Copy', 'col1Copy'], + columnOrder: ['col1', 'ref1', 'ref2', 'ref1Copy', 'col1Copy', 'ref2Copy'], columns: { ref1: testState.layers.first.columns.ref1, ref2: testState.layers.first.columns.ref2, @@ -1061,8 +1061,8 @@ describe('IndexPatternDimensionEditorPanel', () => { 'col1', 'innerRef1Copy', 'ref1Copy', - 'ref2Copy', 'col1Copy', + 'ref2Copy', ], columns: { innerRef1: testState.layers.first.columns.innerRef1, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts index f65557d4ed6a9..e09c3e904f535 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts @@ -114,7 +114,7 @@ function onMoveCompatible( const modifiedLayer = copyColumn({ layer, - columnId, + targetId: columnId, sourceColumnId: droppedItem.columnId, sourceColumn, shouldDeleteSource, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx index f17adf9be39f3..645b6bfe70a97 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/reference_editor.test.tsx @@ -304,6 +304,31 @@ describe('reference editor', () => { ); }); + it('should not display hidden sub-function types', () => { + // This may happen for saved objects after changing the type of a field + wrapper = mount( + true, + }} + /> + ); + + const subFunctionSelect = wrapper + .find('[data-test-subj="indexPattern-reference-function"]') + .first(); + + expect(subFunctionSelect.prop('isInvalid')).toEqual(true); + expect(subFunctionSelect.prop('selectedOptions')).not.toEqual( + expect.arrayContaining([expect.objectContaining({ value: 'math' })]) + ); + expect(subFunctionSelect.prop('selectedOptions')).not.toEqual( + expect.arrayContaining([expect.objectContaining({ value: 'formula' })]) + ); + }); + it('should hide the function selector when using a field-only selection style', () => { wrapper = mount( void; @@ -92,6 +92,7 @@ export function ReferenceEditor(props: ReferenceEditorProps) { const operationByField: Partial>> = {}; const fieldByOperation: Partial>> = {}; Object.values(operationDefinitionMap) + .filter(({ hidden }) => !hidden) .sort((op1, op2) => { return op1.displayName.localeCompare(op2.displayName); }) @@ -197,6 +198,10 @@ export function ReferenceEditor(props: ReferenceEditorProps) { return; } + if (selectionStyle === 'hidden') { + return null; + } + const selectedOption = incompleteOperation ? [functionOptions.find(({ value }) => value === incompleteOperation)!] : column @@ -340,6 +345,7 @@ export function ReferenceEditor(props: ReferenceEditorProps) { columnId={columnId} indexPattern={currentIndexPattern} dateRange={dateRange} + operationDefinitionMap={operationDefinitionMap} {...services} /> diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts index b1ff7b36b47a3..c0a502df14234 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts @@ -15,7 +15,7 @@ import { Ast } from '@kbn/interpreter/common'; import { chartPluginMock } from '../../../../../src/plugins/charts/public/mocks'; import { getFieldByNameFactory } from './pure_helpers'; import { operationDefinitionMap, getErrorMessages } from './operations'; -import { createMockedReferenceOperation } from './operations/mocks'; +import { createMockedFullReference } from './operations/mocks'; import { indexPatternFieldEditorPluginMock } from 'src/plugins/index_pattern_field_editor/public/mocks'; import { uiActionsPluginMock } from '../../../../../src/plugins/ui_actions/public/mocks'; @@ -289,6 +289,30 @@ describe('IndexPattern Data Source', () => { expect(indexPatternDatasource.toExpression(state, 'first')).toEqual(null); }); + it('should generate an empty expression when there is a formula without aggs', async () => { + const queryBaseState: IndexPatternBaseState = { + currentIndexPatternId: '1', + layers: { + first: { + indexPatternId: '1', + columnOrder: ['col1'], + columns: { + col1: { + label: 'Formula', + dataType: 'number', + isBucketed: false, + operationType: 'formula', + references: [], + params: {}, + }, + }, + }, + }, + }; + const state = enrichBaseState(queryBaseState); + expect(indexPatternDatasource.toExpression(state, 'first')).toEqual(null); + }); + it('should generate an expression for an aggregated query', async () => { const queryBaseState: IndexPatternBaseState = { currentIndexPatternId: '1', @@ -817,7 +841,7 @@ describe('IndexPattern Data Source', () => { describe('references', () => { beforeEach(() => { // @ts-expect-error we are inserting an invalid type - operationDefinitionMap.testReference = createMockedReferenceOperation(); + operationDefinitionMap.testReference = createMockedFullReference(); // @ts-expect-error we are inserting an invalid type operationDefinitionMap.testReference.toExpression.mockReturnValue(['mock']); @@ -900,6 +924,91 @@ describe('IndexPattern Data Source', () => { }), }); }); + + it('should topologically sort references', () => { + // This is a real example of count() + count() + const queryBaseState: IndexPatternBaseState = { + currentIndexPatternId: '1', + layers: { + first: { + indexPatternId: '1', + columnOrder: ['date', 'count', 'formula', 'countX0', 'math'], + columns: { + count: { + label: 'count', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: 'Records', + customLabel: true, + }, + date: { + label: 'timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: 'timestamp', + isBucketed: true, + scale: 'interval', + params: { + interval: 'auto', + }, + }, + formula: { + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + formula: 'count() + count()', + isFormulaBroken: false, + }, + references: ['math'], + }, + countX0: { + label: 'countX0', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: 'Records', + customLabel: true, + }, + math: { + label: 'math', + dataType: 'number', + operationType: 'math', + isBucketed: false, + scale: 'ratio', + params: { + tinymathAst: { + type: 'function', + name: 'add', + // @ts-expect-error String args are not valid tinymath, but signals something unique to Lens + args: ['countX0', 'count'], + location: { + min: 0, + max: 17, + }, + text: 'count() + count()', + }, + }, + references: ['countX0', 'count'], + customLabel: true, + }, + }, + }, + }, + }; + + const state = enrichBaseState(queryBaseState); + + const ast = indexPatternDatasource.toExpression(state, 'first') as Ast; + const chainLength = ast.chain.length; + expect(ast.chain[chainLength - 2].arguments.name).toEqual(['math']); + expect(ast.chain[chainLength - 1].arguments.id).toEqual(['formula']); + }); }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts index 6ac208913af2e..40d7e3ef94ad6 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts @@ -12,6 +12,7 @@ const actualMocks = jest.requireActual('../mocks'); jest.spyOn(actualOperations.operationDefinitionMap.date_histogram, 'paramEditor'); jest.spyOn(actualOperations.operationDefinitionMap.terms, 'onOtherColumnChanged'); +jest.spyOn(actualHelpers, 'copyColumn'); jest.spyOn(actualHelpers, 'insertOrReplaceColumn'); jest.spyOn(actualHelpers, 'insertNewColumn'); jest.spyOn(actualHelpers, 'replaceColumn'); @@ -30,6 +31,7 @@ export const { } = actualOperations; export const { + copyColumn, insertOrReplaceColumn, insertNewColumn, replaceColumn, @@ -50,4 +52,4 @@ export const { export const { adjustTimeScaleLabelSuffix, DEFAULT_TIME_SCALE } = actualTimeScaleUtils; -export const { createMockedReferenceOperation } = actualMocks; +export const { createMockedFullReference } = actualMocks; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx index c57f70ba1b58b..fc9504f003198 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx @@ -17,7 +17,7 @@ import { } from './utils'; import { DEFAULT_TIME_SCALE } from '../../time_scale_utils'; import { OperationDefinition } from '..'; -import { getFormatFromPreviousColumn } from '../helpers'; +import { getFormatFromPreviousColumn, getFilter } from '../helpers'; const ofName = buildLabelFunction((name?: string) => { return i18n.translate('xpack.lens.indexPattern.CounterRateOf', { @@ -50,7 +50,7 @@ export const counterRateOperation: OperationDefinition< selectionStyle: 'field', requiredReferences: [ { - input: ['field'], + input: ['field', 'managedReference'], specificOperations: ['max'], validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, }, @@ -76,7 +76,7 @@ export const counterRateOperation: OperationDefinition< toExpression: (layer, columnId) => { return dateBasedOperationToExpression(layer, columnId, 'lens_counter_rate'); }, - buildColumn: ({ referenceIds, previousColumn, layer, indexPattern }) => { + buildColumn: ({ referenceIds, previousColumn, layer, indexPattern }, columnParams) => { const metric = layer.columns[referenceIds[0]]; const timeScale = previousColumn?.timeScale || DEFAULT_TIME_SCALE; return { @@ -92,7 +92,7 @@ export const counterRateOperation: OperationDefinition< scale: 'ratio', references: referenceIds, timeScale, - filter: previousColumn?.filter, + filter: getFilter(previousColumn, columnParams), params: getFormatFromPreviousColumn(previousColumn), }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx index 7cec1fa0d4bbc..2adb9a1376f60 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx @@ -15,7 +15,7 @@ import { hasDateField, } from './utils'; import { OperationDefinition } from '..'; -import { getFormatFromPreviousColumn } from '../helpers'; +import { getFormatFromPreviousColumn, getFilter } from '../helpers'; const ofName = (name?: string) => { return i18n.translate('xpack.lens.indexPattern.cumulativeSumOf', { @@ -48,7 +48,7 @@ export const cumulativeSumOperation: OperationDefinition< selectionStyle: 'field', requiredReferences: [ { - input: ['field'], + input: ['field', 'managedReference'], specificOperations: ['count', 'sum'], validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, }, @@ -73,7 +73,7 @@ export const cumulativeSumOperation: OperationDefinition< toExpression: (layer, columnId) => { return dateBasedOperationToExpression(layer, columnId, 'cumulative_sum'); }, - buildColumn: ({ referenceIds, previousColumn, layer, indexPattern }) => { + buildColumn: ({ referenceIds, previousColumn, layer, indexPattern }, columnParams) => { const ref = layer.columns[referenceIds[0]]; return { label: ofName( @@ -85,7 +85,7 @@ export const cumulativeSumOperation: OperationDefinition< operationType: 'cumulative_sum', isBucketed: false, scale: 'ratio', - filter: previousColumn?.filter, + filter: getFilter(previousColumn, columnParams), references: referenceIds, params: getFormatFromPreviousColumn(previousColumn), }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/differences.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/differences.tsx index bef3fbc2e48ae..06555a9b41c2f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/differences.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/differences.tsx @@ -17,7 +17,7 @@ import { } from './utils'; import { adjustTimeScaleOnOtherColumnChange } from '../../time_scale_utils'; import { OperationDefinition } from '..'; -import { getFormatFromPreviousColumn } from '../helpers'; +import { getFormatFromPreviousColumn, getFilter } from '../helpers'; const OPERATION_NAME = 'differences'; @@ -52,7 +52,7 @@ export const derivativeOperation: OperationDefinition< selectionStyle: 'full', requiredReferences: [ { - input: ['field'], + input: ['field', 'managedReference'], validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, }, ], @@ -71,7 +71,7 @@ export const derivativeOperation: OperationDefinition< toExpression: (layer, columnId) => { return dateBasedOperationToExpression(layer, columnId, 'derivative'); }, - buildColumn: ({ referenceIds, previousColumn, layer }) => { + buildColumn: ({ referenceIds, previousColumn, layer }, columnParams) => { const ref = layer.columns[referenceIds[0]]; return { label: ofName(ref?.label, previousColumn?.timeScale), @@ -81,7 +81,7 @@ export const derivativeOperation: OperationDefinition< scale: 'ratio', references: referenceIds, timeScale: previousColumn?.timeScale, - filter: previousColumn?.filter, + filter: getFilter(previousColumn, columnParams), params: getFormatFromPreviousColumn(previousColumn), }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx index 46cc64c2bc518..8d18a2752fd7e 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx @@ -19,7 +19,12 @@ import { hasDateField, } from './utils'; import { updateColumnParam } from '../../layer_helpers'; -import { getFormatFromPreviousColumn, isValidNumber, useDebounceWithOptions } from '../helpers'; +import { + getFormatFromPreviousColumn, + isValidNumber, + useDebounceWithOptions, + getFilter, +} from '../helpers'; import { adjustTimeScaleOnOtherColumnChange } from '../../time_scale_utils'; import { HelpPopover, HelpPopoverButton } from '../../../help_popover'; import type { OperationDefinition, ParamEditorProps } from '..'; @@ -37,6 +42,8 @@ const ofName = buildLabelFunction((name?: string) => { }); }); +const WINDOW_DEFAULT_VALUE = 5; + export type MovingAverageIndexPatternColumn = FormattedIndexPatternColumn & ReferenceBasedIndexPatternColumn & { operationType: 'moving_average'; @@ -58,10 +65,11 @@ export const movingAverageOperation: OperationDefinition< selectionStyle: 'full', requiredReferences: [ { - input: ['field'], + input: ['field', 'managedReference'], validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, }, ], + operationParams: [{ name: 'window', type: 'number', required: true }], getPossibleOperation: (indexPattern) => { if (hasDateField(indexPattern)) { return { @@ -79,8 +87,12 @@ export const movingAverageOperation: OperationDefinition< window: [(layer.columns[columnId] as MovingAverageIndexPatternColumn).params.window], }); }, - buildColumn: ({ referenceIds, previousColumn, layer }) => { + buildColumn: ( + { referenceIds, previousColumn, layer }, + columnParams = { window: WINDOW_DEFAULT_VALUE } + ) => { const metric = layer.columns[referenceIds[0]]; + const { window = WINDOW_DEFAULT_VALUE } = columnParams; return { label: ofName(metric?.label, previousColumn?.timeScale), dataType: 'number', @@ -89,9 +101,9 @@ export const movingAverageOperation: OperationDefinition< scale: 'ratio', references: referenceIds, timeScale: previousColumn?.timeScale, - filter: previousColumn?.filter, + filter: getFilter(previousColumn, columnParams), params: { - window: 5, + window, ...getFormatFromPreviousColumn(previousColumn), }, }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.test.ts index 4c1101d4c8a79..7a6f96d705b0c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.test.ts @@ -7,7 +7,7 @@ import { checkReferences } from './utils'; import { operationDefinitionMap } from '..'; -import { createMockedReferenceOperation } from '../../mocks'; +import { createMockedFullReference } from '../../mocks'; // Mock prevents issue with circular loading jest.mock('..'); @@ -15,7 +15,7 @@ jest.mock('..'); describe('utils', () => { beforeEach(() => { // @ts-expect-error test-only operation type - operationDefinitionMap.testReference = createMockedReferenceOperation(); + operationDefinitionMap.testReference = createMockedFullReference(); }); describe('checkReferences', () => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx index fa1691ba9a78e..e77357a6f441a 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx @@ -11,7 +11,12 @@ import { buildExpressionFunction } from '../../../../../../../src/plugins/expres import { OperationDefinition } from './index'; import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types'; -import { getFormatFromPreviousColumn, getInvalidFieldMessage, getSafeName } from './helpers'; +import { + getFormatFromPreviousColumn, + getInvalidFieldMessage, + getSafeName, + getFilter, +} from './helpers'; const supportedTypes = new Set([ 'string', @@ -71,8 +76,13 @@ export const cardinalityOperation: OperationDefinition ofName(getSafeName(column.sourceField, indexPattern)), - buildColumn({ field, previousColumn }) { + buildColumn({ field, previousColumn }, columnParams) { return { label: ofName(field.displayName), dataType: 'number', @@ -80,7 +90,7 @@ export const cardinalityOperation: OperationDefinition adjustTimeScaleLabelSuffix(countLabel, undefined, column.timeScale), - buildColumn({ field, previousColumn }) { + buildColumn({ field, previousColumn }, columnParams) { return { label: adjustTimeScaleLabelSuffix(countLabel, undefined, previousColumn?.timeScale), dataType: 'number', @@ -61,7 +61,7 @@ export const countOperation: OperationDefinition { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index bd7a270fd7ad8..affb84484c820 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -58,6 +58,7 @@ export const dateHistogramOperation: OperationDefinition< }), input: 'field', priority: 5, // Highest priority level used + operationParams: [{ name: 'interval', type: 'string', required: false }], getErrorMessage: (layer, columnId, indexPattern) => getInvalidFieldMessage(layer.columns[columnId] as FieldBasedIndexPatternColumn, indexPattern), getHelpMessage: (props) => , @@ -75,8 +76,8 @@ export const dateHistogramOperation: OperationDefinition< } }, getDefaultLabel: (column, indexPattern) => getSafeName(column.sourceField, indexPattern), - buildColumn({ field }) { - let interval = autoInterval; + buildColumn({ field }, columnParams) { + let interval = columnParams?.interval ?? autoInterval; let timeZone: string | undefined; if (field.aggregationRestrictions && field.aggregationRestrictions.date_histogram) { interval = restrictedInterval(field.aggregationRestrictions) as string; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx index ae097ada0f3b7..46fddd9b1ffbf 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filters.test.tsx @@ -27,6 +27,7 @@ const defaultProps = { data: dataPluginMock.createStartContract(), http: {} as HttpSetup, indexPattern: createMockedIndexPattern(), + operationDefinitionMap: {}, }; // mocking random id generator function diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.test.tsx new file mode 100644 index 0000000000000..4a511e14d59e0 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.test.tsx @@ -0,0 +1,987 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createMockedIndexPattern } from '../../../mocks'; +import { formulaOperation, GenericOperationDefinition, IndexPatternColumn } from '../index'; +import { FormulaIndexPatternColumn } from './formula'; +import { regenerateLayerFromAst } from './parse'; +import type { IndexPattern, IndexPatternField, IndexPatternLayer } from '../../../types'; +import { tinymathFunctions } from './util'; + +jest.mock('../../layer_helpers', () => { + return { + getColumnOrder: ({ columns }: { columns: Record }) => + Object.keys(columns), + }; +}); + +const operationDefinitionMap: Record = { + average: ({ + input: 'field', + buildColumn: ({ field }: { field: IndexPatternField }) => ({ + label: 'avg', + dataType: 'number', + operationType: 'average', + sourceField: field.name, + isBucketed: false, + scale: 'ratio', + timeScale: false, + }), + } as unknown) as GenericOperationDefinition, + terms: { input: 'field' } as GenericOperationDefinition, + sum: { input: 'field' } as GenericOperationDefinition, + last_value: { input: 'field' } as GenericOperationDefinition, + max: { input: 'field' } as GenericOperationDefinition, + count: ({ + input: 'field', + filterable: true, + buildColumn: ({ field }: { field: IndexPatternField }) => ({ + label: 'avg', + dataType: 'number', + operationType: 'count', + sourceField: field.name, + isBucketed: false, + scale: 'ratio', + timeScale: false, + }), + } as unknown) as GenericOperationDefinition, + derivative: { input: 'fullReference' } as GenericOperationDefinition, + moving_average: ({ + input: 'fullReference', + operationParams: [{ name: 'window', type: 'number', required: true }], + buildColumn: ({ references }: { references: string[] }) => ({ + label: 'moving_average', + dataType: 'number', + operationType: 'moving_average', + isBucketed: false, + scale: 'ratio', + timeScale: false, + params: { window: 5 }, + references, + }), + getErrorMessage: () => ['mock error'], + } as unknown) as GenericOperationDefinition, + cumulative_sum: { input: 'fullReference' } as GenericOperationDefinition, +}; + +describe('formula', () => { + let layer: IndexPatternLayer; + + beforeEach(() => { + layer = { + indexPatternId: '1', + columnOrder: ['col1'], + columns: { + col1: { + label: 'Top value of category', + dataType: 'string', + isBucketed: true, + operationType: 'terms', + params: { + orderBy: { type: 'alphabetical' }, + size: 3, + orderDirection: 'asc', + }, + sourceField: 'category', + }, + }, + }; + }); + + describe('buildColumn', () => { + let indexPattern: IndexPattern; + + beforeEach(() => { + layer = { + indexPatternId: '1', + columnOrder: ['col1'], + columns: { + col1: { + label: 'Average', + dataType: 'number', + operationType: 'average', + isBucketed: false, + scale: 'ratio', + sourceField: 'bytes', + }, + }, + }; + indexPattern = createMockedIndexPattern(); + }); + + it('should start with an empty formula if no previous column is detected', () => { + expect( + formulaOperation.buildColumn({ + layer: { + indexPatternId: '1', + columnOrder: [], + columns: {}, + }, + indexPattern, + }) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: {}, + references: [], + }); + }); + + it('should move into Formula previous operation', () => { + expect( + formulaOperation.buildColumn({ + previousColumn: layer.columns.col1, + layer, + indexPattern, + }) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { isFormulaBroken: false, formula: 'average(bytes)' }, + references: [], + }); + }); + + it('it should move over explicit format param if set', () => { + expect( + formulaOperation.buildColumn({ + previousColumn: { + ...layer.columns.col1, + params: { + format: { + id: 'number', + params: { + decimals: 2, + }, + }, + }, + } as IndexPatternColumn, + layer, + indexPattern, + }) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + isFormulaBroken: false, + formula: 'average(bytes)', + format: { + id: 'number', + params: { + decimals: 2, + }, + }, + }, + references: [], + }); + }); + + it('it should move over kql arguments if set', () => { + expect( + formulaOperation.buildColumn({ + previousColumn: { + ...layer.columns.col1, + filter: { + language: 'kuery', + // Need to test with multiple replaces due to string replace + query: `category.keyword: "Men's Clothing" or category.keyword: "Men's Shoes"`, + }, + } as IndexPatternColumn, + layer, + indexPattern, + }) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + isFormulaBroken: false, + formula: `average(bytes, kql='category.keyword: "Men\\'s Clothing" or category.keyword: "Men\\'s Shoes"')`, + }, + references: [], + }); + }); + + it('it should move over lucene arguments without', () => { + expect( + formulaOperation.buildColumn({ + previousColumn: { + ...layer.columns.col1, + operationType: 'count', + sourceField: 'Records', + filter: { + language: 'lucene', + query: `*`, + }, + } as IndexPatternColumn, + layer, + indexPattern, + }) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + isFormulaBroken: false, + formula: `count(lucene='*')`, + }, + references: [], + }); + }); + + it('should move over previous operation parameter if set - only numeric', () => { + expect( + formulaOperation.buildColumn( + { + previousColumn: { + label: 'Moving Average', + dataType: 'number', + operationType: 'moving_average', + isBucketed: false, + scale: 'ratio', + references: ['col2'], + timeScale: 'd', + params: { window: 3 }, + }, + layer: { + indexPatternId: '1', + columnOrder: [], + columns: { + col1: { + label: 'Moving Average', + dataType: 'number', + operationType: 'moving_average', + isBucketed: false, + scale: 'ratio', + references: ['col2'], + timeScale: 'd', + params: { window: 3 }, + }, + col2: { + dataType: 'number', + isBucketed: false, + label: 'col1X0', + operationType: 'average', + scale: 'ratio', + sourceField: 'bytes', + timeScale: 'd', + }, + }, + }, + indexPattern, + }, + {}, + operationDefinitionMap + ) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { + isFormulaBroken: false, + formula: 'moving_average(average(bytes), window=3)', + }, + references: [], + }); + }); + + it('should not move previous column configuration if not numeric', () => { + expect( + formulaOperation.buildColumn( + { + previousColumn: { + label: 'Top value of category', + dataType: 'string', + isBucketed: true, + operationType: 'terms', + params: { + orderBy: { type: 'alphabetical' }, + size: 3, + orderDirection: 'asc', + }, + sourceField: 'category', + }, + layer: { + indexPatternId: '1', + columnOrder: [], + columns: { + col1: { + label: 'Top value of category', + dataType: 'string', + isBucketed: true, + operationType: 'terms', + params: { + orderBy: { type: 'alphabetical' }, + size: 3, + orderDirection: 'asc', + }, + sourceField: 'category', + }, + }, + }, + indexPattern, + }, + {}, + operationDefinitionMap + ) + ).toEqual({ + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: {}, + references: [], + }); + }); + }); + + describe('regenerateLayerFromAst()', () => { + let indexPattern: IndexPattern; + let currentColumn: FormulaIndexPatternColumn; + + function testIsBrokenFormula(formula: string) { + expect( + regenerateLayerFromAst( + formula, + layer, + 'col1', + currentColumn, + indexPattern, + operationDefinitionMap + ).newLayer + ).toEqual({ + ...layer, + columns: { + ...layer.columns, + col1: { + ...currentColumn, + params: { + ...currentColumn.params, + formula, + isFormulaBroken: true, + }, + }, + }, + }); + } + + beforeEach(() => { + indexPattern = createMockedIndexPattern(); + currentColumn = { + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { formula: '', isFormulaBroken: false }, + references: [], + }; + }); + + it('should mutate the layer with new columns for valid formula expressions', () => { + expect( + regenerateLayerFromAst( + 'average(bytes)', + layer, + 'col1', + currentColumn, + indexPattern, + operationDefinitionMap + ).newLayer + ).toEqual({ + ...layer, + columnOrder: ['col1X0', 'col1X1', 'col1'], + columns: { + ...layer.columns, + col1: { + ...currentColumn, + references: ['col1X1'], + params: { + ...currentColumn.params, + formula: 'average(bytes)', + isFormulaBroken: false, + }, + }, + col1X0: { + customLabel: true, + dataType: 'number', + isBucketed: false, + label: 'col1X0', + operationType: 'average', + scale: 'ratio', + sourceField: 'bytes', + timeScale: false, + }, + col1X1: { + customLabel: true, + dataType: 'number', + isBucketed: false, + label: 'col1X1', + operationType: 'math', + params: { + tinymathAst: 'col1X0', + }, + references: ['col1X0'], + scale: 'ratio', + }, + }, + }); + }); + + it('returns no change but error if the formula cannot be parsed', () => { + const formulas = [ + '+', + 'average((', + 'average((bytes)', + 'average(bytes) +', + 'average(""', + 'moving_average(average(bytes), window=)', + 'average(bytes) + moving_average(average(bytes), window=)', + ]; + for (const formula of formulas) { + testIsBrokenFormula(formula); + } + }); + + it('returns no change but error if field is used with no Lens wrapping operation', () => { + testIsBrokenFormula('bytes'); + }); + + it('returns no change but error if at least one field in the formula is missing', () => { + const formulas = [ + 'noField', + 'average(noField)', + 'noField + 1', + 'derivative(average(noField))', + 'average(bytes) + derivative(average(noField))', + ]; + + for (const formula of formulas) { + testIsBrokenFormula(formula); + } + }); + + it('returns no change but error if at least one operation in the formula is missing', () => { + const formulas = [ + 'noFn()', + 'noFn(bytes)', + 'average(bytes) + noFn()', + 'derivative(noFn())', + 'noFn() + noFnTwo()', + 'noFn(noFnTwo())', + 'noFn() + noFnTwo() + 5', + 'average(bytes) + derivative(noFn())', + 'derivative(average(bytes) + noFn())', + ]; + + for (const formula of formulas) { + testIsBrokenFormula(formula); + } + }); + + it('returns no change but error if one operation has the wrong first argument', () => { + const formulas = [ + 'average(7)', + 'average()', + 'average(average(bytes))', + 'average(1 + 2)', + 'average(bytes + 5)', + 'average(bytes + bytes)', + 'derivative(7)', + 'derivative(bytes + 7)', + 'derivative(bytes + bytes)', + 'derivative(bytes + average(bytes))', + 'derivative(bytes + 7 + average(bytes))', + ]; + + for (const formula of formulas) { + testIsBrokenFormula(formula); + } + }); + + it('returns no change but error if an argument is passed to count operation', () => { + const formulas = ['count(7)', 'count("bytes")', 'count(bytes)']; + + for (const formula of formulas) { + testIsBrokenFormula(formula); + } + }); + + it('returns no change but error if a required parameter is not passed to the operation in formula', () => { + const formula = 'moving_average(average(bytes))'; + testIsBrokenFormula(formula); + }); + + it('returns no change but error if a required parameter passed with the wrong type in formula', () => { + const formula = 'moving_average(average(bytes), window="m")'; + testIsBrokenFormula(formula); + }); + + it('returns error if a required parameter is passed multiple time', () => { + const formula = 'moving_average(average(bytes), window=7, window=3)'; + testIsBrokenFormula(formula); + }); + + it('returns error if a math operation has less arguments than required', () => { + const formula = 'pow(5)'; + testIsBrokenFormula(formula); + }); + + it('returns error if a math operation has the wrong argument type', () => { + const formula = 'pow(bytes)'; + testIsBrokenFormula(formula); + }); + + it('returns the locations of each function', () => { + expect( + regenerateLayerFromAst( + 'moving_average(average(bytes), window=7) + count()', + layer, + 'col1', + currentColumn, + indexPattern, + operationDefinitionMap + ).locations + ).toEqual({ + col1X0: { min: 15, max: 29 }, + col1X2: { min: 0, max: 41 }, + col1X3: { min: 43, max: 50 }, + }); + }); + }); + + describe('getErrorMessage', () => { + let indexPattern: IndexPattern; + + function getNewLayerWithFormula(formula: string, isBroken = true): IndexPatternLayer { + return { + columns: { + col1: { + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { formula, isFormulaBroken: isBroken }, + references: [], + }, + }, + columnOrder: [], + indexPatternId: '', + }; + } + beforeEach(() => { + indexPattern = createMockedIndexPattern(); + }); + + it('returns undefined if count is passed without arguments', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('count()'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + }); + + it('returns undefined if count is passed with only a named argument', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(`count(kql='*')`, false), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + }); + + it('returns a syntax error if the kql argument does not parse', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(`count(kql='invalid: "')`, false), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([ + `Expected "(", "{", value, whitespace but """ found. +invalid: " +---------^`, + ]); + }); + + it('returns undefined if a field operation is passed with the correct first argument', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('average(bytes)'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + // note that field names can be wrapped in quotes as well + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('average("bytes")'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + }); + + it('returns undefined if a fullReference operation is passed with the correct first argument', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('derivative(average(bytes))'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('derivative(average("bytes"))'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + }); + + it('returns undefined if a fullReference operation is passed with the arguments', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('moving_average(average(bytes), window=7)'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + }); + + it('returns an error if field is used with no Lens wrapping operation', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('bytes'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([`The field bytes cannot be used without operation`]); + + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('bytes + bytes'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([`The operation add does not accept any field as argument`]); + }); + + it('returns an error if parsing a syntax invalid formula', () => { + const formulas = [ + '+', + 'average((', + 'average((bytes)', + 'average(bytes) +', + 'average(""', + 'moving_average(average(bytes), window=)', + ]; + + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([`The Formula ${formula} cannot be parsed`]); + } + }); + + it('returns an error if the field is missing', () => { + const formulas = [ + 'noField', + 'average(noField)', + 'noField + 1', + 'derivative(average(noField))', + ]; + + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(['Field noField not found']); + } + }); + + it('returns an error with plural form correctly handled', () => { + const formulas = ['noField + noField2', 'noField + 1 + noField2']; + + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(['Fields noField, noField2 not found']); + } + }); + + it('returns an error if an operation is unknown', () => { + const formulas = ['noFn()', 'noFn(bytes)', 'average(bytes) + noFn()', 'derivative(noFn())']; + + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(['Operation noFn not found']); + } + + const multipleFnFormulas = ['noFn() + noFnTwo()', 'noFn(noFnTwo())']; + + for (const formula of multipleFnFormulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(['Operations noFn, noFnTwo not found']); + } + }); + + it('returns an error if field operation in formula have the wrong first argument', () => { + const formulas = [ + 'average(7)', + 'average()', + 'average(average(bytes))', + 'average(1 + 2)', + 'average(bytes + 5)', + 'average(bytes + bytes)', + 'derivative(7)', + ]; + + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual( + // some formulas may contain more errors + expect.arrayContaining([ + expect.stringMatching( + `The first argument for ${formula.substring(0, formula.indexOf('('))}` + ), + ]) + ); + } + }); + + it('returns an error if an argument is passed to count() operation', () => { + const formulas = ['count(7)', 'count("bytes")', 'count(bytes)']; + + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(['The operation count does not accept any field as argument']); + } + }); + + it('returns an error if an operation with required parameters does not receive them', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('moving_average(average(bytes))'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([ + 'The operation moving_average in the Formula is missing the following parameters: window', + ]); + + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('moving_average(average(bytes), myparam=7)'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([ + 'The operation moving_average in the Formula is missing the following parameters: window', + ]); + }); + + it('returns an error if a parameter is passed to an operation with no parameters', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('average(bytes, myparam=7)'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(['The operation average does not accept any parameter']); + }); + + it('returns an error if the parameter passed to an operation is of the wrong type', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula('moving_average(average(bytes), window="m")'), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([ + 'The parameters for the operation moving_average in the Formula are of the wrong type: window', + ]); + }); + + it('returns no error for the demo formula example', () => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(` + moving_average( + cumulative_sum( + 7 * clamp(sum(bytes), 0, last_value(memory) + max(memory)) + ), window=10 + ) + `), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + }); + + it('returns no error if a math operation is passed to fullReference operations', () => { + const formulas = [ + 'derivative(7+1)', + 'derivative(7+average(bytes))', + 'moving_average(7+average(bytes), window=7)', + ]; + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + } + }); + + it('returns errors if math operations are used with no arguments', () => { + const formulas = [ + 'derivative(7+1)', + 'derivative(7+average(bytes))', + 'moving_average(7+average(bytes), window=7)', + ]; + for (const formula of formulas) { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual(undefined); + } + }); + + // there are 4 types of errors for math functions: + // * no argument passed + // * too many arguments passed + // * field passed + // * missing argument + const errors = [ + (operation: string) => + `The first argument for ${operation} should be a operation name. Found ()`, + (operation: string) => `The operation ${operation} has too many arguments`, + (operation: string) => `The operation ${operation} does not accept any field as argument`, + (operation: string) => { + const required = tinymathFunctions[operation].positionalArguments.filter( + ({ optional }) => !optional + ); + return `The operation ${operation} in the Formula is missing ${ + required.length - 1 + } arguments: ${required + .slice(1) + .map(({ name }) => name) + .join(', ')}`; + }, + ]; + // we'll try to map all of these here in this test + for (const fn of Object.keys(tinymathFunctions)) { + it(`returns an error for the math functions available: ${fn}`, () => { + const nArgs = tinymathFunctions[fn].positionalArguments; + // start with the first 3 types + const formulas = [ + `${fn}()`, + `${fn}(1, 2, 3, 4, 5)`, + // to simplify a bit, add the required number of args by the function filled with the field name + `${fn}(${Array(nArgs.length).fill('bytes').join(', ')})`, + ]; + // add the fourth check only for those functions with more than 1 arg required + const enableFourthCheck = nArgs.filter(({ optional }) => !optional).length > 1; + if (enableFourthCheck) { + formulas.push(`${fn}(1)`); + } + formulas.forEach((formula, i) => { + expect( + formulaOperation.getErrorMessage!( + getNewLayerWithFormula(formula), + 'col1', + indexPattern, + operationDefinitionMap + ) + ).toEqual([errors[i](fn)]); + }); + }); + } + }); +}); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx new file mode 100644 index 0000000000000..de7ecb4bc75da --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx @@ -0,0 +1,155 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import { OperationDefinition } from '../index'; +import { ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPattern } from '../../../types'; +import { runASTValidation, tryToParse } from './validation'; +import { regenerateLayerFromAst } from './parse'; +import { generateFormula } from './generate'; + +const defaultLabel = i18n.translate('xpack.lens.indexPattern.formulaLabel', { + defaultMessage: 'Formula', +}); + +export interface FormulaIndexPatternColumn extends ReferenceBasedIndexPatternColumn { + operationType: 'formula'; + params: { + formula?: string; + isFormulaBroken?: boolean; + // last value on numeric fields can be formatted + format?: { + id: string; + params?: { + decimals: number; + }; + }; + }; +} + +export const formulaOperation: OperationDefinition< + FormulaIndexPatternColumn, + 'managedReference' +> = { + type: 'formula', + displayName: defaultLabel, + getDefaultLabel: (column, indexPattern) => defaultLabel, + input: 'managedReference', + hidden: true, + getDisabledStatus(indexPattern: IndexPattern) { + return undefined; + }, + getErrorMessage(layer, columnId, indexPattern, operationDefinitionMap) { + const column = layer.columns[columnId] as FormulaIndexPatternColumn; + if (!column.params.formula || !operationDefinitionMap) { + return; + } + const { root, error } = tryToParse(column.params.formula); + if (error || !root) { + return [error!.message]; + } + + const errors = runASTValidation(root, layer, indexPattern, operationDefinitionMap); + return errors.length ? errors.map(({ message }) => message) : undefined; + }, + getPossibleOperation() { + return { + dataType: 'number', + isBucketed: false, + scale: 'ratio', + }; + }, + toExpression: (layer, columnId) => { + const currentColumn = layer.columns[columnId] as FormulaIndexPatternColumn; + const params = currentColumn.params; + // TODO: improve this logic + const useDisplayLabel = currentColumn.label !== defaultLabel; + const label = !params?.isFormulaBroken + ? useDisplayLabel + ? currentColumn.label + : params?.formula + : ''; + + return [ + { + type: 'function', + function: 'mapColumn', + arguments: { + id: [columnId], + name: [label || ''], + exp: [ + { + type: 'expression', + chain: [ + { + type: 'function', + function: 'math', + arguments: { + expression: [ + currentColumn.references.length ? `"${currentColumn.references[0]}"` : ``, + ], + }, + }, + ], + }, + ], + }, + }, + ]; + }, + buildColumn({ previousColumn, layer, indexPattern }, _, operationDefinitionMap) { + let previousFormula = ''; + if (previousColumn) { + previousFormula = generateFormula( + previousColumn, + layer, + previousFormula, + operationDefinitionMap + ); + } + // carry over the format settings from previous operation for seamless transfer + // NOTE: this works only for non-default formatters set in Lens + let prevFormat = {}; + if (previousColumn?.params && 'format' in previousColumn.params) { + prevFormat = { format: previousColumn.params.format }; + } + return { + label: 'Formula', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: previousFormula + ? { formula: previousFormula, isFormulaBroken: false, ...prevFormat } + : { ...prevFormat }, + references: [], + }; + }, + isTransferable: () => { + return true; + }, + createCopy(layer, sourceId, targetId, indexPattern, operationDefinitionMap) { + const currentColumn = layer.columns[sourceId] as FormulaIndexPatternColumn; + const tempLayer = { + ...layer, + columns: { + ...layer.columns, + [targetId]: { ...currentColumn }, + }, + }; + const { newLayer } = regenerateLayerFromAst( + currentColumn.params.formula ?? '', + tempLayer, + targetId, + currentColumn, + indexPattern, + operationDefinitionMap + ); + return newLayer; + }, +}; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/generate.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/generate.ts new file mode 100644 index 0000000000000..e44cd50ae9c41 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/generate.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isObject } from 'lodash'; +import { GenericOperationDefinition, IndexPatternColumn } from '../index'; +import { ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPatternLayer } from '../../../types'; + +// Just handle two levels for now +type OperationParams = Record>; + +export function getSafeFieldName(fieldName: string | undefined) { + // clean up the "Records" field for now + if (!fieldName || fieldName === 'Records') { + return ''; + } + return fieldName; +} + +export function generateFormula( + previousColumn: ReferenceBasedIndexPatternColumn | IndexPatternColumn, + layer: IndexPatternLayer, + previousFormula: string, + operationDefinitionMap: Record | undefined +) { + if ('references' in previousColumn) { + const metric = layer.columns[previousColumn.references[0]]; + if (metric && 'sourceField' in metric && metric.dataType === 'number') { + const fieldName = getSafeFieldName(metric.sourceField); + // TODO need to check the input type from the definition + previousFormula += `${previousColumn.operationType}(${metric.operationType}(${fieldName})`; + } + } else { + if (previousColumn && 'sourceField' in previousColumn && previousColumn.dataType === 'number') { + previousFormula += `${previousColumn.operationType}(${getSafeFieldName( + previousColumn?.sourceField + )}`; + } + } + const formulaNamedArgs = extractParamsForFormula(previousColumn, operationDefinitionMap); + if (formulaNamedArgs.length) { + previousFormula += + ', ' + formulaNamedArgs.map(({ name, value }) => `${name}=${value}`).join(', '); + } + if (previousColumn.filter) { + if (previousColumn.operationType !== 'count') { + previousFormula += ', '; + } + previousFormula += + (previousColumn.filter.language === 'kuery' ? 'kql=' : 'lucene=') + + `'${previousColumn.filter.query.replace(/'/g, `\\'`)}'`; // replace all + } + if (previousFormula) { + // close the formula at the end + previousFormula += ')'; + } + return previousFormula; +} + +function extractParamsForFormula( + column: IndexPatternColumn | ReferenceBasedIndexPatternColumn, + operationDefinitionMap: Record | undefined +) { + if (!operationDefinitionMap) { + return []; + } + const def = operationDefinitionMap[column.operationType]; + if ('operationParams' in def && column.params) { + return (def.operationParams || []).flatMap(({ name, required }) => { + const value = (column.params as OperationParams)![name]; + if (isObject(value)) { + return Object.keys(value).map((subName) => ({ + name: `${name}-${subName}`, + value: value[subName] as string | number, + required, + })); + } + return { + name, + value, + required, + }; + }); + } + return []; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/index.ts new file mode 100644 index 0000000000000..bafde0d37b3e9 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { formulaOperation, FormulaIndexPatternColumn } from './formula'; +export { regenerateLayerFromAst } from './parse'; +export { mathOperation, MathIndexPatternColumn } from './math'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx new file mode 100644 index 0000000000000..527af324b5b05 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx @@ -0,0 +1,111 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { TinymathAST } from '@kbn/tinymath'; +import { OperationDefinition } from '../index'; +import { ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPattern } from '../../../types'; + +export interface MathIndexPatternColumn extends ReferenceBasedIndexPatternColumn { + operationType: 'math'; + params: { + tinymathAst: TinymathAST | string; + // last value on numeric fields can be formatted + format?: { + id: string; + params?: { + decimals: number; + }; + }; + }; +} + +export const mathOperation: OperationDefinition = { + type: 'math', + displayName: 'Math', + hidden: true, + getDefaultLabel: (column, indexPattern) => 'Math', + input: 'managedReference', + getDisabledStatus(indexPattern: IndexPattern) { + return undefined; + }, + getPossibleOperation() { + return { + dataType: 'number', + isBucketed: false, + scale: 'ratio', + }; + }, + toExpression: (layer, columnId) => { + const column = layer.columns[columnId] as MathIndexPatternColumn; + return [ + { + type: 'function', + function: 'mapColumn', + arguments: { + id: [columnId], + name: [columnId], + exp: [ + { + type: 'expression', + chain: [ + { + type: 'function', + function: 'math', + arguments: { + expression: [astToString(column.params.tinymathAst)], + onError: ['null'], + }, + }, + ], + }, + ], + }, + }, + ]; + }, + buildColumn() { + return { + label: 'Math', + dataType: 'number', + operationType: 'math', + isBucketed: false, + scale: 'ratio', + params: { + tinymathAst: '', + }, + references: [], + }; + }, + isTransferable: (column, newIndexPattern) => { + // TODO has to check all children + return true; + }, + createCopy: (layer) => { + return { ...layer }; + }, +}; + +function astToString(ast: TinymathAST | string): string | number { + if (typeof ast === 'number') { + return ast; + } + if (typeof ast === 'string') { + // Double quotes around uuids like 1234-5678X2 to avoid ambiguity + return `"${ast}"`; + } + if (ast.type === 'variable') { + return ast.value; + } + if (ast.type === 'namedArgument') { + if (ast.name === 'kql' || ast.name === 'lucene') { + return `${ast.name}='${ast.value}'`; + } + return `${ast.name}=${ast.value}`; + } + return `${ast.name}(${ast.args.map(astToString).join(',')})`; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/parse.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/parse.ts new file mode 100644 index 0000000000000..3bfc6fcbfc011 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/parse.ts @@ -0,0 +1,210 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isObject } from 'lodash'; +import type { TinymathAST, TinymathVariable, TinymathLocation } from '@kbn/tinymath'; +import { OperationDefinition, GenericOperationDefinition, IndexPatternColumn } from '../index'; +import { IndexPattern, IndexPatternLayer } from '../../../types'; +import { mathOperation } from './math'; +import { documentField } from '../../../document_field'; +import { runASTValidation, shouldHaveFieldArgument, tryToParse } from './validation'; +import { findVariables, getOperationParams, groupArgsByType } from './util'; +import { FormulaIndexPatternColumn } from './formula'; +import { getColumnOrder } from '../../layer_helpers'; + +function getManagedId(mainId: string, index: number) { + return `${mainId}X${index}`; +} + +function parseAndExtract( + text: string, + layer: IndexPatternLayer, + columnId: string, + indexPattern: IndexPattern, + operationDefinitionMap: Record +) { + const { root, error } = tryToParse(text); + if (error || !root) { + return { extracted: [], isValid: false }; + } + // before extracting the data run the validation task and throw if invalid + const errors = runASTValidation(root, layer, indexPattern, operationDefinitionMap); + if (errors.length) { + return { extracted: [], isValid: false }; + } + /* + { name: 'add', args: [ { name: 'abc', args: [5] }, 5 ] } + */ + const extracted = extractColumns(columnId, operationDefinitionMap, root, layer, indexPattern); + return { extracted, isValid: true }; +} + +function extractColumns( + idPrefix: string, + operations: Record, + ast: TinymathAST, + layer: IndexPatternLayer, + indexPattern: IndexPattern +): Array<{ column: IndexPatternColumn; location?: TinymathLocation }> { + const columns: Array<{ column: IndexPatternColumn; location?: TinymathLocation }> = []; + + function parseNode(node: TinymathAST) { + if (typeof node === 'number' || node.type !== 'function') { + // leaf node + return node; + } + + const nodeOperation = operations[node.name]; + if (!nodeOperation) { + // it's a regular math node + const consumedArgs = node.args.map(parseNode).filter(Boolean) as Array< + number | TinymathVariable + >; + return { + ...node, + args: consumedArgs, + }; + } + + // split the args into types for better TS experience + const { namedArguments, variables, functions } = groupArgsByType(node.args); + + // operation node + if (nodeOperation.input === 'field') { + const [fieldName] = variables.filter((v): v is TinymathVariable => isObject(v)); + // a validation task passed before executing this and checked already there's a field + const field = shouldHaveFieldArgument(node) + ? indexPattern.getFieldByName(fieldName.value)! + : documentField; + + const mappedParams = getOperationParams(nodeOperation, namedArguments || []); + + const newCol = (nodeOperation as OperationDefinition< + IndexPatternColumn, + 'field' + >).buildColumn( + { + layer, + indexPattern, + field, + }, + mappedParams + ); + const newColId = getManagedId(idPrefix, columns.length); + newCol.customLabel = true; + newCol.label = newColId; + columns.push({ column: newCol, location: node.location }); + // replace by new column id + return newColId; + } + + if (nodeOperation.input === 'fullReference') { + const [referencedOp] = functions; + const consumedParam = parseNode(referencedOp); + + const subNodeVariables = consumedParam ? findVariables(consumedParam) : []; + const mathColumn = mathOperation.buildColumn({ + layer, + indexPattern, + }); + mathColumn.references = subNodeVariables.map(({ value }) => value); + mathColumn.params.tinymathAst = consumedParam!; + columns.push({ column: mathColumn }); + mathColumn.customLabel = true; + mathColumn.label = getManagedId(idPrefix, columns.length - 1); + + const mappedParams = getOperationParams(nodeOperation, namedArguments || []); + const newCol = (nodeOperation as OperationDefinition< + IndexPatternColumn, + 'fullReference' + >).buildColumn( + { + layer, + indexPattern, + referenceIds: [getManagedId(idPrefix, columns.length - 1)], + }, + mappedParams + ); + const newColId = getManagedId(idPrefix, columns.length); + newCol.customLabel = true; + newCol.label = newColId; + columns.push({ column: newCol, location: node.location }); + // replace by new column id + return newColId; + } + } + const root = parseNode(ast); + if (root === undefined) { + return []; + } + const variables = findVariables(root); + const mathColumn = mathOperation.buildColumn({ + layer, + indexPattern, + }); + mathColumn.references = variables.map(({ value }) => value); + mathColumn.params.tinymathAst = root!; + const newColId = getManagedId(idPrefix, columns.length); + mathColumn.customLabel = true; + mathColumn.label = newColId; + columns.push({ column: mathColumn }); + return columns; +} + +export function regenerateLayerFromAst( + text: string, + layer: IndexPatternLayer, + columnId: string, + currentColumn: FormulaIndexPatternColumn, + indexPattern: IndexPattern, + operationDefinitionMap: Record +) { + const { extracted, isValid } = parseAndExtract( + text, + layer, + columnId, + indexPattern, + operationDefinitionMap + ); + + const columns = { ...layer.columns }; + + const locations: Record = {}; + + Object.keys(columns).forEach((k) => { + if (k.startsWith(columnId)) { + delete columns[k]; + } + }); + + extracted.forEach(({ column, location }, index) => { + columns[getManagedId(columnId, index)] = column; + if (location) locations[getManagedId(columnId, index)] = location; + }); + + columns[columnId] = { + ...currentColumn, + params: { + ...currentColumn.params, + formula: text, + isFormulaBroken: !isValid, + }, + references: !isValid ? [] : [getManagedId(columnId, extracted.length - 1)], + }; + + return { + newLayer: { + ...layer, + columns, + columnOrder: getColumnOrder({ + ...layer, + columns, + }), + }, + locations, + }; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/types.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/types.ts new file mode 100644 index 0000000000000..ce853dec1d951 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/types.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + TinymathAST, + TinymathFunction, + TinymathNamedArgument, + TinymathVariable, +} from 'packages/kbn-tinymath'; + +export type GroupedNodes = { + [Key in TinymathNamedArgument['type']]: TinymathNamedArgument[]; +} & + { + [Key in TinymathVariable['type']]: Array; + } & + { + [Key in TinymathFunction['type']]: TinymathFunction[]; + }; + +export type TinymathNodeTypes = Exclude; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/util.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/util.ts new file mode 100644 index 0000000000000..5d9a8647eb7ab --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/util.ts @@ -0,0 +1,317 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { groupBy, isObject } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import type { + TinymathAST, + TinymathFunction, + TinymathNamedArgument, + TinymathVariable, +} from 'packages/kbn-tinymath'; +import type { OperationDefinition, IndexPatternColumn } from '../index'; +import type { GroupedNodes } from './types'; + +export function groupArgsByType(args: TinymathAST[]) { + const { namedArgument, variable, function: functions } = groupBy( + args, + (arg: TinymathAST) => { + return isObject(arg) ? arg.type : 'variable'; + } + ) as GroupedNodes; + // better naming + return { + namedArguments: namedArgument || [], + variables: variable || [], + functions: functions || [], + }; +} + +export function getValueOrName(node: TinymathAST) { + if (!isObject(node)) { + return node; + } + if (node.type !== 'function') { + return node.value; + } + return node.name; +} + +export function getOperationParams( + operation: + | OperationDefinition + | OperationDefinition, + params: TinymathNamedArgument[] = [] +): Record { + const formalArgs: Record = (operation.operationParams || []).reduce( + (memo: Record, { name, type }) => { + memo[name] = type; + return memo; + }, + {} + ); + + return params.reduce>((args, { name, value }) => { + if (formalArgs[name]) { + args[name] = value; + } + if (operation.filterable && (name === 'kql' || name === 'lucene')) { + args[name] = value; + } + return args; + }, {}); +} + +// Todo: i18n everything here +export const tinymathFunctions: Record< + string, + { + positionalArguments: Array<{ + name: string; + optional?: boolean; + }>; + // help: React.ReactElement; + // Help is in Markdown format + help: string; + } +> = { + add: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }) }, + { name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }) }, + ], + help: ` +Also works with + symbol +Example: ${'`count() + sum(bytes)`'} +Example: ${'`add(count(), 5)`'} + `, + }, + subtract: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }) }, + { name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }) }, + ], + help: ` +Also works with ${'`-`'} symbol +Example: ${'`subtract(sum(bytes), avg(bytes))`'} + `, + }, + multiply: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }) }, + { name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }) }, + ], + help: ` +Also works with ${'`*`'} symbol +Example: ${'`multiply(sum(bytes), 2)`'} + `, + }, + divide: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.left', { defaultMessage: 'left' }) }, + { name: i18n.translate('xpack.lens.formula.right', { defaultMessage: 'right' }) }, + ], + help: ` +Also works with ${'`/`'} symbol +Example: ${'`ceil(sum(bytes))`'} + `, + }, + abs: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Absolute value +Example: ${'`abs(sum(bytes))`'} + `, + }, + cbrt: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Cube root of value +Example: ${'`cbrt(sum(bytes))`'} + `, + }, + ceil: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Ceiling of value, rounds up +Example: ${'`ceil(sum(bytes))`'} + `, + }, + clamp: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + { name: i18n.translate('xpack.lens.formula.min', { defaultMessage: 'min' }) }, + { name: i18n.translate('xpack.lens.formula.max', { defaultMessage: 'max' }) }, + ], + help: ` +Limits the value from a minimum to maximum +Example: ${'`ceil(sum(bytes))`'} + `, + }, + cube: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Limits the value from a minimum to maximum +Example: ${'`ceil(sum(bytes))`'} + `, + }, + exp: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Raises e to the nth power. +Example: ${'`exp(sum(bytes))`'} + `, + }, + fix: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +For positive values, takes the floor. For negative values, takes the ceiling. +Example: ${'`fix(sum(bytes))`'} + `, + }, + floor: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Round down to nearest integer value +Example: ${'`floor(sum(bytes))`'} + `, + }, + log: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + { + name: i18n.translate('xpack.lens.formula.base', { defaultMessage: 'base' }), + optional: true, + }, + ], + help: ` +Logarithm with optional base. The natural base e is used as default. +Example: ${'`log(sum(bytes))`'} +Example: ${'`log(sum(bytes), 2)`'} + `, + }, + // TODO: check if this is valid for Tinymath + // log10: { + // positionalArguments: [ + // { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + // ], + // help: ` + // Base 10 logarithm. + // Example: ${'`log10(sum(bytes))`'} + // `, + // }, + mod: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + { + name: i18n.translate('xpack.lens.formula.base', { defaultMessage: 'base' }), + optional: true, + }, + ], + help: ` +Remainder after dividing the function by a number +Example: ${'`mod(sum(bytes), 2)`'} + `, + }, + pow: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + { + name: i18n.translate('xpack.lens.formula.base', { defaultMessage: 'base' }), + }, + ], + help: ` +Raises the value to a certain power. The second argument is required +Example: ${'`pow(sum(bytes), 3)`'} + `, + }, + round: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + { + name: i18n.translate('xpack.lens.formula.decimals', { defaultMessage: 'decimals' }), + optional: true, + }, + ], + help: ` +Rounds to a specific number of decimal places, default of 0 +Example: ${'`round(sum(bytes))`'} +Example: ${'`round(sum(bytes), 2)`'} + `, + }, + sqrt: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Square root of a positive value only +Example: ${'`sqrt(sum(bytes))`'} + `, + }, + square: { + positionalArguments: [ + { name: i18n.translate('xpack.lens.formula.expression', { defaultMessage: 'expression' }) }, + ], + help: ` +Raise the value to the 2nd power +Example: ${'`square(sum(bytes))`'} + `, + }, +}; + +export function isMathNode(node: TinymathAST) { + return isObject(node) && node.type === 'function' && tinymathFunctions[node.name]; +} + +export function findMathNodes(root: TinymathAST | string): TinymathFunction[] { + function flattenMathNodes(node: TinymathAST | string): TinymathFunction[] { + if (!isObject(node) || node.type !== 'function' || !isMathNode(node)) { + return []; + } + return [node, ...node.args.flatMap(flattenMathNodes)].filter(Boolean); + } + return flattenMathNodes(root); +} + +// traverse a tree and find all string leaves +export function findVariables(node: TinymathAST | string): TinymathVariable[] { + if (typeof node === 'string') { + return [ + { + type: 'variable', + value: node, + text: node, + location: { min: 0, max: 0 }, + }, + ]; + } + if (node == null) { + return []; + } + if (typeof node === 'number' || node.type === 'namedArgument') { + return []; + } + if (node.type === 'variable') { + // leaf node + return [node]; + } + return node.args.flatMap(findVariables); +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts new file mode 100644 index 0000000000000..5145c7959f1bb --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/validation.ts @@ -0,0 +1,687 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isObject } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { parse, TinymathLocation } from '@kbn/tinymath'; +import type { TinymathAST, TinymathFunction, TinymathNamedArgument } from '@kbn/tinymath'; +import { esKuery, esQuery } from '../../../../../../../../src/plugins/data/public'; +import { + findMathNodes, + findVariables, + getOperationParams, + getValueOrName, + groupArgsByType, + isMathNode, + tinymathFunctions, +} from './util'; + +import type { OperationDefinition, IndexPatternColumn, GenericOperationDefinition } from '../index'; +import type { IndexPattern, IndexPatternLayer } from '../../../types'; +import type { TinymathNodeTypes } from './types'; + +interface ValidationErrors { + missingField: { message: string; type: { variablesLength: number; variablesList: string } }; + missingOperation: { + message: string; + type: { operationLength: number; operationsList: string }; + }; + missingParameter: { + message: string; + type: { operation: string; params: string }; + }; + wrongTypeParameter: { + message: string; + type: { operation: string; params: string }; + }; + wrongFirstArgument: { + message: string; + type: { operation: string; type: string; argument: string | number }; + }; + cannotAcceptParameter: { message: string; type: { operation: string } }; + shouldNotHaveField: { message: string; type: { operation: string } }; + tooManyArguments: { message: string; type: { operation: string } }; + fieldWithNoOperation: { + message: string; + type: { field: string }; + }; + failedParsing: { message: string; type: { expression: string } }; + duplicateArgument: { + message: string; + type: { operation: string; params: string }; + }; + missingMathArgument: { + message: string; + type: { operation: string; count: number; params: string }; + }; +} +type ErrorTypes = keyof ValidationErrors; +type ErrorValues = ValidationErrors[K]['type']; + +export interface ErrorWrapper { + message: string; + locations: TinymathLocation[]; + severity?: 'error' | 'warning'; +} + +export function isParsingError(message: string) { + return message.includes('Failed to parse expression'); +} + +function findFunctionNodes(root: TinymathAST | string): TinymathFunction[] { + function flattenFunctionNodes(node: TinymathAST | string): TinymathFunction[] { + if (!isObject(node) || node.type !== 'function') { + return []; + } + return [node, ...node.args.flatMap(flattenFunctionNodes)].filter(Boolean); + } + return flattenFunctionNodes(root); +} + +export function hasInvalidOperations( + node: TinymathAST | string, + operations: Record +): { names: string[]; locations: TinymathLocation[] } { + const nodes = findFunctionNodes(node).filter((v) => !isMathNode(v) && !operations[v.name]); + return { + // avoid duplicates + names: Array.from(new Set(nodes.map(({ name }) => name))), + locations: nodes.map(({ location }) => location), + }; +} + +export const getQueryValidationError = ( + query: string, + language: 'kql' | 'lucene', + indexPattern: IndexPattern +): string | undefined => { + try { + if (language === 'kql') { + esKuery.toElasticsearchQuery(esKuery.fromKueryExpression(query), indexPattern); + } else { + esQuery.luceneStringToDsl(query); + } + return; + } catch (e) { + return e.message; + } +}; + +function getMessageFromId({ + messageId, + values: { ...values }, + locations, +}: { + messageId: K; + values: ErrorValues; + locations: TinymathLocation[]; +}): ErrorWrapper { + let message: string; + // Use a less strict type instead of doing a typecast on each message type + const out = (values as unknown) as Record; + switch (messageId) { + case 'wrongFirstArgument': + message = i18n.translate('xpack.lens.indexPattern.formulaOperationWrongFirstArgument', { + defaultMessage: + 'The first argument for {operation} should be a {type} name. Found {argument}', + values: { operation: out.operation, type: out.type, argument: out.argument }, + }); + break; + case 'shouldNotHaveField': + message = i18n.translate('xpack.lens.indexPattern.formulaFieldNotRequired', { + defaultMessage: 'The operation {operation} does not accept any field as argument', + values: { operation: out.operation }, + }); + break; + case 'cannotAcceptParameter': + message = i18n.translate('xpack.lens.indexPattern.formulaParameterNotRequired', { + defaultMessage: 'The operation {operation} does not accept any parameter', + values: { operation: out.operation }, + }); + break; + case 'missingParameter': + message = i18n.translate('xpack.lens.indexPattern.formulaExpressionNotHandled', { + defaultMessage: + 'The operation {operation} in the Formula is missing the following parameters: {params}', + values: { operation: out.operation, params: out.params }, + }); + break; + case 'wrongTypeParameter': + message = i18n.translate('xpack.lens.indexPattern.formulaExpressionWrongType', { + defaultMessage: + 'The parameters for the operation {operation} in the Formula are of the wrong type: {params}', + values: { operation: out.operation, params: out.params }, + }); + break; + case 'duplicateArgument': + message = i18n.translate('xpack.lens.indexPattern.formulaOperationDuplicateParams', { + defaultMessage: + 'The parameters for the operation {operation} have been declared multiple times: {params}', + values: { operation: out.operation, params: out.params }, + }); + break; + case 'missingField': + message = i18n.translate('xpack.lens.indexPattern.formulaFieldNotFound', { + defaultMessage: + '{variablesLength, plural, one {Field} other {Fields}} {variablesList} not found', + values: { variablesLength: out.variablesLength, variablesList: out.variablesList }, + }); + break; + case 'missingOperation': + message = i18n.translate('xpack.lens.indexPattern.operationsNotFound', { + defaultMessage: + '{operationLength, plural, one {Operation} other {Operations}} {operationsList} not found', + values: { operationLength: out.operationLength, operationsList: out.operationsList }, + }); + break; + case 'fieldWithNoOperation': + message = i18n.translate('xpack.lens.indexPattern.fieldNoOperation', { + defaultMessage: 'The field {field} cannot be used without operation', + values: { field: out.field }, + }); + break; + case 'failedParsing': + message = i18n.translate('xpack.lens.indexPattern.formulaExpressionParseError', { + defaultMessage: 'The Formula {expression} cannot be parsed', + values: { expression: out.expression }, + }); + break; + case 'tooManyArguments': + message = i18n.translate('xpack.lens.indexPattern.formulaWithTooManyArguments', { + defaultMessage: 'The operation {operation} has too many arguments', + values: { operation: out.operation }, + }); + break; + case 'missingMathArgument': + message = i18n.translate('xpack.lens.indexPattern.formulaMathMissingArgument', { + defaultMessage: + 'The operation {operation} in the Formula is missing {count} arguments: {params}', + values: { operation: out.operation, count: out.count, params: out.params }, + }); + break; + // case 'mathRequiresFunction': + // message = i18n.translate('xpack.lens.indexPattern.formulaMathRequiresFunctionLabel', { + // defaultMessage; 'The function {name} requires an Elasticsearch function', + // values: { ...values }, + // }); + // break; + default: + message = 'no Error found'; + break; + } + + return { message, locations }; +} + +export function tryToParse( + formula: string +): { root: TinymathAST; error: null } | { root: null; error: ErrorWrapper } { + let root; + try { + root = parse(formula); + } catch (e) { + return { + root: null, + error: getMessageFromId({ + messageId: 'failedParsing', + values: { + expression: formula, + }, + locations: [], + }), + }; + } + return { root, error: null }; +} + +export function runASTValidation( + ast: TinymathAST, + layer: IndexPatternLayer, + indexPattern: IndexPattern, + operations: Record +) { + return [ + ...checkMissingVariableOrFunctions(ast, layer, indexPattern, operations), + ...runFullASTValidation(ast, layer, indexPattern, operations), + ]; +} + +function checkVariableEdgeCases(ast: TinymathAST, missingVariables: Set) { + const invalidVariableErrors = []; + if (isObject(ast) && ast.type === 'variable' && !missingVariables.has(ast.value)) { + invalidVariableErrors.push( + getMessageFromId({ + messageId: 'fieldWithNoOperation', + values: { + field: ast.value, + }, + locations: [ast.location], + }) + ); + } + return invalidVariableErrors; +} + +function checkMissingVariableOrFunctions( + ast: TinymathAST, + layer: IndexPatternLayer, + indexPattern: IndexPattern, + operations: Record +): ErrorWrapper[] { + const missingErrors: ErrorWrapper[] = []; + const missingOperations = hasInvalidOperations(ast, operations); + + if (missingOperations.names.length) { + missingErrors.push( + getMessageFromId({ + messageId: 'missingOperation', + values: { + operationLength: missingOperations.names.length, + operationsList: missingOperations.names.join(', '), + }, + locations: missingOperations.locations, + }) + ); + } + const missingVariables = findVariables(ast).filter( + // filter empty string as well? + ({ value }) => !indexPattern.getFieldByName(value) && !layer.columns[value] + ); + + // need to check the arguments here: check only strings for now + if (missingVariables.length) { + missingErrors.push( + getMessageFromId({ + messageId: 'missingField', + values: { + variablesLength: missingVariables.length, + variablesList: missingVariables.map(({ value }) => value).join(', '), + }, + locations: missingVariables.map(({ location }) => location), + }) + ); + } + const invalidVariableErrors = checkVariableEdgeCases( + ast, + new Set(missingVariables.map(({ value }) => value)) + ); + return [...missingErrors, ...invalidVariableErrors]; +} + +function getQueryValidationErrors( + namedArguments: TinymathNamedArgument[] | undefined, + indexPattern: IndexPattern +): ErrorWrapper[] { + const errors: ErrorWrapper[] = []; + (namedArguments ?? []).forEach((arg) => { + if (arg.name === 'kql' || arg.name === 'lucene') { + const message = getQueryValidationError(arg.value, arg.name, indexPattern); + if (message) { + errors.push({ + message, + locations: [arg.location], + }); + } + } + }); + return errors; +} + +function validateNameArguments( + node: TinymathFunction, + nodeOperation: + | OperationDefinition + | OperationDefinition, + namedArguments: TinymathNamedArgument[] | undefined, + indexPattern: IndexPattern +) { + const errors = []; + const missingParams = getMissingParams(nodeOperation, namedArguments); + if (missingParams.length) { + errors.push( + getMessageFromId({ + messageId: 'missingParameter', + values: { + operation: node.name, + params: missingParams.map(({ name }) => name).join(', '), + }, + locations: [node.location], + }) + ); + } + const wrongTypeParams = getWrongTypeParams(nodeOperation, namedArguments); + if (wrongTypeParams.length) { + errors.push( + getMessageFromId({ + messageId: 'wrongTypeParameter', + values: { + operation: node.name, + params: wrongTypeParams.map(({ name }) => name).join(', '), + }, + locations: [node.location], + }) + ); + } + const duplicateParams = getDuplicateParams(namedArguments); + if (duplicateParams.length) { + errors.push( + getMessageFromId({ + messageId: 'duplicateArgument', + values: { + operation: node.name, + params: duplicateParams.join(', '), + }, + locations: [node.location], + }) + ); + } + const queryValidationErrors = getQueryValidationErrors(namedArguments, indexPattern); + if (queryValidationErrors.length) { + errors.push(...queryValidationErrors); + } + return errors; +} + +function runFullASTValidation( + ast: TinymathAST, + layer: IndexPatternLayer, + indexPattern: IndexPattern, + operations: Record +): ErrorWrapper[] { + const missingVariables = findVariables(ast).filter( + // filter empty string as well? + ({ value }) => !indexPattern.getFieldByName(value) && !layer.columns[value] + ); + const missingVariablesSet = new Set(missingVariables.map(({ value }) => value)); + + function validateNode(node: TinymathAST): ErrorWrapper[] { + if (!isObject(node) || node.type !== 'function') { + return []; + } + const nodeOperation = operations[node.name]; + const errors: ErrorWrapper[] = []; + const { namedArguments, functions, variables } = groupArgsByType(node.args); + const [firstArg] = node?.args || []; + + if (!nodeOperation) { + errors.push(...validateMathNodes(node, missingVariablesSet)); + // carry on with the validation for all the functions within the math operation + if (functions?.length) { + return errors.concat(functions.flatMap((fn) => validateNode(fn))); + } + } else { + if (nodeOperation.input === 'field') { + if (shouldHaveFieldArgument(node)) { + if (!isFirstArgumentValidType(firstArg, 'variable')) { + if (isMathNode(firstArg)) { + errors.push( + getMessageFromId({ + messageId: 'wrongFirstArgument', + values: { + operation: node.name, + type: 'field', + argument: `math operation`, + }, + locations: [node.location], + }) + ); + } else { + errors.push( + getMessageFromId({ + messageId: 'wrongFirstArgument', + values: { + operation: node.name, + type: 'field', + argument: getValueOrName(firstArg), + }, + locations: [node.location], + }) + ); + } + } + } else { + // Named arguments only + if (functions?.length || variables?.length) { + errors.push( + getMessageFromId({ + messageId: 'shouldNotHaveField', + values: { + operation: node.name, + }, + locations: [node.location], + }) + ); + } + } + if (!canHaveParams(nodeOperation) && namedArguments.length) { + errors.push( + getMessageFromId({ + messageId: 'cannotAcceptParameter', + values: { + operation: node.name, + }, + locations: [node.location], + }) + ); + } else { + const argumentsErrors = validateNameArguments( + node, + nodeOperation, + namedArguments, + indexPattern + ); + if (argumentsErrors.length) { + errors.push(...argumentsErrors); + } + } + return errors; + } + if (nodeOperation.input === 'fullReference') { + // What about fn(7 + 1)? We may want to allow that + // In general this should be handled down the Esaggs route rather than here + if ( + !isFirstArgumentValidType(firstArg, 'function') || + (isMathNode(firstArg) && validateMathNodes(firstArg, missingVariablesSet).length) + ) { + errors.push( + getMessageFromId({ + messageId: 'wrongFirstArgument', + values: { + operation: node.name, + type: 'operation', + argument: getValueOrName(firstArg), + }, + locations: [node.location], + }) + ); + } + if (!canHaveParams(nodeOperation) && namedArguments.length) { + errors.push( + getMessageFromId({ + messageId: 'cannotAcceptParameter', + values: { + operation: node.name, + }, + locations: [node.location], + }) + ); + } else { + const argumentsErrors = validateNameArguments( + node, + nodeOperation, + namedArguments, + indexPattern + ); + if (argumentsErrors.length) { + errors.push(...argumentsErrors); + } + } + } + return errors.concat(validateNode(functions[0])); + } + return errors; + } + + return validateNode(ast); +} + +export function canHaveParams( + operation: + | OperationDefinition + | OperationDefinition +) { + return Boolean((operation.operationParams || []).length) || operation.filterable; +} + +export function getInvalidParams( + operation: + | OperationDefinition + | OperationDefinition, + params: TinymathNamedArgument[] = [] +) { + return validateParams(operation, params).filter( + ({ isMissing, isCorrectType, isRequired }) => (isMissing && isRequired) || !isCorrectType + ); +} + +export function getMissingParams( + operation: + | OperationDefinition + | OperationDefinition, + params: TinymathNamedArgument[] = [] +) { + return validateParams(operation, params).filter( + ({ isMissing, isRequired }) => isMissing && isRequired + ); +} + +export function getWrongTypeParams( + operation: + | OperationDefinition + | OperationDefinition, + params: TinymathNamedArgument[] = [] +) { + return validateParams(operation, params).filter( + ({ isCorrectType, isMissing }) => !isCorrectType && !isMissing + ); +} + +function getDuplicateParams(params: TinymathNamedArgument[] = []) { + const uniqueArgs = Object.create(null); + for (const { name } of params) { + const counter = uniqueArgs[name] || 0; + uniqueArgs[name] = counter + 1; + } + const uniqueNames = Object.keys(uniqueArgs); + if (params.length > uniqueNames.length) { + return uniqueNames.filter((name) => uniqueArgs[name] > 1); + } + return []; +} + +export function validateParams( + operation: + | OperationDefinition + | OperationDefinition, + params: TinymathNamedArgument[] = [] +) { + const paramsObj = getOperationParams(operation, params); + const formalArgs = [...(operation.operationParams ?? [])]; + if (operation.filterable) { + formalArgs.push( + { name: 'kql', type: 'string', required: false }, + { name: 'lucene', type: 'string', required: false } + ); + } + return formalArgs.map(({ name, type, required }) => ({ + name, + isMissing: !(name in paramsObj), + isCorrectType: typeof paramsObj[name] === type, + isRequired: required, + })); +} + +export function shouldHaveFieldArgument(node: TinymathFunction) { + return !['count'].includes(node.name); +} + +export function isFirstArgumentValidType(arg: TinymathAST, type: TinymathNodeTypes['type']) { + return isObject(arg) && arg.type === type; +} + +export function validateMathNodes(root: TinymathAST, missingVariableSet: Set) { + const mathNodes = findMathNodes(root); + const errors: ErrorWrapper[] = []; + mathNodes.forEach((node: TinymathFunction) => { + const { positionalArguments } = tinymathFunctions[node.name]; + if (!node.args.length) { + // we can stop here + return errors.push( + getMessageFromId({ + messageId: 'wrongFirstArgument', + values: { + operation: node.name, + type: 'operation', + argument: `()`, + }, + locations: [node.location], + }) + ); + } + + if (node.args.length > positionalArguments.length) { + errors.push( + getMessageFromId({ + messageId: 'tooManyArguments', + values: { + operation: node.name, + }, + locations: [node.location], + }) + ); + } + + // no need to iterate all the arguments, one field is anough to trigger the error + const hasFieldAsArgument = positionalArguments.some((requirements, index) => { + const arg = node.args[index]; + if (arg != null && typeof arg !== 'number') { + return arg.type === 'variable' && !missingVariableSet.has(arg.value); + } + }); + if (hasFieldAsArgument) { + errors.push( + getMessageFromId({ + messageId: 'shouldNotHaveField', + values: { + operation: node.name, + }, + locations: [node.location], + }) + ); + } + + const mandatoryArguments = positionalArguments.filter(({ optional }) => !optional); + // if there is only 1 mandatory arg, this is already handled by the wrongFirstArgument check + if (mandatoryArguments.length > 1 && node.args.length < mandatoryArguments.length) { + const missingArgs = positionalArguments.filter( + ({ name, optional }, i) => !optional && node.args[i] == null + ); + errors.push( + getMessageFromId({ + messageId: 'missingMathArgument', + values: { + operation: node.name, + count: mandatoryArguments.length - node.args.length, + params: missingArgs.map(({ name }) => name).join(', '), + }, + locations: [node.location], + }) + ); + } + }); + return errors; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.test.ts index bff997c8a81e8..bf24e31ad4f59 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.test.ts @@ -37,7 +37,7 @@ describe('helpers', () => { createMockedIndexPattern() ); expect(messages).toHaveLength(1); - expect(messages![0]).toEqual('Field timestamp was not found'); + expect(messages![0]).toEqual('Field timestamp is of the wrong type'); }); it('returns no message if all fields are matching', () => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx index b7e92a0b54952..f719ac4250912 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/helpers.tsx @@ -54,14 +54,37 @@ export function getInvalidFieldMessage( operationDefinition.getPossibleOperationForField(field) !== undefined ) ); - return isInvalid - ? [ - i18n.translate('xpack.lens.indexPattern.fieldNotFound', { - defaultMessage: 'Field {invalidField} was not found', - values: { invalidField: sourceField }, + + const isWrongType = Boolean( + sourceField && + operationDefinition && + field && + !operationDefinition.isTransferable( + column as IndexPatternColumn, + indexPattern, + operationDefinitionMap + ) + ); + if (isInvalid) { + if (isWrongType) { + return [ + i18n.translate('xpack.lens.indexPattern.fieldWrongType', { + defaultMessage: 'Field {invalidField} is of the wrong type', + values: { + invalidField: sourceField, + }, }), - ] - : undefined; + ]; + } + return [ + i18n.translate('xpack.lens.indexPattern.fieldNotFound', { + defaultMessage: 'Field {invalidField} was not found', + values: { invalidField: sourceField }, + }), + ]; + } + + return undefined; } export function getSafeName(name: string, indexPattern: IndexPattern): string { @@ -100,3 +123,18 @@ export function getFormatFromPreviousColumn(previousColumn: IndexPatternColumn | ? { format: previousColumn.params.format } : undefined; } + +export function getFilter( + previousColumn: IndexPatternColumn | undefined, + columnParams: { kql?: string | undefined; lucene?: string | undefined } | undefined +) { + let filter = previousColumn?.filter; + if (columnParams) { + if ('kql' in columnParams) { + filter = { query: columnParams.kql ?? '', language: 'kuery' }; + } else if ('lucene' in columnParams) { + filter = { query: columnParams.lucene ?? '', language: 'lucene' }; + } + } + return filter; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 37bd64251ed81..a7402bc13c0a8 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -35,6 +35,12 @@ import { MovingAverageIndexPatternColumn, } from './calculations'; import { countOperation, CountIndexPatternColumn } from './count'; +import { + mathOperation, + MathIndexPatternColumn, + formulaOperation, + FormulaIndexPatternColumn, +} from './formula'; import { lastValueOperation, LastValueIndexPatternColumn } from './last_value'; import { OperationMetadata } from '../../../types'; import type { BaseIndexPatternColumn, ReferenceBasedIndexPatternColumn } from './column_types'; @@ -66,7 +72,9 @@ export type IndexPatternColumn = | CumulativeSumIndexPatternColumn | CounterRateIndexPatternColumn | DerivativeIndexPatternColumn - | MovingAverageIndexPatternColumn; + | MovingAverageIndexPatternColumn + | MathIndexPatternColumn + | FormulaIndexPatternColumn; export type FieldBasedIndexPatternColumn = Extract; @@ -115,6 +123,8 @@ const internalOperationDefinitions = [ counterRateOperation, derivativeOperation, movingAverageOperation, + mathOperation, + formulaOperation, ]; export { termsOperation } from './terms'; @@ -131,6 +141,7 @@ export { derivativeOperation, movingAverageOperation, } from './calculations'; +export { formulaOperation } from './formula/formula'; /** * Properties passed to the operation-specific part of the popover editor @@ -147,6 +158,7 @@ export interface ParamEditorProps { http: HttpSetup; dateRange: DateRange; data: DataPublicPluginStart; + operationDefinitionMap: Record; } export interface HelpProps { @@ -198,7 +210,11 @@ interface BaseOperationDefinitionProps { * If this function returns false, the column is removed when switching index pattern * for a layer */ - isTransferable: (column: C, newIndexPattern: IndexPattern) => boolean; + isTransferable: ( + column: C, + newIndexPattern: IndexPattern, + operationDefinitionMap: Record + ) => boolean; /** * Transfering a column to another index pattern. This can be used to * adjust operation specific settings such as reacting to aggregation restrictions @@ -220,7 +236,8 @@ interface BaseOperationDefinitionProps { getErrorMessage?: ( layer: IndexPatternLayer, columnId: string, - indexPattern: IndexPattern + indexPattern: IndexPattern, + operationDefinitionMap?: Record ) => string[] | undefined; /* @@ -230,9 +247,18 @@ interface BaseOperationDefinitionProps { * If set to optional, time scaling won't be enabled by default and can be removed. */ timeScalingMode?: TimeScalingMode; + /** + * Filterable operations can have a KQL or Lucene query added at the dimension level. + * This flag is used by the formula to assign the kql= and lucene= named arguments and set up + * autocomplete. + */ filterable?: boolean; getHelpMessage?: (props: HelpProps) => React.ReactNode; + /* + * Operations can be used as middleware for other operations, hence not shown in the panel UI + */ + hidden?: boolean; } interface BaseBuildColumnArgs { @@ -240,15 +266,28 @@ interface BaseBuildColumnArgs { indexPattern: IndexPattern; } +interface OperationParam { + name: string; + type: string; + required?: boolean; +} + interface FieldlessOperationDefinition { input: 'none'; + + /** + * The specification of the arguments used by the operations used for both validation, + * and use from external managed operations + */ + operationParams?: OperationParam[]; /** * Builds the column object for the given parameters. Should include default p */ buildColumn: ( arg: BaseBuildColumnArgs & { previousColumn?: IndexPatternColumn; - } + }, + columnParams?: (IndexPatternColumn & C)['params'] ) => C; /** * Returns the meta data of the operation if applied. Undefined @@ -270,6 +309,12 @@ interface FieldlessOperationDefinition { interface FieldBasedOperationDefinition { input: 'field'; + + /** + * The specification of the arguments used by the operations used for both validation, + * and use from external managed operations + */ + operationParams?: OperationParam[]; /** * Returns the meta data of the operation if applied to the given field. Undefined * if the field is not applicable to the operation. @@ -282,7 +327,8 @@ interface FieldBasedOperationDefinition { arg: BaseBuildColumnArgs & { field: IndexPatternField; previousColumn?: IndexPatternColumn; - } + }, + columnParams?: (IndexPatternColumn & C)['params'] & { kql?: string; lucene?: string } ) => C; /** * This method will be called if the user changes the field of an operation. @@ -320,7 +366,8 @@ interface FieldBasedOperationDefinition { getErrorMessage: ( layer: IndexPatternLayer, columnId: string, - indexPattern: IndexPattern + indexPattern: IndexPattern, + operationDefinitionMap?: Record ) => string[] | undefined; } @@ -333,6 +380,7 @@ export interface RequiredReference { // operation types. The main use case is Cumulative Sum, where we need to only take the // sum of Count or sum of Sum. specificOperations?: OperationType[]; + multi?: boolean; } // Full reference uses one or more reference operations which are visible to the user @@ -345,12 +393,19 @@ interface FullReferenceOperationDefinition { */ requiredReferences: RequiredReference[]; + /** + * The specification of the arguments used by the operations used for both validation, + * and use from external managed operations + */ + operationParams?: OperationParam[]; + /** * The type of UI that is shown in the editor for this function: * - full: List of sub-functions and fields * - field: List of fields, selects first operation per field + * - hidden: Do not allow to use operation directly */ - selectionStyle: 'full' | 'field'; + selectionStyle: 'full' | 'field' | 'hidden'; /** * Builds the column object for the given parameters. Should include default p @@ -359,6 +414,10 @@ interface FullReferenceOperationDefinition { arg: BaseBuildColumnArgs & { referenceIds: string[]; previousColumn?: IndexPatternColumn; + }, + columnParams?: (ReferenceBasedIndexPatternColumn & C)['params'] & { + kql?: string; + lucene?: string; } ) => ReferenceBasedIndexPatternColumn & C; /** @@ -376,10 +435,49 @@ interface FullReferenceOperationDefinition { ) => ExpressionAstFunction[]; } +interface ManagedReferenceOperationDefinition { + input: 'managedReference'; + /** + * Builds the column object for the given parameters. Should include default p + */ + buildColumn: ( + arg: BaseBuildColumnArgs & { + previousColumn?: IndexPatternColumn | ReferenceBasedIndexPatternColumn; + }, + columnParams?: (ReferenceBasedIndexPatternColumn & C)['params'], + operationDefinitionMap?: Record + ) => ReferenceBasedIndexPatternColumn & C; + /** + * Returns the meta data of the operation if applied. Undefined + * if the operation can't be added with these fields. + */ + getPossibleOperation: () => OperationMetadata | undefined; + /** + * A chain of expression functions which will transform the table + */ + toExpression: ( + layer: IndexPatternLayer, + columnId: string, + indexPattern: IndexPattern + ) => ExpressionAstFunction[]; + /** + * Managed references control the IDs of their inner columns, so we need to be able to copy from the + * root level + */ + createCopy: ( + layer: IndexPatternLayer, + sourceColumnId: string, + targetColumnId: string, + indexPattern: IndexPattern, + operationDefinitionMap: Record + ) => IndexPatternLayer; +} + interface OperationDefinitionMap { field: FieldBasedOperationDefinition; none: FieldlessOperationDefinition; fullReference: FullReferenceOperationDefinition; + managedReference: ManagedReferenceOperationDefinition; } /** @@ -405,7 +503,8 @@ export type OperationType = typeof internalOperationDefinitions[number]['type']; export type GenericOperationDefinition = | OperationDefinition | OperationDefinition - | OperationDefinition; + | OperationDefinition + | OperationDefinition; /** * List of all available operation definitions diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.test.tsx index b2244e0cc769f..280cfe9471c9d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.test.tsx @@ -29,6 +29,7 @@ const defaultProps = { ...createMockedIndexPattern(), hasRestrictions: false, } as IndexPattern, + operationDefinitionMap: {}, }; describe('last_value', () => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx index 4f5c897fb5378..4632d262c441d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/last_value.tsx @@ -15,7 +15,12 @@ import { FieldBasedIndexPatternColumn } from './column_types'; import { IndexPatternField, IndexPattern } from '../../types'; import { updateColumnParam } from '../layer_helpers'; import { DataType } from '../../../types'; -import { getFormatFromPreviousColumn, getInvalidFieldMessage, getSafeName } from './helpers'; +import { + getFormatFromPreviousColumn, + getInvalidFieldMessage, + getSafeName, + getFilter, +} from './helpers'; function ofName(name: string) { return i18n.translate('xpack.lens.indexPattern.lastValueOf', { @@ -141,7 +146,7 @@ export const lastValueOperation: OperationDefinition f.type === 'date')?.name; @@ -161,7 +166,7 @@ export const lastValueOperation: OperationDefinition>({ : (layer.columns[thisColumnId] as T), getDefaultLabel: (column, indexPattern, columns) => labelLookup(getSafeName(column.sourceField, indexPattern), column), - buildColumn: ({ field, previousColumn }) => - ({ + buildColumn: ({ field, previousColumn }, columnParams) => { + return { label: labelLookup(field.displayName, previousColumn), dataType: 'number', operationType: type, @@ -98,9 +103,10 @@ function buildMetricOperation>({ isBucketed: false, scale: 'ratio', timeScale: optionalTimeScaling ? previousColumn?.timeScale : undefined, - filter: previousColumn?.filter, + filter: getFilter(previousColumn, columnParams), params: getFormatFromPreviousColumn(previousColumn), - } as T), + } as T; + }, onFieldChange: (oldColumn, field) => { return { ...oldColumn, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx index c14ff9f86f602..59da0f6f7bcde 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx @@ -31,6 +31,7 @@ const defaultProps = { ...createMockedIndexPattern(), hasRestrictions: false, } as IndexPattern, + operationDefinitionMap: {}, }; describe('percentile', () => { @@ -178,6 +179,41 @@ describe('percentile', () => { expect(percentileColumn.params.percentile).toEqual(95); expect(percentileColumn.label).toEqual('95th percentile of test'); }); + + it('should create a percentile from formula', () => { + const indexPattern = createMockedIndexPattern(); + const bytesField = indexPattern.fields.find(({ name }) => name === 'bytes')!; + bytesField.displayName = 'test'; + const percentileColumn = percentileOperation.buildColumn( + { + indexPattern, + field: bytesField, + layer: { columns: {}, columnOrder: [], indexPatternId: '' }, + }, + { percentile: 75 } + ); + expect(percentileColumn.dataType).toEqual('number'); + expect(percentileColumn.params.percentile).toEqual(75); + expect(percentileColumn.label).toEqual('75th percentile of test'); + }); + + it('should create a percentile from formula with filter', () => { + const indexPattern = createMockedIndexPattern(); + const bytesField = indexPattern.fields.find(({ name }) => name === 'bytes')!; + bytesField.displayName = 'test'; + const percentileColumn = percentileOperation.buildColumn( + { + indexPattern, + field: bytesField, + layer: { columns: {}, columnOrder: [], indexPatternId: '' }, + }, + { percentile: 75, kql: 'bytes > 100' } + ); + expect(percentileColumn.dataType).toEqual('number'); + expect(percentileColumn.params.percentile).toEqual(75); + expect(percentileColumn.filter).toEqual({ language: 'kuery', query: 'bytes > 100' }); + expect(percentileColumn.label).toEqual('75th percentile of test'); + }); }); describe('isTransferable', () => { @@ -202,7 +238,8 @@ describe('percentile', () => { percentile: 95, }, }, - indexPattern + indexPattern, + {} ) ).toBeTruthy(); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx index dd0f3b978da5f..705a1f7172fff 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx @@ -17,6 +17,7 @@ import { getSafeName, isValidNumber, useDebounceWithOptions, + getFilter, } from './helpers'; import { FieldBasedIndexPatternColumn } from './column_types'; @@ -51,6 +52,7 @@ export const percentileOperation: OperationDefinition { if (supportedFieldTypes.includes(fieldType) && aggregatable && !aggregationRestrictions) { @@ -73,13 +75,14 @@ export const percentileOperation: OperationDefinition ofName(getSafeName(column.sourceField, indexPattern), column.params.percentile), - buildColumn: ({ field, previousColumn, indexPattern }) => { + buildColumn: ({ field, previousColumn, indexPattern }, columnParams) => { const existingPercentileParam = previousColumn?.operationType === 'percentile' && previousColumn.params && 'percentile' in previousColumn.params && previousColumn.params.percentile; - const newPercentileParam = existingPercentileParam || DEFAULT_PERCENTILE_VALUE; + const newPercentileParam = + columnParams?.percentile ?? (existingPercentileParam || DEFAULT_PERCENTILE_VALUE); return { label: ofName(getSafeName(field.name, indexPattern), newPercentileParam), dataType: 'number', @@ -87,7 +90,7 @@ export const percentileOperation: OperationDefinition { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx index 2e7307f6a2ec4..b094d3f0ff5cd 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx @@ -28,6 +28,7 @@ const defaultProps = { data: dataPluginMock.createStartContract(), http: {} as HttpSetup, indexPattern: createMockedIndexPattern(), + operationDefinitionMap: {}, }; describe('terms', () => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts index c506e800d6d01..4dd56d2de1144 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts @@ -7,6 +7,7 @@ import type { OperationMetadata } from '../../types'; import { + copyColumn, insertNewColumn, replaceColumn, updateColumnParam, @@ -23,7 +24,7 @@ import type { IndexPattern, IndexPatternLayer } from '../types'; import { documentField } from '../document_field'; import { getFieldByNameFactory } from '../pure_helpers'; import { generateId } from '../../id_generator'; -import { createMockedReferenceOperation } from './mocks'; +import { createMockedFullReference } from './mocks'; jest.mock('../operations'); jest.mock('../../id_generator'); @@ -89,13 +90,126 @@ describe('state_helpers', () => { (generateId as jest.Mock).mockImplementation(() => `id${++count}`); // @ts-expect-error we are inserting an invalid type - operationDefinitionMap.testReference = createMockedReferenceOperation(); + operationDefinitionMap.testReference = createMockedFullReference(); }); afterEach(() => { delete operationDefinitionMap.testReference; }); + describe('copyColumn', () => { + it('should recursively modify a formula and update the math ast', () => { + const source = { + dataType: 'number' as const, + isBucketed: false, + label: 'Formula', + operationType: 'formula' as const, + params: { + formula: 'moving_average(sum(bytes), window=5)', + isFormulaBroken: false, + }, + references: ['formulaX3'], + }; + const math = { + customLabel: true, + dataType: 'number' as const, + isBucketed: false, + label: 'math', + operationType: 'math' as const, + params: { tinymathAst: 'formulaX2' }, + references: ['formulaX2'], + }; + const sum = { + customLabel: true, + dataType: 'number' as const, + isBucketed: false, + label: 'formulaX0', + operationType: 'sum' as const, + scale: 'ratio' as const, + sourceField: 'bytes', + }; + const movingAvg = { + customLabel: true, + dataType: 'number' as const, + isBucketed: false, + label: 'formulaX2', + operationType: 'moving_average' as const, + params: { window: 5 }, + references: ['formulaX1'], + }; + expect( + copyColumn({ + layer: { + indexPatternId: '', + columnOrder: [], + columns: { + source, + formulaX0: sum, + formulaX1: math, + formulaX2: movingAvg, + formulaX3: { + ...math, + label: 'formulaX3', + references: ['formulaX2'], + params: { tinymathAst: 'formulaX2' }, + }, + }, + }, + targetId: 'copy', + sourceColumn: source, + shouldDeleteSource: false, + indexPattern, + sourceColumnId: 'source', + }) + ).toEqual({ + indexPatternId: '', + columnOrder: [ + 'source', + 'formulaX0', + 'formulaX1', + 'formulaX2', + 'formulaX3', + 'copyX0', + 'copyX1', + 'copyX2', + 'copyX3', + 'copy', + ], + columns: { + source, + formulaX0: sum, + formulaX1: math, + formulaX2: movingAvg, + formulaX3: { + ...math, + label: 'formulaX3', + references: ['formulaX2'], + params: { tinymathAst: 'formulaX2' }, + }, + copy: expect.objectContaining({ ...source, references: ['copyX3'] }), + copyX0: expect.objectContaining({ ...sum, label: 'copyX0' }), + copyX1: expect.objectContaining({ + ...math, + label: 'copyX1', + references: ['copyX0'], + params: { tinymathAst: 'copyX0' }, + }), + copyX2: expect.objectContaining({ + ...movingAvg, + label: 'copyX2', + references: ['copyX1'], + }), + copyX3: expect.objectContaining({ + ...math, + label: 'copyX3', + references: ['copyX2'], + params: { tinymathAst: 'copyX2' }, + }), + }, + }); + }); + }); + describe('insertNewColumn', () => { it('should throw for invalid operations', () => { expect(() => { @@ -195,7 +309,7 @@ describe('state_helpers', () => { ).toEqual(expect.objectContaining({ columnOrder: ['col1', 'col2'] })); }); - it('should insert a metric after buckets, but before references', () => { + it('should insert a metric after references', () => { const layer: IndexPatternLayer = { indexPatternId: '1', columnOrder: ['col1'], @@ -231,7 +345,7 @@ describe('state_helpers', () => { field: documentField, visualizationGroups: [], }) - ).toEqual(expect.objectContaining({ columnOrder: ['col1', 'col2', 'col3'] })); + ).toEqual(expect.objectContaining({ columnOrder: ['col1', 'col3', 'col2'] })); }); it('should insert new buckets at the end of previous buckets', () => { @@ -1074,7 +1188,7 @@ describe('state_helpers', () => { referenceIds: ['id1'], }) ); - expect(result.columnOrder).toEqual(['id1', 'col1']); + expect(result.columnOrder).toEqual(['col1', 'id1']); expect(result.columns).toEqual( expect.objectContaining({ id1: expectedColumn, @@ -1196,7 +1310,7 @@ describe('state_helpers', () => { op: 'testReference', }); - expect(result.columnOrder).toEqual(['id1', 'col1']); + expect(result.columnOrder).toEqual(['col1', 'id1']); expect(result.columns).toEqual({ id1: expect.objectContaining({ operationType: 'average', @@ -1426,6 +1540,83 @@ describe('state_helpers', () => { ); }); + it('should transition from managedReference to fullReference by deleting the managedReference', () => { + const math = { + customLabel: true, + dataType: 'number' as const, + isBucketed: false, + label: 'math', + operationType: 'math' as const, + }; + const layer: IndexPatternLayer = { + indexPatternId: '', + columnOrder: [], + columns: { + source: { + dataType: 'number' as const, + isBucketed: false, + label: 'Formula', + operationType: 'formula' as const, + params: { + formula: 'moving_average(sum(bytes), window=5)', + isFormulaBroken: false, + }, + references: ['formulaX3'], + }, + formulaX0: { + customLabel: true, + dataType: 'number' as const, + isBucketed: false, + label: 'formulaX0', + operationType: 'sum' as const, + scale: 'ratio' as const, + sourceField: 'bytes', + }, + formulaX1: { + ...math, + label: 'formulaX1', + references: ['formulaX0'], + params: { tinymathAst: 'formulaX0' }, + }, + formulaX2: { + customLabel: true, + dataType: 'number' as const, + isBucketed: false, + label: 'formulaX2', + operationType: 'moving_average' as const, + params: { window: 5 }, + references: ['formulaX1'], + }, + formulaX3: { + ...math, + label: 'formulaX3', + references: ['formulaX2'], + params: { tinymathAst: 'formulaX2' }, + }, + }, + }; + + expect( + replaceColumn({ + layer, + indexPattern, + columnId: 'source', + // @ts-expect-error not statically available + op: 'secondTest', + }) + ).toEqual( + expect.objectContaining({ + columnOrder: ['source'], + columns: { + source: expect.objectContaining({ + operationType: 'secondTest', + references: ['id1'], + }), + }, + }) + ); + }); + it('should transition by using the field from the previous reference if nothing else works (case new5)', () => { const layer: IndexPatternLayer = { indexPatternId: '1', @@ -1459,7 +1650,7 @@ describe('state_helpers', () => { }) ).toEqual( expect.objectContaining({ - columnOrder: ['id1', 'output'], + columnOrder: ['output', 'id1'], columns: { id1: expect.objectContaining({ sourceField: 'timestamp', @@ -2051,58 +2242,78 @@ describe('state_helpers', () => { ).toEqual(['col1', 'col3', 'col2']); }); - it('should correctly sort references to other references', () => { + it('does not topologically sort formulas, but keeps the relative order', () => { expect( getColumnOrder({ - columnOrder: [], indexPatternId: '', + columnOrder: [], columns: { - bucket: { - label: 'Top values of category', - dataType: 'string', + count: { + label: 'count', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: 'Records', + customLabel: true, + }, + date: { + label: 'timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: 'timestamp', isBucketed: true, - - // Private - operationType: 'terms', - sourceField: 'category', + scale: 'interval', params: { - size: 5, - orderBy: { - type: 'alphabetical', - }, - orderDirection: 'asc', + interval: 'auto', }, }, - metric: { - label: 'Average of bytes', + formula: { + label: 'Formula', dataType: 'number', + operationType: 'formula', isBucketed: false, - - // Private - operationType: 'average', - sourceField: 'bytes', + scale: 'ratio', + params: { + formula: 'count() + count()', + isFormulaBroken: false, + }, + references: ['math'], }, - ref2: { - label: 'Ref2', + countX0: { + label: 'countX0', dataType: 'number', + operationType: 'count', isBucketed: false, - - // @ts-expect-error only for testing - operationType: 'testReference', - references: ['ref1'], + scale: 'ratio', + sourceField: 'Records', + customLabel: true, }, - ref1: { - label: 'Ref', + math: { + label: 'math', dataType: 'number', + operationType: 'math', isBucketed: false, - - // @ts-expect-error only for testing - operationType: 'testReference', - references: ['bucket'], + scale: 'ratio', + params: { + tinymathAst: { + type: 'function', + name: 'add', + // @ts-expect-error String args are not valid tinymath, but signals something unique to Lens + args: ['countX0', 'count'], + location: { + min: 0, + max: 17, + }, + text: 'count() + count()', + }, + }, + references: ['countX0', 'count'], + customLabel: true, }, }, }) - ).toEqual(['bucket', 'metric', 'ref1', 'ref2']); + ).toEqual(['date', 'count', 'formula', 'countX0', 'math']); }); }); @@ -2459,7 +2670,8 @@ describe('state_helpers', () => { }, }, 'col1', - indexPattern + indexPattern, + operationDefinitionMap ); }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts index beebb72fff676..bc4a61eda3969 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts @@ -6,6 +6,7 @@ */ import _, { partition } from 'lodash'; +import { getSortScoreByPriority } from './operations'; import type { OperationMetadata, VisualizationDimensionGroupConfig } from '../../types'; import { operationDefinitionMap, @@ -15,9 +16,9 @@ import { RequiredReference, } from './definitions'; import type { IndexPattern, IndexPatternField, IndexPatternLayer } from '../types'; -import { getSortScoreByPriority } from './operations'; import { generateId } from '../../id_generator'; import { ReferenceBasedIndexPatternColumn } from './definitions/column_types'; +import { FormulaIndexPatternColumn, regenerateLayerFromAst } from './definitions/formula'; interface ColumnChange { op: OperationType; @@ -32,7 +33,7 @@ interface ColumnChange { interface ColumnCopy { layer: IndexPatternLayer; - columnId: string; + targetId: string; sourceColumn: IndexPatternColumn; sourceColumnId: string; indexPattern: IndexPattern; @@ -41,16 +42,19 @@ interface ColumnCopy { export function copyColumn({ layer, - columnId, + targetId, sourceColumn, shouldDeleteSource, indexPattern, sourceColumnId, }: ColumnCopy): IndexPatternLayer { - let modifiedLayer = { - ...layer, - columns: copyReferencesRecursively(layer.columns, sourceColumn, columnId), - }; + let modifiedLayer = copyReferencesRecursively( + layer, + sourceColumn, + sourceColumnId, + targetId, + indexPattern + ); if (shouldDeleteSource) { modifiedLayer = deleteColumn({ @@ -64,16 +68,25 @@ export function copyColumn({ } function copyReferencesRecursively( - columns: Record, + layer: IndexPatternLayer, sourceColumn: IndexPatternColumn, - columnId: string -) { + sourceId: string, + targetId: string, + indexPattern: IndexPattern +): IndexPatternLayer { + let columns = { ...layer.columns }; if ('references' in sourceColumn) { - if (columns[columnId]) { - return columns; + if (columns[targetId]) { + return layer; + } + + const def = operationDefinitionMap[sourceColumn.operationType]; + if ('createCopy' in def) { + // Allow managed references to recursively insert new columns + return def.createCopy(layer, sourceId, targetId, indexPattern, operationDefinitionMap); } + sourceColumn?.references.forEach((ref, index) => { - // TODO: Add an option to assign IDs without generating the new one const newId = generateId(); const refColumn = { ...columns[ref] }; @@ -82,10 +95,10 @@ function copyReferencesRecursively( // and visible columns shouldn't be copied const refColumnWithInnerRefs = 'references' in refColumn - ? copyReferencesRecursively(columns, refColumn, newId) // if a column has references, copy them too + ? copyReferencesRecursively(layer, refColumn, sourceId, newId, indexPattern).columns // if a column has references, copy them too : { [newId]: refColumn }; - const newColumn = columns[columnId]; + const newColumn = columns[targetId]; let references = [newId]; if (newColumn && 'references' in newColumn) { references = newColumn.references; @@ -95,7 +108,7 @@ function copyReferencesRecursively( columns = { ...columns, ...refColumnWithInnerRefs, - [columnId]: { + [targetId]: { ...sourceColumn, references, }, @@ -104,10 +117,11 @@ function copyReferencesRecursively( } else { columns = { ...columns, - [columnId]: sourceColumn, + [targetId]: sourceColumn, }; } - return columns; + + return { ...layer, columns, columnOrder: getColumnOrder({ ...layer, columns }) }; } export function insertOrReplaceColumn(args: ColumnChange): IndexPatternLayer { @@ -141,12 +155,12 @@ export function insertNewColumn({ const baseOptions = { indexPattern, previousColumn: layer.columns[columnId] }; - if (operationDefinition.input === 'none') { + if (operationDefinition.input === 'none' || operationDefinition.input === 'managedReference') { if (field) { throw new Error(`Can't create operation ${op} with the provided field ${field.name}`); } const possibleOperation = operationDefinition.getPossibleOperation(); - const isBucketed = Boolean(possibleOperation.isBucketed); + const isBucketed = Boolean(possibleOperation?.isBucketed); const addOperationFn = isBucketed ? addBucket : addMetric; return updateDefaultLabels( addOperationFn( @@ -333,6 +347,19 @@ export function replaceColumn({ tempLayer = resetIncomplete(tempLayer, columnId); + if (previousDefinition.input === 'managedReference') { + // Every transition away from a managedReference resets it, we don't have a way to keep the state + tempLayer = deleteColumn({ layer: tempLayer, columnId, indexPattern }); + return insertNewColumn({ + layer: tempLayer, + columnId, + indexPattern, + op, + field, + visualizationGroups, + }); + } + if (operationDefinition.input === 'fullReference') { return applyReferenceTransition({ layer: tempLayer, @@ -395,6 +422,54 @@ export function replaceColumn({ } } + // TODO: Refactor all this to be more generic and know less about Formula + // if managed it has to look at the full picture to have a seamless transition + if (operationDefinition.input === 'managedReference') { + const newColumn = copyCustomLabel( + operationDefinition.buildColumn( + { ...baseOptions, layer: tempLayer }, + previousColumn.params, + operationDefinitionMap + ), + previousColumn + ) as FormulaIndexPatternColumn; + + // now remove the previous references + if (previousDefinition.input === 'fullReference') { + (previousColumn as ReferenceBasedIndexPatternColumn).references.forEach((id: string) => { + tempLayer = deleteColumn({ layer: tempLayer, columnId: id, indexPattern }); + }); + } + + const basicLayer = { ...tempLayer, columns: { ...tempLayer.columns, [columnId]: newColumn } }; + // rebuild the references again for the specific AST generated + let newLayer; + + try { + newLayer = newColumn.params.formula + ? regenerateLayerFromAst( + newColumn.params.formula, + basicLayer, + columnId, + newColumn, + indexPattern, + operationDefinitionMap + ).newLayer + : basicLayer; + } catch (e) { + newLayer = basicLayer; + } + + return updateDefaultLabels( + { + ...tempLayer, + columnOrder: getColumnOrder(newLayer), + columns: adjustColumnReferencesForChangedColumn(newLayer, columnId), + }, + indexPattern + ); + } + // This logic comes after the transitions because they need to look at previous columns if (previousDefinition.input === 'fullReference') { (previousColumn as ReferenceBasedIndexPatternColumn).references.forEach((id: string) => { @@ -976,8 +1051,12 @@ export function deleteColumn({ ); } -// Derives column order from column object, respects existing columnOrder -// when possible, but also allows new columns to be added to the order +// Column order mostly affects the visual order in the UI. It is derived +// from the columns objects, respecting any existing columnOrder relationships, +// but allowing new columns to be inserted +// +// This does NOT topologically sort references, as this would cause the order in the UI +// to change. Reference order is determined before creating the pipeline in to_expression export function getColumnOrder(layer: IndexPatternLayer): string[] { const entries = Object.entries(layer.columns); entries.sort(([idA], [idB]) => { @@ -992,16 +1071,6 @@ export function getColumnOrder(layer: IndexPatternLayer): string[] { } }); - // If a reference has another reference as input, put it last in sort order - entries.sort(([idA, a], [idB, b]) => { - if ('references' in a && a.references.includes(idB)) { - return 1; - } - if ('references' in b && b.references.includes(idA)) { - return -1; - } - return 0; - }); const [aggregations, metrics] = _.partition(entries, ([, col]) => col.isBucketed); return aggregations.map(([id]) => id).concat(metrics.map(([id]) => id)); @@ -1019,8 +1088,22 @@ export function getExistingColumnGroups(layer: IndexPatternLayer): [string[], st /** * Returns true if the given column can be applied to the given index pattern */ -export function isColumnTransferable(column: IndexPatternColumn, newIndexPattern: IndexPattern) { - return operationDefinitionMap[column.operationType].isTransferable(column, newIndexPattern); +export function isColumnTransferable( + column: IndexPatternColumn, + newIndexPattern: IndexPattern, + layer: IndexPatternLayer +): boolean { + return ( + operationDefinitionMap[column.operationType].isTransferable( + column, + newIndexPattern, + operationDefinitionMap + ) && + (!('references' in column) || + column.references.every((columnId) => + isColumnTransferable(layer.columns[columnId], newIndexPattern, layer) + )) + ); } export function updateLayerIndexPattern( @@ -1028,15 +1111,7 @@ export function updateLayerIndexPattern( newIndexPattern: IndexPattern ): IndexPatternLayer { const keptColumns: IndexPatternLayer['columns'] = _.pickBy(layer.columns, (column) => { - if ('references' in column) { - return ( - isColumnTransferable(column, newIndexPattern) && - column.references.every((columnId) => - isColumnTransferable(layer.columns[columnId], newIndexPattern) - ) - ); - } - return isColumnTransferable(column, newIndexPattern); + return isColumnTransferable(column, newIndexPattern, layer); }); const newColumns: IndexPatternLayer['columns'] = _.mapValues(keptColumns, (column) => { const operationDefinition = operationDefinitionMap[column.operationType]; @@ -1069,7 +1144,7 @@ export function getErrorMessages( .flatMap(([columnId, column]) => { const def = operationDefinitionMap[column.operationType]; if (def.getErrorMessage) { - return def.getErrorMessage(layer, columnId, indexPattern); + return def.getErrorMessage(layer, columnId, indexPattern, operationDefinitionMap); } }) // remove the undefined values @@ -1147,6 +1222,23 @@ export function resetIncomplete(layer: IndexPatternLayer, columnId: string): Ind return { ...layer, incompleteColumns }; } +// managedReferences have a relaxed policy about operation allowed, so let them pass +function maybeValidateOperations({ + column, + validation, +}: { + column: IndexPatternColumn; + validation: RequiredReference; +}) { + if (!validation.specificOperations) { + return true; + } + if (operationDefinitionMap[column.operationType].input === 'managedReference') { + return true; + } + return validation.specificOperations.includes(column.operationType); +} + export function isColumnValidAsReference({ column, validation, @@ -1159,7 +1251,29 @@ export function isColumnValidAsReference({ const operationDefinition = operationDefinitionMap[operationType]; return ( validation.input.includes(operationDefinition.input) && - (!validation.specificOperations || validation.specificOperations.includes(operationType)) && + maybeValidateOperations({ + column, + validation, + }) && validation.validateMetadata(column) ); } + +export function getManagedColumnsFrom( + columnId: string, + columns: Record +): Array<[string, IndexPatternColumn]> { + const allNodes: Record = {}; + Object.entries(columns).forEach(([id, col]) => { + allNodes[id] = 'references' in col ? [...col.references] : []; + }); + const queue: string[] = allNodes[columnId]; + const store: Array<[string, IndexPatternColumn]> = []; + + while (queue.length > 0) { + const nextId = queue.shift()!; + store.push([nextId, columns[nextId]]); + queue.push(...allNodes[nextId]); + } + return store.filter(([, column]) => column); +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/mocks.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/mocks.ts index 429d881341e79..4a2e065269063 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/mocks.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/mocks.ts @@ -8,7 +8,7 @@ import type { OperationMetadata } from '../../types'; import type { OperationType } from './definitions'; -export const createMockedReferenceOperation = () => { +export const createMockedFullReference = () => { return { input: 'fullReference', displayName: 'Reference test', diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts index 4c54b777b66f3..7df096c27d9a0 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.test.ts @@ -354,6 +354,14 @@ describe('getOperationTypesForField', () => { "operationType": "last_value", "type": "field", }, + Object { + "operationType": "math", + "type": "managedReference", + }, + Object { + "operationType": "formula", + "type": "managedReference", + }, ], }, Object { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts index a45650f9323f9..437d2af005961 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/operations.ts @@ -106,6 +106,10 @@ type OperationFieldTuple = | { type: 'fullReference'; operationType: OperationType; + } + | { + type: 'managedReference'; + operationType: OperationType; }; /** @@ -138,7 +142,11 @@ type OperationFieldTuple = * ] * ``` */ -export function getAvailableOperationsByMetadata(indexPattern: IndexPattern) { +export function getAvailableOperationsByMetadata( + indexPattern: IndexPattern, + // For consistency in testing + customOperationDefinitionMap?: Record +) { const operationByMetadata: Record< string, { operationMetaData: OperationMetadata; operations: OperationFieldTuple[] } @@ -161,36 +169,49 @@ export function getAvailableOperationsByMetadata(indexPattern: IndexPattern) { } }; - operationDefinitions.sort(getSortScoreByPriority).forEach((operationDefinition) => { - if (operationDefinition.input === 'field') { - indexPattern.fields.forEach((field) => { + (customOperationDefinitionMap + ? Object.values(customOperationDefinitionMap) + : operationDefinitions + ) + .sort(getSortScoreByPriority) + .forEach((operationDefinition) => { + if (operationDefinition.input === 'field') { + indexPattern.fields.forEach((field) => { + addToMap( + { + type: 'field', + operationType: operationDefinition.type, + field: field.name, + }, + operationDefinition.getPossibleOperationForField(field) + ); + }); + } else if (operationDefinition.input === 'none') { addToMap( { - type: 'field', + type: 'none', operationType: operationDefinition.type, - field: field.name, }, - operationDefinition.getPossibleOperationForField(field) - ); - }); - } else if (operationDefinition.input === 'none') { - addToMap( - { - type: 'none', - operationType: operationDefinition.type, - }, - operationDefinition.getPossibleOperation() - ); - } else if (operationDefinition.input === 'fullReference') { - const validOperation = operationDefinition.getPossibleOperation(indexPattern); - if (validOperation) { - addToMap( - { type: 'fullReference', operationType: operationDefinition.type }, - validOperation + operationDefinition.getPossibleOperation() ); + } else if (operationDefinition.input === 'fullReference') { + const validOperation = operationDefinition.getPossibleOperation(indexPattern); + if (validOperation) { + addToMap( + { type: 'fullReference', operationType: operationDefinition.type }, + validOperation + ); + } + } else if (operationDefinition.input === 'managedReference') { + const validOperation = operationDefinition.getPossibleOperation(); + if (validOperation) { + addToMap( + { type: 'managedReference', operationType: operationDefinition.type }, + validOperation + ); + } } - } - }); + }); return Object.values(operationByMetadata); } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts b/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts index 4f596aa282510..4905bd75d6498 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts @@ -60,22 +60,26 @@ function getExpressionForLayer( const [referenceEntries, esAggEntries] = partition( columnEntries, - ([, col]) => operationDefinitionMap[col.operationType]?.input === 'fullReference' + ([, col]) => + operationDefinitionMap[col.operationType]?.input === 'fullReference' || + operationDefinitionMap[col.operationType]?.input === 'managedReference' ); if (referenceEntries.length || esAggEntries.length) { const aggs: ExpressionAstExpressionBuilder[] = []; const expressions: ExpressionAstFunction[] = []; - referenceEntries.forEach(([colId, col]) => { + + sortedReferences(referenceEntries).forEach((colId) => { + const col = columns[colId]; const def = operationDefinitionMap[col.operationType]; - if (def.input === 'fullReference') { + if (def.input === 'fullReference' || def.input === 'managedReference') { expressions.push(...def.toExpression(layer, colId, indexPattern)); } }); esAggEntries.forEach(([colId, col]) => { const def = operationDefinitionMap[col.operationType]; - if (def.input !== 'fullReference') { + if (def.input !== 'fullReference' && def.input !== 'managedReference') { const wrapInFilter = Boolean(def.filterable && col.filter); let aggAst = def.toEsAggsFn( col, @@ -112,6 +116,10 @@ function getExpressionForLayer( } }); + if (esAggEntries.length === 0) { + // Return early if there are no aggs, for example if the user has an empty formula + return null; + } const idMap = esAggEntries.reduce((currentIdMap, [colId, column], index) => { const esAggsId = `col-${index}-${colId}`; return { @@ -245,6 +253,33 @@ function getExpressionForLayer( return null; } +// Topologically sorts references so that we can execute them in sequence +function sortedReferences(columns: Array) { + const allNodes: Record = {}; + columns.forEach(([id, col]) => { + allNodes[id] = 'references' in col ? col.references : []; + }); + // remove real metric references + columns.forEach(([id]) => { + allNodes[id] = allNodes[id].filter((refId) => !!allNodes[refId]); + }); + const ordered: string[] = []; + + while (ordered.length < columns.length) { + Object.keys(allNodes).forEach((id) => { + if (allNodes[id].length === 0) { + ordered.push(id); + delete allNodes[id]; + Object.keys(allNodes).forEach((k) => { + allNodes[k] = allNodes[k].filter((i) => i !== id); + }); + } + }); + } + + return ordered; +} + export function toExpression( state: IndexPatternPrivateState, layerId: string, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts b/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts index 19c37da5bf2a9..23c7adb86d34f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/utils.ts @@ -62,7 +62,12 @@ export function isColumnInvalid( Boolean(getReferencesErrors(layer, column, indexPattern).filter(Boolean).length); return ( - !!operationDefinition.getErrorMessage?.(layer, columnId, indexPattern) || referencesHaveErrors + !!operationDefinition.getErrorMessage?.( + layer, + columnId, + indexPattern, + operationDefinitionMap + ) || referencesHaveErrors ); } @@ -74,7 +79,12 @@ function getReferencesErrors( return column.references?.map((referenceId: string) => { const referencedOperation = layer.columns[referenceId]?.operationType; const referencedDefinition = operationDefinitionMap[referencedOperation]; - return referencedDefinition?.getErrorMessage?.(layer, referenceId, indexPattern); + return referencedDefinition?.getErrorMessage?.( + layer, + referenceId, + indexPattern, + operationDefinitionMap + ); }); } From 90db9dfae84401478b2c700a3c61b181109bdbe0 Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Fri, 14 May 2021 17:14:18 -0400 Subject: [PATCH 114/144] [Uptime] Improve accessibility labeling for `FilterPopover` component (#99714) * Improve accessibility labeling for `FilterPopover` component. * Simplify test revisions. * Simplify unit test. * Refactor test to use text formatter helper functions. --- .../filter_group/filter_popover.test.tsx | 23 +++++++--- .../overview/filter_group/filter_popover.tsx | 42 ++++++++++++------- 2 files changed, 46 insertions(+), 19 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.test.tsx b/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.test.tsx index bccebb21718bf..9094b280fc8ef 100644 --- a/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.test.tsx +++ b/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.test.tsx @@ -7,7 +7,12 @@ import React from 'react'; import { fireEvent, waitFor, waitForElementToBeRemoved } from '@testing-library/react'; -import { FilterPopoverProps, FilterPopover } from './filter_popover'; +import { + FilterPopoverProps, + FilterPopover, + removeFilterForItemLabel, + filterByItemLabel, +} from './filter_popover'; import { render } from '../../../lib/helper/rtl_helpers'; describe('FilterPopover component', () => { @@ -77,17 +82,25 @@ describe('FilterPopover component', () => { fireEvent.click(uptimeFilterButton); - const generateLabelText = (item: string) => `Filter by ${props.title} ${item}.`; + selectedPropsItems.forEach((item) => { + expect(getByLabelText(removeFilterForItemLabel(item, props.title))); + }); itemsToClick.forEach((item) => { - const optionButtonLabelText = generateLabelText(item); - const optionButton = getByLabelText(optionButtonLabelText); + let optionButton: HTMLElement; + if (selectedPropsItems.some((i) => i === item)) { + optionButton = getByLabelText(removeFilterForItemLabel(item, props.title)); + } else { + optionButton = getByLabelText(filterByItemLabel(item, props.title)); + } fireEvent.click(optionButton); }); fireEvent.click(uptimeFilterButton); - await waitForElementToBeRemoved(() => queryByLabelText(generateLabelText(itemsToClick[0]))); + await waitForElementToBeRemoved(() => + queryByLabelText(`by ${props.title} ${itemsToClick[0]}`, { exact: false }) + ); expect(props.onFilterFieldChange).toHaveBeenCalledTimes(1); expect(props.onFilterFieldChange).toHaveBeenCalledWith(props.fieldName, expectedSelections); diff --git a/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.tsx b/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.tsx index 23e17802a6835..79d39e6d2dd44 100644 --- a/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.tsx +++ b/x-pack/plugins/uptime/public/components/overview/filter_group/filter_popover.tsx @@ -29,6 +29,18 @@ export interface FilterPopoverProps { const isItemSelected = (selectedItems: string[], item: string): 'on' | undefined => selectedItems.find((selected) => selected === item) ? 'on' : undefined; +export const filterByItemLabel = (item: string, title: string) => + i18n.translate('xpack.uptime.filterPopover.filterItem.label', { + defaultMessage: 'Filter by {title} {item}.', + values: { item, title }, + }); + +export const removeFilterForItemLabel = (item: string, title: string) => + i18n.translate('xpack.uptime.filterPopover.removeFilterItem.label', { + defaultMessage: 'Remove filter by {title} {item}.', + values: { item, title }, + }); + export const FilterPopover = ({ fieldName, id, @@ -126,20 +138,22 @@ export const FilterPopover = ({ /> {!loading && - itemsToDisplay.map((item) => ( - toggleSelectedItems(item, tempSelectedItems, setTempSelectedItems)} - > - {item} - - ))} + itemsToDisplay.map((item) => { + const checked = isItemSelected(tempSelectedItems, item); + return ( + toggleSelectedItems(item, tempSelectedItems, setTempSelectedItems)} + > + {item} + + ); + })} {id === 'location' && items.length === 0 && } ); From 091ca4384af29bad6772280e573fed91711f656c Mon Sep 17 00:00:00 2001 From: Constance Date: Fri, 14 May 2021 15:13:26 -0700 Subject: [PATCH 115/144] [App Search] Meta engines schema view (#100087) * Set up TruncatedEnginesList component - Used for listing source engines - New in Kibana: now links to source engine schema pages for easier schema fixes! * Add meta engines schema active fields table * Render meta engine schema conflicts table & warning callout * Update x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.tsx Co-authored-by: Jason Stoltzfus Co-authored-by: Jason Stoltzfus --- .../components/schema/components/index.ts | 3 + .../meta_engines_conflicts_table.test.tsx | 69 ++++++++++++++++ .../meta_engines_conflicts_table.tsx | 69 ++++++++++++++++ .../meta_engines_schema_table.test.tsx | 63 +++++++++++++++ .../components/meta_engines_schema_table.tsx | 78 +++++++++++++++++++ .../truncated_engines_list.test.tsx | 41 ++++++++++ .../components/truncated_engines_list.tsx | 60 ++++++++++++++ .../schema/views/meta_engine_schema.test.tsx | 15 +++- .../schema/views/meta_engine_schema.tsx | 76 +++++++++++++++++- 9 files changed, 469 insertions(+), 5 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.tsx diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts index 7da44849b5bc0..6e17547a93980 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/index.ts @@ -8,3 +8,6 @@ export { SchemaCallouts } from './schema_callouts'; export { SchemaTable } from './schema_table'; export { EmptyState } from './empty_state'; +export { MetaEnginesSchemaTable } from './meta_engines_schema_table'; +export { MetaEnginesConflictsTable } from './meta_engines_conflicts_table'; +export { TruncatedEnginesList } from './truncated_engines_list'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.test.tsx new file mode 100644 index 0000000000000..eb40d70e13ff8 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.test.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues } from '../../../../__mocks__'; + +import React from 'react'; + +import { mount } from 'enzyme'; + +import { EuiTable, EuiTableHeaderCell, EuiTableRow } from '@elastic/eui'; + +import { MetaEnginesConflictsTable } from './'; + +describe('MetaEnginesConflictsTable', () => { + const values = { + conflictingFields: { + hello_field: { + text: ['engine1'], + number: ['engine2'], + date: ['engine3'], + }, + world_field: { + text: ['engine1'], + location: ['engine2', 'engine3', 'engine4'], + }, + }, + }; + + setMockValues(values); + const wrapper = mount(); + const fieldNames = wrapper.find('EuiTableRowCell[data-test-subj="fieldName"]'); + const fieldTypes = wrapper.find('EuiTableRowCell[data-test-subj="fieldTypes"]'); + const engines = wrapper.find('EuiTableRowCell[data-test-subj="enginesPerFieldType"]'); + + it('renders', () => { + expect(wrapper.find(EuiTable)).toHaveLength(1); + expect(wrapper.find(EuiTableHeaderCell).at(0).text()).toEqual('Field name'); + expect(wrapper.find(EuiTableHeaderCell).at(1).text()).toEqual('Field type conflicts'); + expect(wrapper.find(EuiTableHeaderCell).at(2).text()).toEqual('Engines'); + }); + + it('renders a rowspan on the initial field name column so that it stretches to all associated field conflict rows', () => { + expect(fieldNames).toHaveLength(2); + expect(fieldNames.at(0).prop('rowSpan')).toEqual(3); + expect(fieldNames.at(1).prop('rowSpan')).toEqual(2); + }); + + it('renders a row for each field type conflict and the engines that have that field type', () => { + expect(wrapper.find(EuiTableRow)).toHaveLength(5); + + expect(fieldNames.at(0).text()).toEqual('hello_field'); + expect(fieldTypes.at(0).text()).toEqual('text'); + expect(engines.at(0).text()).toEqual('engine1'); + expect(fieldTypes.at(1).text()).toEqual('number'); + expect(engines.at(1).text()).toEqual('engine2'); + expect(fieldTypes.at(2).text()).toEqual('date'); + expect(engines.at(2).text()).toEqual('engine3'); + + expect(fieldNames.at(1).text()).toEqual('world_field'); + expect(fieldTypes.at(3).text()).toEqual('text'); + expect(engines.at(3).text()).toEqual('engine1'); + expect(fieldTypes.at(4).text()).toEqual('location'); + expect(engines.at(4).text()).toEqual('engine2, engine3, +1'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.tsx new file mode 100644 index 0000000000000..a37caafe69a59 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_conflicts_table.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useValues } from 'kea'; + +import { + EuiTable, + EuiTableHeader, + EuiTableHeaderCell, + EuiTableBody, + EuiTableRow, + EuiTableRowCell, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { FIELD_NAME } from '../../../../shared/schema/constants'; +import { ENGINES_TITLE } from '../../engines'; + +import { MetaEngineSchemaLogic } from '../schema_meta_engine_logic'; + +import { TruncatedEnginesList } from './'; + +export const MetaEnginesConflictsTable: React.FC = () => { + const { conflictingFields } = useValues(MetaEngineSchemaLogic); + + return ( + + + {FIELD_NAME} + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.fieldTypeConflicts', + { defaultMessage: 'Field type conflicts' } + )} + + {ENGINES_TITLE} + + + {Object.entries(conflictingFields).map(([fieldName, conflicts]) => + Object.entries(conflicts).map(([fieldType, engines], i) => { + const isFirstRow = i === 0; + return ( + + {isFirstRow && ( + + {fieldName} + + )} + {fieldType} + + + + + ); + }) + )} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.test.tsx new file mode 100644 index 0000000000000..7d377d5a92714 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.test.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues } from '../../../../__mocks__'; + +import React from 'react'; + +import { mount } from 'enzyme'; + +import { EuiTable, EuiTableHeaderCell, EuiTableRow, EuiTableRowCell } from '@elastic/eui'; + +import { MetaEnginesSchemaTable } from './'; + +describe('MetaEnginesSchemaTable', () => { + const values = { + schema: { + some_text_field: 'text', + some_number_field: 'number', + }, + fields: { + some_text_field: { + text: ['engine1', 'engine2'], + }, + some_number_field: { + number: ['engine1', 'engine2', 'engine3', 'engine4'], + }, + }, + }; + + setMockValues(values); + const wrapper = mount(); + const fieldNames = wrapper.find('EuiTableRowCell[data-test-subj="fieldName"]'); + const engines = wrapper.find('EuiTableRowCell[data-test-subj="engines"]'); + const fieldTypes = wrapper.find('EuiTableRowCell[data-test-subj="fieldType"]'); + + it('renders', () => { + expect(wrapper.find(EuiTable)).toHaveLength(1); + expect(wrapper.find(EuiTableHeaderCell).at(0).text()).toEqual('Field name'); + expect(wrapper.find(EuiTableHeaderCell).at(1).text()).toEqual('Engines'); + expect(wrapper.find(EuiTableHeaderCell).at(2).text()).toEqual('Field type'); + }); + + it('always renders an initial ID row', () => { + expect(wrapper.find('code').at(0).text()).toEqual('id'); + expect(wrapper.find(EuiTableRowCell).at(1).text()).toEqual('All'); + }); + + it('renders subsequent table rows for each schema field', () => { + expect(wrapper.find(EuiTableRow)).toHaveLength(3); + + expect(fieldNames.at(0).text()).toEqual('some_text_field'); + expect(engines.at(0).text()).toEqual('engine1, engine2'); + expect(fieldTypes.at(0).text()).toEqual('text'); + + expect(fieldNames.at(1).text()).toEqual('some_number_field'); + expect(engines.at(1).text()).toEqual('engine1, engine2, engine3, +1'); + expect(fieldTypes.at(1).text()).toEqual('number'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.tsx new file mode 100644 index 0000000000000..2367ad4e0c53e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/meta_engines_schema_table.tsx @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { useValues } from 'kea'; + +import { + EuiTable, + EuiTableHeader, + EuiTableHeaderCell, + EuiTableBody, + EuiTableRow, + EuiTableRowCell, + EuiText, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { FIELD_NAME, FIELD_TYPE } from '../../../../shared/schema/constants'; +import { ENGINES_TITLE } from '../../engines'; + +import { MetaEngineSchemaLogic } from '../schema_meta_engine_logic'; + +import { TruncatedEnginesList } from './'; + +export const MetaEnginesSchemaTable: React.FC = () => { + const { schema, fields } = useValues(MetaEngineSchemaLogic); + + return ( + + + {FIELD_NAME} + {ENGINES_TITLE} + {FIELD_TYPE} + + + + + + id + + + + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.allEngines', + { defaultMessage: 'All' } + )} + + + + + {Object.keys(fields).map((fieldName) => { + const fieldType = schema[fieldName]; + const engines = fields[fieldName][fieldType]; + + return ( + + + {fieldName} + + + + + + {fieldType} + + + ); + })} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.test.tsx new file mode 100644 index 0000000000000..193d727be00b5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.test.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { TruncatedEnginesList } from './'; + +describe('TruncatedEnginesList', () => { + it('renders a list of engines with links to their schema pages', () => { + const wrapper = shallow(); + + expect(wrapper.find('[data-test-subj="displayedEngine"]')).toHaveLength(3); + expect(wrapper.find('[data-test-subj="displayedEngine"]').first().prop('to')).toEqual( + '/engines/engine1/schema' + ); + }); + + it('renders a tooltip when the number of engines is greater than the cutoff', () => { + const wrapper = shallow( + + ); + + expect(wrapper.find('[data-test-subj="displayedEngine"]')).toHaveLength(1); + expect(wrapper.find('[data-test-subj="hiddenEnginesTooltip"]')).toHaveLength(1); + expect(wrapper.find('[data-test-subj="hiddenEnginesTooltip"]').prop('content')).toEqual( + 'engine2, engine3' + ); + }); + + it('does not render if no engines are passed', () => { + const wrapper = shallow(); + + expect(wrapper.isEmptyRender()).toBe(true); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.tsx new file mode 100644 index 0000000000000..a642eb99e3563 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/components/truncated_engines_list.tsx @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { Fragment } from 'react'; + +import { EuiText, EuiToolTip, EuiButtonEmpty } from '@elastic/eui'; + +import { EuiLinkTo } from '../../../../shared/react_router_helpers'; +import { ENGINE_SCHEMA_PATH } from '../../../routes'; +import { generateEncodedPath } from '../../../utils/encode_path_params'; + +interface Props { + engines?: string[]; + cutoff?: number; +} + +export const TruncatedEnginesList: React.FC = ({ engines, cutoff = 3 }) => { + if (!engines?.length) return null; + + const displayedEngines = engines.slice(0, cutoff); + const hiddenEngines = engines.slice(cutoff); + const SEPARATOR = ', '; + + return ( + + {displayedEngines.map((engineName, i) => { + const isLast = i === displayedEngines.length - 1; + return ( + + + {engineName} + + {!isLast ? SEPARATOR : ''} + + ); + })} + {hiddenEngines.length > 0 && ( + <> + {SEPARATOR} + + + +{hiddenEngines.length} + + + + )} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx index a6e9eef8efa70..b1322c148b577 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.test.tsx @@ -12,8 +12,12 @@ import React from 'react'; import { shallow } from 'enzyme'; +import { EuiCallOut } from '@elastic/eui'; + import { Loading } from '../../../../shared/loading'; +import { MetaEnginesSchemaTable, MetaEnginesConflictsTable } from '../components'; + import { MetaEngineSchema } from './'; describe('MetaEngineSchema', () => { @@ -33,8 +37,7 @@ describe('MetaEngineSchema', () => { it('renders', () => { const wrapper = shallow(); - expect(wrapper.isEmptyRender()).toBe(false); - // TODO: Check for schema components + expect(wrapper.find(MetaEnginesSchemaTable)).toHaveLength(1); }); it('calls loadSchema on mount', () => { @@ -49,4 +52,12 @@ describe('MetaEngineSchema', () => { expect(wrapper.find(Loading)).toHaveLength(1); }); + + it('renders an inactive fields callout & table when source engines have schema conflicts', () => { + setMockValues({ ...values, hasConflicts: true, conflictingFieldsCount: 5 }); + const wrapper = shallow(); + + expect(wrapper.find(EuiCallOut)).toHaveLength(1); + expect(wrapper.find(MetaEnginesConflictsTable)).toHaveLength(1); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx index 234fcdb5a5a50..4c0235cf81129 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/views/meta_engine_schema.tsx @@ -9,17 +9,19 @@ import React, { useEffect } from 'react'; import { useValues, useActions } from 'kea'; -import { EuiPageHeader, EuiPageContentBody } from '@elastic/eui'; +import { EuiPageHeader, EuiPageContentBody, EuiCallOut, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FlashMessages } from '../../../../shared/flash_messages'; import { Loading } from '../../../../shared/loading'; +import { DataPanel } from '../../data_panel'; +import { MetaEnginesSchemaTable, MetaEnginesConflictsTable } from '../components'; import { MetaEngineSchemaLogic } from '../schema_meta_engine_logic'; export const MetaEngineSchema: React.FC = () => { const { loadSchema } = useActions(MetaEngineSchemaLogic); - const { dataLoading } = useValues(MetaEngineSchemaLogic); + const { dataLoading, hasConflicts, conflictingFieldsCount } = useValues(MetaEngineSchemaLogic); useEffect(() => { loadSchema(); @@ -40,7 +42,75 @@ export const MetaEngineSchema: React.FC = () => { )} /> - TODO + + {hasConflicts && ( + <> + +

    + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.conflictsCalloutDescription', + { + defaultMessage: + 'The field(s) have an inconsistent field-type across the source engines that make up this meta engine. Apply a consistent field-type from the source engines to make these fields searchable.', + } + )} +

    +
    + + + )} + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.activeFieldsTitle', + { defaultMessage: 'Active fields' } + )} +

    + } + subtitle={i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.activeFieldsDescription', + { defaultMessage: 'Fields which belong to one or more engine.' } + )} + > + + + + {hasConflicts && ( + + {i18n.translate( + 'xpack.enterpriseSearch.appSearch.engine.schema.metaEngine.inactiveFieldsTitle', + { defaultMessage: 'Inactive fields' } + )} +

    q0;WRdftBe)g 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 Oi-C^ui2^N$(0>6Wy}U;N literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_advanced_6_1.png b/docs/user/dashboard/images/lens_advanced_6_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5cefa472a13f245a50b1ea7f99779cede077ef GIT binary patch literal 87054 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≧`Y`cvGZ~kIa&;6 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 literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_advanced_7_1.png b/docs/user/dashboard/images/lens_advanced_7_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3d66d5d7e4579ea04c0eab0e4a14827f86e0579b GIT binary patch literal 57583 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