From 0d3ddbe9d02f94abcf67060940a2e86eb0aa2297 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 7 May 2020 07:57:34 -0600 Subject: [PATCH 01/58] Fixes the client to setup SSL with the CA certificates for testing (#65598) ## Summary Fixes the non-legacy ES test client to work with SSL. Without this if you try to migrate `siem rules` or `alerting` or `CASE` or anything else that is using SSL based tests you get this error when trying to use the non-legacy: ```ts // pull in non-legacy service for functional tests const es = getService('es'); ``` ```ts // use it somewhere where your config.ts is utilizing SSL in a functional test // ... ``` In your console you get this error: ```ts ConnectionError: self signed certificate in certificate chain at onResponse (node_modules/@elastic/elasticsearch/lib/Transport.js:205:13) at ClientRequest.request.on.err (node_modules/@elastic/elasticsearch/lib/Connection.js:98:9) at TLSSocket.socketErrorListener (_http_client.js:401:9) at emitErrorNT (internal/streams/destroy.js:91:8) at emitErrorAndCloseNT (internal/streams/destroy.js:59:3) at process._tickCallback (internal/process/next_tick.js:63:19) ``` This fixes that by adding the CA certs from test to the ES test client. --- test/common/services/elasticsearch.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/common/services/elasticsearch.ts b/test/common/services/elasticsearch.ts index 63c4bfeeb4ce77..0436dc901292d5 100644 --- a/test/common/services/elasticsearch.ts +++ b/test/common/services/elasticsearch.ts @@ -18,8 +18,9 @@ */ import { format as formatUrl } from 'url'; - +import fs from 'fs'; import { Client } from '@elastic/elasticsearch'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; import { FtrProviderContext } from '../ftr_provider_context'; @@ -27,6 +28,9 @@ export function ElasticsearchProvider({ getService }: FtrProviderContext) { const config = getService('config'); return new Client({ + ssl: { + ca: fs.readFileSync(CA_CERT_PATH, 'utf-8'), + }, nodes: [formatUrl(config.get('servers.elasticsearch'))], requestTimeout: config.get('timeouts.esRequestTimeout'), }); From 6a6b3edd7f2409cc7991c88c0ec7e42a0ecd81b2 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 7 May 2020 15:58:16 +0200 Subject: [PATCH 02/58] [ML] Migrate server side Mocha tests to Jest. (#65651) Migrates job validation related server side tests from Mocha to Jest. --- ...mator.js => bucket_span_estimator.test.ts} | 71 ++++------ .../mock_farequote_cardinality.json | 0 .../mock_farequote_search_response.json | 0 .../mock_field_caps.json | 0 .../mock_it_search_response.json | 0 .../mock_time_field.json | 0 .../mock_time_field_nested.json | 0 .../mock_time_range.json | 0 .../models/job_validation/job_validation.d.ts | 17 ++- ...b_validation.js => job_validation.test.ts} | 100 ++++++++------ .../models/job_validation/messages.d.ts | 10 ++ ...t_span.js => validate_bucket_span.test.ts} | 44 +++--- .../job_validation/validate_cardinality.d.ts | 5 +- ...nality.js => validate_cardinality.test.ts} | 125 +++++++++++------- ...encers.js => validate_influencers.test.ts} | 65 ++++----- ...influencers.js => validate_influencers.ts} | 8 +- ...e_range.js => validate_time_range.test.ts} | 69 ++++++---- .../job_validation/validate_time_range.ts | 6 +- 18 files changed, 298 insertions(+), 222 deletions(-) rename x-pack/plugins/ml/server/models/bucket_span_estimator/{__tests__/bucket_span_estimator.js => bucket_span_estimator.test.ts} (56%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_farequote_cardinality.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_farequote_search_response.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_field_caps.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_it_search_response.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_time_field.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_time_field_nested.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__ => __mocks__}/mock_time_range.json (100%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__/job_validation.js => job_validation.test.ts} (80%) create mode 100644 x-pack/plugins/ml/server/models/job_validation/messages.d.ts rename x-pack/plugins/ml/server/models/job_validation/{__tests__/validate_bucket_span.js => validate_bucket_span.test.ts} (81%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__/validate_cardinality.js => validate_cardinality.test.ts} (69%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__/validate_influencers.js => validate_influencers.test.ts} (63%) rename x-pack/plugins/ml/server/models/job_validation/{validate_influencers.js => validate_influencers.ts} (89%) rename x-pack/plugins/ml/server/models/job_validation/{__tests__/validate_time_range.js => validate_time_range.test.ts} (76%) diff --git a/x-pack/plugins/ml/server/models/bucket_span_estimator/__tests__/bucket_span_estimator.js b/x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.test.ts similarity index 56% rename from x-pack/plugins/ml/server/models/bucket_span_estimator/__tests__/bucket_span_estimator.js rename to x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.test.ts index a0dacc38e58352..f5daadfe86be0c 100644 --- a/x-pack/plugins/ml/server/models/bucket_span_estimator/__tests__/bucket_span_estimator.js +++ b/x-pack/plugins/ml/server/models/bucket_span_estimator/bucket_span_estimator.test.ts @@ -4,8 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import expect from '@kbn/expect'; -import { estimateBucketSpanFactory } from '../bucket_span_estimator'; +import { APICaller } from 'kibana/server'; + +import { ES_AGGREGATION } from '../../../common/constants/aggregation_types'; + +import { estimateBucketSpanFactory, BucketSpanEstimatorData } from './bucket_span_estimator'; // Mock callWithRequest with the ability to simulate returning different // permission settings. On each call using `ml.privilegeCheck` we retrieve @@ -14,7 +17,7 @@ import { estimateBucketSpanFactory } from '../bucket_span_estimator'; // sufficient permissions should be returned, the second time insufficient // permissions. const permissions = [false, true]; -const callWithRequest = method => { +const callWithRequest: APICaller = (method: string) => { return new Promise(resolve => { if (method === 'ml.privilegeCheck') { resolve({ @@ -28,34 +31,19 @@ const callWithRequest = method => { return; } resolve({}); - }); + }) as Promise; }; -const callWithInternalUser = () => { +const callWithInternalUser: APICaller = () => { return new Promise(resolve => { resolve({}); - }); + }) as Promise; }; -// mock xpack_main plugin -function mockXpackMainPluginFactory(isEnabled = false, licenseType = 'platinum') { - return { - info: { - isAvailable: () => true, - feature: () => ({ - isEnabled: () => isEnabled, - }), - license: { - getType: () => licenseType, - }, - }, - }; -} - // mock configuration to be passed to the estimator -const formConfig = { - aggTypes: ['count'], - duration: {}, +const formConfig: BucketSpanEstimatorData = { + aggTypes: [ES_AGGREGATION.COUNT], + duration: { start: 0, end: 1 }, fields: [null], index: '', query: { @@ -64,13 +52,15 @@ const formConfig = { must_not: [], }, }, + splitField: undefined, + timeField: undefined, }; describe('ML - BucketSpanEstimator', () => { it('call factory', () => { expect(function() { - estimateBucketSpanFactory(callWithRequest, callWithInternalUser); - }).to.not.throwError('Not initialized.'); + estimateBucketSpanFactory(callWithRequest, callWithInternalUser, false); + }).not.toThrow('Not initialized.'); }); it('call factory and estimator with security disabled', done => { @@ -78,44 +68,29 @@ describe('ML - BucketSpanEstimator', () => { const estimateBucketSpan = estimateBucketSpanFactory( callWithRequest, callWithInternalUser, - mockXpackMainPluginFactory() + true ); estimateBucketSpan(formConfig).catch(catchData => { - expect(catchData).to.be('Unable to retrieve cluster setting search.max_buckets'); + expect(catchData).toBe('Unable to retrieve cluster setting search.max_buckets'); done(); }); - }).to.not.throwError('Not initialized.'); + }).not.toThrow('Not initialized.'); }); - it('call factory and estimator with security enabled and sufficient permissions.', done => { + it('call factory and estimator with security enabled.', done => { expect(function() { const estimateBucketSpan = estimateBucketSpanFactory( callWithRequest, callWithInternalUser, - mockXpackMainPluginFactory(true) + false ); estimateBucketSpan(formConfig).catch(catchData => { - expect(catchData).to.be('Unable to retrieve cluster setting search.max_buckets'); + expect(catchData).toBe('Unable to retrieve cluster setting search.max_buckets'); done(); }); - }).to.not.throwError('Not initialized.'); - }); - - it('call factory and estimator with security enabled and insufficient permissions.', done => { - expect(function() { - const estimateBucketSpan = estimateBucketSpanFactory( - callWithRequest, - callWithInternalUser, - mockXpackMainPluginFactory(true) - ); - - estimateBucketSpan(formConfig).catch(catchData => { - expect(catchData).to.be('Insufficient permissions to call bucket span estimation.'); - done(); - }); - }).to.not.throwError('Not initialized.'); + }).not.toThrow('Not initialized.'); }); }); diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_farequote_cardinality.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_cardinality.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_farequote_cardinality.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_cardinality.json diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_farequote_search_response.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_search_response.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_farequote_search_response.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_farequote_search_response.json diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_field_caps.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_field_caps.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_field_caps.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_field_caps.json diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_it_search_response.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_it_search_response.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_it_search_response.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_it_search_response.json diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_time_field.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_field.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_time_field.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_field.json diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_time_field_nested.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_field_nested.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_time_field_nested.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_field_nested.json diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/mock_time_range.json b/x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_range.json similarity index 100% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/mock_time_range.json rename to x-pack/plugins/ml/server/models/job_validation/__mocks__/mock_time_range.json diff --git a/x-pack/plugins/ml/server/models/job_validation/job_validation.d.ts b/x-pack/plugins/ml/server/models/job_validation/job_validation.d.ts index 33f5d5ec95fad5..6a9a7a0c13395c 100644 --- a/x-pack/plugins/ml/server/models/job_validation/job_validation.d.ts +++ b/x-pack/plugins/ml/server/models/job_validation/job_validation.d.ts @@ -6,14 +6,19 @@ import { APICaller } from 'kibana/server'; import { TypeOf } from '@kbn/config-schema'; + +import { DeepPartial } from '../../../common/types/common'; + import { validateJobSchema } from '../../routes/schemas/job_validation_schema'; -type ValidateJobPayload = TypeOf; +import { ValidationMessage } from './messages'; + +export type ValidateJobPayload = TypeOf; export function validateJob( callAsCurrentUser: APICaller, - payload: ValidateJobPayload, - kbnVersion: string, - callAsInternalUser: APICaller, - isSecurityDisabled: boolean -): string[]; + payload?: DeepPartial, + kbnVersion?: string, + callAsInternalUser?: APICaller, + isSecurityDisabled?: boolean +): Promise; diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/job_validation.js b/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts similarity index 80% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/job_validation.js rename to x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts index 726a8e8d8db853..9851f80a42d5bb 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__tests__/job_validation.js +++ b/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts @@ -4,16 +4,24 @@ * you may not use this file except in compliance with the Elastic License. */ -import expect from '@kbn/expect'; -import { validateJob } from '../job_validation'; +import { APICaller } from 'kibana/server'; + +import { validateJob } from './job_validation'; // mock callWithRequest -const callWithRequest = () => { +const callWithRequest: APICaller = (method: string) => { return new Promise(resolve => { + if (method === 'fieldCaps') { + resolve({ fields: [] }); + return; + } resolve({}); - }); + }) as Promise; }; +// Note: The tests cast `payload` as any +// so we can simulate possible runtime payloads +// that don't satisfy the TypeScript specs. describe('ML - validateJob', () => { it('calling factory without payload throws an error', done => { validateJob(callWithRequest).then( @@ -61,7 +69,7 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_empty', 'detectors_empty', 'bucket_span_empty', @@ -70,10 +78,14 @@ describe('ML - validateJob', () => { }); }); - const jobIdTests = (testIds, messageId) => { + const jobIdTests = (testIds: string[], messageId: string) => { const promises = testIds.map(id => { - const payload = { job: { analysis_config: { detectors: [] } } }; - payload.job.job_id = id; + const payload = { + job: { + analysis_config: { detectors: [] }, + job_id: id, + }, + }; return validateJob(callWithRequest, payload).catch(() => { new Error('Promise should not fail for jobIdTests.'); }); @@ -81,19 +93,21 @@ describe('ML - validateJob', () => { return Promise.all(promises).then(testResults => { testResults.forEach(messages => { - const ids = messages.map(m => m.id); - expect(ids.includes(messageId)).to.equal(true); + expect(Array.isArray(messages)).toBe(true); + if (Array.isArray(messages)) { + const ids = messages.map(m => m.id); + expect(ids.includes(messageId)).toBe(true); + } }); }); }; - const jobGroupIdTest = (testIds, messageId) => { - const payload = { job: { analysis_config: { detectors: [] } } }; - payload.job.groups = testIds; + const jobGroupIdTest = (testIds: string[], messageId: string) => { + const payload = { job: { analysis_config: { detectors: [] }, groups: testIds } }; return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids.includes(messageId)).to.equal(true); + expect(ids.includes(messageId)).toBe(true); }); }; @@ -126,10 +140,9 @@ describe('ML - validateJob', () => { return jobGroupIdTest(validTestIds, 'job_group_id_valid'); }); - const bucketSpanFormatTests = (testFormats, messageId) => { + const bucketSpanFormatTests = (testFormats: string[], messageId: string) => { const promises = testFormats.map(format => { - const payload = { job: { analysis_config: { detectors: [] } } }; - payload.job.analysis_config.bucket_span = format; + const payload = { job: { analysis_config: { bucket_span: format, detectors: [] } } }; return validateJob(callWithRequest, payload).catch(() => { new Error('Promise should not fail for bucketSpanFormatTests.'); }); @@ -137,8 +150,11 @@ describe('ML - validateJob', () => { return Promise.all(promises).then(testResults => { testResults.forEach(messages => { - const ids = messages.map(m => m.id); - expect(ids.includes(messageId)).to.equal(true); + expect(Array.isArray(messages)).toBe(true); + if (Array.isArray(messages)) { + const ids = messages.map(m => m.id); + expect(ids.includes(messageId)).toBe(true); + } }); }); }; @@ -152,7 +168,7 @@ describe('ML - validateJob', () => { }); it('at least one detector function is empty', () => { - const payload = { job: { analysis_config: { detectors: [] } } }; + const payload = { job: { analysis_config: { detectors: [] as Array<{ function?: string }> } } }; payload.job.analysis_config.detectors.push({ function: 'count', }); @@ -165,19 +181,19 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids.includes('detectors_function_empty')).to.equal(true); + expect(ids.includes('detectors_function_empty')).toBe(true); }); }); it('detector function is not empty', () => { - const payload = { job: { analysis_config: { detectors: [] } } }; + const payload = { job: { analysis_config: { detectors: [] as Array<{ function?: string }> } } }; payload.job.analysis_config.detectors.push({ function: 'count', }); return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids.includes('detectors_function_not_empty')).to.equal(true); + expect(ids.includes('detectors_function_not_empty')).toBe(true); }); }); @@ -189,7 +205,7 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids.includes('index_fields_invalid')).to.equal(true); + expect(ids.includes('index_fields_invalid')).toBe(true); }); }); @@ -201,11 +217,11 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids.includes('index_fields_valid')).to.equal(true); + expect(ids.includes('index_fields_valid')).toBe(true); }); }); - const getBasicPayload = () => ({ + const getBasicPayload = (): any => ({ job: { job_id: 'test', analysis_config: { @@ -214,7 +230,7 @@ describe('ML - validateJob', () => { { function: 'count', }, - ], + ] as Array<{ function: string; by_field_name?: string; partition_field_name?: string }>, influencers: [], }, data_description: { time_field: '@timestamp' }, @@ -224,7 +240,7 @@ describe('ML - validateJob', () => { }); it('throws an error because job.analysis_config.influencers is not an Array', done => { - const payload = getBasicPayload(); + const payload = getBasicPayload() as any; delete payload.job.analysis_config.influencers; validateJob(callWithRequest, payload).then( @@ -237,11 +253,11 @@ describe('ML - validateJob', () => { }); it('detect duplicate detectors', () => { - const payload = getBasicPayload(); + const payload = getBasicPayload() as any; payload.job.analysis_config.detectors.push({ function: 'count' }); return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_valid', 'detectors_function_not_empty', 'detectors_duplicates', @@ -253,7 +269,7 @@ describe('ML - validateJob', () => { }); it('dedupe duplicate messages', () => { - const payload = getBasicPayload(); + const payload = getBasicPayload() as any; // in this test setup, the following configuration passes // the duplicate detectors check, but would return the same // 'field_not_aggregatable' message for both detectors. @@ -264,7 +280,7 @@ describe('ML - validateJob', () => { ]; return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_valid', 'detectors_function_not_empty', 'index_fields_valid', @@ -278,7 +294,7 @@ describe('ML - validateJob', () => { const payload = getBasicPayload(); return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_valid', 'detectors_function_not_empty', 'index_fields_valid', @@ -288,7 +304,7 @@ describe('ML - validateJob', () => { }); it('categorization job using mlcategory passes aggregatable field check', () => { - const payload = { + const payload: any = { job: { job_id: 'categorization_test', analysis_config: { @@ -310,7 +326,7 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_valid', 'detectors_function_not_empty', 'index_fields_valid', @@ -322,7 +338,7 @@ describe('ML - validateJob', () => { }); it('non-existent field reported as non aggregatable', () => { - const payload = { + const payload: any = { job: { job_id: 'categorization_test', analysis_config: { @@ -343,7 +359,7 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_valid', 'detectors_function_not_empty', 'index_fields_valid', @@ -354,7 +370,7 @@ describe('ML - validateJob', () => { }); it('script field not reported as non aggregatable', () => { - const payload = { + const payload: any = { job: { job_id: 'categorization_test', analysis_config: { @@ -385,7 +401,7 @@ describe('ML - validateJob', () => { return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([ + expect(ids).toStrictEqual([ 'job_id_valid', 'detectors_function_not_empty', 'index_fields_valid', @@ -399,19 +415,19 @@ describe('ML - validateJob', () => { // the following two tests validate the correct template rendering of // urls in messages with {{version}} in them to be replaced with the // specified version. (defaulting to 'current') - const docsTestPayload = getBasicPayload(); + const docsTestPayload = getBasicPayload() as any; docsTestPayload.job.analysis_config.detectors = [{ function: 'count', by_field_name: 'airline' }]; it('creates a docs url pointing to the current docs version', () => { return validateJob(callWithRequest, docsTestPayload).then(messages => { const message = messages[messages.findIndex(m => m.id === 'field_not_aggregatable')]; - expect(message.url.search('/current/')).not.to.be(-1); + expect(message.url.search('/current/')).not.toBe(-1); }); }); it('creates a docs url pointing to the master docs version', () => { return validateJob(callWithRequest, docsTestPayload, 'master').then(messages => { const message = messages[messages.findIndex(m => m.id === 'field_not_aggregatable')]; - expect(message.url.search('/master/')).not.to.be(-1); + expect(message.url.search('/master/')).not.toBe(-1); }); }); }); diff --git a/x-pack/plugins/ml/server/models/job_validation/messages.d.ts b/x-pack/plugins/ml/server/models/job_validation/messages.d.ts new file mode 100644 index 00000000000000..772d78b4187dd0 --- /dev/null +++ b/x-pack/plugins/ml/server/models/job_validation/messages.d.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; + * you may not use this file except in compliance with the Elastic License. + */ + +export interface ValidationMessage { + id: string; + url: string; +} diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_bucket_span.js b/x-pack/plugins/ml/server/models/job_validation/validate_bucket_span.test.ts similarity index 81% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/validate_bucket_span.js rename to x-pack/plugins/ml/server/models/job_validation/validate_bucket_span.test.ts index 3dc2bee1e8705f..4001697d743200 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_bucket_span.js +++ b/x-pack/plugins/ml/server/models/job_validation/validate_bucket_span.test.ts @@ -4,22 +4,24 @@ * you may not use this file except in compliance with the Elastic License. */ -import expect from '@kbn/expect'; -import { validateBucketSpan } from '../validate_bucket_span'; -import { SKIP_BUCKET_SPAN_ESTIMATION } from '../../../../common/constants/validation'; +import { SKIP_BUCKET_SPAN_ESTIMATION } from '../../../common/constants/validation'; + +import { ValidationMessage } from './messages'; +// @ts-ignore +import { validateBucketSpan } from './validate_bucket_span'; // farequote2017 snapshot snapshot mock search response // it returns a mock for the response of PolledDataChecker's search request // to get an aggregation of non_empty_buckets with an interval of 1m. // this allows us to test bucket span estimation. -import mockFareQuoteSearchResponse from './mock_farequote_search_response'; +import mockFareQuoteSearchResponse from './__mocks__/mock_farequote_search_response.json'; // it_ops_app_logs 2017 snapshot mock search response // sparse data with a low number of buckets -import mockItSearchResponse from './mock_it_search_response'; +import mockItSearchResponse from './__mocks__/mock_it_search_response.json'; // mock callWithRequestFactory -const callWithRequestFactory = mockSearchResponse => { +const callWithRequestFactory = (mockSearchResponse: any) => { return () => { return new Promise(resolve => { resolve(mockSearchResponse); @@ -86,17 +88,17 @@ describe('ML - validateBucketSpan', () => { }; return validateBucketSpan(callWithRequestFactory(mockFareQuoteSearchResponse), job).then( - messages => { + (messages: ValidationMessage[]) => { const ids = messages.map(m => m.id); - expect(ids).to.eql([]); + expect(ids).toStrictEqual([]); } ); }); - const getJobConfig = bucketSpan => ({ + const getJobConfig = (bucketSpan: string) => ({ analysis_config: { bucket_span: bucketSpan, - detectors: [], + detectors: [] as Array<{ function?: string }>, influencers: [], }, data_description: { time_field: '@timestamp' }, @@ -111,9 +113,9 @@ describe('ML - validateBucketSpan', () => { callWithRequestFactory(mockFareQuoteSearchResponse), job, duration - ).then(messages => { + ).then((messages: ValidationMessage[]) => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['success_bucket_span']); + expect(ids).toStrictEqual(['success_bucket_span']); }); }); @@ -125,9 +127,9 @@ describe('ML - validateBucketSpan', () => { callWithRequestFactory(mockFareQuoteSearchResponse), job, duration - ).then(messages => { + ).then((messages: ValidationMessage[]) => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['bucket_span_high']); + expect(ids).toStrictEqual(['bucket_span_high']); }); }); @@ -135,14 +137,18 @@ describe('ML - validateBucketSpan', () => { return; } - const testBucketSpan = (bucketSpan, mockSearchResponse, test) => { + const testBucketSpan = ( + bucketSpan: string, + mockSearchResponse: any, + test: (ids: string[]) => void + ) => { const job = getJobConfig(bucketSpan); job.analysis_config.detectors.push({ function: 'count', }); return validateBucketSpan(callWithRequestFactory(mockSearchResponse), job, {}).then( - messages => { + (messages: ValidationMessage[]) => { const ids = messages.map(m => m.id); test(ids); } @@ -151,13 +157,13 @@ describe('ML - validateBucketSpan', () => { it('farequote count detector, bucket span estimation matches 15m', () => { return testBucketSpan('15m', mockFareQuoteSearchResponse, ids => { - expect(ids).to.eql(['success_bucket_span']); + expect(ids).toStrictEqual(['success_bucket_span']); }); }); it('farequote count detector, bucket span estimation does not match 1m', () => { return testBucketSpan('1m', mockFareQuoteSearchResponse, ids => { - expect(ids).to.eql(['bucket_span_estimation_mismatch']); + expect(ids).toStrictEqual(['bucket_span_estimation_mismatch']); }); }); @@ -167,7 +173,7 @@ describe('ML - validateBucketSpan', () => { // should result in a lower bucket span estimation. it('it_ops_app_logs count detector, bucket span estimation matches 6h', () => { return testBucketSpan('6h', mockItSearchResponse, ids => { - expect(ids).to.eql(['success_bucket_span']); + expect(ids).toStrictEqual(['success_bucket_span']); }); }); }); diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.d.ts b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.d.ts index 22d2fec0beddc4..2fad1252e64465 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.d.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.d.ts @@ -7,4 +7,7 @@ import { APICaller } from 'kibana/server'; import { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; -export function validateCardinality(callAsCurrentUser: APICaller, job: CombinedJob): any[]; +export function validateCardinality( + callAsCurrentUser: APICaller, + job?: CombinedJob +): Promise; diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_cardinality.js b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts similarity index 69% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/validate_cardinality.js rename to x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts index 9617982a66b0e5..e5111629f1182a 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_cardinality.js +++ b/x-pack/plugins/ml/server/models/job_validation/validate_cardinality.test.ts @@ -5,11 +5,15 @@ */ import _ from 'lodash'; -import expect from '@kbn/expect'; -import { validateCardinality } from '../validate_cardinality'; -import mockFareQuoteCardinality from './mock_farequote_cardinality'; -import mockFieldCaps from './mock_field_caps'; +import { APICaller } from 'kibana/server'; + +import { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; + +import mockFareQuoteCardinality from './__mocks__/mock_farequote_cardinality.json'; +import mockFieldCaps from './__mocks__/mock_field_caps.json'; + +import { validateCardinality } from './validate_cardinality'; const mockResponses = { search: mockFareQuoteCardinality, @@ -17,8 +21,8 @@ const mockResponses = { }; // mock callWithRequestFactory -const callWithRequestFactory = (responses, fail = false) => { - return requestName => { +const callWithRequestFactory = (responses: Record, fail = false): APICaller => { + return (requestName: string) => { return new Promise((resolve, reject) => { const response = responses[requestName]; if (fail) { @@ -26,7 +30,7 @@ const callWithRequestFactory = (responses, fail = false) => { } else { resolve(response); } - }); + }) as Promise; }; }; @@ -39,21 +43,23 @@ describe('ML - validateCardinality', () => { }); it('called with non-valid job argument #1, missing analysis_config', done => { - validateCardinality(callWithRequestFactory(mockResponses), {}).then( + validateCardinality(callWithRequestFactory(mockResponses), {} as CombinedJob).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); }); it('called with non-valid job argument #2, missing datafeed_config', done => { - validateCardinality(callWithRequestFactory(mockResponses), { analysis_config: {} }).then( + validateCardinality(callWithRequestFactory(mockResponses), { + analysis_config: {}, + } as CombinedJob).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); }); it('called with non-valid job argument #3, missing datafeed_config.indices', done => { - const job = { analysis_config: {}, datafeed_config: {} }; + const job = { analysis_config: {}, datafeed_config: {} } as CombinedJob; validateCardinality(callWithRequestFactory(mockResponses), job).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() @@ -61,7 +67,10 @@ describe('ML - validateCardinality', () => { }); it('called with non-valid job argument #4, missing data_description', done => { - const job = { analysis_config: {}, datafeed_config: { indices: [] } }; + const job = ({ + analysis_config: {}, + datafeed_config: { indices: [] }, + } as unknown) as CombinedJob; validateCardinality(callWithRequestFactory(mockResponses), job).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() @@ -69,7 +78,11 @@ describe('ML - validateCardinality', () => { }); it('called with non-valid job argument #5, missing data_description.time_field', done => { - const job = { analysis_config: {}, data_description: {}, datafeed_config: { indices: [] } }; + const job = ({ + analysis_config: {}, + data_description: {}, + datafeed_config: { indices: [] }, + } as unknown) as CombinedJob; validateCardinality(callWithRequestFactory(mockResponses), job).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() @@ -77,11 +90,11 @@ describe('ML - validateCardinality', () => { }); it('called with non-valid job argument #6, missing analysis_config.influencers', done => { - const job = { + const job = ({ analysis_config: {}, datafeed_config: { indices: [] }, data_description: { time_field: '@timestamp' }, - }; + } as unknown) as CombinedJob; validateCardinality(callWithRequestFactory(mockResponses), job).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() @@ -89,21 +102,21 @@ describe('ML - validateCardinality', () => { }); it('minimum job configuration to pass cardinality check code', () => { - const job = { + const job = ({ analysis_config: { detectors: [], influencers: [] }, data_description: { time_field: '@timestamp' }, datafeed_config: { indices: [], }, - }; + } as unknown) as CombinedJob; return validateCardinality(callWithRequestFactory(mockResponses), job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([]); + expect(ids).toStrictEqual([]); }); }); - const getJobConfig = fieldName => ({ + const getJobConfig = (fieldName: string) => ({ analysis_config: { detectors: [ { @@ -119,11 +132,18 @@ describe('ML - validateCardinality', () => { }, }); - const testCardinality = (fieldName, cardinality, test) => { + const testCardinality = ( + fieldName: string, + cardinality: number, + test: (ids: string[]) => void + ) => { const job = getJobConfig(fieldName); const mockCardinality = _.cloneDeep(mockResponses); mockCardinality.search.aggregations.airline_cardinality.value = cardinality; - return validateCardinality(callWithRequestFactory(mockCardinality), job, {}).then(messages => { + return validateCardinality( + callWithRequestFactory(mockCardinality), + (job as unknown) as CombinedJob + ).then(messages => { const ids = messages.map(m => m.id); test(ids); }); @@ -132,26 +152,34 @@ describe('ML - validateCardinality', () => { it(`field '_source' not aggregatable`, () => { const job = getJobConfig('partition_field_name'); job.analysis_config.detectors[0].partition_field_name = '_source'; - return validateCardinality(callWithRequestFactory(mockResponses), job).then(messages => { + return validateCardinality( + callWithRequestFactory(mockResponses), + (job as unknown) as CombinedJob + ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['field_not_aggregatable']); + expect(ids).toStrictEqual(['field_not_aggregatable']); }); }); it(`field 'airline' aggregatable`, () => { const job = getJobConfig('partition_field_name'); - return validateCardinality(callWithRequestFactory(mockResponses), job).then(messages => { + return validateCardinality( + callWithRequestFactory(mockResponses), + (job as unknown) as CombinedJob + ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['success_cardinality']); + expect(ids).toStrictEqual(['success_cardinality']); }); }); it('field not aggregatable', () => { const job = getJobConfig('partition_field_name'); - return validateCardinality(callWithRequestFactory({}), job).then(messages => { - const ids = messages.map(m => m.id); - expect(ids).to.eql(['field_not_aggregatable']); - }); + return validateCardinality(callWithRequestFactory({}), (job as unknown) as CombinedJob).then( + messages => { + const ids = messages.map(m => m.id); + expect(ids).toStrictEqual(['field_not_aggregatable']); + } + ); }); it('fields not aggregatable', () => { @@ -160,107 +188,110 @@ describe('ML - validateCardinality', () => { function: 'count', partition_field_name: 'airline', }); - return validateCardinality(callWithRequestFactory({}, true), job).then(messages => { + return validateCardinality( + callWithRequestFactory({}, true), + (job as unknown) as CombinedJob + ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['fields_not_aggregatable']); + expect(ids).toStrictEqual(['fields_not_aggregatable']); }); }); it('valid partition field cardinality', () => { return testCardinality('partition_field_name', 50, ids => { - expect(ids).to.eql(['success_cardinality']); + expect(ids).toStrictEqual(['success_cardinality']); }); }); it('too high partition field cardinality', () => { return testCardinality('partition_field_name', 1001, ids => { - expect(ids).to.eql(['cardinality_partition_field']); + expect(ids).toStrictEqual(['cardinality_partition_field']); }); }); it('valid by field cardinality', () => { return testCardinality('by_field_name', 50, ids => { - expect(ids).to.eql(['success_cardinality']); + expect(ids).toStrictEqual(['success_cardinality']); }); }); it('too high by field cardinality', () => { return testCardinality('by_field_name', 1001, ids => { - expect(ids).to.eql(['cardinality_by_field']); + expect(ids).toStrictEqual(['cardinality_by_field']); }); }); it('valid over field cardinality', () => { return testCardinality('over_field_name', 50, ids => { - expect(ids).to.eql(['success_cardinality']); + expect(ids).toStrictEqual(['success_cardinality']); }); }); it('too low over field cardinality', () => { return testCardinality('over_field_name', 9, ids => { - expect(ids).to.eql(['cardinality_over_field_low']); + expect(ids).toStrictEqual(['cardinality_over_field_low']); }); }); it('too high over field cardinality', () => { return testCardinality('over_field_name', 1000001, ids => { - expect(ids).to.eql(['cardinality_over_field_high']); + expect(ids).toStrictEqual(['cardinality_over_field_high']); }); }); const cardinality = 10000; it(`disabled model_plot, over field cardinality of ${cardinality} doesn't trigger a warning`, () => { - const job = getJobConfig('over_field_name'); + const job = (getJobConfig('over_field_name') as unknown) as CombinedJob; job.model_plot_config = { enabled: false }; const mockCardinality = _.cloneDeep(mockResponses); mockCardinality.search.aggregations.airline_cardinality.value = cardinality; return validateCardinality(callWithRequestFactory(mockCardinality), job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['success_cardinality']); + expect(ids).toStrictEqual(['success_cardinality']); }); }); it(`enabled model_plot, over field cardinality of ${cardinality} triggers a model plot warning`, () => { - const job = getJobConfig('over_field_name'); + const job = (getJobConfig('over_field_name') as unknown) as CombinedJob; job.model_plot_config = { enabled: true }; const mockCardinality = _.cloneDeep(mockResponses); mockCardinality.search.aggregations.airline_cardinality.value = cardinality; return validateCardinality(callWithRequestFactory(mockCardinality), job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['cardinality_model_plot_high']); + expect(ids).toStrictEqual(['cardinality_model_plot_high']); }); }); it(`disabled model_plot, by field cardinality of ${cardinality} triggers a field cardinality warning`, () => { - const job = getJobConfig('by_field_name'); + const job = (getJobConfig('by_field_name') as unknown) as CombinedJob; job.model_plot_config = { enabled: false }; const mockCardinality = _.cloneDeep(mockResponses); mockCardinality.search.aggregations.airline_cardinality.value = cardinality; return validateCardinality(callWithRequestFactory(mockCardinality), job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['cardinality_by_field']); + expect(ids).toStrictEqual(['cardinality_by_field']); }); }); it(`enabled model_plot, by field cardinality of ${cardinality} triggers a model plot warning and field cardinality warning`, () => { - const job = getJobConfig('by_field_name'); + const job = (getJobConfig('by_field_name') as unknown) as CombinedJob; job.model_plot_config = { enabled: true }; const mockCardinality = _.cloneDeep(mockResponses); mockCardinality.search.aggregations.airline_cardinality.value = cardinality; return validateCardinality(callWithRequestFactory(mockCardinality), job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['cardinality_model_plot_high', 'cardinality_by_field']); + expect(ids).toStrictEqual(['cardinality_model_plot_high', 'cardinality_by_field']); }); }); it(`enabled model_plot with terms, by field cardinality of ${cardinality} triggers just field cardinality warning`, () => { - const job = getJobConfig('by_field_name'); + const job = (getJobConfig('by_field_name') as unknown) as CombinedJob; job.model_plot_config = { enabled: true, terms: 'AAL,AAB' }; const mockCardinality = _.cloneDeep(mockResponses); mockCardinality.search.aggregations.airline_cardinality.value = cardinality; return validateCardinality(callWithRequestFactory(mockCardinality), job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['cardinality_by_field']); + expect(ids).toStrictEqual(['cardinality_by_field']); }); }); }); diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_influencers.js b/x-pack/plugins/ml/server/models/job_validation/validate_influencers.test.ts similarity index 63% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/validate_influencers.js rename to x-pack/plugins/ml/server/models/job_validation/validate_influencers.test.ts index 06b2e5205fdbde..df3310ad9f5e82 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_influencers.js +++ b/x-pack/plugins/ml/server/models/job_validation/validate_influencers.test.ts @@ -4,19 +4,25 @@ * you may not use this file except in compliance with the Elastic License. */ -import expect from '@kbn/expect'; -import { validateInfluencers } from '../validate_influencers'; +import { APICaller } from 'kibana/server'; + +import { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; + +import { validateInfluencers } from './validate_influencers'; describe('ML - validateInfluencers', () => { it('called without arguments throws an error', done => { - validateInfluencers().then( + validateInfluencers( + (undefined as unknown) as APICaller, + (undefined as unknown) as CombinedJob + ).then( () => done(new Error('Promise should not resolve for this test without job argument.')), () => done() ); }); it('called with non-valid job argument #1, missing analysis_config', done => { - validateInfluencers(undefined, {}).then( + validateInfluencers((undefined as unknown) as APICaller, ({} as unknown) as CombinedJob).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); @@ -28,7 +34,7 @@ describe('ML - validateInfluencers', () => { datafeed_config: { indices: [] }, data_description: { time_field: '@timestamp' }, }; - validateInfluencers(undefined, job).then( + validateInfluencers((undefined as unknown) as APICaller, (job as unknown) as CombinedJob).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); @@ -40,25 +46,29 @@ describe('ML - validateInfluencers', () => { datafeed_config: { indices: [] }, data_description: { time_field: '@timestamp' }, }; - validateInfluencers(undefined, job).then( + validateInfluencers((undefined as unknown) as APICaller, (job as unknown) as CombinedJob).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); }); - const getJobConfig = (influencers = [], detectors = []) => ({ - analysis_config: { detectors, influencers }, - data_description: { time_field: '@timestamp' }, - datafeed_config: { - indices: [], - }, - }); + const getJobConfig: ( + influencers?: string[], + detectors?: CombinedJob['analysis_config']['detectors'] + ) => CombinedJob = (influencers = [], detectors = []) => + (({ + analysis_config: { detectors, influencers }, + data_description: { time_field: '@timestamp' }, + datafeed_config: { + indices: [], + }, + } as unknown) as CombinedJob); it('success_influencer', () => { const job = getJobConfig(['airline']); - return validateInfluencers(undefined, job).then(messages => { + return validateInfluencers((undefined as unknown) as APICaller, job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['success_influencers']); + expect(ids).toStrictEqual(['success_influencers']); }); }); @@ -69,31 +79,30 @@ describe('ML - validateInfluencers', () => { { detector_description: 'count', function: 'count', - rules: [], detector_index: 0, }, ] ); - return validateInfluencers(undefined, job).then(messages => { + return validateInfluencers((undefined as unknown) as APICaller, job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql([]); + expect(ids).toStrictEqual([]); }); }); it('influencer_low', () => { const job = getJobConfig(); - return validateInfluencers(undefined, job).then(messages => { + return validateInfluencers((undefined as unknown) as APICaller, job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['influencer_low']); + expect(ids).toStrictEqual(['influencer_low']); }); }); it('influencer_high', () => { const job = getJobConfig(['i1', 'i2', 'i3', 'i4']); - return validateInfluencers(undefined, job).then(messages => { + return validateInfluencers((undefined as unknown) as APICaller, job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['influencer_high']); + expect(ids).toStrictEqual(['influencer_high']); }); }); @@ -105,14 +114,13 @@ describe('ML - validateInfluencers', () => { detector_description: 'count', function: 'count', partition_field_name: 'airline', - rules: [], detector_index: 0, }, ] ); - return validateInfluencers(undefined, job).then(messages => { + return validateInfluencers((undefined as unknown) as APICaller, job).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['influencer_low_suggestion']); + expect(ids).toStrictEqual(['influencer_low_suggestion']); }); }); @@ -124,27 +132,24 @@ describe('ML - validateInfluencers', () => { detector_description: 'count', function: 'count', partition_field_name: 'partition_field', - rules: [], detector_index: 0, }, { detector_description: 'count', function: 'count', by_field_name: 'by_field', - rules: [], detector_index: 0, }, { detector_description: 'count', function: 'count', over_field_name: 'over_field', - rules: [], detector_index: 0, }, ] ); - return validateInfluencers(undefined, job).then(messages => { - expect(messages).to.eql([ + return validateInfluencers((undefined as unknown) as APICaller, job).then(messages => { + expect(messages).toStrictEqual([ { id: 'influencer_low_suggestions', influencerSuggestion: '["partition_field","by_field","over_field"]', diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_influencers.js b/x-pack/plugins/ml/server/models/job_validation/validate_influencers.ts similarity index 89% rename from x-pack/plugins/ml/server/models/job_validation/validate_influencers.js rename to x-pack/plugins/ml/server/models/job_validation/validate_influencers.ts index 60fd5c37b99586..e54ffc4586a8e3 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_influencers.js +++ b/x-pack/plugins/ml/server/models/job_validation/validate_influencers.ts @@ -4,19 +4,23 @@ * you may not use this file except in compliance with the Elastic License. */ +import { APICaller } from 'kibana/server'; + +import { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; + import { validateJobObject } from './validate_job_object'; const INFLUENCER_LOW_THRESHOLD = 0; const INFLUENCER_HIGH_THRESHOLD = 4; const DETECTOR_FIELD_NAMES_THRESHOLD = 1; -export async function validateInfluencers(callWithRequest, job) { +export async function validateInfluencers(callWithRequest: APICaller, job: CombinedJob) { validateJobObject(job); const messages = []; const influencers = job.analysis_config.influencers; - const detectorFieldNames = []; + const detectorFieldNames: string[] = []; job.analysis_config.detectors.forEach(d => { if (d.by_field_name) { detectorFieldNames.push(d.by_field_name); diff --git a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_time_range.js b/x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts similarity index 76% rename from x-pack/plugins/ml/server/models/job_validation/__tests__/validate_time_range.js rename to x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts index e3ef62e5074850..2c3b2dd4dc6ae1 100644 --- a/x-pack/plugins/ml/server/models/job_validation/__tests__/validate_time_range.js +++ b/x-pack/plugins/ml/server/models/job_validation/validate_time_range.test.ts @@ -5,28 +5,32 @@ */ import _ from 'lodash'; -import expect from '@kbn/expect'; -import { isValidTimeField, validateTimeRange } from '../validate_time_range'; -import mockTimeField from './mock_time_field'; -import mockTimeFieldNested from './mock_time_field_nested'; -import mockTimeRange from './mock_time_range'; +import { APICaller } from 'kibana/server'; + +import { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; + +import { isValidTimeField, validateTimeRange } from './validate_time_range'; + +import mockTimeField from './__mocks__/mock_time_field.json'; +import mockTimeFieldNested from './__mocks__/mock_time_field_nested.json'; +import mockTimeRange from './__mocks__/mock_time_range.json'; const mockSearchResponse = { fieldCaps: mockTimeField, search: mockTimeRange, }; -const callWithRequestFactory = resp => { - return path => { +const callWithRequestFactory = (resp: any): APICaller => { + return (path: string) => { return new Promise(resolve => { resolve(resp[path]); - }); + }) as Promise; }; }; function getMinimalValidJob() { - return { + return ({ analysis_config: { bucket_span: '15m', detectors: [], @@ -36,12 +40,15 @@ function getMinimalValidJob() { datafeed_config: { indices: [], }, - }; + } as unknown) as CombinedJob; } describe('ML - isValidTimeField', () => { it('called without job config argument triggers Promise rejection', done => { - isValidTimeField(callWithRequestFactory(mockSearchResponse)).then( + isValidTimeField( + callWithRequestFactory(mockSearchResponse), + (undefined as unknown) as CombinedJob + ).then( () => done(new Error('Promise should not resolve for this test without job argument.')), () => done() ); @@ -50,7 +57,7 @@ describe('ML - isValidTimeField', () => { it('time_field `@timestamp`', done => { isValidTimeField(callWithRequestFactory(mockSearchResponse), getMinimalValidJob()).then( valid => { - expect(valid).to.be(true); + expect(valid).toBe(true); done(); }, () => done(new Error('isValidTimeField Promise failed for time_field `@timestamp`.')) @@ -71,7 +78,7 @@ describe('ML - isValidTimeField', () => { mockJobConfigNestedDate ).then( valid => { - expect(valid).to.be(true); + expect(valid).toBe(true); done(); }, () => done(new Error('isValidTimeField Promise failed for time_field `metadata.timestamp`.')) @@ -81,14 +88,19 @@ describe('ML - isValidTimeField', () => { describe('ML - validateTimeRange', () => { it('called without arguments', done => { - validateTimeRange(callWithRequestFactory(mockSearchResponse)).then( + validateTimeRange( + callWithRequestFactory(mockSearchResponse), + (undefined as unknown) as CombinedJob + ).then( () => done(new Error('Promise should not resolve for this test without job argument.')), () => done() ); }); it('called with non-valid job argument #2, missing datafeed_config', done => { - validateTimeRange(callWithRequestFactory(mockSearchResponse), { analysis_config: {} }).then( + validateTimeRange(callWithRequestFactory(mockSearchResponse), ({ + analysis_config: {}, + } as unknown) as CombinedJob).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); @@ -96,7 +108,10 @@ describe('ML - validateTimeRange', () => { it('called with non-valid job argument #3, missing datafeed_config.indices', done => { const job = { analysis_config: {}, datafeed_config: {} }; - validateTimeRange(callWithRequestFactory(mockSearchResponse), job).then( + validateTimeRange( + callWithRequestFactory(mockSearchResponse), + (job as unknown) as CombinedJob + ).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); @@ -104,7 +119,10 @@ describe('ML - validateTimeRange', () => { it('called with non-valid job argument #4, missing data_description', done => { const job = { analysis_config: {}, datafeed_config: { indices: [] } }; - validateTimeRange(callWithRequestFactory(mockSearchResponse), job).then( + validateTimeRange( + callWithRequestFactory(mockSearchResponse), + (job as unknown) as CombinedJob + ).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); @@ -112,7 +130,10 @@ describe('ML - validateTimeRange', () => { it('called with non-valid job argument #5, missing data_description.time_field', done => { const job = { analysis_config: {}, data_description: {}, datafeed_config: { indices: [] } }; - validateTimeRange(callWithRequestFactory(mockSearchResponse), job).then( + validateTimeRange( + callWithRequestFactory(mockSearchResponse), + (job as unknown) as CombinedJob + ).then( () => done(new Error('Promise should not resolve for this test without valid job argument.')), () => done() ); @@ -128,7 +149,7 @@ describe('ML - validateTimeRange', () => { duration ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['time_field_invalid']); + expect(ids).toStrictEqual(['time_field_invalid']); }); }); @@ -142,7 +163,7 @@ describe('ML - validateTimeRange', () => { duration ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['time_range_short']); + expect(ids).toStrictEqual(['time_range_short']); }); }); @@ -154,7 +175,7 @@ describe('ML - validateTimeRange', () => { duration ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['time_range_short']); + expect(ids).toStrictEqual(['time_range_short']); }); }); @@ -166,7 +187,7 @@ describe('ML - validateTimeRange', () => { duration ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['time_range_short']); + expect(ids).toStrictEqual(['time_range_short']); }); }); @@ -178,7 +199,7 @@ describe('ML - validateTimeRange', () => { duration ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['success_time_range']); + expect(ids).toStrictEqual(['success_time_range']); }); }); @@ -190,7 +211,7 @@ describe('ML - validateTimeRange', () => { duration ).then(messages => { const ids = messages.map(m => m.id); - expect(ids).to.eql(['time_range_before_epoch']); + expect(ids).toStrictEqual(['time_range_before_epoch']); }); }); }); diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_time_range.ts b/x-pack/plugins/ml/server/models/job_validation/validate_time_range.ts index 5f734387698512..4fb09af94dcc68 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_time_range.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_time_range.ts @@ -37,9 +37,9 @@ export async function isValidTimeField(callAsCurrentUser: APICaller, job: Combin fields: [timeField], }); - let fieldType = fieldCaps.fields[timeField]?.date?.type; + let fieldType = fieldCaps?.fields[timeField]?.date?.type; if (fieldType === undefined) { - fieldType = fieldCaps.fields[timeField]?.date_nanos?.type; + fieldType = fieldCaps?.fields[timeField]?.date_nanos?.type; } return fieldType === ES_FIELD_TYPES.DATE || fieldType === ES_FIELD_TYPES.DATE_NANOS; } @@ -47,7 +47,7 @@ export async function isValidTimeField(callAsCurrentUser: APICaller, job: Combin export async function validateTimeRange( callAsCurrentUser: APICaller, job: CombinedJob, - timeRange: TimeRange | undefined + timeRange?: TimeRange ) { const messages: ValidateTimeRangeMessage[] = []; From 459daa7f230961bead48fe3f334bef65148d90b5 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Thu, 7 May 2020 10:01:51 -0400 Subject: [PATCH 03/58] [Lens] Use rules of hooks with linting (#65593) --- .eslintrc.js | 1 - .../editor_frame/config_panel/layer_panel.tsx | 12 +-- .../editor_frame/workspace_panel.tsx | 20 ++--- .../datapanel.test.tsx | 12 ++- .../indexpattern_datasource/datapanel.tsx | 87 +++++++++---------- .../dimension_panel/bucket_nesting_editor.tsx | 2 +- .../indexpattern_datasource/field_item.tsx | 31 ++++--- 7 files changed, 86 insertions(+), 79 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 56c06902e062b5..f1e0b7d9353e8b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -112,7 +112,6 @@ module.exports = { files: ['x-pack/plugins/lens/**/*.{js,ts,tsx}'], rules: { 'react-hooks/exhaustive-deps': 'off', - 'react-hooks/rules-of-hooks': 'off', }, }, { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx index f7be82dd34ba39..81476e8fa37089 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx @@ -43,6 +43,12 @@ export function LayerPanel( } ) { const dragDropContext = useContext(DragContext); + const [popoverState, setPopoverState] = useState({ + isOpen: false, + openId: null, + addingToGroupId: null, + }); + const { framePublicAPI, layerId, activeVisualization, isOnlyLayer, onRemoveLayer } = props; const datasourcePublicAPI = framePublicAPI.datasourceLayers[layerId]; if (!datasourcePublicAPI) { @@ -74,12 +80,6 @@ export function LayerPanel( dateRange: props.framePublicAPI.dateRange, }; - const [popoverState, setPopoverState] = useState({ - isOpen: false, - openId: null, - addingToGroupId: null, - }); - const { groups } = activeVisualization.getConfiguration(layerVisualizationConfigProps); const isEmptyLayer = !groups.some(d => d.accessors.length > 0); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel.tsx index 1f741ca37934fc..e246d8e27a7089 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel.tsx @@ -122,6 +122,16 @@ export function InnerWorkspacePanel({ framePublicAPI.filters, ]); + useEffect(() => { + // reset expression error if component attempts to run it again + if (expression && localState.expressionBuildError) { + setLocalState(s => ({ + ...s, + expressionBuildError: undefined, + })); + } + }, [expression]); + function onDrop() { if (suggestionForDraggedField) { trackUiEvent('drop_onto_workspace'); @@ -174,16 +184,6 @@ export function InnerWorkspacePanel({ } function renderVisualization() { - useEffect(() => { - // reset expression error if component attempts to run it again - if (expression && localState.expressionBuildError) { - setLocalState(s => ({ - ...s, - expressionBuildError: undefined, - })); - } - }, [expression]); - if (expression === null) { return renderEmptyWorkspace(); } 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 c396f0efee42ed..5e3b32f6961e68 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx @@ -258,7 +258,17 @@ describe('IndexPattern Data Panel', () => { it('should render a warning if there are no index patterns', () => { const wrapper = shallowWithIntl( - + {} }} + changeIndexPattern={jest.fn()} + /> ); expect(wrapper.find('[data-test-subj="indexPattern-no-indexpatterns"]')).toHaveLength(1); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx index 79dcdafd916b4c..b013f2b9d22a67 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx @@ -144,21 +144,49 @@ export function IndexPatternDataPanel({ indexPatternList.map(x => `${x.title}:${x.timeFieldName}`).join(','), ]} /> - + + {Object.keys(indexPatterns).length === 0 ? ( + + + +

+ +

+
+
+
+ ) : ( + + )} ); } @@ -194,35 +222,6 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ onChangeIndexPattern: (newId: string) => void; existingFields: IndexPatternPrivateState['existingFields']; }) { - if (Object.keys(indexPatterns).length === 0) { - return ( - - - -

- -

-
-
-
- ); - } - const [localState, setLocalState] = useState({ nameFilter: '', typeFilter: [], diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx index 04e13fead6fca0..7e2af6a19b0413 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/bucket_nesting_editor.tsx @@ -127,7 +127,7 @@ export function BucketNestingEditor({ defaultMessage: 'Entire data set', }), }, - ...aggColumns, + ...aggColumns.map(({ value, text }) => ({ value, text })), ]} value={prevColumn} onChange={e => setColumns(nestColumn(layer.columnOrder, e.target.value, columnId))} 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 c4d2a6f8780c6a..5f0fa95ad0022a 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx @@ -251,22 +251,6 @@ function FieldItemPopoverContents(props: State & FieldItemProps) { const IS_DARK_THEME = core.uiSettings.get('theme:darkMode'); const chartTheme = IS_DARK_THEME ? EUI_CHARTS_THEME_DARK.theme : EUI_CHARTS_THEME_LIGHT.theme; - - if (props.isLoading) { - return ; - } else if ( - (!props.histogram || props.histogram.buckets.length === 0) && - (!props.topValues || props.topValues.buckets.length === 0) - ) { - return ( - - {i18n.translate('xpack.lens.indexPattern.fieldStatsNoData', { - defaultMessage: 'No data to display.', - })} - - ); - } - let histogramDefault = !!props.histogram; const totalValuesCount = @@ -309,6 +293,21 @@ function FieldItemPopoverContents(props: State & FieldItemProps) { let title = <>; + if (props.isLoading) { + return ; + } else if ( + (!props.histogram || props.histogram.buckets.length === 0) && + (!props.topValues || props.topValues.buckets.length === 0) + ) { + return ( + + {i18n.translate('xpack.lens.indexPattern.fieldStatsNoData', { + defaultMessage: 'No data to display.', + })} + + ); + } + if (histogram && histogram.buckets.length && topValues && topValues.buckets.length) { title = ( Date: Thu, 7 May 2020 08:06:49 -0600 Subject: [PATCH 04/58] [SIEM][Detection Engine] Fixes import bug with non existent signals index (#65595) See: https://github.com/elastic/kibana/issues/65565 * Fixes it to where if there is an import without an index then the rule is not created ### Checklist - [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios --- .../routes/rules/import_rules_route.test.ts | 32 +- .../routes/rules/import_rules_route.ts | 294 +++++++++--------- .../security_and_spaces/tests/import_rules.ts | 51 ++- 3 files changed, 200 insertions(+), 177 deletions(-) diff --git a/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.test.ts b/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.test.ts index e7db2282258804..91685a68a60ae9 100644 --- a/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.test.ts +++ b/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.test.ts @@ -122,20 +122,11 @@ describe('import_rules_route', () => { clients.siemClient.getSignalsIndex.mockReturnValue('mockSignalsIndex'); clients.clusterClient.callAsCurrentUser.mockResolvedValue(getEmptyIndex()); const response = await server.inject(request, context); - expect(response.status).toEqual(200); + expect(response.status).toEqual(400); expect(response.body).toEqual({ - errors: [ - { - error: { - message: - 'To create a rule, the index must exist first. Index mockSignalsIndex does not exist', - status_code: 409, - }, - rule_id: 'rule-1', - }, - ], - success: false, - success_count: 0, + message: + 'To create a rule, the index must exist first. Index mockSignalsIndex does not exist', + status_code: 400, }); }); @@ -145,19 +136,10 @@ describe('import_rules_route', () => { }); const response = await server.inject(request, context); - expect(response.status).toEqual(200); + expect(response.status).toEqual(500); expect(response.body).toEqual({ - errors: [ - { - error: { - message: 'Test error', - status_code: 400, - }, - rule_id: 'rule-1', - }, - ], - success: false, - success_count: 0, + message: 'Test error', + status_code: 500, }); }); diff --git a/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.ts b/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.ts index 4d86f0bec6502a..9ba083ae48086e 100644 --- a/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.ts +++ b/x-pack/plugins/siem/server/lib/detection_engine/routes/rules/import_rules_route.ts @@ -75,6 +75,14 @@ export const importRulesRoute = (router: IRouter, config: ConfigType) => { body: `Invalid file extension ${fileExtension}`, }); } + const signalsIndex = siemClient.getSignalsIndex(); + const indexExists = await getIndexExists(clusterClient.callAsCurrentUser, signalsIndex); + if (!indexExists) { + return siemResponse.error({ + statusCode: 400, + body: `To create a rule, the index must exist first. Index ${signalsIndex} does not exist`, + }); + } const objectLimit = config.maxRuleImportExportSize; const readStream = createRulesStreamFromNdJson(objectLimit); @@ -94,166 +102,150 @@ export const importRulesRoute = (router: IRouter, config: ConfigType) => { const batchParseObjects = chunkParseObjects.shift() ?? []; const newImportRuleResponse = await Promise.all( batchParseObjects.reduce>>((accum, parsedRule) => { - const importsWorkerPromise = new Promise( - async (resolve, reject) => { - if (parsedRule instanceof Error) { - // If the JSON object had a validation or parse error then we return - // early with the error and an (unknown) for the ruleId - resolve( - createBulkErrorObject({ - statusCode: 400, - message: parsedRule.message, - }) - ); - return null; - } - const { - anomaly_threshold: anomalyThreshold, - description, - enabled, - false_positives: falsePositives, - from, - immutable, - query, - language, - machine_learning_job_id: machineLearningJobId, - output_index: outputIndex, - saved_id: savedId, - meta, - filters, - rule_id: ruleId, - index, - interval, - max_signals: maxSignals, - risk_score: riskScore, - name, - severity, - tags, - threat, - to, - type, - references, - note, - timeline_id: timelineId, - timeline_title: timelineTitle, - version, - exceptions_list, - } = parsedRule; + const importsWorkerPromise = new Promise(async resolve => { + if (parsedRule instanceof Error) { + // If the JSON object had a validation or parse error then we return + // early with the error and an (unknown) for the ruleId + resolve( + createBulkErrorObject({ + statusCode: 400, + message: parsedRule.message, + }) + ); + return null; + } + const { + anomaly_threshold: anomalyThreshold, + description, + enabled, + false_positives: falsePositives, + from, + immutable, + query, + language, + machine_learning_job_id: machineLearningJobId, + output_index: outputIndex, + saved_id: savedId, + meta, + filters, + rule_id: ruleId, + index, + interval, + max_signals: maxSignals, + risk_score: riskScore, + name, + severity, + tags, + threat, + to, + type, + references, + note, + timeline_id: timelineId, + timeline_title: timelineTitle, + version, + exceptions_list, + } = parsedRule; - try { - validateLicenseForRuleType({ - license: context.licensing.license, - ruleType: type, - }); + try { + validateLicenseForRuleType({ + license: context.licensing.license, + ruleType: type, + }); - const signalsIndex = siemClient.getSignalsIndex(); - const indexExists = await getIndexExists( - clusterClient.callAsCurrentUser, - signalsIndex - ); - if (!indexExists) { - resolve( - createBulkErrorObject({ - ruleId, - statusCode: 409, - message: `To create a rule, the index must exist first. Index ${signalsIndex} does not exist`, - }) - ); - } - const rule = await readRules({ alertsClient, ruleId }); - if (rule == null) { - await createRules({ - alertsClient, - anomalyThreshold, - description, - enabled, - falsePositives, - from, - immutable, - query, - language, - machineLearningJobId, - outputIndex: signalsIndex, - savedId, - timelineId, - timelineTitle, - meta, - filters, - ruleId, - index, - interval, - maxSignals, - riskScore, - name, - severity, - tags, - to, - type, - threat, - references, - note, - version, - exceptions_list, - actions: [], // Actions are not imported nor exported at this time - }); - resolve({ rule_id: ruleId, status_code: 200 }); - } else if (rule != null && request.query.overwrite) { - await patchRules({ - alertsClient, - savedObjectsClient, - description, - enabled, - falsePositives, - from, - immutable, - query, - language, - outputIndex, - savedId, - timelineId, - timelineTitle, - meta, - filters, - id: undefined, - ruleId, - index, - interval, - maxSignals, - riskScore, - name, - severity, - tags, - to, - type, - threat, - references, - note, - version, - exceptions_list, - anomalyThreshold, - machineLearningJobId, - }); - resolve({ rule_id: ruleId, status_code: 200 }); - } else if (rule != null) { - resolve( - createBulkErrorObject({ - ruleId, - statusCode: 409, - message: `rule_id: "${ruleId}" already exists`, - }) - ); - } - } catch (err) { + const rule = await readRules({ alertsClient, ruleId }); + if (rule == null) { + await createRules({ + alertsClient, + anomalyThreshold, + description, + enabled, + falsePositives, + from, + immutable, + query, + language, + machineLearningJobId, + outputIndex: signalsIndex, + savedId, + timelineId, + timelineTitle, + meta, + filters, + ruleId, + index, + interval, + maxSignals, + riskScore, + name, + severity, + tags, + to, + type, + threat, + references, + note, + version, + exceptions_list, + actions: [], // Actions are not imported nor exported at this time + }); + resolve({ rule_id: ruleId, status_code: 200 }); + } else if (rule != null && request.query.overwrite) { + await patchRules({ + alertsClient, + savedObjectsClient, + description, + enabled, + falsePositives, + from, + immutable, + query, + language, + outputIndex, + savedId, + timelineId, + timelineTitle, + meta, + filters, + id: undefined, + ruleId, + index, + interval, + maxSignals, + riskScore, + name, + severity, + tags, + to, + type, + threat, + references, + note, + version, + exceptions_list, + anomalyThreshold, + machineLearningJobId, + }); + resolve({ rule_id: ruleId, status_code: 200 }); + } else if (rule != null) { resolve( createBulkErrorObject({ ruleId, - statusCode: 400, - message: err.message, + statusCode: 409, + message: `rule_id: "${ruleId}" already exists`, }) ); } + } catch (err) { + resolve( + createBulkErrorObject({ + ruleId, + statusCode: 400, + message: err.message, + }) + ); } - ); + }); return [...accum, importsWorkerPromise]; }, []) ); diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts index 4def508fabbc31..868dafedc6849f 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts @@ -25,7 +25,56 @@ export default ({ getService }: FtrProviderContext): void => { const es = getService('legacyEs'); describe('import_rules', () => { - describe('importing rules', () => { + describe('importing rules without an index', () => { + it('should not create a rule if the index does not exist', async () => { + await supertest + .post(`${DETECTION_ENGINE_RULES_URL}/_import`) + .set('kbn-xsrf', 'true') + .attach('file', getSimpleRuleAsNdjson(['rule-1']), 'rules.ndjson') + .expect(400); + + // We have to wait up to 5 seconds for any unresolved promises to flush + await new Promise(resolve => setTimeout(resolve, 5000)); + + // Try to fetch the rule which should still be a 404 (not found) + const { body } = await supertest.get(`${DETECTION_ENGINE_RULES_URL}?rule_id=rule-1`).send(); + + expect(body).to.eql({ + status_code: 404, + message: 'rule_id: "rule-1" not found', + }); + }); + + it('should return an error that the index needs to be created before you are able to import a single rule', async () => { + const { body } = await supertest + .post(`${DETECTION_ENGINE_RULES_URL}/_import`) + .set('kbn-xsrf', 'true') + .attach('file', getSimpleRuleAsNdjson(['rule-1']), 'rules.ndjson') + .expect(400); + + expect(body).to.eql({ + message: + 'To create a rule, the index must exist first. Index .siem-signals-default does not exist', + status_code: 400, + }); + }); + + it('should return an error that the index needs to be created before you are able to import two rules', async () => { + const { body } = await supertest + .post(`${DETECTION_ENGINE_RULES_URL}/_import`) + .set('kbn-xsrf', 'true') + .attach('file', getSimpleRuleAsNdjson(['rule-1', 'rule-2']), 'rules.ndjson') + .expect(400); + + expect(body).to.eql({ + message: + 'To create a rule, the index must exist first. Index .siem-signals-default does not exist', + status_code: 400, + }); + }); + }); + + describe('importing rules with an index', () => { beforeEach(async () => { await createSignalsIndex(supertest); }); From 834e3bf8ef64825100ac088675b9da026c7fa769 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 7 May 2020 16:24:17 +0200 Subject: [PATCH 05/58] [ML] Transforms: Fix API error message display for edit flyout. (#65494) Fixes an issue where the transform edit flyout would be hidden if an error occurred and the user closed the error toast. This fixes it by showing the error message within an callout in the flyout itself. The bug is a side effect of the problem with the edit-button and it's corresponding React tree being within the transform list actions popover which will be solved in a follow up but possibly not for 7.8.0 which makes this workaround necessary. --- .../edit_transform_flyout.tsx | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/edit_transform_flyout.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/edit_transform_flyout.tsx index a794b7e7c21438..d3dae0a8c8b63c 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/edit_transform_flyout.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/edit_transform_flyout.tsx @@ -4,13 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { FC } from 'react'; +import React, { useState, FC } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiButton, EuiButtonEmpty, + EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiFlyout, @@ -18,11 +19,10 @@ import { EuiFlyoutFooter, EuiFlyoutHeader, EuiOverlayMask, + EuiSpacer, EuiTitle, } from '@elastic/eui'; -import { toMountPoint } from '../../../../../../../../../src/plugins/kibana_react/public'; - import { getErrorMessage } from '../../../../../shared_imports'; import { @@ -30,8 +30,7 @@ import { TransformPivotConfig, REFRESH_TRANSFORM_LIST_STATE, } from '../../../../common'; -import { ToastNotificationText } from '../../../../components'; -import { useAppDependencies, useToastNotifications } from '../../../../app_dependencies'; +import { useToastNotifications } from '../../../../app_dependencies'; import { useApi } from '../../../../hooks/use_api'; @@ -48,13 +47,14 @@ interface EditTransformFlyoutProps { } export const EditTransformFlyout: FC = ({ closeFlyout, config }) => { - const { overlays } = useAppDependencies(); const api = useApi(); const toastNotifications = useToastNotifications(); const [state, dispatch] = useEditTransformFlyout(config); + const [errorMessage, setErrorMessage] = useState(undefined); async function submitFormHandler() { + setErrorMessage(undefined); const requestConfig = applyFormFieldsToTransformConfig(config, state.formFields); const transformId = config.id; @@ -69,12 +69,7 @@ export const EditTransformFlyout: FC = ({ closeFlyout, closeFlyout(); refreshTransformList$.next(REFRESH_TRANSFORM_LIST_STATE.REFRESH); } catch (e) { - toastNotifications.addDanger({ - title: i18n.translate('xpack.transform.transformList.editTransformGenericErrorMessage', { - defaultMessage: 'An error occurred calling the API endpoint to update transforms.', - }), - text: toMountPoint(), - }); + setErrorMessage(getErrorMessage(e)); } } @@ -97,6 +92,24 @@ export const EditTransformFlyout: FC = ({ closeFlyout, }> + {errorMessage !== undefined && ( + <> + + +

{errorMessage}

+
+ + )}
From c0164bc64583eba1828e62f0b63fbec543fe23f8 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 7 May 2020 16:54:14 +0200 Subject: [PATCH 06/58] [ML] Re-enable functional tests. (#65672) Re-enables functional tests for updated ES snapshot, which were disabled in #65377 and #65465. --- .../machine_learning/anomaly_detection/single_metric_job.ts | 3 +-- .../apps/machine_learning/data_frame_analytics/cloning.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/x-pack/test/functional/apps/machine_learning/anomaly_detection/single_metric_job.ts b/x-pack/test/functional/apps/machine_learning/anomaly_detection/single_metric_job.ts index 30327e8a422c17..0f8655e3c6bbca 100644 --- a/x-pack/test/functional/apps/machine_learning/anomaly_detection/single_metric_job.ts +++ b/x-pack/test/functional/apps/machine_learning/anomaly_detection/single_metric_job.ts @@ -71,8 +71,7 @@ export default function({ getService }: FtrProviderContext) { const calendarId = `wizard-test-calendar_${Date.now()}`; - // Breaking latest ES snapshots: https://github.com/elastic/kibana/issues/65377 - describe.skip('single metric', function() { + describe('single metric', function() { this.tags(['mlqa']); before(async () => { await esArchiver.loadIfNeeded('ml/farequote'); diff --git a/x-pack/test/functional/apps/machine_learning/data_frame_analytics/cloning.ts b/x-pack/test/functional/apps/machine_learning/data_frame_analytics/cloning.ts index d87d7d654f5c42..93f225989592ed 100644 --- a/x-pack/test/functional/apps/machine_learning/data_frame_analytics/cloning.ts +++ b/x-pack/test/functional/apps/machine_learning/data_frame_analytics/cloning.ts @@ -13,8 +13,7 @@ export default function({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); - // TODO add fix for https://github.com/elastic/elasticsearch/pull/56118 - describe.skip('jobs cloning supported by UI form', function() { + describe('jobs cloning supported by UI form', function() { const testDataList: Array<{ suiteTitle: string; archive: string; From eb97e919f3e415d9a1e911c3e8d9d7b1cf1e6b80 Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Thu, 7 May 2020 17:21:49 +0200 Subject: [PATCH 07/58] [Lens] Fix console.error react memory leak when saving new viz (#65490) --- .../debounced_component/debounced_component.tsx | 8 ++++++-- .../editor_frame/editor_frame.tsx | 17 ++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/lens/public/debounced_component/debounced_component.tsx b/x-pack/plugins/lens/public/debounced_component/debounced_component.tsx index be6830c1158361..08f55850b119ec 100644 --- a/x-pack/plugins/lens/public/debounced_component/debounced_component.tsx +++ b/x-pack/plugins/lens/public/debounced_component/debounced_component.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useState, useMemo, memo, FunctionComponent } from 'react'; +import React, { useState, useMemo, useEffect, memo, FunctionComponent } from 'react'; import { debounce } from 'lodash'; /** @@ -17,7 +17,11 @@ export function debouncedComponent(component: FunctionComponent, return (props: TProps) => { const [cachedProps, setCachedProps] = useState(props); - const delayRender = useMemo(() => debounce(setCachedProps, delay), []); + const debouncePropsChange = debounce(setCachedProps, delay); + const delayRender = useMemo(() => debouncePropsChange, []); + + // cancel debounced prop change if component has been unmounted in the meantime + useEffect(() => () => debouncePropsChange.cancel(), []); delayRender(props); 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 5cd803e7cebbc9..6da9a947110818 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 @@ -61,6 +61,8 @@ export function EditorFrame(props: EditorFrameProps) { // Initialize current datasource and all active datasources useEffect(() => { + // prevents executing dispatch on unmounted component + let isUnmounted = false; if (!allLoaded) { Object.entries(props.datasourceMap).forEach(([datasourceId, datasource]) => { if ( @@ -70,16 +72,21 @@ export function EditorFrame(props: EditorFrameProps) { datasource .initialize(state.datasourceStates[datasourceId].state || undefined) .then(datasourceState => { - dispatch({ - type: 'UPDATE_DATASOURCE_STATE', - updater: datasourceState, - datasourceId, - }); + if (!isUnmounted) { + dispatch({ + type: 'UPDATE_DATASOURCE_STATE', + updater: datasourceState, + datasourceId, + }); + } }) .catch(onError); } }); } + return () => { + isUnmounted = true; + }; }, [allLoaded]); const datasourceLayers: Record = {}; From 1275cee0b42429bbe97c997743d09e2e073c5def Mon Sep 17 00:00:00 2001 From: Robert Austin Date: Thu, 7 May 2020 11:58:52 -0400 Subject: [PATCH 08/58] [Endpoint] cleanup comments, types (#65506) --- x-pack/plugins/endpoint/common/generate_data.ts | 2 +- x-pack/plugins/endpoint/common/types.ts | 3 +++ .../endpoint/view/hosts/details/policy_response.tsx | 3 +-- .../view/hosts/details/policy_response_friendly_names.ts | 3 +-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/endpoint/common/generate_data.ts b/x-pack/plugins/endpoint/common/generate_data.ts index 9e7aedcc90bb5e..ff8add42a50851 100644 --- a/x-pack/plugins/endpoint/common/generate_data.ts +++ b/x-pack/plugins/endpoint/common/generate_data.ts @@ -560,7 +560,7 @@ export class EndpointDocGenerator { applied: { actions: { configure_elasticsearch_connection: { - message: 'elasticsearch comes configured successfully', + message: 'elasticsearch communications configured successfully', status: HostPolicyResponseActionStatus.success, }, configure_kernel: { diff --git a/x-pack/plugins/endpoint/common/types.ts b/x-pack/plugins/endpoint/common/types.ts index 181b0e7ab38846..b39b2e89ee1508 100644 --- a/x-pack/plugins/endpoint/common/types.ts +++ b/x-pack/plugins/endpoint/common/types.ts @@ -644,6 +644,9 @@ export interface HostPolicyResponseActions { read_malware_config: HostPolicyResponseActionDetails; } +/** + * policy configurations returned by the endpoint in response to a user applying a policy + */ export type HostPolicyResponseConfiguration = HostPolicyResponse['endpoint']['policy']['applied']['response']['configurations']; interface HostPolicyResponseConfigurationStatus { diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response.tsx b/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response.tsx index aa04f2fdff57f4..8714141364e7de 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response.tsx +++ b/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response.tsx @@ -12,7 +12,6 @@ import { HostPolicyResponseActions, HostPolicyResponseConfiguration, Immutable, - ImmutableArray, } from '../../../../../../common/types'; import { formatResponse } from './policy_response_friendly_names'; import { POLICY_STATUS_TO_HEALTH_COLOR } from './host_constants'; @@ -51,7 +50,7 @@ const ResponseActions = memo( actions, actionStatus, }: { - actions: ImmutableArray; + actions: Immutable>; actionStatus: Partial; }) => { return ( diff --git a/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response_friendly_names.ts b/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response_friendly_names.ts index 251b3e86bc3f9d..502aa66b244215 100644 --- a/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response_friendly_names.ts +++ b/x-pack/plugins/endpoint/public/applications/endpoint/view/hosts/details/policy_response_friendly_names.ts @@ -159,8 +159,7 @@ responseMap.set( ); /** - * Takes in the snake-cased response from the API and - * removes the underscores and capitalizes the string. + * Maps a server provided value to corresponding i18n'd string. */ export function formatResponse(responseString: string) { if (responseMap.has(responseString)) { From 66f67bdc1aee5f5ec29b19a584b9dac801070623 Mon Sep 17 00:00:00 2001 From: Josh Dover Date: Thu, 7 May 2020 10:10:56 -0600 Subject: [PATCH 09/58] Redirect to full path when calling navigateToApp to a legacy app (#65112) --- .../application/application_service.tsx | 9 ++- .../application_service.test.tsx | 72 ++++++++++++++++--- 2 files changed, 70 insertions(+), 11 deletions(-) diff --git a/src/core/public/application/application_service.tsx b/src/core/public/application/application_service.tsx index 8442f1ecc6411a..fd496da26283c4 100644 --- a/src/core/public/application/application_service.tsx +++ b/src/core/public/application/application_service.tsx @@ -114,7 +114,9 @@ export class ApplicationService { context, http: { basePath }, injectedMetadata, - redirectTo = (path: string) => (window.location.href = path), + redirectTo = (path: string) => { + window.location.assign(path); + }, history, }: SetupDeps): InternalApplicationSetup { const basename = basePath.get(); @@ -210,7 +212,10 @@ export class ApplicationService { } const appBasePath = basePath.prepend(appRoute); - const mount: LegacyAppMounter = () => redirectTo(appBasePath); + const mount: LegacyAppMounter = ({ history: appHistory }) => { + redirectTo(appHistory.createHref(appHistory.location)); + window.location.reload(); + }; const { updater$, ...appProps } = app; this.apps.set(app.id, { diff --git a/src/core/public/application/integration_tests/application_service.test.tsx b/src/core/public/application/integration_tests/application_service.test.tsx index 60c36d3e330e0b..e399fbc726977a 100644 --- a/src/core/public/application/integration_tests/application_service.test.tsx +++ b/src/core/public/application/integration_tests/application_service.test.tsx @@ -18,8 +18,10 @@ */ import { take } from 'rxjs/operators'; -import { createRenderer } from './utils'; +import { act } from 'react-dom/test-utils'; import { createMemoryHistory, MemoryHistory } from 'history'; + +import { createRenderer } from './utils'; import { ApplicationService } from '../application_service'; import { httpServiceMock } from '../../http/http_service.mock'; import { contextServiceMock } from '../../context/context_service.mock'; @@ -27,6 +29,9 @@ import { injectedMetadataServiceMock } from '../../injected_metadata/injected_me import { MockLifecycle } from '../test_types'; import { overlayServiceMock } from '../../overlays/overlay_service.mock'; import { AppMountParameters } from '../types'; +import { ScopedHistory } from '../scoped_history'; + +const flushPromises = () => new Promise(resolve => setImmediate(resolve)); describe('ApplicationService', () => { let setupDeps: MockLifecycle<'setup'>; @@ -83,7 +88,10 @@ describe('ApplicationService', () => { expect(await currentAppId$.pipe(take(1)).toPromise()).toEqual('app1'); - resolveMount!(); + await act(async () => { + resolveMount!(); + await flushPromises(); + }); expect(await currentAppId$.pipe(take(1)).toPromise()).toEqual('app1'); }); @@ -109,7 +117,7 @@ describe('ApplicationService', () => { const { navigateToApp, currentAppId$ } = await service.start(startDeps); - await navigateToApp('app1'); + await act(() => navigateToApp('app1')); expect(await currentAppId$.pipe(take(1)).toPromise()).toEqual('app1'); @@ -120,6 +128,46 @@ describe('ApplicationService', () => { }); }); + it('redirects to full path when navigating to legacy app', async () => { + const redirectTo = jest.fn(); + const reloadSpy = jest.spyOn(window.location, 'reload').mockImplementation(() => {}); + + // In the real application, we use a BrowserHistory instance configured with `basename`. However, in tests we must + // use MemoryHistory which does not support `basename`. In order to emulate this behavior, we will wrap this + // instance with a ScopedHistory configured with a basepath. + history.push(setupDeps.http.basePath.get()); // ScopedHistory constructor will fail if underlying history is not currently at basePath. + const { register, registerLegacyApp } = service.setup({ + ...setupDeps, + redirectTo, + history: new ScopedHistory(history, setupDeps.http.basePath.get()), + }); + + register(Symbol(), { + id: 'app1', + title: 'App1', + mount: ({ onAppLeave }: AppMountParameters) => { + onAppLeave(actions => actions.default()); + return () => undefined; + }, + }); + registerLegacyApp({ + id: 'myLegacyTestApp', + appUrl: '/app/myLegacyTestApp', + title: 'My Legacy Test App', + }); + + const { navigateToApp, getComponent } = await service.start(startDeps); + + update = createRenderer(getComponent()); + + await navigate('/test/app/app1'); + await act(() => navigateToApp('myLegacyTestApp', { path: '#/some-path' })); + + expect(redirectTo).toHaveBeenCalledWith('/test/app/myLegacyTestApp#/some-path'); + expect(reloadSpy).toHaveBeenCalled(); + reloadSpy.mockRestore(); + }); + describe('leaving an application that registered an app leave handler', () => { it('navigates to the new app if action is default', async () => { startDeps.overlays.openConfirm.mockResolvedValue(true); @@ -146,8 +194,10 @@ describe('ApplicationService', () => { update = createRenderer(getComponent()); - await navigate('/app/app1'); - await navigateToApp('app2'); + await act(async () => { + await navigate('/app/app1'); + await navigateToApp('app2'); + }); expect(startDeps.overlays.openConfirm).not.toHaveBeenCalled(); expect(history.entries.length).toEqual(3); @@ -179,8 +229,10 @@ describe('ApplicationService', () => { update = createRenderer(getComponent()); - await navigate('/app/app1'); - await navigateToApp('app2'); + await act(async () => { + await navigate('/app/app1'); + await navigateToApp('app2'); + }); expect(startDeps.overlays.openConfirm).toHaveBeenCalledTimes(1); expect(startDeps.overlays.openConfirm).toHaveBeenCalledWith( @@ -216,8 +268,10 @@ describe('ApplicationService', () => { update = createRenderer(getComponent()); - await navigate('/app/app1'); - await navigateToApp('app2'); + await act(async () => { + await navigate('/app/app1'); + await navigateToApp('app2'); + }); expect(startDeps.overlays.openConfirm).toHaveBeenCalledTimes(1); expect(startDeps.overlays.openConfirm).toHaveBeenCalledWith( From 5629dd6eded732b8c301ec7d652f38bf385f674f Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Thu, 7 May 2020 12:17:25 -0400 Subject: [PATCH 10/58] [Ingest pipelines] Component integration tests (#65316) --- .../helpers/http_requests.ts | 77 +++++++ .../client_integration/helpers/index.ts | 21 ++ .../helpers/pipeline_form.helpers.ts | 59 +++++ .../helpers/pipelines_clone.helpers.ts | 47 ++++ .../helpers/pipelines_create.helpers.ts | 34 +++ .../helpers/pipelines_edit.helpers.ts | 47 ++++ .../helpers/pipelines_list.helpers.ts | 105 +++++++++ .../helpers/setup_environment.tsx | 62 ++++++ .../ingest_pipelines_clone.test.tsx | 76 +++++++ .../ingest_pipelines_create.test.tsx | 208 ++++++++++++++++++ .../ingest_pipelines_edit.test.tsx | 89 ++++++++ .../ingest_pipelines_list.test.ts | 186 ++++++++++++++++ .../pipeline_form/pipeline_form.tsx | 1 + .../pipeline_form/pipeline_form_fields.tsx | 11 +- .../pipeline_request_flyout.tsx | 4 +- .../pipeline_test_flyout.tsx | 4 +- .../pipelines_create/pipelines_create.tsx | 5 +- .../pipelines_edit/pipelines_edit.tsx | 5 +- .../pipelines_list/details_flyout.tsx | 3 +- .../sections/pipelines_list/empty_list.tsx | 3 +- .../sections/pipelines_list/main.tsx | 10 +- .../sections/pipelines_list/table.tsx | 7 +- 22 files changed, 1047 insertions(+), 17 deletions(-) create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/index.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx create mode 100644 x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/http_requests.ts new file mode 100644 index 00000000000000..3a2ee7ef8b008a --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/http_requests.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import sinon, { SinonFakeServer } from 'sinon'; + +import { API_BASE_PATH } from '../../../common/constants'; + +// Register helpers to mock HTTP Requests +const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { + const setLoadPipelinesResponse = (response?: any[], error?: any) => { + const status = error ? error.status || 400 : 200; + const body = error ? error.body : response; + + server.respondWith('GET', API_BASE_PATH, [ + status, + { 'Content-Type': 'application/json' }, + JSON.stringify(body), + ]); + }; + + const setLoadPipelineResponse = (response?: {}, error?: any) => { + const status = error ? error.status || 400 : 200; + const body = error ? error.body : response; + + server.respondWith('GET', `${API_BASE_PATH}/:name`, [ + status, + { 'Content-Type': 'application/json' }, + JSON.stringify(body), + ]); + }; + + const setDeletePipelineResponse = (response?: object) => { + server.respondWith('DELETE', `${API_BASE_PATH}/:name`, [ + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify(response), + ]); + }; + + const setCreatePipelineResponse = (response?: object, error?: any) => { + const status = error ? error.status || 400 : 200; + const body = error ? JSON.stringify(error.body) : JSON.stringify(response); + + server.respondWith('POST', API_BASE_PATH, [ + status, + { 'Content-Type': 'application/json' }, + body, + ]); + }; + + return { + setLoadPipelinesResponse, + setLoadPipelineResponse, + setDeletePipelineResponse, + setCreatePipelineResponse, + }; +}; + +export const init = () => { + const server = sinon.fakeServer.create(); + server.respondImmediately = true; + + // Define default response for unhandled requests. + // We make requests to APIs which don't impact the component under test, e.g. UI metric telemetry, + // and we can mock them all with a 200 instead of mocking each one individually. + server.respondWith([200, {}, 'DefaultMockedResponse']); + + const httpRequestsMockHelpers = registerHttpRequestMockHelpers(server); + + return { + server, + httpRequestsMockHelpers, + }; +}; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/index.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/index.ts new file mode 100644 index 00000000000000..6216119c5d1d12 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { setup as pipelinesListSetup } from './pipelines_list.helpers'; +import { setup as pipelinesCreateSetup } from './pipelines_create.helpers'; +import { setup as pipelinesCloneSetup } from './pipelines_clone.helpers'; +import { setup as pipelinesEditSetup } from './pipelines_edit.helpers'; + +export { nextTick, getRandomString, findTestSubject } from '../../../../../test_utils'; + +export { setupEnvironment } from './setup_environment'; + +export const pageHelpers = { + pipelinesList: { setup: pipelinesListSetup }, + pipelinesCreate: { setup: pipelinesCreateSetup }, + pipelinesClone: { setup: pipelinesCloneSetup }, + pipelinesEdit: { setup: pipelinesEditSetup }, +}; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.ts new file mode 100644 index 00000000000000..d56e92a2419c42 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipeline_form.helpers.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; + * you may not use this file except in compliance with the Elastic License. + */ +import { TestBed } from '../../../../../test_utils'; + +export const getFormActions = (testBed: TestBed) => { + const { find, form } = testBed; + + // User actions + const clickSubmitButton = () => { + find('submitButton').simulate('click'); + }; + + const clickTestPipelineButton = () => { + find('testPipelineButton').simulate('click'); + }; + + const clickShowRequestLink = () => { + find('showRequestLink').simulate('click'); + }; + + const toggleVersionSwitch = () => { + form.toggleEuiSwitch('versionToggle'); + }; + + const toggleOnFailureSwitch = () => { + form.toggleEuiSwitch('onFailureToggle'); + }; + + return { + clickSubmitButton, + clickShowRequestLink, + toggleVersionSwitch, + toggleOnFailureSwitch, + clickTestPipelineButton, + }; +}; + +export type PipelineFormTestSubjects = + | 'submitButton' + | 'pageTitle' + | 'savePipelineError' + | 'pipelineForm' + | 'versionToggle' + | 'versionField' + | 'nameField.input' + | 'descriptionField.input' + | 'processorsField' + | 'onFailureToggle' + | 'onFailureEditor' + | 'testPipelineButton' + | 'showRequestLink' + | 'requestFlyout' + | 'requestFlyout.title' + | 'testPipelineFlyout' + | 'testPipelineFlyout.title' + | 'documentationLink'; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.ts new file mode 100644 index 00000000000000..2791ffc32c8580 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_clone.helpers.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { registerTestBed, TestBedConfig, TestBed } from '../../../../../test_utils'; +import { BASE_PATH } from '../../../common/constants'; +import { PipelinesClone } from '../../../public/application/sections/pipelines_clone'; // eslint-disable-line @kbn/eslint/no-restricted-paths +import { getFormActions, PipelineFormTestSubjects } from './pipeline_form.helpers'; +import { WithAppDependencies } from './setup_environment'; + +export type PipelinesCloneTestBed = TestBed & { + actions: ReturnType; +}; + +export const PIPELINE_TO_CLONE = { + name: 'my_pipeline', + description: 'pipeline description', + processors: [ + { + set: { + field: 'foo', + value: 'new', + }, + }, + ], +}; + +const testBedConfig: TestBedConfig = { + memoryRouter: { + initialEntries: [`${BASE_PATH}create/${PIPELINE_TO_CLONE.name}`], + componentRoutePath: `${BASE_PATH}create/:name`, + }, + doMountAsync: true, +}; + +const initTestBed = registerTestBed(WithAppDependencies(PipelinesClone), testBedConfig); + +export const setup = async (): Promise => { + const testBed = await initTestBed(); + + return { + ...testBed, + actions: getFormActions(testBed), + }; +}; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts new file mode 100644 index 00000000000000..54a62a8357e524 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { registerTestBed, TestBedConfig, TestBed } from '../../../../../test_utils'; +import { BASE_PATH } from '../../../common/constants'; +import { PipelinesCreate } from '../../../public/application/sections/pipelines_create'; // eslint-disable-line @kbn/eslint/no-restricted-paths +import { getFormActions, PipelineFormTestSubjects } from './pipeline_form.helpers'; +import { WithAppDependencies } from './setup_environment'; + +export type PipelinesCreateTestBed = TestBed & { + actions: ReturnType; +}; + +const testBedConfig: TestBedConfig = { + memoryRouter: { + initialEntries: [`${BASE_PATH}/create`], + componentRoutePath: `${BASE_PATH}/create`, + }, + doMountAsync: true, +}; + +const initTestBed = registerTestBed(WithAppDependencies(PipelinesCreate), testBedConfig); + +export const setup = async (): Promise => { + const testBed = await initTestBed(); + + return { + ...testBed, + actions: getFormActions(testBed), + }; +}; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.ts new file mode 100644 index 00000000000000..12320f034a8193 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_edit.helpers.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { registerTestBed, TestBedConfig, TestBed } from '../../../../../test_utils'; +import { BASE_PATH } from '../../../common/constants'; +import { PipelinesEdit } from '../../../public/application/sections/pipelines_edit'; // eslint-disable-line @kbn/eslint/no-restricted-paths +import { getFormActions, PipelineFormTestSubjects } from './pipeline_form.helpers'; +import { WithAppDependencies } from './setup_environment'; + +export type PipelinesEditTestBed = TestBed & { + actions: ReturnType; +}; + +export const PIPELINE_TO_EDIT = { + name: 'my_pipeline', + description: 'pipeline description', + processors: [ + { + set: { + field: 'foo', + value: 'new', + }, + }, + ], +}; + +const testBedConfig: TestBedConfig = { + memoryRouter: { + initialEntries: [`${BASE_PATH}edit/${PIPELINE_TO_EDIT.name}`], + componentRoutePath: `${BASE_PATH}edit/:name`, + }, + doMountAsync: true, +}; + +const initTestBed = registerTestBed(WithAppDependencies(PipelinesEdit), testBedConfig); + +export const setup = async (): Promise => { + const testBed = await initTestBed(); + + return { + ...testBed, + actions: getFormActions(testBed), + }; +}; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts new file mode 100644 index 00000000000000..0f9745981c18bb --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_list.helpers.ts @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { act } from 'react-dom/test-utils'; + +import { BASE_PATH } from '../../../common/constants'; +import { + registerTestBed, + TestBed, + TestBedConfig, + findTestSubject, + nextTick, +} from '../../../../../test_utils'; +import { PipelinesList } from '../../../public/application/sections/pipelines_list'; +import { WithAppDependencies } from './setup_environment'; + +const testBedConfig: TestBedConfig = { + memoryRouter: { + initialEntries: [BASE_PATH], + componentRoutePath: BASE_PATH, + }, + doMountAsync: true, +}; + +const initTestBed = registerTestBed(WithAppDependencies(PipelinesList), testBedConfig); + +export type PipelineListTestBed = TestBed & { + actions: ReturnType; +}; + +const createActions = (testBed: TestBed) => { + const { find } = testBed; + + /** + * User Actions + */ + const clickReloadButton = () => { + find('reloadButton').simulate('click'); + }; + + const clickPipelineAt = async (index: number) => { + const { component, table, router } = testBed; + const { rows } = table.getMetaData('pipelinesTable'); + const pipelineLink = findTestSubject(rows[index].reactWrapper, 'pipelineDetailsLink'); + + await act(async () => { + const { href } = pipelineLink.props(); + router.navigateTo(href!); + await nextTick(); + component.update(); + }); + }; + + const clickActionMenu = (pipelineName: string) => { + const { component } = testBed; + + // When a table has > 2 actions, EUI displays an overflow menu with an id "-actions" + component.find(`div[id="${pipelineName}-actions"] button`).simulate('click'); + }; + + const clickPipelineAction = (pipelineName: string, action: 'edit' | 'clone' | 'delete') => { + const actions = ['edit', 'clone', 'delete']; + const { component } = testBed; + + clickActionMenu(pipelineName); + + component + .find('.euiContextMenuItem') + .at(actions.indexOf(action)) + .simulate('click'); + }; + + return { + clickReloadButton, + clickPipelineAt, + clickPipelineAction, + clickActionMenu, + }; +}; + +export const setup = async (): Promise => { + const testBed = await initTestBed(); + + return { + ...testBed, + actions: createActions(testBed), + }; +}; + +export type PipelineListTestSubjects = + | 'appTitle' + | 'documentationLink' + | 'createPipelineButton' + | 'pipelinesTable' + | 'pipelineDetails' + | 'pipelineDetails.title' + | 'deletePipelinesConfirmation' + | 'emptyList' + | 'emptyList.title' + | 'sectionLoading' + | 'pipelineLoadError' + | 'reloadButton'; diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx new file mode 100644 index 00000000000000..3243d665832f20 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +/* eslint-disable @kbn/eslint/no-restricted-paths */ +import React from 'react'; + +import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public'; +import { + notificationServiceMock, + fatalErrorsServiceMock, + docLinksServiceMock, + injectedMetadataServiceMock, +} from '../../../../../../src/core/public/mocks'; + +import { usageCollectionPluginMock } from '../../../../../../src/plugins/usage_collection/public/mocks'; + +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { HttpService } from '../../../../../../src/core/public/http'; + +import { + breadcrumbService, + documentationService, + uiMetricService, + apiService, +} from '../../../public/application/services'; + +import { init as initHttpRequests } from './http_requests'; + +const httpServiceSetupMock = new HttpService().setup({ + injectedMetadata: injectedMetadataServiceMock.createSetupContract(), + fatalErrors: fatalErrorsServiceMock.createSetupContract(), +}); + +const appServices = { + breadcrumbs: breadcrumbService, + metric: uiMetricService, + documentation: documentationService, + api: apiService, + notifications: notificationServiceMock.createSetupContract(), +}; + +export const setupEnvironment = () => { + uiMetricService.setup(usageCollectionPluginMock.createSetupContract()); + apiService.setup(httpServiceSetupMock, uiMetricService); + documentationService.setup(docLinksServiceMock.createStartContract()); + breadcrumbService.setup(() => {}); + + const { server, httpRequestsMockHelpers } = initHttpRequests(); + + return { + server, + httpRequestsMockHelpers, + }; +}; + +export const WithAppDependencies = (Comp: any) => (props: any) => ( + + + +); diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx new file mode 100644 index 00000000000000..29013678922132 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_clone.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { act } from 'react-dom/test-utils'; + +import { setupEnvironment, pageHelpers } from './helpers'; +import { PIPELINE_TO_CLONE, PipelinesCloneTestBed } from './helpers/pipelines_clone.helpers'; + +const { setup } = pageHelpers.pipelinesClone; + +jest.mock('@elastic/eui', () => ({ + ...jest.requireActual('@elastic/eui'), + // Mocking EuiCodeEditor, which uses React Ace under the hood + EuiCodeEditor: (props: any) => ( + { + props.onChange(syntheticEvent.jsonString); + }} + /> + ), +})); + +describe('', () => { + let testBed: PipelinesCloneTestBed; + + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadPipelineResponse(PIPELINE_TO_CLONE); + + await act(async () => { + testBed = await setup(); + await testBed.waitFor('pipelineForm'); + }); + }); + + test('should render the correct page header', () => { + const { exists, find } = testBed; + + // Verify page title + expect(exists('pageTitle')).toBe(true); + expect(find('pageTitle').text()).toEqual('Create pipeline'); + + // Verify documentation link + expect(exists('documentationLink')).toBe(true); + expect(find('documentationLink').text()).toBe('Create pipeline docs'); + }); + + describe('form submission', () => { + it('should send the correct payload', async () => { + const { actions, waitFor } = testBed; + + await act(async () => { + actions.clickSubmitButton(); + await waitFor('pipelineForm', 0); + }); + + const latestRequest = server.requests[server.requests.length - 1]; + + const expected = { + ...PIPELINE_TO_CLONE, + name: `${PIPELINE_TO_CLONE.name}-copy`, + }; + + expect(JSON.parse(latestRequest.requestBody)).toEqual(expected); + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx new file mode 100644 index 00000000000000..e0be8d2937729c --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx @@ -0,0 +1,208 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { act } from 'react-dom/test-utils'; + +import { setupEnvironment, pageHelpers, nextTick } from './helpers'; +import { PipelinesCreateTestBed } from './helpers/pipelines_create.helpers'; + +const { setup } = pageHelpers.pipelinesCreate; + +jest.mock('@elastic/eui', () => ({ + ...jest.requireActual('@elastic/eui'), + // Mocking EuiCodeEditor, which uses React Ace under the hood + EuiCodeEditor: (props: any) => ( + { + props.onChange(syntheticEvent.jsonString); + }} + /> + ), +})); + +describe('', () => { + let testBed: PipelinesCreateTestBed; + + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + describe('on component mount', () => { + beforeEach(async () => { + await act(async () => { + testBed = await setup(); + await testBed.waitFor('pipelineForm'); + }); + }); + + test('should render the correct page header', () => { + const { exists, find } = testBed; + + // Verify page title + expect(exists('pageTitle')).toBe(true); + expect(find('pageTitle').text()).toEqual('Create pipeline'); + + // Verify documentation link + expect(exists('documentationLink')).toBe(true); + expect(find('documentationLink').text()).toBe('Create pipeline docs'); + }); + + test('should toggle the version field', async () => { + const { actions, component, exists } = testBed; + + // Version field should be hidden by default + expect(exists('versionField')).toBe(false); + + await act(async () => { + actions.toggleVersionSwitch(); + await nextTick(); + component.update(); + }); + + expect(exists('versionField')).toBe(true); + }); + + test('should toggle the on-failure processors editor', async () => { + const { actions, component, exists } = testBed; + + // On-failure editor should be hidden by default + expect(exists('onFailureEditor')).toBe(false); + + await act(async () => { + actions.toggleOnFailureSwitch(); + await nextTick(); + component.update(); + }); + + expect(exists('onFailureEditor')).toBe(true); + }); + + test('should show the request flyout', async () => { + const { actions, component, find, exists } = testBed; + + await act(async () => { + actions.clickShowRequestLink(); + await nextTick(); + component.update(); + }); + + // Verify request flyout opens + expect(exists('requestFlyout')).toBe(true); + expect(find('requestFlyout.title').text()).toBe('Request'); + }); + + describe('form validation', () => { + test('should prevent form submission if required fields are missing', async () => { + const { form, actions, component, find } = testBed; + + await act(async () => { + actions.clickSubmitButton(); + await nextTick(); + component.update(); + }); + + expect(form.getErrorsMessages()).toEqual([ + 'Name is required.', + 'A description is required.', + ]); + expect(find('submitButton').props().disabled).toEqual(true); + + // Add required fields and verify button is enabled again + form.setInputValue('nameField.input', 'my_pipeline'); + form.setInputValue('descriptionField.input', 'pipeline description'); + + await act(async () => { + await nextTick(); + component.update(); + }); + + expect(find('submitButton').props().disabled).toEqual(false); + }); + }); + + describe('form submission', () => { + beforeEach(async () => { + await act(async () => { + testBed = await setup(); + + const { waitFor, form } = testBed; + + await waitFor('pipelineForm'); + + form.setInputValue('nameField.input', 'my_pipeline'); + form.setInputValue('descriptionField.input', 'pipeline description'); + }); + }); + + test('should send the correct payload', async () => { + const { actions, waitFor } = testBed; + + await act(async () => { + actions.clickSubmitButton(); + await waitFor('pipelineForm', 0); + }); + + const latestRequest = server.requests[server.requests.length - 1]; + + const expected = { + name: 'my_pipeline', + description: 'pipeline description', + processors: [], + }; + + expect(JSON.parse(latestRequest.requestBody)).toEqual(expected); + }); + + test('should surface API errors from the request', async () => { + const { actions, find, exists, waitFor } = testBed; + + const error = { + status: 409, + error: 'Conflict', + message: `There is already a pipeline with name 'my_pipeline'.`, + }; + + httpRequestsMockHelpers.setCreatePipelineResponse(undefined, { body: error }); + + await act(async () => { + actions.clickSubmitButton(); + await waitFor('savePipelineError'); + }); + + expect(exists('savePipelineError')).toBe(true); + expect(find('savePipelineError').text()).toContain(error.message); + }); + }); + + describe('test pipeline', () => { + beforeEach(async () => { + await act(async () => { + testBed = await setup(); + + const { waitFor } = testBed; + + await waitFor('pipelineForm'); + }); + }); + + test('should open the test pipeline flyout', async () => { + const { actions, exists, find, waitFor } = testBed; + + await act(async () => { + actions.clickTestPipelineButton(); + await waitFor('testPipelineFlyout'); + }); + + // Verify test pipeline flyout opens + expect(exists('testPipelineFlyout')).toBe(true); + expect(find('testPipelineFlyout.title').text()).toBe('Test pipeline'); + }); + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.test.tsx new file mode 100644 index 00000000000000..477eec83f876d7 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_edit.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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { act } from 'react-dom/test-utils'; + +import { setupEnvironment, pageHelpers } from './helpers'; +import { PIPELINE_TO_EDIT, PipelinesEditTestBed } from './helpers/pipelines_edit.helpers'; + +const { setup } = pageHelpers.pipelinesEdit; + +jest.mock('@elastic/eui', () => ({ + ...jest.requireActual('@elastic/eui'), + // Mocking EuiCodeEditor, which uses React Ace under the hood + EuiCodeEditor: (props: any) => ( + { + props.onChange(syntheticEvent.jsonString); + }} + /> + ), +})); + +describe('', () => { + let testBed: PipelinesEditTestBed; + + const { server, httpRequestsMockHelpers } = setupEnvironment(); + + afterAll(() => { + server.restore(); + }); + + beforeEach(async () => { + httpRequestsMockHelpers.setLoadPipelineResponse(PIPELINE_TO_EDIT); + + await act(async () => { + testBed = await setup(); + await testBed.waitFor('pipelineForm'); + }); + }); + + test('should render the correct page header', () => { + const { exists, find } = testBed; + + // Verify page title + expect(exists('pageTitle')).toBe(true); + expect(find('pageTitle').text()).toEqual(`Edit pipeline '${PIPELINE_TO_EDIT.name}'`); + + // Verify documentation link + expect(exists('documentationLink')).toBe(true); + expect(find('documentationLink').text()).toBe('Edit pipeline docs'); + }); + + it('should disable the name field', () => { + const { find } = testBed; + + const nameInput = find('nameField.input'); + expect(nameInput.props().disabled).toEqual(true); + }); + + describe('form submission', () => { + it('should send the correct payload with changed values', async () => { + const UPDATED_DESCRIPTION = 'updated pipeline description'; + const { actions, form, waitFor } = testBed; + + // Make change to description field + form.setInputValue('descriptionField.input', UPDATED_DESCRIPTION); + + await act(async () => { + actions.clickSubmitButton(); + await waitFor('pipelineForm', 0); + }); + + const latestRequest = server.requests[server.requests.length - 1]; + + const { name, ...pipelineDefinition } = PIPELINE_TO_EDIT; + + const expected = { + ...pipelineDefinition, + description: UPDATED_DESCRIPTION, + }; + + expect(JSON.parse(latestRequest.requestBody)).toEqual(expected); + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts new file mode 100644 index 00000000000000..3e0b78d4f2e9de --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_list.test.ts @@ -0,0 +1,186 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { act } from 'react-dom/test-utils'; + +import { API_BASE_PATH } from '../../common/constants'; + +import { setupEnvironment, pageHelpers, nextTick } from './helpers'; +import { PipelineListTestBed } from './helpers/pipelines_list.helpers'; + +const { setup } = pageHelpers.pipelinesList; + +jest.mock('ui/i18n', () => { + const I18nContext = ({ children }: any) => children; + return { I18nContext }; +}); + +describe('', () => { + const { server, httpRequestsMockHelpers } = setupEnvironment(); + let testBed: PipelineListTestBed; + + afterAll(() => { + server.restore(); + }); + + describe('With pipelines', () => { + const pipeline1 = { + name: 'test_pipeline1', + description: 'test_pipeline1 description', + processors: [], + }; + + const pipeline2 = { + name: 'test_pipeline2', + description: 'test_pipeline2 description', + processors: [], + }; + + const pipelines = [pipeline1, pipeline2]; + + httpRequestsMockHelpers.setLoadPipelinesResponse(pipelines); + + beforeEach(async () => { + testBed = await setup(); + + await act(async () => { + const { waitFor } = testBed; + + await waitFor('pipelinesTable'); + }); + }); + + test('should render the list view', async () => { + const { exists, find, table } = testBed; + + // Verify app title + expect(exists('appTitle')).toBe(true); + expect(find('appTitle').text()).toEqual('Ingest Node Pipelines'); + + // Verify documentation link + expect(exists('documentationLink')).toBe(true); + expect(find('documentationLink').text()).toBe('Ingest Node Pipelines docs'); + + // Verify create button exists + expect(exists('createPipelineButton')).toBe(true); + + // Verify table content + const { tableCellsValues } = table.getMetaData('pipelinesTable'); + tableCellsValues.forEach((row, i) => { + const pipeline = pipelines[i]; + + expect(row).toEqual(['', pipeline.name, '']); + }); + }); + + test('should reload the pipeline data', async () => { + const { component, actions } = testBed; + const totalRequests = server.requests.length; + + await act(async () => { + actions.clickReloadButton(); + await nextTick(100); + component.update(); + }); + + expect(server.requests.length).toBe(totalRequests + 1); + expect(server.requests[server.requests.length - 1].url).toBe(API_BASE_PATH); + }); + + test('should show the details of a pipeline', async () => { + const { find, exists, actions } = testBed; + + await actions.clickPipelineAt(0); + + expect(exists('pipelinesTable')).toBe(true); + expect(exists('pipelineDetails')).toBe(true); + expect(find('pipelineDetails.title').text()).toBe(pipeline1.name); + }); + + test('should delete a pipeline', async () => { + const { actions, component } = testBed; + const { name: pipelineName } = pipeline1; + + httpRequestsMockHelpers.setDeletePipelineResponse({ + itemsDeleted: [pipelineName], + errors: [], + }); + + actions.clickPipelineAction(pipelineName, 'delete'); + + // We need to read the document "body" as the modal is added there and not inside + // the component DOM tree. + const modal = document.body.querySelector('[data-test-subj="deletePipelinesConfirmation"]'); + const confirmButton: HTMLButtonElement | null = modal!.querySelector( + '[data-test-subj="confirmModalConfirmButton"]' + ); + + expect(modal).not.toBe(null); + expect(modal!.textContent).toContain('Delete pipeline'); + + await act(async () => { + confirmButton!.click(); + await nextTick(); + component.update(); + }); + + const latestRequest = server.requests[server.requests.length - 1]; + + expect(latestRequest.method).toBe('DELETE'); + expect(latestRequest.url).toBe(`${API_BASE_PATH}/${pipelineName}`); + expect(latestRequest.status).toEqual(200); + }); + }); + + describe('No pipelines', () => { + beforeEach(async () => { + httpRequestsMockHelpers.setLoadPipelinesResponse([]); + + testBed = await setup(); + + await act(async () => { + const { waitFor } = testBed; + + await waitFor('emptyList'); + }); + }); + + test('should display an empty prompt', async () => { + const { exists, find } = testBed; + + expect(exists('sectionLoading')).toBe(false); + expect(exists('emptyList')).toBe(true); + expect(find('emptyList.title').text()).toEqual('Start by creating a pipeline'); + }); + }); + + describe('Error handling', () => { + beforeEach(async () => { + const error = { + status: 500, + error: 'Internal server error', + message: 'Internal server error', + }; + + httpRequestsMockHelpers.setLoadPipelinesResponse(undefined, { body: error }); + + testBed = await setup(); + + await act(async () => { + const { waitFor } = testBed; + + await waitFor('pipelineLoadError'); + }); + }); + + test('should render an error message if error fetching pipelines', async () => { + const { exists, find } = testBed; + + expect(exists('pipelineLoadError')).toBe(true); + expect(find('pipelineLoadError').text()).toContain('Unable to load pipelines.'); + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx index 9082196a48b395..55523bfa7d1166 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx @@ -126,6 +126,7 @@ export const PipelineForm: React.FunctionComponent = ({ setIsRequestVisible(prevIsRequestVisible => !prevIsRequestVisible)} > {isRequestVisible ? ( diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx index b90683426887f0..8144228b1e9d5b 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx @@ -140,7 +140,12 @@ export const PipelineFormFields: React.FunctionComponent = ({ - + = ({ path="processors" component={JsonEditorField} componentProps={{ - ['data-test-subj']: 'processorsField', euiCodeEditorProps: { + ['data-test-subj']: 'processorsField', height: '300px', 'aria-label': i18n.translate('xpack.ingestPipelines.form.processorsFieldAriaLabel', { defaultMessage: 'Processors JSON editor', @@ -211,8 +216,8 @@ export const PipelineFormFields: React.FunctionComponent = ({ path="on_failure" component={JsonEditorField} componentProps={{ - ['data-test-subj']: 'onFailureEditor', euiCodeEditorProps: { + ['data-test-subj']: 'onFailureEditor', height: '300px', 'aria-label': i18n.translate('xpack.ingestPipelines.form.onFailureFieldAriaLabel', { defaultMessage: 'Failure processors JSON editor', diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx index 7cfe887d68d527..2ab7e84b3bb2be 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_request_flyout/pipeline_request_flyout.tsx @@ -40,10 +40,10 @@ export const PipelineRequestFlyout: React.FunctionComponent = ({ uuid.current++; return ( - + -

+

{name ? ( + -

+

{pipeline.name ? ( - -

+ +

- -

+ +

= ({ - +

{pipeline.name}

diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx index 318a9219b2010a..f6fe2f0cf65faa 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/empty_list.tsx @@ -18,8 +18,9 @@ export const EmptyList: FunctionComponent = () => { +

{i18n.translate('xpack.ingestPipelines.list.table.emptyPromptTitle', { defaultMessage: 'Start by creating a pipeline', })} diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx index 23d105c807c8b9..948290b1691342 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx @@ -80,11 +80,15 @@ export const PipelinesList: React.FunctionComponent = ({ history.push(BASE_PATH); }; + if (data && data.length === 0) { + return ; + } + let content: React.ReactNode; if (isLoading) { content = ( - + = ({ pipelines={data} /> ); - } else { - return ; } const renderFlyout = (): React.ReactNode => { @@ -148,6 +150,7 @@ export const PipelinesList: React.FunctionComponent = ({ href={services.documentation.getIngestNodeUrl()} target="_blank" iconType="help" + data-test-subj="documentationLink" > = ({ = ({ const tableProps: EuiInMemoryTableProps = { itemId: 'name', isSelectable: true, + 'data-test-subj': 'pipelinesTable', sorting: { sort: { field: 'name', direction: 'asc' } }, selection: { onSelectionChange: setSelection, @@ -91,7 +92,11 @@ export const PipelineTable: FunctionComponent = ({ defaultMessage: 'Name', }), sortable: true, - render: (name: string) => {name}, + render: (name: string) => ( + + {name} + + ), }, { name: ( From a79ab6db3569096d5eb1b53fd85d497c1ad73e53 Mon Sep 17 00:00:00 2001 From: Gidi Meir Morris Date: Thu, 7 May 2020 17:44:45 +0100 Subject: [PATCH 11/58] [Alerting] adds lazy loading of alerting UI components (#65060) This PR adds code splitting into the Alerting Trigger UI by lazy loading the React Components needed for this plugin. This include two key changes: 1. The plugin lazy loads its routes so that they don't get loaded at setup time. 2. This changes the way in which plugins can register their ActionType Components so they have to specify a lazy loaded component rather than a regular React component - this allows us to avoid loading all these components at setup time and defer this to when the Flyout/Triggers UI is loaded. --- .../public/lib/connectors/jira/flyout.tsx | 3 + .../siem/public/lib/connectors/jira/index.tsx | 4 +- .../lib/connectors/servicenow/flyout.tsx | 3 + .../lib/connectors/servicenow/index.tsx | 5 +- .../siem/public/lib/connectors/types.ts | 3 +- .../siem/public/lib/connectors/utils.ts | 12 +- x-pack/plugins/triggers_actions_ui/README.md | 14 +- .../public/application/app.tsx | 39 +- .../components/builtin_action_types/email.tsx | 609 ------------------ .../{ => email}/email.test.tsx | 87 +-- .../builtin_action_types/email/email.tsx | 150 +++++ .../email/email_connector.test.tsx | 47 ++ .../email/email_connector.tsx | 209 ++++++ .../email/email_params.test.tsx | 37 ++ .../email/email_params.tsx | 267 ++++++++ .../builtin_action_types/email/index.ts | 7 + .../builtin_action_types/es_index.test.tsx | 240 ------- .../es_index/es_index.test.tsx | 88 +++ .../es_index/es_index.tsx | 51 ++ .../es_index/es_index_connector.test.tsx | 126 ++++ .../es_index_connector.tsx} | 129 +--- .../es_index/es_index_params.test.tsx | 33 + .../es_index/es_index_params.tsx | 81 +++ .../builtin_action_types/es_index/index.ts | 7 + .../components/builtin_action_types/index.ts | 12 +- .../builtin_action_types/pagerduty.test.tsx | 200 ------ .../builtin_action_types/pagerduty/index.ts | 7 + .../{ => pagerduty}/pagerduty.svg | 0 .../pagerduty/pagerduty.test.tsx | 99 +++ .../pagerduty/pagerduty.tsx | 96 +++ .../pagerduty/pagerduty_connectors.test.tsx | 54 ++ .../pagerduty/pagerduty_connectors.tsx | 89 +++ .../pagerduty/pagerduty_params.test.tsx | 48 ++ .../pagerduty_params.tsx} | 184 +----- .../builtin_action_types/server_log.test.tsx | 134 ---- .../builtin_action_types/server_log/index.ts | 7 + .../server_log/server_log.test.tsx | 68 ++ .../server_log/server_log.tsx | 51 ++ .../server_log/server_log_params.test.tsx | 58 ++ .../server_log_params.tsx} | 51 +- .../builtin_action_types/slack.test.tsx | 166 ----- .../components/builtin_action_types/slack.tsx | 188 ------ .../builtin_action_types/slack/index.ts | 7 + .../builtin_action_types/slack/slack.test.tsx | 88 +++ .../builtin_action_types/slack/slack.tsx | 66 ++ .../slack/slack_connectors.test.tsx | 49 ++ .../slack/slack_connectors.tsx | 65 ++ .../slack/slack_params.test.tsx | 31 + .../slack/slack_params.tsx | 77 +++ .../builtin_action_types/webhook.test.tsx | 179 ----- .../builtin_action_types/webhook/index.ts | 7 + .../webhook/webhook.test.tsx | 104 +++ .../builtin_action_types/webhook/webhook.tsx | 99 +++ .../webhook/webhook_connectors.test.tsx | 48 ++ .../webhook_connectors.tsx} | 156 +---- .../webhook/webhook_params.test.tsx | 32 + .../webhook/webhook_params.tsx | 68 ++ .../public/application/home.tsx | 3 + .../action_connector_form.tsx | 31 +- .../action_connector_form/action_form.tsx | 29 +- .../components/alert_details_route.tsx | 6 +- .../public/application/type_registry.test.ts | 6 +- .../triggers_actions_ui/public/types.ts | 19 +- 63 files changed, 2577 insertions(+), 2356 deletions(-) delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.tsx rename x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/{ => email}/email.test.tsx (62%) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.test.tsx rename x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/{es_index.tsx => es_index/es_index_connector.tsx} (66%) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts rename x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/{ => pagerduty}/pagerduty.svg (100%) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx rename x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/{pagerduty.tsx => pagerduty/pagerduty_params.tsx} (67%) delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx rename x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/{server_log.tsx => server_log/server_log_params.tsx} (67%) delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.test.tsx delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx delete mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx rename x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/{webhook.tsx => webhook/webhook_connectors.tsx} (71%) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx diff --git a/x-pack/plugins/siem/public/lib/connectors/jira/flyout.tsx b/x-pack/plugins/siem/public/lib/connectors/jira/flyout.tsx index 9c3d1c90e67d7a..337ca2e3c918e0 100644 --- a/x-pack/plugins/siem/public/lib/connectors/jira/flyout.tsx +++ b/x-pack/plugins/siem/public/lib/connectors/jira/flyout.tsx @@ -109,3 +109,6 @@ export const JiraConnectorFlyout = withConnectorFlyout({ configKeys: ['projectKey'], connectorActionTypeId: '.jira', }); + +// eslint-disable-next-line import/no-default-export +export { JiraConnectorFlyout as default }; diff --git a/x-pack/plugins/siem/public/lib/connectors/jira/index.tsx b/x-pack/plugins/siem/public/lib/connectors/jira/index.tsx index ada9608e37c983..049ccb7cf17b7e 100644 --- a/x-pack/plugins/siem/public/lib/connectors/jira/index.tsx +++ b/x-pack/plugins/siem/public/lib/connectors/jira/index.tsx @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import { lazy } from 'react'; import { ValidationResult, // eslint-disable-next-line @kbn/eslint/no-restricted-paths @@ -13,7 +14,6 @@ import { connector } from './config'; import { createActionType } from '../utils'; import logo from './logo.svg'; import { JiraActionConnector } from './types'; -import { JiraConnectorFlyout } from './flyout'; import * as i18n from './translations'; interface Errors { @@ -50,5 +50,5 @@ export const getActionType = createActionType({ selectMessage: i18n.JIRA_DESC, actionTypeTitle: connector.name, validateConnector, - actionConnectorFields: JiraConnectorFlyout, + actionConnectorFields: lazy(() => import('./flyout')), }); diff --git a/x-pack/plugins/siem/public/lib/connectors/servicenow/flyout.tsx b/x-pack/plugins/siem/public/lib/connectors/servicenow/flyout.tsx index 5d5d08dacf90c9..2783e988a64052 100644 --- a/x-pack/plugins/siem/public/lib/connectors/servicenow/flyout.tsx +++ b/x-pack/plugins/siem/public/lib/connectors/servicenow/flyout.tsx @@ -82,3 +82,6 @@ export const ServiceNowConnectorFlyout = withConnectorFlyout import('./flyout')), }); diff --git a/x-pack/plugins/siem/public/lib/connectors/types.ts b/x-pack/plugins/siem/public/lib/connectors/types.ts index ffb013c347e59e..3d3692c9806e48 100644 --- a/x-pack/plugins/siem/public/lib/connectors/types.ts +++ b/x-pack/plugins/siem/public/lib/connectors/types.ts @@ -8,6 +8,7 @@ /* eslint-disable @kbn/eslint/no-restricted-paths */ import { ActionType } from '../../../../triggers_actions_ui/public'; +import { IErrorObject } from '../../../../triggers_actions_ui/public/types'; import { ExternalIncidentServiceConfiguration } from '../../../../actions/server/builtin_action_types/case/types'; import { ActionType as ThirdPartySupportedActions, CaseField } from '../../../../case/common/api'; @@ -42,7 +43,7 @@ export interface ActionConnectorValidationErrors { export type Optional = Omit & Partial; export interface ConnectorFlyoutFormProps { - errors: { [key: string]: string[] }; + errors: IErrorObject; action: T; onChangeSecret: (key: string, value: string) => void; onBlurSecret: (key: string) => void; diff --git a/x-pack/plugins/siem/public/lib/connectors/utils.ts b/x-pack/plugins/siem/public/lib/connectors/utils.ts index 169b4758876e8c..cc1608a05e2ce8 100644 --- a/x-pack/plugins/siem/public/lib/connectors/utils.ts +++ b/x-pack/plugins/siem/public/lib/connectors/utils.ts @@ -7,7 +7,6 @@ import { ActionTypeModel, ValidationResult, - ActionParamsProps, // eslint-disable-next-line @kbn/eslint/no-restricted-paths } from '../../../../triggers_actions_ui/public/types'; @@ -31,7 +30,7 @@ export const createActionType = ({ validateConnector, validateParams = connectorParamsValidator, actionConnectorFields, - actionParamsFields = ConnectorParamsFields, + actionParamsFields = null, }: Optional) => (): ActionTypeModel => { return { id, @@ -59,15 +58,6 @@ export const createActionType = ({ }; }; -const ConnectorParamsFields: React.FunctionComponent> = ({ - actionParams, - editAction, - index, - errors, -}) => { - return null; -}; - const connectorParamsValidator = (actionParams: ActionConnectorParams): ValidationResult => { return { errors: {} }; }; diff --git a/x-pack/plugins/triggers_actions_ui/README.md b/x-pack/plugins/triggers_actions_ui/README.md index ece1791c66e115..c5f02863ba8a19 100644 --- a/x-pack/plugins/triggers_actions_ui/README.md +++ b/x-pack/plugins/triggers_actions_ui/README.md @@ -985,8 +985,8 @@ Each action type should be defined as an `ActionTypeModel` object with the follo |selectMessage|Short description of action type responsibility, that will be displayed on the select card in UI.| |validateConnector|Validation function for action connector.| |validateParams|Validation function for action params.| -|actionConnectorFields|React functional component for building UI of current action type connector.| -|actionParamsFields|React functional component for building UI of current action type params. Displayed as a part of Create Alert flyout.| +|actionConnectorFields|A lazy loaded React component for building UI of current action type connector.| +|actionParamsFields|A lazy loaded React component for building UI of current action type params. Displayed as a part of Create Alert flyout.| ## Register action type model @@ -1082,8 +1082,8 @@ export function getActionType(): ActionTypeModel { } return validationResult; }, - actionConnectorFields: ExampleConnectorFields, - actionParamsFields: ExampleParamsFields, + actionConnectorFields: lazy(() => import('./example_connector_fields')), + actionParamsFields: lazy(() => import('./example_params_fields')), }; } ``` @@ -1130,6 +1130,9 @@ const ExampleConnectorFields: React.FunctionComponent ); }; + +// Export as default in order to support lazy loading +export {ExampleConnectorFields as default}; ``` 3. Define action type params fields using the property of `ActionTypeModel` `actionParamsFields`: @@ -1175,6 +1178,9 @@ const ExampleParamsFields: React.FunctionComponent ); }; + +// Export as default in order to support lazy loading +export {ExampleParamsFields as default}; ``` 4. Extend registration code with the new action type register in the file `x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts` diff --git a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx index 0593940a0d105d..63860e062c8da8 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx @@ -3,8 +3,8 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; -import { Switch, Route, Redirect, HashRouter } from 'react-router-dom'; +import React, { lazy, Suspense } from 'react'; +import { Switch, Route, Redirect, HashRouter, RouteComponentProps } from 'react-router-dom'; import { ChromeStart, DocLinksStart, @@ -15,17 +15,21 @@ import { ChromeBreadcrumb, CoreStart, } from 'kibana/public'; +import { EuiLoadingSpinner, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { BASE_PATH, Section, routeToAlertDetails } from './constants'; -import { TriggersActionsUIHome } from './home'; import { AppContextProvider, useAppDependencies } from './app_context'; import { hasShowAlertsCapability } from './lib/capabilities'; import { ActionTypeModel, AlertTypeModel } from '../types'; import { TypeRegistry } from './type_registry'; -import { AlertDetailsRouteWithApi as AlertDetailsRoute } from './sections/alert_details/components/alert_details_route'; import { ChartsPluginStart } from '../../../../../src/plugins/charts/public'; import { DataPublicPluginStart } from '../../../../../src/plugins/data/public'; import { PluginStartContract as AlertingStart } from '../../../alerting/public'; +const TriggersActionsUIHome = lazy(async () => import('./home')); +const AlertDetailsRoute = lazy(() => + import('./sections/alert_details/components/alert_details_route') +); + export interface AppDeps { dataPlugin: DataPublicPluginStart; charts: ChartsPluginStart; @@ -62,9 +66,32 @@ export const AppWithoutRouter = ({ sectionsRegex }: { sectionsRegex: string }) = const DEFAULT_SECTION: Section = canShowAlerts ? 'alerts' : 'connectors'; return ( - - {canShowAlerts && } + + {canShowAlerts && ( + + )} ); }; + +function suspendedRouteComponent( + RouteComponent: React.ComponentType> +) { + return (props: RouteComponentProps) => ( + + + + + + } + > + + + ); +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.tsx deleted file mode 100644 index dff697297f3e48..00000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.tsx +++ /dev/null @@ -1,609 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { Fragment, useState, useEffect } from 'react'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { - EuiFieldText, - EuiFlexItem, - EuiFlexGroup, - EuiFieldNumber, - EuiFieldPassword, - EuiComboBox, - EuiTextArea, - EuiButtonEmpty, - EuiSwitch, - EuiFormRow, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { - ActionTypeModel, - ActionConnectorFieldsProps, - ValidationResult, - ActionParamsProps, -} from '../../../types'; -import { EmailActionParams, EmailActionConnector } from './types'; -import { AddMessageVariables } from '../add_message_variables'; - -export function getActionType(): ActionTypeModel { - const mailformat = /^[^@\s]+@[^@\s]+$/; - return { - id: '.email', - iconClass: 'email', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText', - { - defaultMessage: 'Send email from your server.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle', - { - defaultMessage: 'Send to email', - } - ), - validateConnector: (action: EmailActionConnector): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - from: new Array(), - port: new Array(), - host: new Array(), - user: new Array(), - password: new Array(), - }; - validationResult.errors = errors; - if (!action.config.from) { - errors.from.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredFromText', - { - defaultMessage: 'Sender is required.', - } - ) - ); - } - if (action.config.from && !action.config.from.trim().match(mailformat)) { - errors.from.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.formatFromText', - { - defaultMessage: 'Sender is not a valid email address.', - } - ) - ); - } - if (!action.config.port) { - errors.port.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPortText', - { - defaultMessage: 'Port is required.', - } - ) - ); - } - if (!action.config.host) { - errors.host.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredHostText', - { - defaultMessage: 'Host is required.', - } - ) - ); - } - if (action.secrets.user && !action.secrets.password) { - errors.password.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPasswordText', - { - defaultMessage: 'Password is required when username is used.', - } - ) - ); - } - if (!action.secrets.user && action.secrets.password) { - errors.user.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredUserText', - { - defaultMessage: 'Username is required when password is used.', - } - ) - ); - } - return validationResult; - }, - validateParams: (actionParams: EmailActionParams): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - to: new Array(), - cc: new Array(), - bcc: new Array(), - message: new Array(), - subject: new Array(), - }; - validationResult.errors = errors; - if ( - (!(actionParams.to instanceof Array) || actionParams.to.length === 0) && - (!(actionParams.cc instanceof Array) || actionParams.cc.length === 0) && - (!(actionParams.bcc instanceof Array) || actionParams.bcc.length === 0) - ) { - const errorText = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredEntryText', - { - defaultMessage: 'No To, Cc, or Bcc entry. At least one entry is required.', - } - ); - errors.to.push(errorText); - errors.cc.push(errorText); - errors.bcc.push(errorText); - } - if (!actionParams.message?.length) { - errors.message.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredMessageText', - { - defaultMessage: 'Message is required.', - } - ) - ); - } - if (!actionParams.subject?.length) { - errors.subject.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSubjectText', - { - defaultMessage: 'Subject is required.', - } - ) - ); - } - return validationResult; - }, - actionConnectorFields: EmailActionConnectorFields, - actionParamsFields: EmailParamsFields, - }; -} - -const EmailActionConnectorFields: React.FunctionComponent> = ({ action, editActionConfig, editActionSecrets, errors }) => { - const { from, host, port, secure } = action.config; - const { user, password } = action.secrets; - - return ( - - - - 0 && from !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.fromTextFieldLabel', - { - defaultMessage: 'Sender', - } - )} - > - 0 && from !== undefined} - name="from" - value={from || ''} - data-test-subj="emailFromInput" - onChange={e => { - editActionConfig('from', e.target.value); - }} - onBlur={() => { - if (!from) { - editActionConfig('from', ''); - } - }} - /> - - - - - - 0 && host !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hostTextFieldLabel', - { - defaultMessage: 'Host', - } - )} - > - 0 && host !== undefined} - name="host" - value={host || ''} - data-test-subj="emailHostInput" - onChange={e => { - editActionConfig('host', e.target.value); - }} - onBlur={() => { - if (!host) { - editActionConfig('host', ''); - } - }} - /> - - - - - - 0 && port !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.portTextFieldLabel', - { - defaultMessage: 'Port', - } - )} - > - 0 && port !== undefined} - fullWidth - name="port" - value={port || ''} - data-test-subj="emailPortInput" - onChange={e => { - editActionConfig('port', parseInt(e.target.value, 10)); - }} - onBlur={() => { - if (!port) { - editActionConfig('port', 0); - } - }} - /> - - - - - - { - editActionConfig('secure', e.target.checked); - }} - /> - - - - - - - - - 0} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.userTextFieldLabel', - { - defaultMessage: 'Username', - } - )} - > - 0} - name="user" - value={user || ''} - data-test-subj="emailUserInput" - onChange={e => { - editActionSecrets('user', nullableString(e.target.value)); - }} - /> - - - - 0} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.passwordFieldLabel', - { - defaultMessage: 'Password', - } - )} - > - 0} - name="password" - value={password || ''} - data-test-subj="emailPasswordInput" - onChange={e => { - editActionSecrets('password', nullableString(e.target.value)); - }} - /> - - - - - ); -}; - -const EmailParamsFields: React.FunctionComponent> = ({ - actionParams, - editAction, - index, - errors, - messageVariables, - defaultMessage, -}) => { - const { to, cc, bcc, subject, message } = actionParams; - const toOptions = to ? to.map((label: string) => ({ label })) : []; - const ccOptions = cc ? cc.map((label: string) => ({ label })) : []; - const bccOptions = bcc ? bcc.map((label: string) => ({ label })) : []; - const [addCC, setAddCC] = useState(false); - const [addBCC, setAddBCC] = useState(false); - - useEffect(() => { - if (!message && defaultMessage && defaultMessage.length > 0) { - editAction('message', defaultMessage, index); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const onSelectMessageVariable = (paramsProperty: string, variable: string) => { - editAction( - paramsProperty, - ((actionParams as any)[paramsProperty] ?? '').concat(` {{${variable}}}`), - index - ); - }; - - return ( - - 0 && to !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientTextFieldLabel', - { - defaultMessage: 'To', - } - )} - labelAppend={ - - - {!addCC ? ( - setAddCC(true)}> - - - ) : null} - {!addBCC ? ( - setAddBCC(true)}> - - - ) : null} - - - } - > - 0 && to !== undefined} - fullWidth - data-test-subj="toEmailAddressInput" - selectedOptions={toOptions} - onCreateOption={(searchValue: string) => { - const newOptions = [...toOptions, { label: searchValue }]; - editAction( - 'to', - newOptions.map(newOption => newOption.label), - index - ); - }} - onChange={(selectedOptions: Array<{ label: string }>) => { - editAction( - 'to', - selectedOptions.map(selectedOption => selectedOption.label), - index - ); - }} - onBlur={() => { - if (!to) { - editAction('to', [], index); - } - }} - /> - - {addCC ? ( - 0 && cc !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientCopyTextFieldLabel', - { - defaultMessage: 'Cc', - } - )} - > - 0 && cc !== undefined} - fullWidth - data-test-subj="ccEmailAddressInput" - selectedOptions={ccOptions} - onCreateOption={(searchValue: string) => { - const newOptions = [...ccOptions, { label: searchValue }]; - editAction( - 'cc', - newOptions.map(newOption => newOption.label), - index - ); - }} - onChange={(selectedOptions: Array<{ label: string }>) => { - editAction( - 'cc', - selectedOptions.map(selectedOption => selectedOption.label), - index - ); - }} - onBlur={() => { - if (!cc) { - editAction('cc', [], index); - } - }} - /> - - ) : null} - {addBCC ? ( - 0 && bcc !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientBccTextFieldLabel', - { - defaultMessage: 'Bcc', - } - )} - > - 0 && bcc !== undefined} - fullWidth - data-test-subj="bccEmailAddressInput" - selectedOptions={bccOptions} - onCreateOption={(searchValue: string) => { - const newOptions = [...bccOptions, { label: searchValue }]; - editAction( - 'bcc', - newOptions.map(newOption => newOption.label), - index - ); - }} - onChange={(selectedOptions: Array<{ label: string }>) => { - editAction( - 'bcc', - selectedOptions.map(selectedOption => selectedOption.label), - index - ); - }} - onBlur={() => { - if (!bcc) { - editAction('bcc', [], index); - } - }} - /> - - ) : null} - 0 && subject !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.subjectTextFieldLabel', - { - defaultMessage: 'Subject', - } - )} - labelAppend={ - - onSelectMessageVariable('subject', variable) - } - paramsProperty="subject" - /> - } - > - 0 && subject !== undefined} - name="subject" - data-test-subj="emailSubjectInput" - value={subject || ''} - onChange={e => { - editAction('subject', e.target.value, index); - }} - onBlur={() => { - if (!subject) { - editAction('subject', '', index); - } - }} - /> - - 0 && message !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.messageTextAreaFieldLabel', - { - defaultMessage: 'Message', - } - )} - labelAppend={ - - onSelectMessageVariable('message', variable) - } - paramsProperty="message" - /> - } - > - 0 && message !== undefined} - value={message || ''} - name="message" - data-test-subj="emailMessageInput" - onChange={e => { - editAction('message', e.target.value, index); - }} - onBlur={() => { - if (!message) { - editAction('message', '', index); - } - }} - /> - - - ); -}; - -// if the string == null or is empty, return null, else return string -function nullableString(str: string | null | undefined) { - if (str == null || str.trim() === '') return null; - return str; -} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.test.tsx similarity index 62% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.test.tsx rename to x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.test.tsx index af9e34071fd095..e823e848f52c2c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.test.tsx @@ -3,12 +3,10 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { FunctionComponent } from 'react'; -import { mountWithIntl } from 'test_utils/enzyme_helpers'; -import { TypeRegistry } from '../../type_registry'; -import { registerBuiltInActionTypes } from './index'; -import { ActionTypeModel, ActionParamsProps } from '../../../types'; -import { EmailActionParams, EmailActionConnector } from './types'; +import { TypeRegistry } from '../../../type_registry'; +import { registerBuiltInActionTypes } from '../index'; +import { ActionTypeModel } from '../../../../types'; +import { EmailActionConnector } from '../types'; const ACTION_TYPE_ID = '.email'; let actionTypeModel: ActionTypeModel; @@ -206,80 +204,3 @@ describe('action params validation', () => { }); }); }); - -describe('EmailActionConnectorFields renders', () => { - test('all connector fields is rendered', () => { - expect(actionTypeModel.actionConnectorFields).not.toBeNull(); - if (!actionTypeModel.actionConnectorFields) { - return; - } - const ConnectorFields = actionTypeModel.actionConnectorFields; - const actionConnector = { - secrets: { - user: 'user', - password: 'pass', - }, - id: 'test', - actionTypeId: '.email', - name: 'email', - config: { - from: 'test@test.com', - }, - } as EmailActionConnector; - const wrapper = mountWithIntl( - {}} - editActionSecrets={() => {}} - /> - ); - expect(wrapper.find('[data-test-subj="emailFromInput"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="emailFromInput"]') - .first() - .prop('value') - ).toBe('test@test.com'); - expect(wrapper.find('[data-test-subj="emailHostInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="emailPortInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="emailUserInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="emailPasswordInput"]').length > 0).toBeTruthy(); - }); -}); - -describe('EmailParamsFields renders', () => { - test('all params fields is rendered', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - cc: [], - bcc: [], - to: ['test@test.com'], - subject: 'test', - message: 'test message', - }; - const wrapper = mountWithIntl( - {}} - index={0} - /> - ); - expect(wrapper.find('[data-test-subj="toEmailAddressInput"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="toEmailAddressInput"]') - .first() - .prop('selectedOptions') - ).toStrictEqual([{ label: 'test@test.com' }]); - expect(wrapper.find('[data-test-subj="emailSubjectInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="emailMessageInput"]').length > 0).toBeTruthy(); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx new file mode 100644 index 00000000000000..abb102c04b0547 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx @@ -0,0 +1,150 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import { ActionTypeModel, ValidationResult } from '../../../../types'; +import { EmailActionParams, EmailActionConnector } from '../types'; + +export function getActionType(): ActionTypeModel { + const mailformat = /^[^@\s]+@[^@\s]+$/; + return { + id: '.email', + iconClass: 'email', + selectMessage: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText', + { + defaultMessage: 'Send email from your server.', + } + ), + actionTypeTitle: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle', + { + defaultMessage: 'Send to email', + } + ), + validateConnector: (action: EmailActionConnector): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + from: new Array(), + port: new Array(), + host: new Array(), + user: new Array(), + password: new Array(), + }; + validationResult.errors = errors; + if (!action.config.from) { + errors.from.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredFromText', + { + defaultMessage: 'Sender is required.', + } + ) + ); + } + if (action.config.from && !action.config.from.trim().match(mailformat)) { + errors.from.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.formatFromText', + { + defaultMessage: 'Sender is not a valid email address.', + } + ) + ); + } + if (!action.config.port) { + errors.port.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPortText', + { + defaultMessage: 'Port is required.', + } + ) + ); + } + if (!action.config.host) { + errors.host.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredHostText', + { + defaultMessage: 'Host is required.', + } + ) + ); + } + if (action.secrets.user && !action.secrets.password) { + errors.password.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPasswordText', + { + defaultMessage: 'Password is required when username is used.', + } + ) + ); + } + if (!action.secrets.user && action.secrets.password) { + errors.user.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredUserText', + { + defaultMessage: 'Username is required when password is used.', + } + ) + ); + } + return validationResult; + }, + validateParams: (actionParams: EmailActionParams): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + to: new Array(), + cc: new Array(), + bcc: new Array(), + message: new Array(), + subject: new Array(), + }; + validationResult.errors = errors; + if ( + (!(actionParams.to instanceof Array) || actionParams.to.length === 0) && + (!(actionParams.cc instanceof Array) || actionParams.cc.length === 0) && + (!(actionParams.bcc instanceof Array) || actionParams.bcc.length === 0) + ) { + const errorText = i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredEntryText', + { + defaultMessage: 'No To, Cc, or Bcc entry. At least one entry is required.', + } + ); + errors.to.push(errorText); + errors.cc.push(errorText); + errors.bcc.push(errorText); + } + if (!actionParams.message?.length) { + errors.message.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredMessageText', + { + defaultMessage: 'Message is required.', + } + ) + ); + } + if (!actionParams.subject?.length) { + errors.subject.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSubjectText', + { + defaultMessage: 'Subject is required.', + } + ) + ); + } + return validationResult; + }, + actionConnectorFields: lazy(() => import('./email_connector')), + actionParamsFields: lazy(() => import('./email_params')), + }; +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx new file mode 100644 index 00000000000000..67514e815bc494 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import { EmailActionConnector } from '../types'; +import EmailActionConnectorFields from './email_connector'; +import { DocLinksStart } from 'kibana/public'; + +describe('EmailActionConnectorFields renders', () => { + test('all connector fields is rendered', () => { + const actionConnector = { + secrets: { + user: 'user', + password: 'pass', + }, + id: 'test', + actionTypeId: '.email', + name: 'email', + config: { + from: 'test@test.com', + }, + } as EmailActionConnector; + const wrapper = mountWithIntl( + {}} + editActionSecrets={() => {}} + docLinks={{ ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' } as DocLinksStart} + /> + ); + expect(wrapper.find('[data-test-subj="emailFromInput"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="emailFromInput"]') + .first() + .prop('value') + ).toBe('test@test.com'); + expect(wrapper.find('[data-test-subj="emailHostInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="emailPortInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="emailUserInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="emailPasswordInput"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx new file mode 100644 index 00000000000000..4ef4c8a4d8617f --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx @@ -0,0 +1,209 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment } from 'react'; +import { + EuiFieldText, + EuiFlexItem, + EuiFlexGroup, + EuiFieldNumber, + EuiFieldPassword, + EuiSwitch, + EuiFormRow, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ActionConnectorFieldsProps } from '../../../../types'; +import { EmailActionConnector } from '../types'; + +export const EmailActionConnectorFields: React.FunctionComponent> = ({ action, editActionConfig, editActionSecrets, errors }) => { + const { from, host, port, secure } = action.config; + const { user, password } = action.secrets; + + return ( + + + + 0 && from !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.fromTextFieldLabel', + { + defaultMessage: 'Sender', + } + )} + > + 0 && from !== undefined} + name="from" + value={from || ''} + data-test-subj="emailFromInput" + onChange={e => { + editActionConfig('from', e.target.value); + }} + onBlur={() => { + if (!from) { + editActionConfig('from', ''); + } + }} + /> + + + + + + 0 && host !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hostTextFieldLabel', + { + defaultMessage: 'Host', + } + )} + > + 0 && host !== undefined} + name="host" + value={host || ''} + data-test-subj="emailHostInput" + onChange={e => { + editActionConfig('host', e.target.value); + }} + onBlur={() => { + if (!host) { + editActionConfig('host', ''); + } + }} + /> + + + + + + 0 && port !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.portTextFieldLabel', + { + defaultMessage: 'Port', + } + )} + > + 0 && port !== undefined} + fullWidth + name="port" + value={port || ''} + data-test-subj="emailPortInput" + onChange={e => { + editActionConfig('port', parseInt(e.target.value, 10)); + }} + onBlur={() => { + if (!port) { + editActionConfig('port', 0); + } + }} + /> + + + + + + { + editActionConfig('secure', e.target.checked); + }} + /> + + + + + + + + + 0} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.userTextFieldLabel', + { + defaultMessage: 'Username', + } + )} + > + 0} + name="user" + value={user || ''} + data-test-subj="emailUserInput" + onChange={e => { + editActionSecrets('user', nullableString(e.target.value)); + }} + /> + + + + 0} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.passwordFieldLabel', + { + defaultMessage: 'Password', + } + )} + > + 0} + name="password" + value={password || ''} + data-test-subj="emailPasswordInput" + onChange={e => { + editActionSecrets('password', nullableString(e.target.value)); + }} + /> + + + + + ); +}; + +// if the string == null or is empty, return null, else return string +function nullableString(str: string | null | undefined) { + if (str == null || str.trim() === '') return null; + return str; +} + +// eslint-disable-next-line import/no-default-export +export { EmailActionConnectorFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx new file mode 100644 index 00000000000000..a2b5ccf988afb0 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import EmailParamsFields from './email_params'; + +describe('EmailParamsFields renders', () => { + test('all params fields is rendered', () => { + const actionParams = { + cc: [], + bcc: [], + to: ['test@test.com'], + subject: 'test', + message: 'test message', + }; + const wrapper = mountWithIntl( + {}} + index={0} + /> + ); + expect(wrapper.find('[data-test-subj="toEmailAddressInput"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="toEmailAddressInput"]') + .first() + .prop('selectedOptions') + ).toStrictEqual([{ label: 'test@test.com' }]); + expect(wrapper.find('[data-test-subj="emailSubjectInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="emailMessageInput"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx new file mode 100644 index 00000000000000..13e791f1069e3e --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment, useState, useEffect } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiFieldText, EuiComboBox, EuiTextArea, EuiButtonEmpty, EuiFormRow } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ActionParamsProps } from '../../../../types'; +import { EmailActionParams } from '../types'; +import { AddMessageVariables } from '../../add_message_variables'; + +export const EmailParamsFields = ({ + actionParams, + editAction, + index, + errors, + messageVariables, + defaultMessage, +}: ActionParamsProps) => { + const { to, cc, bcc, subject, message } = actionParams; + const toOptions = to ? to.map((label: string) => ({ label })) : []; + const ccOptions = cc ? cc.map((label: string) => ({ label })) : []; + const bccOptions = bcc ? bcc.map((label: string) => ({ label })) : []; + const [addCC, setAddCC] = useState(false); + const [addBCC, setAddBCC] = useState(false); + + useEffect(() => { + if (!message && defaultMessage && defaultMessage.length > 0) { + editAction('message', defaultMessage, index); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const onSelectMessageVariable = (paramsProperty: string, variable: string) => { + editAction( + paramsProperty, + ((actionParams as any)[paramsProperty] ?? '').concat(` {{${variable}}}`), + index + ); + }; + + return ( + + 0 && to !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientTextFieldLabel', + { + defaultMessage: 'To', + } + )} + labelAppend={ + + + {!addCC ? ( + setAddCC(true)}> + + + ) : null} + {!addBCC ? ( + setAddBCC(true)}> + + + ) : null} + + + } + > + 0 && to !== undefined} + fullWidth + data-test-subj="toEmailAddressInput" + selectedOptions={toOptions} + onCreateOption={(searchValue: string) => { + const newOptions = [...toOptions, { label: searchValue }]; + editAction( + 'to', + newOptions.map(newOption => newOption.label), + index + ); + }} + onChange={(selectedOptions: Array<{ label: string }>) => { + editAction( + 'to', + selectedOptions.map(selectedOption => selectedOption.label), + index + ); + }} + onBlur={() => { + if (!to) { + editAction('to', [], index); + } + }} + /> + + {addCC ? ( + 0 && cc !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientCopyTextFieldLabel', + { + defaultMessage: 'Cc', + } + )} + > + 0 && cc !== undefined} + fullWidth + data-test-subj="ccEmailAddressInput" + selectedOptions={ccOptions} + onCreateOption={(searchValue: string) => { + const newOptions = [...ccOptions, { label: searchValue }]; + editAction( + 'cc', + newOptions.map(newOption => newOption.label), + index + ); + }} + onChange={(selectedOptions: Array<{ label: string }>) => { + editAction( + 'cc', + selectedOptions.map(selectedOption => selectedOption.label), + index + ); + }} + onBlur={() => { + if (!cc) { + editAction('cc', [], index); + } + }} + /> + + ) : null} + {addBCC ? ( + 0 && bcc !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientBccTextFieldLabel', + { + defaultMessage: 'Bcc', + } + )} + > + 0 && bcc !== undefined} + fullWidth + data-test-subj="bccEmailAddressInput" + selectedOptions={bccOptions} + onCreateOption={(searchValue: string) => { + const newOptions = [...bccOptions, { label: searchValue }]; + editAction( + 'bcc', + newOptions.map(newOption => newOption.label), + index + ); + }} + onChange={(selectedOptions: Array<{ label: string }>) => { + editAction( + 'bcc', + selectedOptions.map(selectedOption => selectedOption.label), + index + ); + }} + onBlur={() => { + if (!bcc) { + editAction('bcc', [], index); + } + }} + /> + + ) : null} + 0 && subject !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.subjectTextFieldLabel', + { + defaultMessage: 'Subject', + } + )} + labelAppend={ + + onSelectMessageVariable('subject', variable) + } + paramsProperty="subject" + /> + } + > + 0 && subject !== undefined} + name="subject" + data-test-subj="emailSubjectInput" + value={subject || ''} + onChange={e => { + editAction('subject', e.target.value, index); + }} + onBlur={() => { + if (!subject) { + editAction('subject', '', index); + } + }} + /> + + 0 && message !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.messageTextAreaFieldLabel', + { + defaultMessage: 'Message', + } + )} + labelAppend={ + + onSelectMessageVariable('message', variable) + } + paramsProperty="message" + /> + } + > + 0 && message !== undefined} + value={message || ''} + name="message" + data-test-subj="emailMessageInput" + onChange={e => { + editAction('message', e.target.value, index); + }} + onBlur={() => { + if (!message) { + editAction('message', '', index); + } + }} + /> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { EmailParamsFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts new file mode 100644 index 00000000000000..e0dd24a44aa8f3 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getActionType as getEmailActionType } from './email'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.test.tsx deleted file mode 100644 index 04dc7b484ed489..00000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.test.tsx +++ /dev/null @@ -1,240 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { FunctionComponent } from 'react'; -import { mountWithIntl, nextTick } from 'test_utils/enzyme_helpers'; -import { act } from 'react-dom/test-utils'; -import { TypeRegistry } from '../../type_registry'; -import { registerBuiltInActionTypes } from './index'; -import { ActionTypeModel, ActionParamsProps } from '../../../types'; -import { IndexActionParams, EsIndexActionConnector } from './types'; -import { coreMock } from '../../../../../../../src/core/public/mocks'; -jest.mock('../../../common/index_controls', () => ({ - firstFieldOption: jest.fn(), - getFields: jest.fn(), - getIndexOptions: jest.fn(), - getIndexPatterns: jest.fn(), -})); - -const ACTION_TYPE_ID = '.index'; -let actionTypeModel: ActionTypeModel; -let deps: any; - -beforeAll(async () => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } - const mocks = coreMock.createSetup(); - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - deps = { - toastNotifications: mocks.notifications.toasts, - http: mocks.http, - capabilities: { - ...capabilities, - actions: { - delete: true, - save: true, - show: true, - }, - }, - actionTypeRegistry: actionTypeRegistry as any, - docLinks: { ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' }, - }; -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type .index is registered', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('indexOpen'); - }); -}); - -describe('index connector validation', () => { - test('connector validation succeeds when connector config is valid', () => { - const actionConnector = { - secrets: {}, - id: 'test', - actionTypeId: '.index', - name: 'es_index', - config: { - index: 'test_es_index', - refresh: false, - executionTimeField: '1', - }, - } as EsIndexActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - index: [], - }, - }); - }); -}); - -describe('index connector validation with minimal config', () => { - test('connector validation succeeds when connector config is valid', () => { - const actionConnector = { - secrets: {}, - id: 'test', - actionTypeId: '.index', - name: 'es_index', - config: { - index: 'test_es_index', - }, - } as EsIndexActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - index: [], - }, - }); - }); -}); - -describe('action params validation', () => { - test('action params validation succeeds when action params is valid', () => { - const actionParams = { - documents: ['test'], - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: {}, - }); - - const emptyActionParams = {}; - - expect(actionTypeModel.validateParams(emptyActionParams)).toEqual({ - errors: {}, - }); - }); -}); - -describe('IndexActionConnectorFields renders', () => { - test('all connector fields is rendered', async () => { - expect(actionTypeModel.actionConnectorFields).not.toBeNull(); - if (!actionTypeModel.actionConnectorFields) { - return; - } - - const { getIndexPatterns } = jest.requireMock('../../../common/index_controls'); - getIndexPatterns.mockResolvedValueOnce([ - { - id: 'indexPattern1', - attributes: { - title: 'indexPattern1', - }, - }, - { - id: 'indexPattern2', - attributes: { - title: 'indexPattern2', - }, - }, - ]); - const { getFields } = jest.requireMock('../../../common/index_controls'); - getFields.mockResolvedValueOnce([ - { - type: 'date', - name: 'test1', - }, - { - type: 'text', - name: 'test2', - }, - ]); - const ConnectorFields = actionTypeModel.actionConnectorFields; - const actionConnector = { - secrets: {}, - id: 'test', - actionTypeId: '.index', - name: 'es_index', - config: { - index: 'test', - refresh: false, - executionTimeField: 'test1', - }, - } as EsIndexActionConnector; - const wrapper = mountWithIntl( - {}} - editActionSecrets={() => {}} - http={deps!.http} - /> - ); - - await act(async () => { - await nextTick(); - wrapper.update(); - }); - - expect(wrapper.find('[data-test-subj="connectorIndexesComboBox"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="indexRefreshCheckbox"]').length > 0).toBeTruthy(); - - const indexSearchBoxValue = wrapper.find('[data-test-subj="comboBoxSearchInput"]'); - expect(indexSearchBoxValue.first().props().value).toEqual(''); - - const indexComboBox = wrapper.find('#indexConnectorSelectSearchBox'); - indexComboBox.first().simulate('click'); - const event = { target: { value: 'indexPattern1' } }; - indexComboBox - .find('input') - .first() - .simulate('change', event); - - const indexSearchBoxValueBeforeEnterData = wrapper.find( - '[data-test-subj="comboBoxSearchInput"]' - ); - expect(indexSearchBoxValueBeforeEnterData.first().props().value).toEqual('indexPattern1'); - - const indexComboBoxClear = wrapper.find('[data-test-subj="comboBoxClearButton"]'); - indexComboBoxClear.first().simulate('click'); - - const indexSearchBoxValueAfterEnterData = wrapper.find( - '[data-test-subj="comboBoxSearchInput"]' - ); - expect(indexSearchBoxValueAfterEnterData.first().props().value).toEqual('indexPattern1'); - }); -}); - -describe('IndexParamsFields renders', () => { - test('all params fields is rendered', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - documents: [{ test: 123 }], - }; - const wrapper = mountWithIntl( - {}} - index={0} - /> - ); - expect( - wrapper - .find('[data-test-subj="actionIndexDoc"]') - .first() - .prop('value') - ).toBe(`{ - "test": 123 -}`); - expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeTruthy(); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx new file mode 100644 index 00000000000000..417a9e09086a2c --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.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; + * you may not use this file except in compliance with the Elastic License. + */ +import { TypeRegistry } from '../../../type_registry'; +import { registerBuiltInActionTypes } from '../index'; +import { ActionTypeModel } from '../../../../types'; +import { EsIndexActionConnector } from '../types'; + +const ACTION_TYPE_ID = '.index'; +let actionTypeModel: ActionTypeModel; + +beforeAll(() => { + const actionTypeRegistry = new TypeRegistry(); + registerBuiltInActionTypes({ actionTypeRegistry }); + const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + if (getResult !== null) { + actionTypeModel = getResult; + } +}); + +describe('actionTypeRegistry.get() works', () => { + test('action type .index is registered', () => { + expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); + expect(actionTypeModel.iconClass).toEqual('indexOpen'); + }); +}); + +describe('index connector validation', () => { + test('connector validation succeeds when connector config is valid', () => { + const actionConnector = { + secrets: {}, + id: 'test', + actionTypeId: '.index', + name: 'es_index', + config: { + index: 'test_es_index', + refresh: false, + executionTimeField: '1', + }, + } as EsIndexActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + index: [], + }, + }); + }); +}); + +describe('index connector validation with minimal config', () => { + test('connector validation succeeds when connector config is valid', () => { + const actionConnector = { + secrets: {}, + id: 'test', + actionTypeId: '.index', + name: 'es_index', + config: { + index: 'test_es_index', + }, + } as EsIndexActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + index: [], + }, + }); + }); +}); + +describe('action params validation', () => { + test('action params validation succeeds when action params is valid', () => { + const actionParams = { + documents: ['test'], + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: {}, + }); + + const emptyActionParams = {}; + + expect(actionTypeModel.validateParams(emptyActionParams)).toEqual({ + errors: {}, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx new file mode 100644 index 00000000000000..3ee663a5fc8a06 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.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; + * you may not use this file except in compliance with the Elastic License. + */ +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import { ActionTypeModel, ValidationResult } from '../../../../types'; +import { EsIndexActionConnector, IndexActionParams } from '../types'; + +export function getActionType(): ActionTypeModel { + return { + id: '.index', + iconClass: 'indexOpen', + selectMessage: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.selectMessageText', + { + defaultMessage: 'Index data into Elasticsearch.', + } + ), + actionTypeTitle: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.actionTypeTitle', + { + defaultMessage: 'Index data', + } + ), + validateConnector: (action: EsIndexActionConnector): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + index: new Array(), + }; + validationResult.errors = errors; + if (!action.config.index) { + errors.index.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.error.requiredIndexText', + { + defaultMessage: 'Index is required.', + } + ) + ); + } + return validationResult; + }, + actionConnectorFields: lazy(() => import('./es_index_connector')), + actionParamsFields: lazy(() => import('./es_index_params')), + validateParams: (): ValidationResult => { + return { errors: {} }; + }, + }; +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.test.tsx new file mode 100644 index 00000000000000..b0f21afeaa96c7 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.test.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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl, nextTick } from 'test_utils/enzyme_helpers'; +import { act } from 'react-dom/test-utils'; +import { EsIndexActionConnector } from '../types'; +import { coreMock } from '../../../../../../../../src/core/public/mocks'; +import IndexActionConnectorFields from './es_index_connector'; +import { TypeRegistry } from '../../../type_registry'; +import { DocLinksStart } from 'kibana/public'; + +jest.mock('../../../../common/index_controls', () => ({ + firstFieldOption: jest.fn(), + getFields: jest.fn(), + getIndexOptions: jest.fn(), + getIndexPatterns: jest.fn(), +})); + +describe('IndexActionConnectorFields renders', () => { + test('all connector fields is rendered', async () => { + const mocks = coreMock.createSetup(); + const [ + { + application: { capabilities }, + }, + ] = await mocks.getStartServices(); + const deps = { + toastNotifications: mocks.notifications.toasts, + http: mocks.http, + capabilities: { + ...capabilities, + actions: { + delete: true, + save: true, + show: true, + }, + }, + actionTypeRegistry: {} as TypeRegistry, + docLinks: { ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' } as DocLinksStart, + }; + + const { getIndexPatterns } = jest.requireMock('../../../../common/index_controls'); + getIndexPatterns.mockResolvedValueOnce([ + { + id: 'indexPattern1', + attributes: { + title: 'indexPattern1', + }, + }, + { + id: 'indexPattern2', + attributes: { + title: 'indexPattern2', + }, + }, + ]); + const { getFields } = jest.requireMock('../../../../common/index_controls'); + getFields.mockResolvedValueOnce([ + { + type: 'date', + name: 'test1', + }, + { + type: 'text', + name: 'test2', + }, + ]); + + const actionConnector = { + secrets: {}, + id: 'test', + actionTypeId: '.index', + name: 'es_index', + config: { + index: 'test', + refresh: false, + executionTimeField: 'test1', + }, + } as EsIndexActionConnector; + const wrapper = mountWithIntl( + {}} + editActionSecrets={() => {}} + http={deps!.http} + docLinks={deps!.docLinks} + /> + ); + + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(wrapper.find('[data-test-subj="connectorIndexesComboBox"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="indexRefreshCheckbox"]').length > 0).toBeTruthy(); + + const indexSearchBoxValue = wrapper.find('[data-test-subj="comboBoxSearchInput"]'); + expect(indexSearchBoxValue.first().props().value).toEqual(''); + + const indexComboBox = wrapper.find('#indexConnectorSelectSearchBox'); + indexComboBox.first().simulate('click'); + const event = { target: { value: 'indexPattern1' } }; + indexComboBox + .find('input') + .first() + .simulate('change', event); + + const indexSearchBoxValueBeforeEnterData = wrapper.find( + '[data-test-subj="comboBoxSearchInput"]' + ); + expect(indexSearchBoxValueBeforeEnterData.first().props().value).toEqual('indexPattern1'); + + const indexComboBoxClear = wrapper.find('[data-test-subj="comboBoxClearButton"]'); + indexComboBoxClear.first().simulate('click'); + + const indexSearchBoxValueAfterEnterData = wrapper.find( + '[data-test-subj="comboBoxSearchInput"]' + ); + expect(indexSearchBoxValueAfterEnterData.first().props().value).toEqual('indexPattern1'); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.tsx similarity index 66% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.tsx rename to x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.tsx index 861d6ad7284c2b..9cd3a185453450 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.tsx @@ -3,12 +3,11 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, useState, useEffect } from 'react'; +import React, { useState, useEffect } from 'react'; import { EuiFormRow, EuiSwitch, EuiSpacer, - EuiCodeEditor, EuiComboBox, EuiComboBoxOptionOption, EuiSelect, @@ -17,64 +16,15 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { useXJsonMode } from '../../../../../../../src/plugins/es_ui_shared/static/ace_x_json/hooks'; -import { - ActionTypeModel, - ActionConnectorFieldsProps, - ValidationResult, - ActionParamsProps, -} from '../../../types'; -import { IndexActionParams, EsIndexActionConnector } from './types'; -import { getTimeFieldOptions } from '../../../common/lib/get_time_options'; +import { ActionConnectorFieldsProps } from '../../../../types'; +import { EsIndexActionConnector } from '.././types'; +import { getTimeFieldOptions } from '../../../../common/lib/get_time_options'; import { firstFieldOption, getFields, getIndexOptions, getIndexPatterns, -} from '../../../common/index_controls'; -import { AddMessageVariables } from '../add_message_variables'; - -export function getActionType(): ActionTypeModel { - return { - id: '.index', - iconClass: 'indexOpen', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.selectMessageText', - { - defaultMessage: 'Index data into Elasticsearch.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.actionTypeTitle', - { - defaultMessage: 'Index data', - } - ), - validateConnector: (action: EsIndexActionConnector): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - index: new Array(), - }; - validationResult.errors = errors; - if (!action.config.index) { - errors.index.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.error.requiredIndexText', - { - defaultMessage: 'Index is required.', - } - ) - ); - } - return validationResult; - }, - actionConnectorFields: IndexActionConnectorFields, - actionParamsFields: IndexParamsFields, - validateParams: (): ValidationResult => { - return { errors: {} }; - }, - }; -} +} from '../../../../common/index_controls'; const IndexActionConnectorFields: React.FunctionComponent> = ({ - actionParams, - index, - editAction, - messageVariables, -}) => { - const { documents } = actionParams; - const { xJsonMode, convertToJson, setXJson, xJson } = useXJsonMode( - documents && documents.length > 0 ? documents[0] : null - ); - const onSelectMessageVariable = (variable: string) => { - const value = (xJson ?? '').concat(` {{${variable}}}`); - setXJson(value); - // Keep the documents in sync with the editor content - onDocumentsChange(convertToJson(value)); - }; - - function onDocumentsChange(updatedDocuments: string) { - try { - const documentsJSON = JSON.parse(updatedDocuments); - editAction('documents', [documentsJSON], index); - // eslint-disable-next-line no-empty - } catch (e) {} - } - return ( - - onSelectMessageVariable(variable)} - paramsProperty="documents" - /> - } - > - { - setXJson(xjson); - // Keep the documents in sync with the editor content - onDocumentsChange(convertToJson(xjson)); - }} - /> - - - ); -}; - // if the string == null or is empty, return null, else return string function nullableString(str: string | null | undefined) { if (str == null || str.trim() === '') return null; return str; } + +// eslint-disable-next-line import/no-default-export +export { IndexActionConnectorFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx new file mode 100644 index 00000000000000..5f05a56a228e2b --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.test.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import ParamsFields from './es_index_params'; + +describe('IndexParamsFields renders', () => { + test('all params fields is rendered', () => { + const actionParams = { + documents: [{ test: 123 }], + }; + const wrapper = mountWithIntl( + {}} + index={0} + /> + ); + expect( + wrapper + .find('[data-test-subj="actionIndexDoc"]') + .first() + .prop('value') + ).toBe(`{ + "test": 123 +}`); + expect(wrapper.find('[data-test-subj="documentsAddVariableButton"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx new file mode 100644 index 00000000000000..0b095cdc269847 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment } from 'react'; +import { EuiFormRow, EuiCodeEditor } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useXJsonMode } from '../../../../../../../../src/plugins/es_ui_shared/static/ace_x_json/hooks'; +import { ActionParamsProps } from '../../../../types'; +import { IndexActionParams } from '.././types'; +import { AddMessageVariables } from '../../add_message_variables'; + +export const IndexParamsFields = ({ + actionParams, + index, + editAction, + messageVariables, +}: ActionParamsProps) => { + const { documents } = actionParams; + const { xJsonMode, convertToJson, setXJson, xJson } = useXJsonMode( + documents && documents.length > 0 ? documents[0] : null + ); + const onSelectMessageVariable = (variable: string) => { + const value = (xJson ?? '').concat(` {{${variable}}}`); + setXJson(value); + // Keep the documents in sync with the editor content + onDocumentsChange(convertToJson(value)); + }; + + function onDocumentsChange(updatedDocuments: string) { + try { + const documentsJSON = JSON.parse(updatedDocuments); + editAction('documents', [documentsJSON], index); + // eslint-disable-next-line no-empty + } catch (e) {} + } + return ( + + onSelectMessageVariable(variable)} + paramsProperty="documents" + /> + } + > + { + setXJson(xjson); + // Keep the documents in sync with the editor content + onDocumentsChange(convertToJson(xjson)); + }} + /> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { IndexParamsFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts new file mode 100644 index 00000000000000..6a2ebd9c4bc717 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getActionType as getIndexActionType } from './es_index'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts index 6ffd9b2c9ffde8..8f49fa46dd54e6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts @@ -4,12 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -import { getActionType as getServerLogActionType } from './server_log'; -import { getActionType as getSlackActionType } from './slack'; -import { getActionType as getEmailActionType } from './email'; -import { getActionType as getIndexActionType } from './es_index'; -import { getActionType as getPagerDutyActionType } from './pagerduty'; -import { getActionType as getWebhookActionType } from './webhook'; +import { getServerLogActionType } from './server_log'; +import { getSlackActionType } from './slack'; +import { getEmailActionType } from './email'; +import { getIndexActionType } from './es_index'; +import { getPagerDutyActionType } from './pagerduty'; +import { getWebhookActionType } from './webhook'; import { TypeRegistry } from '../../type_registry'; import { ActionTypeModel } from '../../../types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.test.tsx deleted file mode 100644 index f628457dc51627..00000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.test.tsx +++ /dev/null @@ -1,200 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { FunctionComponent } from 'react'; -import { mountWithIntl, nextTick } from 'test_utils/enzyme_helpers'; -import { act } from 'react-dom/test-utils'; -import { TypeRegistry } from '../../type_registry'; -import { registerBuiltInActionTypes } from './index'; -import { ActionTypeModel, ActionParamsProps } from '../../../types'; -import { - PagerDutyActionParams, - EventActionOptions, - SeverityActionOptions, - PagerDutyActionConnector, -} from './types'; - -const ACTION_TYPE_ID = '.pagerduty'; -let actionTypeModel: ActionTypeModel; -let deps: any; - -beforeAll(async () => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } - deps = { - docLinks: { ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' }, - }; -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('test-file-stub'); - }); -}); - -describe('pagerduty connector validation', () => { - test('connector validation succeeds when connector config is valid', () => { - const actionConnector = { - secrets: { - routingKey: 'test', - }, - id: 'test', - actionTypeId: '.pagerduty', - name: 'pagerduty', - config: { - apiUrl: 'http:\\test', - }, - } as PagerDutyActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - routingKey: [], - }, - }); - - delete actionConnector.config.apiUrl; - actionConnector.secrets.routingKey = 'test1'; - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - routingKey: [], - }, - }); - }); - - test('connector validation fails when connector config is not valid', () => { - const actionConnector = { - secrets: {}, - id: 'test', - actionTypeId: '.pagerduty', - name: 'pagerduty', - config: { - apiUrl: 'http:\\test', - }, - } as PagerDutyActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - routingKey: ['A routing key is required.'], - }, - }); - }); -}); - -describe('pagerduty action params validation', () => { - test('action params validation succeeds when action params is valid', () => { - const actionParams = { - eventAction: 'trigger', - dedupKey: 'test', - summary: '2323', - source: 'source', - severity: 'critical', - timestamp: new Date().toISOString(), - component: 'test', - group: 'group', - class: 'test class', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - summary: [], - timestamp: [], - }, - }); - }); -}); - -describe('PagerDutyActionConnectorFields renders', () => { - test('all connector fields is rendered', async () => { - expect(actionTypeModel.actionConnectorFields).not.toBeNull(); - if (!actionTypeModel.actionConnectorFields) { - return; - } - const ConnectorFields = actionTypeModel.actionConnectorFields; - const actionConnector = { - secrets: { - routingKey: 'test', - }, - id: 'test', - actionTypeId: '.pagerduty', - name: 'pagerduty', - config: { - apiUrl: 'http:\\test', - }, - } as PagerDutyActionConnector; - const wrapper = mountWithIntl( - {}} - editActionSecrets={() => {}} - docLinks={deps!.docLinks} - /> - ); - - await act(async () => { - await nextTick(); - wrapper.update(); - }); - expect(wrapper.find('[data-test-subj="pagerdutyApiUrlInput"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="pagerdutyApiUrlInput"]') - .first() - .prop('value') - ).toBe('http:\\test'); - expect(wrapper.find('[data-test-subj="pagerdutyRoutingKeyInput"]').length > 0).toBeTruthy(); - }); -}); - -describe('PagerDutyParamsFields renders', () => { - test('all params fields is rendered', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - eventAction: EventActionOptions.TRIGGER, - dedupKey: 'test', - summary: '2323', - source: 'source', - severity: SeverityActionOptions.CRITICAL, - timestamp: new Date().toISOString(), - component: 'test', - group: 'group', - class: 'test class', - }; - const wrapper = mountWithIntl( - {}} - index={0} - /> - ); - expect(wrapper.find('[data-test-subj="severitySelect"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="severitySelect"]') - .first() - .prop('value') - ).toStrictEqual('critical'); - expect(wrapper.find('[data-test-subj="eventActionSelect"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="dedupKeyInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="timestampInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="componentInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="groupInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="sourceInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="pagerdutySummaryInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="dedupKeyAddVariableButton"]').length > 0).toBeTruthy(); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts new file mode 100644 index 00000000000000..9128ec81391ab3 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getActionType as getPagerDutyActionType } from './pagerduty'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.svg b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.svg similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.svg rename to x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.svg diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.test.tsx new file mode 100644 index 00000000000000..ba7eb598c120d2 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.test.tsx @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { TypeRegistry } from '../../../type_registry'; +import { registerBuiltInActionTypes } from '.././index'; +import { ActionTypeModel } from '../../../../types'; +import { PagerDutyActionConnector } from '.././types'; + +const ACTION_TYPE_ID = '.pagerduty'; +let actionTypeModel: ActionTypeModel; + +beforeAll(() => { + const actionTypeRegistry = new TypeRegistry(); + registerBuiltInActionTypes({ actionTypeRegistry }); + const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + if (getResult !== null) { + actionTypeModel = getResult; + } +}); + +describe('actionTypeRegistry.get() works', () => { + test('action type static data is as expected', () => { + expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); + expect(actionTypeModel.iconClass).toEqual('test-file-stub'); + }); +}); + +describe('pagerduty connector validation', () => { + test('connector validation succeeds when connector config is valid', () => { + const actionConnector = { + secrets: { + routingKey: 'test', + }, + id: 'test', + actionTypeId: '.pagerduty', + name: 'pagerduty', + config: { + apiUrl: 'http:\\test', + }, + } as PagerDutyActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + routingKey: [], + }, + }); + + delete actionConnector.config.apiUrl; + actionConnector.secrets.routingKey = 'test1'; + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + routingKey: [], + }, + }); + }); + + test('connector validation fails when connector config is not valid', () => { + const actionConnector = { + secrets: {}, + id: 'test', + actionTypeId: '.pagerduty', + name: 'pagerduty', + config: { + apiUrl: 'http:\\test', + }, + } as PagerDutyActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + routingKey: ['A routing key is required.'], + }, + }); + }); +}); + +describe('pagerduty action params validation', () => { + test('action params validation succeeds when action params is valid', () => { + const actionParams = { + eventAction: 'trigger', + dedupKey: 'test', + summary: '2323', + source: 'source', + severity: 'critical', + timestamp: new Date().toISOString(), + component: 'test', + group: 'group', + class: 'test class', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { + summary: [], + timestamp: [], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx new file mode 100644 index 00000000000000..5e29fca3971806 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import { ActionTypeModel, ValidationResult } from '../../../../types'; +import { PagerDutyActionParams, PagerDutyActionConnector } from '.././types'; +import pagerDutySvg from './pagerduty.svg'; +import { hasMustacheTokens } from '../../../lib/has_mustache_tokens'; + +export function getActionType(): ActionTypeModel { + return { + id: '.pagerduty', + iconClass: pagerDutySvg, + selectMessage: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.selectMessageText', + { + defaultMessage: 'Send an event in PagerDuty.', + } + ), + actionTypeTitle: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.actionTypeTitle', + { + defaultMessage: 'Send to PagerDuty', + } + ), + validateConnector: (action: PagerDutyActionConnector): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + routingKey: new Array(), + }; + validationResult.errors = errors; + if (!action.secrets.routingKey) { + errors.routingKey.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredRoutingKeyText', + { + defaultMessage: 'A routing key is required.', + } + ) + ); + } + return validationResult; + }, + validateParams: (actionParams: PagerDutyActionParams): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + summary: new Array(), + timestamp: new Array(), + }; + validationResult.errors = errors; + if (!actionParams.summary?.length) { + errors.summary.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredSummaryText', + { + defaultMessage: 'Summary is required.', + } + ) + ); + } + if (actionParams.timestamp && !hasMustacheTokens(actionParams.timestamp)) { + if (isNaN(Date.parse(actionParams.timestamp))) { + const { nowShortFormat, nowLongFormat } = getValidTimestampExamples(); + errors.timestamp.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.invalidTimestamp', + { + defaultMessage: + 'Timestamp must be a valid date, such as {nowShortFormat} or {nowLongFormat}.', + values: { + nowShortFormat, + nowLongFormat, + }, + } + ) + ); + } + } + return validationResult; + }, + actionConnectorFields: lazy(() => import('./pagerduty_connectors')), + actionParamsFields: lazy(() => import('./pagerduty_params')), + }; +} + +function getValidTimestampExamples() { + const now = moment(); + return { + nowShortFormat: now.format('YYYY-MM-DD'), + nowLongFormat: now.format('YYYY-MM-DD h:mm:ss'), + }; +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx new file mode 100644 index 00000000000000..3f3fba1599bd2b --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl, nextTick } from 'test_utils/enzyme_helpers'; +import { act } from 'react-dom/test-utils'; +import { PagerDutyActionConnector } from '.././types'; +import PagerDutyActionConnectorFields from './pagerduty_connectors'; +import { DocLinksStart } from 'kibana/public'; + +describe('PagerDutyActionConnectorFields renders', () => { + test('all connector fields is rendered', async () => { + const actionConnector = { + secrets: { + routingKey: 'test', + }, + id: 'test', + actionTypeId: '.pagerduty', + name: 'pagerduty', + config: { + apiUrl: 'http:\\test', + }, + } as PagerDutyActionConnector; + const deps = { + docLinks: { ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' } as DocLinksStart, + }; + + const wrapper = mountWithIntl( + {}} + editActionSecrets={() => {}} + docLinks={deps!.docLinks} + /> + ); + + await act(async () => { + await nextTick(); + wrapper.update(); + }); + + expect(wrapper.find('[data-test-subj="pagerdutyApiUrlInput"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="pagerdutyApiUrlInput"]') + .first() + .prop('value') + ).toBe('http:\\test'); + expect(wrapper.find('[data-test-subj="pagerdutyRoutingKeyInput"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.tsx new file mode 100644 index 00000000000000..48da3f1778b488 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.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; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment } from 'react'; +import { EuiFieldText, EuiFormRow, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { ActionConnectorFieldsProps } from '../../../../types'; +import { PagerDutyActionConnector } from '.././types'; + +const PagerDutyActionConnectorFields: React.FunctionComponent> = ({ errors, action, editActionConfig, editActionSecrets, docLinks }) => { + const { apiUrl } = action.config; + const { routingKey } = action.secrets; + return ( + + + ) => { + editActionConfig('apiUrl', e.target.value); + }} + onBlur={() => { + if (!apiUrl) { + editActionConfig('apiUrl', ''); + } + }} + /> + + + + + } + error={errors.routingKey} + isInvalid={errors.routingKey.length > 0 && routingKey !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyTextFieldLabel', + { + defaultMessage: 'Integration key', + } + )} + > + 0 && routingKey !== undefined} + name="routingKey" + value={routingKey || ''} + data-test-subj="pagerdutyRoutingKeyInput" + onChange={(e: React.ChangeEvent) => { + editActionSecrets('routingKey', e.target.value); + }} + onBlur={() => { + if (!routingKey) { + editActionSecrets('routingKey', ''); + } + }} + /> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { PagerDutyActionConnectorFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx new file mode 100644 index 00000000000000..d1b32f545c335d --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import { EventActionOptions, SeverityActionOptions } from '.././types'; +import PagerDutyParamsFields from './pagerduty_params'; + +describe('PagerDutyParamsFields renders', () => { + test('all params fields is rendered', () => { + const actionParams = { + eventAction: EventActionOptions.TRIGGER, + dedupKey: 'test', + summary: '2323', + source: 'source', + severity: SeverityActionOptions.CRITICAL, + timestamp: new Date().toISOString(), + component: 'test', + group: 'group', + class: 'test class', + }; + const wrapper = mountWithIntl( + {}} + index={0} + /> + ); + expect(wrapper.find('[data-test-subj="severitySelect"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="severitySelect"]') + .first() + .prop('value') + ).toStrictEqual('critical'); + expect(wrapper.find('[data-test-subj="eventActionSelect"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="dedupKeyInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="timestampInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="componentInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="groupInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="sourceInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="pagerdutySummaryInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="dedupKeyAddVariableButton"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx similarity index 67% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.tsx rename to x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx index 5ad1f2fffecce8..590eba5dad9361 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx @@ -4,178 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ import React, { Fragment } from 'react'; -import { - EuiFieldText, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiSelect, - EuiLink, -} from '@elastic/eui'; +import { EuiFieldText, EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSelect } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import moment from 'moment'; -import { - ActionTypeModel, - ActionConnectorFieldsProps, - ValidationResult, - ActionParamsProps, -} from '../../../types'; -import { PagerDutyActionParams, PagerDutyActionConnector } from './types'; -import pagerDutySvg from './pagerduty.svg'; -import { AddMessageVariables } from '../add_message_variables'; -import { hasMustacheTokens } from '../../lib/has_mustache_tokens'; - -export function getActionType(): ActionTypeModel { - return { - id: '.pagerduty', - iconClass: pagerDutySvg, - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.selectMessageText', - { - defaultMessage: 'Send an event in PagerDuty.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.actionTypeTitle', - { - defaultMessage: 'Send to PagerDuty', - } - ), - validateConnector: (action: PagerDutyActionConnector): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - routingKey: new Array(), - }; - validationResult.errors = errors; - if (!action.secrets.routingKey) { - errors.routingKey.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredRoutingKeyText', - { - defaultMessage: 'A routing key is required.', - } - ) - ); - } - return validationResult; - }, - validateParams: (actionParams: PagerDutyActionParams): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - summary: new Array(), - timestamp: new Array(), - }; - validationResult.errors = errors; - if (!actionParams.summary?.length) { - errors.summary.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredSummaryText', - { - defaultMessage: 'Summary is required.', - } - ) - ); - } - if (actionParams.timestamp && !hasMustacheTokens(actionParams.timestamp)) { - if (isNaN(Date.parse(actionParams.timestamp))) { - const { nowShortFormat, nowLongFormat } = getValidTimestampExamples(); - errors.timestamp.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.invalidTimestamp', - { - defaultMessage: - 'Timestamp must be a valid date, such as {nowShortFormat} or {nowLongFormat}.', - values: { - nowShortFormat, - nowLongFormat, - }, - } - ) - ); - } - } - return validationResult; - }, - actionConnectorFields: PagerDutyActionConnectorFields, - actionParamsFields: PagerDutyParamsFields, - }; -} - -const PagerDutyActionConnectorFields: React.FunctionComponent> = ({ errors, action, editActionConfig, editActionSecrets, docLinks }) => { - const { apiUrl } = action.config; - const { routingKey } = action.secrets; - return ( - - - ) => { - editActionConfig('apiUrl', e.target.value); - }} - onBlur={() => { - if (!apiUrl) { - editActionConfig('apiUrl', ''); - } - }} - /> - - - - - } - error={errors.routingKey} - isInvalid={errors.routingKey.length > 0 && routingKey !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyTextFieldLabel', - { - defaultMessage: 'Integration key', - } - )} - > - 0 && routingKey !== undefined} - name="routingKey" - value={routingKey || ''} - data-test-subj="pagerdutyRoutingKeyInput" - onChange={(e: React.ChangeEvent) => { - editActionSecrets('routingKey', e.target.value); - }} - onBlur={() => { - if (!routingKey) { - editActionSecrets('routingKey', ''); - } - }} - /> - - - ); -}; +import { ActionParamsProps } from '../../../../types'; +import { PagerDutyActionParams } from '.././types'; +import { AddMessageVariables } from '../../add_message_variables'; const PagerDutyParamsFields: React.FunctionComponent> = ({ actionParams, @@ -561,10 +394,5 @@ const PagerDutyParamsFields: React.FunctionComponent { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logsApp'); - }); -}); - -describe('server-log connector validation', () => { - test('connector validation succeeds when connector config is valid', () => { - const actionConnector = { - secrets: {}, - id: 'test', - actionTypeId: '.server-log', - name: 'server-log', - config: {}, - } as ActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: {}, - }); - }); -}); - -describe('action params validation', () => { - test('action params validation succeeds when action params is valid', () => { - const actionParams = { - message: 'test message', - level: 'trace', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { message: [] }, - }); - }); -}); - -describe('ServerLogParamsFields renders', () => { - test('all params fields is rendered', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - level: ServerLogLevelOptions.TRACE, - message: 'test', - }; - const wrapper = mountWithIntl( - {}} - index={0} - defaultMessage={'test default message'} - /> - ); - expect(wrapper.find('[data-test-subj="loggingLevelSelect"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="loggingLevelSelect"]') - .first() - .prop('value') - ).toStrictEqual('trace'); - expect(wrapper.find('[data-test-subj="loggingMessageInput"]').length > 0).toBeTruthy(); - }); - - test('level param field is rendered with default value if not selected', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - message: 'test message', - level: ServerLogLevelOptions.INFO, - }; - const wrapper = mountWithIntl( - {}} - index={0} - /> - ); - expect(wrapper.find('[data-test-subj="loggingLevelSelect"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="loggingLevelSelect"]') - .first() - .prop('value') - ).toStrictEqual('info'); - expect(wrapper.find('[data-test-subj="loggingMessageInput"]').length > 0).toBeTruthy(); - }); - - test('params validation fails when message is not valid', () => { - const actionParams = { - message: '', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - message: ['Message is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts new file mode 100644 index 00000000000000..f85c7460d2ece1 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getActionType as getServerLogActionType } from './server_log'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.tsx new file mode 100644 index 00000000000000..3bb5ea68a3040a --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.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; + * you may not use this file except in compliance with the Elastic License. + */ +import { TypeRegistry } from '../../../type_registry'; +import { registerBuiltInActionTypes } from '.././index'; +import { ActionTypeModel, ActionConnector } from '../../../../types'; + +const ACTION_TYPE_ID = '.server-log'; +let actionTypeModel: ActionTypeModel; + +beforeAll(() => { + const actionTypeRegistry = new TypeRegistry(); + registerBuiltInActionTypes({ actionTypeRegistry }); + const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + if (getResult !== null) { + actionTypeModel = getResult; + } +}); + +describe('actionTypeRegistry.get() works', () => { + test('action type static data is as expected', () => { + expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); + expect(actionTypeModel.iconClass).toEqual('logsApp'); + }); +}); + +describe('server-log connector validation', () => { + test('connector validation succeeds when connector config is valid', () => { + const actionConnector = { + secrets: {}, + id: 'test', + actionTypeId: '.server-log', + name: 'server-log', + config: {}, + } as ActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: {}, + }); + }); +}); + +describe('action params validation', () => { + test('action params validation succeeds when action params is valid', () => { + const actionParams = { + message: 'test message', + level: 'trace', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { message: [] }, + }); + }); + + test('params validation fails when message is not valid', () => { + const actionParams = { + message: '', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { + message: ['Message is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.tsx new file mode 100644 index 00000000000000..390ccf6a494e90 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.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; + * you may not use this file except in compliance with the Elastic License. + */ +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import { ActionTypeModel, ValidationResult } from '../../../../types'; +import { ServerLogActionParams } from '../types'; + +export function getActionType(): ActionTypeModel { + return { + id: '.server-log', + iconClass: 'logsApp', + selectMessage: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.selectMessageText', + { + defaultMessage: 'Add a message to a Kibana log.', + } + ), + actionTypeTitle: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.actionTypeTitle', + { + defaultMessage: 'Send to Server log', + } + ), + validateConnector: (): ValidationResult => { + return { errors: {} }; + }, + validateParams: (actionParams: ServerLogActionParams): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + message: new Array(), + }; + validationResult.errors = errors; + if (!actionParams.message?.length) { + errors.message.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServerLogMessageText', + { + defaultMessage: 'Message is required.', + } + ) + ); + } + return validationResult; + }, + actionConnectorFields: null, + actionParamsFields: lazy(() => import('./server_log_params')), + }; +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx new file mode 100644 index 00000000000000..d2e1d1e4500bc6 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.test.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import { ServerLogLevelOptions } from '.././types'; +import ServerLogParamsFields from './server_log_params'; + +describe('ServerLogParamsFields renders', () => { + test('all params fields is rendered', () => { + const actionParams = { + level: ServerLogLevelOptions.TRACE, + message: 'test', + }; + const wrapper = mountWithIntl( + {}} + index={0} + defaultMessage={'test default message'} + /> + ); + expect(wrapper.find('[data-test-subj="loggingLevelSelect"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="loggingLevelSelect"]') + .first() + .prop('value') + ).toStrictEqual('trace'); + expect(wrapper.find('[data-test-subj="loggingMessageInput"]').length > 0).toBeTruthy(); + }); + + test('level param field is rendered with default value if not selected', () => { + const actionParams = { + message: 'test message', + level: ServerLogLevelOptions.INFO, + }; + const wrapper = mountWithIntl( + {}} + index={0} + /> + ); + expect(wrapper.find('[data-test-subj="loggingLevelSelect"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="loggingLevelSelect"]') + .first() + .prop('value') + ).toStrictEqual('info'); + expect(wrapper.find('[data-test-subj="loggingMessageInput"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx similarity index 67% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log.tsx rename to x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx index a4c83ce76f04e8..64d39e238be760 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx @@ -6,51 +6,9 @@ import React, { Fragment, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiSelect, EuiTextArea, EuiFormRow } from '@elastic/eui'; -import { ActionTypeModel, ValidationResult, ActionParamsProps } from '../../../types'; -import { ServerLogActionParams } from './types'; -import { AddMessageVariables } from '../add_message_variables'; - -export function getActionType(): ActionTypeModel { - return { - id: '.server-log', - iconClass: 'logsApp', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.selectMessageText', - { - defaultMessage: 'Add a message to a Kibana log.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.actionTypeTitle', - { - defaultMessage: 'Send to Server log', - } - ), - validateConnector: (): ValidationResult => { - return { errors: {} }; - }, - validateParams: (actionParams: ServerLogActionParams): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - message: new Array(), - }; - validationResult.errors = errors; - if (!actionParams.message?.length) { - errors.message.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServerLogMessageText', - { - defaultMessage: 'Message is required.', - } - ) - ); - } - return validationResult; - }, - actionConnectorFields: null, - actionParamsFields: ServerLogParamsFields, - }; -} +import { ActionParamsProps } from '../../../../types'; +import { ServerLogActionParams } from '.././types'; +import { AddMessageVariables } from '../../add_message_variables'; export const ServerLogParamsFields: React.FunctionComponent ); }; + +// eslint-disable-next-line import/no-default-export +export { ServerLogParamsFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.test.tsx deleted file mode 100644 index a2865b27bc06c0..00000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.test.tsx +++ /dev/null @@ -1,166 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { FunctionComponent } from 'react'; -import { mountWithIntl, nextTick } from 'test_utils/enzyme_helpers'; -import { act } from 'react-dom/test-utils'; -import { TypeRegistry } from '../../type_registry'; -import { registerBuiltInActionTypes } from './index'; -import { ActionTypeModel, ActionParamsProps } from '../../../types'; -import { SlackActionParams, SlackActionConnector } from './types'; - -const ACTION_TYPE_ID = '.slack'; -let actionTypeModel: ActionTypeModel; - -let deps: any; - -beforeAll(async () => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } - deps = { - docLinks: { ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' }, - }; -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logoSlack'); - }); -}); - -describe('slack connector validation', () => { - test('connector validation succeeds when connector config is valid', () => { - const actionConnector = { - secrets: { - webhookUrl: 'http:\\test', - }, - id: 'test', - actionTypeId: '.email', - name: 'email', - config: {}, - } as SlackActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - webhookUrl: [], - }, - }); - }); - - test('connector validation fails when connector config is not valid', () => { - const actionConnector = { - secrets: {}, - id: 'test', - actionTypeId: '.email', - name: 'email', - config: {}, - } as SlackActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - webhookUrl: ['Webhook URL is required.'], - }, - }); - }); -}); - -describe('slack action params validation', () => { - test('if action params validation succeeds when action params is valid', () => { - const actionParams = { - message: 'message {test}', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { message: [] }, - }); - }); -}); - -describe('SlackActionFields renders', () => { - test('all connector fields is rendered', async () => { - expect(actionTypeModel.actionConnectorFields).not.toBeNull(); - if (!actionTypeModel.actionConnectorFields) { - return; - } - const ConnectorFields = actionTypeModel.actionConnectorFields; - const actionConnector = { - secrets: { - webhookUrl: 'http:\\test', - }, - id: 'test', - actionTypeId: '.email', - name: 'email', - config: {}, - } as SlackActionConnector; - const wrapper = mountWithIntl( - {}} - editActionSecrets={() => {}} - docLinks={deps!.docLinks} - /> - ); - - await act(async () => { - await nextTick(); - wrapper.update(); - }); - expect(wrapper.find('[data-test-subj="slackWebhookUrlInput"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="slackWebhookUrlInput"]') - .first() - .prop('value') - ).toBe('http:\\test'); - }); -}); - -describe('SlackParamsFields renders', () => { - test('all params fields is rendered', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - message: 'test message', - }; - const wrapper = mountWithIntl( - {}} - index={0} - /> - ); - expect(wrapper.find('[data-test-subj="slackMessageTextArea"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="slackMessageTextArea"]') - .first() - .prop('value') - ).toStrictEqual('test message'); - }); - - test('params validation fails when message is not valid', () => { - const actionParams = { - message: '', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - message: ['Message is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.tsx deleted file mode 100644 index 03f7a2f492d54d..00000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack.tsx +++ /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; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { Fragment, useEffect } from 'react'; -import { EuiFieldText, EuiTextArea, EuiFormRow, EuiLink } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { - ActionTypeModel, - ActionConnectorFieldsProps, - ValidationResult, - ActionParamsProps, -} from '../../../types'; -import { SlackActionParams, SlackActionConnector } from './types'; -import { AddMessageVariables } from '../add_message_variables'; - -export function getActionType(): ActionTypeModel { - return { - id: '.slack', - iconClass: 'logoSlack', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.selectMessageText', - { - defaultMessage: 'Send a message to a Slack channel or user.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.actionTypeTitle', - { - defaultMessage: 'Send to Slack', - } - ), - validateConnector: (action: SlackActionConnector): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - webhookUrl: new Array(), - }; - validationResult.errors = errors; - if (!action.secrets.webhookUrl) { - errors.webhookUrl.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.error.requiredWebhookUrlText', - { - defaultMessage: 'Webhook URL is required.', - } - ) - ); - } - return validationResult; - }, - validateParams: (actionParams: SlackActionParams): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - message: new Array(), - }; - validationResult.errors = errors; - if (!actionParams.message?.length) { - errors.message.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSlackMessageText', - { - defaultMessage: 'Message is required.', - } - ) - ); - } - return validationResult; - }, - actionConnectorFields: SlackActionFields, - actionParamsFields: SlackParamsFields, - }; -} - -const SlackActionFields: React.FunctionComponent> = ({ action, editActionSecrets, errors, docLinks }) => { - const { webhookUrl } = action.secrets; - - return ( - - - - - } - error={errors.webhookUrl} - isInvalid={errors.webhookUrl.length > 0 && webhookUrl !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlTextFieldLabel', - { - defaultMessage: 'Webhook URL', - } - )} - > - 0 && webhookUrl !== undefined} - name="webhookUrl" - placeholder="Example: https://hooks.slack.com/services" - value={webhookUrl || ''} - data-test-subj="slackWebhookUrlInput" - onChange={e => { - editActionSecrets('webhookUrl', e.target.value); - }} - onBlur={() => { - if (!webhookUrl) { - editActionSecrets('webhookUrl', ''); - } - }} - /> - - - ); -}; - -const SlackParamsFields: React.FunctionComponent> = ({ - actionParams, - editAction, - index, - errors, - messageVariables, - defaultMessage, -}) => { - const { message } = actionParams; - useEffect(() => { - if (!message && defaultMessage && defaultMessage.length > 0) { - editAction('message', defaultMessage, index); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const onSelectMessageVariable = (paramsProperty: string, variable: string) => { - editAction(paramsProperty, (message ?? '').concat(` {{${variable}}}`), index); - }; - - return ( - - 0 && message !== undefined} - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.messageTextAreaFieldLabel', - { - defaultMessage: 'Message', - } - )} - labelAppend={ - - onSelectMessageVariable('message', variable) - } - paramsProperty="message" - /> - } - > - 0 && message !== undefined} - name="message" - value={message || ''} - data-test-subj="slackMessageTextArea" - onChange={e => { - editAction('message', e.target.value, index); - }} - onBlur={() => { - if (!message) { - editAction('message', '', index); - } - }} - /> - - - ); -}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts new file mode 100644 index 00000000000000..64ab6670754c92 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getActionType as getSlackActionType } from './slack'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.tsx new file mode 100644 index 00000000000000..78f4161cac8273 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.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; + * you may not use this file except in compliance with the Elastic License. + */ +import { TypeRegistry } from '../../../type_registry'; +import { registerBuiltInActionTypes } from '.././index'; +import { ActionTypeModel } from '../../../../types'; +import { SlackActionConnector } from '../types'; + +const ACTION_TYPE_ID = '.slack'; +let actionTypeModel: ActionTypeModel; + +beforeAll(async () => { + const actionTypeRegistry = new TypeRegistry(); + registerBuiltInActionTypes({ actionTypeRegistry }); + const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + if (getResult !== null) { + actionTypeModel = getResult; + } +}); + +describe('actionTypeRegistry.get() works', () => { + test('action type static data is as expected', () => { + expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); + expect(actionTypeModel.iconClass).toEqual('logoSlack'); + }); +}); + +describe('slack connector validation', () => { + test('connector validation succeeds when connector config is valid', () => { + const actionConnector = { + secrets: { + webhookUrl: 'http:\\test', + }, + id: 'test', + actionTypeId: '.email', + name: 'email', + config: {}, + } as SlackActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + webhookUrl: [], + }, + }); + }); + + test('connector validation fails when connector config is not valid', () => { + const actionConnector = { + secrets: {}, + id: 'test', + actionTypeId: '.email', + name: 'email', + config: {}, + } as SlackActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + webhookUrl: ['Webhook URL is required.'], + }, + }); + }); +}); + +describe('slack action params validation', () => { + test('if action params validation succeeds when action params is valid', () => { + const actionParams = { + message: 'message {test}', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { message: [] }, + }); + }); + + test('params validation fails when message is not valid', () => { + const actionParams = { + message: '', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { + message: ['Message is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx new file mode 100644 index 00000000000000..5d39cdb5ac387b --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import { ActionTypeModel, ValidationResult } from '../../../../types'; +import { SlackActionParams, SlackActionConnector } from '../types'; + +export function getActionType(): ActionTypeModel { + return { + id: '.slack', + iconClass: 'logoSlack', + selectMessage: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.selectMessageText', + { + defaultMessage: 'Send a message to a Slack channel or user.', + } + ), + actionTypeTitle: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.actionTypeTitle', + { + defaultMessage: 'Send to Slack', + } + ), + validateConnector: (action: SlackActionConnector): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + webhookUrl: new Array(), + }; + validationResult.errors = errors; + if (!action.secrets.webhookUrl) { + errors.webhookUrl.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.error.requiredWebhookUrlText', + { + defaultMessage: 'Webhook URL is required.', + } + ) + ); + } + return validationResult; + }, + validateParams: (actionParams: SlackActionParams): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + message: new Array(), + }; + validationResult.errors = errors; + if (!actionParams.message?.length) { + errors.message.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSlackMessageText', + { + defaultMessage: 'Message is required.', + } + ) + ); + } + return validationResult; + }, + actionConnectorFields: lazy(() => import('./slack_connectors')), + actionParamsFields: lazy(() => import('./slack_params')), + }; +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx new file mode 100644 index 00000000000000..7d7f6fc0869283 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl, nextTick } from 'test_utils/enzyme_helpers'; +import { act } from '@testing-library/react'; +import { SlackActionConnector } from '../types'; +import SlackActionFields from './slack_connectors'; +import { DocLinksStart } from 'kibana/public'; + +describe('SlackActionFields renders', () => { + test('all connector fields is rendered', async () => { + const actionConnector = { + secrets: { + webhookUrl: 'http:\\test', + }, + id: 'test', + actionTypeId: '.email', + name: 'email', + config: {}, + } as SlackActionConnector; + const deps = { + docLinks: { ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' } as DocLinksStart, + }; + const wrapper = mountWithIntl( + {}} + editActionSecrets={() => {}} + docLinks={deps!.docLinks} + /> + ); + + await act(async () => { + await nextTick(); + wrapper.update(); + }); + expect(wrapper.find('[data-test-subj="slackWebhookUrlInput"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="slackWebhookUrlInput"]') + .first() + .prop('value') + ).toBe('http:\\test'); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx new file mode 100644 index 00000000000000..ad3e76ad8ae6cb --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment } from 'react'; +import { EuiFieldText, EuiFormRow, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { ActionConnectorFieldsProps } from '../../../../types'; +import { SlackActionConnector } from '../types'; + +const SlackActionFields: React.FunctionComponent> = ({ action, editActionSecrets, errors, docLinks }) => { + const { webhookUrl } = action.secrets; + + return ( + + + + + } + error={errors.webhookUrl} + isInvalid={errors.webhookUrl.length > 0 && webhookUrl !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlTextFieldLabel', + { + defaultMessage: 'Webhook URL', + } + )} + > + 0 && webhookUrl !== undefined} + name="webhookUrl" + placeholder="Example: https://hooks.slack.com/services" + value={webhookUrl || ''} + data-test-subj="slackWebhookUrlInput" + onChange={e => { + editActionSecrets('webhookUrl', e.target.value); + }} + onBlur={() => { + if (!webhookUrl) { + editActionSecrets('webhookUrl', ''); + } + }} + /> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { SlackActionFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx new file mode 100644 index 00000000000000..4183aeb48dec76 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import SlackParamsFields from './slack_params'; + +describe('SlackParamsFields renders', () => { + test('all params fields is rendered', () => { + const actionParams = { + message: 'test message', + }; + const wrapper = mountWithIntl( + {}} + index={0} + /> + ); + expect(wrapper.find('[data-test-subj="slackMessageTextArea"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="slackMessageTextArea"]') + .first() + .prop('value') + ).toStrictEqual('test message'); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx new file mode 100644 index 00000000000000..42fefdd41ef673 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.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; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment, useEffect } from 'react'; +import { EuiTextArea, EuiFormRow } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ActionParamsProps } from '../../../../types'; +import { SlackActionParams } from '../types'; +import { AddMessageVariables } from '../../add_message_variables'; + +const SlackParamsFields: React.FunctionComponent> = ({ + actionParams, + editAction, + index, + errors, + messageVariables, + defaultMessage, +}) => { + const { message } = actionParams; + useEffect(() => { + if (!message && defaultMessage && defaultMessage.length > 0) { + editAction('message', defaultMessage, index); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const onSelectMessageVariable = (paramsProperty: string, variable: string) => { + editAction(paramsProperty, (message ?? '').concat(` {{${variable}}}`), index); + }; + + return ( + + 0 && message !== undefined} + label={i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.messageTextAreaFieldLabel', + { + defaultMessage: 'Message', + } + )} + labelAppend={ + + onSelectMessageVariable('message', variable) + } + paramsProperty="message" + /> + } + > + 0 && message !== undefined} + name="message" + value={message || ''} + data-test-subj="slackMessageTextArea" + onChange={e => { + editAction('message', e.target.value, index); + }} + onBlur={() => { + if (!message) { + editAction('message', '', index); + } + }} + /> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { SlackParamsFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.test.tsx deleted file mode 100644 index 7d0082708075ff..00000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.test.tsx +++ /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; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { FunctionComponent } from 'react'; -import { mountWithIntl } from 'test_utils/enzyme_helpers'; -import { TypeRegistry } from '../../type_registry'; -import { registerBuiltInActionTypes } from './index'; -import { ActionTypeModel, ActionParamsProps } from '../../../types'; -import { WebhookActionParams, WebhookActionConnector } from './types'; - -const ACTION_TYPE_ID = '.webhook'; -let actionTypeModel: ActionTypeModel; - -beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logoWebhook'); - }); -}); - -describe('webhook connector validation', () => { - test('connector validation succeeds when connector config is valid', () => { - const actionConnector = { - secrets: { - user: 'user', - password: 'pass', - }, - id: 'test', - actionTypeId: '.webhook', - name: 'webhook', - isPreconfigured: false, - config: { - method: 'PUT', - url: 'http:\\test', - headers: { 'content-type': 'text' }, - }, - } as WebhookActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - url: [], - method: [], - user: [], - password: [], - }, - }); - }); - - test('connector validation fails when connector config is not valid', () => { - const actionConnector = { - secrets: { - user: 'user', - }, - id: 'test', - actionTypeId: '.webhook', - name: 'webhook', - config: { - method: 'PUT', - }, - } as WebhookActionConnector; - - expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ - errors: { - url: ['URL is required.'], - method: [], - user: [], - password: ['Password is required.'], - }, - }); - }); -}); - -describe('webhook action params validation', () => { - test('action params validation succeeds when action params is valid', () => { - const actionParams = { - body: 'message {test}', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { body: [] }, - }); - }); -}); - -describe('WebhookActionConnectorFields renders', () => { - test('all connector fields is rendered', () => { - expect(actionTypeModel.actionConnectorFields).not.toBeNull(); - if (!actionTypeModel.actionConnectorFields) { - return; - } - const ConnectorFields = actionTypeModel.actionConnectorFields; - const actionConnector = { - secrets: { - user: 'user', - password: 'pass', - }, - id: 'test', - actionTypeId: '.webhook', - isPreconfigured: false, - name: 'webhook', - config: { - method: 'PUT', - url: 'http:\\test', - headers: { 'content-type': 'text' }, - }, - } as WebhookActionConnector; - const wrapper = mountWithIntl( - {}} - editActionSecrets={() => {}} - /> - ); - expect(wrapper.find('[data-test-subj="webhookViewHeadersSwitch"]').length > 0).toBeTruthy(); - wrapper - .find('[data-test-subj="webhookViewHeadersSwitch"]') - .first() - .simulate('click'); - expect(wrapper.find('[data-test-subj="webhookMethodSelect"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="webhookUrlText"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="webhookUserInput"]').length > 0).toBeTruthy(); - expect(wrapper.find('[data-test-subj="webhookPasswordInput"]').length > 0).toBeTruthy(); - }); -}); - -describe('WebhookParamsFields renders', () => { - test('all params fields is rendered', () => { - expect(actionTypeModel.actionParamsFields).not.toBeNull(); - if (!actionTypeModel.actionParamsFields) { - return; - } - const ParamsFields = actionTypeModel.actionParamsFields as FunctionComponent< - ActionParamsProps - >; - const actionParams = { - body: 'test message', - }; - const wrapper = mountWithIntl( - {}} - index={0} - /> - ); - expect(wrapper.find('[data-test-subj="webhookBodyEditor"]').length > 0).toBeTruthy(); - expect( - wrapper - .find('[data-test-subj="webhookBodyEditor"]') - .first() - .prop('value') - ).toStrictEqual('test message'); - expect(wrapper.find('[data-test-subj="bodyAddVariableButton"]').length > 0).toBeTruthy(); - }); - - test('params validation fails when body is not valid', () => { - const actionParams = { - body: '', - }; - - expect(actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - body: ['Body is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts new file mode 100644 index 00000000000000..c43cab26b072e9 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getActionType as getWebhookActionType } from './webhook'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx new file mode 100644 index 00000000000000..3413465d70d935 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { TypeRegistry } from '../../../type_registry'; +import { registerBuiltInActionTypes } from '.././index'; +import { ActionTypeModel } from '../../../../types'; +import { WebhookActionConnector } from '../types'; + +const ACTION_TYPE_ID = '.webhook'; +let actionTypeModel: ActionTypeModel; + +beforeAll(() => { + const actionTypeRegistry = new TypeRegistry(); + registerBuiltInActionTypes({ actionTypeRegistry }); + const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + if (getResult !== null) { + actionTypeModel = getResult; + } +}); + +describe('actionTypeRegistry.get() works', () => { + test('action type static data is as expected', () => { + expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); + expect(actionTypeModel.iconClass).toEqual('logoWebhook'); + }); +}); + +describe('webhook connector validation', () => { + test('connector validation succeeds when connector config is valid', () => { + const actionConnector = { + secrets: { + user: 'user', + password: 'pass', + }, + id: 'test', + actionTypeId: '.webhook', + name: 'webhook', + isPreconfigured: false, + config: { + method: 'PUT', + url: 'http:\\test', + headers: { 'content-type': 'text' }, + }, + } as WebhookActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + url: [], + method: [], + user: [], + password: [], + }, + }); + }); + + test('connector validation fails when connector config is not valid', () => { + const actionConnector = { + secrets: { + user: 'user', + }, + id: 'test', + actionTypeId: '.webhook', + name: 'webhook', + config: { + method: 'PUT', + }, + } as WebhookActionConnector; + + expect(actionTypeModel.validateConnector(actionConnector)).toEqual({ + errors: { + url: ['URL is required.'], + method: [], + user: [], + password: ['Password is required.'], + }, + }); + }); +}); + +describe('webhook action params validation', () => { + test('action params validation succeeds when action params is valid', () => { + const actionParams = { + body: 'message {test}', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { body: [] }, + }); + }); + + test('params validation fails when body is not valid', () => { + const actionParams = { + body: '', + }; + + expect(actionTypeModel.validateParams(actionParams)).toEqual({ + errors: { + body: ['Body is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx new file mode 100644 index 00000000000000..9f33e4491233a7 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import { ActionTypeModel, ValidationResult } from '../../../../types'; +import { WebhookActionParams, WebhookActionConnector } from '../types'; + +export function getActionType(): ActionTypeModel { + return { + id: '.webhook', + iconClass: 'logoWebhook', + selectMessage: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.selectMessageText', + { + defaultMessage: 'Send a request to a web service.', + } + ), + actionTypeTitle: i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.actionTypeTitle', + { + defaultMessage: 'Webhook data', + } + ), + validateConnector: (action: WebhookActionConnector): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + url: new Array(), + method: new Array(), + user: new Array(), + password: new Array(), + }; + validationResult.errors = errors; + if (!action.config.url) { + errors.url.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.error.requiredUrlText', + { + defaultMessage: 'URL is required.', + } + ) + ); + } + if (!action.config.method) { + errors.method.push( + i18n.translate( + 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText', + { + defaultMessage: 'Method is required.', + } + ) + ); + } + if (!action.secrets.user && action.secrets.password) { + errors.user.push( + i18n.translate( + 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredHostText', + { + defaultMessage: 'Username is required.', + } + ) + ); + } + if (!action.secrets.password && action.secrets.user) { + errors.password.push( + i18n.translate( + 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredPasswordText', + { + defaultMessage: 'Password is required.', + } + ) + ); + } + return validationResult; + }, + validateParams: (actionParams: WebhookActionParams): ValidationResult => { + const validationResult = { errors: {} }; + const errors = { + body: new Array(), + }; + validationResult.errors = errors; + if (!actionParams.body?.length) { + errors.body.push( + i18n.translate( + 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookBodyText', + { + defaultMessage: 'Body is required.', + } + ) + ); + } + return validationResult; + }, + actionConnectorFields: lazy(() => import('./webhook_connectors')), + actionParamsFields: lazy(() => import('./webhook_params')), + }; +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx new file mode 100644 index 00000000000000..842ec517853551 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import { WebhookActionConnector } from '../types'; +import WebhookActionConnectorFields from './webhook_connectors'; +import { DocLinksStart } from 'kibana/public'; + +describe('WebhookActionConnectorFields renders', () => { + test('all connector fields is rendered', () => { + const actionConnector = { + secrets: { + user: 'user', + password: 'pass', + }, + id: 'test', + actionTypeId: '.webhook', + isPreconfigured: false, + name: 'webhook', + config: { + method: 'PUT', + url: 'http:\\test', + headers: { 'content-type': 'text' }, + }, + } as WebhookActionConnector; + const wrapper = mountWithIntl( + {}} + editActionSecrets={() => {}} + docLinks={{ ELASTIC_WEBSITE_URL: '', DOC_LINK_VERSION: '' } as DocLinksStart} + /> + ); + expect(wrapper.find('[data-test-subj="webhookViewHeadersSwitch"]').length > 0).toBeTruthy(); + wrapper + .find('[data-test-subj="webhookViewHeadersSwitch"]') + .first() + .simulate('click'); + expect(wrapper.find('[data-test-subj="webhookMethodSelect"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="webhookUrlText"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="webhookUserInput"]').length > 0).toBeTruthy(); + expect(wrapper.find('[data-test-subj="webhookPasswordInput"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.tsx similarity index 71% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.tsx rename to x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.tsx index daa5a6caeabe9c..e163463602d9f2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.tsx @@ -19,112 +19,15 @@ import { EuiDescriptionListDescription, EuiDescriptionListTitle, EuiTitle, - EuiCodeEditor, EuiSwitch, EuiButtonEmpty, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { - ActionTypeModel, - ActionConnectorFieldsProps, - ValidationResult, - ActionParamsProps, -} from '../../../types'; -import { WebhookActionParams, WebhookActionConnector } from './types'; -import { AddMessageVariables } from '../add_message_variables'; +import { ActionConnectorFieldsProps } from '../../../../types'; +import { WebhookActionConnector } from '../types'; const HTTP_VERBS = ['post', 'put']; -export function getActionType(): ActionTypeModel { - return { - id: '.webhook', - iconClass: 'logoWebhook', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.selectMessageText', - { - defaultMessage: 'Send a request to a web service.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.actionTypeTitle', - { - defaultMessage: 'Webhook data', - } - ), - validateConnector: (action: WebhookActionConnector): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - url: new Array(), - method: new Array(), - user: new Array(), - password: new Array(), - }; - validationResult.errors = errors; - if (!action.config.url) { - errors.url.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.error.requiredUrlText', - { - defaultMessage: 'URL is required.', - } - ) - ); - } - if (!action.config.method) { - errors.method.push( - i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText', - { - defaultMessage: 'Method is required.', - } - ) - ); - } - if (!action.secrets.user && action.secrets.password) { - errors.user.push( - i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredHostText', - { - defaultMessage: 'Username is required.', - } - ) - ); - } - if (!action.secrets.password && action.secrets.user) { - errors.password.push( - i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredPasswordText', - { - defaultMessage: 'Password is required.', - } - ) - ); - } - return validationResult; - }, - validateParams: (actionParams: WebhookActionParams): ValidationResult => { - const validationResult = { errors: {} }; - const errors = { - body: new Array(), - }; - validationResult.errors = errors; - if (!actionParams.body?.length) { - errors.body.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookBodyText', - { - defaultMessage: 'Body is required.', - } - ) - ); - } - return validationResult; - }, - actionConnectorFields: WebhookActionConnectorFields, - actionParamsFields: WebhookParamsFields, - }; -} - const WebhookActionConnectorFields: React.FunctionComponent> = ({ action, editActionConfig, editActionSecrets, errors }) => { @@ -457,56 +360,5 @@ const WebhookActionConnectorFields: React.FunctionComponent> = ({ - actionParams, - editAction, - index, - messageVariables, - errors, -}) => { - const { body } = actionParams; - const onSelectMessageVariable = (paramsProperty: string, variable: string) => { - editAction(paramsProperty, (body ?? '').concat(` {{${variable}}}`), index); - }; - return ( - - 0 && body !== undefined} - fullWidth - error={errors.body} - labelAppend={ - onSelectMessageVariable('body', variable)} - paramsProperty="body" - /> - } - > - { - editAction('body', json, index); - }} - /> - - - ); -}; +// eslint-disable-next-line import/no-default-export +export { WebhookActionConnectorFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx new file mode 100644 index 00000000000000..5ca27a53083f95 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { mountWithIntl } from 'test_utils/enzyme_helpers'; +import WebhookParamsFields from './webhook_params'; + +describe('WebhookParamsFields renders', () => { + test('all params fields is rendered', () => { + const actionParams = { + body: 'test message', + }; + const wrapper = mountWithIntl( + {}} + index={0} + /> + ); + expect(wrapper.find('[data-test-subj="webhookBodyEditor"]').length > 0).toBeTruthy(); + expect( + wrapper + .find('[data-test-subj="webhookBodyEditor"]') + .first() + .prop('value') + ).toStrictEqual('test message'); + expect(wrapper.find('[data-test-subj="bodyAddVariableButton"]').length > 0).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx new file mode 100644 index 00000000000000..9e802b96e16be3 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.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; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { Fragment } from 'react'; +import { EuiFormRow, EuiCodeEditor } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ActionParamsProps } from '../../../../types'; +import { WebhookActionParams } from '../types'; +import { AddMessageVariables } from '../../add_message_variables'; + +const WebhookParamsFields: React.FunctionComponent> = ({ + actionParams, + editAction, + index, + messageVariables, + errors, +}) => { + const { body } = actionParams; + const onSelectMessageVariable = (paramsProperty: string, variable: string) => { + editAction(paramsProperty, (body ?? '').concat(` {{${variable}}}`), index); + }; + return ( + + 0 && body !== undefined} + fullWidth + error={errors.body} + labelAppend={ + onSelectMessageVariable('body', variable)} + paramsProperty="body" + /> + } + > + { + editAction('body', json, index); + }} + /> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { WebhookParamsFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/home.tsx b/x-pack/plugins/triggers_actions_ui/public/application/home.tsx index 4d0a9980f2231f..b5f3b63c58a93a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/home.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/home.tsx @@ -167,3 +167,6 @@ export const TriggersActionsUIHome: React.FunctionComponent ); }; + +// eslint-disable-next-line import/no-default-export +export { TriggersActionsUIHome as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_connector_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_connector_form.tsx index 6bb8a8f4e4c10a..06ddce39567a40 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_connector_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_connector_form.tsx @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment } from 'react'; +import React, { Fragment, Suspense } from 'react'; import { EuiForm, EuiCallOut, @@ -12,6 +12,9 @@ import { EuiSpacer, EuiFieldText, EuiFormRow, + EuiLoadingSpinner, + EuiFlexGroup, + EuiFlexItem, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -151,14 +154,24 @@ export const ActionConnectorForm = ({ {FieldsComponent !== null ? ( - + + + + + + } + > + + ) : null} ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx index 6935dda358d9c7..ae179f56f0c83a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/action_form.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, useState, useEffect } from 'react'; +import React, { Fragment, Suspense, useState, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { @@ -27,6 +27,7 @@ import { EuiCallOut, EuiHorizontalRule, EuiText, + EuiLoadingSpinner, } from '@elastic/eui'; import { HttpSetup, ToastsApi, ApplicationStart, DocLinksStart } from 'kibana/public'; import { loadActionTypes, loadAllActions as loadConnectors } from '../../lib/action_connector_api'; @@ -282,14 +283,24 @@ export const ActionForm = ({ {ParamsFieldsComponent ? ( - + + + + + + } + > + + ) : null} ) : ( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx index 9198607df7863e..0caa880c4df00f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_details/components/alert_details_route.tsx @@ -118,6 +118,6 @@ export async function getAlertData( } } -export const AlertDetailsRouteWithApi = withActionOperations( - withBulkAlertOperations(AlertDetailsRoute) -); +const AlertDetailsRouteWithApi = withActionOperations(withBulkAlertOperations(AlertDetailsRoute)); +// eslint-disable-next-line import/no-default-export +export { AlertDetailsRouteWithApi as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/type_registry.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/type_registry.test.ts index 93e61cf5b4f43e..62173a6196b98e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/type_registry.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/type_registry.test.ts @@ -23,7 +23,11 @@ const getTestAlertType = (id?: string, name?: string, iconClass?: string) => { }; }; -const getTestActionType = (id?: string, iconClass?: string, selectedMessage?: string) => { +const getTestActionType = ( + id?: string, + iconClass?: string, + selectedMessage?: string +): ActionTypeModel => { return { id: id || 'my-action-type', iconClass: iconClass || 'test', diff --git a/x-pack/plugins/triggers_actions_ui/public/types.ts b/x-pack/plugins/triggers_actions_ui/public/types.ts index 6f33bcb8b226d8..cc511434267cc2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/types.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import { HttpSetup, DocLinksStart } from 'kibana/public'; +import { ComponentType } from 'react'; import { ActionGroup } from '../../alerting/common'; import { ActionType } from '../../actions/common'; import { TypeRegistry } from './application/type_registry'; @@ -19,14 +20,16 @@ export { ActionType }; export type ActionTypeIndex = Record; export type AlertTypeIndex = Record; -export type ActionTypeRegistryContract = PublicMethodsOf>; +export type ActionTypeRegistryContract = PublicMethodsOf< + TypeRegistry> +>; export type AlertTypeRegistryContract = PublicMethodsOf>; export interface ActionConnectorFieldsProps { action: TActionConnector; editActionConfig: (property: string, value: any) => void; editActionSecrets: (property: string, value: any) => void; - errors: { [key: string]: string[] }; + errors: IErrorObject; docLinks: DocLinksStart; http?: HttpSetup; } @@ -35,7 +38,7 @@ export interface ActionParamsProps { actionParams: TParams; index: number; editAction: (property: string, value: any, index: number) => void; - errors: { [key: string]: string[] }; + errors: IErrorObject; messageVariables?: string[]; defaultMessage?: string; } @@ -45,15 +48,19 @@ export interface Pagination { size: number; } -export interface ActionTypeModel { +export interface ActionTypeModel { id: string; iconClass: string; selectMessage: string; actionTypeTitle?: string; validateConnector: (connector: any) => ValidationResult; validateParams: (actionParams: any) => ValidationResult; - actionConnectorFields: React.FunctionComponent | null; - actionParamsFields: any; + actionConnectorFields: React.LazyExoticComponent< + ComponentType> + > | null; + actionParamsFields: React.LazyExoticComponent< + ComponentType> + > | null; } export interface ValidationResult { From 398b6600458e7d8d2b7cd1657f920fd2980cc83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Thu, 7 May 2020 17:53:27 +0100 Subject: [PATCH 12/58] [Fix] Monitoring failing to start (#65516) --- .../monitoring/server/kibana_monitoring/bulk_uploader.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.js b/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.js index b90a9aa7d139ae..0722a80dc2c111 100644 --- a/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.js +++ b/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.js @@ -140,7 +140,7 @@ export class BulkUploader { async _fetchAndUpload(usageCollection) { const collectorsReady = await usageCollection.areAllCollectorsReady(); const hasUsageCollectors = usageCollection.some(usageCollection.isUsageCollector); - if (!collectorsReady) { + if (!collectorsReady || typeof this.kibanaStatusGetter !== 'function') { this._log.debug('Skipping bulk uploading because not all collectors are ready'); if (hasUsageCollectors) { this._lastFetchUsageTime = null; @@ -151,7 +151,7 @@ export class BulkUploader { const data = await usageCollection.bulkFetch(this._cluster.callAsInternalUser); const payload = this.toBulkUploadFormat(compact(data), usageCollection); - if (payload) { + if (payload && payload.length > 0) { try { this._log.debug(`Uploading bulk stats payload to the local cluster`); const result = await this._onPayload(payload); @@ -244,7 +244,7 @@ export class BulkUploader { */ toBulkUploadFormat(rawData, usageCollection) { if (rawData.length === 0) { - return; + return []; } // convert the raw data to a nested object by taking each payload through From e029e35a5be12ad206093f0ba0d2ef2d858cf38e Mon Sep 17 00:00:00 2001 From: Lee Drengenberg Date: Thu, 7 May 2020 17:14:26 +0000 Subject: [PATCH 13/58] remove navigate from createIndexPattern and pass insertTimstamp to browser.get() (#65507) --- test/functional/apps/discover/_discover_histogram.js | 2 +- test/functional/apps/getting_started/_shakespeare.js | 1 + test/functional/page_objects/common_page.ts | 4 ++-- test/functional/page_objects/settings_page.ts | 1 - x-pack/test/functional/apps/graph/graph.ts | 1 + .../test/functional/apps/security/doc_level_security_roles.js | 1 + 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/test/functional/apps/discover/_discover_histogram.js b/test/functional/apps/discover/_discover_histogram.js index 20e69ef8345c6f..0f63510dce431c 100644 --- a/test/functional/apps/discover/_discover_histogram.js +++ b/test/functional/apps/discover/_discover_histogram.js @@ -35,7 +35,7 @@ export default function({ getService, getPageObjects }) { describe('discover histogram', function describeIndexTests() { before(async function() { log.debug('load kibana index with default index pattern'); - await PageObjects.common.navigateToApp('home'); + await PageObjects.common.navigateToApp('settings'); await security.testUser.setRoles([ 'kibana_admin', 'test_logstash_reader', diff --git a/test/functional/apps/getting_started/_shakespeare.js b/test/functional/apps/getting_started/_shakespeare.js index 3a3d6b93e166bf..b0a572d9a54f99 100644 --- a/test/functional/apps/getting_started/_shakespeare.js +++ b/test/functional/apps/getting_started/_shakespeare.js @@ -58,6 +58,7 @@ export default function({ getService, getPageObjects }) { }); it('should create shakespeare index pattern', async function() { + await PageObjects.common.navigateToApp('settings'); log.debug('Create shakespeare index pattern'); await PageObjects.settings.createIndexPattern('shakespeare', null); const patternName = await PageObjects.settings.getIndexPageHeading(); diff --git a/test/functional/page_objects/common_page.ts b/test/functional/page_objects/common_page.ts index 93debdcc37f0ab..4a7570049ded73 100644 --- a/test/functional/page_objects/common_page.ts +++ b/test/functional/page_objects/common_page.ts @@ -111,7 +111,7 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo await browser.get(appUrl); } else { log.debug(`navigateToUrl ${appUrl}`); - await browser.get(appUrl); + await browser.get(appUrl, insertTimestamp); // accept alert if it pops up const alert = await browser.getAlert(); await alert?.accept(); @@ -242,7 +242,7 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo let lastUrl = await retry.try(async () => { // since we're using hash URLs, always reload first to force re-render log.debug('navigate to: ' + appUrl); - await browser.get(appUrl); + await browser.get(appUrl, insertTimestamp); // accept alert if it pops up const alert = await browser.getAlert(); await alert?.accept(); diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts index b7a6e10efd7dc1..8175361ffc8420 100644 --- a/test/functional/page_objects/settings_page.ts +++ b/test/functional/page_objects/settings_page.ts @@ -324,7 +324,6 @@ export function SettingsPageProvider({ getService, getPageObjects }: FtrProvider isStandardIndexPattern = true ) { await retry.try(async () => { - await this.navigateTo(); await PageObjects.header.waitUntilLoadingHasFinished(); await this.clickKibanaIndexPatterns(); await PageObjects.header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test/functional/apps/graph/graph.ts b/x-pack/test/functional/apps/graph/graph.ts index fcf7298c5577ae..d8214dc5ffefd8 100644 --- a/x-pack/test/functional/apps/graph/graph.ts +++ b/x-pack/test/functional/apps/graph/graph.ts @@ -19,6 +19,7 @@ export default function({ getService, getPageObjects }: FtrProviderContext) { log.debug('load graph/secrepo data'); await esArchiver.loadIfNeeded('graph/secrepo'); await esArchiver.load('empty_kibana'); + await PageObjects.common.navigateToApp('settings'); log.debug('create secrepo index pattern'); await PageObjects.settings.createIndexPattern('secrepo', '@timestamp'); log.debug('navigateTo graph'); diff --git a/x-pack/test/functional/apps/security/doc_level_security_roles.js b/x-pack/test/functional/apps/security/doc_level_security_roles.js index 480fa6599e0365..47a882a33eed8f 100644 --- a/x-pack/test/functional/apps/security/doc_level_security_roles.js +++ b/x-pack/test/functional/apps/security/doc_level_security_roles.js @@ -21,6 +21,7 @@ export default function({ getService, getPageObjects }) { await esArchiver.loadIfNeeded('security/dlstest'); await browser.setWindowSize(1600, 1000); + await PageObjects.common.navigateToApp('settings'); await PageObjects.settings.createIndexPattern('dlstest', null); await PageObjects.settings.navigateTo(); From fe26a79608b54e98e5e14dea323a17e4d1fdbf2f Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 7 May 2020 11:18:27 -0600 Subject: [PATCH 14/58] [SIEM][Detection Engine] Moves functional tests from legacyEs to Es and improves types (#65709) Moves functional tests from "legacyEs" to "Es" and improves types - [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios --- .../tests/add_prepackaged_rules.ts | 2 +- .../security_and_spaces/tests/create_rules.ts | 2 +- .../tests/create_rules_bulk.ts | 2 +- .../security_and_spaces/tests/delete_rules.ts | 2 +- .../tests/delete_rules_bulk.ts | 2 +- .../security_and_spaces/tests/export_rules.ts | 2 +- .../security_and_spaces/tests/find_rules.ts | 2 +- .../tests/find_statuses.ts | 2 +- .../tests/get_prepackaged_rules_status.ts | 2 +- .../security_and_spaces/tests/import_rules.ts | 2 +- .../security_and_spaces/tests/patch_rules.ts | 2 +- .../tests/patch_rules_bulk.ts | 2 +- .../security_and_spaces/tests/read_rules.ts | 2 +- .../security_and_spaces/tests/update_rules.ts | 2 +- .../tests/update_rules_bulk.ts | 2 +- .../security_and_spaces/tests/utils.ts | 25 +++++++++++++------ 16 files changed, 32 insertions(+), 23 deletions(-) diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_prepackaged_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_prepackaged_rules.ts index e787a3594dfe62..602b9929485e0e 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_prepackaged_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/add_prepackaged_rules.ts @@ -13,7 +13,7 @@ import { createSignalsIndex, deleteAllAlerts, deleteSignalsIndex } from './utils // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('add_prepackaged_rules', () => { describe('validation errors', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts index 46645a9b5a9448..43630d81e64ea6 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules.ts @@ -25,7 +25,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('create_rules', () => { describe('validation errors', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts index 117300be417d50..7d406777e23f00 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_rules_bulk.ts @@ -23,7 +23,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('create_rules_bulk', () => { describe('validation errors', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts index fb701681419d8b..4902060f2c6eee 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules.ts @@ -23,7 +23,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('delete_rules', () => { describe('deleting rules', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts index ac58ba4c77e4e5..8ddb5f06560192 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/delete_rules_bulk.ts @@ -23,7 +23,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('delete_rules_bulk', () => { describe('deleting rules bulk using DELETE', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/export_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/export_rules.ts index 51bdb9e45dc0c3..ed1f92457e7824 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/export_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/export_rules.ts @@ -21,7 +21,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('export_rules', () => { describe('exporting rules', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_rules.ts index feb4ecd125f7eb..c0356f877377a4 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_rules.ts @@ -22,7 +22,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('find_rules', () => { beforeEach(async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts index 44847d5c8146c4..b4c9632320271d 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/find_statuses.ts @@ -19,7 +19,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('find_statuses', () => { beforeEach(async () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_prepackaged_rules_status.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_prepackaged_rules_status.ts index e2dce77c1d70a1..a366c04330e9b1 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_prepackaged_rules_status.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/get_prepackaged_rules_status.ts @@ -16,7 +16,7 @@ import { createSignalsIndex, deleteAllAlerts, deleteSignalsIndex, getSimpleRule // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('get_prepackaged_rules_status', () => { describe('getting prepackaged rules status', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts index 868dafedc6849f..ac0f51abe1c108 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/import_rules.ts @@ -22,7 +22,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('import_rules', () => { describe('importing rules without an index', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules.ts index c3ecf79e58955c..295bd456eeebff 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules.ts @@ -22,7 +22,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('patch_rules', () => { describe('patch rules', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules_bulk.ts index 8515d1cf404ea0..14c9ca76f6aac1 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/patch_rules_bulk.ts @@ -22,7 +22,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('patch_rules_bulk', () => { describe('patch rules bulk', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_rules.ts index 4d7449dae2dbd2..1ae6871348bbb1 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/read_rules.ts @@ -23,7 +23,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('read_rules', () => { describe('reading rules', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules.ts index 4b81b7d4304b28..42501c005d9942 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules.ts @@ -22,7 +22,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('update_rules', () => { describe('update rules', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules_bulk.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules_bulk.ts index 760e17ae1752e4..b7f998d4043f7f 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules_bulk.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/update_rules_bulk.ts @@ -22,7 +22,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('update_rules_bulk', () => { describe('update rules bulk', () => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/utils.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/utils.ts index e508cf1aaa2e03..5eabecf96f3e6f 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/utils.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/utils.ts @@ -4,6 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Client } from '@elastic/elasticsearch'; +import { SuperTest } from 'supertest'; +import supertestAsPromised from 'supertest-as-promised'; import { OutputRuleAlertRest } from '../../../../plugins/siem/server/lib/detection_engine/types'; import { DETECTION_ENGINE_INDEX_URL } from '../../../../plugins/siem/common/constants'; @@ -187,12 +190,13 @@ export const getSimpleMlRuleOutput = (ruleId = 'rule-1'): Partial => { +export const deleteAllAlerts = async (es: Client): Promise => { await es.deleteByQuery({ index: '.kibana', q: 'type:alert', - waitForCompletion: true, - refresh: 'wait_for', + wait_for_completion: true, + refresh: true, + body: {}, }); }; @@ -200,12 +204,13 @@ export const deleteAllAlerts = async (es: any): Promise => { * Remove all rules statuses from the .kibana index * @param es The ElasticSearch handle */ -export const deleteAllRulesStatuses = async (es: any): Promise => { +export const deleteAllRulesStatuses = async (es: Client): Promise => { await es.deleteByQuery({ index: '.kibana', q: 'type:siem-detection-engine-rule-status', - waitForCompletion: true, - refresh: 'wait_for', + wait_for_completion: true, + refresh: true, + body: {}, }); }; @@ -213,7 +218,9 @@ export const deleteAllRulesStatuses = async (es: any): Promise => { * Creates the signals index for use inside of beforeEach blocks of tests * @param supertest The supertest client library */ -export const createSignalsIndex = async (supertest: any): Promise => { +export const createSignalsIndex = async ( + supertest: SuperTest +): Promise => { await supertest .post(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') @@ -225,7 +232,9 @@ export const createSignalsIndex = async (supertest: any): Promise => { * Deletes the signals index for use inside of afterEach blocks of tests * @param supertest The supertest client library */ -export const deleteSignalsIndex = async (supertest: any): Promise => { +export const deleteSignalsIndex = async ( + supertest: SuperTest +): Promise => { await supertest .delete(DETECTION_ENGINE_INDEX_URL) .set('kbn-xsrf', 'true') From 7d0ac59bc9824f817ad35d6083e07a4601dd48d3 Mon Sep 17 00:00:00 2001 From: Aaron Caldwell Date: Thu, 7 May 2020 11:22:00 -0600 Subject: [PATCH 15/58] Migrate Region Maps to NP (#64272) --- .i18nrc.json | 2 +- src/legacy/core_plugins/region_map/index.ts | 49 ---------------- src/plugins/maps_legacy/config.ts | 26 +-------- src/plugins/maps_legacy/public/index.ts | 1 + src/plugins/region_map/config.ts | 46 +++++++++++++++ src/plugins/region_map/kibana.json | 14 +++++ .../region_map/package.json | 0 .../__snapshots__/region_map_fn.test.js.snap | 0 .../public/__tests__/aftercolorchange.png | Bin .../public/__tests__/afterdatachange.png | Bin .../__tests__/afterdatachangeandresize.png | Bin .../public/__tests__/afterresize.png | Bin .../public/__tests__/changestartup.png | Bin .../region_map/public/__tests__/initial.png | Bin .../__tests__/region_map_visualization.js | 22 +++---- .../region_map/public/__tests__/toiso3.png | Bin .../region_map/public/__tests__/world.json | 0 .../region_map/public/choropleth_layer.js | 8 +-- .../public/components/region_map_options.tsx | 14 +---- .../region_map/public/index.ts | 7 ++- .../region_map/public/kibana_services.ts | 30 ++++++++++ .../region_map/public/plugin.ts | 54 +++++++++++++----- .../region_map/public/region_map_fn.js | 0 .../region_map/public/region_map_fn.test.js | 4 +- .../region_map/public/region_map_type.js | 6 +- .../public/region_map_visualization.js | 13 ++--- .../region_map/public/tooltip_formatter.js | 0 .../region_map/public/util.ts | 4 +- .../region_map/server/index.ts} | 25 ++++---- .../test_suites/run_pipeline/basic.ts | 9 ++- 30 files changed, 185 insertions(+), 149 deletions(-) delete mode 100644 src/legacy/core_plugins/region_map/index.ts create mode 100644 src/plugins/region_map/config.ts create mode 100644 src/plugins/region_map/kibana.json rename src/{legacy/core_plugins => plugins}/region_map/package.json (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__snapshots__/region_map_fn.test.js.snap (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/aftercolorchange.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/afterdatachange.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/afterdatachangeandresize.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/afterresize.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/changestartup.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/initial.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/region_map_visualization.js (92%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/toiso3.png (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/__tests__/world.json (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/choropleth_layer.js (98%) rename src/{legacy/core_plugins => plugins}/region_map/public/components/region_map_options.tsx (95%) rename src/{legacy/core_plugins => plugins}/region_map/public/index.ts (86%) create mode 100644 src/plugins/region_map/public/kibana_services.ts rename src/{legacy/core_plugins => plugins}/region_map/public/plugin.ts (56%) rename src/{legacy/core_plugins => plugins}/region_map/public/region_map_fn.js (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/region_map_fn.test.js (92%) rename src/{legacy/core_plugins => plugins}/region_map/public/region_map_type.js (95%) rename src/{legacy/core_plugins => plugins}/region_map/public/region_map_visualization.js (93%) rename src/{legacy/core_plugins => plugins}/region_map/public/tooltip_formatter.js (100%) rename src/{legacy/core_plugins => plugins}/region_map/public/util.ts (86%) rename src/{legacy/core_plugins/region_map/public/legacy.ts => plugins/region_map/server/index.ts} (57%) diff --git a/.i18nrc.json b/.i18nrc.json index 3b2e628f7226f8..034b9da799d3ec 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -34,7 +34,7 @@ "kibana_utils": "src/plugins/kibana_utils", "navigation": "src/plugins/navigation", "newsfeed": "src/plugins/newsfeed", - "regionMap": "src/legacy/core_plugins/region_map", + "regionMap": "src/plugins/region_map", "savedObjects": "src/plugins/saved_objects", "savedObjectsManagement": "src/plugins/saved_objects_management", "server": "src/legacy/server", diff --git a/src/legacy/core_plugins/region_map/index.ts b/src/legacy/core_plugins/region_map/index.ts deleted file mode 100644 index 8c059314786bcc..00000000000000 --- a/src/legacy/core_plugins/region_map/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { resolve } from 'path'; -import { Legacy } from 'kibana'; - -import { LegacyPluginApi, LegacyPluginInitializer } from '../../../../src/legacy/types'; - -const regionMapPluginInitializer: LegacyPluginInitializer = ({ Plugin }: LegacyPluginApi) => - new Plugin({ - id: 'region_map', - require: ['kibana', 'elasticsearch'], - publicDir: resolve(__dirname, 'public'), - uiExports: { - hacks: [resolve(__dirname, 'public/legacy')], - injectDefaultVars(server) { - const { regionmap } = server.config().get('map'); - - return { - regionmap, - }; - }, - }, - init: (server: Legacy.Server) => ({}), - config(Joi: any) { - return Joi.object({ - enabled: Joi.boolean().default(true), - }).default(); - }, - } as Legacy.PluginSpecOptions); - -// eslint-disable-next-line import/no-default-export -export default regionMapPluginInitializer; diff --git a/src/plugins/maps_legacy/config.ts b/src/plugins/maps_legacy/config.ts index 13a0ad6b393a31..67e46d22705835 100644 --- a/src/plugins/maps_legacy/config.ts +++ b/src/plugins/maps_legacy/config.ts @@ -19,31 +19,7 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { configSchema as tilemapSchema } from '../tile_map/config'; - -// TODO: Pull this portion from region_map -export const regionmapSchema = schema.object({ - includeElasticMapsService: schema.boolean({ defaultValue: true }), - layers: schema.arrayOf( - schema.object({ - url: schema.string(), - format: schema.object({ - type: schema.string({ defaultValue: 'geojson' }), - }), - meta: schema.object({ - feature_collection_path: schema.string({ defaultValue: 'data' }), - }), - attribution: schema.string(), - name: schema.string(), - fields: schema.arrayOf( - schema.object({ - name: schema.string(), - description: schema.string(), - }) - ), - }), - { defaultValue: [] } - ), -}); +import { configSchema as regionmapSchema } from '../region_map/config'; export const configSchema = schema.object({ includeElasticMapsService: schema.boolean({ defaultValue: true }), diff --git a/src/plugins/maps_legacy/public/index.ts b/src/plugins/maps_legacy/public/index.ts index 3fe377fbdc41fb..a7f5427909334a 100644 --- a/src/plugins/maps_legacy/public/index.ts +++ b/src/plugins/maps_legacy/public/index.ts @@ -45,6 +45,7 @@ import { import { mapTooltipProvider } from './tooltip_provider'; export interface MapsLegacyConfigType { + regionmap: any; emsTileLayerId: string; includeElasticMapsService: boolean; proxyElasticMapsServiceInMaps: boolean; diff --git a/src/plugins/region_map/config.ts b/src/plugins/region_map/config.ts new file mode 100644 index 00000000000000..a721a76ca0a829 --- /dev/null +++ b/src/plugins/region_map/config.ts @@ -0,0 +1,46 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema, TypeOf } from '@kbn/config-schema'; + +export const configSchema = schema.object({ + includeElasticMapsService: schema.boolean({ defaultValue: true }), + layers: schema.arrayOf( + schema.object({ + url: schema.string(), + format: schema.object({ + type: schema.string({ defaultValue: 'geojson' }), + }), + meta: schema.object({ + feature_collection_path: schema.string({ defaultValue: 'data' }), + }), + attribution: schema.string(), + name: schema.string(), + fields: schema.arrayOf( + schema.object({ + name: schema.string(), + description: schema.string(), + }) + ), + }), + { defaultValue: [] } + ), +}); + +export type ConfigSchema = TypeOf; diff --git a/src/plugins/region_map/kibana.json b/src/plugins/region_map/kibana.json new file mode 100644 index 00000000000000..3a6f64e92bcba6 --- /dev/null +++ b/src/plugins/region_map/kibana.json @@ -0,0 +1,14 @@ +{ + "id": "regionMap", + "version": "8.0.0", + "kibanaVersion": "kibana", + "configPath": ["map", "regionmap"], + "ui": true, + "server": true, + "requiredPlugins": [ + "visualizations", + "expressions", + "mapsLegacy", + "data" + ] +} diff --git a/src/legacy/core_plugins/region_map/package.json b/src/plugins/region_map/package.json similarity index 100% rename from src/legacy/core_plugins/region_map/package.json rename to src/plugins/region_map/package.json diff --git a/src/legacy/core_plugins/region_map/public/__snapshots__/region_map_fn.test.js.snap b/src/plugins/region_map/public/__snapshots__/region_map_fn.test.js.snap similarity index 100% rename from src/legacy/core_plugins/region_map/public/__snapshots__/region_map_fn.test.js.snap rename to src/plugins/region_map/public/__snapshots__/region_map_fn.test.js.snap diff --git a/src/legacy/core_plugins/region_map/public/__tests__/aftercolorchange.png b/src/plugins/region_map/public/__tests__/aftercolorchange.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/aftercolorchange.png rename to src/plugins/region_map/public/__tests__/aftercolorchange.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/afterdatachange.png b/src/plugins/region_map/public/__tests__/afterdatachange.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/afterdatachange.png rename to src/plugins/region_map/public/__tests__/afterdatachange.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/afterdatachangeandresize.png b/src/plugins/region_map/public/__tests__/afterdatachangeandresize.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/afterdatachangeandresize.png rename to src/plugins/region_map/public/__tests__/afterdatachangeandresize.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/afterresize.png b/src/plugins/region_map/public/__tests__/afterresize.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/afterresize.png rename to src/plugins/region_map/public/__tests__/afterresize.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/changestartup.png b/src/plugins/region_map/public/__tests__/changestartup.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/changestartup.png rename to src/plugins/region_map/public/__tests__/changestartup.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/initial.png b/src/plugins/region_map/public/__tests__/initial.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/initial.png rename to src/plugins/region_map/public/__tests__/initial.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js b/src/plugins/region_map/public/__tests__/region_map_visualization.js similarity index 92% rename from src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js rename to src/plugins/region_map/public/__tests__/region_map_visualization.js index 7271f39debb39e..cefef98fae8148 100644 --- a/src/legacy/core_plugins/region_map/public/__tests__/region_map_visualization.js +++ b/src/plugins/region_map/public/__tests__/region_map_visualization.js @@ -25,17 +25,17 @@ import ChoroplethLayer from '../choropleth_layer'; import { ImageComparator } from 'test_utils/image_comparator'; import worldJson from './world.json'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_CATALOGUE from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json'; +import EMS_CATALOGUE from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_FILES from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json'; +import EMS_FILES from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_files.json'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_TILES from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json'; +import EMS_TILES from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright'; +import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated'; +import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_DARK_MAP from '../../../../../plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark'; +import EMS_STYLE_DARK_MAP from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark'; import initialPng from './initial.png'; import toiso3Png from './toiso3.png'; @@ -48,14 +48,14 @@ import changestartupPng from './changestartup.png'; import { createRegionMapVisualization } from '../region_map_visualization'; import { createRegionMapTypeDefinition } from '../region_map_type'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ExprVis } from '../../../../../plugins/visualizations/public/expressions/vis'; +import { ExprVis } from '../../../visualizations/public/expressions/vis'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { BaseVisType } from '../../../../../plugins/visualizations/public/vis_types/base_vis_type'; +import { BaseVisType } from '../../../visualizations/public/vis_types/base_vis_type'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { setInjectedVarFunc } from '../../../../../plugins/maps_legacy/public/kibana_services'; +import { setInjectedVarFunc } from '../../../maps_legacy/public/kibana_services'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ServiceSettings } from '../../../../../plugins/maps_legacy/public/map/service_settings'; -import { getBaseMapsVis } from '../../../../../plugins/maps_legacy/public'; +import { ServiceSettings } from '../../../maps_legacy/public/map/service_settings'; +import { getBaseMapsVis } from '../../../maps_legacy/public'; const THRESHOLD = 0.45; const PIXEL_DIFF = 96; diff --git a/src/legacy/core_plugins/region_map/public/__tests__/toiso3.png b/src/plugins/region_map/public/__tests__/toiso3.png similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/toiso3.png rename to src/plugins/region_map/public/__tests__/toiso3.png diff --git a/src/legacy/core_plugins/region_map/public/__tests__/world.json b/src/plugins/region_map/public/__tests__/world.json similarity index 100% rename from src/legacy/core_plugins/region_map/public/__tests__/world.json rename to src/plugins/region_map/public/__tests__/world.json diff --git a/src/legacy/core_plugins/region_map/public/choropleth_layer.js b/src/plugins/region_map/public/choropleth_layer.js similarity index 98% rename from src/legacy/core_plugins/region_map/public/choropleth_layer.js rename to src/plugins/region_map/public/choropleth_layer.js index f8c48958a1b9bc..ddaf2db257fbab 100644 --- a/src/legacy/core_plugins/region_map/public/choropleth_layer.js +++ b/src/plugins/region_map/public/choropleth_layer.js @@ -22,9 +22,9 @@ import _ from 'lodash'; import d3 from 'd3'; import { i18n } from '@kbn/i18n'; import * as topojson from 'topojson-client'; -import { toastNotifications } from 'ui/notify'; -import { colorUtil, KibanaMapLayer } from '../../../../plugins/maps_legacy/public'; -import { truncatedColorMaps } from '../../../../plugins/charts/public'; +import { getNotifications } from './kibana_services'; +import { colorUtil, KibanaMapLayer } from '../../maps_legacy/public'; +import { truncatedColorMaps } from '../../charts/public'; const EMPTY_STYLE = { weight: 1, @@ -182,7 +182,7 @@ CORS configuration of the server permits requests from the Kibana application on ); } - toastNotifications.addDanger({ + getNotifications().toasts.addDanger({ title: i18n.translate( 'regionMap.choroplethLayer.downloadingVectorDataErrorMessageTitle', { diff --git a/src/legacy/core_plugins/region_map/public/components/region_map_options.tsx b/src/plugins/region_map/public/components/region_map_options.tsx similarity index 95% rename from src/legacy/core_plugins/region_map/public/components/region_map_options.tsx rename to src/plugins/region_map/public/components/region_map_options.tsx index 5604067433f136..9a6987b9815392 100644 --- a/src/legacy/core_plugins/region_map/public/components/region_map_options.tsx +++ b/src/plugins/region_map/public/components/region_map_options.tsx @@ -22,17 +22,9 @@ import { EuiIcon, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elast import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { VisOptionsProps } from 'src/plugins/vis_default_editor/public'; -import { - FileLayerField, - VectorLayer, - IServiceSettings, -} from '../../../../../plugins/maps_legacy/public'; -import { - NumberInputOption, - SelectOption, - SwitchOption, -} from '../../../../../plugins/charts/public'; -import { RegionMapVisParams, WmsOptions } from '../../../../../plugins/maps_legacy/public'; +import { FileLayerField, VectorLayer, IServiceSettings } from '../../../maps_legacy/public'; +import { NumberInputOption, SelectOption, SwitchOption } from '../../../charts/public'; +import { RegionMapVisParams, WmsOptions } from '../../../maps_legacy/public'; const mapLayerForOption = ({ layerId, name }: VectorLayer) => ({ text: name, diff --git a/src/legacy/core_plugins/region_map/public/index.ts b/src/plugins/region_map/public/index.ts similarity index 86% rename from src/legacy/core_plugins/region_map/public/index.ts rename to src/plugins/region_map/public/index.ts index a29f5aa2470269..3f920ad16683a7 100644 --- a/src/legacy/core_plugins/region_map/public/index.ts +++ b/src/plugins/region_map/public/index.ts @@ -17,9 +17,14 @@ * under the License. */ -import { PluginInitializerContext } from '../../../../core/public'; +import { PluginInitializerContext } from 'kibana/public'; import { RegionMapPlugin as Plugin } from './plugin'; +export interface RegionMapsConfigType { + includeElasticMapsService: boolean; + layers: any[]; +} + export function plugin(initializerContext: PluginInitializerContext) { return new Plugin(initializerContext); } diff --git a/src/plugins/region_map/public/kibana_services.ts b/src/plugins/region_map/public/kibana_services.ts new file mode 100644 index 00000000000000..1ef58c69c5bef4 --- /dev/null +++ b/src/plugins/region_map/public/kibana_services.ts @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { NotificationsStart } from 'kibana/public'; +import { createGetterSetter } from '../../kibana_utils/public'; +import { DataPublicPluginStart } from '../../data/public'; + +export const [getFormatService, setFormatService] = createGetterSetter< + DataPublicPluginStart['fieldFormats'] +>('data.fieldFormats'); + +export const [getNotifications, setNotifications] = createGetterSetter( + 'Notifications' +); diff --git a/src/legacy/core_plugins/region_map/public/plugin.ts b/src/plugins/region_map/public/plugin.ts similarity index 56% rename from src/legacy/core_plugins/region_map/public/plugin.ts rename to src/plugins/region_map/public/plugin.ts index 08a73517dc13b3..09a13fbe9774e7 100644 --- a/src/legacy/core_plugins/region_map/public/plugin.ts +++ b/src/plugins/region_map/public/plugin.ts @@ -22,18 +22,19 @@ import { Plugin, PluginInitializerContext, IUiSettingsClient, -} from '../../../../core/public'; -import { Plugin as ExpressionsPublicPlugin } from '../../../../plugins/expressions/public'; -import { VisualizationsSetup } from '../../../../plugins/visualizations/public'; + NotificationsStart, +} from 'kibana/public'; +import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; +import { VisualizationsSetup } from '../../visualizations/public'; // @ts-ignore import { createRegionMapFn } from './region_map_fn'; // @ts-ignore import { createRegionMapTypeDefinition } from './region_map_type'; -import { - getBaseMapsVis, - IServiceSettings, - MapsLegacyPluginSetup, -} from '../../../../plugins/maps_legacy/public'; +import { getBaseMapsVis, IServiceSettings, MapsLegacyPluginSetup } from '../../maps_legacy/public'; +import { setFormatService, setNotifications } from './kibana_services'; +import { DataPublicPluginStart } from '../../data/public'; +import { RegionMapsConfigType } from './index'; +import { ConfigSchema } from '../../maps_legacy/config'; /** @private */ interface RegionMapVisualizationDependencies { @@ -50,27 +51,46 @@ export interface RegionMapPluginSetupDependencies { mapsLegacy: MapsLegacyPluginSetup; } +/** @internal */ +export interface RegionMapPluginStartDependencies { + data: DataPublicPluginStart; + notifications: NotificationsStart; +} + /** @internal */ export interface RegionMapsConfig { includeElasticMapsService: boolean; layers: any[]; } +export interface RegionMapPluginSetup { + config: any; +} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface RegionMapPluginStart {} + /** @internal */ -export class RegionMapPlugin implements Plugin, void> { - initializerContext: PluginInitializerContext; +export class RegionMapPlugin implements Plugin { + readonly _initializerContext: PluginInitializerContext; constructor(initializerContext: PluginInitializerContext) { - this.initializerContext = initializerContext; + this._initializerContext = initializerContext; } public async setup( core: CoreSetup, { expressions, visualizations, mapsLegacy }: RegionMapPluginSetupDependencies ) { + const config = { + ...this._initializerContext.config.get(), + // The maps legacy plugin updates the regionmap config directly in service_settings, + // future work on how configurations across the different plugins are organized would + // ideally constrain regionmap config updates to occur only from this plugin + ...mapsLegacy.config.regionmap, + }; const visualizationDependencies: Readonly = { uiSettings: core.uiSettings, - regionmapsConfig: core.injectedMetadata.getInjectedVar('regionmap') as RegionMapsConfig, + regionmapsConfig: config as RegionMapsConfig, serviceSettings: mapsLegacy.serviceSettings, BaseMapsVisualization: getBaseMapsVis(core, mapsLegacy.serviceSettings), }; @@ -80,9 +100,15 @@ export class RegionMapPlugin implements Plugin, void> { visualizations.createBaseVisualization( createRegionMapTypeDefinition(visualizationDependencies) ); + + return { + config, + }; } - public start(core: CoreStart) { - // nothing to do here yet + // @ts-ignore + public start(core: CoreStart, { data }: RegionMapPluginStartDependencies) { + setFormatService(data.fieldFormats); + setNotifications(core.notifications); } } diff --git a/src/legacy/core_plugins/region_map/public/region_map_fn.js b/src/plugins/region_map/public/region_map_fn.js similarity index 100% rename from src/legacy/core_plugins/region_map/public/region_map_fn.js rename to src/plugins/region_map/public/region_map_fn.js diff --git a/src/legacy/core_plugins/region_map/public/region_map_fn.test.js b/src/plugins/region_map/public/region_map_fn.test.js similarity index 92% rename from src/legacy/core_plugins/region_map/public/region_map_fn.test.js rename to src/plugins/region_map/public/region_map_fn.test.js index 07b4e33b85e279..684cc5e897df4e 100644 --- a/src/legacy/core_plugins/region_map/public/region_map_fn.test.js +++ b/src/plugins/region_map/public/region_map_fn.test.js @@ -18,11 +18,9 @@ */ // eslint-disable-next-line -import { functionWrapper } from '../../../../plugins/expressions/common/expression_functions/specs/tests/utils'; +import { functionWrapper } from '../../expressions/common/expression_functions/specs/tests/utils'; import { createRegionMapFn } from './region_map_fn'; -jest.mock('ui/new_platform'); - describe('interpreter/functions#regionmap', () => { const fn = functionWrapper(createRegionMapFn()); const context = { diff --git a/src/legacy/core_plugins/region_map/public/region_map_type.js b/src/plugins/region_map/public/region_map_type.js similarity index 95% rename from src/legacy/core_plugins/region_map/public/region_map_type.js rename to src/plugins/region_map/public/region_map_type.js index b7ed14ed3706eb..d29360a9589ab5 100644 --- a/src/legacy/core_plugins/region_map/public/region_map_type.js +++ b/src/plugins/region_map/public/region_map_type.js @@ -21,9 +21,9 @@ import { i18n } from '@kbn/i18n'; import { mapToLayerWithId } from './util'; import { createRegionMapVisualization } from './region_map_visualization'; import { RegionMapOptions } from './components/region_map_options'; -import { truncatedColorSchemas } from '../../../../plugins/charts/public'; -import { Schemas } from '../../../../plugins/vis_default_editor/public'; -import { ORIGIN } from '../../../../plugins/maps_legacy/public'; +import { truncatedColorSchemas } from '../../charts/public'; +import { Schemas } from '../../vis_default_editor/public'; +import { ORIGIN } from '../../maps_legacy/public'; export function createRegionMapTypeDefinition(dependencies) { const { uiSettings, regionmapsConfig, serviceSettings } = dependencies; diff --git a/src/legacy/core_plugins/region_map/public/region_map_visualization.js b/src/plugins/region_map/public/region_map_visualization.js similarity index 93% rename from src/legacy/core_plugins/region_map/public/region_map_visualization.js rename to src/plugins/region_map/public/region_map_visualization.js index 5dbc1ecad277f1..ed6a3ed2c10c8b 100644 --- a/src/legacy/core_plugins/region_map/public/region_map_visualization.js +++ b/src/plugins/region_map/public/region_map_visualization.js @@ -19,11 +19,10 @@ import { i18n } from '@kbn/i18n'; import ChoroplethLayer from './choropleth_layer'; -import { getFormat } from 'ui/visualize/loader/pipeline_helpers/utilities'; -import { toastNotifications } from 'ui/notify'; -import { truncatedColorMaps } from '../../../../plugins/charts/public'; +import { getFormatService, getNotifications } from './kibana_services'; +import { truncatedColorMaps } from '../../charts/public'; import { tooltipFormatter } from './tooltip_formatter'; -import { mapTooltipProvider } from '../../../../plugins/maps_legacy/public'; +import { mapTooltipProvider } from '../../maps_legacy/public'; export function createRegionMapVisualization({ serviceSettings, @@ -75,7 +74,7 @@ export function createRegionMapVisualization({ results ); - const metricFieldFormatter = getFormat(this._params.metric.format); + const metricFieldFormatter = getFormatService().deserialize(this._params.metric.format); this._choroplethLayer.setMetrics(results, metricFieldFormatter, valueColumn.name); if (termColumn && valueColumn) { @@ -108,7 +107,7 @@ export function createRegionMapVisualization({ this._params.showAllShapes ); - const metricFieldFormatter = getFormat(this._params.metric.format); + const metricFieldFormatter = getFormatService().deserialize(this._params.metric.format); this._choroplethLayer.setJoinField(visParams.selectedJoinField.name); this._choroplethLayer.setColorRamp(truncatedColorMaps[visParams.colorSchema].value); @@ -177,7 +176,7 @@ export function createRegionMapVisualization({ const shouldShowWarning = this._params.isDisplayWarning && uiSettings.get('visualization:regionmap:showWarnings'); if (event.mismatches.length > 0 && shouldShowWarning) { - toastNotifications.addWarning({ + getNotifications().toasts.addWarning({ title: i18n.translate('regionMap.visualization.unableToShowMismatchesWarningTitle', { defaultMessage: 'Unable to show {mismatchesLength} {oneMismatch, plural, one {result} other {results}} on map', diff --git a/src/legacy/core_plugins/region_map/public/tooltip_formatter.js b/src/plugins/region_map/public/tooltip_formatter.js similarity index 100% rename from src/legacy/core_plugins/region_map/public/tooltip_formatter.js rename to src/plugins/region_map/public/tooltip_formatter.js diff --git a/src/legacy/core_plugins/region_map/public/util.ts b/src/plugins/region_map/public/util.ts similarity index 86% rename from src/legacy/core_plugins/region_map/public/util.ts rename to src/plugins/region_map/public/util.ts index b4e0dcd5f35102..0160a32e815226 100644 --- a/src/legacy/core_plugins/region_map/public/util.ts +++ b/src/plugins/region_map/public/util.ts @@ -17,8 +17,8 @@ * under the License. */ -import { FileLayer, VectorLayer } from '../../../../plugins/maps_legacy/public'; -import { ORIGIN } from '../../../../plugins/maps_legacy/public'; +import { FileLayer, VectorLayer } from '../../maps_legacy/public'; +import { ORIGIN } from '../../maps_legacy/public'; export const mapToLayerWithId = (prefix: string, layer: FileLayer): VectorLayer => ({ ...layer, diff --git a/src/legacy/core_plugins/region_map/public/legacy.ts b/src/plugins/region_map/server/index.ts similarity index 57% rename from src/legacy/core_plugins/region_map/public/legacy.ts rename to src/plugins/region_map/server/index.ts index 4bbd839331e56b..e2c544d2d0ba65 100644 --- a/src/legacy/core_plugins/region_map/public/legacy.ts +++ b/src/plugins/region_map/server/index.ts @@ -17,19 +17,18 @@ * under the License. */ -import { PluginInitializerContext } from 'kibana/public'; -import { npSetup, npStart } from 'ui/new_platform'; +import { PluginConfigDescriptor } from 'kibana/server'; +import { configSchema, ConfigSchema } from '../config'; -import { RegionMapPluginSetupDependencies } from './plugin'; -import { plugin } from '.'; - -const plugins: Readonly = { - expressions: npSetup.plugins.expressions, - visualizations: npSetup.plugins.visualizations, - mapsLegacy: npSetup.plugins.mapsLegacy, +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + includeElasticMapsService: true, + layers: true, + }, + schema: configSchema, }; -const pluginInstance = plugin({} as PluginInitializerContext); - -export const setup = pluginInstance.setup(npSetup.core, plugins); -export const start = pluginInstance.start(npStart.core); +export const plugin = () => ({ + setup() {}, + start() {}, +}); diff --git a/test/interpreter_functional/test_suites/run_pipeline/basic.ts b/test/interpreter_functional/test_suites/run_pipeline/basic.ts index 51ad789143c541..a2172dd2da1ba3 100644 --- a/test/interpreter_functional/test_suites/run_pipeline/basic.ts +++ b/test/interpreter_functional/test_suites/run_pipeline/basic.ts @@ -113,11 +113,10 @@ export default function({ await expectExpression('partial_test_2', metricExpr, context).toMatchSnapshot() ).toMatchScreenshot(); - // TODO: should be uncommented when the region map is migrated to the new platform - // const regionMapExpr = `regionmap visConfig='{"metric":{"accessor":1,"format":{"id":"number"}},"bucket":{"accessor":0}}'`; - // await ( - // await expectExpression('partial_test_3', regionMapExpr, context).toMatchSnapshot() - // ).toMatchScreenshot(); + const regionMapExpr = `regionmap visConfig='{"metric":{"accessor":1,"format":{"id":"number"}},"bucket":{"accessor":0}}'`; + await ( + await expectExpression('partial_test_3', regionMapExpr, context).toMatchSnapshot() + ).toMatchScreenshot(); }); }); }); From d988ebee97eb3cfa7f2bc493bf49caf012b27557 Mon Sep 17 00:00:00 2001 From: Spencer Date: Thu, 7 May 2020 10:37:07 -0700 Subject: [PATCH 16/58] Collect more build metrics (#65408) --- .../src/ci_stats_reporter/README.md | 10 ++++- .../ci_stats_reporter/ci_stats_reporter.ts | 19 +++++---- packages/kbn-optimizer/src/cli.ts | 30 +++++++++----- .../src/report_optimizer_stats.ts | 17 ++++++-- packages/kbn-pm/dist/index.js | 19 +++++---- .../tasks/build_kibana_platform_plugins.js | 3 +- src/dev/build/tasks/create_archives_task.js | 40 +++++++++++++++++-- 7 files changed, 98 insertions(+), 40 deletions(-) diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/README.md b/packages/kbn-dev-utils/src/ci_stats_reporter/README.md index 6133f9871699f9..c7b98224c4e570 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/README.md +++ b/packages/kbn-dev-utils/src/ci_stats_reporter/README.md @@ -8,7 +8,7 @@ This class integrates with the `ciStats.trackBuild {}` Jenkins Pipeline function To create an instance of the reporter, import the class and call `CiStatsReporter.fromEnv(log)` (passing it a tooling log). -#### `CiStatsReporter#metric(name: string, subName: string, value: number)` +#### `CiStatsReporter#metrics(metrics: Array<{ group: string, id: string, value: number }>)` Use this method to record metrics in the Kibana CI Stats service. @@ -19,5 +19,11 @@ import { CiStatsReporter, ToolingLog } from '@kbn/dev-utils'; const log = new ToolingLog(...); const reporter = CiStatsReporter.fromEnv(log) -reporter.metric('Build speed', specificBuildName, timeToRunBuild) +reporter.metrics([ + { + group: 'Build size', + id: specificBuildName, + value: sizeOfBuild + } +]) ``` \ No newline at end of file diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts b/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts index 5fe1844a85563c..4e912896104328 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts +++ b/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts @@ -84,13 +84,16 @@ export class CiStatsReporter { return !!this.config; } - async metric(name: string, subName: string, value: number) { + async metrics(metrics: Array<{ group: string; id: string; value: number }>) { if (!this.config) { return; } let attempt = 0; const maxAttempts = 5; + const bodySummary = metrics + .map(({ group, id, value }) => `[${group}/${id}=${value}]`) + .join(' '); while (true) { attempt += 1; @@ -98,18 +101,14 @@ export class CiStatsReporter { try { await Axios.request({ method: 'POST', - url: '/metric', + url: '/v1/metrics', baseURL: this.config.apiUrl, - params: { - buildId: this.config.buildId, - }, headers: { Authorization: `token ${this.config.apiToken}`, }, data: { - name, - subName, - value, + buildId: this.config.buildId, + metrics, }, }); @@ -125,14 +124,14 @@ export class CiStatsReporter { this.log.warning( `error recording metric [status=${error.response.status}] [resp=${inspect( error.response.data - )}] [${name}/${subName}=${value}]` + )}] ${bodySummary}` ); return; } if (attempt === maxAttempts) { this.log.warning( - `failed to reach kibana-ci-stats service too many times, unable to record metric [${name}/${subName}=${value}]` + `failed to reach kibana-ci-stats service too many times, unable to record metric ${bodySummary}` ); return; } diff --git a/packages/kbn-optimizer/src/cli.ts b/packages/kbn-optimizer/src/cli.ts index e46075eff63a77..a2fbe969e34d82 100644 --- a/packages/kbn-optimizer/src/cli.ts +++ b/packages/kbn-optimizer/src/cli.ts @@ -21,7 +21,7 @@ import 'source-map-support/register'; import Path from 'path'; -import { run, REPO_ROOT, createFlagError, createFailError, CiStatsReporter } from '@kbn/dev-utils'; +import { run, REPO_ROOT, createFlagError, CiStatsReporter } from '@kbn/dev-utils'; import { logOptimizerState } from './log_optimizer_state'; import { OptimizerConfig } from './optimizer'; @@ -82,9 +82,9 @@ run( throw createFlagError('expected --scan-dir to be a string'); } - const reportStatsName = flags['report-stats']; - if (reportStatsName !== undefined && typeof reportStatsName !== 'string') { - throw createFlagError('expected --report-stats to be a string'); + const reportStats = flags['report-stats'] ?? false; + if (typeof reportStats !== 'boolean') { + throw createFlagError('expected --report-stats to have no value'); } const config = OptimizerConfig.create({ @@ -103,22 +103,32 @@ run( let update$ = runOptimizer(config); - if (reportStatsName) { + if (reportStats) { const reporter = CiStatsReporter.fromEnv(log); if (!reporter.isEnabled()) { - throw createFailError('Unable to initialize CiStatsReporter from env'); + log.warning('Unable to initialize CiStatsReporter from env'); } - update$ = update$.pipe(reportOptimizerStats(reporter, reportStatsName)); + update$ = update$.pipe(reportOptimizerStats(reporter, config)); } await update$.pipe(logOptimizerState(log, config)).toPromise(); }, { flags: { - boolean: ['core', 'watch', 'oss', 'examples', 'dist', 'cache', 'profile', 'inspect-workers'], - string: ['workers', 'scan-dir', 'report-stats'], + boolean: [ + 'core', + 'watch', + 'oss', + 'examples', + 'dist', + 'cache', + 'profile', + 'inspect-workers', + 'report-stats', + ], + string: ['workers', 'scan-dir'], default: { core: true, examples: true, @@ -136,7 +146,7 @@ run( --dist create bundles that are suitable for inclusion in the Kibana distributable --scan-dir add a directory to the list of directories scanned for plugins (specify as many times as necessary) --no-inspect-workers when inspecting the parent process, don't inspect the workers - --report-stats=[name] attempt to report stats about this execution of the build to the kibana-ci-stats service using this name + --report-stats attempt to report stats about this execution of the build to the kibana-ci-stats service using this name `, }, } diff --git a/packages/kbn-optimizer/src/report_optimizer_stats.ts b/packages/kbn-optimizer/src/report_optimizer_stats.ts index 375978b9b79447..06161fb2567b94 100644 --- a/packages/kbn-optimizer/src/report_optimizer_stats.ts +++ b/packages/kbn-optimizer/src/report_optimizer_stats.ts @@ -21,10 +21,10 @@ import { materialize, mergeMap, dematerialize } from 'rxjs/operators'; import { CiStatsReporter } from '@kbn/dev-utils'; import { OptimizerUpdate$ } from './run_optimizer'; -import { OptimizerState } from './optimizer'; +import { OptimizerState, OptimizerConfig } from './optimizer'; import { pipeClosure } from './common'; -export function reportOptimizerStats(reporter: CiStatsReporter, name: string) { +export function reportOptimizerStats(reporter: CiStatsReporter, config: OptimizerConfig) { return pipeClosure((update$: OptimizerUpdate$) => { let lastState: OptimizerState | undefined; return update$.pipe( @@ -35,7 +35,18 @@ export function reportOptimizerStats(reporter: CiStatsReporter, name: string) { } if (n.kind === 'C' && lastState) { - await reporter.metric('@kbn/optimizer build time', name, lastState.durSec); + await reporter.metrics( + config.bundles.map(bundle => { + // make the cache read from the cache file since it was likely updated by the worker + bundle.cache.refresh(); + + return { + group: `@kbn/optimizer bundle module count`, + id: bundle.id, + value: bundle.cache.getModuleCount() || 0, + }; + }) + ); } return n; diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 28cf36dedba3f3..1b70cced4a5c9c 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -43933,30 +43933,29 @@ class CiStatsReporter { isEnabled() { return !!this.config; } - async metric(name, subName, value) { + async metrics(metrics) { var _a, _b, _c, _d; if (!this.config) { return; } let attempt = 0; const maxAttempts = 5; + const bodySummary = metrics + .map(({ group, id, value }) => `[${group}/${id}=${value}]`) + .join(' '); while (true) { attempt += 1; try { await axios_1.default.request({ method: 'POST', - url: '/metric', + url: '/v1/metrics', baseURL: this.config.apiUrl, - params: { - buildId: this.config.buildId, - }, headers: { Authorization: `token ${this.config.apiToken}`, }, data: { - name, - subName, - value, + buildId: this.config.buildId, + metrics, }, }); return; @@ -43968,11 +43967,11 @@ class CiStatsReporter { } if (((_b = error) === null || _b === void 0 ? void 0 : _b.response) && error.response.status !== 502) { // error response from service was received so warn the user and move on - this.log.warning(`error recording metric [status=${error.response.status}] [resp=${util_1.inspect(error.response.data)}] [${name}/${subName}=${value}]`); + this.log.warning(`error recording metric [status=${error.response.status}] [resp=${util_1.inspect(error.response.data)}] ${bodySummary}`); return; } if (attempt === maxAttempts) { - this.log.warning(`failed to reach kibana-ci-stats service too many times, unable to record metric [${name}/${subName}=${value}]`); + this.log.warning(`failed to reach kibana-ci-stats service too many times, unable to record metric ${bodySummary}`); return; } // we failed to reach the backend and we have remaining attempts, lets retry after a short delay diff --git a/src/dev/build/tasks/build_kibana_platform_plugins.js b/src/dev/build/tasks/build_kibana_platform_plugins.js index 28d6b49f9e89a8..153a3120f896f8 100644 --- a/src/dev/build/tasks/build_kibana_platform_plugins.js +++ b/src/dev/build/tasks/build_kibana_platform_plugins.js @@ -39,11 +39,10 @@ export const BuildKibanaPlatformPluginsTask = { }); const reporter = CiStatsReporter.fromEnv(log); - const reportStatsName = build.isOss() ? 'oss distributable' : 'default distributable'; await runOptimizer(optimizerConfig) .pipe( - reportOptimizerStats(reporter, reportStatsName), + reportOptimizerStats(reporter, optimizerConfig), logOptimizerState(log, optimizerConfig) ) .toPromise(); diff --git a/src/dev/build/tasks/create_archives_task.js b/src/dev/build/tasks/create_archives_task.js index 06be1bd0bd14f3..541b9551dbc9ba 100644 --- a/src/dev/build/tasks/create_archives_task.js +++ b/src/dev/build/tasks/create_archives_task.js @@ -17,13 +17,22 @@ * under the License. */ -import path from 'path'; +import Path from 'path'; +import Fs from 'fs'; +import { promisify } from 'util'; + +import { CiStatsReporter } from '@kbn/dev-utils'; + import { mkdirp, compress } from '../lib'; +const asyncStat = promisify(Fs.stat); + export const CreateArchivesTask = { description: 'Creating the archives for each platform', async run(config, log, build) { + const archives = []; + // archive one at a time, parallel causes OOM sometimes for (const platform of config.getTargetPlatforms()) { const source = build.resolvePathForPlatform(platform, '.'); @@ -31,10 +40,15 @@ export const CreateArchivesTask = { log.info('archiving', source, 'to', destination); - await mkdirp(path.dirname(destination)); + await mkdirp(Path.dirname(destination)); - switch (path.extname(destination)) { + switch (Path.extname(destination)) { case '.zip': + archives.push({ + format: 'zip', + path: destination, + }); + await compress( 'zip', { @@ -51,6 +65,11 @@ export const CreateArchivesTask = { break; case '.gz': + archives.push({ + format: 'tar', + path: destination, + }); + await compress( 'tar', { @@ -71,5 +90,20 @@ export const CreateArchivesTask = { throw new Error(`Unexpected extension for archive destination: ${destination}`); } } + + const reporter = CiStatsReporter.fromEnv(log); + if (reporter.isEnabled()) { + await reporter.metrics( + await Promise.all( + archives.map(async ({ format, path }) => { + return { + group: `${build.isOss() ? 'oss ' : ''}distributable size`, + id: format, + value: (await asyncStat(path)).size, + }; + }) + ) + ); + } }, }; From 46fc73a2133c78a7663b14040c7ac3facbd75f94 Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Thu, 7 May 2020 19:43:53 +0200 Subject: [PATCH 17/58] [ML] add missing single quotes for index ids in modules custom urls (#65707) --- .../ml/docker_high_count_process_events_ecs.json | 2 +- .../ml/docker_rare_process_activity_ecs.json | 2 +- .../ml/hosts_high_count_process_events_ecs.json | 2 +- .../ml/hosts_rare_process_activity_ecs.json | 2 +- .../modules/sample_data_ecommerce/ml/high_sum_total_sales.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_high_count_process_events_ecs.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_high_count_process_events_ecs.json index d8c970e1794164..c792b981df30a5 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_high_count_process_events_ecs.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_high_count_process_events_ecs.json @@ -30,7 +30,7 @@ { "url_name": "Process rate", "time_range": "1h", - "url_value": "kibana#/dashboard/ml_auditbeat_docker_process_event_rate_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:container.runtime,negate:!f,params:(query:docker),type:phrase,value:docker),query:(match:(container.runtime:(query:docker,type:phrase)))),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027container.name:\u0022$container.name$\u0022\u0027))" + "url_value": "kibana#/dashboard/ml_auditbeat_docker_process_event_rate_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:container.runtime,negate:!f,params:(query:docker),type:phrase,value:docker),query:(match:(container.runtime:(query:docker,type:phrase)))),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027container.name:\u0022$container.name$\u0022\u0027))" }, { "url_name": "Raw data", diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_rare_process_activity_ecs.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_rare_process_activity_ecs.json index 76e3c8026c6310..b3f02ae5a6bf88 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_rare_process_activity_ecs.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_docker_ecs/ml/docker_rare_process_activity_ecs.json @@ -30,7 +30,7 @@ { "url_name": "Process explorer", "time_range": "1h", - "url_value": "kibana#/dashboard/ml_auditbeat_docker_process_explorer_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:container.runtime,negate:!f,params:(query:docker),type:phrase,value:docker),query:(match:(container.runtime:(query:docker,type:phrase)))),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027container.name:\u0022$container.name$\u0022\u0027))" + "url_value": "kibana#/dashboard/ml_auditbeat_docker_process_explorer_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:container.runtime,negate:!f,params:(query:docker),type:phrase,value:docker),query:(match:(container.runtime:(query:docker,type:phrase)))),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027container.name:\u0022$container.name$\u0022\u0027))" }, { "url_name": "Raw data", diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_high_count_process_events_ecs.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_high_count_process_events_ecs.json index 487bee53118785..0e9336507b465b 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_high_count_process_events_ecs.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_high_count_process_events_ecs.json @@ -29,7 +29,7 @@ { "url_name": "Process rate", "time_range": "1h", - "url_value": "kibana#/dashboard/ml_auditbeat_hosts_process_event_rate_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),exists:(field:container.runtime),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:container.runtime,negate:!t,type:exists,value:exists)),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027host.name:\u0022$host.name$\u0022\u0027))" + "url_value": "kibana#/dashboard/ml_auditbeat_hosts_process_event_rate_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),exists:(field:container.runtime),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:container.runtime,negate:!t,type:exists,value:exists)),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027host.name:\u0022$host.name$\u0022\u0027))" }, { "url_name": "Raw data", diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_rare_process_activity_ecs.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_rare_process_activity_ecs.json index 9ba6859bfa1669..4dd1409b71c793 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_rare_process_activity_ecs.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/auditbeat_process_hosts_ecs/ml/hosts_rare_process_activity_ecs.json @@ -30,7 +30,7 @@ { "url_name": "Process explorer", "time_range": "1h", - "url_value": "kibana#/dashboard/ml_auditbeat_hosts_process_explorer_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),exists:(field:container.runtime),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:container.runtime,negate:!t,type:exists,value:exists)),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:INDEX_PATTERN_ID,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027host.name:\u0022$host.name$\u0022\u0027))" + "url_value": "kibana#/dashboard/ml_auditbeat_hosts_process_explorer_ecs?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:event.module,negate:!f,params:(query:auditd),type:phrase,value:auditd),query:(match:(event.module:(query:auditd,type:phrase)))),('$state':(store:appState),exists:(field:container.runtime),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:container.runtime,negate:!t,type:exists,value:exists)),('$state':(store:appState),exists:(field:auditd.data.syscall),meta:(alias:!n,disabled:!f,index:\u0027INDEX_PATTERN_ID\u0027,key:auditd.data.syscall,negate:!f,type:exists,value:exists))),query:(language:kuery,query:\u0027host.name:\u0022$host.name$\u0022\u0027))" }, { "url_name": "Raw data", diff --git a/x-pack/plugins/ml/server/models/data_recognizer/modules/sample_data_ecommerce/ml/high_sum_total_sales.json b/x-pack/plugins/ml/server/models/data_recognizer/modules/sample_data_ecommerce/ml/high_sum_total_sales.json index e0230e2a063734..c3d401085f7ae3 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/modules/sample_data_ecommerce/ml/high_sum_total_sales.json +++ b/x-pack/plugins/ml/server/models/data_recognizer/modules/sample_data_ecommerce/ml/high_sum_total_sales.json @@ -27,7 +27,7 @@ "custom_urls": [ { "url_name": "Raw data", - "url_value": "kibana#/discover?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(index:ff959d40-b880-11e8-a6d9-e546fe2bba5f,query:(language:kuery,query:\u0027customer_full_name.keyword:\u0022$customer_full_name.keyword$\u0022\u0027),sort:!('@timestamp',desc))" + "url_value": "kibana#/discover?_g=(time:(from:\u0027$earliest$\u0027,mode:absolute,to:\u0027$latest$\u0027))&_a=(index:\u0027ff959d40-b880-11e8-a6d9-e546fe2bba5f\u0027,query:(language:kuery,query:\u0027customer_full_name.keyword:\u0022$customer_full_name.keyword$\u0022\u0027),sort:!('@timestamp',desc))" }, { "url_name": "Data dashboard", From 962d4a0127090321503685cf49982360dbd3cb51 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Thu, 7 May 2020 19:15:50 +0100 Subject: [PATCH 18/58] [ML] Disabling calendar all job switch (#65635) * [ML] Disabling calendar all job switch * updating snapshot Co-authored-by: Elastic Machine --- .../edit/calendar_form/__snapshots__/calendar_form.test.js.snap | 1 + .../settings/calendars/edit/calendar_form/calendar_form.js | 1 + 2 files changed, 2 insertions(+) diff --git a/x-pack/plugins/ml/public/application/settings/calendars/edit/calendar_form/__snapshots__/calendar_form.test.js.snap b/x-pack/plugins/ml/public/application/settings/calendars/edit/calendar_form/__snapshots__/calendar_form.test.js.snap index e5026778fec1c7..df2e119f511e17 100644 --- a/x-pack/plugins/ml/public/application/settings/calendars/edit/calendar_form/__snapshots__/calendar_form.test.js.snap +++ b/x-pack/plugins/ml/public/application/settings/calendars/edit/calendar_form/__snapshots__/calendar_form.test.js.snap @@ -88,6 +88,7 @@ exports[`CalendarForm Renders calendar form 1`] = ` size="xl" /> {isGlobalCalendar === false && ( From 2903e2fc76511084da0fe811584750d2c7f97528 Mon Sep 17 00:00:00 2001 From: Rashmi Kulkarni Date: Thu, 7 May 2020 11:16:06 -0700 Subject: [PATCH 19/58] draft search profiler accessibility tests (#62357) * draft search profiler accessibility tests * added the search profiler test , data test subjects * unskipped the test * added another test to open-close the shard details dropdown Co-authored-by: Elastic Machine --- .../shard_details/shard_details.tsx | 1 + .../shard_details/shard_details_tree_node.tsx | 1 + .../components/searchprofiler_tabs.tsx | 2 + .../containers/profile_query_editor.tsx | 7 +- .../accessibility/apps/search_profiler.ts | 93 +++++++++++++++++++ x-pack/test/accessibility/config.ts | 2 + 6 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 x-pack/test/accessibility/apps/search_profiler.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx index ac2a2997515d52..6579d18556cc06 100644 --- a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx +++ b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx @@ -44,6 +44,7 @@ export const ShardDetails = ({ index, shard, operations }: Props) => { setShardVisibility(!shardVisibility)} + data-test-subj="openCloseShardDetails" > [{shard.id[0]}][ {shard.id[2]}] diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx index 1d8f915d3d47d3..d89046090a9611 100644 --- a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx +++ b/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx @@ -94,6 +94,7 @@ export const ShardDetailsTreeNode = ({ operation, index, shard }: Props) => { highlight({ indexName: index.name, operation, shard })} > {i18n.translate('xpack.searchProfiler.profileTree.body.viewDetailsLabel', { diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs.tsx b/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs.tsx index 19224e7099fd66..7e6dad7df5528a 100644 --- a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs.tsx +++ b/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs.tsx @@ -24,6 +24,7 @@ export const SearchProfilerTabs = ({ activeTab, activateTab, has }: Props) => { return ( activateTab('searches')} @@ -33,6 +34,7 @@ export const SearchProfilerTabs = ({ activeTab, activateTab, has }: Props) => { })} activateTab('aggregations')} diff --git a/x-pack/plugins/searchprofiler/public/application/containers/profile_query_editor.tsx b/x-pack/plugins/searchprofiler/public/application/containers/profile_query_editor.tsx index 5348c55ad52139..f6377d2b4f9067 100644 --- a/x-pack/plugins/searchprofiler/public/application/containers/profile_query_editor.tsx +++ b/x-pack/plugins/searchprofiler/public/application/containers/profile_query_editor.tsx @@ -120,7 +120,12 @@ export const ProfileQueryEditor = memo(() => { - handleProfileClick()}> + handleProfileClick()} + > {i18n.translate('xpack.searchProfiler.formProfileButtonLabel', { defaultMessage: 'Profile', diff --git a/x-pack/test/accessibility/apps/search_profiler.ts b/x-pack/test/accessibility/apps/search_profiler.ts new file mode 100644 index 00000000000000..0caf21643f32a7 --- /dev/null +++ b/x-pack/test/accessibility/apps/search_profiler.ts @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['common', 'security']); + const testSubjects = getService('testSubjects'); + const aceEditor = getService('aceEditor'); + const a11y = getService('a11y'); + const flyout = getService('flyout'); + + describe('Accessibility Search Profiler Editor', () => { + before(async () => { + await PageObjects.common.navigateToApp('searchProfiler'); + await a11y.testAppSnapshot(); + expect(await testSubjects.exists('searchProfilerEditor')).to.be(true); + }); + + it('input the JSON in the aceeditor', async () => { + const input = { + query: { + bool: { + should: [ + { + match: { + name: 'fred', + }, + }, + { + terms: { + name: ['sue', 'sally'], + }, + }, + ], + }, + }, + aggs: { + stats: { + stats: { + field: 'price', + }, + }, + }, + }; + + await aceEditor.setValue('searchProfilerEditor', JSON.stringify(input)); + await a11y.testAppSnapshot(); + }); + + it('click on the profile button', async () => { + await testSubjects.click('profileButton'); + await a11y.testAppSnapshot(); + }); + + it('click on the dropdown link', async () => { + const viewShardDetailslink = await testSubjects.findAll('viewShardDetails'); + await viewShardDetailslink[0].click(); + await a11y.testAppSnapshot(); + }); + + it('click on the open-close shard details link', async () => { + const openShardDetailslink = await testSubjects.findAll('openCloseShardDetails'); + await openShardDetailslink[0].click(); + await a11y.testAppSnapshot(); + }); + + it('close the fly out', async () => { + await flyout.ensureAllClosed(); + await a11y.testAppSnapshot(); + }); + + it('click on the Aggregation Profile link', async () => { + await testSubjects.click('aggregationProfileTab'); + await a11y.testAppSnapshot(); + }); + + it('click on the view details link', async () => { + const viewShardDetailslink = await testSubjects.findAll('viewShardDetails'); + await viewShardDetailslink[0].click(); + await a11y.testAppSnapshot(); + }); + + it('close the fly out', async () => { + await flyout.ensureAllClosed(); + await a11y.testAppSnapshot(); + }); + }); +} diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index 7bf6079cc6487d..ddeb52dce3b59f 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -13,10 +13,12 @@ export default async function({ readConfigFile }: FtrConfigProviderContext) { return { ...functionalConfig.getAll(), + testFiles: [ require.resolve('./apps/login_page'), require.resolve('./apps/home'), require.resolve('./apps/grok_debugger'), + require.resolve('./apps/search_profiler'), ], pageObjects, services, From df0f0c341f5d885b0a87f90e32aa7c13c67cbd30 Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Thu, 7 May 2020 11:49:27 -0700 Subject: [PATCH 20/58] [Metrics UI] Fix isAbove to only display when threshold set (#65540) --- .../alerting/metric_threshold/components/expression_chart.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx index a600d59865cccd..82e751627a05bd 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx @@ -224,7 +224,7 @@ export const ExpressionChart: React.FC = ({ /> ) : null} - {isAbove ? ( + {isAbove && first(expression.threshold) != null ? ( Date: Thu, 7 May 2020 12:07:44 -0700 Subject: [PATCH 21/58] remove immediate functions from esqueue worker cycles (#65375) Co-authored-by: Elastic Machine --- .../reporting/server/lib/create_worker.ts | 43 ++++++------------- .../reporting/server/lib/enqueue_job.ts | 3 +- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/x-pack/legacy/plugins/reporting/server/lib/create_worker.ts b/x-pack/legacy/plugins/reporting/server/lib/create_worker.ts index 16b8fbdb30fdd9..ad0f05c02a1f44 100644 --- a/x-pack/legacy/plugins/reporting/server/lib/create_worker.ts +++ b/x-pack/legacy/plugins/reporting/server/lib/create_worker.ts @@ -11,18 +11,13 @@ import { ESQueueInstance, ESQueueWorkerExecuteFn, ExportTypeDefinition, - ImmediateExecuteFn, - JobDocPayload, JobSource, Logger, - RequestFacade, } from '../../types'; // @ts-ignore untyped dependency import { events as esqueueEvents } from './esqueue'; export function createWorkerFactory(reporting: ReportingCore, logger: Logger) { - type JobDocPayloadType = JobDocPayload; - const config = reporting.getConfig(); const queueConfig = config.get('queue'); const kibanaName = config.kbnConfig.get('server', 'name'); @@ -31,48 +26,36 @@ export function createWorkerFactory(reporting: ReportingCore, log // Once more document types are added, this will need to be passed in return async function createWorker(queue: ESQueueInstance) { // export type / execute job map - const jobExecutors: Map< - string, - ImmediateExecuteFn | ESQueueWorkerExecuteFn - > = new Map(); + const jobExecutors: Map> = new Map(); for (const exportType of reporting.getExportTypesRegistry().getAll() as Array< - ExportTypeDefinition< - JobParamsType, - unknown, - unknown, - ImmediateExecuteFn | ESQueueWorkerExecuteFn - > + ExportTypeDefinition> >) { const jobExecutor = await exportType.executeJobFactory(reporting, logger); // FIXME: does not "need" to be async jobExecutors.set(exportType.jobType, jobExecutor); } - const workerFn = (jobSource: JobSource, ...workerRestArgs: any[]) => { + const workerFn = ( + jobSource: JobSource, + jobParams: ScheduledTaskParamsType, + cancellationToken: CancellationToken + ) => { const { _id: jobId, _source: { jobtype: jobType }, } = jobSource; + if (!jobId) { + throw new Error(`Claimed job is missing an ID!: ${JSON.stringify(jobSource)}`); + } + const jobTypeExecutor = jobExecutors.get(jobType); - // pass the work to the jobExecutor if (!jobTypeExecutor) { throw new Error(`Unable to find a job executor for the claimed job: [${jobId}]`); } - if (jobId) { - const jobExecutorWorker = jobTypeExecutor as ESQueueWorkerExecuteFn; - return jobExecutorWorker( - jobId, - ...(workerRestArgs as [JobDocPayloadType, CancellationToken]) - ); - } else { - const jobExecutorImmediate = jobExecutors.get(jobType) as ImmediateExecuteFn; - return jobExecutorImmediate( - null, - ...(workerRestArgs as [JobDocPayload, RequestFacade]) - ); - } + // pass the work to the jobExecutor + return jobTypeExecutor(jobId, jobParams, cancellationToken); }; const workerOptions = { diff --git a/x-pack/legacy/plugins/reporting/server/lib/enqueue_job.ts b/x-pack/legacy/plugins/reporting/server/lib/enqueue_job.ts index 3e87337dc43550..8f33d9b73566cc 100644 --- a/x-pack/legacy/plugins/reporting/server/lib/enqueue_job.ts +++ b/x-pack/legacy/plugins/reporting/server/lib/enqueue_job.ts @@ -9,7 +9,6 @@ import { ConditionalHeaders, EnqueueJobFn, ESQueueCreateJobFn, - ImmediateCreateJobFn, Job, Logger, RequestFacade, @@ -40,7 +39,7 @@ export function enqueueJobFactory(reporting: ReportingCore, parentLogger: Logger headers: ConditionalHeaders['headers'], request: RequestFacade ): Promise { - type CreateJobFn = ESQueueCreateJobFn | ImmediateCreateJobFn; + type CreateJobFn = ESQueueCreateJobFn; const esqueue = await reporting.getEsqueue(); const exportType = reporting.getExportTypesRegistry().getById(exportTypeId); From 39427f5ed3362bd4eee4a3414c3a84160aa317a8 Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Thu, 7 May 2020 15:12:01 -0400 Subject: [PATCH 22/58] [Alerting] changes preconfigured actions config from array to object (#65397) resolves https://github.com/elastic/kibana/issues/63171 Previously, preconfigured actions were specified as an array of action properties. This ended up being problematic when using the kibana keystore for secrets, as you'd have to reference specific actions via index. This changes preconfigured actions to be specified as an object, where the property key is the id, and the body is the remainder of the action properties. As access to preconfigured actions has leaked across the code base, it's probably time to consider changing the internal representation from an array to a Map, to provide easier access by action id. For a future PR. --- .../user/alerting/action-types/email.asciidoc | 22 +++---- .../user/alerting/action-types/index.asciidoc | 14 ++--- .../alerting/action-types/pagerduty.asciidoc | 14 ++--- .../alerting/action-types/server-log.asciidoc | 6 +- .../user/alerting/action-types/slack.asciidoc | 10 ++-- .../alerting/action-types/webhook.asciidoc | 22 +++---- .../pre-configured-connectors.asciidoc | 8 +-- x-pack/plugins/actions/README.md | 2 +- x-pack/plugins/actions/server/config.test.ts | 53 ++++++++++++++--- x-pack/plugins/actions/server/config.ts | 39 +++++++++---- x-pack/plugins/actions/server/plugin.test.ts | 57 +++++++++---------- x-pack/plugins/actions/server/plugin.ts | 14 +++-- .../alerting_api_integration/common/config.ts | 16 ++---- x-pack/test/functional_with_es_ssl/config.ts | 10 ++-- 14 files changed, 166 insertions(+), 121 deletions(-) diff --git a/docs/user/alerting/action-types/email.asciidoc b/docs/user/alerting/action-types/email.asciidoc index 689d870d9cadc3..81b4e210961f6e 100644 --- a/docs/user/alerting/action-types/email.asciidoc +++ b/docs/user/alerting/action-types/email.asciidoc @@ -24,17 +24,17 @@ Password:: password for 'login' type authentication. [source,text] -- - id: 'my-email' - name: preconfigured-email-action-type - actionTypeId: .email - config: - from: testsender@test.com <1.1> - host: validhostname <1.2> - port: 8080 <1.3> - secure: false <1.4> - secrets: - user: testuser <2.1> - password: passwordkeystorevalue <2.2> + my-email: + name: preconfigured-email-action-type + actionTypeId: .email + config: + from: testsender@test.com <1.1> + host: validhostname <1.2> + port: 8080 <1.3> + secure: false <1.4> + secrets: + user: testuser <2.1> + password: passwordkeystorevalue <2.2> -- `config` defines the action type specific to the configuration and contains the following properties: diff --git a/docs/user/alerting/action-types/index.asciidoc b/docs/user/alerting/action-types/index.asciidoc index 4f5254e3311d81..c71412210c535f 100644 --- a/docs/user/alerting/action-types/index.asciidoc +++ b/docs/user/alerting/action-types/index.asciidoc @@ -21,13 +21,13 @@ Execution time field:: This field will be automatically set to the time the ale [source,text] -- - id: 'my-index' - name: action-type-index - actionTypeId: .index - config: - index: .kibana <1> - refresh: true <2> - executionTimeField: somedate <3> + my-index: + name: action-type-index + actionTypeId: .index + config: + index: .kibana <1> + refresh: true <2> + executionTimeField: somedate <3> -- `config` defines the action type specific to the configuration and contains the following properties: diff --git a/docs/user/alerting/action-types/pagerduty.asciidoc b/docs/user/alerting/action-types/pagerduty.asciidoc index 957c035b028f62..cd51ec2e3301e9 100644 --- a/docs/user/alerting/action-types/pagerduty.asciidoc +++ b/docs/user/alerting/action-types/pagerduty.asciidoc @@ -141,13 +141,13 @@ Integration Key:: A 32 character PagerDuty Integration Key for an integration [source,text] -- - id: 'my-pagerduty' - name: preconfigured-pagerduty-action-type - actionTypeId: .pagerduty - config: - apiUrl: https://test.host <1.1> - secrets: - routingKey: testroutingkey <2.1> + my-pagerduty: + name: preconfigured-pagerduty-action-type + actionTypeId: .pagerduty + config: + apiUrl: https://test.host <1.1> + secrets: + routingKey: testroutingkey <2.1> -- `config` defines the action type specific to the configuration and contains the following properties: diff --git a/docs/user/alerting/action-types/server-log.asciidoc b/docs/user/alerting/action-types/server-log.asciidoc index f08dbe5542f0fe..eadca229bc19c6 100644 --- a/docs/user/alerting/action-types/server-log.asciidoc +++ b/docs/user/alerting/action-types/server-log.asciidoc @@ -18,9 +18,9 @@ Name:: The name of the connector. The name is used to identify a connector [source,text] -- - id: 'my-server-log' - name: test - actionTypeId: .server-log + my-server-log: + name: test + actionTypeId: .server-log -- [float] diff --git a/docs/user/alerting/action-types/slack.asciidoc b/docs/user/alerting/action-types/slack.asciidoc index 195093536bc044..afa616ba77b3a7 100644 --- a/docs/user/alerting/action-types/slack.asciidoc +++ b/docs/user/alerting/action-types/slack.asciidoc @@ -19,11 +19,11 @@ Webhook URL:: The URL of the incoming webhook. See https://api.slack.com/messa [source,text] -- - id: 'my-slack' - name: preconfigured-slack-action-type - actionTypeId: .slack - config: - webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz' <1> + my-slack: + name: preconfigured-slack-action-type + actionTypeId: .slack + config: + webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz' <1> -- `config` defines the action type specific to the configuration and contains the following properties: diff --git a/docs/user/alerting/action-types/webhook.asciidoc b/docs/user/alerting/action-types/webhook.asciidoc index f4c108426642d1..27609652288b5a 100644 --- a/docs/user/alerting/action-types/webhook.asciidoc +++ b/docs/user/alerting/action-types/webhook.asciidoc @@ -23,17 +23,17 @@ Password:: An optional password. If set, HTTP basic authentication is used. Cur [source,text] -- - id: 'my-webhook' - name: preconfigured-webhook-action-type - actionTypeId: .webhook - config: - url: https://test.host <1.1> - method: POST <1.2> - headers: <1.3> - testheader: testvalue - secrets: - user: testuser <2.1> - password: passwordkeystorevalue <2.2> + my-webhook: + name: preconfigured-webhook-action-type + actionTypeId: .webhook + config: + url: https://test.host <1.1> + method: POST <1.2> + headers: <1.3> + testheader: testvalue + secrets: + user: testuser <2.1> + password: passwordkeystorevalue <2.2> -- `config` defines the action type specific to the configuration and contains the following properties: diff --git a/docs/user/alerting/pre-configured-connectors.asciidoc b/docs/user/alerting/pre-configured-connectors.asciidoc index 5ff4ea15df561f..d5c20d1853d421 100644 --- a/docs/user/alerting/pre-configured-connectors.asciidoc +++ b/docs/user/alerting/pre-configured-connectors.asciidoc @@ -25,12 +25,12 @@ The following example shows a valid configuration of two out-of-the box connecto ```js xpack.actions.preconfigured: - - id: 'my-slack1' <1> + my-slack1: <1> actionTypeId: .slack <2> name: 'Slack #xyz' <3> config: <4> webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz' - - id: 'webhook-service' + webhook-service: actionTypeId: .webhook name: 'Email service' config: @@ -44,7 +44,7 @@ The following example shows a valid configuration of two out-of-the box connecto password: changeme ``` -<1> `id` is the action connector identifier. +<1> the key is the action connector identifier, eg `my-slack1` in this example. <2> `actionTypeId` is the action type identifier. <3> `name` is the name of the preconfigured connector. <4> `config` is the action type specific to the configuration. @@ -69,7 +69,7 @@ The following example shows a valid configuration of preconfigured action type w ```js xpack.actions.enabledActionTypes: ['.slack', '.email', '.index'] <1> xpack.actions.preconfigured: <2> - - id: 'my-server-log' + my-server-log: actionTypeId: .server-log name: 'Server log #xyz' ``` diff --git a/x-pack/plugins/actions/README.md b/x-pack/plugins/actions/README.md index 4c8cc3aa503e6e..54624b94e0de35 100644 --- a/x-pack/plugins/actions/README.md +++ b/x-pack/plugins/actions/README.md @@ -98,7 +98,7 @@ Built-In-Actions are configured using the _xpack.actions_ namespoace under _kiba | _xpack.actions._**enabled** | Feature toggle which enabled Actions in Kibana. | boolean | | _xpack.actions._**whitelistedHosts** | Which _hostnames_ are whitelisted for the Built-In-Action? This list should contain hostnames of every external service you wish to interact with using Webhooks, Email or any other built in Action. Note that you may use the string "\*" in place of a specific hostname to enable Kibana to target any URL, but keep in mind the potential use of such a feature to execute [SSRF](https://www.owasp.org/index.php/Server_Side_Request_Forgery) attacks from your server. | Array | | _xpack.actions._**enabledActionTypes** | A list of _actionTypes_ id's that are enabled. A "\*" may be used as an element to indicate all registered actionTypes should be enabled. The actionTypes registered for Kibana are `.server-log`, `.slack`, `.email`, `.index`, `.pagerduty`, `.webhook`. Default: `["*"]` | Array | -| _xpack.actions._**preconfigured** | A list of preconfigured actions. Default: `[]` | Array | +| _xpack.actions._**preconfigured** | A object of action id / preconfigured actions. Default: `{}` | Array | #### Whitelisting Built-in Action Types diff --git a/x-pack/plugins/actions/server/config.test.ts b/x-pack/plugins/actions/server/config.test.ts index 161a6c31d4e599..e86f2d7832828e 100644 --- a/x-pack/plugins/actions/server/config.test.ts +++ b/x-pack/plugins/actions/server/config.test.ts @@ -14,7 +14,7 @@ describe('config validation', () => { "enabledActionTypes": Array [ "*", ], - "preconfigured": Array [], + "preconfigured": Object {}, "whitelistedHosts": Array [ "*", ], @@ -24,16 +24,15 @@ describe('config validation', () => { test('action with preconfigured actions', () => { const config: Record = { - preconfigured: [ - { - id: 'my-slack1', + preconfigured: { + mySlack1: { actionTypeId: '.slack', name: 'Slack #xyz', config: { webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz', }, }, - ], + }, }; expect(configSchema.validate(config)).toMatchInlineSnapshot(` Object { @@ -41,21 +40,57 @@ describe('config validation', () => { "enabledActionTypes": Array [ "*", ], - "preconfigured": Array [ - Object { + "preconfigured": Object { + "mySlack1": Object { "actionTypeId": ".slack", "config": Object { "webhookUrl": "https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz", }, - "id": "my-slack1", "name": "Slack #xyz", "secrets": Object {}, }, - ], + }, "whitelistedHosts": Array [ "*", ], } `); }); + + test('validates preconfigured action ids', () => { + expect(() => + configSchema.validate(preConfiguredActionConfig('')) + ).toThrowErrorMatchingInlineSnapshot( + `"[preconfigured]: invalid preconfigured action id \\"\\""` + ); + + expect(() => + configSchema.validate(preConfiguredActionConfig('constructor')) + ).toThrowErrorMatchingInlineSnapshot( + `"[preconfigured]: invalid preconfigured action id \\"constructor\\""` + ); + + expect(() => + configSchema.validate(preConfiguredActionConfig('__proto__')) + ).toThrowErrorMatchingInlineSnapshot( + `"[preconfigured]: invalid preconfigured action id \\"__proto__\\""` + ); + }); }); + +// object creator that ensures we can create a property named __proto__ on an +// object, via JSON.parse() +function preConfiguredActionConfig(id: string) { + return JSON.parse(`{ + "preconfigured": { + ${JSON.stringify(id)}: { + "actionTypeId": ".server-log", + "name": "server log 1" + }, + "serverLog": { + "actionTypeId": ".server-log", + "name": "server log 2" + } + } + }`); +} diff --git a/x-pack/plugins/actions/server/config.ts b/x-pack/plugins/actions/server/config.ts index 1f04efd1941b4b..b2f3fa2680a9cc 100644 --- a/x-pack/plugins/actions/server/config.ts +++ b/x-pack/plugins/actions/server/config.ts @@ -7,6 +7,13 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { WhitelistedHosts, EnabledActionTypes } from './actions_config'; +const preconfiguredActionSchema = schema.object({ + name: schema.string({ minLength: 1 }), + actionTypeId: schema.string({ minLength: 1 }), + config: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), + secrets: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), +}); + export const configSchema = schema.object({ enabled: schema.boolean({ defaultValue: true }), whitelistedHosts: schema.arrayOf( @@ -21,18 +28,26 @@ export const configSchema = schema.object({ defaultValue: [WhitelistedHosts.Any], } ), - preconfigured: schema.arrayOf( - schema.object({ - id: schema.string({ minLength: 1 }), - name: schema.string(), - actionTypeId: schema.string({ minLength: 1 }), - config: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), - secrets: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), - }), - { - defaultValue: [], - } - ), + preconfigured: schema.recordOf(schema.string(), preconfiguredActionSchema, { + defaultValue: {}, + validate: validatePreconfigured, + }), }); export type ActionsConfig = TypeOf; + +const invalidActionIds = new Set(['', '__proto__', 'constructor']); + +function validatePreconfigured(preconfigured: Record): string | undefined { + // check for ids that should not be used + for (const id of Object.keys(preconfigured)) { + if (invalidActionIds.has(id)) { + return `invalid preconfigured action id "${id}"`; + } + } + + // in case __proto__ was used as a preconfigured action id ... + if (Object.getPrototypeOf(preconfigured) !== Object.getPrototypeOf({})) { + return `invalid preconfigured action id "__proto__"`; + } +} diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index 2b334953063d18..8673d992ada983 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -12,6 +12,7 @@ import { taskManagerMock } from '../../task_manager/server/mocks'; import { eventLogMock } from '../../event_log/server/mocks'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; import { ActionType } from './types'; +import { ActionsConfig } from './config'; import { ActionsPlugin, ActionsPluginsSetup, @@ -31,33 +32,11 @@ describe('Actions Plugin', () => { let pluginsSetup: jest.Mocked; beforeEach(() => { - context = coreMock.createPluginInitializerContext({ - preconfigured: [ - { - id: 'my-slack1', - actionTypeId: '.slack', - name: 'Slack #xyz', - description: 'Send a message to the #xyz channel', - config: { - webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz', - }, - }, - { - id: 'custom-system-abc-connector', - actionTypeId: 'system-abc-action-type', - description: 'Send a notification to system ABC', - name: 'System ABC', - config: { - xyzConfig1: 'value1', - xyzConfig2: 'value2', - listOfThings: ['a', 'b', 'c', 'd'], - }, - secrets: { - xyzSecret1: 'credential1', - xyzSecret2: 'credential2', - }, - }, - ], + context = coreMock.createPluginInitializerContext({ + enabled: true, + enabledActionTypes: ['*'], + whitelistedHosts: ['*'], + preconfigured: {}, }); plugin = new ActionsPlugin(context); coreSetup = coreMock.createSetup(); @@ -192,6 +171,7 @@ describe('Actions Plugin', () => { }); }); }); + describe('start()', () => { let plugin: ActionsPlugin; let coreSetup: ReturnType; @@ -200,8 +180,18 @@ describe('Actions Plugin', () => { let pluginsStart: jest.Mocked; beforeEach(() => { - const context = coreMock.createPluginInitializerContext({ - preconfigured: [], + const context = coreMock.createPluginInitializerContext({ + enabled: true, + enabledActionTypes: ['*'], + whitelistedHosts: ['*'], + preconfigured: { + preconfiguredServerLog: { + actionTypeId: '.server-log', + name: 'preconfigured-server-log', + config: {}, + secrets: {}, + }, + }, }); plugin = new ActionsPlugin(context); coreSetup = coreMock.createSetup(); @@ -220,6 +210,15 @@ describe('Actions Plugin', () => { }); describe('getActionsClientWithRequest()', () => { + it('should handle preconfigured actions', async () => { + // coreMock.createSetup doesn't support Plugin generics + // eslint-disable-next-line @typescript-eslint/no-explicit-any + await plugin.setup(coreSetup as any, pluginsSetup); + const pluginStart = plugin.start(coreStart, pluginsStart); + + expect(pluginStart.isActionExecutable('preconfiguredServerLog', '.server-log')).toBe(true); + }); + it('should not throw error when ESO plugin not using a generated key', async () => { // coreMock.createSetup doesn't support Plugin generics // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index f14df794bbf47b..bc7440c8bee4de 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -150,12 +150,14 @@ export class ActionsPlugin implements Plugin, Plugi const actionsConfig = (await this.config) as ActionsConfig; const actionsConfigUtils = getActionsConfigurationUtilities(actionsConfig); - this.preconfiguredActions.push( - ...actionsConfig.preconfigured.map( - preconfiguredAction => - ({ ...preconfiguredAction, isPreconfigured: true } as PreConfiguredAction) - ) - ); + for (const preconfiguredId of Object.keys(actionsConfig.preconfigured)) { + this.preconfiguredActions.push({ + ...actionsConfig.preconfigured[preconfiguredId], + id: preconfiguredId, + isPreconfigured: true, + }); + } + const actionTypeRegistry = new ActionTypeRegistry({ taskRunnerFactory, taskManager: plugins.taskManager, diff --git a/x-pack/test/alerting_api_integration/common/config.ts b/x-pack/test/alerting_api_integration/common/config.ts index d6b5b40d99d999..5fa87446e0f439 100644 --- a/x-pack/test/alerting_api_integration/common/config.ts +++ b/x-pack/test/alerting_api_integration/common/config.ts @@ -83,17 +83,15 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) ])}`, `--xpack.actions.enabledActionTypes=${JSON.stringify(enabledActionTypes)}`, '--xpack.eventLog.logEntries=true', - `--xpack.actions.preconfigured=${JSON.stringify([ - { - id: 'my-slack1', + `--xpack.actions.preconfigured=${JSON.stringify({ + 'my-slack1': { actionTypeId: '.slack', name: 'Slack#xyz', config: { webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz', }, }, - { - id: 'custom-system-abc-connector', + 'custom-system-abc-connector': { actionTypeId: 'system-abc-action-type', name: 'SystemABC', config: { @@ -106,8 +104,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) xyzSecret2: 'credential2', }, }, - { - id: 'preconfigured-es-index-action', + 'preconfigured-es-index-action': { actionTypeId: '.index', name: 'preconfigured_es_index_action', config: { @@ -116,8 +113,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) executionTimeField: 'timestamp', }, }, - { - id: 'preconfigured.test.index-record', + 'preconfigured.test.index-record': { actionTypeId: 'test.index-record', name: 'Test:_Preconfigured_Index_Record', config: { @@ -127,7 +123,7 @@ export function createTestConfig(name: string, options: CreateTestConfigOptions) encrypted: 'this-is-also-ignored-and-also-required', }, }, - ])}`, + })}`, ...disabledPlugins.map(key => `--xpack.${key}.enabled=false`), ...plugins.map( pluginDir => diff --git a/x-pack/test/functional_with_es_ssl/config.ts b/x-pack/test/functional_with_es_ssl/config.ts index ef2270fb97745d..50de76d67e06b5 100644 --- a/x-pack/test/functional_with_es_ssl/config.ts +++ b/x-pack/test/functional_with_es_ssl/config.ts @@ -66,21 +66,19 @@ export default async function({ readConfigFile }: FtrConfigProviderContext) { `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, `--plugin-path=${join(__dirname, 'fixtures', 'plugins', 'alerts')}`, `--xpack.actions.enabledActionTypes=${JSON.stringify(enabledActionTypes)}`, - `--xpack.actions.preconfigured=${JSON.stringify([ - { - id: 'my-slack1', + `--xpack.actions.preconfigured=${JSON.stringify({ + 'my-slack1': { actionTypeId: '.slack', name: 'Slack#xyztest', config: { webhookUrl: 'https://hooks.slack.com/services/abcd/efgh/ijklmnopqrstuvwxyz', }, }, - { - id: 'my-server-log', + 'my-server-log': { actionTypeId: '.server-log', name: 'Serverlog#xyz', }, - ])}`, + })}`, ], }, }; From 64c09318fe18e24166a54b914ac8dfc2d38c2fc1 Mon Sep 17 00:00:00 2001 From: Gidi Meir Morris Date: Thu, 7 May 2020 20:52:11 +0100 Subject: [PATCH 23/58] [Event log] Fix flaky test (#65658) fixes flaky test in Event Log --- .../event_log/public_api_integration.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts index f5cc1cc166ee86..9b1e357a7c9d45 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { merge, omit, times, chunk, isEmpty } from 'lodash'; +import { merge, omit, chunk, isEmpty } from 'lodash'; import uuid from 'uuid'; import expect from '@kbn/expect/expect.js'; import moment from 'moment'; @@ -19,9 +19,7 @@ export default function({ getService }: FtrProviderContext) { const log = getService('log'); const retry = getService('retry'); - // FLAKY: https://github.com/elastic/kibana/issues/64723 - // FLAKY: https://github.com/elastic/kibana/issues/64812 - describe.skip('Event Log public API', () => { + describe('Event Log public API', () => { it('should allow querying for events by Saved Object', async () => { const id = uuid.v4(); @@ -45,11 +43,7 @@ export default function({ getService }: FtrProviderContext) { it('should support pagination for events', async () => { const id = uuid.v4(); - const [firstExpectedEvent, ...expectedEvents] = times(6, () => fakeEvent(id)); - - // run one first to create the SO and avoid clashes - await logTestEvent(id, firstExpectedEvent); - await Promise.all(expectedEvents.map(event => logTestEvent(id, event))); + const expectedEvents = await logFakeEvents(id, 6); await retry.try(async () => { const { @@ -59,10 +53,7 @@ export default function({ getService }: FtrProviderContext) { expect(foundEvents.length).to.be(6); }); - const [expectedFirstPage, expectedSecondPage] = chunk( - [firstExpectedEvent, ...expectedEvents], - 3 - ); + const [expectedFirstPage, expectedSecondPage] = chunk(expectedEvents, 3); const { body: { data: firstPage }, From 9f11d21df530ded0496548b26f8bf6376926271c Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Thu, 7 May 2020 14:54:00 -0500 Subject: [PATCH 24/58] [Canvas] Fix nav link behavior in Canvas (#65590) * wip * Storing last page for canvas in session storage * Fix bad path * Fix bad merge * Cleanup and adding some types * Fixing types * PR feedback and storage refactor Co-authored-by: Corey Robertson --- x-pack/plugins/canvas/common/lib/constants.ts | 2 +- x-pack/plugins/canvas/public/application.tsx | 8 +++-- .../canvas/public/components/app/index.js | 6 ++-- x-pack/plugins/canvas/public/lib/clipboard.ts | 17 ++------- .../plugins/canvas/public/lib/get_window.ts | 12 +++++-- x-pack/plugins/canvas/public/lib/storage.ts | 35 +++++++++++++++++++ x-pack/plugins/canvas/public/plugin.tsx | 23 +++++++++++- .../plugins/canvas/public/services/index.ts | 32 +++++++++++++---- .../canvas/public/services/nav_link.ts | 31 ++++++++++++++++ 9 files changed, 136 insertions(+), 30 deletions(-) create mode 100644 x-pack/plugins/canvas/public/lib/storage.ts create mode 100644 x-pack/plugins/canvas/public/services/nav_link.ts diff --git a/x-pack/plugins/canvas/common/lib/constants.ts b/x-pack/plugins/canvas/common/lib/constants.ts index a37dc3fd6a7b3d..f2155d9202939c 100644 --- a/x-pack/plugins/canvas/common/lib/constants.ts +++ b/x-pack/plugins/canvas/common/lib/constants.ts @@ -18,7 +18,7 @@ export const API_ROUTE_WORKPAD_STRUCTURES = `${API_ROUTE}/workpad-structures`; export const API_ROUTE_CUSTOM_ELEMENT = `${API_ROUTE}/custom-element`; export const LOCALSTORAGE_PREFIX = `kibana.canvas`; export const LOCALSTORAGE_CLIPBOARD = `${LOCALSTORAGE_PREFIX}.clipboard`; -export const LOCALSTORAGE_LASTPAGE = 'canvas:lastpage'; +export const SESSIONSTORAGE_LASTPATH = 'lastPath:canvas'; export const FETCH_TIMEOUT = 30000; // 30 seconds export const CANVAS_USAGE_TYPE = 'canvas'; export const DEFAULT_WORKPAD_CSS = '.canvasPage {\n\n}'; diff --git a/x-pack/plugins/canvas/public/application.tsx b/x-pack/plugins/canvas/public/application.tsx index 284023e74d137b..9c2aa821be2d53 100644 --- a/x-pack/plugins/canvas/public/application.tsx +++ b/x-pack/plugins/canvas/public/application.tsx @@ -10,8 +10,9 @@ import ReactDOM from 'react-dom'; import { I18nProvider } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { Provider } from 'react-redux'; +import { BehaviorSubject } from 'rxjs'; -import { AppMountParameters, CoreStart, CoreSetup } from 'kibana/public'; +import { AppMountParameters, CoreStart, CoreSetup, AppUpdater } from 'kibana/public'; import { CanvasStartDeps, CanvasSetupDeps } from './plugin'; // @ts-ignore Untyped local @@ -88,9 +89,10 @@ export const initializeCanvas = async ( coreStart: CoreStart, setupPlugins: CanvasSetupDeps, startPlugins: CanvasStartDeps, - registries: SetupRegistries + registries: SetupRegistries, + appUpdater: BehaviorSubject ) => { - startServices(coreSetup, coreStart, setupPlugins, startPlugins); + startServices(coreSetup, coreStart, setupPlugins, startPlugins, appUpdater); // Create Store const canvasStore = await createStore(coreSetup, setupPlugins); diff --git a/x-pack/plugins/canvas/public/components/app/index.js b/x-pack/plugins/canvas/public/components/app/index.js index de0d4c190eae61..750132dadb97da 100644 --- a/x-pack/plugins/canvas/public/components/app/index.js +++ b/x-pack/plugins/canvas/public/components/app/index.js @@ -8,6 +8,7 @@ import { connect } from 'react-redux'; import { compose, withProps } from 'recompose'; import { getAppReady, getBasePath } from '../../state/selectors/app'; import { appReady, appError } from '../../state/actions/app'; +import { withKibana } from '../../../../../../src/plugins/kibana_react/public'; import { App as Component } from './app'; @@ -44,7 +45,8 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => { export const App = compose( connect(mapStateToProps, mapDispatchToProps, mergeProps), - withProps(() => ({ - onRouteChange: () => undefined, + withKibana, + withProps(props => ({ + onRouteChange: props.kibana.services.canvas.navLink.updatePath, })) )(Component); diff --git a/x-pack/plugins/canvas/public/lib/clipboard.ts b/x-pack/plugins/canvas/public/lib/clipboard.ts index 11755807aa5336..cb940fd064a47b 100644 --- a/x-pack/plugins/canvas/public/lib/clipboard.ts +++ b/x-pack/plugins/canvas/public/lib/clipboard.ts @@ -4,22 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import { Storage } from '../../../../../src/plugins/kibana_utils/public'; import { LOCALSTORAGE_CLIPBOARD } from '../../common/lib/constants'; -import { getWindow } from './get_window'; - -let storage: Storage; - -const getStorage = (): Storage => { - if (!storage) { - storage = new Storage(getWindow().localStorage); - } - - return storage; -}; +import { getLocalStorage } from './storage'; export const setClipboardData = (data: any) => { - getStorage().set(LOCALSTORAGE_CLIPBOARD, JSON.stringify(data)); + getLocalStorage().set(LOCALSTORAGE_CLIPBOARD, JSON.stringify(data)); }; -export const getClipboardData = () => getStorage().get(LOCALSTORAGE_CLIPBOARD); +export const getClipboardData = () => getLocalStorage().get(LOCALSTORAGE_CLIPBOARD); diff --git a/x-pack/plugins/canvas/public/lib/get_window.ts b/x-pack/plugins/canvas/public/lib/get_window.ts index 42c632f4a514f5..c8fb035d4d33f6 100644 --- a/x-pack/plugins/canvas/public/lib/get_window.ts +++ b/x-pack/plugins/canvas/public/lib/get_window.ts @@ -5,10 +5,18 @@ */ // return window if it exists, otherwise just return an object literal -const windowObj = { location: null, localStorage: {} as Window['localStorage'] }; +const windowObj = { + location: null, + localStorage: {} as Window['localStorage'], + sessionStorage: {} as Window['sessionStorage'], +}; export const getWindow = (): | Window - | { location: Location | null; localStorage: Window['localStorage'] } => { + | { + location: Location | null; + localStorage: Window['localStorage']; + sessionStorage: Window['sessionStorage']; + } => { return typeof window === 'undefined' ? windowObj : window; }; diff --git a/x-pack/plugins/canvas/public/lib/storage.ts b/x-pack/plugins/canvas/public/lib/storage.ts new file mode 100644 index 00000000000000..47c8cc741eaf3a --- /dev/null +++ b/x-pack/plugins/canvas/public/lib/storage.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Storage } from '../../../../../src/plugins/kibana_utils/public'; +import { getWindow } from './get_window'; + +export enum StorageType { + Local = 'localStorage', + Session = 'sessionStorage', +} + +const storages: { + [x in StorageType]: Storage | null; +} = { + [StorageType.Local]: null, + [StorageType.Session]: null, +}; + +const getStorage = (type: StorageType): Storage => { + const storage = storages[type] || new Storage(getWindow()[type]); + storages[type] = storage; + + return storage; +}; + +export const getLocalStorage = (): Storage => { + return getStorage(StorageType.Local); +}; + +export const getSessionStorage = (): Storage => { + return getStorage(StorageType.Session); +}; diff --git a/x-pack/plugins/canvas/public/plugin.tsx b/x-pack/plugins/canvas/public/plugin.tsx index ba57d1475bc4ff..c2192818e528bf 100644 --- a/x-pack/plugins/canvas/public/plugin.tsx +++ b/x-pack/plugins/canvas/public/plugin.tsx @@ -4,15 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ +import { BehaviorSubject } from 'rxjs'; import { CoreSetup, CoreStart, Plugin, AppMountParameters, + AppUpdater, DEFAULT_APP_CATEGORIES, } from '../../../../src/core/public'; import { HomePublicPluginSetup } from '../../../../src/plugins/home/public'; import { initLoadingIndicator } from './lib/loading_indicator'; +import { getSessionStorage } from './lib/storage'; +import { SESSIONSTORAGE_LASTPATH } from '../common/lib/constants'; import { featureCatalogueEntry } from './feature_catalogue_entry'; import { ExpressionsSetup, ExpressionsStart } from '../../../../src/plugins/expressions/public'; import { DataPublicPluginSetup } from '../../../../src/plugins/data/public'; @@ -60,6 +64,7 @@ export type CanvasStart = void; /** @internal */ export class CanvasPlugin implements Plugin { + private appUpdater = new BehaviorSubject(() => ({})); // TODO: Do we want to completely move canvas_plugin_src into it's own plugin? private srcPlugin = new CanvasSrcPlugin(); @@ -68,12 +73,21 @@ export class CanvasPlugin this.srcPlugin.setup(core, { canvas: canvasApi }); + // Set the nav link to the last saved url if we have one in storage + const lastUrl = getSessionStorage().get(SESSIONSTORAGE_LASTPATH); + if (lastUrl) { + this.appUpdater.next(() => ({ + defaultPath: `#${lastUrl}`, + })); + } + core.application.register({ category: DEFAULT_APP_CATEGORIES.kibana, id: 'canvas', title: 'Canvas', euiIconType: 'canvasApp', order: 3000, + updater$: this.appUpdater, mount: async (params: AppMountParameters) => { // Load application bundle const { renderApp, initializeCanvas, teardownCanvas } = await import('./application'); @@ -81,7 +95,14 @@ export class CanvasPlugin // Get start services const [coreStart, depsStart] = await core.getStartServices(); - const canvasStore = await initializeCanvas(core, coreStart, plugins, depsStart, registries); + const canvasStore = await initializeCanvas( + core, + coreStart, + plugins, + depsStart, + registries, + this.appUpdater + ); const unmount = renderApp(coreStart, depsStart, params, canvasStore); diff --git a/x-pack/plugins/canvas/public/services/index.ts b/x-pack/plugins/canvas/public/services/index.ts index abc46beaa3e64e..42176f953c3318 100644 --- a/x-pack/plugins/canvas/public/services/index.ts +++ b/x-pack/plugins/canvas/public/services/index.ts @@ -4,16 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ -import { CoreSetup, CoreStart } from '../../../../../src/core/public'; +import { BehaviorSubject } from 'rxjs'; +import { CoreSetup, CoreStart, AppUpdater } from '../../../../../src/core/public'; import { CanvasSetupDeps, CanvasStartDeps } from '../plugin'; import { notifyServiceFactory } from './notify'; import { platformServiceFactory } from './platform'; +import { navLinkServiceFactory } from './nav_link'; export type CanvasServiceFactory = ( coreSetup: CoreSetup, coreStart: CoreStart, canvasSetupPlugins: CanvasSetupDeps, - canvasStartPlugins: CanvasStartDeps + canvasStartPlugins: CanvasStartDeps, + appUpdater: BehaviorSubject ) => Service; class CanvasServiceProvider { @@ -28,9 +31,16 @@ class CanvasServiceProvider { coreSetup: CoreSetup, coreStart: CoreStart, canvasSetupPlugins: CanvasSetupDeps, - canvasStartPlugins: CanvasStartDeps + canvasStartPlugins: CanvasStartDeps, + appUpdater: BehaviorSubject ) { - this.service = this.factory(coreSetup, coreStart, canvasSetupPlugins, canvasStartPlugins); + this.service = this.factory( + coreSetup, + coreStart, + canvasSetupPlugins, + canvasStartPlugins, + appUpdater + ); } getService(): Service { @@ -51,20 +61,24 @@ export type ServiceFromProvider

= P extends CanvasServiceProvider ? export const services = { notify: new CanvasServiceProvider(notifyServiceFactory), platform: new CanvasServiceProvider(platformServiceFactory), + navLink: new CanvasServiceProvider(navLinkServiceFactory), }; export interface CanvasServices { notify: ServiceFromProvider; + platform: ServiceFromProvider; + navLink: ServiceFromProvider; } export const startServices = ( coreSetup: CoreSetup, coreStart: CoreStart, canvasSetupPlugins: CanvasSetupDeps, - canvasStartPlugins: CanvasStartDeps + canvasStartPlugins: CanvasStartDeps, + appUpdater: BehaviorSubject ) => { Object.entries(services).forEach(([key, provider]) => - provider.start(coreSetup, coreStart, canvasSetupPlugins, canvasStartPlugins) + provider.start(coreSetup, coreStart, canvasSetupPlugins, canvasStartPlugins, appUpdater) ); }; @@ -72,4 +86,8 @@ export const stopServices = () => { Object.entries(services).forEach(([key, provider]) => provider.stop()); }; -export const { notify: notifyService, platform: platformService } = services; +export const { + notify: notifyService, + platform: platformService, + navLink: navLinkService, +} = services; diff --git a/x-pack/plugins/canvas/public/services/nav_link.ts b/x-pack/plugins/canvas/public/services/nav_link.ts new file mode 100644 index 00000000000000..50614984580063 --- /dev/null +++ b/x-pack/plugins/canvas/public/services/nav_link.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { CanvasServiceFactory } from '.'; +import { SESSIONSTORAGE_LASTPATH } from '../../common/lib/constants'; +import { getSessionStorage } from '../lib/storage'; + +interface NavLinkService { + updatePath: (path: string) => void; +} + +export const navLinkServiceFactory: CanvasServiceFactory = ( + coreSetup, + coreStart, + setupPlugins, + startPlugins, + appUpdater +) => { + return { + updatePath: (path: string) => { + appUpdater.next(() => ({ + defaultPath: `#${path}`, + })); + + getSessionStorage().set(SESSIONSTORAGE_LASTPATH, path); + }, + }; +}; From 8cf6730dfe016cf9fcc2c3f25f7a6f4ff03d63a6 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Thu, 7 May 2020 16:02:08 -0400 Subject: [PATCH 25/58] [Lens] Type safe migrations (#65576) * [Lens] Type safe migrations * Commit API changes * Remove optional chaining for required properties Co-authored-by: Elastic Machine --- x-pack/plugins/lens/server/migrations.ts | 101 ++++++++++++++++------- 1 file changed, 73 insertions(+), 28 deletions(-) diff --git a/x-pack/plugins/lens/server/migrations.ts b/x-pack/plugins/lens/server/migrations.ts index a15e2b3692d026..eba7865028645c 100644 --- a/x-pack/plugins/lens/server/migrations.ts +++ b/x-pack/plugins/lens/server/migrations.ts @@ -6,7 +6,35 @@ import { cloneDeep } from 'lodash'; import { fromExpression, toExpression, Ast, ExpressionFunctionAST } from '@kbn/interpreter/common'; -import { SavedObjectMigrationFn } from 'src/core/server'; +import { SavedObjectMigrationMap, SavedObjectMigrationFn } from 'src/core/server'; + +interface LensDocShape { + id?: string; + type?: string; + visualizationType: string | null; + title: string; + expression: string | null; + state: { + datasourceMetaData: { + filterableIndexPatterns: Array<{ id: string; title: string }>; + }; + datasourceStates: { + // This is hardcoded as our only datasource + indexpattern: { + layers: Record< + string, + { + columnOrder: string[]; + columns: Record; + } + >; + }; + }; + visualization: VisualizationState; + query: unknown; + filters: unknown[]; + }; +} interface XYLayerPre77 { layerId: string; @@ -15,13 +43,23 @@ interface XYLayerPre77 { accessors: string[]; } +interface XYStatePre77 { + layers: XYLayerPre77[]; +} + +interface XYStatePost77 { + layers: Array>; +} + /** * Removes the `lens_auto_date` subexpression from a stored expression * string. For example: aggConfigs={lens_auto_date aggConfigs="JSON string"} */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const removeLensAutoDate: SavedObjectMigrationFn = (doc, context) => { - const expression: string = doc.attributes?.expression; +const removeLensAutoDate: SavedObjectMigrationFn = (doc, context) => { + const expression = doc.attributes.expression; + if (!expression) { + return doc; + } try { const ast = fromExpression(expression); const newChain: ExpressionFunctionAST[] = ast.chain.map(topNode => { @@ -74,9 +112,11 @@ const removeLensAutoDate: SavedObjectMigrationFn = (doc, context) => { /** * Adds missing timeField arguments to esaggs in the Lens expression */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const addTimeFieldToEsaggs: SavedObjectMigrationFn = (doc, context) => { - const expression: string = doc.attributes?.expression; +const addTimeFieldToEsaggs: SavedObjectMigrationFn = (doc, context) => { + const expression = doc.attributes.expression; + if (!expression) { + return doc; + } try { const ast = fromExpression(expression); @@ -133,27 +173,32 @@ const addTimeFieldToEsaggs: SavedObjectMigrationFn = (doc, context) => } }; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const migrations: Record> = { - '7.7.0': doc => { - const newDoc = cloneDeep(doc); - if (newDoc.attributes?.visualizationType === 'lnsXY') { - const datasourceState = newDoc.attributes.state?.datasourceStates?.indexpattern; - const datasourceLayers = datasourceState?.layers ?? {}; - const xyState = newDoc.attributes.state?.visualization; - newDoc.attributes.state.visualization.layers = xyState.layers.map((layer: XYLayerPre77) => { - const layerId = layer.layerId; - const datasource = datasourceLayers[layerId]; - return { - ...layer, - xAccessor: datasource?.columns[layer.xAccessor] ? layer.xAccessor : undefined, - splitAccessor: datasource?.columns[layer.splitAccessor] ? layer.splitAccessor : undefined, - accessors: layer.accessors.filter(accessor => !!datasource?.columns[accessor]), - }; - }) as typeof xyState.layers; - } - return newDoc; - }, +const removeInvalidAccessors: SavedObjectMigrationFn< + LensDocShape, + LensDocShape +> = doc => { + const newDoc = cloneDeep(doc); + if (newDoc.attributes.visualizationType === 'lnsXY') { + const datasourceLayers = newDoc.attributes.state.datasourceStates.indexpattern.layers || {}; + const xyState = newDoc.attributes.state.visualization; + (newDoc.attributes as LensDocShape< + XYStatePost77 + >).state.visualization.layers = xyState.layers.map((layer: XYLayerPre77) => { + const layerId = layer.layerId; + const datasource = datasourceLayers[layerId]; + return { + ...layer, + xAccessor: datasource?.columns[layer.xAccessor] ? layer.xAccessor : undefined, + splitAccessor: datasource?.columns[layer.splitAccessor] ? layer.splitAccessor : undefined, + accessors: layer.accessors.filter(accessor => !!datasource?.columns[accessor]), + }; + }); + } + return newDoc; +}; + +export const migrations: SavedObjectMigrationMap = { + '7.7.0': removeInvalidAccessors, // The order of these migrations matter, since the timefield migration relies on the aggConfigs // sitting directly on the esaggs as an argument and not a nested function (which lens_auto_date was). '7.8.0': (doc, context) => addTimeFieldToEsaggs(removeLensAutoDate(doc, context), context), From 3369f2093a3c9d6ba1c796946707b385de81d15e Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Thu, 7 May 2020 16:10:02 -0400 Subject: [PATCH 26/58] Removed skip to enable test. (#65575) --- .../apis/management/index_management/indices.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/test/api_integration/apis/management/index_management/indices.js b/x-pack/test/api_integration/apis/management/index_management/indices.js index 04121928087007..ac50a20b02e3ba 100644 --- a/x-pack/test/api_integration/apis/management/index_management/indices.js +++ b/x-pack/test/api_integration/apis/management/index_management/indices.js @@ -34,8 +34,7 @@ export default function({ getService }) { clearCache, } = registerHelpers({ supertest }); - // FLAKY: https://github.com/elastic/kibana/issues/64473 - describe.skip('indices', () => { + describe('indices', () => { after(() => Promise.all([cleanUpEsResources()])); describe('clear cache', () => { From 5f0d96d953dd7734ca1ed313e19d7f103691ff36 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Thu, 7 May 2020 23:51:39 +0300 Subject: [PATCH 27/58] [Data plugin] cleanup - remove unused getRoutes / routes from indexPattern object (#65683) * [Data plugin] cleanup - remove unused getRoutes / routes from indexPattern object * Update index.ts --- ...plugin-plugins-data-public.indexpattern.md | 1 - ...plugins-data-public.indexpattern.routes.md | 17 ------- ...lugin-plugins-data-public.indexpatterns.md | 1 - src/plugins/data/public/index.ts | 3 -- .../data/public/index_patterns/index.ts | 1 - .../index_patterns/index_pattern.ts | 6 +-- .../data/public/index_patterns/utils.ts | 10 ---- src/plugins/data/public/public.api.md | 50 ++++++++----------- src/test_utils/public/stub_index_pattern.js | 1 - 9 files changed, 21 insertions(+), 69 deletions(-) delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.routes.md diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md index 21a155ba977c96..60cbfd30e667d7 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md @@ -28,7 +28,6 @@ export declare class IndexPattern implements IIndexPattern | [formatHit](./kibana-plugin-plugins-data-public.indexpattern.formathit.md) | | any | | | [id](./kibana-plugin-plugins-data-public.indexpattern.id.md) | | string | | | [metaFields](./kibana-plugin-plugins-data-public.indexpattern.metafields.md) | | string[] | | -| [routes](./kibana-plugin-plugins-data-public.indexpattern.routes.md) | | {
edit: string;
addField: string;
indexedFields: string;
scriptedFields: string;
sourceFilters: string;
} | | | [timeFieldName](./kibana-plugin-plugins-data-public.indexpattern.timefieldname.md) | | string | undefined | | | [title](./kibana-plugin-plugins-data-public.indexpattern.title.md) | | string | | | [type](./kibana-plugin-plugins-data-public.indexpattern.type.md) | | string | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.routes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.routes.md deleted file mode 100644 index 81e7abd4f9609e..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.routes.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [routes](./kibana-plugin-plugins-data-public.indexpattern.routes.md) - -## IndexPattern.routes property - -Signature: - -```typescript -get routes(): { - edit: string; - addField: string; - indexedFields: string; - scriptedFields: string; - sourceFilters: string; - }; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md index fa97666a61b939..39c8b0a700c8a3 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md @@ -18,7 +18,6 @@ indexPatterns: { validate: typeof validateIndexPattern; getFromSavedObject: typeof getFromSavedObject; flattenHitWrapper: typeof flattenHitWrapper; - getRoutes: typeof getRoutes; formatHitProvider: typeof formatHitProvider; } ``` diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index d4433f3825feae..69dd97a8817976 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -230,7 +230,6 @@ import { validateIndexPattern, getFromSavedObject, flattenHitWrapper, - getRoutes, formatHitProvider, } from './index_patterns'; @@ -246,8 +245,6 @@ export const indexPatterns = { validate: validateIndexPattern, getFromSavedObject, flattenHitWrapper, - // TODO: exported only in stub_index_pattern test. Move into data plugin and remove export. - getRoutes, formatHitProvider, }; diff --git a/src/plugins/data/public/index_patterns/index.ts b/src/plugins/data/public/index_patterns/index.ts index e05db0e4d4cec0..58c2cae1de0f38 100644 --- a/src/plugins/data/public/index_patterns/index.ts +++ b/src/plugins/data/public/index_patterns/index.ts @@ -26,7 +26,6 @@ export { getFromSavedObject, isDefault, } from './lib'; -export { getRoutes } from './utils'; export { flattenHitWrapper, formatHitProvider } from './index_patterns'; export { getIndexPatternFieldListCreator, Field, IIndexPatternFieldList } from './fields'; diff --git a/src/plugins/data/public/index_patterns/index_patterns/index_pattern.ts b/src/plugins/data/public/index_patterns/index_patterns/index_pattern.ts index f39be78433710f..98ec4495cef29a 100644 --- a/src/plugins/data/public/index_patterns/index_patterns/index_pattern.ts +++ b/src/plugins/data/public/index_patterns/index_patterns/index_pattern.ts @@ -30,7 +30,7 @@ import { import { ES_FIELD_TYPES, KBN_FIELD_TYPES, IIndexPattern, IFieldType } from '../../../common'; -import { findByTitle, getRoutes } from '../utils'; +import { findByTitle } from '../utils'; import { IndexPatternMissingIndices } from '../lib'; import { Field, IIndexPatternFieldList, getIndexPatternFieldListCreator } from '../fields'; import { createFieldsFetcher } from './_fields_fetcher'; @@ -190,10 +190,6 @@ export class IndexPattern implements IIndexPattern { return this.indexFields(forceFieldRefresh); } - public get routes() { - return getRoutes(); - } - getComputedFields() { const scriptFields: any = {}; if (!this.fields) { diff --git a/src/plugins/data/public/index_patterns/utils.ts b/src/plugins/data/public/index_patterns/utils.ts index 0ecc87f3080fd9..c3f9af62f8c0e7 100644 --- a/src/plugins/data/public/index_patterns/utils.ts +++ b/src/plugins/data/public/index_patterns/utils.ts @@ -48,13 +48,3 @@ export async function findByTitle( (obj: SimpleSavedObject) => obj.get('title').toLowerCase() === title.toLowerCase() ); } - -export function getRoutes() { - return { - edit: '/management/kibana/index_patterns/{{id}}', - addField: '/management/kibana/index_patterns/{{id}}/create-field', - indexedFields: '/management/kibana/index_patterns/{{id}}?_a=(tab:indexedFields)', - scriptedFields: '/management/kibana/index_patterns/{{id}}?_a=(tab:scriptedFields)', - sourceFilters: '/management/kibana/index_patterns/{{id}}?_a=(tab:sourceFilters)', - }; -} diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index cb1e1d2bd0efe8..ee56ad60441f40 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -912,14 +912,6 @@ export class IndexPattern implements IIndexPattern { // (undocumented) removeScriptedField(field: IFieldType): Promise; // (undocumented) - get routes(): { - edit: string; - addField: string; - indexedFields: string; - scriptedFields: string; - sourceFilters: string; - }; - // (undocumented) save(saveAttempts?: number): Promise; // (undocumented) timeFieldName: string | undefined; @@ -1021,7 +1013,6 @@ export const indexPatterns: { validate: typeof validateIndexPattern; getFromSavedObject: typeof getFromSavedObject; flattenHitWrapper: typeof flattenHitWrapper; - getRoutes: typeof getRoutes; formatHitProvider: typeof formatHitProvider; }; @@ -1812,27 +1803,26 @@ export type TSearchStrategyProvider = (context: ISearc // src/plugins/data/public/index.ts:179:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:179:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:179:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "getFromSavedObject" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "getRoutes" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:238:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:377:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:377:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:377:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:377:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:379:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:380:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:389:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:390:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:391:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:395:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:396:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:399:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:400:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:403:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:237:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:237:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:237:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:237:27 - (ae-forgotten-export) The symbol "getFromSavedObject" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:237:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:237:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:374:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:374:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:374:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:374:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:376:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:377:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:386:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:387:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:388:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:392:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:393:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:396:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:397:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:400:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts // src/plugins/data/public/query/state_sync/connect_to_query_state.ts:33:33 - (ae-forgotten-export) The symbol "FilterStateStore" needs to be exported by the entry point index.d.ts // src/plugins/data/public/query/state_sync/connect_to_query_state.ts:37:1 - (ae-forgotten-export) The symbol "QueryStateChange" needs to be exported by the entry point index.d.ts // src/plugins/data/public/types.ts:52:5 - (ae-forgotten-export) The symbol "createFiltersFromValueClickAction" needs to be exported by the entry point index.d.ts diff --git a/src/test_utils/public/stub_index_pattern.js b/src/test_utils/public/stub_index_pattern.js index 98ada2471e1ec9..29fb4c20f692e7 100644 --- a/src/test_utils/public/stub_index_pattern.js +++ b/src/test_utils/public/stub_index_pattern.js @@ -65,7 +65,6 @@ export default function StubIndexPattern(pattern, getConfig, timeField, fields, this.getSourceFiltering = sinon.stub(); this.metaFields = ['_id', '_type', '_source']; this.fieldFormatMap = {}; - this.routes = indexPatterns.getRoutes(); this.getComputedFields = IndexPattern.prototype.getComputedFields.bind(this); this.flattenHit = indexPatterns.flattenHitWrapper(this, this.metaFields); From 034f2590f14148a69c05a52efb3329a05f2a4a0f Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Thu, 7 May 2020 16:54:41 -0400 Subject: [PATCH 28/58] [ML] DFA: ensure at least one field is included in analysis before job can be created (#65320) * ensure at least one field besides depVar included in analysis * show requiredFieldsError above excluded fields * update jest test * update fieldSelection explainResponse type --- .../data_frame_analytics/common/analytics.ts | 2 +- .../create_analytics_form.test.tsx | 2 +- .../create_analytics_form.tsx | 61 ++++++++++++++++--- .../create_analytics_form/job_type.tsx | 1 + .../use_create_analytics_form/reducer.ts | 4 ++ .../hooks/use_create_analytics_form/state.ts | 2 + 6 files changed, 61 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts index fb3b2b35199477..7501fe3d82fc6e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/common/analytics.ts @@ -91,7 +91,7 @@ export interface FieldSelectionItem { } export interface DfAnalyticsExplainResponse { - field_selection: FieldSelectionItem[]; + field_selection?: FieldSelectionItem[]; memory_estimation: { expected_memory_without_disk: string; expected_memory_with_disk: string; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx index 92de5ad7be21e3..85cd70912b41f2 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx @@ -53,7 +53,7 @@ describe('Data Frame Analytics: ', () => { ); const euiFormRows = wrapper.find('EuiFormRow'); - expect(euiFormRows.length).toBe(9); + expect(euiFormRows.length).toBe(10); const row1 = euiFormRows.at(0); expect(row1.find('label').text()).toBe('Job type'); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx index 199100d8b5ab00..11052b171845d0 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx @@ -48,6 +48,13 @@ import { } from '../../../../common/analytics'; import { shouldAddAsDepVarOption, OMIT_FIELDS } from './form_options_validation'; +const requiredFieldsErrorText = i18n.translate( + 'xpack.ml.dataframe.analytics.create.requiredFieldsErrorMessage', + { + defaultMessage: 'At least one field must be included in the analysis.', + } +); + export const CreateAnalyticsForm: FC = ({ actions, state }) => { const { services: { docLinks }, @@ -96,6 +103,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta numTopFeatureImportanceValuesValid, previousJobType, previousSourceIndex, + requiredFieldsError, sourceIndex, sourceIndexNameEmpty, sourceIndexNameValid, @@ -158,6 +166,8 @@ export const CreateAnalyticsForm: FC = ({ actions, sta }; const debouncedGetExplainData = debounce(async () => { + const jobTypeOrIndexChanged = + previousSourceIndex !== sourceIndex || previousJobType !== jobType; const shouldUpdateModelMemoryLimit = !firstUpdate.current || !modelMemoryLimit; const shouldUpdateEstimatedMml = !firstUpdate.current || !modelMemoryLimit || estimatedModelMemoryLimit === ''; @@ -167,7 +177,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta } // Reset if sourceIndex or jobType changes (jobType requires dependent_variable to be set - // which won't be the case if switching from outlier detection) - if (previousSourceIndex !== sourceIndex || previousJobType !== jobType) { + if (jobTypeOrIndexChanged) { setFormState({ loadingFieldOptions: true, }); @@ -186,8 +196,21 @@ export const CreateAnalyticsForm: FC = ({ actions, sta setEstimatedModelMemoryLimit(expectedMemoryWithoutDisk); } + const fieldSelection: FieldSelectionItem[] | undefined = resp.field_selection; + + let hasRequiredFields = false; + if (fieldSelection) { + for (let i = 0; i < fieldSelection.length; i++) { + const field = fieldSelection[i]; + if (field.is_included === true && field.is_required === false) { + hasRequiredFields = true; + break; + } + } + } + // If sourceIndex has changed load analysis field options again - if (previousSourceIndex !== sourceIndex || previousJobType !== jobType) { + if (jobTypeOrIndexChanged) { const analyzedFieldsOptions: EuiComboBoxOptionOption[] = []; if (resp.field_selection) { @@ -204,21 +227,24 @@ export const CreateAnalyticsForm: FC = ({ actions, sta loadingFieldOptions: false, fieldOptionsFetchFail: false, maxDistinctValuesError: undefined, + requiredFieldsError: !hasRequiredFields ? requiredFieldsErrorText : undefined, }); } else { setFormState({ ...(shouldUpdateModelMemoryLimit ? { modelMemoryLimit: expectedMemoryWithoutDisk } : {}), + requiredFieldsError: !hasRequiredFields ? requiredFieldsErrorText : undefined, }); } } catch (e) { let errorMessage; if ( jobType === ANALYSIS_CONFIG_TYPE.CLASSIFICATION && - e.message !== undefined && - e.message.includes('status_exception') && - e.message.includes('must have at most') + e.body && + e.body.message !== undefined && + e.body.message.includes('status_exception') && + e.body.message.includes('must have at most') ) { - errorMessage = e.message; + errorMessage = e.body.message; } const fallbackModelMemoryLimit = jobType !== undefined @@ -321,6 +347,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta excludesOptions: [], previousSourceIndex: sourceIndex, sourceIndex: selectedOptions[0].label || '', + requiredFieldsError: undefined, }); }; @@ -368,6 +395,9 @@ export const CreateAnalyticsForm: FC = ({ actions, sta forceInput.current.dispatchEvent(evt); }, []); + const noSupportetdAnalysisFields = + excludesOptions.length === 0 && fieldOptionsFetchFail === false && !sourceIndexNameEmpty; + return ( @@ -715,18 +745,31 @@ export const CreateAnalyticsForm: FC = ({ actions, sta )} + + + = ({ type, setFormState }) => { previousJobType: type, jobType: value, excludes: [], + requiredFieldsError: undefined, }); }} data-test-subj="mlAnalyticsCreateJobFlyoutJobTypeSelect" diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts index d55eb14a20e290..1cab42d8ee12d1 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts @@ -124,6 +124,7 @@ export const validateAdvancedEditor = (state: State): State => { createIndexPattern, excludes, maxDistinctValuesError, + requiredFieldsError, } = state.form; const { jobConfig } = state; @@ -330,6 +331,7 @@ export const validateAdvancedEditor = (state: State): State => { state.isValid = maxDistinctValuesError === undefined && + requiredFieldsError === undefined && excludesValid && trainingPercentValid && state.form.modelMemoryLimitUnitValid && @@ -397,6 +399,7 @@ const validateForm = (state: State): State => { maxDistinctValuesError, modelMemoryLimit, numTopFeatureImportanceValuesValid, + requiredFieldsError, } = state.form; const { estimatedModelMemoryLimit } = state; @@ -412,6 +415,7 @@ const validateForm = (state: State): State => { state.isValid = maxDistinctValuesError === undefined && + requiredFieldsError === undefined && !jobTypeEmpty && !mmlValidationResult && !jobIdEmpty && diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts index 70840a442f6f6e..8ca985a537b6e7 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts @@ -76,6 +76,7 @@ export interface State { numTopFeatureImportanceValuesValid: boolean; previousJobType: null | AnalyticsJobType; previousSourceIndex: EsIndexName | undefined; + requiredFieldsError: string | undefined; sourceIndex: EsIndexName; sourceIndexNameEmpty: boolean; sourceIndexNameValid: boolean; @@ -133,6 +134,7 @@ export const getInitialState = (): State => ({ numTopFeatureImportanceValuesValid: true, previousJobType: null, previousSourceIndex: undefined, + requiredFieldsError: undefined, sourceIndex: '', sourceIndexNameEmpty: true, sourceIndexNameValid: false, From d7f847e91d7ee4ca5b4142cfd8341f892afd30a2 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 8 May 2020 00:45:57 +0100 Subject: [PATCH 29/58] fix(NA): noParse regex for windows on kbn optimizer (#65755) --- packages/kbn-optimizer/src/worker/webpack.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts index 95e826e7620aa6..49bcc6e7e704c2 100644 --- a/packages/kbn-optimizer/src/worker/webpack.config.ts +++ b/packages/kbn-optimizer/src/worker/webpack.config.ts @@ -137,9 +137,9 @@ export function getWebpackConfig(bundle: Bundle, worker: WorkerConfig) { // or which have require() statements that should be ignored because the file is // already bundled with all its necessary depedencies noParse: [ - /[\///]node_modules[\///]elasticsearch-browser[\///]/, - /[\///]node_modules[\///]lodash[\///]index\.js$/, - /[\///]node_modules[\///]vega-lib[\///]build[\///]vega\.js$/, + /[\/\\]node_modules[\/\\]elasticsearch-browser[\/\\]/, + /[\/\\]node_modules[\/\\]lodash[\/\\]index\.js$/, + /[\/\\]node_modules[\/\\]vega-lib[\/\\]build[\/\\]vega\.js$/, ], rules: [ From 6bf0890186bf78b02cd74de962d90619ca27c56b Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Thu, 7 May 2020 16:53:28 -0700 Subject: [PATCH 30/58] [Reporting] APM integration for baseline performance measurements (#59967) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * apm stuff * fix cluster_client * fix snapshot * tracker utility for generate_pdf * call apm.startSpan instead of txn.startSpan * Fix async call to end transaction * fix typescript * remove captuureErrors * restore accidental removal * add startTrace lib * fix import * fix imports * ts fix * fix generate_png to not format base64 to buffer and back to base64 * 💅 * revert change to cluster client * fix unused translation Co-authored-by: Elastic Machine --- .../screenshots/get_element_position_data.ts | 7 +- .../lib/screenshots/get_number_of_items.ts | 5 +- .../common/lib/screenshots/get_screenshots.ts | 28 ++----- .../common/lib/screenshots/get_time_range.ts | 5 +- .../common/lib/screenshots/inject_css.ts | 5 +- .../common/lib/screenshots/observable.ts | 23 ++++- .../common/lib/screenshots/open_url.ts | 10 +-- .../common/lib/screenshots/types.ts | 2 +- .../common/lib/screenshots/wait_for_render.ts | 6 +- .../screenshots/wait_for_visualizations.ts | 5 +- .../png/server/execute_job/index.test.ts | 8 +- .../png/server/execute_job/index.ts | 17 +++- .../png/server/lib/generate_png.ts | 14 +++- .../printable_pdf/server/execute_job/index.ts | 30 +++++-- .../printable_pdf/server/lib/generate_pdf.ts | 37 ++++++++- .../printable_pdf/server/lib/tracker.ts | 83 +++++++++++++++++++ .../plugins/reporting/server/lib/index.ts | 3 +- .../plugins/reporting/server/lib/trace.ts | 14 ++++ .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 20 files changed, 243 insertions(+), 61 deletions(-) create mode 100644 x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/tracker.ts create mode 100644 x-pack/legacy/plugins/reporting/server/lib/trace.ts diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_element_position_data.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_element_position_data.ts index 2f93765165e50d..3999393600e481 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_element_position_data.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_element_position_data.ts @@ -6,16 +6,17 @@ import { i18n } from '@kbn/i18n'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; +import { LevelLogger as Logger, startTrace } from '../../../../server/lib'; import { LayoutInstance } from '../../layouts/layout'; -import { AttributesMap, ElementsPositionAndAttribute } from './types'; -import { Logger } from '../../../../types'; import { CONTEXT_ELEMENTATTRIBUTES } from './constants'; +import { AttributesMap, ElementsPositionAndAttribute } from './types'; export const getElementPositionAndAttributes = async ( browser: HeadlessBrowser, layout: LayoutInstance, logger: Logger ): Promise => { + const endTrace = startTrace('get_element_position_data', 'read'); const { screenshot: screenshotSelector } = layout.selectors; // data-shared-items-container let elementsPositionAndAttributes: ElementsPositionAndAttribute[] | null; try { @@ -69,5 +70,7 @@ export const getElementPositionAndAttributes = async ( elementsPositionAndAttributes = null; } + endTrace(); + return elementsPositionAndAttributes; }; diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_number_of_items.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_number_of_items.ts index 57d025890d3e22..d0c1a2a3ce6722 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_number_of_items.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_number_of_items.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; -import { LevelLogger } from '../../../../server/lib'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { CaptureConfig } from '../../../../server/types'; import { LayoutInstance } from '../../layouts/layout'; import { CONTEXT_GETNUMBEROFITEMS, CONTEXT_READMETADATA } from './constants'; @@ -17,6 +17,7 @@ export const getNumberOfItems = async ( layout: LayoutInstance, logger: LevelLogger ): Promise => { + const endTrace = startTrace('get_number_of_items', 'read'); const { renderComplete: renderCompleteSelector, itemsCountAttribute } = layout.selectors; let itemsCount: number; @@ -70,5 +71,7 @@ export const getNumberOfItems = async ( itemsCount = 1; } + endTrace(); + return itemsCount; }; diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_screenshots.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_screenshots.ts index d50ac64743f078..bc9e17854b27d9 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_screenshots.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_screenshots.ts @@ -6,26 +6,9 @@ import { i18n } from '@kbn/i18n'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; -import { LevelLogger } from '../../../../server/lib'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { Screenshot, ElementsPositionAndAttribute } from './types'; -const getAsyncDurationLogger = (logger: LevelLogger) => { - return async (description: string, promise: Promise) => { - const start = Date.now(); - const result = await promise; - logger.debug( - i18n.translate('xpack.reporting.screencapture.asyncTook', { - defaultMessage: '{description} took {took}ms', - values: { - description, - took: Date.now() - start, - }, - }) - ); - return result; - }; -}; - export const getScreenshots = async ( browser: HeadlessBrowser, elementsPositionAndAttributes: ElementsPositionAndAttribute[], @@ -37,21 +20,20 @@ export const getScreenshots = async ( }) ); - const asyncDurationLogger = getAsyncDurationLogger(logger); const screenshots: Screenshot[] = []; for (let i = 0; i < elementsPositionAndAttributes.length; i++) { + const endTrace = startTrace('get_screenshots', 'read'); const item = elementsPositionAndAttributes[i]; - const base64EncodedData = await asyncDurationLogger( - `screenshot #${i + 1}`, - browser.screenshot(item.position) - ); + const base64EncodedData = await browser.screenshot(item.position); screenshots.push({ base64EncodedData, title: item.attributes.title, description: item.attributes.description, }); + + endTrace(); } logger.info( diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_time_range.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_time_range.ts index c1c43ed4525941..bcd4cf9000df45 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_time_range.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_time_range.ts @@ -5,7 +5,7 @@ */ import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; -import { LevelLogger } from '../../../../server/lib'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { LayoutInstance } from '../../layouts/layout'; import { CONTEXT_GETTIMERANGE } from './constants'; import { TimeRange } from './types'; @@ -15,6 +15,7 @@ export const getTimeRange = async ( layout: LayoutInstance, logger: LevelLogger ): Promise => { + const endTrace = startTrace('get_time_range', 'read'); logger.debug('getting timeRange'); const timeRange: TimeRange | null = await browser.evaluate( @@ -45,5 +46,7 @@ export const getTimeRange = async ( logger.debug('no timeRange'); } + endTrace(); + return timeRange; }; diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/inject_css.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/inject_css.ts index cb2673e85186ba..40bb84870b16de 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/inject_css.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/inject_css.ts @@ -7,8 +7,8 @@ import { i18n } from '@kbn/i18n'; import fs from 'fs'; import { promisify } from 'util'; -import { LevelLogger } from '../../../../server/lib'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { Layout } from '../../layouts/layout'; import { CONTEXT_INJECTCSS } from './constants'; @@ -19,6 +19,7 @@ export const injectCustomCss = async ( layout: Layout, logger: LevelLogger ): Promise => { + const endTrace = startTrace('inject_css', 'correction'); logger.debug( i18n.translate('xpack.reporting.screencapture.injectingCss', { defaultMessage: 'injecting custom css', @@ -49,4 +50,6 @@ export const injectCustomCss = async ( }) ); } + + endTrace(); }; diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/observable.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/observable.ts index eb96753f0ce183..282490a28d591e 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/observable.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/observable.ts @@ -4,8 +4,18 @@ * you may not use this file except in compliance with the Elastic License. */ +import apm from 'elastic-apm-node'; import * as Rx from 'rxjs'; -import { catchError, concatMap, first, mergeMap, take, takeUntil, toArray } from 'rxjs/operators'; +import { + catchError, + concatMap, + first, + mergeMap, + take, + takeUntil, + tap, + toArray, +} from 'rxjs/operators'; import { CaptureConfig } from '../../../../server/types'; import { DEFAULT_PAGELOAD_SELECTOR } from '../../constants'; import { HeadlessChromiumDriverFactory } from '../../../../types'; @@ -41,6 +51,9 @@ export function screenshotsObservableFactory( layout, browserTimezone, }: ScreenshotObservableOpts): Rx.Observable { + const apmTrans = apm.startTransaction(`reporting screenshot pipeline`, 'reporting'); + + const apmCreatePage = apmTrans?.startSpan('create_page', 'wait'); const create$ = browserDriverFactory.createPage( { viewport: layout.getBrowserViewport(), browserTimezone }, logger @@ -48,6 +61,7 @@ export function screenshotsObservableFactory( return create$.pipe( mergeMap(({ driver, exit$ }) => { + if (apmCreatePage) apmCreatePage.end(); return Rx.from(urls).pipe( concatMap((url, index) => { const setup$: Rx.Observable = Rx.of(1).pipe( @@ -81,10 +95,12 @@ export function screenshotsObservableFactory( // allows for them to be displayed properly in many cases await injectCustomCss(driver, layout, logger); + const apmPositionElements = apmTrans?.startSpan('position_elements', 'correction'); if (layout.positionElements) { // position panel elements for print layout await layout.positionElements(driver, logger); } + if (apmPositionElements) apmPositionElements.end(); await waitForRenderComplete(captureConfig, driver, layout, logger); }), @@ -125,7 +141,10 @@ export function screenshotsObservableFactory( toArray() ); }), - first() + first(), + tap(() => { + if (apmTrans) apmTrans.end(); + }) ); }; } diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/open_url.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/open_url.ts index 92a58aded5f66c..a0708b7dba36bc 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/open_url.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/open_url.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; -import { LevelLogger } from '../../../../server/lib'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { CaptureConfig } from '../../../../server/types'; import { ConditionalHeaders } from '../../../../types'; @@ -18,6 +18,7 @@ export const openUrl = async ( conditionalHeaders: ConditionalHeaders, logger: LevelLogger ): Promise => { + const endTrace = startTrace('open_url', 'wait'); try { await browser.open( url, @@ -32,11 +33,10 @@ export const openUrl = async ( throw new Error( i18n.translate('xpack.reporting.screencapture.couldntLoadKibana', { defaultMessage: `An error occurred when trying to open the Kibana URL. You may need to increase '{configKey}'. {error}`, - values: { - configKey: 'xpack.reporting.capture.timeouts.openUrl', - error: err, - }, + values: { configKey: 'xpack.reporting.capture.timeouts.openUrl', error: err }, }) ); } + + endTrace(); }; diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/types.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/types.ts index e113a5d228cd79..13ddf5eb74fcff 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/types.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/types.ts @@ -30,7 +30,7 @@ export interface ElementsPositionAndAttribute { } export interface Screenshot { - base64EncodedData: Buffer; + base64EncodedData: string; title: string; description: string; } diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_render.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_render.ts index 069896c8d9e90c..fe92fbc9077e65 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_render.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_render.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; -import { LevelLogger } from '../../../../server/lib'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { CaptureConfig } from '../../../../server/types'; import { LayoutInstance } from '../../layouts/layout'; import { CONTEXT_WAITFORRENDER } from './constants'; @@ -17,6 +17,8 @@ export const waitForRenderComplete = async ( layout: LayoutInstance, logger: LevelLogger ) => { + const endTrace = startTrace('wait_for_render', 'wait'); + logger.debug( i18n.translate('xpack.reporting.screencapture.waitingForRenderComplete', { defaultMessage: 'waiting for rendering to complete', @@ -76,5 +78,7 @@ export const waitForRenderComplete = async ( defaultMessage: 'rendering is complete', }) ); + + endTrace(); }); }; diff --git a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_visualizations.ts b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_visualizations.ts index 7960e1552e5590..d456c4089ecee7 100644 --- a/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_visualizations.ts +++ b/x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_visualizations.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers'; -import { LevelLogger } from '../../../../server/lib'; +import { LevelLogger, startTrace } from '../../../../server/lib'; import { CaptureConfig } from '../../../../server/types'; import { LayoutInstance } from '../../layouts/layout'; import { CONTEXT_WAITFORELEMENTSTOBEINDOM } from './constants'; @@ -29,6 +29,7 @@ export const waitForVisualizations = async ( layout: LayoutInstance, logger: LevelLogger ): Promise => { + const endTrace = startTrace('wait_for_visualizations', 'wait'); const { renderComplete: renderCompleteSelector } = layout.selectors; logger.debug( @@ -63,4 +64,6 @@ export const waitForVisualizations = async ( }) ); } + + endTrace(); }; diff --git a/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts b/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts index 9d3deda5d98bec..fd879f09872323 100644 --- a/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts +++ b/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.test.ts @@ -126,7 +126,7 @@ test(`returns content_type of application/png`, async () => { const encryptedHeaders = await encryptHeaders({}); const generatePngObservable = (await generatePngObservableFactory(mockReporting)) as jest.Mock; - generatePngObservable.mockReturnValue(Rx.of(Buffer.from(''))); + generatePngObservable.mockReturnValue(Rx.of('foo')); const { content_type: contentType } = await executeJob( 'pngJobId', @@ -137,10 +137,10 @@ test(`returns content_type of application/png`, async () => { }); test(`returns content of generatePng getBuffer base64 encoded`, async () => { - const testContent = 'test content'; + const testContent = 'raw string from get_screenhots'; const generatePngObservable = (await generatePngObservableFactory(mockReporting)) as jest.Mock; - generatePngObservable.mockReturnValue(Rx.of({ buffer: Buffer.from(testContent) })); + generatePngObservable.mockReturnValue(Rx.of({ base64: testContent })); const executeJob = await executeJobFactory(mockReporting, getMockLogger()); const encryptedHeaders = await encryptHeaders({}); @@ -150,5 +150,5 @@ test(`returns content of generatePng getBuffer base64 encoded`, async () => { cancellationToken ); - expect(content).toEqual(Buffer.from(testContent).toString('base64')); + expect(content).toEqual(testContent); }); diff --git a/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.ts b/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.ts index 0ffd42d0b52f9c..88c2d8a9fe4bbe 100644 --- a/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.ts +++ b/x-pack/legacy/plugins/reporting/export_types/png/server/execute_job/index.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import apm from 'elastic-apm-node'; import * as Rx from 'rxjs'; import { catchError, map, mergeMap, takeUntil } from 'rxjs/operators'; import { PNG_JOB_TYPE } from '../../../../common/constants'; @@ -29,6 +30,10 @@ export const executeJobFactory: QueuedPngExecutorFactory = async function execut const logger = parentLogger.clone([PNG_JOB_TYPE, 'execute']); return async function executeJob(jobId: string, job: JobDocPayloadPNG, cancellationToken: any) { + const apmTrans = apm.startTransaction('reporting execute_job png', 'reporting'); + const apmGetAssets = apmTrans?.startSpan('get_assets', 'setup'); + let apmGeneratePng: { end: () => void } | null | undefined; + const generatePngObservable = await generatePngObservableFactory(reporting); const jobLogger = logger.clone([jobId]); const process$: Rx.Observable = Rx.of(1).pipe( @@ -38,6 +43,9 @@ export const executeJobFactory: QueuedPngExecutorFactory = async function execut mergeMap(conditionalHeaders => { const urls = getFullUrls({ config, job }); const hashUrl = urls[0]; + if (apmGetAssets) apmGetAssets.end(); + + apmGeneratePng = apmTrans?.startSpan('generate_png_pipeline', 'execute'); return generatePngObservable( jobLogger, hashUrl, @@ -46,11 +54,14 @@ export const executeJobFactory: QueuedPngExecutorFactory = async function execut job.layout ); }), - map(({ buffer, warnings }) => { + map(({ base64, warnings }) => { + if (apmGeneratePng) apmGeneratePng.end(); + return { content_type: 'image/png', - content: buffer.toString('base64'), - size: buffer.byteLength, + content: base64, + size: (base64 && base64.length) || 0, + warnings, }; }), diff --git a/x-pack/legacy/plugins/reporting/export_types/png/server/lib/generate_png.ts b/x-pack/legacy/plugins/reporting/export_types/png/server/lib/generate_png.ts index c03ea170f76eee..c79aa281870526 100644 --- a/x-pack/legacy/plugins/reporting/export_types/png/server/lib/generate_png.ts +++ b/x-pack/legacy/plugins/reporting/export_types/png/server/lib/generate_png.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import apm from 'elastic-apm-node'; import * as Rx from 'rxjs'; import { map } from 'rxjs/operators'; import { ReportingCore } from '../../../../server'; @@ -22,12 +23,16 @@ export async function generatePngObservableFactory(reporting: ReportingCore) { browserTimezone: string, conditionalHeaders: ConditionalHeaders, layoutParams: LayoutParams - ): Rx.Observable<{ buffer: Buffer; warnings: string[] }> { + ): Rx.Observable<{ base64: string | null; warnings: string[] }> { + const apmTrans = apm.startTransaction('reporting generate_png', 'reporting'); + const apmLayout = apmTrans?.startSpan('create_layout', 'setup'); if (!layoutParams || !layoutParams.dimensions) { throw new Error(`LayoutParams.Dimensions is undefined.`); } - const layout = new PreserveLayout(layoutParams.dimensions); + if (apmLayout) apmLayout.end(); + + const apmScreenshots = apmTrans?.startSpan('screenshots_pipeline', 'setup'); const screenshots$ = getScreenshots({ logger, urls: [url], @@ -36,8 +41,11 @@ export async function generatePngObservableFactory(reporting: ReportingCore) { browserTimezone, }).pipe( map((results: ScreenshotResults[]) => { + if (apmScreenshots) apmScreenshots.end(); + if (apmTrans) apmTrans.end(); + return { - buffer: results[0].screenshots[0].base64EncodedData, + base64: results[0].screenshots[0].base64EncodedData, warnings: results.reduce((found, current) => { if (current.error) { found.push(current.error.message); diff --git a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.ts b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.ts index 3d69042b6c7abe..5aad66c53a998f 100644 --- a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.ts +++ b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/execute_job/index.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import apm from 'elastic-apm-node'; import * as Rx from 'rxjs'; import { catchError, map, mergeMap, takeUntil } from 'rxjs/operators'; import { PDF_JOB_TYPE } from '../../../../common/constants'; @@ -31,6 +32,10 @@ export const executeJobFactory: QueuedPdfExecutorFactory = async function execut const logger = parentLogger.clone([PDF_JOB_TYPE, 'execute']); return async function executeJob(jobId: string, job: JobDocPayloadPDF, cancellationToken: any) { + const apmTrans = apm.startTransaction('reporting execute_job pdf', 'reporting'); + const apmGetAssets = apmTrans?.startSpan('get_assets', 'setup'); + let apmGeneratePdf: { end: () => void } | null | undefined; + const generatePdfObservable = await generatePdfObservableFactory(reporting); const jobLogger = logger.clone([jobId]); @@ -43,6 +48,9 @@ export const executeJobFactory: QueuedPdfExecutorFactory = async function execut const urls = getFullUrls({ config, job }); const { browserTimezone, layout, title } = job; + if (apmGetAssets) apmGetAssets.end(); + + apmGeneratePdf = apmTrans?.startSpan('generate_pdf_pipeline', 'execute'); return generatePdfObservable( jobLogger, title, @@ -53,12 +61,20 @@ export const executeJobFactory: QueuedPdfExecutorFactory = async function execut logo ); }), - map(({ buffer, warnings }) => ({ - content_type: 'application/pdf', - content: buffer.toString('base64'), - size: buffer.byteLength, - warnings, - })), + map(({ buffer, warnings }) => { + if (apmGeneratePdf) apmGeneratePdf.end(); + + const apmEncode = apmTrans?.startSpan('encode_pdf', 'output'); + const content = buffer?.toString('base64') || null; + if (apmEncode) apmEncode.end(); + + return { + content_type: 'application/pdf', + content, + size: buffer?.byteLength || 0, + warnings, + }; + }), catchError(err => { jobLogger.error(err); return Rx.throwError(err); @@ -66,6 +82,8 @@ export const executeJobFactory: QueuedPdfExecutorFactory = async function execut ); const stop$ = Rx.fromEventPattern(cancellationToken.on); + + if (apmTrans) apmTrans.end(); return process$.pipe(takeUntil(stop$)).toPromise(); }; }; diff --git a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/generate_pdf.ts b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/generate_pdf.ts index c882ef682f9529..238accba8b1dc0 100644 --- a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/generate_pdf.ts +++ b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/generate_pdf.ts @@ -13,6 +13,7 @@ import { ConditionalHeaders } from '../../../../types'; import { createLayout } from '../../../common/layouts'; import { LayoutInstance, LayoutParams } from '../../../common/layouts/layout'; import { ScreenshotResults } from '../../../common/lib/screenshots/types'; +import { getTracker } from './tracker'; // @ts-ignore untyped module import { pdf } from './pdf'; @@ -39,8 +40,14 @@ export async function generatePdfObservableFactory(reporting: ReportingCore) { conditionalHeaders: ConditionalHeaders, layoutParams: LayoutParams, logo?: string - ): Rx.Observable<{ buffer: Buffer; warnings: string[] }> { + ): Rx.Observable<{ buffer: Buffer | null; warnings: string[] }> { + const tracker = getTracker(); + tracker.startLayout(); + const layout = createLayout(captureConfig, layoutParams) as LayoutInstance; + tracker.endLayout(); + + tracker.startScreenshots(); const screenshots$ = getScreenshots({ logger, urls, @@ -49,16 +56,22 @@ export async function generatePdfObservableFactory(reporting: ReportingCore) { browserTimezone, }).pipe( mergeMap(async (results: ScreenshotResults[]) => { - const pdfOutput = pdf.create(layout, logo); + tracker.endScreenshots(); + tracker.startSetup(); + const pdfOutput = pdf.create(layout, logo); if (title) { const timeRange = getTimeRange(results); title += timeRange ? ` - ${timeRange.duration}` : ''; pdfOutput.setTitle(title); } + tracker.endSetup(); results.forEach(r => { r.screenshots.forEach(screenshot => { + logger.debug(`Adding image to PDF. Image base64 size: ${screenshot.base64EncodedData?.length || 0}`); // prettier-ignore + tracker.startAddImage(); + tracker.endAddImage(); pdfOutput.addImage(screenshot.base64EncodedData, { title: screenshot.title, description: screenshot.description, @@ -66,10 +79,26 @@ export async function generatePdfObservableFactory(reporting: ReportingCore) { }); }); - pdfOutput.generate(); + let buffer: Buffer | null = null; + try { + tracker.startCompile(); + logger.debug(`Compiling PDF...`); + pdfOutput.generate(); + tracker.endCompile(); + + tracker.startGetBuffer(); + logger.debug(`Generating PDF Buffer...`); + buffer = await pdfOutput.getBuffer(); + logger.debug(`PDF buffer byte length: ${buffer?.byteLength || 0}`); + tracker.endGetBuffer(); + } catch (err) { + logger.error(`Could not generate the PDF buffer! ${err}`); + } + + tracker.end(); return { - buffer: await pdfOutput.getBuffer(), + buffer, warnings: results.reduce((found, current) => { if (current.error) { found.push(current.error.message); diff --git a/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/tracker.ts b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/tracker.ts new file mode 100644 index 00000000000000..b6fad243db7b12 --- /dev/null +++ b/x-pack/legacy/plugins/reporting/export_types/printable_pdf/server/lib/tracker.ts @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import apm from 'elastic-apm-node'; + +interface PdfTracker { + startLayout: () => void; + endLayout: () => void; + startScreenshots: () => void; + endScreenshots: () => void; + startSetup: () => void; + endSetup: () => void; + startAddImage: () => void; + endAddImage: () => void; + startCompile: () => void; + endCompile: () => void; + startGetBuffer: () => void; + endGetBuffer: () => void; + end: () => void; +} + +const SPANTYPE_SETUP = 'setup'; +const SPANTYPE_OUTPUT = 'output'; + +interface ApmSpan { + end: () => void; +} + +export function getTracker(): PdfTracker { + const apmTrans = apm.startTransaction('reporting generate_pdf', 'reporting'); + + let apmLayout: ApmSpan | null = null; + let apmScreenshots: ApmSpan | null = null; + let apmSetup: ApmSpan | null = null; + let apmAddImage: ApmSpan | null = null; + let apmCompilePdf: ApmSpan | null = null; + let apmGetBuffer: ApmSpan | null = null; + + return { + startLayout() { + apmLayout = apmTrans?.startSpan('create_layout', SPANTYPE_SETUP) || null; + }, + endLayout() { + if (apmLayout) apmLayout.end(); + }, + startScreenshots() { + apmScreenshots = apmTrans?.startSpan('screenshots_pipeline', SPANTYPE_SETUP) || null; + }, + endScreenshots() { + if (apmScreenshots) apmScreenshots.end(); + }, + startSetup() { + apmSetup = apmTrans?.startSpan('setup_pdf', SPANTYPE_SETUP) || null; + }, + endSetup() { + if (apmSetup) apmSetup.end(); + }, + startAddImage() { + apmAddImage = apmTrans?.startSpan('add_pdf_image', SPANTYPE_OUTPUT) || null; + }, + endAddImage() { + if (apmAddImage) apmAddImage.end(); + }, + startCompile() { + apmCompilePdf = apmTrans?.startSpan('compile_pdf', SPANTYPE_OUTPUT) || null; + }, + endCompile() { + if (apmCompilePdf) apmCompilePdf.end(); + }, + startGetBuffer() { + apmGetBuffer = apmTrans?.startSpan('get_buffer', SPANTYPE_OUTPUT) || null; + }, + endGetBuffer() { + if (apmGetBuffer) apmGetBuffer.end(); + }, + end() { + if (apmTrans) apmTrans.end(); + }, + }; +} diff --git a/x-pack/legacy/plugins/reporting/server/lib/index.ts b/x-pack/legacy/plugins/reporting/server/lib/index.ts index f5ccbe493a91f0..2a8fa45b6fcefd 100644 --- a/x-pack/legacy/plugins/reporting/server/lib/index.ts +++ b/x-pack/legacy/plugins/reporting/server/lib/index.ts @@ -4,10 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ +export { LevelLogger } from './level_logger'; export { checkLicenseFactory } from './check_license'; export { createQueueFactory } from './create_queue'; export { cryptoFactory } from './crypto'; export { enqueueJobFactory } from './enqueue_job'; export { getExportTypesRegistry } from './export_types_registry'; -export { LevelLogger } from './level_logger'; export { runValidations } from './validate'; +export { startTrace } from './trace'; diff --git a/x-pack/legacy/plugins/reporting/server/lib/trace.ts b/x-pack/legacy/plugins/reporting/server/lib/trace.ts new file mode 100644 index 00000000000000..2d79d17715d0b4 --- /dev/null +++ b/x-pack/legacy/plugins/reporting/server/lib/trace.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import apm from 'elastic-apm-node'; + +export function startTrace(name: string, category: string) { + const span = apm.startSpan(name, category); + return () => { + if (span) span.end(); + }; +} diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 0d050f7bf98427..e96f0274451949 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -12200,7 +12200,6 @@ "xpack.reporting.publicNotifier.successfullyCreatedReportNotificationTitle": "{reportObjectType}「{reportObjectTitle}」のレポートが作成されました", "xpack.reporting.registerFeature.reportingDescription": "ディスカバリ、可視化、ダッシュボードから生成されたレポートを管理します。", "xpack.reporting.registerFeature.reportingTitle": "レポート", - "xpack.reporting.screencapture.asyncTook": "{description} にかかった時間は {took}ms でした", "xpack.reporting.screencapture.couldntFinishRendering": "{count} 件のビジュアライゼーションのレンダリングが完了するのを待つ間にエラーが発生しました。「{configKey}」を増やす必要があるかもしれません。 {error}", "xpack.reporting.screencapture.couldntLoadKibana": "Kibana URL を開こうとするときにエラーが発生しました。「{configKey}」を増やす必要があるかもしれません。 {error}", "xpack.reporting.screencapture.injectCss": "Kibana CSS をレポート用に更新しようとしたときにエラーが発生しました。{error}", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 21113d55b46415..1d73c4757c8e99 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -12207,7 +12207,6 @@ "xpack.reporting.publicNotifier.successfullyCreatedReportNotificationTitle": "已为 {reportObjectType}“{reportObjectTitle}”创建报告", "xpack.reporting.registerFeature.reportingDescription": "管理您从 Discover、Visualize 和 Dashboard 生成的报告。", "xpack.reporting.registerFeature.reportingTitle": "报告", - "xpack.reporting.screencapture.asyncTook": "{description} 花费了 {took}ms", "xpack.reporting.screencapture.couldntFinishRendering": "尝试等候 {count} 个可视化完成渲染时发生错误。您可能需要增加“{configKey}”。{error}", "xpack.reporting.screencapture.couldntLoadKibana": "尝试打开 Kibana URL 时发生了错误。您可能需要增加“{configKey}”。{error}", "xpack.reporting.screencapture.injectCss": "尝试为 Reporting 更新 Kibana CSS 时发生错误。{error}", From 37aad5c56a11020b14d85ba491c22926b56082c8 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 7 May 2020 18:32:07 -0600 Subject: [PATCH 31/58] [Maps] remove SLA percentage metric (#65718) * [Maps] remove SLA percentage metric * remove unused import Co-authored-by: Elastic Machine --- .../observability/create_layer_descriptor.ts | 20 ------------------- .../observability/metric_select.tsx | 7 ------- 2 files changed, 27 deletions(-) diff --git a/x-pack/plugins/maps/public/layers/solution_layers/observability/create_layer_descriptor.ts b/x-pack/plugins/maps/public/layers/solution_layers/observability/create_layer_descriptor.ts index a59122d7d6309c..e2833d5abd0c22 100644 --- a/x-pack/plugins/maps/public/layers/solution_layers/observability/create_layer_descriptor.ts +++ b/x-pack/plugins/maps/public/layers/solution_layers/observability/create_layer_descriptor.ts @@ -9,7 +9,6 @@ import { i18n } from '@kbn/i18n'; import { AggDescriptor, ColorDynamicOptions, - LabelDynamicOptions, LayerDescriptor, SizeDynamicOptions, StylePropertyField, @@ -80,10 +79,6 @@ function createLayerLabel( metricName = i18n.translate('xpack.maps.observability.durationMetricName', { defaultMessage: 'Duration', }); - } else if (metric === OBSERVABILITY_METRIC_TYPE.SLA_PERCENTAGE) { - metricName = i18n.translate('xpack.maps.observability.slaPercentageMetricName', { - defaultMessage: '% Duration of SLA', - }); } else if (metric === OBSERVABILITY_METRIC_TYPE.COUNT) { metricName = i18n.translate('xpack.maps.observability.countMetricName', { defaultMessage: 'Total', @@ -103,11 +98,6 @@ function createAggDescriptor(metric: OBSERVABILITY_METRIC_TYPE): AggDescriptor { type: AGG_TYPE.AVG, field: 'transaction.duration.us', }; - } else if (metric === OBSERVABILITY_METRIC_TYPE.SLA_PERCENTAGE) { - return { - type: AGG_TYPE.AVG, - field: 'duration_sla_pct', - }; } else if (metric === OBSERVABILITY_METRIC_TYPE.UNIQUE_COUNT) { return { type: AGG_TYPE.UNIQUE_COUNT, @@ -251,16 +241,6 @@ export function createLayerDescriptor({ }, }; - if (metric === OBSERVABILITY_METRIC_TYPE.SLA_PERCENTAGE) { - styleProperties[VECTOR_STYLES.LABEL_TEXT] = { - type: STYLE_TYPE.DYNAMIC, - options: { - ...(defaultDynamicProperties[VECTOR_STYLES.LABEL_TEXT]!.options as LabelDynamicOptions), - field: metricStyleField, - }, - }; - } - return VectorLayer.createDescriptor({ label, query: apmSourceQuery, diff --git a/x-pack/plugins/maps/public/layers/solution_layers/observability/metric_select.tsx b/x-pack/plugins/maps/public/layers/solution_layers/observability/metric_select.tsx index 8750034f746966..4a40b257cb5176 100644 --- a/x-pack/plugins/maps/public/layers/solution_layers/observability/metric_select.tsx +++ b/x-pack/plugins/maps/public/layers/solution_layers/observability/metric_select.tsx @@ -11,7 +11,6 @@ import { OBSERVABILITY_LAYER_TYPE } from './layer_select'; export enum OBSERVABILITY_METRIC_TYPE { TRANSACTION_DURATION = 'TRANSACTION_DURATION', - SLA_PERCENTAGE = 'SLA_PERCENTAGE', COUNT = 'COUNT', UNIQUE_COUNT = 'UNIQUE_COUNT', } @@ -23,12 +22,6 @@ const APM_RUM_PERFORMANCE_METRIC_OPTIONS = [ defaultMessage: 'Transaction duraction', }), }, - { - value: OBSERVABILITY_METRIC_TYPE.SLA_PERCENTAGE, - text: i18n.translate('xpack.maps.observability.slaPercentageLabel', { - defaultMessage: 'SLA percentage', - }), - }, ]; const APM_RUM_TRAFFIC_METRIC_OPTIONS = [ From 8ba44eb5ede575b7931f89b4c2a3aa1f41f376e6 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Thu, 7 May 2020 20:45:07 -0400 Subject: [PATCH 32/58] change api endpoint and throw error (#65790) --- .../epm/kibana/index_pattern/install.ts | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts b/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts index f6db5dfe353ea5..6cdcb8782f38e6 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts @@ -372,12 +372,11 @@ export const ensureDefaultIndices = async (callCluster: CallESAsCurrentUser) => Promise.all( Object.keys(IndexPatternType).map(async indexPattern => { const defaultIndexPatternName = indexPattern + INDEX_PATTERN_PLACEHOLDER_SUFFIX; - const indexExists = await doesIndexExist(defaultIndexPatternName, callCluster); + const indexExists = await callCluster('indices.exists', { index: defaultIndexPatternName }); if (!indexExists) { try { - await callCluster('transport.request', { - method: 'PUT', - path: `/${defaultIndexPatternName}`, + await callCluster('indices.create', { + index: defaultIndexPatternName, body: { mappings: { properties: { @@ -387,20 +386,9 @@ export const ensureDefaultIndices = async (callCluster: CallESAsCurrentUser) => }, }); } catch (putErr) { - throw new Error(`${defaultIndexPatternName} could not be created`); + // throw new Error(`${defaultIndexPatternName} could not be created`); + throw new Error(putErr); } } }) ); - -export const doesIndexExist = async (indexName: string, callCluster: CallESAsCurrentUser) => { - try { - await callCluster('transport.request', { - method: 'HEAD', - path: indexName, - }); - return true; - } catch (err) { - return false; - } -}; From 23e7cc788bf5b245ac5ae252d82b10181d155b71 Mon Sep 17 00:00:00 2001 From: Brandon Morelli Date: Thu, 7 May 2020 17:54:14 -0700 Subject: [PATCH 33/58] [apm] Update machine learning flyout and service maps docs (#65517) --- docs/apm/images/apm-service-map-anomaly.png | Bin 0 -> 488462 bytes docs/apm/images/green-service.png | Bin 0 -> 4464 bytes docs/apm/images/red-service.png | Bin 0 -> 5368 bytes docs/apm/images/service-maps.png | Bin 494889 -> 722545 bytes docs/apm/images/yellow-service.png | Bin 0 -> 4425 bytes docs/apm/machine-learning.asciidoc | 19 +++++++++---- docs/apm/service-maps.asciidoc | 24 +++++++++++++++- .../MachineLearningFlyout/view.tsx | 26 +++++++++++++----- .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 10 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 docs/apm/images/apm-service-map-anomaly.png create mode 100644 docs/apm/images/green-service.png create mode 100644 docs/apm/images/red-service.png create mode 100644 docs/apm/images/yellow-service.png diff --git a/docs/apm/images/apm-service-map-anomaly.png b/docs/apm/images/apm-service-map-anomaly.png new file mode 100644 index 0000000000000000000000000000000000000000..b661e8f09d1a1253b22a15d81ac43f02623a6729 GIT binary patch literal 488462 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

UZ^ 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

+I-*Kl9HZ1d; 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�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�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%0A0v5rHZw3y$3A}{l?7is=m-*R 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 literal 0 HcmV?d00001 diff --git a/docs/apm/images/green-service.png b/docs/apm/images/green-service.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc00a3543b08f391fcdd043df561c867374823c GIT binary patch literal 4464 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 literal 0 HcmV?d00001 diff --git a/docs/apm/images/service-maps.png b/docs/apm/images/service-maps.png index 454ae9bb720fbd69560ecb3b3cfa90ddad1a06cc..d4272e899999164f26f7b5f1fcdaa00436d375c1 100644 GIT binary patch literal 722545 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 z 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

V(>^jE= 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%0AaAU9*>6Usl=!bYFNbV)S}18%6k2rf9E<1G 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

;b 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 z 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

(FhB5f4rM8x-k5dYs|ZcSiVCS&f9atF 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∨mKQS$&lYDc{<2()5DUDI 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

<(f!^u*&emsmU#V*3A1CYVPjj)&n-00gQo)rD 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

x#XQ&2#DQ{1JgSrU@}=Q9c8wG}H$-;hQbhP}LS! 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

oOowp0-RyD3X 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 diff --git a/docs/apm/images/yellow-service.png b/docs/apm/images/yellow-service.png new file mode 100644 index 0000000000000000000000000000000000000000..43afd6250be7243ba4740e22c51ac045805270b3 GIT binary patch literal 4425 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 with machine learning ++++ -The Machine Learning integration will initiate a new job predefined to calculate anomaly scores on transaction response times. -The response time graph will show the expected bounds and add an annotation when the anomaly score is 75 or above. -Jobs can be created per transaction type, and based on the average response time. -Manage jobs in the *Machine Learning jobs management*. +The Machine Learning integration initiates a new job predefined to calculate anomaly scores on APM transaction durations. +Jobs can be created per transaction type, and are based on the service's average response time. + +After a machine learning job is created, results are shown in two places: + +The transaction duration graph will show the expected bounds and add an annotation when the anomaly score is 75 or above. + +[role="screenshot"] +image::apm/images/apm-ml-integration.png[Example view of anomaly scores on response times in the APM app] + +Service maps will display a color-coded anomaly indicator based on the detected anomaly score. [role="screenshot"] -image::apm/images/apm-ml-integration.png[Example view of anomaly scores on response times in APM app in Kibana] +image::apm/images/apm-service-map-anomaly.png[Example view of anomaly scores on service maps in the APM app] [float] [[create-ml-integration]] @@ -20,8 +27,10 @@ image::apm/images/apm-ml-integration.png[Example view of anomaly scores on respo To enable machine learning anomaly detection, first choose a service to monitor. Then, select **Integrations** > **Enable ML anomaly detection** and click **Create job**. + That's it! After a few minutes, the job will begin calculating results; it might take additional time for results to appear on your graph. +Jobs can be managed in *Machine Learning jobs management*. APM specific anomaly detection wizards are also available for certain Agents. See the machine learning {ml-docs}/ootb-ml-jobs-apm.html[APM anomaly detection configurations] for more information. diff --git a/docs/apm/service-maps.asciidoc b/docs/apm/service-maps.asciidoc index be86b9d522ac5e..3a6a96fca9d097 100644 --- a/docs/apm/service-maps.asciidoc +++ b/docs/apm/service-maps.asciidoc @@ -9,7 +9,9 @@ Please use Chrome or Firefox if available. A service map is a real-time visual representation of the instrumented services in your application's architecture. It shows you how these services are connected, along with high-level metrics like average transaction duration, -requests per minute, and errors per minute, that allow you to quickly assess the status of your services. +requests per minute, and errors per minute. +If enabled, service maps also integrate with machine learning--for real time health indicators based on anomaly detection scores. +All of these features can help you to quickly and visually assess the status and health of your services. We currently surface two types of service maps: @@ -52,6 +54,26 @@ Additional filters are not currently available for service maps. [role="screenshot"] image::apm/images/service-maps-java.png[Example view of service maps with Java highlighted in the APM app in Kibana] +[float] +[[service-map-anomaly-detection]] +=== Anomaly detection with machine learning + +Machine learning jobs can be created to calculate anomaly scores on APM transaction durations within the selected service. +When these jobs are active, service maps will display a color-coded anomaly indicator based on the detected anomaly score: + +[horizontal] +image:apm/images/green-service.png[APM green service]:: Max anomaly score **<=25**. Service is healthy. +image:apm/images/yellow-service.png[APM yellow service]:: Max anomaly score **26-74**. Anomalous activity detected. Service may be degraded. +image:apm/images/red-service.png[APM red service]:: Max anomaly score **>=75**. Anomalous activity detected. Service is unhealthy. + +[role="screenshot"] +image::apm/images/apm-service-map-anomaly.png[Example view of anomaly scores on service maps in the APM app] + +If an anomaly has been detected, click *view anomalies* to view the anomaly detection metric viewier in the Machine learning app. +This time series analysis will display additional details on the severity and time of the detected anomalies. + +To learn how to create a machine learning job, see <>. + [float] [[service-maps-legend]] === Legend diff --git a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/MachineLearningFlyout/view.tsx b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/MachineLearningFlyout/view.tsx index cff190cd98a11a..6aa7815ad688c6 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/MachineLearningFlyout/view.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/MachineLearningFlyout/view.tsx @@ -134,9 +134,11 @@ export function MachineLearningFlyoutView({

+ ), + serviceMapAnnotationText: ( + + {i18n.translate( + 'xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createMLJobDescription.serviceMapAnnotationText', + { + defaultMessage: 'service maps' } )} @@ -155,15 +167,15 @@ export function MachineLearningFlyoutView({

@@ -358,7 +389,21 @@ exports[`ErrorGroupOverview -> List should render with data 1`] = ` Array [ Object { "field": "groupId", - "name": "Group ID", + "name": + Group ID + + + , "render": [Function], "sortable": false, "width": "96px", @@ -524,9 +569,26 @@ exports[`ErrorGroupOverview -> List should render with data 1`] = ` > Group ID + + +
+
@@ -689,6 +751,23 @@ exports[`ErrorGroupOverview -> List should render with data 1`] = ` className="euiTableRowCell__mobileHeader euiTableRowCell--hideForDesktop" > Group ID + + +
+
List should render with data 1`] = ` className="euiTableRowCell__mobileHeader euiTableRowCell--hideForDesktop" > Group ID + + +
+
List should render with data 1`] = ` className="euiTableRowCell__mobileHeader euiTableRowCell--hideForDesktop" > Group ID + + +
+
List should render with data 1`] = ` className="euiTableRowCell__mobileHeader euiTableRowCell--hideForDesktop" > Group ID + + +
+
= props => { if (!serviceName) { throw new Error('Service name is required'); } - const columns = useMemo( () => [ { - name: i18n.translate('xpack.apm.errorsTable.groupIdColumnLabel', { - defaultMessage: 'Group ID' - }), + name: ( + <> + {i18n.translate('xpack.apm.errorsTable.groupIdColumnLabel', { + defaultMessage: 'Group ID' + })}{' '} + + + ), field: 'groupId', sortable: false, width: px(unit * 6), diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/List/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionOverview/List/index.tsx index e3b33f11d0805f..f8dcec14630a53 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionOverview/List/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TransactionOverview/List/index.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiIcon, EuiToolTip } from '@elastic/eui'; +import { EuiToolTip, EuiIconTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useMemo } from 'react'; import styled from 'styled-components'; @@ -109,27 +109,26 @@ export function TransactionList({ items, isLoading }: Props) { { field: 'impact', name: ( - - <> - {i18n.translate('xpack.apm.transactionsTable.impactColumnLabel', { - defaultMessage: 'Impact' - })}{' '} - - - + <> + {i18n.translate('xpack.apm.transactionsTable.impactColumnLabel', { + defaultMessage: 'Impact' + })}{' '} + + ), sortable: true, dataType: 'number', diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index f6b645ee33ed1e..a2b4bd224e6370 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -4209,6 +4209,7 @@ "xpack.apm.errorRateAlertTrigger.isAbove": "の下限は", "xpack.apm.errorsTable.errorMessageAndCulpritColumnLabel": "エラーメッセージと原因", "xpack.apm.errorsTable.groupIdColumnLabel": "グループ ID", + "xpack.apm.errorsTable.groupIdColumnDescription": "スタックトレースのハッシュ。動的パラメーターによりエラーメッセージが異なる場合でも、同様のエラーをグループ化します。", "xpack.apm.errorsTable.latestOccurrenceColumnLabel": "最近のオカレンス", "xpack.apm.errorsTable.noErrorsLabel": "エラーが見つかりませんでした", "xpack.apm.errorsTable.occurrencesColumnLabel": "オカレンス", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index c9ed2111a4e7c6..f7caf1619f5fb0 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -4209,6 +4209,7 @@ "xpack.apm.errorRateAlertTrigger.errors": "错误", "xpack.apm.errorRateAlertTrigger.isAbove": "高于", "xpack.apm.errorsTable.errorMessageAndCulpritColumnLabel": "错误消息和原因", + "xpack.apm.errorsTable.groupIdColumnDescription": "堆栈跟踪的哈希值。即使由于动态参数而导致错误消息不同,也将相似的错误归为一组。", "xpack.apm.errorsTable.groupIdColumnLabel": "组 ID", "xpack.apm.errorsTable.latestOccurrenceColumnLabel": "最新一次发生", "xpack.apm.errorsTable.noErrorsLabel": "未找到任何错误", From ef58a90e45db1777eee67e795d2bb2a73972e79e Mon Sep 17 00:00:00 2001 From: Diana Derevyankina <54894989+DziyanaDzeraviankina@users.noreply.github.com> Date: Fri, 8 May 2020 12:31:46 +0300 Subject: [PATCH 40/58] Clean up TSVB turn Joi schema into kbn schema (#65482) * Clean up TSVB turn Joi schema into kbn schema Part of #57342 * Return validationTelemerty and logging part back * Add schema.maybe() where it was missed --- .../server/routes/post_vis_schema.ts | 208 +++++++++--------- .../vis_type_timeseries/server/routes/vis.ts | 8 +- 2 files changed, 107 insertions(+), 109 deletions(-) diff --git a/src/plugins/vis_type_timeseries/server/routes/post_vis_schema.ts b/src/plugins/vis_type_timeseries/server/routes/post_vis_schema.ts index fa4427fbb8c12b..1d565e69a801cb 100644 --- a/src/plugins/vis_type_timeseries/server/routes/post_vis_schema.ts +++ b/src/plugins/vis_type_timeseries/server/routes/post_vis_schema.ts @@ -17,59 +17,65 @@ * under the License. */ -import Joi from 'joi'; -const stringOptionalNullable = Joi.string() - .allow('', null) - .optional(); -const stringRequired = Joi.string() - .allow('') - .required(); -const arrayNullable = Joi.array().allow(null); -const numberIntegerOptional = Joi.number() - .integer() - .optional(); -const numberIntegerRequired = Joi.number() - .integer() - .required(); -const numberOptional = Joi.number().optional(); -const queryObject = Joi.object({ - language: Joi.string().allow(''), - query: Joi.string().allow(''), +import { schema } from '@kbn/config-schema'; +import { TypeOptions } from '@kbn/config-schema/target/types/types'; + +const stringOptionalNullable = schema.maybe(schema.nullable(schema.string())); + +const stringRequired = schema.string(); + +const arrayNullable = schema.arrayOf(schema.nullable(schema.any())); + +const validateInteger: TypeOptions['validate'] = value => { + if (!Number.isInteger(value)) { + return `${value} is not an integer`; + } +}; +const numberIntegerOptional = schema.maybe(schema.number({ validate: validateInteger })); +const numberIntegerRequired = schema.number({ validate: validateInteger }); + +const numberOptional = schema.maybe(schema.number()); + +const queryObject = schema.object({ + language: schema.string(), + query: schema.string(), }); -const stringOrNumberOptionalNullable = Joi.alternatives([stringOptionalNullable, numberOptional]); -const numberOptionalOrEmptyString = Joi.alternatives(numberOptional, Joi.string().valid('')); +const stringOrNumberOptionalNullable = schema.nullable( + schema.oneOf([stringOptionalNullable, numberOptional]) +); +const numberOptionalOrEmptyString = schema.maybe( + schema.oneOf([numberOptional, schema.literal('')]) +); -const annotationsItems = Joi.object({ +const annotationsItems = schema.object({ color: stringOptionalNullable, fields: stringOptionalNullable, - hidden: Joi.boolean().optional(), + hidden: schema.maybe(schema.boolean()), icon: stringOptionalNullable, id: stringOptionalNullable, ignore_global_filters: numberIntegerOptional, ignore_panel_filters: numberIntegerOptional, index_pattern: stringOptionalNullable, - query_string: queryObject.optional(), + query_string: schema.maybe(queryObject), template: stringOptionalNullable, time_field: stringOptionalNullable, }); -const backgroundColorRulesItems = Joi.object({ - value: Joi.number() - .allow(null) - .optional(), +const backgroundColorRulesItems = schema.object({ + value: schema.maybe(schema.nullable(schema.number())), id: stringOptionalNullable, background_color: stringOptionalNullable, color: stringOptionalNullable, }); -const gaugeColorRulesItems = Joi.object({ +const gaugeColorRulesItems = schema.object({ gauge: stringOptionalNullable, text: stringOptionalNullable, id: stringOptionalNullable, operator: stringOptionalNullable, - value: Joi.number(), + value: schema.number(), }); -const metricsItems = Joi.object({ +const metricsItems = schema.object({ field: stringOptionalNullable, id: stringRequired, metric_agg: stringOptionalNullable, @@ -84,50 +90,49 @@ const metricsItems = Joi.object({ beta: numberOptional, gamma: numberOptional, period: numberOptional, - multiplicative: Joi.boolean(), + multiplicative: schema.maybe(schema.boolean()), window: numberOptional, function: stringOptionalNullable, script: stringOptionalNullable, - variables: Joi.array() - .items( - Joi.object({ + variables: schema.maybe( + schema.arrayOf( + schema.object({ field: stringOptionalNullable, id: stringRequired, name: stringOptionalNullable, }) ) - .optional(), - percentiles: Joi.array() - .items( - Joi.object({ + ), + percentiles: schema.maybe( + schema.arrayOf( + schema.object({ id: stringRequired, field: stringOptionalNullable, - mode: Joi.string().allow('line', 'band'), - shade: Joi.alternatives(numberOptional, stringOptionalNullable), - value: Joi.alternatives(numberOptional, stringOptionalNullable), + mode: schema.oneOf([schema.literal('line'), schema.literal('band')]), + shade: schema.oneOf([numberOptional, stringOptionalNullable]), + value: schema.oneOf([numberOptional, stringOptionalNullable]), percentile: stringOptionalNullable, }) ) - .optional(), + ), type: stringRequired, value: stringOptionalNullable, - values: Joi.array() - .items(Joi.string().allow('', null)) - .allow(null) - .optional(), + values: schema.maybe(schema.nullable(schema.arrayOf(schema.nullable(schema.string())))), }); -const splitFiltersItems = Joi.object({ +const splitFiltersItems = schema.object({ id: stringOptionalNullable, color: stringOptionalNullable, - filter: Joi.object({ - language: Joi.string().allow(''), - query: Joi.string().allow(''), - }).optional(), + filter: schema.maybe( + schema.object({ + language: schema.string(), + query: schema.string(), + }) + ), label: stringOptionalNullable, }); -const seriesItems = Joi.object({ +const seriesItems = schema.object({ aggregate_by: stringOptionalNullable, aggregate_function: stringOptionalNullable, axis_position: stringRequired, @@ -135,31 +140,33 @@ const seriesItems = Joi.object({ axis_min: stringOrNumberOptionalNullable, chart_type: stringRequired, color: stringRequired, - color_rules: Joi.array() - .items( - Joi.object({ + color_rules: schema.maybe( + schema.arrayOf( + schema.object({ value: numberOptional, id: stringRequired, text: stringOptionalNullable, operator: stringOptionalNullable, }) ) - .optional(), + ), fill: numberOptionalOrEmptyString, - filter: Joi.alternatives( - Joi.object({ - query: stringRequired, - language: stringOptionalNullable, - }).optional(), - Joi.string().valid('') + filter: schema.maybe( + schema.oneOf([ + schema.object({ + query: stringRequired, + language: stringOptionalNullable, + }), + schema.literal(''), + ]) ), formatter: stringRequired, hide_in_legend: numberIntegerOptional, - hidden: Joi.boolean().optional(), + hidden: schema.maybe(schema.boolean()), id: stringRequired, label: stringOptionalNullable, line_width: numberOptionalOrEmptyString, - metrics: Joi.array().items(metricsItems), + metrics: schema.arrayOf(metricsItems), offset_time: stringOptionalNullable, override_index_pattern: numberOptional, point_size: numberOptionalOrEmptyString, @@ -170,9 +177,7 @@ const seriesItems = Joi.object({ series_interval: stringOptionalNullable, series_drop_last_bucket: numberIntegerOptional, split_color_mode: stringOptionalNullable, - split_filters: Joi.array() - .items(splitFiltersItems) - .optional(), + split_filters: schema.maybe(schema.arrayOf(splitFiltersItems)), split_mode: stringRequired, stacked: stringRequired, steps: numberIntegerOptional, @@ -189,38 +194,34 @@ const seriesItems = Joi.object({ var_name: stringOptionalNullable, }); -export const visPayloadSchema = Joi.object({ +export const visPayloadSchema = schema.object({ filters: arrayNullable, - panels: Joi.array().items( - Joi.object({ - annotations: Joi.array() - .items(annotationsItems) - .optional(), + panels: schema.arrayOf( + schema.object({ + annotations: schema.maybe(schema.arrayOf(annotationsItems)), axis_formatter: stringRequired, axis_position: stringRequired, axis_scale: stringRequired, axis_min: stringOrNumberOptionalNullable, axis_max: stringOrNumberOptionalNullable, - bar_color_rules: arrayNullable.optional(), + bar_color_rules: schema.maybe(arrayNullable), background_color: stringOptionalNullable, - background_color_rules: Joi.array() - .items(backgroundColorRulesItems) - .optional(), + background_color_rules: schema.maybe(schema.arrayOf(backgroundColorRulesItems)), default_index_pattern: stringOptionalNullable, default_timefield: stringOptionalNullable, drilldown_url: stringOptionalNullable, drop_last_bucket: numberIntegerOptional, - filter: Joi.alternatives( - stringOptionalNullable, - Joi.object({ - language: stringOptionalNullable, - query: stringOptionalNullable, - }) + filter: schema.nullable( + schema.oneOf([ + stringOptionalNullable, + schema.object({ + language: stringOptionalNullable, + query: stringOptionalNullable, + }), + ]) ), - gauge_color_rules: Joi.array() - .items(gaugeColorRulesItems) - .optional(), - gauge_width: [stringOptionalNullable, numberOptional], + gauge_color_rules: schema.maybe(schema.arrayOf(gaugeColorRulesItems)), + gauge_width: schema.nullable(schema.oneOf([stringOptionalNullable, numberOptional])), gauge_inner_color: stringOptionalNullable, gauge_inner_width: stringOrNumberOptionalNullable, gauge_style: stringOptionalNullable, @@ -230,7 +231,7 @@ export const visPayloadSchema = Joi.object({ ignore_global_filter: numberOptional, index_pattern: stringRequired, interval: stringRequired, - isModelInvalid: Joi.boolean().optional(), + isModelInvalid: schema.maybe(schema.boolean()), legend_position: stringOptionalNullable, markdown: stringOptionalNullable, markdown_scrollbars: numberIntegerOptional, @@ -242,9 +243,7 @@ export const visPayloadSchema = Joi.object({ pivot_label: stringOptionalNullable, pivot_type: stringOptionalNullable, pivot_rows: stringOptionalNullable, - series: Joi.array() - .items(seriesItems) - .required(), + series: schema.arrayOf(seriesItems), show_grid: numberIntegerRequired, show_legend: numberIntegerRequired, time_field: stringOptionalNullable, @@ -253,22 +252,19 @@ export const visPayloadSchema = Joi.object({ }) ), // general - query: Joi.array() - .items(queryObject) - .allow(null) - .required(), - state: Joi.object({ - sort: Joi.object({ - column: stringRequired, - order: Joi.string() - .valid(['asc', 'desc']) - .required(), - }).optional(), - }).required(), - savedObjectId: Joi.string().optional(), - timerange: Joi.object({ + query: schema.nullable(schema.arrayOf(queryObject)), + state: schema.object({ + sort: schema.maybe( + schema.object({ + column: stringRequired, + order: schema.oneOf([schema.literal('asc'), schema.literal('desc')]), + }) + ), + }), + savedObjectId: schema.maybe(schema.string()), + timerange: schema.object({ timezone: stringRequired, min: stringRequired, max: stringRequired, - }).required(), + }), }); diff --git a/src/plugins/vis_type_timeseries/server/routes/vis.ts b/src/plugins/vis_type_timeseries/server/routes/vis.ts index 9abbc4ad617dc2..744020b5838827 100644 --- a/src/plugins/vis_type_timeseries/server/routes/vis.ts +++ b/src/plugins/vis_type_timeseries/server/routes/vis.ts @@ -38,16 +38,18 @@ export const visDataRoutes = ( }, }, async (requestContext, request, response) => { - const { error: validationError } = visPayloadSchema.validate(request.body); - if (validationError) { + try { + visPayloadSchema.validate(request.body); + } catch (error) { logFailedValidation(); const savedObjectId = (typeof request.body === 'object' && (request.body as any).savedObjectId) || 'unavailable'; framework.logger.warn( - `Request validation error: ${validationError.message} (saved object id: ${savedObjectId}). This most likely means your TSVB visualization contains outdated configuration. You can report this problem under https://github.com/elastic/kibana/issues/new?template=Bug_report.md` + `Request validation error: ${error.message} (saved object id: ${savedObjectId}). This most likely means your TSVB visualization contains outdated configuration. You can report this problem under https://github.com/elastic/kibana/issues/new?template=Bug_report.md` ); } + try { const results = await getVisData( requestContext, From 918dac3b087a1b71addffe0497cf3713ab3fec07 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Fri, 8 May 2020 11:49:03 +0200 Subject: [PATCH 41/58] [APM] use navigateToApp for infra/metrics/uptime links (#65712) --- .../TransactionActionMenu.tsx | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx index 4092e0148286e5..6d9a917af659f4 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx @@ -6,7 +6,8 @@ import { EuiButtonEmpty } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import React, { FunctionComponent, useMemo, useState } from 'react'; +import React, { FunctionComponent, useMemo, useState, MouseEvent } from 'react'; +import url from 'url'; import { Filter } from '../../../../common/custom_link/custom_link_types'; import { Transaction } from '../../../../typings/es_schemas/ui/transaction'; import { @@ -82,7 +83,39 @@ export const TransactionActionMenu: FunctionComponent = ({ basePath: core.http.basePath, location, urlParams - }); + }).map(sectionList => + sectionList.map(section => ({ + ...section, + actions: section.actions.map(action => { + const { href } = action; + + // use navigateToApp as a temporary workaround for faster navigation between observability apps. + // see https://github.com/elastic/kibana/issues/65682 + + return { + ...action, + onClick: (event: MouseEvent) => { + const parsed = url.parse(href); + + const appPathname = core.http.basePath.remove( + parsed.pathname ?? '' + ); + + const [, , app, ...rest] = appPathname.split('/'); + + if (app === 'uptime' || app === 'metrics' || app === 'logs') { + event.preventDefault(); + core.application.navigateToApp(app, { + path: `${rest.join('/')}${ + parsed.search ? `&${parsed.search}` : '' + }` + }); + } + } + }; + }) + })) + ); const closePopover = () => { setIsActionPopoverOpen(false); @@ -151,6 +184,7 @@ export const TransactionActionMenu: FunctionComponent = ({ key={action.key} label={action.label} href={action.href} + onClick={action.onClick} /> ))} From 7cf7c261b990b3de01bdef44feeb1cca176fa6e9 Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Fri, 8 May 2020 12:03:42 +0200 Subject: [PATCH 42/58] fix fetchSoon delay in case of 0ms. Add async_dashboard test (#65083) * forwardport #64999 * Add additional verifications on dashboard I hope you don't mind me updating the test directly. I *thought* the other dashboard tests required a consistent set of exact documents so that the count would always be the same. Since the test uses sample data, I added a new timepicker:quickRanges so that the test can just select it. Test FTR isn't set up to do relative time ranges right now. But it looks like the dashboard checks aren't that specific to the data. The dashboard seems to have `Last 24 hours` saved in it. And when I don't change it to the whole sample data time range the test still passes. * fix eslint error * [page_objects/time_picker] allow any string in setCommonlyUsedTime Co-authored-by: Lee Drengenberg Co-authored-by: Dzmitry Lemechko --- .../public/search/legacy/fetch_soon.test.ts | 4 +- .../data/public/search/legacy/fetch_soon.ts | 4 + test/functional/page_objects/time_picker.ts | 2 +- .../apps/dashboard/_async_dashboard.ts | 174 ++++++++++++++++++ .../test/functional/apps/dashboard/index.ts | 1 + 5 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 x-pack/test/functional/apps/dashboard/_async_dashboard.ts diff --git a/src/plugins/data/public/search/legacy/fetch_soon.test.ts b/src/plugins/data/public/search/legacy/fetch_soon.test.ts index b2e17798ccc9fa..6c0467e3297e8a 100644 --- a/src/plugins/data/public/search/legacy/fetch_soon.test.ts +++ b/src/plugins/data/public/search/legacy/fetch_soon.test.ts @@ -58,7 +58,7 @@ describe('fetchSoon', () => { (callClient as jest.Mock).mockClear(); }); - test('should delay by 0ms if config is set to not batch searches', () => { + test('should execute asap if config is set to not batch searches', () => { const config = getConfigStub({ 'courier:batchSearches': false, }); @@ -67,8 +67,6 @@ describe('fetchSoon', () => { fetchSoon(request, options, { config } as FetchHandlers); - expect(callClient).not.toBeCalled(); - jest.advanceTimersByTime(0); expect(callClient).toBeCalled(); }); diff --git a/src/plugins/data/public/search/legacy/fetch_soon.ts b/src/plugins/data/public/search/legacy/fetch_soon.ts index 18fa410a5bef03..83617d394fe958 100644 --- a/src/plugins/data/public/search/legacy/fetch_soon.ts +++ b/src/plugins/data/public/search/legacy/fetch_soon.ts @@ -67,6 +67,10 @@ async function delayedFetch( fetchHandlers: FetchHandlers, ms: number ) { + if (ms === 0) { + return callClient([request], [options], fetchHandlers)[0]; + } + const i = requestsToFetch.length; requestsToFetch = [...requestsToFetch, request]; requestOptions = [...requestOptions, options]; diff --git a/test/functional/page_objects/time_picker.ts b/test/functional/page_objects/time_picker.ts index 92f0d090ff5ee3..4606d93ac27f56 100644 --- a/test/functional/page_objects/time_picker.ts +++ b/test/functional/page_objects/time_picker.ts @@ -65,7 +65,7 @@ export function TimePickerProvider({ getService, getPageObjects }: FtrProviderCo * Sets commonly used time * @param option 'Today' | 'This_week' | 'Last_15 minutes' | 'Last_24 hours' ... */ - async setCommonlyUsedTime(option: CommonlyUsed) { + async setCommonlyUsedTime(option: CommonlyUsed | string) { await testSubjects.click('superDatePickerToggleQuickMenuButton'); await testSubjects.click(`superDatePickerCommonlyUsed_${option}`); } diff --git a/x-pack/test/functional/apps/dashboard/_async_dashboard.ts b/x-pack/test/functional/apps/dashboard/_async_dashboard.ts new file mode 100644 index 00000000000000..2c8abda999ddda --- /dev/null +++ b/x-pack/test/functional/apps/dashboard/_async_dashboard.ts @@ -0,0 +1,174 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function({ getService, getPageObjects }: FtrProviderContext) { + const retry = getService('retry'); + const kibanaServer = getService('kibanaServer'); + const log = getService('log'); + const pieChart = getService('pieChart'); + const find = getService('find'); + const renderable = getService('renderable'); + const dashboardExpect = getService('dashboardExpect'); + const appMenu = getService('appsMenu'); + const PageObjects = getPageObjects([ + 'common', + 'header', + 'home', + 'discover', + 'dashboard', + 'timePicker', + ]); + + describe('sample data dashboard', function describeIndexTests() { + before(async () => { + await PageObjects.common.sleep(5000); + await PageObjects.common.navigateToUrl('home', 'tutorial_directory/sampleData'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.home.addSampleDataSet('flights'); + const isInstalled = await PageObjects.home.isSampleDataSetInstalled('flights'); + expect(isInstalled).to.be(true); + // add the range of the sample data so we can pick it in the quick pick list + const SAMPLE_DATA_RANGE = `[ + { + "from": "now-30d", + "to": "now+40d", + "display": "sample data range" + }, + { + "from": "now/d", + "to": "now/d", + "display": "Today" + }, + { + "from": "now/w", + "to": "now/w", + "display": "This week" + }, + { + "from": "now-15m", + "to": "now", + "display": "Last 15 minutes" + }, + { + "from": "now-30m", + "to": "now", + "display": "Last 30 minutes" + }, + { + "from": "now-1h", + "to": "now", + "display": "Last 1 hour" + }, + { + "from": "now-24h", + "to": "now", + "display": "Last 24 hours" + }, + { + "from": "now-7d", + "to": "now", + "display": "Last 7 days" + }, + { + "from": "now-30d", + "to": "now", + "display": "Last 30 days" + }, + { + "from": "now-90d", + "to": "now", + "display": "Last 90 days" + }, + { + "from": "now-1y", + "to": "now", + "display": "Last 1 year" + } + ]`; + + await kibanaServer.uiSettings.update({ 'timepicker:quickRanges': SAMPLE_DATA_RANGE }); + await appMenu.clickLink('Discover'); + await PageObjects.discover.selectIndexPattern('kibana_sample_data_flights'); + await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); + await retry.try(async function() { + const hitCount = parseInt(await PageObjects.discover.getHitCount(), 10); + expect(hitCount).to.be.greaterThan(0); + }); + }); + + after(async () => { + await PageObjects.common.navigateToUrl('home', 'tutorial_directory/sampleData'); + await PageObjects.home.removeSampleDataSet('flights'); + const isInstalled = await PageObjects.home.isSampleDataSetInstalled('flights'); + expect(isInstalled).to.be(false); + }); + + it('should launch sample flights data set dashboard', async () => { + await appMenu.clickLink('Dashboard'); + await PageObjects.dashboard.loadSavedDashboard('[Flights] Global Flight Dashboard'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.timePicker.setCommonlyUsedTime('sample_data range'); + await PageObjects.header.waitUntilLoadingHasFinished(); + + // check at least one visualization + await renderable.waitForRender(); + log.debug('Checking pie charts rendered'); + await pieChart.expectPieSliceCount(4); + + await appMenu.clickLink('Discover'); + await retry.try(async function() { + const hitCount = parseInt(await PageObjects.discover.getHitCount(), 10); + expect(hitCount).to.be.greaterThan(0); + }); + await appMenu.clickLink('Dashboard'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await renderable.waitForRender(); + log.debug('Checking pie charts rendered'); + await pieChart.expectPieSliceCount(4); + }); + + it('toggle from Discover to Dashboard attempt 1', async () => { + await appMenu.clickLink('Discover'); + await retry.try(async function() { + const hitCount = parseInt(await PageObjects.discover.getHitCount(), 10); + expect(hitCount).to.be.greaterThan(0); + }); + await appMenu.clickLink('Dashboard'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await renderable.waitForRender(); + log.debug('Checking pie charts rendered'); + await pieChart.expectPieSliceCount(4); + }); + + it('toggle from Discover to Dashboard attempt 2', async () => { + await appMenu.clickLink('Discover'); + await retry.try(async function() { + const hitCount = parseInt(await PageObjects.discover.getHitCount(), 10); + expect(hitCount).to.be.greaterThan(0); + }); + await appMenu.clickLink('Dashboard'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await renderable.waitForRender(); + log.debug('Checking pie charts rendered'); + await pieChart.expectPieSliceCount(4); + + log.debug('Checking area, bar and heatmap charts rendered'); + await dashboardExpect.seriesElementCount(15); + log.debug('Checking saved searches rendered'); + await dashboardExpect.savedSearchRowCount(50); + log.debug('Checking input controls rendered'); + await dashboardExpect.inputControlItemCount(3); + log.debug('Checking tag cloud rendered'); + await dashboardExpect.tagCloudWithValuesFound(['Sunny', 'Rain', 'Clear', 'Cloudy', 'Hail']); + log.debug('Checking vega chart rendered'); + const tsvb = await find.existsByCssSelector('.vgaVis__view'); + expect(tsvb).to.be(true); + }); + }); +} diff --git a/x-pack/test/functional/apps/dashboard/index.ts b/x-pack/test/functional/apps/dashboard/index.ts index 2c8ac93c53fef3..d45988e63c37fc 100644 --- a/x-pack/test/functional/apps/dashboard/index.ts +++ b/x-pack/test/functional/apps/dashboard/index.ts @@ -13,5 +13,6 @@ export default function({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./preserve_url')); loadTestFile(require.resolve('./reporting')); loadTestFile(require.resolve('./drilldowns')); + loadTestFile(require.resolve('./_async_dashboard')); }); } From 75e12db4ba261b1f2984f392b00d974da5715ab7 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 8 May 2020 13:13:17 +0100 Subject: [PATCH 43/58] [ML] Show warning when the model memory limit is higher than the memory available in the ML node (#65652) * [ML] Show warning when the model memory limit is higher than the memory available in the ML node * reverting UI check * removing from UI job validator * adding cap to estimate mml * adding mml value to message * fixing translations * updating translations * fixing translation ids --- .../plugins/ml/common/types/ml_server_info.ts | 1 + .../calculate_model_memory_limit.ts | 41 +++++++++++------- .../server/models/job_validation/messages.js | 11 +++++ .../validate_model_memory_limit.test.ts | 25 +++++++++++ .../validate_model_memory_limit.ts | 43 +++++++++++++------ .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 7 files changed, 94 insertions(+), 29 deletions(-) diff --git a/x-pack/plugins/ml/common/types/ml_server_info.ts b/x-pack/plugins/ml/common/types/ml_server_info.ts index 26dd1758827b4a..66142f53add3a8 100644 --- a/x-pack/plugins/ml/common/types/ml_server_info.ts +++ b/x-pack/plugins/ml/common/types/ml_server_info.ts @@ -18,6 +18,7 @@ export interface MlServerDefaults { export interface MlServerLimits { max_model_memory_limit?: string; + effective_max_model_memory_limit?: string; } export interface MlInfoResponse { diff --git a/x-pack/plugins/ml/server/models/calculate_model_memory_limit/calculate_model_memory_limit.ts b/x-pack/plugins/ml/server/models/calculate_model_memory_limit/calculate_model_memory_limit.ts index cd61dd9eddcdd7..1cc2a07ddbc881 100644 --- a/x-pack/plugins/ml/server/models/calculate_model_memory_limit/calculate_model_memory_limit.ts +++ b/x-pack/plugins/ml/server/models/calculate_model_memory_limit/calculate_model_memory_limit.ts @@ -9,6 +9,7 @@ import { APICaller } from 'kibana/server'; import { MLCATEGORY } from '../../../common/constants/field_types'; import { AnalysisConfig } from '../../../common/types/anomaly_detection_jobs'; import { fieldsServiceProvider } from '../fields_service'; +import { MlInfoResponse } from '../../../common/types/ml_server_info'; interface ModelMemoryEstimationResult { /** @@ -139,15 +140,9 @@ export function calculateModelMemoryLimitProvider(callAsCurrentUser: APICaller) latestMs: number, allowMMLGreaterThanMax = false ): Promise { - let maxModelMemoryLimit; - try { - const resp = await callAsCurrentUser('ml.info'); - if (resp?.limits?.max_model_memory_limit !== undefined) { - maxModelMemoryLimit = resp.limits.max_model_memory_limit.toUpperCase(); - } - } catch (e) { - throw new Error('Unable to retrieve max model memory limit'); - } + const info = await callAsCurrentUser('ml.info'); + const maxModelMemoryLimit = info.limits.max_model_memory_limit?.toUpperCase(); + const effectiveMaxModelMemoryLimit = info.limits.effective_max_model_memory_limit?.toUpperCase(); const { overallCardinality, maxBucketCardinality } = await getCardinalities( analysisConfig, @@ -168,17 +163,32 @@ export function calculateModelMemoryLimitProvider(callAsCurrentUser: APICaller) }) ).model_memory_estimate.toUpperCase(); - let modelMemoryLimit: string = estimatedModelMemoryLimit; + let modelMemoryLimit = estimatedModelMemoryLimit; + let mmlCappedAtMax = false; // if max_model_memory_limit has been set, // make sure the estimated value is not greater than it. - if (!allowMMLGreaterThanMax && maxModelMemoryLimit !== undefined) { - // @ts-ignore - const maxBytes = numeral(maxModelMemoryLimit).value(); + if (allowMMLGreaterThanMax === false) { // @ts-ignore const mmlBytes = numeral(estimatedModelMemoryLimit).value(); - if (mmlBytes > maxBytes) { + if (maxModelMemoryLimit !== undefined) { + // @ts-ignore + const maxBytes = numeral(maxModelMemoryLimit).value(); + if (mmlBytes > maxBytes) { + // @ts-ignore + modelMemoryLimit = `${Math.floor(maxBytes / numeral('1MB').value())}MB`; + mmlCappedAtMax = true; + } + } + + // if we've not already capped the estimated mml at the hard max server setting + // ensure that the estimated mml isn't greater than the effective max mml + if (mmlCappedAtMax === false && effectiveMaxModelMemoryLimit !== undefined) { // @ts-ignore - modelMemoryLimit = `${Math.floor(maxBytes / numeral('1MB').value())}MB`; + const effectiveMaxMmlBytes = numeral(effectiveMaxModelMemoryLimit).value(); + if (mmlBytes > effectiveMaxMmlBytes) { + // @ts-ignore + modelMemoryLimit = `${Math.floor(effectiveMaxMmlBytes / numeral('1MB').value())}MB`; + } } } @@ -186,6 +196,7 @@ export function calculateModelMemoryLimitProvider(callAsCurrentUser: APICaller) estimatedModelMemoryLimit, modelMemoryLimit, ...(maxModelMemoryLimit ? { maxModelMemoryLimit } : {}), + ...(effectiveMaxModelMemoryLimit ? { effectiveMaxModelMemoryLimit } : {}), }; }; } diff --git a/x-pack/plugins/ml/server/models/job_validation/messages.js b/x-pack/plugins/ml/server/models/job_validation/messages.js index 3fd90d0a356a18..6cdbc457e6adef 100644 --- a/x-pack/plugins/ml/server/models/job_validation/messages.js +++ b/x-pack/plugins/ml/server/models/job_validation/messages.js @@ -433,6 +433,17 @@ export const getMessages = () => { } ), }, + mml_greater_than_effective_max_mml: { + status: 'WARNING', + text: i18n.translate( + 'xpack.ml.models.jobValidation.messages.mmlGreaterThanEffectiveMaxMmlMessage', + { + defaultMessage: + 'Job will not be able to run in the current cluster because model memory limit is higher than {effectiveMaxModelMemoryLimit}.', + values: { effectiveMaxModelMemoryLimit: '{{effectiveMaxModelMemoryLimit}}' }, + } + ), + }, mml_greater_than_max_mml: { status: 'ERROR', text: i18n.translate('xpack.ml.models.jobValidation.messages.mmlGreaterThanMaxMmlMessage', { diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.test.ts b/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.test.ts index 6b5d5614325bfc..bf88716181bb3d 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.test.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.test.ts @@ -24,6 +24,7 @@ describe('ML - validateModelMemoryLimit', () => { }, limits: { max_model_memory_limit: '30mb', + effective_max_model_memory_limit: '40mb', }, }; @@ -211,6 +212,30 @@ describe('ML - validateModelMemoryLimit', () => { }); }); + it('Called with no duration or split and mml above limit, no max setting', () => { + const job = getJobConfig(); + const duration = undefined; + // @ts-ignore + job.analysis_limits.model_memory_limit = '31mb'; + + return validateModelMemoryLimit(getMockCallWithRequest(), job, duration).then(messages => { + const ids = messages.map(m => m.id); + expect(ids).toEqual([]); + }); + }); + + it('Called with no duration or split and mml above limit, no max setting, above effective max mml', () => { + const job = getJobConfig(); + const duration = undefined; + // @ts-ignore + job.analysis_limits.model_memory_limit = '41mb'; + + return validateModelMemoryLimit(getMockCallWithRequest(), job, duration).then(messages => { + const ids = messages.map(m => m.id); + expect(ids).toEqual(['mml_greater_than_effective_max_mml']); + }); + }); + it('Called with small number of detectors, so estimated mml is under specified mml, no max setting', () => { const dtrs = createDetectors(1); const job = getJobConfig(['instance'], dtrs); diff --git a/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.ts b/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.ts index 16a48addfeaf4a..5c3250af6ef468 100644 --- a/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.ts +++ b/x-pack/plugins/ml/server/models/job_validation/validate_model_memory_limit.ts @@ -10,6 +10,7 @@ import { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; import { validateJobObject } from './validate_job_object'; import { calculateModelMemoryLimitProvider } from '../calculate_model_memory_limit'; import { ALLOWED_DATA_UNITS } from '../../../common/constants/validation'; +import { MlInfoResponse } from '../../../common/types/ml_server_info'; // The minimum value the backend expects is 1MByte const MODEL_MEMORY_LIMIT_MINIMUM_BYTES = 1048576; @@ -50,9 +51,9 @@ export async function validateModelMemoryLimit( // retrieve the max_model_memory_limit value from the server // this will be unset unless the user has set this on their cluster - const maxModelMemoryLimit: string | undefined = ( - await callWithRequest('ml.info') - )?.limits?.max_model_memory_limit?.toUpperCase(); + const info = await callWithRequest('ml.info'); + const maxModelMemoryLimit = info.limits.max_model_memory_limit?.toUpperCase(); + const effectiveMaxModelMemoryLimit = info.limits.effective_max_model_memory_limit?.toUpperCase(); if (runCalcModelMemoryTest) { const { modelMemoryLimit } = await calculateModelMemoryLimitProvider(callWithRequest)( @@ -113,17 +114,35 @@ export async function validateModelMemoryLimit( // if max_model_memory_limit has been set, // make sure the user defined MML is not greater than it - if (maxModelMemoryLimit !== undefined && mml !== null) { - // @ts-ignore - const maxMmlBytes = numeral(maxModelMemoryLimit).value(); + if (mml !== null) { + let maxMmlExceeded = false; // @ts-ignore const mmlBytes = numeral(mml).value(); - if (mmlBytes > maxMmlBytes) { - messages.push({ - id: 'mml_greater_than_max_mml', - maxModelMemoryLimit, - mml, - }); + + if (maxModelMemoryLimit !== undefined) { + // @ts-ignore + const maxMmlBytes = numeral(maxModelMemoryLimit).value(); + if (mmlBytes > maxMmlBytes) { + maxMmlExceeded = true; + messages.push({ + id: 'mml_greater_than_max_mml', + maxModelMemoryLimit, + mml, + }); + } + } + + if (effectiveMaxModelMemoryLimit !== undefined && maxMmlExceeded === false) { + // @ts-ignore + const effectiveMaxMmlBytes = numeral(effectiveMaxModelMemoryLimit).value(); + if (mmlBytes > effectiveMaxMmlBytes) { + messages.push({ + id: 'mml_greater_than_effective_max_mml', + maxModelMemoryLimit, + mml, + effectiveMaxModelMemoryLimit, + }); + } } } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index a2b4bd224e6370..956dcb08e5fc11 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -10053,7 +10053,6 @@ "xpack.ml.models.jobValidation.messages.jobIdInvalidMessage": "ジョブ ID が無効です。アルファベットの小文字 (a-z と 0-9)、ハイフンまたはアンダーラインが使用でき、最初と最後を英数字にする必要があります。", "xpack.ml.models.jobValidation.messages.jobIdValidHeading": "ジョブ ID のフォーマットは有効です。", "xpack.ml.models.jobValidation.messages.jobIdValidMessage": "アルファベットの小文字 (a-z と 0-9)、ハイフンまたはアンダーライン、最初と最後を英数字にし、{maxLength, plural, one {# 文字} other {# 文字}}以内にする必要があります。", - "xpack.ml.models.jobValidation.messages.mmlGreaterThanMaxMmlMessage": "モデルメモリー制限が、このクラスターに構成された最大モデルメモリー制限を超えています。", "xpack.ml.models.jobValidation.messages.mmlValueInvalidMessage": "{mml} はモデルメモリー制限の有効な値ではありません。この値は最低 1MB で、バイト (例: 10MB) で指定する必要があります。", "xpack.ml.models.jobValidation.messages.skippedExtendedTestsMessage": "ジョブの構成の基本要件が満たされていないため、他のチェックをスキップしました。", "xpack.ml.models.jobValidation.messages.successBucketSpanHeading": "バケットスパン", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index f7caf1619f5fb0..cc42647f356bfb 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -10059,7 +10059,6 @@ "xpack.ml.models.jobValidation.messages.jobIdInvalidMessage": "作业 ID 无效.其可以包含小写字母数字(a-z 和 0-9)字符、连字符或下划线,且必须以字母数字字符开头和结尾。", "xpack.ml.models.jobValidation.messages.jobIdValidHeading": "作业 ID 格式有效", "xpack.ml.models.jobValidation.messages.jobIdValidMessage": "小写字母数字(a-z 和 0-9)字符、连字符或下划线,以字母数字字符开头和结尾,且长度不超过 {maxLength, plural, one {# 个字符} other {# 个字符}}。", - "xpack.ml.models.jobValidation.messages.mmlGreaterThanMaxMmlMessage": "模型内存限制大于为此集群配置的最大模型内存限制。", "xpack.ml.models.jobValidation.messages.mmlValueInvalidMessage": "{mml} 不是有效的模型内存限制值。该值需要至少 1MB,且应以字节为单位(例如 10MB)指定。", "xpack.ml.models.jobValidation.messages.skippedExtendedTestsMessage": "已跳过其他检查,因为未满足作业配置的基本要求。", "xpack.ml.models.jobValidation.messages.successBucketSpanHeading": "存储桶跨度", From 8f05cf0ecfd91e1ba4470512e9d1f26b3459cfd8 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Fri, 8 May 2020 14:43:02 +0200 Subject: [PATCH 44/58] [Uptime] Enable loading on monitor list (#65670) --- .../__snapshots__/fingerprint_col.test.tsx.snap | 2 ++ .../public/components/certificates/certificates_list.tsx | 3 ++- .../public/components/certificates/fingerprint_col.tsx | 9 ++++++++- .../components/overview/monitor_list/monitor_list.tsx | 5 +---- x-pack/plugins/uptime/public/pages/certificates.tsx | 2 +- .../uptime/public/state/certificates/certificates.ts | 2 +- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/certificates/__tests__/__snapshots__/fingerprint_col.test.tsx.snap b/x-pack/plugins/uptime/public/components/certificates/__tests__/__snapshots__/fingerprint_col.test.tsx.snap index c9b17db5532f4a..b4e5a344122123 100644 --- a/x-pack/plugins/uptime/public/components/certificates/__tests__/__snapshots__/fingerprint_col.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/certificates/__tests__/__snapshots__/fingerprint_col.test.tsx.snap @@ -36,6 +36,7 @@ Array [ class="euiToolTipAnchor" > -
- {{(hits || 0) | number:0}} - - -
+ +
; + + beforeAll(() => { + props = { + onResetQuery: jest.fn(), + showResetButton: true, + hits: 2, + }; + }); + + it('HitsCounter renders a button by providing the showResetButton property', () => { + component = mountWithIntl(); + expect(findTestSubject(component, 'resetSavedSearch').length).toBe(1); + }); + + it('HitsCounter not renders a button when the showResetButton property is false', () => { + component = mountWithIntl( + + ); + expect(findTestSubject(component, 'resetSavedSearch').length).toBe(0); + }); + + it('expect to render the number of hits', function() { + component = mountWithIntl(); + const hits = findTestSubject(component, 'discoverQueryHits'); + expect(hits.text()).toBe('2'); + }); + + it('expect to render 1,899 hits if 1899 hits given', function() { + component = mountWithIntl( + + ); + const hits = findTestSubject(component, 'discoverQueryHits'); + expect(hits.text()).toBe('1,899'); + }); + + it('should reset query', function() { + component = mountWithIntl(); + findTestSubject(component, 'resetSavedSearch').simulate('click'); + expect(props.onResetQuery).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx b/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx new file mode 100644 index 00000000000000..1d2cd12877b1c0 --- /dev/null +++ b/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx @@ -0,0 +1,83 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React from 'react'; +import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { formatNumWithCommas } from '../../helpers'; + +export interface HitsCounterProps { + /** + * the number of query hits + */ + hits: number; + /** + * displays the reset button + */ + showResetButton: boolean; + /** + * resets the query + */ + onResetQuery: () => void; +} + +export function HitsCounter({ hits, showResetButton, onResetQuery }: HitsCounterProps) { + return ( + + + + + {formatNumWithCommas(hits)}{' '} + + + + {showResetButton && ( + + + + + + )} + + + ); +} diff --git a/src/plugins/discover/public/application/components/hits_counter/hits_counter_directive.ts b/src/plugins/discover/public/application/components/hits_counter/hits_counter_directive.ts new file mode 100644 index 00000000000000..8d45e28370cade --- /dev/null +++ b/src/plugins/discover/public/application/components/hits_counter/hits_counter_directive.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { HitsCounter } from './hits_counter'; + +export function createHitsCounterDirective(reactDirective: any) { + return reactDirective(HitsCounter, [ + ['hits', { watchDepth: 'reference' }], + ['showResetButton', { watchDepth: 'reference' }], + ['onResetQuery', { watchDepth: 'reference' }], + ]); +} diff --git a/src/plugins/discover/public/application/components/hits_counter/index.ts b/src/plugins/discover/public/application/components/hits_counter/index.ts new file mode 100644 index 00000000000000..58e7a9eda7f51a --- /dev/null +++ b/src/plugins/discover/public/application/components/hits_counter/index.ts @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { HitsCounter } from './hits_counter'; +export { createHitsCounterDirective } from './hits_counter_directive'; diff --git a/src/plugins/discover/public/application/helpers/format_number_with_commas.ts b/src/plugins/discover/public/application/helpers/format_number_with_commas.ts new file mode 100644 index 00000000000000..01a010d823d5f3 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/format_number_with_commas.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const COMMA_SEPARATOR_RE = /(\d)(?=(\d{3})+(?!\d))/g; + +/** + * Converts a number to a string and adds commas + * as thousands separators + */ +export const formatNumWithCommas = (input: number) => + String(input).replace(COMMA_SEPARATOR_RE, '$1,'); diff --git a/src/plugins/discover/public/application/helpers/index.ts b/src/plugins/discover/public/application/helpers/index.ts index 7196c96989e97d..3555d24924e806 100644 --- a/src/plugins/discover/public/application/helpers/index.ts +++ b/src/plugins/discover/public/application/helpers/index.ts @@ -18,3 +18,4 @@ */ export { shortenDottedString } from './shorten_dotted_string'; +export { formatNumWithCommas } from './format_number_with_commas'; diff --git a/src/plugins/discover/public/get_inner_angular.ts b/src/plugins/discover/public/get_inner_angular.ts index e7813c43383f93..8c3f4f030688ce 100644 --- a/src/plugins/discover/public/get_inner_angular.ts +++ b/src/plugins/discover/public/get_inner_angular.ts @@ -57,6 +57,7 @@ import { createTopNavHelper, } from '../../kibana_legacy/public'; import { createDiscoverSidebarDirective } from './application/components/sidebar'; +import { createHitsCounterDirective } from '././application/components/hits_counter'; import { DiscoverStartPlugins } from './plugin'; /** @@ -151,6 +152,7 @@ export function initializeInnerAngularModule( .directive('fixedScroll', FixedScrollProvider) .directive('renderComplete', createRenderCompleteDirective) .directive('discoverSidebar', createDiscoverSidebarDirective) + .directive('hitsCounter', createHitsCounterDirective) .service('debounce', ['$timeout', DebounceProviderTimeout]); } From d40387161e16aa9cf8396d669c1f8478ec674442 Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Fri, 8 May 2020 11:35:17 -0400 Subject: [PATCH 49/58] Skipping failing tests. #65867 #65866 #65865 --- .../server/models/job_validation/job_validation.test.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts b/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts index 9851f80a42d5bb..ca127f43d08afe 100644 --- a/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts +++ b/x-pack/plugins/ml/server/models/job_validation/job_validation.test.ts @@ -290,7 +290,8 @@ describe('ML - validateJob', () => { }); }); - it('basic validation passes, extended checks return some messages', () => { + // Failing https://github.com/elastic/kibana/issues/65865 + it.skip('basic validation passes, extended checks return some messages', () => { const payload = getBasicPayload(); return validateJob(callWithRequest, payload).then(messages => { const ids = messages.map(m => m.id); @@ -303,7 +304,8 @@ describe('ML - validateJob', () => { }); }); - it('categorization job using mlcategory passes aggregatable field check', () => { + // Failing https://github.com/elastic/kibana/issues/65866 + it.skip('categorization job using mlcategory passes aggregatable field check', () => { const payload: any = { job: { job_id: 'categorization_test', @@ -369,7 +371,8 @@ describe('ML - validateJob', () => { }); }); - it('script field not reported as non aggregatable', () => { + // Failing https://github.com/elastic/kibana/issues/65867 + it.skip('script field not reported as non aggregatable', () => { const payload: any = { job: { job_id: 'categorization_test', From e79f331fb460c954dcb2d8fcf5704681f26d9f5a Mon Sep 17 00:00:00 2001 From: Andrew Goldstein Date: Fri, 8 May 2020 09:38:38 -0600 Subject: [PATCH 50/58] [SIEM] Fixes a CSS issue with Timeline field truncation (#65789) ## Summary Fixes [a CSS issue where Timeline field truncation](https://github.com/elastic/kibana/issues/65170) wasn't working, per the following screenshots: ### Before before ### After after ## Desk testing * The timeline in the _Before_ and _After_ screenshots above includes columns that typically contain large values (e.g. `process.hash.sha256`). It also contains the `event.module` column, which has special formatting, as detailed below. * You may re-create the timeline shown in the _Before_ and _After_ screenshots, or download the exported timeline from the following link [truncation.ndjson.txt](https://github.com/elastic/kibana/files/4596036/truncation.ndjson.txt) and import it. (Remove the `.txt` extension after downloading it.) * The `event.module` field has special formatting that displays an icon link to the endpoint if it's been configured. To desk test this without configuring an endpoint, edit `x-pack/plugins/siem/public/components/timeline/body/renderers/formatted_field_helpers.tsx`, and change the following line: ``` {endpointRefUrl != null && canYouAddEndpointLogo(moduleName, endpointRefUrl) && ( ``` to ``` {true && ( ``` The above change forces the icon to always appear, even if you don't have an endpoint configured. ### Desk tested in: - Chrome `81.0.4044.138` - Firefox `76.0` - Safari `13.1` --- .../body/renderers/formatted_field_helpers.tsx | 9 +++++++-- .../public/components/with_hover_actions/index.tsx | 13 +++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/siem/public/components/timeline/body/renderers/formatted_field_helpers.tsx b/x-pack/plugins/siem/public/components/timeline/body/renderers/formatted_field_helpers.tsx index b48cc546fe78cf..7c9accd4cef49e 100644 --- a/x-pack/plugins/siem/public/components/timeline/body/renderers/formatted_field_helpers.tsx +++ b/x-pack/plugins/siem/public/components/timeline/body/renderers/formatted_field_helpers.tsx @@ -7,6 +7,7 @@ import { EuiLink, EuiFlexGroup, EuiFlexItem, EuiIcon, EuiToolTip } from '@elastic/eui'; import { isString, isEmpty } from 'lodash/fp'; import React from 'react'; +import styled from 'styled-components'; import { DefaultDraggable } from '../../../draggables'; import { getEmptyTagValue } from '../../../empty_value'; @@ -18,6 +19,10 @@ import endPointSvg from '../../../../utils/logo_endpoint/64_color.svg'; import * as i18n from './translations'; +const EventModuleFlexItem = styled(EuiFlexItem)` + width: 100%; +`; + export const renderRuleName = ({ contextId, eventId, @@ -87,7 +92,7 @@ export const renderEventModule = ({ endpointRefUrl != null && !isEmpty(endpointRefUrl) ? 'flexStart' : 'spaceBetween' } > - + {content} - + {endpointRefUrl != null && canYouAddEndpointLogo(moduleName, endpointRefUrl) && ( ( const popover = useMemo(() => { return ( - ( panelPaddingSize={!alwaysShow ? 's' : 'none'} > {isOpen ? hoverContent : null} - + ); }, [content, onMouseLeave, isOpen, alwaysShow, hoverContent]); From 3a6c1ceeddfb51efed5cff163599ab17bcf78701 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Fri, 8 May 2020 17:56:28 +0200 Subject: [PATCH 51/58] [Discover] Prevent whitespace wrapping of doc table header (#52861) Co-authored-by: Dave Snider --- .../angular/doc_table/components/_table_header.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/discover/public/application/angular/doc_table/components/_table_header.scss b/src/plugins/discover/public/application/angular/doc_table/components/_table_header.scss index 099286f8c875c6..9ea4e21632ace9 100644 --- a/src/plugins/discover/public/application/angular/doc_table/components/_table_header.scss +++ b/src/plugins/discover/public/application/angular/doc_table/components/_table_header.scss @@ -1,3 +1,6 @@ +.kbnDocTableHeader { + white-space: nowrap; +} .kbnDocTableHeader button { margin-left: $euiSizeXS; } From 97561d6751a6f864d06697800a8fbf0d39d05966 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Fri, 8 May 2020 11:53:42 -0500 Subject: [PATCH 52/58] restore index pattern management data-test-subj's (#64697) * restore index pattern management data-test-subj's --- .../edit_index_pattern/tabs/utils.ts | 3 +++ test/functional/page_objects/settings_page.ts | 16 +++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/tabs/utils.ts b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/tabs/utils.ts index bdb1436c37efb3..83335a6fabfeb6 100644 --- a/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/tabs/utils.ts +++ b/src/legacy/core_plugins/kibana/public/management/sections/index_patterns/edit_index_pattern/tabs/utils.ts @@ -96,18 +96,21 @@ export function getTabs( tabs.push({ name: getTitle('indexed', filteredCount, totalCount), id: TAB_INDEXED_FIELDS, + 'data-test-subj': 'tab-indexedFields', }); if (indexPatternListProvider.areScriptedFieldsEnabled(indexPattern)) { tabs.push({ name: getTitle('scripted', filteredCount, totalCount), id: TAB_SCRIPTED_FIELDS, + 'data-test-subj': 'tab-scriptedFields', }); } tabs.push({ name: getTitle('sourceFilters', filteredCount, totalCount), id: TAB_SOURCE_FILTERS, + 'data-test-subj': 'tab-sourceFilters', }); return tabs; diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts index 8175361ffc8420..b8069b31257d30 100644 --- a/test/functional/page_objects/settings_page.ts +++ b/test/functional/page_objects/settings_page.ts @@ -206,17 +206,15 @@ export function SettingsPageProvider({ getService, getPageObjects }: FtrProvider async getFieldsTabCount() { return retry.try(async () => { - const indexedFieldsTab = await find.byCssSelector('#indexedFields .euiTab__content'); - const text = await indexedFieldsTab.getVisibleText(); - return text.split(/[()]/)[1]; + const text = await testSubjects.getVisibleText('tab-indexedFields'); + return text.split(' ')[1].replace(/\((.*)\)/, '$1'); }); } async getScriptedFieldsTabCount() { return await retry.try(async () => { - const scriptedFieldsTab = await find.byCssSelector('#scriptedFields .euiTab__content'); - const text = await scriptedFieldsTab.getVisibleText(); - return text.split(/[()]/)[1]; + const text = await testSubjects.getVisibleText('tab-scriptedFields'); + return text.split(' ')[2].replace(/\((.*)\)/, '$1'); }); } @@ -431,17 +429,17 @@ export function SettingsPageProvider({ getService, getPageObjects }: FtrProvider async clickFieldsTab() { log.debug('click Fields tab'); - await find.clickByCssSelector('#indexedFields'); + await testSubjects.click('tab-indexedFields'); } async clickScriptedFieldsTab() { log.debug('click Scripted Fields tab'); - await find.clickByCssSelector('#scriptedFields'); + await testSubjects.click('tab-scriptedFields'); } async clickSourceFiltersTab() { log.debug('click Source Filters tab'); - await find.clickByCssSelector('#sourceFilters'); + await testSubjects.click('tab-sourceFilters'); } async editScriptedField(name: string) { From d3b155f8437f1cf2dbe09ba30f667231dce386e0 Mon Sep 17 00:00:00 2001 From: Quynh Nguyen <43350163+qn895@users.noreply.github.com> Date: Fri, 8 May 2020 12:06:59 -0500 Subject: [PATCH 53/58] [ML] Add job timing stats to anomaly jobs (#65696) * [ML] Add anomaly job timing stats to Counts & JSON * [ML] Remove roundTo3DecimalPlace and clean up * [ML] Fix format_values to round decimals for time values * [ML] Remove timing_stats and forecast_stats from cloneJob * [ML] Remove timing_stats & forecasts in job_service instead of utils --- .../components/job_details/extract_job_details.js | 10 ++++++++++ .../jobs_list/components/job_details/format_values.js | 6 ++++++ .../jobs_list/components/job_details/job_details.js | 3 ++- .../ml/public/application/services/job_service.js | 2 ++ x-pack/plugins/ml/server/models/job_service/jobs.ts | 6 ++---- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/extract_job_details.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/extract_job_details.js index f7b0e726ecc53d..fa36a0626d632e 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/extract_job_details.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/extract_job_details.js @@ -165,6 +165,15 @@ export function extractJobDetails(job) { items: filterObjects(job.model_size_stats).map(formatValues), }; + const jobTimingStats = { + id: 'jobTimingStats', + title: i18n.translate('xpack.ml.jobsList.jobDetails.jobTimingStatsTitle', { + defaultMessage: 'Job timing stats', + }), + position: 'left', + items: filterObjects(job.timing_stats).map(formatValues), + }; + const datafeedTimingStats = { id: 'datafeedTimingStats', title: i18n.translate('xpack.ml.jobsList.jobDetails.datafeedTimingStatsTitle', { @@ -192,6 +201,7 @@ export function extractJobDetails(job) { datafeed, counts, modelSizeStats, + jobTimingStats, datafeedTimingStats, }; } diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/format_values.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/format_values.js index 9984f3be299ae8..246a476517acea 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/format_values.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/format_values.js @@ -63,6 +63,12 @@ export function formatValues([key, value]) { // numbers rounded to 3 decimal places case 'average_search_time_per_bucket_ms': case 'exponential_average_search_time_per_hour_ms': + case 'total_bucket_processing_time_ms': + case 'minimum_bucket_processing_time_ms': + case 'maximum_bucket_processing_time_ms': + case 'average_bucket_processing_time_ms': + case 'exponential_average_bucket_processing_time_ms': + case 'exponential_average_bucket_processing_time_per_hour_ms': value = typeof value === 'number' ? roundToDecimalPlace(value, 3).toLocaleString() : value; break; diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_details.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_details.js index e3f348ad32b0c1..0375997b86bb89 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_details.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_details/job_details.js @@ -60,6 +60,7 @@ export class JobDetails extends Component { datafeed, counts, modelSizeStats, + jobTimingStats, datafeedTimingStats, } = extractJobDetails(job); @@ -102,7 +103,7 @@ export class JobDetails extends Component { content: ( ), }, diff --git a/x-pack/plugins/ml/public/application/services/job_service.js b/x-pack/plugins/ml/public/application/services/job_service.js index bbfec49ac1388f..fb75476c48fa3d 100644 --- a/x-pack/plugins/ml/public/application/services/job_service.js +++ b/x-pack/plugins/ml/public/application/services/job_service.js @@ -369,6 +369,8 @@ class JobService { delete tempJob.open_time; delete tempJob.established_model_memory; delete tempJob.calendars; + delete tempJob.timing_stats; + delete tempJob.forecasts_stats; delete tempJob.analysis_config.use_per_partition_normalization; diff --git a/x-pack/plugins/ml/server/models/job_service/jobs.ts b/x-pack/plugins/ml/server/models/job_service/jobs.ts index 6024ecf4925e61..225cd43e411a4f 100644 --- a/x-pack/plugins/ml/server/models/job_service/jobs.ts +++ b/x-pack/plugins/ml/server/models/job_service/jobs.ts @@ -328,7 +328,7 @@ export function jobsProvider(callAsCurrentUser: APICaller) { // create jobs objects containing job stats, datafeeds, datafeed stats and calendars if (jobResults && jobResults.jobs) { jobResults.jobs.forEach(job => { - const tempJob = job as CombinedJobWithStats; + let tempJob = job as CombinedJobWithStats; const calendars: string[] = [ ...(calendarsByJobId[tempJob.job_id] || []), @@ -341,9 +341,7 @@ export function jobsProvider(callAsCurrentUser: APICaller) { if (jobStatsResults && jobStatsResults.jobs) { const jobStats = jobStatsResults.jobs.find(js => js.job_id === tempJob.job_id); if (jobStats !== undefined) { - tempJob.state = jobStats.state; - tempJob.data_counts = jobStats.data_counts; - tempJob.model_size_stats = jobStats.model_size_stats; + tempJob = { ...tempJob, ...jobStats }; if (jobStats.node) { tempJob.node = jobStats.node; } From 1c6e6cb7b7a3ac7522691989881cd74fd3b17992 Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Fri, 8 May 2020 10:55:43 -0700 Subject: [PATCH 54/58] [Metrics UI] Fix p95/p99 charts and alerting error (#65579) * [Metrics UI] Fix p95/p99 charts and alerting error - Fixes #65561 * Fixing open in visualize for percentiles * Adding test for P95; refactoring to use first consitently --- .../components/expression_chart.tsx | 5 +- .../components/expression_row.tsx | 16 ++++++ .../public/alerting/metric_threshold/types.ts | 2 + .../components/helpers/create_tsvb_link.ts | 18 +++++++ .../components/series_chart.tsx | 19 ++++--- .../create_percentile_aggregation.ts | 22 ++++++++ .../metric_threshold_executor.test.ts | 52 +++++++++++++++++++ .../metric_threshold_executor.ts | 18 +++++-- .../alerting/metric_threshold/test_mocks.ts | 8 +-- .../lib/alerting/metric_threshold/types.ts | 2 + 10 files changed, 144 insertions(+), 18 deletions(-) create mode 100644 x-pack/plugins/infra/server/lib/alerting/metric_threshold/create_percentile_aggregation.ts diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx index 82e751627a05bd..77147d1b3b2b78 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx @@ -118,10 +118,7 @@ export const ExpressionChart: React.FC = ({ const series = { ...firstSeries, rows: firstSeries.rows.map(row => { - const newRow: MetricsExplorerRow = { - timestamp: row.timestamp, - metric_0: row.metric_0 || null, - }; + const newRow: MetricsExplorerRow = { ...row }; thresholds.forEach((thresholdValue, index) => { newRow[`metric_threshold_${index}`] = thresholdValue; }); diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.tsx index 8801df380b48d4..be0f5f88a2b55b 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.tsx @@ -234,4 +234,20 @@ export const aggregationType: { [key: string]: any } = { value: AGGREGATION_TYPES.SUM, validNormalizedTypes: ['number'], }, + p95: { + text: i18n.translate('xpack.infra.metrics.alertFlyout.aggregationText.p95', { + defaultMessage: '95th Percentile', + }), + fieldRequired: false, + value: AGGREGATION_TYPES.P95, + validNormalizedTypes: ['number'], + }, + p99: { + text: i18n.translate('xpack.infra.metrics.alertFlyout.aggregationText.p99', { + defaultMessage: '99th Percentile', + }), + fieldRequired: false, + value: AGGREGATION_TYPES.P99, + validNormalizedTypes: ['number'], + }, }; diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/types.ts b/x-pack/plugins/infra/public/alerting/metric_threshold/types.ts index af3baf191bed21..e421455cf6efdd 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/types.ts +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/types.ts @@ -29,6 +29,8 @@ export enum AGGREGATION_TYPES { MAX = 'max', RATE = 'rate', CARDINALITY = 'cardinality', + P95 = 'p95', + P99 = 'p99', } export interface MetricThresholdAlertParams { diff --git a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/helpers/create_tsvb_link.ts b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/helpers/create_tsvb_link.ts index 559422584f579a..f773c843d12fdd 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/helpers/create_tsvb_link.ts +++ b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/helpers/create_tsvb_link.ts @@ -46,6 +46,24 @@ export const metricsExplorerMetricToTSVBMetric = (metric: MetricsExplorerOptions field: derivativeId, }, ]; + } else if (metric.aggregation === 'p95' || metric.aggregation === 'p99') { + const percentileValue = metric.aggregation === 'p95' ? '95' : '99'; + return [ + { + id: uuid.v1(), + type: 'percentile', + field: metric.field, + percentiles: [ + { + id: uuid.v1(), + value: percentileValue, + mode: 'line', + percentile: '', + shade: 0.2, + }, + ], + }, + ]; } else { return [ { diff --git a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/series_chart.tsx b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/series_chart.tsx index 3b84fcbc34836b..223318da8cf46a 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/series_chart.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/components/series_chart.tsx @@ -20,6 +20,7 @@ import { MetricsExplorerOptionsMetric, MetricsExplorerChartType, } from '../hooks/use_metrics_explorer_options'; +import { getMetricId } from './helpers/get_metric_id'; type NumberOrString = string | number; @@ -45,10 +46,12 @@ export const MetricsExplorerAreaChart = ({ metric, id, series, type, stack, opac colorTransformer(MetricsExplorerColor.color0); const yAccessors = Array.isArray(id) - ? id.map(i => `metric_${i}`).slice(id.length - 1, id.length) - : [`metric_${id}`]; + ? id.map(i => getMetricId(metric, i)).slice(id.length - 1, id.length) + : [getMetricId(metric, id)]; const y0Accessors = - Array.isArray(id) && id.length > 1 ? id.map(i => `metric_${i}`).slice(0, 1) : undefined; + Array.isArray(id) && id.length > 1 + ? id.map(i => getMetricId(metric, i)).slice(0, 1) + : undefined; const chartId = `series-${series.id}-${yAccessors.join('-')}`; const seriesAreaStyle: RecursivePartial = { @@ -85,8 +88,10 @@ export const MetricsExplorerBarChart = ({ metric, id, series, stack }: Props) => (metric.color && colorTransformer(metric.color)) || colorTransformer(MetricsExplorerColor.color0); - const yAccessor = `metric_${id}`; - const chartId = `series-${series.id}-${yAccessor}`; + const yAccessors = Array.isArray(id) + ? id.map(i => getMetricId(metric, i)).slice(id.length - 1, id.length) + : [getMetricId(metric, id)]; + const chartId = `series-${series.id}-${yAccessors.join('-')}`; const seriesBarStyle: RecursivePartial = { rectBorder: { @@ -100,13 +105,13 @@ export const MetricsExplorerBarChart = ({ metric, id, series, stack }: Props) => }; return ( { + const value = type === Aggregators.P95 ? 95 : 99; + return { + aggregatedValue: { + percentiles: { + field, + percents: [value], + keyed: false, + }, + }, + }; +}; diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts index 2531e939792af2..ed5efc1473953f 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts @@ -233,6 +233,58 @@ describe('The metric threshold alert type', () => { expect(getState(instanceID).alertState).toBe(AlertStates.OK); }); }); + describe('querying with the p99 aggregator', () => { + const instanceID = 'test-*'; + const execute = (comparator: Comparator, threshold: number[]) => + executor({ + services, + params: { + criteria: [ + { + ...baseCriterion, + comparator, + threshold, + aggType: 'p99', + metric: 'test.metric.2', + }, + ], + }, + }); + test('alerts based on the p99 values', async () => { + await execute(Comparator.GT, [1]); + expect(mostRecentAction(instanceID).id).toBe(FIRED_ACTIONS.id); + expect(getState(instanceID).alertState).toBe(AlertStates.ALERT); + await execute(Comparator.LT, [1]); + expect(mostRecentAction(instanceID)).toBe(undefined); + expect(getState(instanceID).alertState).toBe(AlertStates.OK); + }); + }); + describe('querying with the p95 aggregator', () => { + const instanceID = 'test-*'; + const execute = (comparator: Comparator, threshold: number[]) => + executor({ + services, + params: { + criteria: [ + { + ...baseCriterion, + comparator, + threshold, + aggType: 'p95', + metric: 'test.metric.1', + }, + ], + }, + }); + test('alerts based on the p95 values', async () => { + await execute(Comparator.GT, [0.25]); + expect(mostRecentAction(instanceID).id).toBe(FIRED_ACTIONS.id); + expect(getState(instanceID).alertState).toBe(AlertStates.ALERT); + await execute(Comparator.LT, [0.95]); + expect(mostRecentAction(instanceID)).toBe(undefined); + expect(getState(instanceID).alertState).toBe(AlertStates.OK); + }); + }); describe("querying a metric that hasn't reported data", () => { const instanceID = 'test-*'; const execute = (alertOnNoData: boolean) => diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts index ec9389537835bb..71bee3209bf532 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { mapValues } from 'lodash'; +import { mapValues, first } from 'lodash'; import { i18n } from '@kbn/i18n'; import { InfraDatabaseSearchResponse } from '../../adapters/framework/adapter_types'; import { createAfterKeyHandler } from '../../../utils/create_afterkey_handler'; @@ -21,12 +21,16 @@ import { AlertServices, AlertExecutorOptions } from '../../../../../alerting/ser import { getIntervalInSeconds } from '../../../utils/get_interval_in_seconds'; import { getDateHistogramOffset } from '../../snapshot/query_helpers'; import { InfraBackendLibs } from '../../infra_types'; +import { createPercentileAggregation } from './create_percentile_aggregation'; const TOTAL_BUCKETS = 5; interface Aggregation { aggregatedIntervals: { - buckets: Array<{ aggregatedValue: { value: number }; doc_count: number }>; + buckets: Array<{ + aggregatedValue: { value: number; values?: Array<{ key: number; value: number }> }; + doc_count: number; + }>; }; } @@ -47,6 +51,12 @@ const getCurrentValueFromAggregations = ( if (aggType === Aggregators.COUNT) { return mostRecentBucket.doc_count; } + if (aggType === Aggregators.P95 || aggType === Aggregators.P99) { + const values = mostRecentBucket.aggregatedValue?.values || []; + const firstValue = first(values); + if (!firstValue) return null; + return firstValue.value; + } const { value } = mostRecentBucket.aggregatedValue; return value; } catch (e) { @@ -86,6 +96,8 @@ export const getElasticsearchMetricQuery = ( ? {} : aggType === Aggregators.RATE ? networkTraffic('aggregatedValue', metric) + : aggType === Aggregators.P95 || aggType === Aggregators.P99 + ? createPercentileAggregation(aggType, metric) : { aggregatedValue: { [aggType]: { @@ -275,7 +287,7 @@ export const createMetricThresholdExecutor = (libs: InfraBackendLibs, alertId: s ); // Because each alert result has the same group definitions, just grap the groups from the first one. - const groups = Object.keys(alertResults[0]); + const groups = Object.keys(first(alertResults)); for (const group of groups) { const alertInstance = services.alertInstanceFactory(`${alertId}-${group}`); 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 fa55f80e472de3..25b709d6afc51b 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 @@ -7,22 +7,22 @@ const bucketsA = [ { doc_count: 2, - aggregatedValue: { value: 0.5 }, + aggregatedValue: { value: 0.5, values: [{ key: 95.0, value: 0.5 }] }, }, { doc_count: 3, - aggregatedValue: { value: 1.0 }, + aggregatedValue: { value: 1.0, values: [{ key: 95.0, value: 1.0 }] }, }, ]; const bucketsB = [ { doc_count: 4, - aggregatedValue: { value: 2.5 }, + aggregatedValue: { value: 2.5, values: [{ key: 99.0, value: 2.5 }] }, }, { doc_count: 5, - aggregatedValue: { value: 3.5 }, + aggregatedValue: { value: 3.5, values: [{ key: 99.0, value: 3.5 }] }, }, ]; diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts index 18f5503fe2c9e3..76ddd107bd728e 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/types.ts @@ -23,6 +23,8 @@ export enum Aggregators { MAX = 'max', RATE = 'rate', CARDINALITY = 'cardinality', + P95 = 'p95', + P99 = 'p99', } export enum AlertStates { From 808e02564b67a89b9098c098eb57af841afd7152 Mon Sep 17 00:00:00 2001 From: Christos Nasikas Date: Fri, 8 May 2020 21:24:44 +0300 Subject: [PATCH 55/58] [SIEM][CASE] Moves functional tests from "legacyEs" to "Es" (#65851) --- .../basic/tests/configure/get_configure.ts | 2 +- .../basic/tests/configure/patch_configure.ts | 2 +- .../basic/tests/configure/post_configure.ts | 2 +- x-pack/test/case_api_integration/common/lib/utils.ts | 7 ++++--- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/x-pack/test/case_api_integration/basic/tests/configure/get_configure.ts b/x-pack/test/case_api_integration/basic/tests/configure/get_configure.ts index a9fc2706a6ba20..930cf42b9efc5c 100644 --- a/x-pack/test/case_api_integration/basic/tests/configure/get_configure.ts +++ b/x-pack/test/case_api_integration/basic/tests/configure/get_configure.ts @@ -18,7 +18,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('get_configure', () => { afterEach(async () => { diff --git a/x-pack/test/case_api_integration/basic/tests/configure/patch_configure.ts b/x-pack/test/case_api_integration/basic/tests/configure/patch_configure.ts index d66baa2a2eee2b..5f7d7c4c5c346b 100644 --- a/x-pack/test/case_api_integration/basic/tests/configure/patch_configure.ts +++ b/x-pack/test/case_api_integration/basic/tests/configure/patch_configure.ts @@ -18,7 +18,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('post_configure', () => { afterEach(async () => { diff --git a/x-pack/test/case_api_integration/basic/tests/configure/post_configure.ts b/x-pack/test/case_api_integration/basic/tests/configure/post_configure.ts index c2284492e5b771..86214a2bd3187f 100644 --- a/x-pack/test/case_api_integration/basic/tests/configure/post_configure.ts +++ b/x-pack/test/case_api_integration/basic/tests/configure/post_configure.ts @@ -18,7 +18,7 @@ import { // eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); - const es = getService('legacyEs'); + const es = getService('es'); describe('post_configure', () => { afterEach(async () => { diff --git a/x-pack/test/case_api_integration/common/lib/utils.ts b/x-pack/test/case_api_integration/common/lib/utils.ts index 6d0db69309b908..df768ff09b3689 100644 --- a/x-pack/test/case_api_integration/common/lib/utils.ts +++ b/x-pack/test/case_api_integration/common/lib/utils.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Client } from '@elastic/elasticsearch'; import { CasesConfigureRequest, CasesConfigureResponse } from '../../../../plugins/case/common/api'; export const getConfiguration = (connector_id: string = 'connector-1'): CasesConfigureRequest => { @@ -29,12 +30,12 @@ export const removeServerGeneratedPropertiesFromConfigure = ( return rest; }; -export const deleteConfiguration = async (es: any): Promise => { +export const deleteConfiguration = async (es: Client): Promise => { await es.deleteByQuery({ index: '.kibana', q: 'type:cases-configure', - waitForCompletion: true, - refresh: 'wait_for', + wait_for_completion: true, + refresh: true, body: {}, }); }; From 4d3261083b30567ff81b3fa132259872c27eaab9 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Fri, 8 May 2020 13:26:31 -0600 Subject: [PATCH 56/58] [SIEM][Detection Engine] Increases the template limit for ECS mappings ## Summary Increases the template limit for ECS mappings from default of 1k to 10k. This mirrors auditbeat, winlogbeat, filebeat, etc.. - [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios ### For maintainers --- .../routes/index/get_signals_template.test.ts | 17 +++++++++++++++-- .../routes/index/get_signals_template.ts | 5 +++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.test.ts b/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.test.ts index 80594ca74a3535..30362392898d13 100644 --- a/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.test.ts +++ b/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.test.ts @@ -7,10 +7,18 @@ import { getSignalsTemplate } from './get_signals_template'; describe('get_signals_template', () => { - test('it should set the lifecycle name and the rollover alias to be the name of the index passed in', () => { + test('it should set the lifecycle "name" and "rollover_alias" to be the name of the index passed in', () => { const template = getSignalsTemplate('test-index'); expect(template.settings).toEqual({ - index: { lifecycle: { name: 'test-index', rollover_alias: 'test-index' } }, + index: { + lifecycle: { + name: 'test-index', + rollover_alias: 'test-index', + }, + }, + mapping: { + total_fields: { limit: 10000 }, + }, }); }); @@ -28,4 +36,9 @@ describe('get_signals_template', () => { const template = getSignalsTemplate('test-index'); expect(typeof template.mappings.properties.signal).toEqual('object'); }); + + test('it should have a "total_fields" section that is at least 10k in size', () => { + const template = getSignalsTemplate('test-index'); + expect(template.settings.mapping.total_fields.limit).toBeGreaterThanOrEqual(10000); + }); }); diff --git a/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.ts b/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.ts index c6580f0bdda427..01d7182e253cec 100644 --- a/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.ts +++ b/x-pack/plugins/siem/server/lib/detection_engine/routes/index/get_signals_template.ts @@ -17,6 +17,11 @@ export const getSignalsTemplate = (index: string) => { rollover_alias: index, }, }, + mapping: { + total_fields: { + limit: 10000, + }, + }, }, index_patterns: [`${index}-*`], mappings: ecsMapping.mappings, From 04f37364fd228ab429bede7eb13768e4ed7f264b Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Fri, 8 May 2020 16:16:15 -0500 Subject: [PATCH 57/58] Fix anomalies display on focused APM service map (#65882) The map anomlies rings display was working on the global map and on the focused service of a focused map, but not on the other services on a focused map. This is because we were adding the anomlies to the list of services from the initial query, but not to the list of services derived from the connections data. Make the transformation that add anomalies happen after the derived services nodes are added. This is done in the function that was called `dedupeConnections`, but since it does much more than dedupe connections has been renamed to `transformServiceMapResponses`. Also make the node types extend `cytoscape.NodeDataDefinition` in order to simplify the types in the transformation (we were adding `& { id: string }` in some places which this replaces.) Fixes #65403. --- x-pack/plugins/apm/common/service_map.ts | 9 +-- .../server/lib/service_map/get_service_map.ts | 17 ++--- .../server/lib/service_map/ml_helpers.test.ts | 12 ++-- .../apm/server/lib/service_map/ml_helpers.ts | 9 +-- ...> transform_service_map_responses.test.ts} | 37 +++++++---- ....ts => transform_service_map_responses.ts} | 66 +++++++++++-------- 6 files changed, 85 insertions(+), 65 deletions(-) rename x-pack/plugins/apm/server/lib/service_map/{dedupe_connections/index.test.ts => transform_service_map_responses.test.ts} (83%) rename x-pack/plugins/apm/server/lib/service_map/{dedupe_connections/index.ts => transform_service_map_responses.ts} (76%) diff --git a/x-pack/plugins/apm/common/service_map.ts b/x-pack/plugins/apm/common/service_map.ts index dc457c38a52af4..87db0005fb6566 100644 --- a/x-pack/plugins/apm/common/service_map.ts +++ b/x-pack/plugins/apm/common/service_map.ts @@ -5,22 +5,23 @@ */ import { i18n } from '@kbn/i18n'; +import cytoscape from 'cytoscape'; import { ILicense } from '../../licensing/public'; import { AGENT_NAME, SERVICE_ENVIRONMENT, SERVICE_NAME, + SPAN_DESTINATION_SERVICE_RESOURCE, SPAN_SUBTYPE, - SPAN_TYPE, - SPAN_DESTINATION_SERVICE_RESOURCE + SPAN_TYPE } from './elasticsearch_fieldnames'; -export interface ServiceConnectionNode { +export interface ServiceConnectionNode extends cytoscape.NodeDataDefinition { [SERVICE_NAME]: string; [SERVICE_ENVIRONMENT]: string | null; [AGENT_NAME]: string; } -export interface ExternalConnectionNode { +export interface ExternalConnectionNode extends cytoscape.NodeDataDefinition { [SPAN_DESTINATION_SERVICE_RESOURCE]: string; [SPAN_TYPE]: string; [SPAN_SUBTYPE]: string; diff --git a/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts b/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts index 7d5f0a75d2208c..8fb44b70bc0812 100644 --- a/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts +++ b/x-pack/plugins/apm/server/lib/service_map/get_service_map.ts @@ -9,16 +9,15 @@ import { SERVICE_ENVIRONMENT, SERVICE_NAME } from '../../../common/elasticsearch_fieldnames'; +import { getMlIndex } from '../../../common/ml_job_constants'; import { getServicesProjection } from '../../../common/projections/services'; import { mergeProjection } from '../../../common/projections/util/merge_projection'; import { PromiseReturnType } from '../../../typings/common'; +import { rangeFilter } from '../helpers/range_filter'; import { Setup, SetupTimeRange } from '../helpers/setup_request'; -import { dedupeConnections } from './dedupe_connections'; +import { transformServiceMapResponses } from './transform_service_map_responses'; import { getServiceMapFromTraceIds } from './get_service_map_from_trace_ids'; import { getTraceSampleIds } from './get_trace_sample_ids'; -import { addAnomaliesToServicesData } from './ml_helpers'; -import { getMlIndex } from '../../../common/ml_job_constants'; -import { rangeFilter } from '../helpers/range_filter'; export interface IEnvOptions { setup: Setup & SetupTimeRange; @@ -179,13 +178,9 @@ export async function getServiceMap(options: IEnvOptions) { getAnomaliesData(options) ]); - const servicesDataWithAnomalies = addAnomaliesToServicesData( - servicesData, - anomaliesData - ); - - return dedupeConnections({ + return transformServiceMapResponses({ ...connectionData, - services: servicesDataWithAnomalies + anomalies: anomaliesData, + services: servicesData }); } diff --git a/x-pack/plugins/apm/server/lib/service_map/ml_helpers.test.ts b/x-pack/plugins/apm/server/lib/service_map/ml_helpers.test.ts index c80ba8dba01eaa..908dbe6df4636b 100644 --- a/x-pack/plugins/apm/server/lib/service_map/ml_helpers.test.ts +++ b/x-pack/plugins/apm/server/lib/service_map/ml_helpers.test.ts @@ -5,11 +5,11 @@ */ import { AnomaliesResponse } from './get_service_map'; -import { addAnomaliesToServicesData } from './ml_helpers'; +import { addAnomaliesDataToNodes } from './ml_helpers'; -describe('addAnomaliesToServicesData', () => { - it('adds anomalies to services data', () => { - const servicesData = [ +describe('addAnomaliesDataToNodes', () => { + it('adds anomalies to nodes', () => { + const nodes = [ { 'service.name': 'opbeans-ruby', 'agent.name': 'ruby', @@ -89,8 +89,8 @@ describe('addAnomaliesToServicesData', () => { ]; expect( - addAnomaliesToServicesData( - servicesData, + addAnomaliesDataToNodes( + nodes, (anomaliesResponse as unknown) as AnomaliesResponse ) ).toEqual(result); diff --git a/x-pack/plugins/apm/server/lib/service_map/ml_helpers.ts b/x-pack/plugins/apm/server/lib/service_map/ml_helpers.ts index 9789911660bd03..fae9e7d4cb1c61 100644 --- a/x-pack/plugins/apm/server/lib/service_map/ml_helpers.ts +++ b/x-pack/plugins/apm/server/lib/service_map/ml_helpers.ts @@ -9,10 +9,11 @@ import { getMlJobServiceName, getSeverity } from '../../../common/ml_job_constants'; -import { AnomaliesResponse, ServicesResponse } from './get_service_map'; +import { ConnectionNode } from '../../../common/service_map'; +import { AnomaliesResponse } from './get_service_map'; -export function addAnomaliesToServicesData( - servicesData: ServicesResponse, +export function addAnomaliesDataToNodes( + nodes: ConnectionNode[], anomaliesResponse: AnomaliesResponse ) { const anomaliesMap = ( @@ -52,7 +53,7 @@ export function addAnomaliesToServicesData( }; }, {}); - const servicesDataWithAnomalies = servicesData.map(service => { + const servicesDataWithAnomalies = nodes.map(service => { const serviceAnomalies = anomaliesMap[service[SERVICE_NAME]]; if (serviceAnomalies) { const maxScore = serviceAnomalies.max_score; diff --git a/x-pack/plugins/apm/server/lib/service_map/dedupe_connections/index.test.ts b/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.test.ts similarity index 83% rename from x-pack/plugins/apm/server/lib/service_map/dedupe_connections/index.test.ts rename to x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.test.ts index 4af8a541392042..45b64c1ad03a42 100644 --- a/x-pack/plugins/apm/server/lib/service_map/dedupe_connections/index.test.ts +++ b/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.test.ts @@ -4,16 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ServiceMapResponse } from './'; import { - SPAN_DESTINATION_SERVICE_RESOURCE, - SERVICE_NAME, - SERVICE_ENVIRONMENT, AGENT_NAME, - SPAN_TYPE, - SPAN_SUBTYPE -} from '../../../../common/elasticsearch_fieldnames'; -import { dedupeConnections } from './'; + SERVICE_ENVIRONMENT, + SERVICE_NAME, + SPAN_DESTINATION_SERVICE_RESOURCE, + SPAN_SUBTYPE, + SPAN_TYPE +} from '../../../common/elasticsearch_fieldnames'; +import { AnomaliesResponse } from './get_service_map'; +import { + transformServiceMapResponses, + ServiceMapResponse +} from './transform_service_map_responses'; const nodejsService = { [SERVICE_NAME]: 'opbeans-node', @@ -33,9 +36,14 @@ const javaService = { [AGENT_NAME]: 'java' }; -describe('dedupeConnections', () => { +const anomalies = ({ + aggregations: { jobs: { buckets: [] } } +} as unknown) as AnomaliesResponse; + +describe('transformServiceMapResponses', () => { it('maps external destinations to internal services', () => { const response: ServiceMapResponse = { + anomalies, services: [nodejsService, javaService], discoveredServices: [ { @@ -51,7 +59,7 @@ describe('dedupeConnections', () => { ] }; - const { elements } = dedupeConnections(response); + const { elements } = transformServiceMapResponses(response); const connection = elements.find( element => 'source' in element.data && 'target' in element.data @@ -67,6 +75,7 @@ describe('dedupeConnections', () => { it('collapses external destinations based on span.destination.resource.name', () => { const response: ServiceMapResponse = { + anomalies, services: [nodejsService, javaService], discoveredServices: [ { @@ -89,7 +98,7 @@ describe('dedupeConnections', () => { ] }; - const { elements } = dedupeConnections(response); + const { elements } = transformServiceMapResponses(response); const connections = elements.filter(element => 'source' in element.data); @@ -102,6 +111,7 @@ describe('dedupeConnections', () => { it('picks the first span.type/subtype in an alphabetically sorted list', () => { const response: ServiceMapResponse = { + anomalies, services: [javaService], discoveredServices: [], connections: [ @@ -126,7 +136,7 @@ describe('dedupeConnections', () => { ] }; - const { elements } = dedupeConnections(response); + const { elements } = transformServiceMapResponses(response); const nodes = elements.filter(element => !('source' in element.data)); @@ -140,6 +150,7 @@ describe('dedupeConnections', () => { it('processes connections without a matching "service" aggregation', () => { const response: ServiceMapResponse = { + anomalies, services: [javaService], discoveredServices: [], connections: [ @@ -150,7 +161,7 @@ describe('dedupeConnections', () => { ] }; - const { elements } = dedupeConnections(response); + const { elements } = transformServiceMapResponses(response); expect(elements.length).toBe(3); }); diff --git a/x-pack/plugins/apm/server/lib/service_map/dedupe_connections/index.ts b/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts similarity index 76% rename from x-pack/plugins/apm/server/lib/service_map/dedupe_connections/index.ts rename to x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts index e5d7c0b2de10cb..8b91bb98b5200d 100644 --- a/x-pack/plugins/apm/server/lib/service_map/dedupe_connections/index.ts +++ b/x-pack/plugins/apm/server/lib/service_map/transform_service_map_responses.ts @@ -10,14 +10,19 @@ import { SPAN_DESTINATION_SERVICE_RESOURCE, SPAN_TYPE, SPAN_SUBTYPE -} from '../../../../common/elasticsearch_fieldnames'; +} from '../../../common/elasticsearch_fieldnames'; import { Connection, ConnectionNode, ServiceConnectionNode, ExternalConnectionNode -} from '../../../../common/service_map'; -import { ConnectionsResponse, ServicesResponse } from '../get_service_map'; +} from '../../../common/service_map'; +import { + ConnectionsResponse, + ServicesResponse, + AnomaliesResponse +} from './get_service_map'; +import { addAnomaliesDataToNodes } from './ml_helpers'; function getConnectionNodeId(node: ConnectionNode): string { if ('span.destination.service.resource' in node) { @@ -34,13 +39,16 @@ function getConnectionId(connection: Connection) { } export type ServiceMapResponse = ConnectionsResponse & { + anomalies: AnomaliesResponse; services: ServicesResponse; }; -export function dedupeConnections(response: ServiceMapResponse) { - const { discoveredServices, services, connections } = response; +export function transformServiceMapResponses(response: ServiceMapResponse) { + const { anomalies, discoveredServices, services, connections } = response; - const allNodes = connections + // Derive the rest of the map nodes from the connections and add the services + // from the services data query + const allNodes: ConnectionNode[] = connections .flatMap(connection => [connection.source, connection.destination]) .map(node => ({ ...node, id: getConnectionNodeId(node) })) .concat( @@ -50,25 +58,21 @@ export function dedupeConnections(response: ServiceMapResponse) { })) ); - const serviceNodes = allNodes.filter(node => SERVICE_NAME in node) as Array< - ServiceConnectionNode & { - id: string; - } - >; + // List of nodes that are services + const serviceNodes = allNodes.filter( + node => SERVICE_NAME in node + ) as ServiceConnectionNode[]; + // List of nodes that are externals const externalNodes = allNodes.filter( node => SPAN_DESTINATION_SERVICE_RESOURCE in node - ) as Array< - ExternalConnectionNode & { - id: string; - } - >; + ) as ExternalConnectionNode[]; - // 1. maps external nodes to internal services - // 2. collapses external nodes into one node based on span.destination.service.resource - // 3. picks the first available span.type/span.subtype in an alphabetically sorted list + // 1. Map external nodes to internal services + // 2. Collapse external nodes into one node based on span.destination.service.resource + // 3. Pick the first available span.type/span.subtype in an alphabetically sorted list const nodeMap = allNodes.reduce((map, node) => { - if (map[node.id]) { + if (!node.id || map[node.id]) { return map; } @@ -119,14 +123,14 @@ export function dedupeConnections(response: ServiceMapResponse) { .sort()[0] } }; - }, {} as Record); + }, {} as Record); - // maps destination.address to service.name if possible + // Map destination.address to service.name if possible function getConnectionNode(node: ConnectionNode) { return nodeMap[getConnectionNodeId(node)]; } - // build connections with mapped nodes + // Build connections with mapped nodes const mappedConnections = connections .map(connection => { const sourceData = getConnectionNode(connection.source); @@ -166,7 +170,7 @@ export function dedupeConnections(response: ServiceMapResponse) { {} as Record ); - // instead of adding connections in two directions, + // Instead of adding connections in two directions, // we add a `bidirectional` flag to use in styling const dedupedConnections = (sortBy( Object.values(connectionsById), @@ -192,10 +196,18 @@ export function dedupeConnections(response: ServiceMapResponse) { return prev.concat(connection); }, []); + // Add anomlies data + const dedupedNodesWithAnomliesData = addAnomaliesDataToNodes( + dedupedNodes, + anomalies + ); + // Put everything together in elements, with everything in the "data" property - const elements = [...dedupedConnections, ...dedupedNodes].map(element => ({ - data: element - })); + const elements = [...dedupedConnections, ...dedupedNodesWithAnomliesData].map( + element => ({ + data: element + }) + ); return { elements }; } From 5e5ad194f6358ca32d3fa5728eabf8320ea6901a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Sat, 9 May 2020 12:32:26 -0400 Subject: [PATCH 58/58] Fix edit alert flyout to update initialAlert after edit (#65359) --- .../components/alert_details.tsx | 41 ++++++++++--------- .../sections/alert_form/alert_edit.test.tsx | 6 +-- .../sections/alert_form/alert_edit.tsx | 17 ++------ 3 files changed, 26 insertions(+), 38 deletions(-) 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 3440bb28b24684..8511ab468ca802 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 @@ -127,26 +127,27 @@ export const AlertDetails: React.FunctionComponent = ({ defaultMessage="Edit" /> - - - + {editFlyoutVisible && ( + + setEditFlyoutVisibility(false)} + /> + + )} ) : null} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.test.tsx index 722db146a54cee..4d8801d8b7484d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.test.tsx @@ -131,11 +131,7 @@ describe('alert_edit', () => { capabilities: deps!.capabilities, }} > - {}} - initialAlert={alert} - /> + {}} initialAlert={alert} /> ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.tsx index 00bc9874face19..747464d2212f40 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alert_form/alert_edit.tsx @@ -31,15 +31,10 @@ import { PLUGIN } from '../../constants/plugin'; interface AlertEditProps { initialAlert: Alert; - editFlyoutVisible: boolean; - setEditFlyoutVisibility: React.Dispatch>; + onClose(): void; } -export const AlertEdit = ({ - initialAlert, - editFlyoutVisible, - setEditFlyoutVisibility, -}: AlertEditProps) => { +export const AlertEdit = ({ initialAlert, onClose }: AlertEditProps) => { const [{ alert }, dispatch] = useReducer(alertReducer, { alert: initialAlert }); const [isSaving, setIsSaving] = useState(false); const [hasActionsDisabled, setHasActionsDisabled] = useState(false); @@ -57,14 +52,10 @@ export const AlertEdit = ({ } = useAlertsContext(); const closeFlyout = useCallback(() => { - setEditFlyoutVisibility(false); + onClose(); setAlert('alert', initialAlert); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [setEditFlyoutVisibility]); - - if (!editFlyoutVisible) { - return null; - } + }, [onClose]); const alertType = alertTypeRegistry.get(alert.alertTypeId);

{i18n.translate( 'xpack.apm.serviceDetails.enableAnomalyDetectionPanel.manageMLJobDescription.mlJobsPageLinkText', { - defaultMessage: 'Machine Learning jobs management page' + defaultMessage: 'Machine Learning Job Management page' } )} diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index e96f0274451949..f6b645ee33ed1e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -4314,7 +4314,6 @@ "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.callout.jobExistsDescription": "現在 {serviceName} ({transactionType}) の実行中のジョブがあります。", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.callout.jobExistsDescription.viewJobLinkText": "既存のジョブを表示", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.callout.jobExistsTitle": "ジョブが既に存在します", - "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createMLJobDescription": "ここでは、{serviceName} 数列内の APM トランザクションの期間の異常スコアを計算する機械学習ジョブを作成できます。有効にすると、{transactionDurationGraphText} が予測バウンドを表示し、異常スコアが >=75 の場合グラフに注釈が追加されます。", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createMLJobDescription.transactionDurationGraphText": "トランザクション時間のグラフ", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createNewJobButtonLabel": "ジョブを作成", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.enableAnomalyDetectionTitle": "異常検知を有効にする", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 1d73c4757c8e99..c9ed2111a4e7c6 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -4315,7 +4315,6 @@ "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.callout.jobExistsDescription": "当前有 {serviceName}({transactionType})的作业正在运行。", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.callout.jobExistsDescription.viewJobLinkText": "查看现有作业", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.callout.jobExistsTitle": "作业已存在", - "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createMLJobDescription": "在这里可以创建 Machine Learning 作业以基于 {serviceName} 服务内 APM 事务的持续时间计算异常分数。启用后,一旦异常分数 >=75,{transactionDurationGraphText}将显示预期边界并标注图表。", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createMLJobDescription.transactionDurationGraphText": "事务持续时间图表", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.createNewJobButtonLabel": "创建作业", "xpack.apm.serviceDetails.enableAnomalyDetectionPanel.enableAnomalyDetectionTitle": "启用异常检测", From 4a207ae9b2ce924bc3e16a11ab7f07144bd77bc8 Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Thu, 7 May 2020 19:39:47 -0600 Subject: [PATCH 34/58] [SIEM] Add types to the mappings objects so extra keys cannot be introduced Add types to the mappings objects so extra keys cannot be introduced by accident and makes it easier to see mistakes as you type things within the mappings. --- .../lib/detection_engine/rule_actions/saved_object_mappings.ts | 2 +- .../server/lib/detection_engine/rules/saved_object_mappings.ts | 2 +- x-pack/plugins/siem/server/lib/note/saved_object_mappings.ts | 2 +- .../siem/server/lib/pinned_event/saved_object_mappings.ts | 2 +- .../plugins/siem/server/lib/timeline/saved_object_mappings.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/siem/server/lib/detection_engine/rule_actions/saved_object_mappings.ts b/x-pack/plugins/siem/server/lib/detection_engine/rule_actions/saved_object_mappings.ts index e50f82bb482a70..a7556d975da407 100644 --- a/x-pack/plugins/siem/server/lib/detection_engine/rule_actions/saved_object_mappings.ts +++ b/x-pack/plugins/siem/server/lib/detection_engine/rule_actions/saved_object_mappings.ts @@ -8,7 +8,7 @@ import { SavedObjectsType } from '../../../../../../../src/core/server'; export const ruleActionsSavedObjectType = 'siem-detection-engine-rule-actions'; -export const ruleActionsSavedObjectMappings = { +export const ruleActionsSavedObjectMappings: SavedObjectsType['mappings'] = { properties: { alertThrottle: { type: 'keyword', diff --git a/x-pack/plugins/siem/server/lib/detection_engine/rules/saved_object_mappings.ts b/x-pack/plugins/siem/server/lib/detection_engine/rules/saved_object_mappings.ts index 2dcc90240ad407..c01bc2497d677b 100644 --- a/x-pack/plugins/siem/server/lib/detection_engine/rules/saved_object_mappings.ts +++ b/x-pack/plugins/siem/server/lib/detection_engine/rules/saved_object_mappings.ts @@ -8,7 +8,7 @@ import { SavedObjectsType } from '../../../../../../../src/core/server'; export const ruleStatusSavedObjectType = 'siem-detection-engine-rule-status'; -export const ruleStatusSavedObjectMappings = { +export const ruleStatusSavedObjectMappings: SavedObjectsType['mappings'] = { properties: { alertId: { type: 'keyword', diff --git a/x-pack/plugins/siem/server/lib/note/saved_object_mappings.ts b/x-pack/plugins/siem/server/lib/note/saved_object_mappings.ts index 0f079571b868b5..de0bb3468e5248 100644 --- a/x-pack/plugins/siem/server/lib/note/saved_object_mappings.ts +++ b/x-pack/plugins/siem/server/lib/note/saved_object_mappings.ts @@ -8,7 +8,7 @@ import { SavedObjectsType } from '../../../../../../src/core/server'; export const noteSavedObjectType = 'siem-ui-timeline-note'; -export const noteSavedObjectMappings = { +export const noteSavedObjectMappings: SavedObjectsType['mappings'] = { properties: { timelineId: { type: 'keyword', diff --git a/x-pack/plugins/siem/server/lib/pinned_event/saved_object_mappings.ts b/x-pack/plugins/siem/server/lib/pinned_event/saved_object_mappings.ts index 1a4cd3fce575d6..d352764930d7f9 100644 --- a/x-pack/plugins/siem/server/lib/pinned_event/saved_object_mappings.ts +++ b/x-pack/plugins/siem/server/lib/pinned_event/saved_object_mappings.ts @@ -8,7 +8,7 @@ import { SavedObjectsType } from '../../../../../../src/core/server'; export const pinnedEventSavedObjectType = 'siem-ui-timeline-pinned-event'; -export const pinnedEventSavedObjectMappings = { +export const pinnedEventSavedObjectMappings: SavedObjectsType['mappings'] = { properties: { timelineId: { type: 'keyword', diff --git a/x-pack/plugins/siem/server/lib/timeline/saved_object_mappings.ts b/x-pack/plugins/siem/server/lib/timeline/saved_object_mappings.ts index 1cab24d0879ff6..4d9ae19bfd6a2d 100644 --- a/x-pack/plugins/siem/server/lib/timeline/saved_object_mappings.ts +++ b/x-pack/plugins/siem/server/lib/timeline/saved_object_mappings.ts @@ -8,7 +8,7 @@ import { SavedObjectsType } from '../../../../../../src/core/server'; export const timelineSavedObjectType = 'siem-ui-timeline'; -export const timelineSavedObjectMappings = { +export const timelineSavedObjectMappings: SavedObjectsType['mappings'] = { properties: { columns: { properties: { From f9f242990d4149023ef810667ef91f0ec326a5e1 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Fri, 8 May 2020 08:25:10 +0200 Subject: [PATCH 35/58] [ML] Fix pagination reset on search query update. (#65668) Fixes pagination issue: When the query bar query changes, we need to check the selected page is still valid. Example: If you're on a last page (125), edit the filter, and it looks like the grid is trying to reload page 125 even though there are only 24 pages for the new query value you end up with an empty table. This brings over a fix already in place for the transform data grids: On every search query change we'll reset the pagination index. --- .../exploration_results_table/use_exploration_results.ts | 4 ++++ .../components/outlier_exploration/use_outlier_data.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/use_exploration_results.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/use_exploration_results.ts index 6f9dc694d81724..e664a1ddbdbcc7 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/use_exploration_results.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/use_exploration_results.ts @@ -51,6 +51,10 @@ export const useExplorationResults = ( d => !d.includes(`.${FEATURE_IMPORTANCE}.`) && d !== ML__ID_COPY ); + useEffect(() => { + dataGrid.resetPagination(); + }, [JSON.stringify(searchQuery)]); + useEffect(() => { getIndexData(jobConfig, dataGrid, searchQuery); // custom comparison diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/use_outlier_data.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/use_outlier_data.ts index 0d06bc0d433079..75b2f6aa867dff 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/use_outlier_data.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/use_outlier_data.ts @@ -58,6 +58,10 @@ export const useOutlierData = ( d => !d.includes(`.${FEATURE_INFLUENCE}.`) && d !== ML__ID_COPY ); + useEffect(() => { + dataGrid.resetPagination(); + }, [JSON.stringify(searchQuery)]); + // initialize sorting: reverse sort on outlier score column useEffect(() => { if (jobConfig !== undefined) { From e35a74375a736cb637fb4369b02cfeedb44ba52a Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Fri, 8 May 2020 08:56:37 +0200 Subject: [PATCH 36/58] plugins logs start with "plugins." prefix (#65710) --- src/core/server/logging/README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/core/server/logging/README.md b/src/core/server/logging/README.md index ed64e7c4ce0b1c..553dc7c36e824c 100644 --- a/src/core/server/logging/README.md +++ b/src/core/server/logging/README.md @@ -167,7 +167,7 @@ logging: - context: plugins appenders: [custom] level: warn - - context: plugins.pid + - context: plugins.myPlugin level: info - context: server level: fatal @@ -180,14 +180,14 @@ logging: Here is what we get with the config above: -| Context | Appenders | Level | -| ------------- |:------------------------:| -----:| -| root | console, file | error | -| plugins | custom | warn | -| plugins.pid | custom | info | -| server | console, file | fatal | -| optimize | console | error | -| telemetry | json-file-appender | all | +| Context | Appenders | Level | +| ---------------- |:------------------------:| -----:| +| root | console, file | error | +| plugins | custom | warn | +| plugins.myPlugin | custom | info | +| server | console, file | fatal | +| optimize | console | error | +| telemetry | json-file-appender | all | The `root` logger has a dedicated configuration node since this context is special and should always exist. By @@ -259,7 +259,7 @@ define a custom one. ```yaml logging: loggers: - - context: your-plugin + - context: plugins.myPlugin appenders: [console] ``` Logs in a *file* if given file path. You should define a custom appender with `kind: file` @@ -273,7 +273,7 @@ logging: layout: kind: pattern loggers: - - context: your-plugin + - context: plugins.myPlugin appenders: [file] ``` #### logging.json @@ -282,10 +282,10 @@ the output format with [layouts](#layouts). #### logging.quiet Suppresses all logging output other than error messages. With new logging, config can be achieved -with adjusting minimum required [logging level](#log-level) +with adjusting minimum required [logging level](#log-level). ```yaml loggers: - - context: my-plugin + - context: plugins.myPlugin appenders: [console] level: error # or for all output From 86bafec3a45316cb2c158918a7760b3c46c0ec2b Mon Sep 17 00:00:00 2001 From: Vadim Dalecky Date: Fri, 8 May 2020 10:05:27 +0200 Subject: [PATCH 37/58] Drilldown count tooltip (#65105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 add tooltip ability to ui_actions * feat: 🎸 add tooltip support to drilldown count notification * test: 💍 add drilldown tooltip text tests * fix: 🐛 improve tooltip texts * fix: 🐛 put tooltip on top * fix: 🐛 add missing method to ActionFactory * fix: 🐛 improve handling of optional method --- .../lib/panel/panel_header/panel_header.tsx | 38 ++++++++++++++----- .../public/actions/action_internal.ts | 5 +++ .../ui_actions/public/util/presentable.ts | 6 +++ x-pack/.i18nrc.json | 1 + .../public/dynamic_actions/action_factory.ts | 4 ++ .../panel_notifications_action.test.ts | 34 +++++++++++++++++ .../actions/panel_notifications_action.ts | 21 ++++++++++ 7 files changed, 99 insertions(+), 10 deletions(-) diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_header.tsx b/src/plugins/embeddable/public/lib/panel/panel_header/panel_header.tsx index 35a10ed848e838..bb2eb52f9df72a 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_header.tsx +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_header.tsx @@ -62,16 +62,34 @@ function renderNotifications( notifications: Array>, embeddable: IEmbeddable ) { - return notifications.map(notification => ( - notification.execute({ embeddable })} - > - {notification.getDisplayName({ embeddable })} - - )); + return notifications.map(notification => { + const context = { embeddable }; + + let badge = ( + notification.execute(context)} + > + {notification.getDisplayName(context)} + + ); + + if (notification.getDisplayNameTooltip) { + const tooltip = notification.getDisplayNameTooltip(context); + + if (tooltip) { + badge = ( + + {badge} + + ); + } + } + + return badge; + }); } function renderTooltip(description: string) { diff --git a/src/plugins/ui_actions/public/actions/action_internal.ts b/src/plugins/ui_actions/public/actions/action_internal.ts index e3504c7c5d3013..aba1e22fe09ee2 100644 --- a/src/plugins/ui_actions/public/actions/action_internal.ts +++ b/src/plugins/ui_actions/public/actions/action_internal.ts @@ -48,6 +48,11 @@ export class ActionInternal return this.definition.getDisplayName(context); } + public getDisplayNameTooltip(context: Context): string { + if (!this.definition.getDisplayNameTooltip) return ''; + return this.definition.getDisplayNameTooltip(context); + } + public async isCompatible(context: Context): Promise { if (!this.definition.isCompatible) return true; return await this.definition.isCompatible(context); diff --git a/src/plugins/ui_actions/public/util/presentable.ts b/src/plugins/ui_actions/public/util/presentable.ts index f43b776e746589..57070f7673f61c 100644 --- a/src/plugins/ui_actions/public/util/presentable.ts +++ b/src/plugins/ui_actions/public/util/presentable.ts @@ -50,6 +50,12 @@ export interface Presentable { */ getDisplayName(context: Context): string; + /** + * Returns tooltip text which should be displayed when user hovers this object. + * Should return empty string if tooltip should not be displayed. + */ + getDisplayNameTooltip(context: Context): string; + /** * This method should return a link if this item can be clicked on. The link * is used to navigate user if user middle-clicks it or Ctrl + clicks or diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index a033515fef8b06..7c464d44d57610 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -14,6 +14,7 @@ "xpack.dashboardMode": "legacy/plugins/dashboard_mode", "xpack.data": "plugins/data_enhanced", "xpack.drilldowns": "plugins/drilldowns", + "xpack.embeddableEnhanced": "plugins/embeddable_enhanced", "xpack.endpoint": "plugins/endpoint", "xpack.features": "plugins/features", "xpack.fileUpload": "plugins/file_upload", diff --git a/x-pack/plugins/advanced_ui_actions/public/dynamic_actions/action_factory.ts b/x-pack/plugins/advanced_ui_actions/public/dynamic_actions/action_factory.ts index f1aef5deff49e0..262a5ef7d4561c 100644 --- a/x-pack/plugins/advanced_ui_actions/public/dynamic_actions/action_factory.ts +++ b/x-pack/plugins/advanced_ui_actions/public/dynamic_actions/action_factory.ts @@ -42,6 +42,10 @@ export class ActionFactory< return this.def.getDisplayName(context); } + public getDisplayNameTooltip(context: FactoryContext): string { + return ''; + } + public async isCompatible(context: FactoryContext): Promise { if (!this.def.isCompatible) return true; return await this.def.isCompatible(context); diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.test.ts b/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.test.ts index 839379387e0943..158641cd97695e 100644 --- a/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.test.ts +++ b/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.test.ts @@ -47,6 +47,40 @@ describe('PanelNotificationsAction', () => { }); }); + describe('getDisplayNameTooltip', () => { + test('returns empty string if embeddable has no event', async () => { + const context = createContext(); + const action = new PanelNotificationsAction(); + + const name = await action.getDisplayNameTooltip(context); + expect(name).toBe(''); + }); + + test('returns "1 drilldown" if embeddable has one event', async () => { + const context = createContext([{}]); + const action = new PanelNotificationsAction(); + + const name = await action.getDisplayNameTooltip(context); + expect(name).toBe('Panel has 1 drilldown'); + }); + + test('returns "2 drilldowns" if embeddable has two events', async () => { + const context = createContext([{}, {}]); + const action = new PanelNotificationsAction(); + + const name = await action.getDisplayNameTooltip(context); + expect(name).toBe('Panel has 2 drilldowns'); + }); + + test('returns "3 drilldowns" if embeddable has three events', async () => { + const context = createContext([{}, {}, {}]); + const action = new PanelNotificationsAction(); + + const name = await action.getDisplayNameTooltip(context); + expect(name).toBe('Panel has 3 drilldowns'); + }); + }); + describe('isCompatible', () => { test('returns false if not in "edit" mode', async () => { const context = createContext([{}]); diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts b/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts index 19e0ac2a5a6d8e..165ce24c13ea3d 100644 --- a/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts +++ b/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts @@ -4,10 +4,26 @@ * you may not use this file except in compliance with the Elastic License. */ +import { i18n } from '@kbn/i18n'; import { UiActionsActionDefinition as ActionDefinition } from '../../../../../src/plugins/ui_actions/public'; import { ViewMode } from '../../../../../src/plugins/embeddable/public'; import { EnhancedEmbeddableContext, EnhancedEmbeddable } from '../types'; +export const txtOneDrilldown = i18n.translate( + 'xpack.embeddableEnhanced.actions.panelNotifications.oneDrilldown', + { + defaultMessage: 'Panel has 1 drilldown', + } +); + +export const txtManyDrilldowns = (count: number) => + i18n.translate('xpack.embeddableEnhanced.actions.panelNotifications.manyDrilldowns', { + defaultMessage: 'Panel has {count} drilldowns', + values: { + count: String(count), + }, + }); + export const ACTION_PANEL_NOTIFICATIONS = 'ACTION_PANEL_NOTIFICATIONS'; /** @@ -25,6 +41,11 @@ export class PanelNotificationsAction implements ActionDefinition { + const count = this.getEventCount(embeddable); + return !count ? '' : count === 1 ? txtOneDrilldown : txtManyDrilldowns(count); + }; + public readonly isCompatible = async ({ embeddable }: EnhancedEmbeddableContext) => { if (embeddable.getInput().viewMode !== ViewMode.EDIT) return false; return this.getEventCount(embeddable) > 0; From 1baf0b0e47816114300590eb096a7b85dac60097 Mon Sep 17 00:00:00 2001 From: Rudolf Meijering Date: Fri, 8 May 2020 10:07:59 +0200 Subject: [PATCH 38/58] SavedObjects bulkCreate API should return migrationVersion and strip the type & namespace from the id (#65150) * Deserialize bulkCreate response to remove namespace type from id * Index operations don't return _source in response * Fix integration tests * repository: make id generation and seq_no/primary_term spreading more explicit * API Integration test for bulk create without ids * Fix copy_to_space snapshot * Revert "Fix copy_to_space snapshot" This reverts commit 9c2b7433e3529236837c885108d0cc97d2e13169. * Move test into returns block * repository.test.js stricter regexp matching --- .../service/lib/repository.test.js | 59 +++++++++++++++++-- .../saved_objects/service/lib/repository.ts | 43 ++++++-------- .../apis/saved_objects/bulk_create.js | 21 +++++++ 3 files changed, 92 insertions(+), 31 deletions(-) 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 927171438ae996..c46fcfbc6dbd74 100644 --- a/src/core/server/saved_objects/service/lib/repository.test.js +++ b/src/core/server/saved_objects/service/lib/repository.test.js @@ -23,6 +23,7 @@ import { SavedObjectsErrorHelpers } from './errors'; import { SavedObjectsSerializer } from '../../serialization'; import { encodeHitVersion } from '../../version'; import { SavedObjectTypeRegistry } from '../../saved_objects_type_registry'; +import { DocumentMigrator } from '../../migrations/core/document_migrator'; jest.mock('./search_dsl/search_dsl', () => ({ getSearchDsl: jest.fn() })); @@ -115,6 +116,7 @@ describe('SavedObjectsRepository', () => { const createType = type => ({ name: type, mappings: { properties: mappings.properties[type].properties }, + migrations: { '1.1.1': doc => doc }, }); const registry = new SavedObjectTypeRegistry(); @@ -144,6 +146,13 @@ describe('SavedObjectsRepository', () => { namespaceType: 'agnostic', }); + const documentMigrator = new DocumentMigrator({ + typeRegistry: registry, + kibanaVersion: '2.0.0', + log: {}, + validateDoc: jest.fn(), + }); + const getMockGetResponse = ({ type, id, references, namespace }) => ({ // NOTE: Elasticsearch returns more fields (_index, _type) but the SavedObjectsRepository method ignores these found: true, @@ -207,7 +216,7 @@ describe('SavedObjectsRepository', () => { beforeEach(() => { callAdminCluster = jest.fn(); migrator = { - migrateDocument: jest.fn(doc => doc), + migrateDocument: jest.fn().mockImplementation(documentMigrator.migrate), runMigrations: async () => ({ status: 'skipped' }), }; @@ -424,9 +433,17 @@ describe('SavedObjectsRepository', () => { const getMockBulkCreateResponse = (objects, namespace) => { return { - items: objects.map(({ type, id }) => ({ + items: objects.map(({ type, id, attributes, references, migrationVersion }) => ({ create: { _id: `${namespace ? `${namespace}:` : ''}${type}:${id}`, + _source: { + [type]: attributes, + type, + namespace, + references, + ...mockTimestampFields, + migrationVersion: migrationVersion || { [type]: '1.1.1' }, + }, ...mockVersionProps, }, })), @@ -474,7 +491,7 @@ describe('SavedObjectsRepository', () => { const expectSuccessResult = obj => ({ ...obj, - migrationVersion: undefined, + migrationVersion: { [obj.type]: '1.1.1' }, version: mockVersion, ...mockTimestampFields, }); @@ -619,13 +636,16 @@ describe('SavedObjectsRepository', () => { }; const bulkCreateError = async (obj, esError, expectedError) => { - const objects = [obj1, obj, obj2]; - const response = getMockBulkCreateResponse(objects); + let response; if (esError) { + response = getMockBulkCreateResponse([obj1, obj, obj2]); response.items[1].create = { error: esError }; + } else { + response = getMockBulkCreateResponse([obj1, obj2]); } callAdminCluster.mockResolvedValue(response); // this._writeToCluster('bulk', ...) + const objects = [obj1, obj, obj2]; const result = await savedObjectsRepository.bulkCreate(objects); expectClusterCalls('bulk'); const objCall = esError ? expectObjArgs(obj) : []; @@ -781,7 +801,7 @@ describe('SavedObjectsRepository', () => { id: 'three', }; const objects = [obj1, obj, obj2]; - const response = getMockBulkCreateResponse(objects); + const response = getMockBulkCreateResponse([obj1, obj2]); callAdminCluster.mockResolvedValue(response); // this._writeToCluster('bulk', ...) const result = await savedObjectsRepository.bulkCreate(objects); expect(callAdminCluster).toHaveBeenCalledTimes(1); @@ -789,6 +809,32 @@ describe('SavedObjectsRepository', () => { saved_objects: [expectSuccessResult(obj1), expectError(obj), expectSuccessResult(obj2)], }); }); + + it(`a deserialized saved object`, async () => { + // Test for fix to https://github.com/elastic/kibana/issues/65088 where + // we returned raw ID's when an object without an id was created. + const namespace = 'myspace'; + const response = getMockBulkCreateResponse([obj1, obj2], namespace); + callAdminCluster.mockResolvedValueOnce(response); // this._writeToCluster('bulk', ...) + + // Bulk create one object with id unspecified, and one with id specified + const result = await savedObjectsRepository.bulkCreate([{ ...obj1, id: undefined }, obj2], { + namespace, + }); + + // Assert that both raw docs from the ES response are deserialized + expect(serializer.rawToSavedObject).toHaveBeenNthCalledWith(1, { + ...response.items[0].create, + _id: expect.stringMatching(/^myspace:config:[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/), + }); + expect(serializer.rawToSavedObject).toHaveBeenNthCalledWith(2, response.items[1].create); + + // Assert that ID's are deserialized to remove the type and namespace + expect(result.saved_objects[0].id).toEqual( + expect.stringMatching(/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/) + ); + expect(result.saved_objects[1].id).toEqual(obj2.id); + }); }); }); @@ -1604,6 +1650,7 @@ describe('SavedObjectsRepository', () => { version: mockVersion, attributes, references, + migrationVersion: { [type]: '1.1.1' }, }); }); }); diff --git a/src/core/server/saved_objects/service/lib/repository.ts b/src/core/server/saved_objects/service/lib/repository.ts index bc8ad2cdb00582..61027130e0eb73 100644 --- a/src/core/server/saved_objects/service/lib/repository.ts +++ b/src/core/server/saved_objects/service/lib/repository.ts @@ -18,6 +18,7 @@ */ import { omit } from 'lodash'; +import uuid from 'uuid'; import { retryCallCluster } from '../../../elasticsearch/retry_call_cluster'; import { APICaller } from '../../../elasticsearch/'; @@ -299,6 +300,8 @@ export class SavedObjectsRepository { const requiresNamespacesCheck = method === 'index' && this._registry.isMultiNamespace(object.type); + if (object.id == null) object.id = uuid.v1(); + return { tag: 'Right' as 'Right', value: { @@ -404,35 +407,25 @@ export class SavedObjectsRepository { } const { requestedId, rawMigratedDoc, esRequestIndex } = expectedResult.value; - const response = bulkResponse.items[esRequestIndex]; - const { - error, - _id: responseId, - _seq_no: seqNo, - _primary_term: primaryTerm, - } = Object.values(response)[0] as any; - - const { - _source: { type, [type]: attributes, references = [], namespaces }, - } = rawMigratedDoc; - - const id = requestedId || responseId; + const { error, ...rawResponse } = Object.values( + bulkResponse.items[esRequestIndex] + )[0] as any; + if (error) { return { - id, - type, - error: getBulkOperationError(error, type, id), + id: requestedId, + type: rawMigratedDoc._source.type, + error: getBulkOperationError(error, rawMigratedDoc._source.type, requestedId), }; } - return { - id, - type, - ...(namespaces && { namespaces }), - updated_at: time, - version: encodeVersion(seqNo, primaryTerm), - attributes, - references, - }; + + // When method == 'index' the bulkResponse doesn't include the indexed + // _source so we return rawMigratedDoc but have to spread the latest + // _seq_no and _primary_term values from the rawResponse. + return this._serializer.rawToSavedObject({ + ...rawMigratedDoc, + ...{ _seq_no: rawResponse._seq_no, _primary_term: rawResponse._primary_term }, + }); }), }; } diff --git a/test/api_integration/apis/saved_objects/bulk_create.js b/test/api_integration/apis/saved_objects/bulk_create.js index 2d77fdf266793a..a0d2717555150f 100644 --- a/test/api_integration/apis/saved_objects/bulk_create.js +++ b/test/api_integration/apis/saved_objects/bulk_create.js @@ -72,11 +72,26 @@ export default function({ getService }) { attributes: { title: 'A great new dashboard', }, + migrationVersion: { + dashboard: resp.body.saved_objects[1].migrationVersion.dashboard, + }, references: [], }, ], }); })); + + it('should not return raw id when object id is unspecified', async () => + await supertest + .post(`/api/saved_objects/_bulk_create`) + // eslint-disable-next-line no-unused-vars + .send(BULK_REQUESTS.map(({ id, ...rest }) => rest)) + .expect(200) + .then(resp => { + resp.body.saved_objects.map(({ id }) => + expect(id).not.match(/visualization|dashboard/) + ); + })); }); describe('without kibana index', () => { @@ -106,6 +121,9 @@ export default function({ getService }) { title: 'An existing visualization', }, references: [], + migrationVersion: { + visualization: resp.body.saved_objects[0].migrationVersion.visualization, + }, }, { type: 'dashboard', @@ -116,6 +134,9 @@ export default function({ getService }) { title: 'A great new dashboard', }, references: [], + migrationVersion: { + dashboard: resp.body.saved_objects[1].migrationVersion.dashboard, + }, }, ], }); From 74255a3cba1b95b0c8cc586062d4763376e8657d Mon Sep 17 00:00:00 2001 From: Mohinder Saluja Date: Fri, 8 May 2020 14:24:12 +0530 Subject: [PATCH 39/58] [APM] Add tooltip explaining Group ID (#60425) * Add tooltip * Reimplement using EuiIconTip * Change styles of tooltip icon * Add EuiIconTip on Impact column in transactions table * Remove unused import * Update snashots * adding tooltip to errors and transactions overview pages Co-authored-by: Elastic Machine Co-authored-by: cauemarcondes --- .../__test__/__snapshots__/List.test.tsx.snap | 138 +++++++++++++++++- .../app/ErrorGroupOverview/List/index.tsx | 27 +++- .../app/TransactionOverview/List/index.tsx | 43 +++--- .../translations/translations/ja-JP.json | 1 + .../translations/translations/zh-CN.json | 1 + 5 files changed, 180 insertions(+), 30 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap b/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap index 0fbf0a5c7a27d3..3de725dc58ea7f 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap @@ -6,7 +6,21 @@ exports[`ErrorGroupOverview -> List should render empty state 1`] = ` Array [ Object { "field": "groupId", - "name": "Group ID", + "name": + Group ID + + + , "render": [Function], "sortable": false, "width": "96px", @@ -141,9 +155,26 @@ exports[`ErrorGroupOverview -> List should render empty state 1`] = ` > Group ID + + +

<<9w&%^ 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