From d43c4609e1b82801c6e36cffbad77bed7e0bc541 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Tue, 7 Jul 2020 21:54:52 -0600 Subject: [PATCH 01/38] [data.search.aggs]: Remove remaining client dependencies (#70251) --- ...-plugin-plugins-data-public.getquerylog.md | 25 -- .../kibana-plugin-plugins-data-public.md | 1 - ...in-plugins-data-public.querystringinput.md | 2 +- ...ibana-plugin-plugins-data-public.search.md | 1 + ...ibana-plugin-plugins-data-server.search.md | 1 + src/plugins/data/common/search/aggs/index.ts | 1 + .../common/search/aggs}/ipv4_address.test.ts | 2 +- .../common/search/aggs}/ipv4_address.ts | 1 - .../create_filters_from_range_select.test.ts | 8 +- .../create_filters_from_value_click.test.ts | 8 +- src/plugins/data/public/index.ts | 3 +- src/plugins/data/public/plugin.ts | 6 +- src/plugins/data/public/public.api.md | 48 +- .../data/public/query/lib/add_to_query_log.ts | 44 ++ .../data/public/query/lib/get_query_log.ts | 1 + src/plugins/data/public/query/lib/index.ts | 7 +- src/plugins/data/public/query/mocks.ts | 3 +- .../data/public/query/query_service.ts | 26 +- .../state_sync/connect_to_query_state.test.ts | 18 +- .../state_sync/sync_state_with_url.test.ts | 6 +- .../public/search/aggs/agg_config.test.ts | 45 +- .../data/public/search/aggs/agg_config.ts | 2 +- .../public/search/aggs/agg_configs.test.ts | 3 +- .../public/search/aggs/agg_params.test.ts | 20 +- .../data/public/search/aggs/agg_params.ts | 6 +- .../data/public/search/aggs/agg_type.test.ts | 124 ++---- .../data/public/search/aggs/agg_type.ts | 20 +- .../data/public/search/aggs/agg_types.ts | 58 +-- .../search/aggs/buckets/bucket_agg_type.ts | 12 +- .../create_filter/date_histogram.test.ts | 13 +- .../buckets/create_filter/date_range.test.ts | 13 +- .../buckets/create_filter/filters.test.ts | 13 +- .../buckets/create_filter/ip_range.test.ts | 14 +- .../aggs/buckets/create_filter/range.test.ts | 18 +- .../aggs/buckets/create_filter/terms.test.ts | 18 +- .../search/aggs/buckets/date_histogram.ts | 378 ++++++++-------- .../search/aggs/buckets/date_histogram_fn.ts | 2 +- .../search/aggs/buckets/date_range.test.ts | 13 +- .../public/search/aggs/buckets/date_range.ts | 130 +++--- .../search/aggs/buckets/date_range_fn.ts | 2 +- .../data/public/search/aggs/buckets/filter.ts | 30 +- .../public/search/aggs/buckets/filter_fn.ts | 2 +- .../search/aggs/buckets/filters.test.ts | 13 +- .../public/search/aggs/buckets/filters.ts | 123 +++--- .../public/search/aggs/buckets/filters_fn.ts | 2 +- .../search/aggs/buckets/geo_hash.test.ts | 16 +- .../public/search/aggs/buckets/geo_hash.ts | 156 ++++--- .../public/search/aggs/buckets/geo_hash_fn.ts | 2 +- .../public/search/aggs/buckets/geo_tile.ts | 80 ++-- .../public/search/aggs/buckets/geo_tile_fn.ts | 2 +- .../search/aggs/buckets/histogram.test.ts | 3 +- .../public/search/aggs/buckets/histogram.ts | 295 +++++++------ .../search/aggs/buckets/histogram_fn.ts | 2 +- .../public/search/aggs/buckets/ip_range.ts | 112 +++-- .../public/search/aggs/buckets/ip_range_fn.ts | 2 +- .../search/aggs/buckets/lib/cidr_mask.ts | 2 +- .../lib/time_buckets/time_buckets.test.ts | 1 + .../public/search/aggs/buckets/range.test.ts | 8 +- .../data/public/search/aggs/buckets/range.ts | 109 +++-- .../public/search/aggs/buckets/range_fn.ts | 2 +- .../aggs/buckets/significant_terms.test.ts | 24 +- .../search/aggs/buckets/significant_terms.ts | 102 ++--- .../aggs/buckets/significant_terms_fn.ts | 2 +- .../data/public/search/aggs/buckets/terms.ts | 413 +++++++++--------- .../public/search/aggs/buckets/terms_fn.ts | 2 +- .../data/public/search/aggs/metrics/avg.ts | 44 +- .../data/public/search/aggs/metrics/avg_fn.ts | 2 +- .../public/search/aggs/metrics/bucket_avg.ts | 50 +-- .../search/aggs/metrics/bucket_avg_fn.ts | 2 +- .../public/search/aggs/metrics/bucket_max.ts | 30 +- .../search/aggs/metrics/bucket_max_fn.ts | 2 +- .../public/search/aggs/metrics/bucket_min.ts | 30 +- .../search/aggs/metrics/bucket_min_fn.ts | 2 +- .../public/search/aggs/metrics/bucket_sum.ts | 30 +- .../search/aggs/metrics/bucket_sum_fn.ts | 2 +- .../public/search/aggs/metrics/cardinality.ts | 60 +-- .../search/aggs/metrics/cardinality_fn.ts | 2 +- .../data/public/search/aggs/metrics/count.ts | 54 +-- .../public/search/aggs/metrics/count_fn.ts | 2 +- .../search/aggs/metrics/cumulative_sum.ts | 30 +- .../search/aggs/metrics/cumulative_sum_fn.ts | 2 +- .../public/search/aggs/metrics/derivative.ts | 32 +- .../search/aggs/metrics/derivative_fn.ts | 2 +- .../public/search/aggs/metrics/geo_bounds.ts | 38 +- .../search/aggs/metrics/geo_bounds_fn.ts | 2 +- .../search/aggs/metrics/geo_centroid.ts | 40 +- .../search/aggs/metrics/geo_centroid_fn.ts | 2 +- .../data/public/search/aggs/metrics/max.ts | 44 +- .../data/public/search/aggs/metrics/max_fn.ts | 2 +- .../public/search/aggs/metrics/median.test.ts | 14 +- .../data/public/search/aggs/metrics/median.ts | 60 +-- .../public/search/aggs/metrics/median_fn.ts | 2 +- .../search/aggs/metrics/metric_agg_type.ts | 12 +- .../data/public/search/aggs/metrics/min.ts | 44 +- .../data/public/search/aggs/metrics/min_fn.ts | 2 +- .../public/search/aggs/metrics/moving_avg.ts | 72 ++- .../search/aggs/metrics/moving_avg_fn.ts | 2 +- .../aggs/metrics/parent_pipeline.test.ts | 15 +- .../aggs/metrics/percentile_ranks.test.ts | 2 - .../search/aggs/metrics/percentile_ranks.ts | 87 ++-- .../aggs/metrics/percentile_ranks_fn.ts | 2 +- .../search/aggs/metrics/percentiles.test.ts | 20 +- .../public/search/aggs/metrics/percentiles.ts | 78 ++-- .../search/aggs/metrics/percentiles_fn.ts | 2 +- .../public/search/aggs/metrics/serial_diff.ts | 30 +- .../search/aggs/metrics/serial_diff_fn.ts | 2 +- .../aggs/metrics/sibling_pipeline.test.ts | 15 +- .../search/aggs/metrics/std_deviation.test.ts | 22 +- .../search/aggs/metrics/std_deviation.ts | 68 ++- .../search/aggs/metrics/std_deviation_fn.ts | 2 +- .../data/public/search/aggs/metrics/sum.ts | 50 +-- .../data/public/search/aggs/metrics/sum_fn.ts | 2 +- .../search/aggs/metrics/top_hit.test.ts | 49 +-- .../public/search/aggs/metrics/top_hit.ts | 399 ++++++++--------- .../public/search/aggs/metrics/top_hit_fn.ts | 2 +- .../public/search/aggs/param_types/base.ts | 2 +- .../search/aggs/param_types/field.test.ts | 57 +-- .../public/search/aggs/param_types/field.ts | 15 +- .../aggs/test_helpers/function_wrapper.ts | 2 +- .../public/search/aggs/test_helpers/index.ts | 1 - .../test_helpers/mock_agg_types_registry.ts | 8 +- .../aggs/test_helpers/mock_data_services.ts | 57 --- .../search/expressions/create_filter.test.ts | 3 +- .../data/public/search/expressions/esaggs.ts | 4 +- .../utils/courier_inspector_stats.ts | 6 +- .../public/search/expressions/utils/types.ts | 34 -- .../public/search/tabify/get_columns.test.ts | 21 +- .../search/tabify/response_writer.test.ts | 21 +- .../filter_editor/lib/filter_editor_utils.ts | 2 +- .../query_string_input/query_string_input.tsx | 2 + src/plugins/data/server/index.ts | 2 + src/plugins/data/server/server.api.md | 14 +- .../inspector/common/adapters/index.ts | 2 +- .../common/adapters/request/index.ts | 3 +- src/plugins/kibana_utils/public/index.ts | 1 - .../kibana_utils/public/parse/index.ts | 20 - .../controls/components/from_to_list.tsx | 4 +- .../public/components/controls/filter.tsx | 10 + .../common/components/autocomplete/helpers.ts | 4 +- 139 files changed, 1907 insertions(+), 2570 deletions(-) delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getquerylog.md rename src/plugins/{kibana_utils/public/parse => data/common/search/aggs}/ipv4_address.test.ts (99%) rename src/plugins/{kibana_utils/public/parse => data/common/search/aggs}/ipv4_address.ts (97%) create mode 100644 src/plugins/data/public/query/lib/add_to_query_log.ts delete mode 100644 src/plugins/data/public/search/aggs/test_helpers/mock_data_services.ts delete mode 100644 src/plugins/data/public/search/expressions/utils/types.ts delete mode 100644 src/plugins/kibana_utils/public/parse/index.ts diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getquerylog.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getquerylog.md deleted file mode 100644 index e933245e81623..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getquerylog.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getQueryLog](./kibana-plugin-plugins-data-public.getquerylog.md) - -## getQueryLog() function - -Signature: - -```typescript -export declare function getQueryLog(uiSettings: IUiSettingsClient, storage: IStorageWrapper, appName: string, language: string): PersistedLog; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| uiSettings | IUiSettingsClient | | -| storage | IStorageWrapper | | -| appName | string | | -| language | string | | - -Returns: - -`PersistedLog` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md index 8bd38f9e02d11..7cb6ef64431bf 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md @@ -38,7 +38,6 @@ | --- | --- | | [getDefaultQuery(language)](./kibana-plugin-plugins-data-public.getdefaultquery.md) | | | [getEsPreference(uiSettings, sessionId)](./kibana-plugin-plugins-data-public.getespreference.md) | | -| [getQueryLog(uiSettings, storage, appName, language)](./kibana-plugin-plugins-data-public.getquerylog.md) | | | [getSearchErrorType({ message })](./kibana-plugin-plugins-data-public.getsearcherrortype.md) | | | [getSearchParamsFromRequest(searchRequest, dependencies)](./kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md) | | | [getTime(indexPattern, timeRange, options)](./kibana-plugin-plugins-data-public.gettime.md) | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md index a25f4a0c373b2..b168602b64927 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md @@ -7,5 +7,5 @@ Signature: ```typescript -QueryStringInput: React.FC> +QueryStringInput: React.FC> ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md index 67c4eac67a9e6..6c8f7fbdb170b 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md @@ -21,6 +21,7 @@ search: { })[]; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; + Ipv4Address: typeof Ipv4Address; isDateHistogramBucketAggConfig: typeof isDateHistogramBucketAggConfig; isNumberType: (agg: import("./search").AggConfig) => boolean; isStringType: (agg: import("./search").AggConfig) => boolean; diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md index 6020498fdcb6d..09563358100b3 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md @@ -12,6 +12,7 @@ search: { dateHistogramInterval: typeof dateHistogramInterval; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; + Ipv4Address: typeof Ipv4Address; isValidEsInterval: typeof isValidEsInterval; isValidInterval: typeof isValidInterval; parseEsInterval: typeof parseEsInterval; diff --git a/src/plugins/data/common/search/aggs/index.ts b/src/plugins/data/common/search/aggs/index.ts index 09ea958ccaa85..7a5b7d509c940 100644 --- a/src/plugins/data/common/search/aggs/index.ts +++ b/src/plugins/data/common/search/aggs/index.ts @@ -18,3 +18,4 @@ */ export * from './date_interval_utils'; +export * from './ipv4_address'; diff --git a/src/plugins/kibana_utils/public/parse/ipv4_address.test.ts b/src/plugins/data/common/search/aggs/ipv4_address.test.ts similarity index 99% rename from src/plugins/kibana_utils/public/parse/ipv4_address.test.ts rename to src/plugins/data/common/search/aggs/ipv4_address.test.ts index 1318e11ca6f07..15082b750016e 100644 --- a/src/plugins/kibana_utils/public/parse/ipv4_address.test.ts +++ b/src/plugins/data/common/search/aggs/ipv4_address.test.ts @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -// @ts-ignore + import expect from '@kbn/expect'; import { Ipv4Address } from './ipv4_address'; diff --git a/src/plugins/kibana_utils/public/parse/ipv4_address.ts b/src/plugins/data/common/search/aggs/ipv4_address.ts similarity index 97% rename from src/plugins/kibana_utils/public/parse/ipv4_address.ts rename to src/plugins/data/common/search/aggs/ipv4_address.ts index d214fb6e0e158..da555d8c422ce 100644 --- a/src/plugins/kibana_utils/public/parse/ipv4_address.ts +++ b/src/plugins/data/common/search/aggs/ipv4_address.ts @@ -30,7 +30,6 @@ function isIntegerInRange(integer: number, min: number, max: number) { ); } -// eslint-disable-next-line import/no-default-export export class Ipv4Address { private value: number; diff --git a/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts index 5d21b395b994f..aa96d77d873d3 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_range_select.test.ts @@ -23,8 +23,7 @@ import { createFiltersFromRangeSelectAction } from './create_filters_from_range_ import { IndexPatternsContract, RangeFilter } from '../../../public'; import { dataPluginMock } from '../../../public/mocks'; -import { setIndexPatterns } from '../../../public/services'; -import { mockDataServices } from '../../../public/search/aggs/test_helpers'; +import { setIndexPatterns, setSearchService } from '../../../public/services'; import { TriggerContextMapping } from '../../../../ui_actions/public'; describe('brushEvent', () => { @@ -51,9 +50,10 @@ describe('brushEvent', () => { ]; beforeEach(() => { - mockDataServices(); + const dataStart = dataPluginMock.createStartContract(); + setSearchService(dataStart.search); setIndexPatterns(({ - ...dataPluginMock.createStartContract().indexPatterns, + ...dataStart.indexPatterns, get: async () => indexPattern, } as unknown) as IndexPatternsContract); diff --git a/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts index 3e38477a908b8..a3b9b0b344823 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_value_click.test.ts @@ -24,8 +24,7 @@ import { IndexPatternsContract, } from '../../../public'; import { dataPluginMock } from '../../../public/mocks'; -import { setIndexPatterns } from '../../../public/services'; -import { mockDataServices } from '../../../public/search/aggs/test_helpers'; +import { setIndexPatterns, setSearchService } from '../../../public/services'; import { createFiltersFromValueClickAction } from './create_filters_from_value_click'; import { ValueClickContext } from '../../../../embeddable/public'; @@ -72,9 +71,10 @@ describe('createFiltersFromValueClick', () => { }, ]; - mockDataServices(); + const dataStart = dataPluginMock.createStartContract(); + setSearchService(dataStart.search); setIndexPatterns(({ - ...dataPluginMock.createStartContract().indexPatterns, + ...dataStart.indexPatterns, get: async () => ({ id: 'logstash-*', fields: { diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index 84ee65ed12e3e..abec908b41c0f 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -306,6 +306,7 @@ import { dateHistogramInterval, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, + Ipv4Address, isValidEsInterval, isValidInterval, parseEsInterval, @@ -373,6 +374,7 @@ export const search = { intervalOptions, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, + Ipv4Address, isDateHistogramBucketAggConfig, // TODO: remove in build_pipeline refactor isNumberType, isStringType, @@ -417,7 +419,6 @@ export { connectToQueryState, syncQueryStateWithUrl, QueryState, - getQueryLog, getDefaultQuery, FilterManager, SavedQuery, diff --git a/src/plugins/data/public/plugin.ts b/src/plugins/data/public/plugin.ts index ec71794fde87d..4040781bb2f01 100644 --- a/src/plugins/data/public/plugin.ts +++ b/src/plugins/data/public/plugin.ts @@ -188,7 +188,11 @@ export class DataPublicPlugin implements Plugin({ timefilter: { timefil // Warning: (ae-missing-release-tag) "createSavedQueryService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const createSavedQueryService: (savedObjectsClient: SavedObjectsClientContract_3) => SavedQueryService; +export const createSavedQueryService: (savedObjectsClient: SavedObjectsClientContract) => SavedQueryService; // Warning: (ae-missing-release-tag) "CustomFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -750,12 +752,6 @@ export const getIndexPatternFieldListCreator: ({ fieldFormats, onNotification, } // @public export const getKbnTypeNames: () => string[]; -// Warning: (ae-forgotten-export) The symbol "PersistedLog" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getQueryLog" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export function getQueryLog(uiSettings: IUiSettingsClient, storage: IStorageWrapper, appName: string, language: string): PersistedLog; - // Warning: (ae-missing-release-tag) "getSearchErrorType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1486,7 +1482,7 @@ export interface QueryState { // Warning: (ae-missing-release-tag) "QueryStringInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const QueryStringInput: React.FC>; +export const QueryStringInput: React.FC>; // @public (undocumented) export type QuerySuggestion = QuerySuggestionBasic | QuerySuggestionField; @@ -1675,6 +1671,7 @@ export const search: { })[]; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; + Ipv4Address: typeof Ipv4Address; isDateHistogramBucketAggConfig: typeof isDateHistogramBucketAggConfig; isNumberType: (agg: import("./search").AggConfig) => boolean; isStringType: (agg: import("./search").AggConfig) => boolean; @@ -1979,20 +1976,21 @@ export const UI_SETTINGS: { // src/plugins/data/public/index.ts:233:27 - (ae-forgotten-export) The symbol "getFromSavedObject" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:233:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:233:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:369:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:369:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:369:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:369:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:371:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:372:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:381:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:382:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:383:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:387:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:388:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:391:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:392:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:395:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:372:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:373:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:382:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:383:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:384:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:385:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:389:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:390:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:393:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:394:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:397: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:40:60 - (ae-forgotten-export) The symbol "FilterStateStore" 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 // src/plugins/data/public/types.ts:53:5 - (ae-forgotten-export) The symbol "createFiltersFromRangeSelectAction" needs to be exported by the entry point index.d.ts diff --git a/src/plugins/data/public/query/lib/add_to_query_log.ts b/src/plugins/data/public/query/lib/add_to_query_log.ts new file mode 100644 index 0000000000000..d1e9a800418a2 --- /dev/null +++ b/src/plugins/data/public/query/lib/add_to_query_log.ts @@ -0,0 +1,44 @@ +/* + * 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 { IUiSettingsClient } from 'src/core/public'; +import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; +import { Query } from '../../../common'; +import { getQueryLog } from './get_query_log'; + +interface AddToQueryLogDependencies { + uiSettings: IUiSettingsClient; + storage: IStorageWrapper; +} + +export function createAddToQueryLog({ storage, uiSettings }: AddToQueryLogDependencies) { + /** + * This function is to be used in conjunction with ``. + * It provides a way for external editors to add new filter entries to the + * persisted query log which lives in `localStorage`. These entries are then + * read by `` and provided in the autocomplete options. + * + * @param appName Name of the app where this filter is added from. + * @param query Filter value to add. + */ + return function addToQueryLog(appName: string, { language, query }: Query) { + const persistedLog = getQueryLog(uiSettings, storage, appName, language); + persistedLog.add(query); + }; +} diff --git a/src/plugins/data/public/query/lib/get_query_log.ts b/src/plugins/data/public/query/lib/get_query_log.ts index b7827d2c8de02..8256c3eabd7d1 100644 --- a/src/plugins/data/public/query/lib/get_query_log.ts +++ b/src/plugins/data/public/query/lib/get_query_log.ts @@ -22,6 +22,7 @@ import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { PersistedLog } from '../persisted_log'; import { UI_SETTINGS } from '../../../common'; +/** @internal */ export function getQueryLog( uiSettings: IUiSettingsClient, storage: IStorageWrapper, diff --git a/src/plugins/data/public/query/lib/index.ts b/src/plugins/data/public/query/lib/index.ts index 284fb6458a535..a0625902fea7b 100644 --- a/src/plugins/data/public/query/lib/index.ts +++ b/src/plugins/data/public/query/lib/index.ts @@ -17,9 +17,10 @@ * under the License. */ -export * from './match_pairs'; +export * from './add_to_query_log'; export * from './from_user'; +export * from './get_default_query'; +export * from './get_query_log'; +export * from './match_pairs'; export * from './to_user'; export * from './to_user'; -export * from './get_query_log'; -export * from './get_default_query'; diff --git a/src/plugins/data/public/query/mocks.ts b/src/plugins/data/public/query/mocks.ts index 47b0a5b871ce2..0c19f71277bc5 100644 --- a/src/plugins/data/public/query/mocks.ts +++ b/src/plugins/data/public/query/mocks.ts @@ -35,10 +35,11 @@ const createSetupContractMock = () => { const createStartContractMock = () => { const startContract: jest.Mocked = { + addToQueryLog: jest.fn(), filterManager: jest.fn() as any, - timefilter: timefilterServiceMock.createStartContract(), savedQueries: jest.fn() as any, state$: new Observable(), + timefilter: timefilterServiceMock.createStartContract(), }; return startContract; diff --git a/src/plugins/data/public/query/query_service.ts b/src/plugins/data/public/query/query_service.ts index c885d596f1943..eb1f985fa51db 100644 --- a/src/plugins/data/public/query/query_service.ts +++ b/src/plugins/data/public/query/query_service.ts @@ -18,9 +18,10 @@ */ import { share } from 'rxjs/operators'; -import { CoreStart } from 'src/core/public'; +import { IUiSettingsClient, SavedObjectsClientContract } from 'src/core/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { FilterManager } from './filter_manager'; +import { createAddToQueryLog } from './lib'; import { TimefilterService, TimefilterSetup } from './timefilter'; import { createSavedQueryService } from './saved_query/saved_query_service'; import { createQueryStateObservable } from './state_sync/create_global_query_observable'; @@ -30,17 +31,24 @@ import { createQueryStateObservable } from './state_sync/create_global_query_obs * @internal */ -export interface QueryServiceDependencies { +interface QueryServiceSetupDependencies { storage: IStorageWrapper; - uiSettings: CoreStart['uiSettings']; + uiSettings: IUiSettingsClient; } + +interface QueryServiceStartDependencies { + savedObjectsClient: SavedObjectsClientContract; + storage: IStorageWrapper; + uiSettings: IUiSettingsClient; +} + export class QueryService { filterManager!: FilterManager; timefilter!: TimefilterSetup; state$!: ReturnType; - public setup({ uiSettings, storage }: QueryServiceDependencies) { + public setup({ storage, uiSettings }: QueryServiceSetupDependencies) { this.filterManager = new FilterManager(uiSettings); const timefilterService = new TimefilterService(); @@ -61,12 +69,16 @@ export class QueryService { }; } - public start(savedObjects: CoreStart['savedObjects']) { + public start({ savedObjectsClient, storage, uiSettings }: QueryServiceStartDependencies) { return { + addToQueryLog: createAddToQueryLog({ + storage, + uiSettings, + }), filterManager: this.filterManager, - timefilter: this.timefilter, + savedQueries: createSavedQueryService(savedObjectsClient), state$: this.state$, - savedQueries: createSavedQueryService(savedObjects.client), + timefilter: this.timefilter, }; } diff --git a/src/plugins/data/public/query/state_sync/connect_to_query_state.test.ts b/src/plugins/data/public/query/state_sync/connect_to_query_state.test.ts index 4e394445b75ae..cf98c87b18267 100644 --- a/src/plugins/data/public/query/state_sync/connect_to_query_state.test.ts +++ b/src/plugins/data/public/query/state_sync/connect_to_query_state.test.ts @@ -78,7 +78,11 @@ describe('connect_to_global_state', () => { uiSettings: setupMock.uiSettings, storage: new Storage(new StubBrowserStorage()), }); - queryServiceStart = queryService.start(startMock.savedObjects); + queryServiceStart = queryService.start({ + uiSettings: setupMock.uiSettings, + storage: new Storage(new StubBrowserStorage()), + savedObjectsClient: startMock.savedObjects.client, + }); filterManager = queryServiceStart.filterManager; timeFilter = queryServiceStart.timefilter.timefilter; @@ -307,7 +311,11 @@ describe('connect_to_app_state', () => { uiSettings: setupMock.uiSettings, storage: new Storage(new StubBrowserStorage()), }); - queryServiceStart = queryService.start(startMock.savedObjects); + queryServiceStart = queryService.start({ + uiSettings: setupMock.uiSettings, + storage: new Storage(new StubBrowserStorage()), + savedObjectsClient: startMock.savedObjects.client, + }); filterManager = queryServiceStart.filterManager; appState = createStateContainer({}); @@ -481,7 +489,11 @@ describe('filters with different state', () => { uiSettings: setupMock.uiSettings, storage: new Storage(new StubBrowserStorage()), }); - queryServiceStart = queryService.start(startMock.savedObjects); + queryServiceStart = queryService.start({ + uiSettings: setupMock.uiSettings, + storage: new Storage(new StubBrowserStorage()), + savedObjectsClient: startMock.savedObjects.client, + }); filterManager = queryServiceStart.filterManager; state = createStateContainer({}); diff --git a/src/plugins/data/public/query/state_sync/sync_state_with_url.test.ts b/src/plugins/data/public/query/state_sync/sync_state_with_url.test.ts index 7727153537257..122eb2ff6a343 100644 --- a/src/plugins/data/public/query/state_sync/sync_state_with_url.test.ts +++ b/src/plugins/data/public/query/state_sync/sync_state_with_url.test.ts @@ -72,7 +72,11 @@ describe('sync_query_state_with_url', () => { uiSettings: setupMock.uiSettings, storage: new Storage(new StubBrowserStorage()), }); - queryServiceStart = queryService.start(startMock.savedObjects); + queryServiceStart = queryService.start({ + uiSettings: startMock.uiSettings, + storage: new Storage(new StubBrowserStorage()), + savedObjectsClient: startMock.savedObjects.client, + }); filterManager = queryServiceStart.filterManager; timefilter = queryServiceStart.timefilter.timefilter; diff --git a/src/plugins/data/public/search/aggs/agg_config.test.ts b/src/plugins/data/public/search/aggs/agg_config.test.ts index 18a86d767c2de..f9279e06d14a9 100644 --- a/src/plugins/data/public/search/aggs/agg_config.test.ts +++ b/src/plugins/data/public/search/aggs/agg_config.test.ts @@ -23,19 +23,50 @@ import { AggConfig, IAggConfig } from './agg_config'; import { AggConfigs, CreateAggConfigParams } from './agg_configs'; import { AggType } from './agg_type'; import { AggTypesRegistryStart } from './agg_types_registry'; -import { mockDataServices, mockAggTypesRegistry } from './test_helpers'; +import { mockAggTypesRegistry } from './test_helpers'; import { MetricAggType } from './metrics/metric_agg_type'; import { IndexPattern, IIndexPatternFieldList } from '../../index_patterns'; -import { stubIndexPatternWithFields } from '../../../public/stubs'; describe('AggConfig', () => { let indexPattern: IndexPattern; let typesRegistry: AggTypesRegistryStart; + const fields = [ + { + name: '@timestamp', + type: 'date', + aggregatable: true, + format: { + toJSON: () => ({}), + }, + }, + { + name: 'bytes', + type: 'number', + aggregatable: true, + format: { + toJSON: () => ({}), + }, + }, + { + name: 'machine.os.keyword', + type: 'string', + aggregatable: true, + format: { + toJSON: () => ({}), + }, + }, + ]; beforeEach(() => { jest.restoreAllMocks(); - mockDataServices(); - indexPattern = stubIndexPatternWithFields as IndexPattern; + indexPattern = { + id: '1234', + title: 'logstash-*', + fields: ({ + getByName: (name: string) => fields.find((f) => f.name === name), + filter: () => fields, + } as unknown) as IndexPattern['fields'], + } as IndexPattern; typesRegistry = mockAggTypesRegistry(); }); @@ -488,6 +519,9 @@ describe('AggConfig', () => { "enabled": Array [ true, ], + "field": Array [ + "machine.os.keyword", + ], "id": Array [ "1", ], @@ -548,6 +582,9 @@ describe('AggConfig', () => { "enabled": Array [ true, ], + "field": Array [ + "bytes", + ], "id": Array [ "1-orderAgg", ], diff --git a/src/plugins/data/public/search/aggs/agg_config.ts b/src/plugins/data/public/search/aggs/agg_config.ts index de49e9ab6f66e..31618eac18e98 100644 --- a/src/plugins/data/public/search/aggs/agg_config.ts +++ b/src/plugins/data/public/search/aggs/agg_config.ts @@ -24,7 +24,7 @@ import { ExpressionAstFunction, ExpressionAstArgument, SerializedFieldFormat, -} from 'src/plugins/expressions/public'; +} from 'src/plugins/expressions/common'; import { IAggType } from './agg_type'; import { writeParams } from './agg_params'; import { IAggConfigs } from './agg_configs'; diff --git a/src/plugins/data/public/search/aggs/agg_configs.test.ts b/src/plugins/data/public/search/aggs/agg_configs.test.ts index f3efeb028665b..df4a5420ae0db 100644 --- a/src/plugins/data/public/search/aggs/agg_configs.test.ts +++ b/src/plugins/data/public/search/aggs/agg_configs.test.ts @@ -21,7 +21,7 @@ import { keyBy } from 'lodash'; import { AggConfig } from './agg_config'; import { AggConfigs } from './agg_configs'; import { AggTypesRegistryStart } from './agg_types_registry'; -import { mockDataServices, mockAggTypesRegistry } from './test_helpers'; +import { mockAggTypesRegistry } from './test_helpers'; import { Field as IndexPatternField, IndexPattern } from '../../index_patterns'; import { stubIndexPattern, stubIndexPatternWithFields } from '../../../public/stubs'; @@ -30,7 +30,6 @@ describe('AggConfigs', () => { let typesRegistry: AggTypesRegistryStart; beforeEach(() => { - mockDataServices(); indexPattern = stubIndexPatternWithFields as IndexPattern; typesRegistry = mockAggTypesRegistry(); }); diff --git a/src/plugins/data/public/search/aggs/agg_params.test.ts b/src/plugins/data/public/search/aggs/agg_params.test.ts index 997027fe88e82..ac3f86d5128a1 100644 --- a/src/plugins/data/public/search/aggs/agg_params.test.ts +++ b/src/plugins/data/public/search/aggs/agg_params.test.ts @@ -22,24 +22,12 @@ import { BaseParamType } from './param_types/base'; import { FieldParamType } from './param_types/field'; import { OptionedParamType } from './param_types/optioned'; import { AggParamType } from '../aggs/param_types/agg'; -import { fieldFormatsServiceMock } from '../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../src/core/public/mocks'; -import { AggTypeDependencies } from './agg_type'; -import { InternalStartServices } from '../../types'; describe('AggParams class', () => { - const aggTypesDependencies: AggTypeDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - describe('constructor args', () => { it('accepts an array of param defs', () => { const params = [{ name: 'one' }, { name: 'two' }] as AggParamType[]; - const aggParams = initParams(params, aggTypesDependencies); + const aggParams = initParams(params); expect(aggParams).toHaveLength(params.length); expect(Array.isArray(aggParams)).toBeTruthy(); @@ -49,7 +37,7 @@ describe('AggParams class', () => { describe('AggParam creation', () => { it('Uses the FieldParamType class for params with the name "field"', () => { const params = [{ name: 'field', type: 'field' }] as AggParamType[]; - const aggParams = initParams(params, aggTypesDependencies); + const aggParams = initParams(params); expect(aggParams).toHaveLength(params.length); expect(aggParams[0] instanceof FieldParamType).toBeTruthy(); @@ -62,7 +50,7 @@ describe('AggParams class', () => { type: 'optioned', }, ] as AggParamType[]; - const aggParams = initParams(params, aggTypesDependencies); + const aggParams = initParams(params); expect(aggParams).toHaveLength(params.length); expect(aggParams[0] instanceof OptionedParamType).toBeTruthy(); @@ -84,7 +72,7 @@ describe('AggParams class', () => { }, ] as AggParamType[]; - const aggParams = initParams(params, aggTypesDependencies); + const aggParams = initParams(params); expect(aggParams).toHaveLength(params.length); diff --git a/src/plugins/data/public/search/aggs/agg_params.ts b/src/plugins/data/public/search/aggs/agg_params.ts index 4f7bec30fa27d..b6222698a12a6 100644 --- a/src/plugins/data/public/search/aggs/agg_params.ts +++ b/src/plugins/data/public/search/aggs/agg_params.ts @@ -26,7 +26,6 @@ import { BaseParamType } from './param_types/base'; import { AggConfig } from './agg_config'; import { IAggConfigs } from './agg_configs'; -import { AggTypeDependencies } from './agg_type'; const paramTypeMap = { field: FieldParamType, @@ -46,13 +45,12 @@ export interface AggParamOption { } export const initParams = ( - params: TAggParam[], - { getInternalStartServices }: AggTypeDependencies + params: TAggParam[] ): TAggParam[] => params.map((config: TAggParam) => { const Class = paramTypeMap[config.type] || paramTypeMap._default; - return new Class(config, { getInternalStartServices }); + return new Class(config); }) as TAggParam[]; /** diff --git a/src/plugins/data/public/search/aggs/agg_type.test.ts b/src/plugins/data/public/search/aggs/agg_type.test.ts index 99b1c4d861219..2fcc6b97b1cc6 100644 --- a/src/plugins/data/public/search/aggs/agg_type.test.ts +++ b/src/plugins/data/public/search/aggs/agg_type.test.ts @@ -17,33 +17,15 @@ * under the License. */ -import { AggType, AggTypeConfig, AggTypeDependencies } from './agg_type'; +import { AggType, AggTypeConfig } from './agg_type'; import { IAggConfig } from './agg_config'; -import { fieldFormatsServiceMock } from '../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../types'; describe('AggType Class', () => { - let dependencies: AggTypeDependencies; - - beforeEach(() => { - dependencies = { - getInternalStartServices: () => - (({ - fieldFormats: { - ...fieldFormatsServiceMock.createStartContract(), - getDefaultInstance: jest.fn(() => 'default') as any, - }, - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - }); - describe('constructor', () => { test("requires a valid config object as it's first param", () => { expect(() => { const aggConfig: AggTypeConfig = (undefined as unknown) as AggTypeConfig; - new AggType(aggConfig, dependencies); + new AggType(aggConfig); }).toThrowError(); }); @@ -54,7 +36,7 @@ describe('AggType Class', () => { title: 'title', }; - const aggType = new AggType(config, dependencies); + const aggType = new AggType(config); expect(aggType.name).toBe('name'); expect(aggType.title).toBe('title'); @@ -70,7 +52,7 @@ describe('AggType Class', () => { makeLabel, }; - const aggType = new AggType(config, dependencies); + const aggType = new AggType(config); expect(aggType.makeLabel).toBe(makeLabel); expect(aggType.makeLabel(aggConfig)).toBe('label'); @@ -81,15 +63,12 @@ describe('AggType Class', () => { test('copies the value', () => { const testConfig = (aggConfig: IAggConfig) => [aggConfig]; - const aggType = new AggType( - { - name: 'name', - title: 'title', - getResponseAggs: testConfig, - getRequestAggs: testConfig, - }, - dependencies - ); + const aggType = new AggType({ + name: 'name', + title: 'title', + getResponseAggs: testConfig, + getRequestAggs: testConfig, + }); expect(aggType.getResponseAggs).toBe(testConfig); expect(aggType.getResponseAggs).toBe(testConfig); @@ -97,13 +76,10 @@ describe('AggType Class', () => { test('defaults to noop', () => { const aggConfig = {} as IAggConfig; - const aggType = new AggType( - { - name: 'name', - title: 'title', - }, - dependencies - ); + const aggType = new AggType({ + name: 'name', + title: 'title', + }); const responseAggs = aggType.getRequestAggs(aggConfig); expect(responseAggs).toBe(undefined); @@ -112,13 +88,10 @@ describe('AggType Class', () => { describe('params', () => { test('defaults to AggParams object with JSON param', () => { - const aggType = new AggType( - { - name: 'smart agg', - title: 'title', - }, - dependencies - ); + const aggType = new AggType({ + name: 'smart agg', + title: 'title', + }); expect(Array.isArray(aggType.params)).toBeTruthy(); expect(aggType.params.length).toBe(2); @@ -127,14 +100,11 @@ describe('AggType Class', () => { }); test('can disable customLabel', () => { - const aggType = new AggType( - { - name: 'smart agg', - title: 'title', - customLabels: false, - }, - dependencies - ); + const aggType = new AggType({ + name: 'smart agg', + title: 'title', + customLabels: false, + }); expect(aggType.params.length).toBe(1); expect(aggType.params[0].name).toBe('json'); @@ -144,14 +114,11 @@ describe('AggType Class', () => { const params = [{ name: 'one' }, { name: 'two' }]; const paramLength = params.length + 2; // json and custom label are always appended - const aggType = new AggType( - { - name: 'bucketeer', - title: 'title', - params, - }, - dependencies - ); + const aggType = new AggType({ + name: 'bucketeer', + title: 'title', + params, + }); expect(Array.isArray(aggType.params)).toBeTruthy(); expect(aggType.params.length).toBe(paramLength); @@ -170,13 +137,10 @@ describe('AggType Class', () => { }, }, } as unknown) as IAggConfig; - const aggType = new AggType( - { - name: 'name', - title: 'title', - }, - dependencies - ); + const aggType = new AggType({ + name: 'name', + title: 'title', + }); expect(aggType.getSerializedFormat(aggConfig)).toMatchInlineSnapshot(` Object { "id": "format", @@ -188,13 +152,10 @@ describe('AggType Class', () => { const aggConfig = ({ params: {}, } as unknown) as IAggConfig; - const aggType = new AggType( - { - name: 'name', - title: 'title', - }, - dependencies - ); + const aggType = new AggType({ + name: 'name', + title: 'title', + }); expect(aggType.getSerializedFormat(aggConfig)).toMatchInlineSnapshot(`Object {}`); }); @@ -209,14 +170,11 @@ describe('AggType Class', () => { }, } as unknown) as IAggConfig; const getSerializedFormat = jest.fn().mockReturnValue({ id: 'hello' }); - const aggType = new AggType( - { - name: 'name', - title: 'title', - getSerializedFormat, - }, - dependencies - ); + const aggType = new AggType({ + name: 'name', + title: 'title', + getSerializedFormat, + }); const serialized = aggType.getSerializedFormat(aggConfig); expect(getSerializedFormat).toHaveBeenCalledWith(aggConfig); expect(serialized).toMatchInlineSnapshot(` diff --git a/src/plugins/data/public/search/aggs/agg_type.ts b/src/plugins/data/public/search/aggs/agg_type.ts index 13655afdf469e..de7ca48e71d57 100644 --- a/src/plugins/data/public/search/aggs/agg_type.ts +++ b/src/plugins/data/public/search/aggs/agg_type.ts @@ -20,16 +20,15 @@ import { constant, noop, identity } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { SerializedFieldFormat } from 'src/plugins/expressions/public'; +import { SerializedFieldFormat } from 'src/plugins/expressions/common'; +import type { RequestAdapter } from 'src/plugins/inspector/common'; import { initParams } from './agg_params'; import { AggConfig } from './agg_config'; import { IAggConfigs } from './agg_configs'; -import { Adapters } from '../../../../../plugins/inspector/public'; import { BaseParamType } from './param_types/base'; import { AggParamType } from './param_types/agg'; import { ISearchSource } from '../search_source'; -import { GetInternalStartServicesFn } from '../../types'; export interface AggTypeConfig< TAggConfig extends AggConfig = AggConfig, @@ -54,7 +53,7 @@ export interface AggTypeConfig< aggConfigs: IAggConfigs, aggConfig: TAggConfig, searchSource: ISearchSource, - inspectorAdapters: Adapters, + inspectorRequestAdapter: RequestAdapter, abortSignal?: AbortSignal ) => Promise; getSerializedFormat?: (agg: TAggConfig) => SerializedFieldFormat; @@ -65,10 +64,6 @@ export interface AggTypeConfig< // TODO need to make a more explicit interface for this export type IAggType = AggType; -export interface AggTypeDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export class AggType< TAggConfig extends AggConfig = AggConfig, TParam extends AggParamType = AggParamType @@ -192,7 +187,7 @@ export class AggType< aggConfigs: IAggConfigs, aggConfig: TAggConfig, searchSource: ISearchSource, - inspectorAdapters: Adapters, + inspectorRequestAdapter: RequestAdapter, abortSignal?: AbortSignal ) => Promise; /** @@ -223,10 +218,7 @@ export class AggType< * @private * @param {object} config - used to set the properties of the AggType */ - constructor( - config: AggTypeConfig, - { getInternalStartServices }: AggTypeDependencies - ) { + constructor(config: AggTypeConfig) { this.name = config.name; this.type = config.type || 'metrics'; this.dslName = config.dslName || config.name; @@ -263,7 +255,7 @@ export class AggType< }); } - this.params = initParams(params, { getInternalStartServices }); + this.params = initParams(params); } this.getRequestAggs = config.getRequestAggs || noop; diff --git a/src/plugins/data/public/search/aggs/agg_types.ts b/src/plugins/data/public/search/aggs/agg_types.ts index 68542b66e6c35..2820ae495f318 100644 --- a/src/plugins/data/public/search/aggs/agg_types.ts +++ b/src/plugins/data/public/search/aggs/agg_types.ts @@ -67,40 +67,40 @@ export const getAggTypes = ({ uiSettings, }: AggTypesDependencies) => ({ metrics: [ - getCountMetricAgg({ getInternalStartServices }), - getAvgMetricAgg({ getInternalStartServices }), - getSumMetricAgg({ getInternalStartServices }), - getMedianMetricAgg({ getInternalStartServices }), - getMinMetricAgg({ getInternalStartServices }), - getMaxMetricAgg({ getInternalStartServices }), - getStdDeviationMetricAgg({ getInternalStartServices }), - getCardinalityMetricAgg({ getInternalStartServices }), - getPercentilesMetricAgg({ getInternalStartServices }), + getCountMetricAgg(), + getAvgMetricAgg(), + getSumMetricAgg(), + getMedianMetricAgg(), + getMinMetricAgg(), + getMaxMetricAgg(), + getStdDeviationMetricAgg(), + getCardinalityMetricAgg(), + getPercentilesMetricAgg(), getPercentileRanksMetricAgg({ getInternalStartServices }), - getTopHitMetricAgg({ getInternalStartServices }), - getDerivativeMetricAgg({ getInternalStartServices }), - getCumulativeSumMetricAgg({ getInternalStartServices }), - getMovingAvgMetricAgg({ getInternalStartServices }), - getSerialDiffMetricAgg({ getInternalStartServices }), - getBucketAvgMetricAgg({ getInternalStartServices }), - getBucketSumMetricAgg({ getInternalStartServices }), - getBucketMinMetricAgg({ getInternalStartServices }), - getBucketMaxMetricAgg({ getInternalStartServices }), - getGeoBoundsMetricAgg({ getInternalStartServices }), - getGeoCentroidMetricAgg({ getInternalStartServices }), + getTopHitMetricAgg(), + getDerivativeMetricAgg(), + getCumulativeSumMetricAgg(), + getMovingAvgMetricAgg(), + getSerialDiffMetricAgg(), + getBucketAvgMetricAgg(), + getBucketSumMetricAgg(), + getBucketMinMetricAgg(), + getBucketMaxMetricAgg(), + getGeoBoundsMetricAgg(), + getGeoCentroidMetricAgg(), ], buckets: [ - getDateHistogramBucketAgg({ calculateBounds, uiSettings, getInternalStartServices }), + getDateHistogramBucketAgg({ calculateBounds, uiSettings }), getHistogramBucketAgg({ uiSettings, getInternalStartServices }), getRangeBucketAgg({ getInternalStartServices }), - getDateRangeBucketAgg({ uiSettings, getInternalStartServices }), - getIpRangeBucketAgg({ getInternalStartServices }), - getTermsBucketAgg({ getInternalStartServices }), - getFilterBucketAgg({ getInternalStartServices }), - getFiltersBucketAgg({ uiSettings, getInternalStartServices }), - getSignificantTermsBucketAgg({ getInternalStartServices }), - getGeoHashBucketAgg({ getInternalStartServices }), - getGeoTitleBucketAgg({ getInternalStartServices }), + getDateRangeBucketAgg({ uiSettings }), + getIpRangeBucketAgg(), + getTermsBucketAgg(), + getFilterBucketAgg(), + getFiltersBucketAgg({ uiSettings }), + getSignificantTermsBucketAgg(), + getGeoHashBucketAgg(), + getGeoTitleBucketAgg(), ], }); diff --git a/src/plugins/data/public/search/aggs/buckets/bucket_agg_type.ts b/src/plugins/data/public/search/aggs/buckets/bucket_agg_type.ts index f3c95b444dee9..03629c3189cbb 100644 --- a/src/plugins/data/public/search/aggs/buckets/bucket_agg_type.ts +++ b/src/plugins/data/public/search/aggs/buckets/bucket_agg_type.ts @@ -21,7 +21,6 @@ import { IAggConfig } from '../agg_config'; import { KBN_FIELD_TYPES } from '../../../../common'; import { AggType, AggTypeConfig } from '../agg_type'; import { AggParamType } from '../param_types/agg'; -import { GetInternalStartServicesFn } from '../../../types'; export interface IBucketAggConfig extends IAggConfig { type: InstanceType; @@ -40,10 +39,6 @@ interface BucketAggTypeConfig getKey?: (bucket: any, key: any, agg: IAggConfig) => any; } -interface BucketAggTypeDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export class BucketAggType extends AggType< TBucketAggConfig, BucketAggParam @@ -51,11 +46,8 @@ export class BucketAggType any; type = bucketType; - constructor( - config: BucketAggTypeConfig, - dependencies: BucketAggTypeDependencies - ) { - super(config, dependencies); + constructor(config: BucketAggTypeConfig) { + super(config); this.getKey = config.getKey || diff --git a/src/plugins/data/public/search/aggs/buckets/create_filter/date_histogram.test.ts b/src/plugins/data/public/search/aggs/buckets/create_filter/date_histogram.test.ts index 518bdbfe0c135..24a17b60566cc 100644 --- a/src/plugins/data/public/search/aggs/buckets/create_filter/date_histogram.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/create_filter/date_histogram.test.ts @@ -21,7 +21,7 @@ import moment from 'moment'; import { createFilterDateHistogram } from './date_histogram'; import { intervalOptions } from '../_interval_options'; import { AggConfigs } from '../../agg_configs'; -import { mockDataServices, mockAggTypesRegistry } from '../../test_helpers'; +import { mockAggTypesRegistry } from '../../test_helpers'; import { getDateHistogramBucketAgg, DateHistogramBucketAggDependencies, @@ -29,9 +29,7 @@ import { } from '../date_histogram'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { RangeFilter } from '../../../../../common'; -import { coreMock, notificationServiceMock } from '../../../../../../../core/public/mocks'; -import { fieldFormatsServiceMock } from '../../../../field_formats/mocks'; -import { InternalStartServices } from '../../../../types'; +import { coreMock } from '../../../../../../../core/public/mocks'; describe('AggConfig Filters', () => { describe('date_histogram', () => { @@ -46,15 +44,8 @@ describe('AggConfig Filters', () => { aggTypesDependencies = { calculateBounds: jest.fn(), - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), uiSettings, }; - - mockDataServices(); }); const init = (interval: string = 'auto', duration: any = moment.duration(15, 'minutes')) => { diff --git a/src/plugins/data/public/search/aggs/buckets/create_filter/date_range.test.ts b/src/plugins/data/public/search/aggs/buckets/create_filter/date_range.test.ts index 08f39e10b6006..c272c037c5927 100644 --- a/src/plugins/data/public/search/aggs/buckets/create_filter/date_range.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/create_filter/date_range.test.ts @@ -26,9 +26,7 @@ import { AggConfigs } from '../../agg_configs'; import { mockAggTypesRegistry } from '../../test_helpers'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; -import { coreMock, notificationServiceMock } from '../../../../../../../core/public/mocks'; -import { fieldFormatsServiceMock } from '../../../../field_formats/mocks'; -import { InternalStartServices } from '../../../../types'; +import { coreMock } from '../../../../../../../core/public/mocks'; describe('AggConfig Filters', () => { describe('Date range', () => { @@ -37,14 +35,7 @@ describe('AggConfig Filters', () => { beforeEach(() => { const { uiSettings } = coreMock.createSetup(); - aggTypesDependencies = { - uiSettings, - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; + aggTypesDependencies = { uiSettings }; }); const getConfig = (() => {}) as FieldFormatsGetConfigFn; diff --git a/src/plugins/data/public/search/aggs/buckets/create_filter/filters.test.ts b/src/plugins/data/public/search/aggs/buckets/create_filter/filters.test.ts index c5ad1a61e6676..ff66d80c6d8d0 100644 --- a/src/plugins/data/public/search/aggs/buckets/create_filter/filters.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/create_filter/filters.test.ts @@ -22,9 +22,7 @@ import { createFilterFilters } from './filters'; import { AggConfigs } from '../../agg_configs'; import { mockAggTypesRegistry } from '../../test_helpers'; import { IBucketAggConfig } from '../bucket_agg_type'; -import { coreMock, notificationServiceMock } from '../../../../../../../core/public/mocks'; -import { fieldFormatsServiceMock } from '../../../../field_formats/mocks'; -import { InternalStartServices } from '../../../../types'; +import { coreMock } from '../../../../../../../core/public/mocks'; describe('AggConfig Filters', () => { describe('filters', () => { @@ -33,14 +31,7 @@ describe('AggConfig Filters', () => { beforeEach(() => { const { uiSettings } = coreMock.createSetup(); - aggTypesDependencies = { - uiSettings, - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; + aggTypesDependencies = { uiSettings }; }); const getAggConfigs = () => { diff --git a/src/plugins/data/public/search/aggs/buckets/create_filter/ip_range.test.ts b/src/plugins/data/public/search/aggs/buckets/create_filter/ip_range.test.ts index 89a5fd6577891..852685a505afd 100644 --- a/src/plugins/data/public/search/aggs/buckets/create_filter/ip_range.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/create_filter/ip_range.test.ts @@ -24,22 +24,10 @@ import { mockAggTypesRegistry } from '../../test_helpers'; import { IpFormat } from '../../../../../common'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; -import { fieldFormatsServiceMock } from '../../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../core/public/mocks'; -import { InternalStartServices } from '../../../../types'; describe('AggConfig Filters', () => { describe('IP range', () => { - const fieldFormats = fieldFormatsServiceMock.createStartContract(); - const typesRegistry = mockAggTypesRegistry([ - getIpRangeBucketAgg({ - getInternalStartServices: () => - (({ - fieldFormats, - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }), - ]); + const typesRegistry = mockAggTypesRegistry([getIpRangeBucketAgg()]); const getAggConfigs = (aggs: CreateAggConfigParams[]) => { const field = { name: 'ip', diff --git a/src/plugins/data/public/search/aggs/buckets/create_filter/range.test.ts b/src/plugins/data/public/search/aggs/buckets/create_filter/range.test.ts index 238e5737d8f47..faffad3beb8c1 100644 --- a/src/plugins/data/public/search/aggs/buckets/create_filter/range.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/create_filter/range.test.ts @@ -17,21 +17,19 @@ * under the License. */ -import { getRangeBucketAgg, RangeBucketAggDependencies } from '../range'; +import { getRangeBucketAgg } from '../range'; import { createFilterRange } from './range'; import { BytesFormat, FieldFormatsGetConfigFn } from '../../../../../common'; import { AggConfigs } from '../../agg_configs'; -import { mockDataServices, mockAggTypesRegistry } from '../../test_helpers'; +import { mockAggTypesRegistry } from '../../test_helpers'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; import { FieldFormatsStart } from '../../../../field_formats'; import { fieldFormatsServiceMock } from '../../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../core/public/mocks'; import { GetInternalStartServicesFn, InternalStartServices } from '../../../../types'; describe('AggConfig Filters', () => { describe('range', () => { - let aggTypesDependencies: RangeBucketAggDependencies; let getInternalStartServices: GetInternalStartServicesFn; let fieldFormats: FieldFormatsStart; @@ -41,17 +39,7 @@ describe('AggConfig Filters', () => { getInternalStartServices = () => (({ fieldFormats, - notifications: notificationServiceMock.createStartContract(), } as unknown) as InternalStartServices); - - aggTypesDependencies = { - getInternalStartServices: () => - (({ - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - - mockDataServices(); }); const getConfig = (() => {}) as FieldFormatsGetConfigFn; @@ -84,7 +72,7 @@ describe('AggConfig Filters', () => { }, ], { - typesRegistry: mockAggTypesRegistry([getRangeBucketAgg(aggTypesDependencies)]), + typesRegistry: mockAggTypesRegistry([getRangeBucketAgg({ getInternalStartServices })]), } ); }; diff --git a/src/plugins/data/public/search/aggs/buckets/create_filter/terms.test.ts b/src/plugins/data/public/search/aggs/buckets/create_filter/terms.test.ts index a45087916a395..1c165f0d29ab6 100644 --- a/src/plugins/data/public/search/aggs/buckets/create_filter/terms.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/create_filter/terms.test.ts @@ -24,25 +24,9 @@ import { mockAggTypesRegistry } from '../../test_helpers'; import { BUCKET_TYPES } from '../bucket_agg_types'; import { IBucketAggConfig } from '../bucket_agg_type'; import { Filter, ExistsFilter } from '../../../../../common'; -import { RangeBucketAggDependencies } from '../range'; -import { fieldFormatsServiceMock } from '../../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../core/public/mocks'; -import { InternalStartServices } from '../../../../types'; describe('AggConfig Filters', () => { describe('terms', () => { - let aggTypesDependencies: RangeBucketAggDependencies; - - beforeEach(() => { - aggTypesDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - }); - const getAggConfigs = (aggs: CreateAggConfigParams[]) => { const indexPattern = { id: '1234', @@ -59,7 +43,7 @@ describe('AggConfig Filters', () => { }; return new AggConfigs(indexPattern, aggs, { - typesRegistry: mockAggTypesRegistry([getTermsBucketAgg(aggTypesDependencies)]), + typesRegistry: mockAggTypesRegistry([getTermsBucketAgg()]), }); }; diff --git a/src/plugins/data/public/search/aggs/buckets/date_histogram.ts b/src/plugins/data/public/search/aggs/buckets/date_histogram.ts index e4c4bc0cedc3c..fa1725eccbd28 100644 --- a/src/plugins/data/public/search/aggs/buckets/date_histogram.ts +++ b/src/plugins/data/public/search/aggs/buckets/date_histogram.ts @@ -37,7 +37,6 @@ import { TimeRangeBounds, UI_SETTINGS, } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; import { ExtendedBounds } from './lib/extended_bounds'; @@ -59,7 +58,6 @@ const updateTimeBuckets = ( export interface DateHistogramBucketAggDependencies { calculateBounds: CalculateBoundsFn; - getInternalStartServices: GetInternalStartServicesFn; uiSettings: IUiSettingsClient; } @@ -86,219 +84,213 @@ export interface AggParamsDateHistogram extends BaseAggParams { export const getDateHistogramBucketAgg = ({ calculateBounds, - getInternalStartServices, uiSettings, }: DateHistogramBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.DATE_HISTOGRAM, - title: i18n.translate('data.search.aggs.buckets.dateHistogramTitle', { - defaultMessage: 'Date Histogram', - }), - ordered: { - date: true, - }, - makeLabel(agg) { - let output: Record = {}; + new BucketAggType({ + name: BUCKET_TYPES.DATE_HISTOGRAM, + title: i18n.translate('data.search.aggs.buckets.dateHistogramTitle', { + defaultMessage: 'Date Histogram', + }), + ordered: { + date: true, + }, + makeLabel(agg) { + let output: Record = {}; - if (this.params) { - output = writeParams(this.params, agg); - } + if (this.params) { + output = writeParams(this.params, agg); + } - const field = agg.getFieldDisplayName(); + const field = agg.getFieldDisplayName(); - return i18n.translate('data.search.aggs.buckets.dateHistogramLabel', { - defaultMessage: '{fieldName} per {intervalDescription}', - values: { - fieldName: field, - intervalDescription: output.metricScaleText || output.bucketInterval.description, - }, - }); - }, - createFilter: createFilterDateHistogram, - decorateAggConfig() { - let buckets: any; + return i18n.translate('data.search.aggs.buckets.dateHistogramLabel', { + defaultMessage: '{fieldName} per {intervalDescription}', + values: { + fieldName: field, + intervalDescription: output.metricScaleText || output.bucketInterval.description, + }, + }); + }, + createFilter: createFilterDateHistogram, + decorateAggConfig() { + let buckets: any; - return { - buckets: { - configurable: true, - get() { - if (buckets) return buckets; + return { + buckets: { + configurable: true, + get() { + if (buckets) return buckets; - buckets = new TimeBuckets({ - 'histogram:maxBars': uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), - 'histogram:barTarget': uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), - dateFormat: uiSettings.get('dateFormat'), - 'dateFormat:scaled': uiSettings.get('dateFormat:scaled'), - }); - updateTimeBuckets(this, calculateBounds, buckets); + buckets = new TimeBuckets({ + 'histogram:maxBars': uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), + 'histogram:barTarget': uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), + dateFormat: uiSettings.get('dateFormat'), + 'dateFormat:scaled': uiSettings.get('dateFormat:scaled'), + }); + updateTimeBuckets(this, calculateBounds, buckets); - return buckets; - }, - } as any, - }; - }, - getSerializedFormat(agg) { - return { - id: 'date', - params: { - pattern: agg.buckets.getScaledDateFormat(), - }, - }; - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.DATE, - default(agg: IBucketDateHistogramAggConfig) { - return agg.getIndexPattern().timeFieldName; - }, - onChange(agg: IBucketDateHistogramAggConfig) { - if (get(agg, 'params.interval') === 'auto' && !agg.fieldIsTimeField()) { - delete agg.params.interval; - } + return buckets; }, + } as any, + }; + }, + getSerializedFormat(agg) { + return { + id: 'date', + params: { + pattern: agg.buckets.getScaledDateFormat(), }, - { - name: 'timeRange', - default: null, - write: noop, - }, - { - name: 'useNormalizedEsInterval', - default: true, - write: noop, + }; + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.DATE, + default(agg: IBucketDateHistogramAggConfig) { + return agg.getIndexPattern().timeFieldName; }, - { - name: 'scaleMetricValues', - default: false, - write: noop, - advanced: true, + onChange(agg: IBucketDateHistogramAggConfig) { + if (get(agg, 'params.interval') === 'auto' && !agg.fieldIsTimeField()) { + delete agg.params.interval; + } }, - { - name: 'interval', - deserialize(state: any, agg) { - // For upgrading from 7.0.x to 7.1.x - intervals are now stored as key of options or custom value - if (state === 'custom') { - return get(agg, 'params.customInterval'); - } + }, + { + name: 'timeRange', + default: null, + write: noop, + }, + { + name: 'useNormalizedEsInterval', + default: true, + write: noop, + }, + { + name: 'scaleMetricValues', + default: false, + write: noop, + advanced: true, + }, + { + name: 'interval', + deserialize(state: any, agg) { + // For upgrading from 7.0.x to 7.1.x - intervals are now stored as key of options or custom value + if (state === 'custom') { + return get(agg, 'params.customInterval'); + } - const interval = find(intervalOptions, { val: state }); + const interval = find(intervalOptions, { val: state }); - // For upgrading from 4.0.x to 4.1.x - intervals are now stored as 'y' instead of 'year', - // but this maps the old values to the new values - if (!interval && state === 'year') { - return 'y'; - } - return state; - }, - default: 'auto', - options: intervalOptions, - write(agg, output, aggs) { - updateTimeBuckets(agg, calculateBounds); + // For upgrading from 4.0.x to 4.1.x - intervals are now stored as 'y' instead of 'year', + // but this maps the old values to the new values + if (!interval && state === 'year') { + return 'y'; + } + return state; + }, + default: 'auto', + options: intervalOptions, + write(agg, output, aggs) { + updateTimeBuckets(agg, calculateBounds); - const { useNormalizedEsInterval, scaleMetricValues } = agg.params; - const interval = agg.buckets.getInterval(useNormalizedEsInterval); - output.bucketInterval = interval; - if (interval.expression === '0ms') { - // We are hitting this code a couple of times while configuring in editor - // with an interval of 0ms because the overall time range has not yet been - // set. Since 0ms is not a valid ES interval, we cannot pass it through dateHistogramInterval - // below, since it would throw an exception. So in the cases we still have an interval of 0ms - // here we simply skip the rest of the method and never write an interval into the DSL, since - // this DSL will anyway not be used before we're passing this code with an actual interval. - return; - } - output.params = { - ...output.params, - ...dateHistogramInterval(interval.expression), - }; + const { useNormalizedEsInterval, scaleMetricValues } = agg.params; + const interval = agg.buckets.getInterval(useNormalizedEsInterval); + output.bucketInterval = interval; + if (interval.expression === '0ms') { + // We are hitting this code a couple of times while configuring in editor + // with an interval of 0ms because the overall time range has not yet been + // set. Since 0ms is not a valid ES interval, we cannot pass it through dateHistogramInterval + // below, since it would throw an exception. So in the cases we still have an interval of 0ms + // here we simply skip the rest of the method and never write an interval into the DSL, since + // this DSL will anyway not be used before we're passing this code with an actual interval. + return; + } + output.params = { + ...output.params, + ...dateHistogramInterval(interval.expression), + }; - const scaleMetrics = - scaleMetricValues && interval.scaled && interval.scale && interval.scale < 1; - if (scaleMetrics && aggs) { - const metrics = aggs.aggs.filter((a) => isMetricAggType(a.type)); - const all = every(metrics, (a: IBucketAggConfig) => { - const { type } = a; + const scaleMetrics = + scaleMetricValues && interval.scaled && interval.scale && interval.scale < 1; + if (scaleMetrics && aggs) { + const metrics = aggs.aggs.filter((a) => isMetricAggType(a.type)); + const all = every(metrics, (a: IBucketAggConfig) => { + const { type } = a; - if (isMetricAggType(type)) { - return type.isScalable(); - } - }); - if (all) { - output.metricScale = interval.scale; - output.metricScaleText = interval.preScaled?.description || ''; + if (isMetricAggType(type)) { + return type.isScalable(); } + }); + if (all) { + output.metricScale = interval.scale; + output.metricScaleText = interval.preScaled?.description || ''; } - }, - }, - { - name: 'time_zone', - default: undefined, - // We don't ever want this parameter to be serialized out (when saving or to URLs) - // since we do all the logic handling it "on the fly" in the `write` method, to prevent - // time_zones being persisted into saved_objects - serialize: noop, - write(agg, output) { - // If a time_zone has been set explicitly always prefer this. - let tz = agg.params.time_zone; - if (!tz && agg.params.field) { - // If a field has been configured check the index pattern's typeMeta if a date_histogram on that - // field requires a specific time_zone - tz = get(agg.getIndexPattern(), [ - 'typeMeta', - 'aggs', - 'date_histogram', - agg.params.field.name, - 'time_zone', - ]); - } - if (!tz) { - // If the index pattern typeMeta data, didn't had a time zone assigned for the selected field use the configured tz - const isDefaultTimezone = uiSettings.isDefault('dateFormat:tz'); - const detectedTimezone = moment.tz.guess(); - const tzOffset = moment().format('Z'); - tz = isDefaultTimezone - ? detectedTimezone || tzOffset - : uiSettings.get('dateFormat:tz'); - } - output.params.time_zone = tz; - }, - }, - { - name: 'drop_partials', - default: false, - write: noop, - shouldShow: (agg) => { - const field = agg.params.field; - return field && field.name && field.name === agg.getIndexPattern().timeFieldName; - }, + } }, - { - name: 'format', + }, + { + name: 'time_zone', + default: undefined, + // We don't ever want this parameter to be serialized out (when saving or to URLs) + // since we do all the logic handling it "on the fly" in the `write` method, to prevent + // time_zones being persisted into saved_objects + serialize: noop, + write(agg, output) { + // If a time_zone has been set explicitly always prefer this. + let tz = agg.params.time_zone; + if (!tz && agg.params.field) { + // If a field has been configured check the index pattern's typeMeta if a date_histogram on that + // field requires a specific time_zone + tz = get(agg.getIndexPattern(), [ + 'typeMeta', + 'aggs', + 'date_histogram', + agg.params.field.name, + 'time_zone', + ]); + } + if (!tz) { + // If the index pattern typeMeta data, didn't had a time zone assigned for the selected field use the configured tz + const isDefaultTimezone = uiSettings.isDefault('dateFormat:tz'); + const detectedTimezone = moment.tz.guess(); + const tzOffset = moment().format('Z'); + tz = isDefaultTimezone ? detectedTimezone || tzOffset : uiSettings.get('dateFormat:tz'); + } + output.params.time_zone = tz; }, - { - name: 'min_doc_count', - default: 1, + }, + { + name: 'drop_partials', + default: false, + write: noop, + shouldShow: (agg) => { + const field = agg.params.field; + return field && field.name && field.name === agg.getIndexPattern().timeFieldName; }, - { - name: 'extended_bounds', - default: {}, - write(agg, output) { - const val = agg.params.extended_bounds; + }, + { + name: 'format', + }, + { + name: 'min_doc_count', + default: 1, + }, + { + name: 'extended_bounds', + default: {}, + write(agg, output) { + const val = agg.params.extended_bounds; - if (val.min != null || val.max != null) { - output.params.extended_bounds = { - min: moment(val.min).valueOf(), - max: moment(val.max).valueOf(), - }; + if (val.min != null || val.max != null) { + output.params.extended_bounds = { + min: moment(val.min).valueOf(), + max: moment(val.max).valueOf(), + }; - return; - } - }, + return; + } }, - ], - }, - { getInternalStartServices } - ); + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/date_histogram_fn.ts b/src/plugins/data/public/search/aggs/buckets/date_histogram_fn.ts index 033b44da0880f..1cc5b41fa6bb3 100644 --- a/src/plugins/data/public/search/aggs/buckets/date_histogram_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/date_histogram_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/date_range.test.ts b/src/plugins/data/public/search/aggs/buckets/date_range.test.ts index 0829d6e9cdc9f..69515dfee87fe 100644 --- a/src/plugins/data/public/search/aggs/buckets/date_range.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/date_range.test.ts @@ -17,13 +17,11 @@ * under the License. */ -import { coreMock, notificationServiceMock } from '../../../../../../../src/core/public/mocks'; +import { coreMock } from '../../../../../../../src/core/public/mocks'; import { getDateRangeBucketAgg, DateRangeBucketAggDependencies } from './date_range'; import { AggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { BUCKET_TYPES } from './bucket_agg_types'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { InternalStartServices } from '../../../types'; describe('date_range params', () => { let aggTypesDependencies: DateRangeBucketAggDependencies; @@ -31,14 +29,7 @@ describe('date_range params', () => { beforeEach(() => { const { uiSettings } = coreMock.createSetup(); - aggTypesDependencies = { - uiSettings, - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; + aggTypesDependencies = { uiSettings }; }); const getAggConfigs = (params: Record = {}, hasIncludeTypeMeta: boolean = true) => { diff --git a/src/plugins/data/public/search/aggs/buckets/date_range.ts b/src/plugins/data/public/search/aggs/buckets/date_range.ts index dbcf5517fb08f..8c576023f0239 100644 --- a/src/plugins/data/public/search/aggs/buckets/date_range.ts +++ b/src/plugins/data/public/search/aggs/buckets/date_range.ts @@ -28,7 +28,6 @@ import { createFilterDateRange } from './create_filter/date_range'; import { DateRangeKey } from './lib/date_range'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const dateRangeTitle = i18n.translate('data.search.aggs.buckets.dateRangeTitle', { @@ -37,7 +36,6 @@ const dateRangeTitle = i18n.translate('data.search.aggs.buckets.dateRangeTitle', export interface DateRangeBucketAggDependencies { uiSettings: IUiSettingsClient; - getInternalStartServices: GetInternalStartServicesFn; } export interface AggParamsDateRange extends BaseAggParams { @@ -46,76 +44,68 @@ export interface AggParamsDateRange extends BaseAggParams { time_zone?: string; } -export const getDateRangeBucketAgg = ({ - uiSettings, - getInternalStartServices, -}: DateRangeBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.DATE_RANGE, - title: dateRangeTitle, - createFilter: createFilterDateRange, - getKey({ from, to }): DateRangeKey { - return { from, to }; - }, - getSerializedFormat(agg) { - return { - id: 'date_range', - params: agg.params.field ? agg.params.field.format.toJSON() : {}, - }; - }, - makeLabel(aggConfig) { - return aggConfig.getFieldDisplayName() + ' date ranges'; +export const getDateRangeBucketAgg = ({ uiSettings }: DateRangeBucketAggDependencies) => + new BucketAggType({ + name: BUCKET_TYPES.DATE_RANGE, + title: dateRangeTitle, + createFilter: createFilterDateRange, + getKey({ from, to }): DateRangeKey { + return { from, to }; + }, + getSerializedFormat(agg) { + return { + id: 'date_range', + params: agg.params.field ? agg.params.field.format.toJSON() : {}, + }; + }, + makeLabel(aggConfig) { + return aggConfig.getFieldDisplayName() + ' date ranges'; + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.DATE, + default(agg: IBucketAggConfig) { + return agg.getIndexPattern().timeFieldName; + }, }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.DATE, - default(agg: IBucketAggConfig) { - return agg.getIndexPattern().timeFieldName; + { + name: 'ranges', + default: [ + { + from: 'now-1w/w', + to: 'now', }, - }, - { - name: 'ranges', - default: [ - { - from: 'now-1w/w', - to: 'now', - }, - ], - }, - { - name: 'time_zone', - default: undefined, - // Implimentation method is the same as that of date_histogram - serialize: () => undefined, - write: (agg, output) => { - const field = agg.getParam('field'); - let tz = agg.getParam('time_zone'); + ], + }, + { + name: 'time_zone', + default: undefined, + // Implimentation method is the same as that of date_histogram + serialize: () => undefined, + write: (agg, output) => { + const field = agg.getParam('field'); + let tz = agg.getParam('time_zone'); - if (!tz && field) { - tz = get(agg.getIndexPattern(), [ - 'typeMeta', - 'aggs', - 'date_range', - field.name, - 'time_zone', - ]); - } - if (!tz) { - const detectedTimezone = moment.tz.guess(); - const tzOffset = moment().format('Z'); - const isDefaultTimezone = uiSettings.isDefault('dateFormat:tz'); + if (!tz && field) { + tz = get(agg.getIndexPattern(), [ + 'typeMeta', + 'aggs', + 'date_range', + field.name, + 'time_zone', + ]); + } + if (!tz) { + const detectedTimezone = moment.tz.guess(); + const tzOffset = moment().format('Z'); + const isDefaultTimezone = uiSettings.isDefault('dateFormat:tz'); - tz = isDefaultTimezone - ? detectedTimezone || tzOffset - : uiSettings.get('dateFormat:tz'); - } - output.params.time_zone = tz; - }, + tz = isDefaultTimezone ? detectedTimezone || tzOffset : uiSettings.get('dateFormat:tz'); + } + output.params.time_zone = tz; }, - ], - }, - { getInternalStartServices } - ); + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/date_range_fn.ts b/src/plugins/data/public/search/aggs/buckets/date_range_fn.ts index 1fe42ce63d815..5027aadbb7331 100644 --- a/src/plugins/data/public/search/aggs/buckets/date_range_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/date_range_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/filter.ts b/src/plugins/data/public/search/aggs/buckets/filter.ts index d048df9f0e43e..5d146e125b996 100644 --- a/src/plugins/data/public/search/aggs/buckets/filter.ts +++ b/src/plugins/data/public/search/aggs/buckets/filter.ts @@ -20,7 +20,6 @@ import { i18n } from '@kbn/i18n'; import { BucketAggType } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; -import { GetInternalStartServicesFn } from '../../../types'; import { GeoBoundingBox } from './lib/geo_point'; import { BaseAggParams } from '../types'; @@ -28,25 +27,18 @@ const filterTitle = i18n.translate('data.search.aggs.buckets.filterTitle', { defaultMessage: 'Filter', }); -export interface FilterBucketAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export interface AggParamsFilter extends BaseAggParams { geo_bounding_box?: GeoBoundingBox; } -export const getFilterBucketAgg = ({ getInternalStartServices }: FilterBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.FILTER, - title: filterTitle, - makeLabel: () => filterTitle, - params: [ - { - name: 'geo_bounding_box', - }, - ], - }, - { getInternalStartServices } - ); +export const getFilterBucketAgg = () => + new BucketAggType({ + name: BUCKET_TYPES.FILTER, + title: filterTitle, + makeLabel: () => filterTitle, + params: [ + { + name: 'geo_bounding_box', + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/filter_fn.ts b/src/plugins/data/public/search/aggs/buckets/filter_fn.ts index 4a7180fc86c71..ae60da3e8a47c 100644 --- a/src/plugins/data/public/search/aggs/buckets/filter_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/filter_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/filters.test.ts b/src/plugins/data/public/search/aggs/buckets/filters.test.ts index 7554e4081726c..bcb82b5f99649 100644 --- a/src/plugins/data/public/search/aggs/buckets/filters.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/filters.test.ts @@ -18,13 +18,11 @@ */ import { Query } from '../../../../common'; -import { coreMock, notificationServiceMock } from '../../../../../../../src/core/public/mocks'; +import { coreMock } from '../../../../../../../src/core/public/mocks'; import { AggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { BUCKET_TYPES } from './bucket_agg_types'; import { getFiltersBucketAgg, FiltersBucketAggDependencies } from './filters'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { InternalStartServices } from '../../../types'; describe('Filters Agg', () => { let aggTypesDependencies: FiltersBucketAggDependencies; @@ -33,14 +31,7 @@ describe('Filters Agg', () => { jest.resetAllMocks(); const { uiSettings } = coreMock.createSetup(); - aggTypesDependencies = { - uiSettings, - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; + aggTypesDependencies = { uiSettings }; }); describe('order agg editor UI', () => { diff --git a/src/plugins/data/public/search/aggs/buckets/filters.ts b/src/plugins/data/public/search/aggs/buckets/filters.ts index cb17ef07a930b..cd4ed721fda77 100644 --- a/src/plugins/data/public/search/aggs/buckets/filters.ts +++ b/src/plugins/data/public/search/aggs/buckets/filters.ts @@ -25,10 +25,7 @@ import { createFilterFilters } from './create_filter/filters'; import { toAngularJSON } from '../utils'; import { BucketAggType } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; -import { Storage } from '../../../../../../plugins/kibana_utils/public'; import { getEsQueryConfig, buildEsQuery, Query, UI_SETTINGS } from '../../../../common'; -import { getQueryLog } from '../../../query'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const filtersTitle = i18n.translate('data.search.aggs.buckets.filtersTitle', { @@ -45,7 +42,6 @@ interface FilterValue { export interface FiltersBucketAggDependencies { uiSettings: IUiSettingsClient; - getInternalStartServices: GetInternalStartServicesFn; } export interface AggParamsFilters extends Omit { @@ -55,81 +51,60 @@ export interface AggParamsFilters extends Omit { }>; } -export const getFiltersBucketAgg = ({ - uiSettings, - getInternalStartServices, -}: FiltersBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.FILTERS, - title: filtersTitle, - createFilter: createFilterFilters, - customLabels: false, - params: [ - { - name: 'filters', - default: [ - { - input: { query: '', language: uiSettings.get(UI_SETTINGS.SEARCH_QUERY_LANGUAGE) }, - label: '', - }, - ], - write(aggConfig, output) { - const inFilters: FilterValue[] = aggConfig.params.filters; - if (!size(inFilters)) return; - - inFilters.forEach((filter) => { - const persistedLog = getQueryLog( - uiSettings, - new Storage(window.localStorage), - 'vis_default_editor', - filter.input.language - ); - persistedLog.add(filter.input.query); - }); +export const getFiltersBucketAgg = ({ uiSettings }: FiltersBucketAggDependencies) => + new BucketAggType({ + name: BUCKET_TYPES.FILTERS, + title: filtersTitle, + createFilter: createFilterFilters, + customLabels: false, + params: [ + { + name: 'filters', + default: [ + { + input: { query: '', language: uiSettings.get(UI_SETTINGS.SEARCH_QUERY_LANGUAGE) }, + label: '', + }, + ], + write(aggConfig, output) { + const inFilters: FilterValue[] = aggConfig.params.filters; + if (!size(inFilters)) return; - const outFilters = transform( - inFilters, - function (filters: any, filter) { - const input = cloneDeep(filter.input); + const outFilters = transform( + inFilters, + function (filters: Record, filter) { + const input = cloneDeep(filter.input); - if (!input) { - console.log('malformed filter agg params, missing "input" query'); // eslint-disable-line no-console - return; - } + if (!input) { + console.log('malformed filter agg params, missing "input" query'); // eslint-disable-line no-console + return; + } - const esQueryConfigs = getEsQueryConfig(uiSettings); - const query = buildEsQuery( - aggConfig.getIndexPattern(), - [input], - [], - esQueryConfigs - ); + const esQueryConfigs = getEsQueryConfig(uiSettings); + const query = buildEsQuery(aggConfig.getIndexPattern(), [input], [], esQueryConfigs); - if (!query) { - console.log('malformed filter agg params, missing "query" on input'); // eslint-disable-line no-console - return; - } + if (!query) { + console.log('malformed filter agg params, missing "query" on input'); // eslint-disable-line no-console + return; + } - const matchAllLabel = filter.input.query === '' ? '*' : ''; - const label = - filter.label || - matchAllLabel || - (typeof filter.input.query === 'string' - ? filter.input.query - : toAngularJSON(filter.input.query)); - filters[label] = query; - }, - {} - ); + const matchAllLabel = filter.input.query === '' ? '*' : ''; + const label = + filter.label || + matchAllLabel || + (typeof filter.input.query === 'string' + ? filter.input.query + : toAngularJSON(filter.input.query)); + filters[label] = query; + }, + {} + ); - if (!size(outFilters)) return; + if (!size(outFilters)) return; - const params = output.params || (output.params = {}); - params.filters = outFilters; - }, + const params = output.params || (output.params = {}); + params.filters = outFilters; }, - ], - }, - { getInternalStartServices } - ); + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/filters_fn.ts b/src/plugins/data/public/search/aggs/buckets/filters_fn.ts index 6ffd5369d7087..55380ea815315 100644 --- a/src/plugins/data/public/search/aggs/buckets/filters_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/filters_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/geo_hash.test.ts b/src/plugins/data/public/search/aggs/buckets/geo_hash.test.ts index d4c0a5b328844..e77d2bf1eaf5f 100644 --- a/src/plugins/data/public/search/aggs/buckets/geo_hash.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/geo_hash.test.ts @@ -17,29 +17,17 @@ * under the License. */ -import { getGeoHashBucketAgg, GeoHashBucketAggDependencies } from './geo_hash'; +import { getGeoHashBucketAgg } from './geo_hash'; import { AggConfigs, IAggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { BUCKET_TYPES } from './bucket_agg_types'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; -import { InternalStartServices } from '../../../types'; describe('Geohash Agg', () => { - let aggTypesDependencies: GeoHashBucketAggDependencies; let geoHashBucketAgg: BucketAggType; beforeEach(() => { - aggTypesDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - - geoHashBucketAgg = getGeoHashBucketAgg(aggTypesDependencies); + geoHashBucketAgg = getGeoHashBucketAgg(); }); const getAggConfigs = (params?: Record) => { diff --git a/src/plugins/data/public/search/aggs/buckets/geo_hash.ts b/src/plugins/data/public/search/aggs/buckets/geo_hash.ts index fbe7c76681f81..a0ef8a27b0d1e 100644 --- a/src/plugins/data/public/search/aggs/buckets/geo_hash.ts +++ b/src/plugins/data/public/search/aggs/buckets/geo_hash.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { KBN_FIELD_TYPES } from '../../../../common'; import { BUCKET_TYPES } from './bucket_agg_types'; -import { GetInternalStartServicesFn } from '../../../types'; import { GeoBoundingBox } from './lib/geo_point'; import { BaseAggParams } from '../types'; @@ -36,10 +35,6 @@ const geohashGridTitle = i18n.translate('data.search.aggs.buckets.geohashGridTit defaultMessage: 'Geohash', }); -export interface GeoHashBucketAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export interface AggParamsGeoHash extends BaseAggParams { field: string; autoPrecision?: boolean; @@ -49,88 +44,85 @@ export interface AggParamsGeoHash extends BaseAggParams { boundingBox?: GeoBoundingBox; } -export const getGeoHashBucketAgg = ({ getInternalStartServices }: GeoHashBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.GEOHASH_GRID, - title: geohashGridTitle, - makeLabel: () => geohashGridTitle, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, - }, - { - name: 'autoPrecision', - default: true, - write: () => {}, - }, - { - name: 'precision', - default: defaultPrecision, - write(aggConfig, output) { - output.params.precision = aggConfig.params.precision; - }, - }, - { - name: 'useGeocentroid', - default: true, - write: () => {}, - }, - { - name: 'isFilteredByCollar', - default: true, - write: () => {}, - }, - { - name: 'boundingBox', - default: null, - write: () => {}, +export const getGeoHashBucketAgg = () => + new BucketAggType({ + name: BUCKET_TYPES.GEOHASH_GRID, + title: geohashGridTitle, + makeLabel: () => geohashGridTitle, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, + }, + { + name: 'autoPrecision', + default: true, + write: () => {}, + }, + { + name: 'precision', + default: defaultPrecision, + write(aggConfig, output) { + output.params.precision = aggConfig.params.precision; }, - ], - getRequestAggs(agg) { - const aggs = []; - const params = agg.params; + }, + { + name: 'useGeocentroid', + default: true, + write: () => {}, + }, + { + name: 'isFilteredByCollar', + default: true, + write: () => {}, + }, + { + name: 'boundingBox', + default: null, + write: () => {}, + }, + ], + getRequestAggs(agg) { + const aggs = []; + const params = agg.params; - if (params.isFilteredByCollar && agg.getField()) { - aggs.push( - agg.aggConfigs.createAggConfig( - { - type: 'filter', - id: 'filter_agg', - enabled: true, - params: { - geo_bounding_box: { - ignore_unmapped: true, - [agg.getField().name]: params.boundingBox || defaultBoundingBox, - }, + if (params.isFilteredByCollar && agg.getField()) { + aggs.push( + agg.aggConfigs.createAggConfig( + { + type: 'filter', + id: 'filter_agg', + enabled: true, + params: { + geo_bounding_box: { + ignore_unmapped: true, + [agg.getField().name]: params.boundingBox || defaultBoundingBox, }, - } as any, - { addToAggConfigs: false } - ) - ); - } + }, + } as any, + { addToAggConfigs: false } + ) + ); + } - aggs.push(agg); + aggs.push(agg); - if (params.useGeocentroid) { - aggs.push( - agg.aggConfigs.createAggConfig( - { - type: 'geo_centroid', - enabled: true, - params: { - field: agg.getField(), - }, + if (params.useGeocentroid) { + aggs.push( + agg.aggConfigs.createAggConfig( + { + type: 'geo_centroid', + enabled: true, + params: { + field: agg.getField(), }, - { addToAggConfigs: false } - ) - ); - } + }, + { addToAggConfigs: false } + ) + ); + } - return aggs; - }, + return aggs; }, - { getInternalStartServices } - ); + }); diff --git a/src/plugins/data/public/search/aggs/buckets/geo_hash_fn.ts b/src/plugins/data/public/search/aggs/buckets/geo_hash_fn.ts index bbfa8575d486c..5152804bf8122 100644 --- a/src/plugins/data/public/search/aggs/buckets/geo_hash_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/geo_hash_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/geo_tile.ts b/src/plugins/data/public/search/aggs/buckets/geo_tile.ts index 1212bba23a93a..e6eff1e1a5d8e 100644 --- a/src/plugins/data/public/search/aggs/buckets/geo_tile.ts +++ b/src/plugins/data/public/search/aggs/buckets/geo_tile.ts @@ -24,13 +24,8 @@ import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; import { METRIC_TYPES } from '../metrics/metric_agg_types'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; -export interface GeoTitleBucketAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const geotileGridTitle = i18n.translate('data.search.aggs.buckets.geotileGridTitle', { defaultMessage: 'Geotile', }); @@ -41,47 +36,44 @@ export interface AggParamsGeoTile extends BaseAggParams { precision?: number; } -export const getGeoTitleBucketAgg = ({ getInternalStartServices }: GeoTitleBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.GEOTILE_GRID, - title: geotileGridTitle, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, - }, - { - name: 'useGeocentroid', - default: true, - write: noop, - }, - { - name: 'precision', - default: 0, - }, - ], - getRequestAggs(agg) { - const aggs = []; - const useGeocentroid = agg.getParam('useGeocentroid'); +export const getGeoTitleBucketAgg = () => + new BucketAggType({ + name: BUCKET_TYPES.GEOTILE_GRID, + title: geotileGridTitle, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, + }, + { + name: 'useGeocentroid', + default: true, + write: noop, + }, + { + name: 'precision', + default: 0, + }, + ], + getRequestAggs(agg) { + const aggs = []; + const useGeocentroid = agg.getParam('useGeocentroid'); - aggs.push(agg); + aggs.push(agg); - if (useGeocentroid) { - const aggConfig = { - type: METRIC_TYPES.GEO_CENTROID, - enabled: true, - params: { - field: agg.getField(), - }, - }; + if (useGeocentroid) { + const aggConfig = { + type: METRIC_TYPES.GEO_CENTROID, + enabled: true, + params: { + field: agg.getField(), + }, + }; - aggs.push(agg.aggConfigs.createAggConfig(aggConfig, { addToAggConfigs: false })); - } + aggs.push(agg.aggConfigs.createAggConfig(aggConfig, { addToAggConfigs: false })); + } - return aggs as IBucketAggConfig[]; - }, + return aggs as IBucketAggConfig[]; }, - { getInternalStartServices } - ); + }); diff --git a/src/plugins/data/public/search/aggs/buckets/geo_tile_fn.ts b/src/plugins/data/public/search/aggs/buckets/geo_tile_fn.ts index 9c33ef45762af..ed3142408892a 100644 --- a/src/plugins/data/public/search/aggs/buckets/geo_tile_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/geo_tile_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/histogram.test.ts b/src/plugins/data/public/search/aggs/buckets/histogram.test.ts index 787603ee14361..6ac77f207d9ce 100644 --- a/src/plugins/data/public/search/aggs/buckets/histogram.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/histogram.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { coreMock, notificationServiceMock } from '../../../../../../../src/core/public/mocks'; +import { coreMock } from '../../../../../../../src/core/public/mocks'; import { AggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { BUCKET_TYPES } from './bucket_agg_types'; @@ -42,7 +42,6 @@ describe('Histogram Agg', () => { getInternalStartServices: () => (({ fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), } as unknown) as InternalStartServices), }; }); diff --git a/src/plugins/data/public/search/aggs/buckets/histogram.ts b/src/plugins/data/public/search/aggs/buckets/histogram.ts index ce275e2dc1639..500b6eab75d77 100644 --- a/src/plugins/data/public/search/aggs/buckets/histogram.ts +++ b/src/plugins/data/public/search/aggs/buckets/histogram.ts @@ -57,165 +57,162 @@ export const getHistogramBucketAgg = ({ uiSettings, getInternalStartServices, }: HistogramBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.HISTOGRAM, - title: i18n.translate('data.search.aggs.buckets.histogramTitle', { - defaultMessage: 'Histogram', - }), - ordered: {}, - makeLabel(aggConfig) { - return aggConfig.getFieldDisplayName(); - }, - createFilter: createFilterHistogram(getInternalStartServices), - decorateAggConfig() { - let autoBounds: AutoBounds; - - return { - setAutoBounds: { - configurable: true, - value(newValue: AutoBounds) { - autoBounds = newValue; - }, - }, - getAutoBounds: { - configurable: true, - value() { - return autoBounds; - }, + new BucketAggType({ + name: BUCKET_TYPES.HISTOGRAM, + title: i18n.translate('data.search.aggs.buckets.histogramTitle', { + defaultMessage: 'Histogram', + }), + ordered: {}, + makeLabel(aggConfig) { + return aggConfig.getFieldDisplayName(); + }, + createFilter: createFilterHistogram(getInternalStartServices), + decorateAggConfig() { + let autoBounds: AutoBounds; + + return { + setAutoBounds: { + configurable: true, + value(newValue: AutoBounds) { + autoBounds = newValue; }, - }; - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.NUMBER, }, - { - /* - * This parameter can be set if you want the auto scaled interval to always - * be a multiple of a specific base. - */ - name: 'intervalBase', - default: null, - write: () => {}, + getAutoBounds: { + configurable: true, + value() { + return autoBounds; + }, }, - { - name: 'interval', - modifyAggConfigOnSearchRequestStart( - aggConfig: IBucketHistogramAggConfig, - searchSource: any, - options: any - ) { - const field = aggConfig.getField(); - const aggBody = field.scripted - ? { script: { source: field.script, lang: field.lang } } - : { field: field.name }; - - const childSearchSource = searchSource - .createChild() - .setField('size', 0) - .setField('aggs', { - maxAgg: { - max: aggBody, - }, - minAgg: { - min: aggBody, - }, - }); - - return childSearchSource - .fetch(options) - .then((resp: any) => { - aggConfig.setAutoBounds({ - min: get(resp, 'aggregations.minAgg.value'), - max: get(resp, 'aggregations.maxAgg.value'), - }); - }) - .catch((e: Error) => { - if (e.name === 'AbortError') return; - getInternalStartServices().notifications.toasts.addWarning( - i18n.translate('data.search.aggs.histogram.missingMaxMinValuesWarning', { - defaultMessage: - 'Unable to retrieve max and min values to auto-scale histogram buckets. This may lead to poor visualization performance.', - }) - ); + }; + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.NUMBER, + }, + { + /* + * This parameter can be set if you want the auto scaled interval to always + * be a multiple of a specific base. + */ + name: 'intervalBase', + default: null, + write: () => {}, + }, + { + name: 'interval', + modifyAggConfigOnSearchRequestStart( + aggConfig: IBucketHistogramAggConfig, + searchSource: any, + options: any + ) { + const field = aggConfig.getField(); + const aggBody = field.scripted + ? { script: { source: field.script, lang: field.lang } } + : { field: field.name }; + + const childSearchSource = searchSource + .createChild() + .setField('size', 0) + .setField('aggs', { + maxAgg: { + max: aggBody, + }, + minAgg: { + min: aggBody, + }, + }); + + return childSearchSource + .fetch(options) + .then((resp: any) => { + aggConfig.setAutoBounds({ + min: get(resp, 'aggregations.minAgg.value'), + max: get(resp, 'aggregations.maxAgg.value'), }); - }, - write(aggConfig, output) { - let interval = parseFloat(aggConfig.params.interval); - if (interval <= 0) { - interval = 1; - } - const autoBounds = aggConfig.getAutoBounds(); - - // ensure interval does not create too many buckets and crash browser - if (autoBounds) { - const range = autoBounds.max - autoBounds.min; - const bars = range / interval; - - if (bars > uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS)) { - const minInterval = range / uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS); - - // Round interval by order of magnitude to provide clean intervals - // Always round interval up so there will always be less buckets than histogram:maxBars - const orderOfMagnitude = Math.pow(10, Math.floor(Math.log10(minInterval))); - let roundInterval = orderOfMagnitude; - - while (roundInterval < minInterval) { - roundInterval += orderOfMagnitude; - } - interval = roundInterval; + }) + .catch((e: Error) => { + if (e.name === 'AbortError') return; + throw new Error( + i18n.translate('data.search.aggs.histogram.missingMaxMinValuesWarning', { + defaultMessage: + 'Unable to retrieve max and min values to auto-scale histogram buckets. This may lead to poor visualization performance.', + }) + ); + }); + }, + write(aggConfig, output) { + let interval = parseFloat(aggConfig.params.interval); + if (interval <= 0) { + interval = 1; + } + const autoBounds = aggConfig.getAutoBounds(); + + // ensure interval does not create too many buckets and crash browser + if (autoBounds) { + const range = autoBounds.max - autoBounds.min; + const bars = range / interval; + + if (bars > uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS)) { + const minInterval = range / uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS); + + // Round interval by order of magnitude to provide clean intervals + // Always round interval up so there will always be less buckets than histogram:maxBars + const orderOfMagnitude = Math.pow(10, Math.floor(Math.log10(minInterval))); + let roundInterval = orderOfMagnitude; + + while (roundInterval < minInterval) { + roundInterval += orderOfMagnitude; } + interval = roundInterval; } - const base = aggConfig.params.intervalBase; - - if (base) { - if (interval < base) { - // In case the specified interval is below the base, just increase it to it's base - interval = base; - } else if (interval % base !== 0) { - // In case the interval is not a multiple of the base round it to the next base - interval = Math.round(interval / base) * base; - } + } + const base = aggConfig.params.intervalBase; + + if (base) { + if (interval < base) { + // In case the specified interval is below the base, just increase it to it's base + interval = base; + } else if (interval % base !== 0) { + // In case the interval is not a multiple of the base round it to the next base + interval = Math.round(interval / base) * base; } + } - output.params.interval = interval; - }, + output.params.interval = interval; }, - { - name: 'min_doc_count', - default: false, - write(aggConfig, output) { - if (aggConfig.params.min_doc_count) { - output.params.min_doc_count = 0; - } else { - output.params.min_doc_count = 1; - } - }, + }, + { + name: 'min_doc_count', + default: false, + write(aggConfig, output) { + if (aggConfig.params.min_doc_count) { + output.params.min_doc_count = 0; + } else { + output.params.min_doc_count = 1; + } }, - { - name: 'has_extended_bounds', - default: false, - write: () => {}, + }, + { + name: 'has_extended_bounds', + default: false, + write: () => {}, + }, + { + name: 'extended_bounds', + default: { + min: '', + max: '', }, - { - name: 'extended_bounds', - default: { - min: '', - max: '', - }, - write(aggConfig, output) { - const { min, max } = aggConfig.params.extended_bounds; + write(aggConfig, output) { + const { min, max } = aggConfig.params.extended_bounds; - if (aggConfig.params.has_extended_bounds && (min || min === 0) && (max || max === 0)) { - output.params.extended_bounds = { min, max }; - } - }, - shouldShow: (aggConfig: IBucketAggConfig) => aggConfig.params.has_extended_bounds, + if (aggConfig.params.has_extended_bounds && (min || min === 0) && (max || max === 0)) { + output.params.extended_bounds = { min, max }; + } }, - ], - }, - { getInternalStartServices } - ); + shouldShow: (aggConfig: IBucketAggConfig) => aggConfig.params.has_extended_bounds, + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/histogram_fn.ts b/src/plugins/data/public/search/aggs/buckets/histogram_fn.ts index 1e5a5a72c0ecb..877fd13e59f87 100644 --- a/src/plugins/data/public/search/aggs/buckets/histogram_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/histogram_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/ip_range.ts b/src/plugins/data/public/search/aggs/buckets/ip_range.ts index ed9bc5e0462f1..46e0b62d0f8d7 100644 --- a/src/plugins/data/public/search/aggs/buckets/ip_range.ts +++ b/src/plugins/data/public/search/aggs/buckets/ip_range.ts @@ -25,7 +25,6 @@ import { BUCKET_TYPES } from './bucket_agg_types'; import { createFilterIpRange } from './create_filter/ip_range'; import { IpRangeKey, RangeIpRangeAggKey, CidrMaskIpRangeAggKey } from './lib/ip_range'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const ipRangeTitle = i18n.translate('data.search.aggs.buckets.ipRangeTitle', { @@ -37,10 +36,6 @@ export enum IP_RANGE_TYPES { MASK = 'mask', } -export interface IpRangeBucketAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export interface AggParamsIpRange extends BaseAggParams { field: string; ipRangeType?: IP_RANGE_TYPES; @@ -50,64 +45,61 @@ export interface AggParamsIpRange extends BaseAggParams { }>; } -export const getIpRangeBucketAgg = ({ getInternalStartServices }: IpRangeBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.IP_RANGE, - title: ipRangeTitle, - createFilter: createFilterIpRange, - getKey(bucket, key, agg): IpRangeKey { - if (agg.params.ipRangeType === IP_RANGE_TYPES.MASK) { - return { type: 'mask', mask: key }; - } - return { type: 'range', from: bucket.from, to: bucket.to }; - }, - getSerializedFormat(agg) { - return { - id: 'ip_range', - params: agg.params.field ? agg.params.field.format.toJSON() : {}, - }; +export const getIpRangeBucketAgg = () => + new BucketAggType({ + name: BUCKET_TYPES.IP_RANGE, + title: ipRangeTitle, + createFilter: createFilterIpRange, + getKey(bucket, key, agg): IpRangeKey { + if (agg.params.ipRangeType === IP_RANGE_TYPES.MASK) { + return { type: 'mask', mask: key }; + } + return { type: 'range', from: bucket.from, to: bucket.to }; + }, + getSerializedFormat(agg) { + return { + id: 'ip_range', + params: agg.params.field ? agg.params.field.format.toJSON() : {}, + }; + }, + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.buckets.ipRangeLabel', { + defaultMessage: '{fieldName} IP ranges', + values: { + fieldName: aggConfig.getFieldDisplayName(), + }, + }); + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.IP, }, - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.buckets.ipRangeLabel', { - defaultMessage: '{fieldName} IP ranges', - values: { - fieldName: aggConfig.getFieldDisplayName(), - }, - }); + { + name: 'ipRangeType', + default: IP_RANGE_TYPES.FROM_TO, + write: noop, }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.IP, - }, - { - name: 'ipRangeType', - default: IP_RANGE_TYPES.FROM_TO, - write: noop, + { + name: 'ranges', + default: { + fromTo: [ + { from: '0.0.0.0', to: '127.255.255.255' }, + { from: '128.0.0.0', to: '191.255.255.255' }, + ], + mask: [{ mask: '0.0.0.0/1' }, { mask: '128.0.0.0/2' }], }, - { - name: 'ranges', - default: { - fromTo: [ - { from: '0.0.0.0', to: '127.255.255.255' }, - { from: '128.0.0.0', to: '191.255.255.255' }, - ], - mask: [{ mask: '0.0.0.0/1' }, { mask: '128.0.0.0/2' }], - }, - write(aggConfig, output) { - const ipRangeType = aggConfig.params.ipRangeType; - let ranges = aggConfig.params.ranges[ipRangeType]; + write(aggConfig, output) { + const ipRangeType = aggConfig.params.ipRangeType; + let ranges = aggConfig.params.ranges[ipRangeType]; - if (ipRangeType === IP_RANGE_TYPES.FROM_TO) { - ranges = map(ranges, (range: any) => omitBy(range, isNull)); - } + if (ipRangeType === IP_RANGE_TYPES.FROM_TO) { + ranges = map(ranges, (range: any) => omitBy(range, isNull)); + } - output.params.ranges = ranges; - }, + output.params.ranges = ranges; }, - ], - }, - { getInternalStartServices } - ); + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/ip_range_fn.ts b/src/plugins/data/public/search/aggs/buckets/ip_range_fn.ts index 554a8708d9164..15b763fd42d6b 100644 --- a/src/plugins/data/public/search/aggs/buckets/ip_range_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/ip_range_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/lib/cidr_mask.ts b/src/plugins/data/public/search/aggs/buckets/lib/cidr_mask.ts index 4535b5f5c5dd2..57a7b378f305f 100644 --- a/src/plugins/data/public/search/aggs/buckets/lib/cidr_mask.ts +++ b/src/plugins/data/public/search/aggs/buckets/lib/cidr_mask.ts @@ -17,7 +17,7 @@ * under the License. */ -import { Ipv4Address } from '../../../../../../../plugins/kibana_utils/public'; +import { Ipv4Address } from '../../../../../common'; const NUM_BITS = 32; diff --git a/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts b/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts index af3c15167295c..ae7630ecd3dac 100644 --- a/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/lib/time_buckets/time_buckets.test.ts @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + import moment from 'moment'; import { TimeBuckets, TimeBucketsConfig } from './time_buckets'; diff --git a/src/plugins/data/public/search/aggs/buckets/range.test.ts b/src/plugins/data/public/search/aggs/buckets/range.test.ts index fea5572b75795..f7c61a638158c 100644 --- a/src/plugins/data/public/search/aggs/buckets/range.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/range.test.ts @@ -19,10 +19,10 @@ import { getRangeBucketAgg, RangeBucketAggDependencies } from './range'; import { AggConfigs } from '../agg_configs'; -import { mockDataServices, mockAggTypesRegistry } from '../test_helpers'; +import { mockAggTypesRegistry } from '../test_helpers'; import { BUCKET_TYPES } from './bucket_agg_types'; import { FieldFormatsGetConfigFn, NumberFormat } from '../../../../common'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; +import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; import { InternalStartServices } from '../../../types'; describe('Range Agg', () => { @@ -32,11 +32,9 @@ describe('Range Agg', () => { aggTypesDependencies = { getInternalStartServices: () => (({ - notifications: notificationServiceMock.createStartContract(), + fieldFormats: fieldFormatsServiceMock.createStartContract(), } as unknown) as InternalStartServices), }; - - mockDataServices(); }); const getConfig = (() => {}) as FieldFormatsGetConfigFn; diff --git a/src/plugins/data/public/search/aggs/buckets/range.ts b/src/plugins/data/public/search/aggs/buckets/range.ts index 92c5193d55a20..9f54f9fd0704e 100644 --- a/src/plugins/data/public/search/aggs/buckets/range.ts +++ b/src/plugins/data/public/search/aggs/buckets/range.ts @@ -45,66 +45,63 @@ export interface AggParamsRange extends BaseAggParams { export const getRangeBucketAgg = ({ getInternalStartServices }: RangeBucketAggDependencies) => { const keyCaches = new WeakMap(); - return new BucketAggType( - { - name: BUCKET_TYPES.RANGE, - title: rangeTitle, - createFilter: createFilterRange(getInternalStartServices), - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.aggTypesLabel', { - defaultMessage: '{fieldName} ranges', - values: { - fieldName: aggConfig.getFieldDisplayName(), - }, - }); - }, - getKey(bucket, key, agg) { - let keys = keyCaches.get(agg); + return new BucketAggType({ + name: BUCKET_TYPES.RANGE, + title: rangeTitle, + createFilter: createFilterRange(getInternalStartServices), + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.aggTypesLabel', { + defaultMessage: '{fieldName} ranges', + values: { + fieldName: aggConfig.getFieldDisplayName(), + }, + }); + }, + getKey(bucket, key, agg) { + let keys = keyCaches.get(agg); - if (!keys) { - keys = new Map(); - keyCaches.set(agg, keys); - } + if (!keys) { + keys = new Map(); + keyCaches.set(agg, keys); + } - const id = RangeKey.idBucket(bucket); + const id = RangeKey.idBucket(bucket); - key = keys.get(id); - if (!key) { - key = new RangeKey(bucket); - keys.set(id, key); - } + key = keys.get(id); + if (!key) { + key = new RangeKey(bucket); + keys.set(id, key); + } - return key; - }, - getSerializedFormat(agg) { - const format = agg.params.field ? agg.params.field.format.toJSON() : {}; - return { - id: 'range', - params: { - id: format.id, - params: format.params, - }, - }; - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [KBN_FIELD_TYPES.NUMBER], - }, - { - name: 'ranges', - default: [ - { from: 0, to: 1000 }, - { from: 1000, to: 2000 }, - ], - write(aggConfig, output) { - output.params.ranges = aggConfig.params.ranges; - output.params.keyed = true; - }, + return key; + }, + getSerializedFormat(agg) { + const format = agg.params.field ? agg.params.field.format.toJSON() : {}; + return { + id: 'range', + params: { + id: format.id, + params: format.params, }, - ], + }; }, - { getInternalStartServices } - ); + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER], + }, + { + name: 'ranges', + default: [ + { from: 0, to: 1000 }, + { from: 1000, to: 2000 }, + ], + write(aggConfig, output) { + output.params.ranges = aggConfig.params.ranges; + output.params.keyed = true; + }, + }, + ], + }); }; diff --git a/src/plugins/data/public/search/aggs/buckets/range_fn.ts b/src/plugins/data/public/search/aggs/buckets/range_fn.ts index 48686e7061de9..6806125a10f6d 100644 --- a/src/plugins/data/public/search/aggs/buckets/range_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/range_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/significant_terms.test.ts b/src/plugins/data/public/search/aggs/buckets/significant_terms.test.ts index 8fe833aa99cb2..f13fafc2b17e6 100644 --- a/src/plugins/data/public/search/aggs/buckets/significant_terms.test.ts +++ b/src/plugins/data/public/search/aggs/buckets/significant_terms.test.ts @@ -20,29 +20,11 @@ import { AggConfigs, IAggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { BUCKET_TYPES } from './bucket_agg_types'; -import { - getSignificantTermsBucketAgg, - SignificantTermsBucketAggDependencies, -} from './significant_terms'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../../types'; +import { getSignificantTermsBucketAgg } from './significant_terms'; describe('Significant Terms Agg', () => { describe('order agg editor UI', () => { describe('convert include/exclude from old format', () => { - let aggTypesDependencies: SignificantTermsBucketAggDependencies; - - beforeEach(() => { - aggTypesDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - }); - const getAggConfigs = (params: Record = {}) => { const indexPattern = { id: '1234', @@ -69,9 +51,7 @@ describe('Significant Terms Agg', () => { }, ], { - typesRegistry: mockAggTypesRegistry([ - getSignificantTermsBucketAgg(aggTypesDependencies), - ]), + typesRegistry: mockAggTypesRegistry([getSignificantTermsBucketAgg()]), } ); }; diff --git a/src/plugins/data/public/search/aggs/buckets/significant_terms.ts b/src/plugins/data/public/search/aggs/buckets/significant_terms.ts index e6afc56dfd31c..4dc8aafd8a7a7 100644 --- a/src/plugins/data/public/search/aggs/buckets/significant_terms.ts +++ b/src/plugins/data/public/search/aggs/buckets/significant_terms.ts @@ -23,17 +23,12 @@ import { createFilterTerms } from './create_filter/terms'; import { isStringType, migrateIncludeExcludeFormat } from './migrate_include_exclude_format'; import { BUCKET_TYPES } from './bucket_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const significantTermsTitle = i18n.translate('data.search.aggs.buckets.significantTermsTitle', { defaultMessage: 'Significant Terms', }); -export interface SignificantTermsBucketAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export interface AggParamsSignificantTerms extends BaseAggParams { field: string; size?: number; @@ -41,57 +36,50 @@ export interface AggParamsSignificantTerms extends BaseAggParams { include?: string; } -export const getSignificantTermsBucketAgg = ({ - getInternalStartServices, -}: SignificantTermsBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.SIGNIFICANT_TERMS, - title: significantTermsTitle, - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.buckets.significantTermsLabel', { - defaultMessage: 'Top {size} unusual terms in {fieldName}', - values: { - size: aggConfig.params.size, - fieldName: aggConfig.getFieldDisplayName(), - }, - }); - }, - createFilter: createFilterTerms, - params: [ - { - name: 'field', - type: 'field', - scriptable: false, - filterFieldTypes: KBN_FIELD_TYPES.STRING, - }, - { - name: 'size', - default: '', - }, - { - name: 'exclude', - displayName: i18n.translate('data.search.aggs.buckets.significantTerms.excludeLabel', { - defaultMessage: 'Exclude', - }), - type: 'string', - advanced: true, - shouldShow: isStringType, - ...migrateIncludeExcludeFormat, +export const getSignificantTermsBucketAgg = () => + new BucketAggType({ + name: BUCKET_TYPES.SIGNIFICANT_TERMS, + title: significantTermsTitle, + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.buckets.significantTermsLabel', { + defaultMessage: 'Top {size} unusual terms in {fieldName}', + values: { + size: aggConfig.params.size, + fieldName: aggConfig.getFieldDisplayName(), }, - { - name: 'include', - displayName: i18n.translate('data.search.aggs.buckets.significantTerms.includeLabel', { - defaultMessage: 'Include', - }), - type: 'string', - advanced: true, - shouldShow: isStringType, - ...migrateIncludeExcludeFormat, - }, - ], + }); }, - { - getInternalStartServices, - } - ); + createFilter: createFilterTerms, + params: [ + { + name: 'field', + type: 'field', + scriptable: false, + filterFieldTypes: KBN_FIELD_TYPES.STRING, + }, + { + name: 'size', + default: '', + }, + { + name: 'exclude', + displayName: i18n.translate('data.search.aggs.buckets.significantTerms.excludeLabel', { + defaultMessage: 'Exclude', + }), + type: 'string', + advanced: true, + shouldShow: isStringType, + ...migrateIncludeExcludeFormat, + }, + { + name: 'include', + displayName: i18n.translate('data.search.aggs.buckets.significantTerms.includeLabel', { + defaultMessage: 'Include', + }), + type: 'string', + advanced: true, + shouldShow: isStringType, + ...migrateIncludeExcludeFormat, + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/significant_terms_fn.ts b/src/plugins/data/public/search/aggs/buckets/significant_terms_fn.ts index 83583070bddfe..1fecfcc914313 100644 --- a/src/plugins/data/public/search/aggs/buckets/significant_terms_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/significant_terms_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/buckets/terms.ts b/src/plugins/data/public/search/aggs/buckets/terms.ts index 57a5ebf72316c..d3acd33d73d01 100644 --- a/src/plugins/data/public/search/aggs/buckets/terms.ts +++ b/src/plugins/data/public/search/aggs/buckets/terms.ts @@ -19,6 +19,7 @@ import { noop } from 'lodash'; import { i18n } from '@kbn/i18n'; + import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; import { createFilterTerms } from './create_filter/terms'; @@ -26,10 +27,8 @@ import { isStringOrNumberType, migrateIncludeExcludeFormat, } from './migrate_include_exclude_format'; -import { AggConfigSerialized, BaseAggParams, IAggConfigs } from '../types'; +import { AggConfigSerialized, BaseAggParams } from '../types'; -import { Adapters } from '../../../../../inspector/public'; -import { ISearchSource } from '../../search_source'; import { KBN_FIELD_TYPES } from '../../../../common'; import { getRequestInspectorStats, getResponseInspectorStats } from '../../expressions'; @@ -38,7 +37,6 @@ import { mergeOtherBucketAggResponse, updateMissingBucket, } from './_terms_other_bucket_helper'; -import { GetInternalStartServicesFn } from '../../../types'; export const termsAggFilter = [ '!top_hits', @@ -59,10 +57,6 @@ const termsTitle = i18n.translate('data.search.aggs.buckets.termsTitle', { defaultMessage: 'Terms', }); -export interface TermsBucketAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export interface AggParamsTerms extends BaseAggParams { field: string; orderBy: string; @@ -78,222 +72,219 @@ export interface AggParamsTerms extends BaseAggParams { include?: string; } -export const getTermsBucketAgg = ({ getInternalStartServices }: TermsBucketAggDependencies) => - new BucketAggType( - { - name: BUCKET_TYPES.TERMS, - expressionName: 'aggTerms', - title: termsTitle, - makeLabel(agg) { - const params = agg.params; - return agg.getFieldDisplayName() + ': ' + params.order.text; - }, - getSerializedFormat(agg) { - const format = agg.params.field ? agg.params.field.format.toJSON() : {}; - return { - id: 'terms', - params: { - id: format.id, - otherBucketLabel: agg.params.otherBucketLabel, - missingBucketLabel: agg.params.missingBucketLabel, - ...format.params, - }, - }; - }, - createFilter: createFilterTerms, - postFlightRequest: async ( - resp: any, - aggConfigs: IAggConfigs, - aggConfig: IBucketAggConfig, - searchSource: ISearchSource, - inspectorAdapters: Adapters, - abortSignal?: AbortSignal - ) => { - if (!resp.aggregations) return resp; - const nestedSearchSource = searchSource.createChild(); - if (aggConfig.params.otherBucket) { - const filterAgg = buildOtherBucketAgg(aggConfigs, aggConfig, resp); - if (!filterAgg) return resp; +export const getTermsBucketAgg = () => + new BucketAggType({ + name: BUCKET_TYPES.TERMS, + expressionName: 'aggTerms', + title: termsTitle, + makeLabel(agg) { + const params = agg.params; + return agg.getFieldDisplayName() + ': ' + params.order.text; + }, + getSerializedFormat(agg) { + const format = agg.params.field ? agg.params.field.format.toJSON() : {}; + return { + id: 'terms', + params: { + id: format.id, + otherBucketLabel: agg.params.otherBucketLabel, + missingBucketLabel: agg.params.missingBucketLabel, + ...format.params, + }, + }; + }, + createFilter: createFilterTerms, + postFlightRequest: async ( + resp, + aggConfigs, + aggConfig, + searchSource, + inspectorRequestAdapter, + abortSignal + ) => { + if (!resp.aggregations) return resp; + const nestedSearchSource = searchSource.createChild(); + if (aggConfig.params.otherBucket) { + const filterAgg = buildOtherBucketAgg(aggConfigs, aggConfig, resp); + if (!filterAgg) return resp; - nestedSearchSource.setField('aggs', filterAgg); + nestedSearchSource.setField('aggs', filterAgg); - const request = inspectorAdapters.requests.start( - i18n.translate('data.search.aggs.buckets.terms.otherBucketTitle', { - defaultMessage: 'Other bucket', + const request = inspectorRequestAdapter.start( + i18n.translate('data.search.aggs.buckets.terms.otherBucketTitle', { + defaultMessage: 'Other bucket', + }), + { + description: i18n.translate('data.search.aggs.buckets.terms.otherBucketDescription', { + defaultMessage: + 'This request counts the number of documents that fall ' + + 'outside the criterion of the data buckets.', }), - { - description: i18n.translate('data.search.aggs.buckets.terms.otherBucketDescription', { - defaultMessage: - 'This request counts the number of documents that fall ' + - 'outside the criterion of the data buckets.', - }), - } - ); - nestedSearchSource.getSearchRequestBody().then((body: string) => { - request.json(body); - }); - request.stats(getRequestInspectorStats(nestedSearchSource)); + } + ); + nestedSearchSource.getSearchRequestBody().then((body) => { + request.json(body); + }); + request.stats(getRequestInspectorStats(nestedSearchSource)); - const response = await nestedSearchSource.fetch({ abortSignal }); - request - .stats(getResponseInspectorStats(nestedSearchSource, response)) - .ok({ json: response }); - resp = mergeOtherBucketAggResponse(aggConfigs, resp, response, aggConfig, filterAgg()); - } - if (aggConfig.params.missingBucket) { - resp = updateMissingBucket(resp, aggConfigs, aggConfig); - } - return resp; + const response = await nestedSearchSource.fetch({ abortSignal }); + request + .stats(getResponseInspectorStats(nestedSearchSource, response)) + .ok({ json: response }); + resp = mergeOtherBucketAggResponse(aggConfigs, resp, response, aggConfig, filterAgg()); + } + if (aggConfig.params.missingBucket) { + resp = updateMissingBucket(resp, aggConfigs, aggConfig); + } + return resp; + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [ + KBN_FIELD_TYPES.NUMBER, + KBN_FIELD_TYPES.BOOLEAN, + KBN_FIELD_TYPES.DATE, + KBN_FIELD_TYPES.IP, + KBN_FIELD_TYPES.STRING, + ], }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [ - KBN_FIELD_TYPES.NUMBER, - KBN_FIELD_TYPES.BOOLEAN, - KBN_FIELD_TYPES.DATE, - KBN_FIELD_TYPES.IP, - KBN_FIELD_TYPES.STRING, - ], - }, - { - name: 'orderBy', - write: noop, // prevent default write, it's handled by orderAgg - }, - { - name: 'orderAgg', - type: 'agg', - allowedAggs: termsAggFilter, - default: null, - makeAgg(termsAgg, state = { type: 'count' }) { - state.schema = 'orderAgg'; - const orderAgg = termsAgg.aggConfigs.createAggConfig(state, { - addToAggConfigs: false, - }); - orderAgg.id = termsAgg.id + '-orderAgg'; + { + name: 'orderBy', + write: noop, // prevent default write, it's handled by orderAgg + }, + { + name: 'orderAgg', + type: 'agg', + allowedAggs: termsAggFilter, + default: null, + makeAgg(termsAgg, state = { type: 'count' }) { + state.schema = 'orderAgg'; + const orderAgg = termsAgg.aggConfigs.createAggConfig(state, { + addToAggConfigs: false, + }); + orderAgg.id = termsAgg.id + '-orderAgg'; - return orderAgg; - }, - write(agg, output, aggs) { - const dir = agg.params.order.value; - const order: Record = (output.params.order = {}); + return orderAgg; + }, + write(agg, output, aggs) { + const dir = agg.params.order.value; + const order: Record = (output.params.order = {}); - let orderAgg = agg.params.orderAgg || aggs!.getResponseAggById(agg.params.orderBy); + let orderAgg = agg.params.orderAgg || aggs!.getResponseAggById(agg.params.orderBy); - // TODO: This works around an Elasticsearch bug the always casts terms agg scripts to strings - // thus causing issues with filtering. This probably causes other issues since float might not - // be able to contain the number on the elasticsearch side - if (output.params.script) { - output.params.value_type = - agg.getField().type === 'number' ? 'float' : agg.getField().type; - } + // TODO: This works around an Elasticsearch bug the always casts terms agg scripts to strings + // thus causing issues with filtering. This probably causes other issues since float might not + // be able to contain the number on the elasticsearch side + if (output.params.script) { + output.params.value_type = + agg.getField().type === 'number' ? 'float' : agg.getField().type; + } - if (agg.params.missingBucket && agg.params.field.type === 'string') { - output.params.missing = '__missing__'; - } + if (agg.params.missingBucket && agg.params.field.type === 'string') { + output.params.missing = '__missing__'; + } - if (!orderAgg) { - order[agg.params.orderBy || '_count'] = dir; - return; - } + if (!orderAgg) { + order[agg.params.orderBy || '_count'] = dir; + return; + } - if (orderAgg.type.name === 'count') { - order._count = dir; - return; - } + if (orderAgg.type.name === 'count') { + order._count = dir; + return; + } - const orderAggId = orderAgg.id; + const orderAggId = orderAgg.id; - if (orderAgg.parentId && aggs) { - orderAgg = aggs.byId(orderAgg.parentId); - } + if (orderAgg.parentId && aggs) { + orderAgg = aggs.byId(orderAgg.parentId); + } - output.subAggs = (output.subAggs || []).concat(orderAgg); - order[orderAggId] = dir; - }, - }, - { - name: 'order', - type: 'optioned', - default: 'desc', - options: [ - { - text: i18n.translate('data.search.aggs.buckets.terms.orderDescendingTitle', { - defaultMessage: 'Descending', - }), - value: 'desc', - }, - { - text: i18n.translate('data.search.aggs.buckets.terms.orderAscendingTitle', { - defaultMessage: 'Ascending', - }), - value: 'asc', - }, - ], - write: noop, // prevent default write, it's handled by orderAgg - }, - { - name: 'size', - default: 5, + output.subAggs = (output.subAggs || []).concat(orderAgg); + order[orderAggId] = dir; }, - { - name: 'otherBucket', - default: false, - write: noop, - }, - { - name: 'otherBucketLabel', - type: 'string', - default: i18n.translate('data.search.aggs.buckets.terms.otherBucketLabel', { - defaultMessage: 'Other', - }), - displayName: i18n.translate('data.search.aggs.otherBucket.labelForOtherBucketLabel', { - defaultMessage: 'Label for other bucket', - }), - shouldShow: (agg) => agg.getParam('otherBucket'), - write: noop, - }, - { - name: 'missingBucket', - default: false, - write: noop, - }, - { - name: 'missingBucketLabel', - default: i18n.translate('data.search.aggs.buckets.terms.missingBucketLabel', { - defaultMessage: 'Missing', - description: `Default label used in charts when documents are missing a field. + }, + { + name: 'order', + type: 'optioned', + default: 'desc', + options: [ + { + text: i18n.translate('data.search.aggs.buckets.terms.orderDescendingTitle', { + defaultMessage: 'Descending', + }), + value: 'desc', + }, + { + text: i18n.translate('data.search.aggs.buckets.terms.orderAscendingTitle', { + defaultMessage: 'Ascending', + }), + value: 'asc', + }, + ], + write: noop, // prevent default write, it's handled by orderAgg + }, + { + name: 'size', + default: 5, + }, + { + name: 'otherBucket', + default: false, + write: noop, + }, + { + name: 'otherBucketLabel', + type: 'string', + default: i18n.translate('data.search.aggs.buckets.terms.otherBucketLabel', { + defaultMessage: 'Other', + }), + displayName: i18n.translate('data.search.aggs.otherBucket.labelForOtherBucketLabel', { + defaultMessage: 'Label for other bucket', + }), + shouldShow: (agg) => agg.getParam('otherBucket'), + write: noop, + }, + { + name: 'missingBucket', + default: false, + write: noop, + }, + { + name: 'missingBucketLabel', + default: i18n.translate('data.search.aggs.buckets.terms.missingBucketLabel', { + defaultMessage: 'Missing', + description: `Default label used in charts when documents are missing a field. Visible when you create a chart with a terms aggregation and enable "Show missing values"`, - }), - type: 'string', - displayName: i18n.translate('data.search.aggs.otherBucket.labelForMissingValuesLabel', { - defaultMessage: 'Label for missing values', - }), - shouldShow: (agg) => agg.getParam('missingBucket'), - write: noop, - }, - { - name: 'exclude', - displayName: i18n.translate('data.search.aggs.buckets.terms.excludeLabel', { - defaultMessage: 'Exclude', - }), - type: 'string', - advanced: true, - shouldShow: isStringOrNumberType, - ...migrateIncludeExcludeFormat, - }, - { - name: 'include', - displayName: i18n.translate('data.search.aggs.buckets.terms.includeLabel', { - defaultMessage: 'Include', - }), - type: 'string', - advanced: true, - shouldShow: isStringOrNumberType, - ...migrateIncludeExcludeFormat, - }, - ], - }, - { getInternalStartServices } - ); + }), + type: 'string', + displayName: i18n.translate('data.search.aggs.otherBucket.labelForMissingValuesLabel', { + defaultMessage: 'Label for missing values', + }), + shouldShow: (agg) => agg.getParam('missingBucket'), + write: noop, + }, + { + name: 'exclude', + displayName: i18n.translate('data.search.aggs.buckets.terms.excludeLabel', { + defaultMessage: 'Exclude', + }), + type: 'string', + advanced: true, + shouldShow: isStringOrNumberType, + ...migrateIncludeExcludeFormat, + }, + { + name: 'include', + displayName: i18n.translate('data.search.aggs.buckets.terms.includeLabel', { + defaultMessage: 'Include', + }), + type: 'string', + advanced: true, + shouldShow: isStringOrNumberType, + ...migrateIncludeExcludeFormat, + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/buckets/terms_fn.ts b/src/plugins/data/public/search/aggs/buckets/terms_fn.ts index 49520863fe1cc..975941506da4e 100644 --- a/src/plugins/data/public/search/aggs/buckets/terms_fn.ts +++ b/src/plugins/data/public/search/aggs/buckets/terms_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/avg.ts b/src/plugins/data/public/search/aggs/metrics/avg.ts index 1aa39ccd2aad9..651aaf857c757 100644 --- a/src/plugins/data/public/search/aggs/metrics/avg.ts +++ b/src/plugins/data/public/search/aggs/metrics/avg.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const averageTitle = i18n.translate('data.search.aggs.metrics.averageTitle', { @@ -32,31 +31,22 @@ export interface AggParamsAvg extends BaseAggParams { field: string; } -export interface AvgMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getAvgMetricAgg = ({ getInternalStartServices }: AvgMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.AVG, - title: averageTitle, - makeLabel: (aggConfig) => { - return i18n.translate('data.search.aggs.metrics.averageLabel', { - defaultMessage: 'Average {field}', - values: { field: aggConfig.getFieldDisplayName() }, - }); - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.HISTOGRAM], - }, - ], +export const getAvgMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.AVG, + title: averageTitle, + makeLabel: (aggConfig) => { + return i18n.translate('data.search.aggs.metrics.averageLabel', { + defaultMessage: 'Average {field}', + values: { field: aggConfig.getFieldDisplayName() }, + }); }, - { - getInternalStartServices, - } - ); + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.HISTOGRAM], + }, + ], + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/avg_fn.ts b/src/plugins/data/public/search/aggs/metrics/avg_fn.ts index c370623b2752a..18629927d7814 100644 --- a/src/plugins/data/public/search/aggs/metrics/avg_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/avg_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_avg.ts b/src/plugins/data/public/search/aggs/metrics/bucket_avg.ts index a30e426dd2390..92fa675ac2d38 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_avg.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_avg.ts @@ -24,17 +24,12 @@ import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsBucketAvg extends BaseAggParams { customMetric?: AggConfigSerialized; customBucket?: AggConfigSerialized; } -export interface BucketAvgMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const overallAverageLabel = i18n.translate('data.search.aggs.metrics.overallAverageLabel', { defaultMessage: 'overall average', }); @@ -43,36 +38,29 @@ const averageBucketTitle = i18n.translate('data.search.aggs.metrics.averageBucke defaultMessage: 'Average Bucket', }); -export const getBucketAvgMetricAgg = ({ - getInternalStartServices, -}: BucketAvgMetricAggDependencies) => { +export const getBucketAvgMetricAgg = () => { const { subtype, params, getSerializedFormat } = siblingPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.AVG_BUCKET, - title: averageBucketTitle, - makeLabel: (agg) => makeNestedLabel(agg, overallAverageLabel), - subtype, - params: [...params()], - getSerializedFormat, - getValue(agg, bucket) { - const customMetric = agg.getParam('customMetric'); - const customBucket = agg.getParam('customBucket'); - const scaleMetrics = customMetric.type && customMetric.type.isScalable(); + return new MetricAggType({ + name: METRIC_TYPES.AVG_BUCKET, + title: averageBucketTitle, + makeLabel: (agg) => makeNestedLabel(agg, overallAverageLabel), + subtype, + params: [...params()], + getSerializedFormat, + getValue(agg, bucket) { + const customMetric = agg.getParam('customMetric'); + const customBucket = agg.getParam('customBucket'); + const scaleMetrics = customMetric.type && customMetric.type.isScalable(); - let value = bucket[agg.id] && bucket[agg.id].value; + let value = bucket[agg.id] && bucket[agg.id].value; - if (scaleMetrics && customBucket.type.name === 'date_histogram') { - const aggInfo = customBucket.write(); + if (scaleMetrics && customBucket.type.name === 'date_histogram') { + const aggInfo = customBucket.write(); - value *= get(aggInfo, 'bucketInterval.scale', 1); - } - return value; - }, + value *= get(aggInfo, 'bucketInterval.scale', 1); + } + return value; }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_avg_fn.ts b/src/plugins/data/public/search/aggs/metrics/bucket_avg_fn.ts index 56643a2df54bd..4e0c1d7311cd6 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_avg_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_avg_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_max.ts b/src/plugins/data/public/search/aggs/metrics/bucket_max.ts index 307c7ed3f9d38..8e2606676ec33 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_max.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_max.ts @@ -23,17 +23,12 @@ import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsBucketMax extends BaseAggParams { customMetric?: AggConfigSerialized; customBucket?: AggConfigSerialized; } -export interface BucketMaxMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const overallMaxLabel = i18n.translate('data.search.aggs.metrics.overallMaxLabel', { defaultMessage: 'overall max', }); @@ -42,22 +37,15 @@ const maxBucketTitle = i18n.translate('data.search.aggs.metrics.maxBucketTitle', defaultMessage: 'Max Bucket', }); -export const getBucketMaxMetricAgg = ({ - getInternalStartServices, -}: BucketMaxMetricAggDependencies) => { +export const getBucketMaxMetricAgg = () => { const { subtype, params, getSerializedFormat } = siblingPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.MAX_BUCKET, - title: maxBucketTitle, - makeLabel: (agg) => makeNestedLabel(agg, overallMaxLabel), - subtype, - params: [...params()], - getSerializedFormat, - }, - { - getInternalStartServices, - } - ); + return new MetricAggType({ + name: METRIC_TYPES.MAX_BUCKET, + title: maxBucketTitle, + makeLabel: (agg) => makeNestedLabel(agg, overallMaxLabel), + subtype, + params: [...params()], + getSerializedFormat, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_max_fn.ts b/src/plugins/data/public/search/aggs/metrics/bucket_max_fn.ts index 896e9cf839605..66ae7601470fb 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_max_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_max_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_min.ts b/src/plugins/data/public/search/aggs/metrics/bucket_min.ts index bb4ed9d44b0b3..dedc3a9de3dd1 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_min.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_min.ts @@ -23,17 +23,12 @@ import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsBucketMin extends BaseAggParams { customMetric?: AggConfigSerialized; customBucket?: AggConfigSerialized; } -export interface BucketMinMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const overallMinLabel = i18n.translate('data.search.aggs.metrics.overallMinLabel', { defaultMessage: 'overall min', }); @@ -42,22 +37,15 @@ const minBucketTitle = i18n.translate('data.search.aggs.metrics.minBucketTitle', defaultMessage: 'Min Bucket', }); -export const getBucketMinMetricAgg = ({ - getInternalStartServices, -}: BucketMinMetricAggDependencies) => { +export const getBucketMinMetricAgg = () => { const { subtype, params, getSerializedFormat } = siblingPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.MIN_BUCKET, - title: minBucketTitle, - makeLabel: (agg) => makeNestedLabel(agg, overallMinLabel), - subtype, - params: [...params()], - getSerializedFormat, - }, - { - getInternalStartServices, - } - ); + return new MetricAggType({ + name: METRIC_TYPES.MIN_BUCKET, + title: minBucketTitle, + makeLabel: (agg) => makeNestedLabel(agg, overallMinLabel), + subtype, + params: [...params()], + getSerializedFormat, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_min_fn.ts b/src/plugins/data/public/search/aggs/metrics/bucket_min_fn.ts index 2ae3d9211227a..009cc0102b05d 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_min_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_min_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_sum.ts b/src/plugins/data/public/search/aggs/metrics/bucket_sum.ts index dd065b52acd12..c6ccd498a0eb9 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_sum.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_sum.ts @@ -23,17 +23,12 @@ import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsBucketSum extends BaseAggParams { customMetric?: AggConfigSerialized; customBucket?: AggConfigSerialized; } -export interface BucketSumMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const overallSumLabel = i18n.translate('data.search.aggs.metrics.overallSumLabel', { defaultMessage: 'overall sum', }); @@ -42,22 +37,15 @@ const sumBucketTitle = i18n.translate('data.search.aggs.metrics.sumBucketTitle', defaultMessage: 'Sum Bucket', }); -export const getBucketSumMetricAgg = ({ - getInternalStartServices, -}: BucketSumMetricAggDependencies) => { +export const getBucketSumMetricAgg = () => { const { subtype, params, getSerializedFormat } = siblingPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.SUM_BUCKET, - title: sumBucketTitle, - makeLabel: (agg) => makeNestedLabel(agg, overallSumLabel), - subtype, - params: [...params()], - getSerializedFormat, - }, - { - getInternalStartServices, - } - ); + return new MetricAggType({ + name: METRIC_TYPES.SUM_BUCKET, + title: sumBucketTitle, + makeLabel: (agg) => makeNestedLabel(agg, overallSumLabel), + subtype, + params: [...params()], + getSerializedFormat, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/bucket_sum_fn.ts b/src/plugins/data/public/search/aggs/metrics/bucket_sum_fn.ts index eceb11a90f293..920285e89e8f4 100644 --- a/src/plugins/data/public/search/aggs/metrics/bucket_sum_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/bucket_sum_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/cardinality.ts b/src/plugins/data/public/search/aggs/metrics/cardinality.ts index efc79a8559566..777cb833849f4 100644 --- a/src/plugins/data/public/search/aggs/metrics/cardinality.ts +++ b/src/plugins/data/public/search/aggs/metrics/cardinality.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType, IMetricAggConfig } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const uniqueCountTitle = i18n.translate('data.search.aggs.metrics.uniqueCountTitle', { @@ -32,39 +31,28 @@ export interface AggParamsCardinality extends BaseAggParams { field: string; } -export interface CardinalityMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getCardinalityMetricAgg = ({ - getInternalStartServices, -}: CardinalityMetricAggDependencies) => - new MetricAggType( - { - name: METRIC_TYPES.CARDINALITY, - title: uniqueCountTitle, - makeLabel(aggConfig: IMetricAggConfig) { - return i18n.translate('data.search.aggs.metrics.uniqueCountLabel', { - defaultMessage: 'Unique count of {field}', - values: { field: aggConfig.getFieldDisplayName() }, - }); - }, - getSerializedFormat(agg) { - return { - id: 'number', - }; - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: Object.values(KBN_FIELD_TYPES).filter( - (type) => type !== KBN_FIELD_TYPES.HISTOGRAM - ), - }, - ], +export const getCardinalityMetricAgg = () => + new MetricAggType({ + name: METRIC_TYPES.CARDINALITY, + title: uniqueCountTitle, + makeLabel(aggConfig: IMetricAggConfig) { + return i18n.translate('data.search.aggs.metrics.uniqueCountLabel', { + defaultMessage: 'Unique count of {field}', + values: { field: aggConfig.getFieldDisplayName() }, + }); + }, + getSerializedFormat(agg) { + return { + id: 'number', + }; }, - { - getInternalStartServices, - } - ); + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: Object.values(KBN_FIELD_TYPES).filter( + (type) => type !== KBN_FIELD_TYPES.HISTOGRAM + ), + }, + ], + }); diff --git a/src/plugins/data/public/search/aggs/metrics/cardinality_fn.ts b/src/plugins/data/public/search/aggs/metrics/cardinality_fn.ts index f30429993638f..2542c76e7be57 100644 --- a/src/plugins/data/public/search/aggs/metrics/cardinality_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/cardinality_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/count.ts b/src/plugins/data/public/search/aggs/metrics/count.ts index 86faca053a9cf..d990599586e81 100644 --- a/src/plugins/data/public/search/aggs/metrics/count.ts +++ b/src/plugins/data/public/search/aggs/metrics/count.ts @@ -20,38 +20,28 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; -import { GetInternalStartServicesFn } from '../../../types'; -export interface CountMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getCountMetricAgg = ({ getInternalStartServices }: CountMetricAggDependencies) => - new MetricAggType( - { - name: METRIC_TYPES.COUNT, - title: i18n.translate('data.search.aggs.metrics.countTitle', { +export const getCountMetricAgg = () => + new MetricAggType({ + name: METRIC_TYPES.COUNT, + title: i18n.translate('data.search.aggs.metrics.countTitle', { + defaultMessage: 'Count', + }), + hasNoDsl: true, + makeLabel() { + return i18n.translate('data.search.aggs.metrics.countLabel', { defaultMessage: 'Count', - }), - hasNoDsl: true, - makeLabel() { - return i18n.translate('data.search.aggs.metrics.countLabel', { - defaultMessage: 'Count', - }); - }, - getSerializedFormat(agg) { - return { - id: 'number', - }; - }, - getValue(agg, bucket) { - return bucket.doc_count; - }, - isScalable() { - return true; - }, + }); + }, + getSerializedFormat(agg) { + return { + id: 'number', + }; + }, + getValue(agg, bucket) { + return bucket.doc_count; + }, + isScalable() { + return true; }, - { - getInternalStartServices, - } - ); + }); diff --git a/src/plugins/data/public/search/aggs/metrics/count_fn.ts b/src/plugins/data/public/search/aggs/metrics/count_fn.ts index f4c7e8e854230..338ca18209299 100644 --- a/src/plugins/data/public/search/aggs/metrics/count_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/count_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/cumulative_sum.ts b/src/plugins/data/public/search/aggs/metrics/cumulative_sum.ts index 3de88bb71740f..b10bdd31a5817 100644 --- a/src/plugins/data/public/search/aggs/metrics/cumulative_sum.ts +++ b/src/plugins/data/public/search/aggs/metrics/cumulative_sum.ts @@ -23,7 +23,6 @@ import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsCumulativeSum extends BaseAggParams { buckets_path: string; @@ -31,10 +30,6 @@ export interface AggParamsCumulativeSum extends BaseAggParams { metricAgg?: string; } -export interface CumulativeSumMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const cumulativeSumLabel = i18n.translate('data.search.aggs.metrics.cumulativeSumLabel', { defaultMessage: 'cumulative sum', }); @@ -43,22 +38,15 @@ const cumulativeSumTitle = i18n.translate('data.search.aggs.metrics.cumulativeSu defaultMessage: 'Cumulative Sum', }); -export const getCumulativeSumMetricAgg = ({ - getInternalStartServices, -}: CumulativeSumMetricAggDependencies) => { +export const getCumulativeSumMetricAgg = () => { const { subtype, params, getSerializedFormat } = parentPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.CUMULATIVE_SUM, - title: cumulativeSumTitle, - makeLabel: (agg) => makeNestedLabel(agg, cumulativeSumLabel), - subtype, - params: [...params()], - getSerializedFormat, - }, - { - getInternalStartServices, - } - ); + return new MetricAggType({ + name: METRIC_TYPES.CUMULATIVE_SUM, + title: cumulativeSumTitle, + makeLabel: (agg) => makeNestedLabel(agg, cumulativeSumLabel), + subtype, + params: [...params()], + getSerializedFormat, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/cumulative_sum_fn.ts b/src/plugins/data/public/search/aggs/metrics/cumulative_sum_fn.ts index 950df03b10134..411cbd256c37e 100644 --- a/src/plugins/data/public/search/aggs/metrics/cumulative_sum_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/cumulative_sum_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/derivative.ts b/src/plugins/data/public/search/aggs/metrics/derivative.ts index c9507029080e6..c03c33ba80710 100644 --- a/src/plugins/data/public/search/aggs/metrics/derivative.ts +++ b/src/plugins/data/public/search/aggs/metrics/derivative.ts @@ -23,7 +23,6 @@ import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsDerivative extends BaseAggParams { buckets_path: string; @@ -31,10 +30,6 @@ export interface AggParamsDerivative extends BaseAggParams { metricAgg?: string; } -export interface DerivativeMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const derivativeLabel = i18n.translate('data.search.aggs.metrics.derivativeLabel', { defaultMessage: 'derivative', }); @@ -43,24 +38,17 @@ const derivativeTitle = i18n.translate('data.search.aggs.metrics.derivativeTitle defaultMessage: 'Derivative', }); -export const getDerivativeMetricAgg = ({ - getInternalStartServices, -}: DerivativeMetricAggDependencies) => { +export const getDerivativeMetricAgg = () => { const { subtype, params, getSerializedFormat } = parentPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.DERIVATIVE, - title: derivativeTitle, - makeLabel(agg) { - return makeNestedLabel(agg, derivativeLabel); - }, - subtype, - params: [...params()], - getSerializedFormat, + return new MetricAggType({ + name: METRIC_TYPES.DERIVATIVE, + title: derivativeTitle, + makeLabel(agg) { + return makeNestedLabel(agg, derivativeLabel); }, - { - getInternalStartServices, - } - ); + subtype, + params: [...params()], + getSerializedFormat, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/derivative_fn.ts b/src/plugins/data/public/search/aggs/metrics/derivative_fn.ts index 90b88b4de2712..1d87dfdac6da3 100644 --- a/src/plugins/data/public/search/aggs/metrics/derivative_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/derivative_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/geo_bounds.ts b/src/plugins/data/public/search/aggs/metrics/geo_bounds.ts index 864e97ca8dfe7..c86f42f066bdf 100644 --- a/src/plugins/data/public/search/aggs/metrics/geo_bounds.ts +++ b/src/plugins/data/public/search/aggs/metrics/geo_bounds.ts @@ -21,17 +21,12 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; export interface AggParamsGeoBounds extends BaseAggParams { field: string; } -export interface GeoBoundsMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const geoBoundsTitle = i18n.translate('data.search.aggs.metrics.geoBoundsTitle', { defaultMessage: 'Geo Bounds', }); @@ -40,24 +35,17 @@ const geoBoundsLabel = i18n.translate('data.search.aggs.metrics.geoBoundsLabel', defaultMessage: 'Geo Bounds', }); -export const getGeoBoundsMetricAgg = ({ - getInternalStartServices, -}: GeoBoundsMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.GEO_BOUNDS, - title: geoBoundsTitle, - makeLabel: () => geoBoundsLabel, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, - }, - ], - }, - { - getInternalStartServices, - } - ); +export const getGeoBoundsMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.GEO_BOUNDS, + title: geoBoundsTitle, + makeLabel: () => geoBoundsLabel, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, + }, + ], + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/geo_bounds_fn.ts b/src/plugins/data/public/search/aggs/metrics/geo_bounds_fn.ts index 8ba71a098fc70..927f7f42d0f50 100644 --- a/src/plugins/data/public/search/aggs/metrics/geo_bounds_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/geo_bounds_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/geo_centroid.ts b/src/plugins/data/public/search/aggs/metrics/geo_centroid.ts index 2bbb6b2de8d87..b98ce45d35229 100644 --- a/src/plugins/data/public/search/aggs/metrics/geo_centroid.ts +++ b/src/plugins/data/public/search/aggs/metrics/geo_centroid.ts @@ -21,17 +21,12 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; export interface AggParamsGeoCentroid extends BaseAggParams { field: string; } -export interface GeoCentroidMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const geoCentroidTitle = i18n.translate('data.search.aggs.metrics.geoCentroidTitle', { defaultMessage: 'Geo Centroid', }); @@ -40,27 +35,20 @@ const geoCentroidLabel = i18n.translate('data.search.aggs.metrics.geoCentroidLab defaultMessage: 'Geo Centroid', }); -export const getGeoCentroidMetricAgg = ({ - getInternalStartServices, -}: GeoCentroidMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.GEO_CENTROID, - title: geoCentroidTitle, - makeLabel: () => geoCentroidLabel, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, - }, - ], - getValue(agg, bucket) { - return bucket[agg.id] && bucket[agg.id].location; +export const getGeoCentroidMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.GEO_CENTROID, + title: geoCentroidTitle, + makeLabel: () => geoCentroidLabel, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.GEO_POINT, }, + ], + getValue(agg, bucket) { + return bucket[agg.id] && bucket[agg.id].location; }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/geo_centroid_fn.ts b/src/plugins/data/public/search/aggs/metrics/geo_centroid_fn.ts index 464f9b535cd8b..98bd7365f8b3f 100644 --- a/src/plugins/data/public/search/aggs/metrics/geo_centroid_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/geo_centroid_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/max.ts b/src/plugins/data/public/search/aggs/metrics/max.ts index 49cbfba5a269d..5b2f08c5b0260 100644 --- a/src/plugins/data/public/search/aggs/metrics/max.ts +++ b/src/plugins/data/public/search/aggs/metrics/max.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const maxTitle = i18n.translate('data.search.aggs.metrics.maxTitle', { @@ -32,31 +31,22 @@ export interface AggParamsMax extends BaseAggParams { field: string; } -export interface MaxMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getMaxMetricAgg = ({ getInternalStartServices }: MaxMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.MAX, - title: maxTitle, - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.metrics.maxLabel', { - defaultMessage: 'Max {field}', - values: { field: aggConfig.getFieldDisplayName() }, - }); - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.DATE], - }, - ], +export const getMaxMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.MAX, + title: maxTitle, + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.metrics.maxLabel', { + defaultMessage: 'Max {field}', + values: { field: aggConfig.getFieldDisplayName() }, + }); }, - { - getInternalStartServices, - } - ); + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.DATE], + }, + ], + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/max_fn.ts b/src/plugins/data/public/search/aggs/metrics/max_fn.ts index 1d68c8919fca8..d1bccd08982f8 100644 --- a/src/plugins/data/public/search/aggs/metrics/max_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/max_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/median.test.ts b/src/plugins/data/public/search/aggs/metrics/median.test.ts index b3721e2c1e679..22d907330e2a3 100644 --- a/src/plugins/data/public/search/aggs/metrics/median.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/median.test.ts @@ -17,26 +17,16 @@ * under the License. */ -import { getMedianMetricAgg, MedianMetricAggDependencies } from './median'; +import { getMedianMetricAgg } from './median'; import { AggConfigs, IAggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { METRIC_TYPES } from './metric_agg_types'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../../types'; describe('AggTypeMetricMedianProvider class', () => { let aggConfigs: IAggConfigs; - const aggTypesDependencies: MedianMetricAggDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; beforeEach(() => { - const typesRegistry = mockAggTypesRegistry([getMedianMetricAgg(aggTypesDependencies)]); + const typesRegistry = mockAggTypesRegistry([getMedianMetricAgg()]); const field = { name: 'bytes', }; diff --git a/src/plugins/data/public/search/aggs/metrics/median.ts b/src/plugins/data/public/search/aggs/metrics/median.ts index 725fdcb2400d1..7b48a664b5fb9 100644 --- a/src/plugins/data/public/search/aggs/metrics/median.ts +++ b/src/plugins/data/public/search/aggs/metrics/median.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const medianTitle = i18n.translate('data.search.aggs.metrics.medianTitle', { @@ -32,43 +31,30 @@ export interface AggParamsMedian extends BaseAggParams { field: string; } -export interface MedianMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getMedianMetricAgg = ({ getInternalStartServices }: MedianMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.MEDIAN, - dslName: 'percentiles', - title: medianTitle, - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.metrics.medianLabel', { - defaultMessage: 'Median {field}', - values: { field: aggConfig.getFieldDisplayName() }, - }); - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [ - KBN_FIELD_TYPES.NUMBER, - KBN_FIELD_TYPES.DATE, - KBN_FIELD_TYPES.HISTOGRAM, - ], - write(agg, output) { - output.params.field = agg.getParam('field').name; - output.params.percents = [50]; - }, +export const getMedianMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.MEDIAN, + dslName: 'percentiles', + title: medianTitle, + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.metrics.medianLabel', { + defaultMessage: 'Median {field}', + values: { field: aggConfig.getFieldDisplayName() }, + }); + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.DATE, KBN_FIELD_TYPES.HISTOGRAM], + write(agg, output) { + output.params.field = agg.getParam('field').name; + output.params.percents = [50]; }, - ], - getValue(agg, bucket) { - return bucket[agg.id].values['50.0']; }, + ], + getValue(agg, bucket) { + return bucket[agg.id].values['50.0']; }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/median_fn.ts b/src/plugins/data/public/search/aggs/metrics/median_fn.ts index 2e8e89992136e..c5e9edb86e81c 100644 --- a/src/plugins/data/public/search/aggs/metrics/median_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/median_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/metric_agg_type.ts b/src/plugins/data/public/search/aggs/metrics/metric_agg_type.ts index 5c4ff91258fb0..23dfd976aa846 100644 --- a/src/plugins/data/public/search/aggs/metrics/metric_agg_type.ts +++ b/src/plugins/data/public/search/aggs/metrics/metric_agg_type.ts @@ -23,7 +23,6 @@ import { AggParamType } from '../param_types/agg'; import { AggConfig } from '../agg_config'; import { METRIC_TYPES } from './metric_agg_types'; import { FieldTypes } from '../param_types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface IMetricAggConfig extends AggConfig { type: InstanceType; @@ -43,10 +42,6 @@ interface MetricAggTypeConfig subtype?: string; } -interface MetricAggTypeDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - // TODO need to make a more explicit interface for this export type IMetricAggType = MetricAggType; @@ -60,11 +55,8 @@ export class MetricAggType {}; - constructor( - config: MetricAggTypeConfig, - dependencies: MetricAggTypeDependencies - ) { - super(config, dependencies); + constructor(config: MetricAggTypeConfig) { + super(config); this.getValue = config.getValue || diff --git a/src/plugins/data/public/search/aggs/metrics/min.ts b/src/plugins/data/public/search/aggs/metrics/min.ts index 0f52aa8a4f788..6472c3ae12990 100644 --- a/src/plugins/data/public/search/aggs/metrics/min.ts +++ b/src/plugins/data/public/search/aggs/metrics/min.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const minTitle = i18n.translate('data.search.aggs.metrics.minTitle', { @@ -32,31 +31,22 @@ export interface AggParamsMin extends BaseAggParams { field: string; } -export interface MinMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getMinMetricAgg = ({ getInternalStartServices }: MinMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.MIN, - title: minTitle, - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.metrics.minLabel', { - defaultMessage: 'Min {field}', - values: { field: aggConfig.getFieldDisplayName() }, - }); - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.DATE], - }, - ], +export const getMinMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.MIN, + title: minTitle, + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.metrics.minLabel', { + defaultMessage: 'Min {field}', + values: { field: aggConfig.getFieldDisplayName() }, + }); }, - { - getInternalStartServices, - } - ); + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.DATE], + }, + ], + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/min_fn.ts b/src/plugins/data/public/search/aggs/metrics/min_fn.ts index b51da46a137b0..7a57c79a350fa 100644 --- a/src/plugins/data/public/search/aggs/metrics/min_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/min_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/moving_avg.ts b/src/plugins/data/public/search/aggs/metrics/moving_avg.ts index 61384ef1dc106..1791d49b98437 100644 --- a/src/plugins/data/public/search/aggs/metrics/moving_avg.ts +++ b/src/plugins/data/public/search/aggs/metrics/moving_avg.ts @@ -23,7 +23,6 @@ import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsMovingAvg extends BaseAggParams { buckets_path: string; @@ -33,10 +32,6 @@ export interface AggParamsMovingAvg extends BaseAggParams { metricAgg?: string; } -export interface MovingAvgMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const movingAvgTitle = i18n.translate('data.search.aggs.metrics.movingAvgTitle', { defaultMessage: 'Moving Avg', }); @@ -45,45 +40,38 @@ const movingAvgLabel = i18n.translate('data.search.aggs.metrics.movingAvgLabel', defaultMessage: 'moving avg', }); -export const getMovingAvgMetricAgg = ({ - getInternalStartServices, -}: MovingAvgMetricAggDependencies) => { +export const getMovingAvgMetricAgg = () => { const { subtype, params, getSerializedFormat } = parentPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.MOVING_FN, - dslName: 'moving_fn', - title: movingAvgTitle, - makeLabel: (agg) => makeNestedLabel(agg, movingAvgLabel), - subtype, - getSerializedFormat, - params: [ - ...params(), - { - name: 'window', - default: 5, - }, - { - name: 'script', - default: 'MovingFunctions.unweightedAvg(values)', - }, - ], - getValue(agg, bucket) { - /** - * The previous implementation using `moving_avg` did not - * return any bucket in case there are no documents or empty window. - * The `moving_fn` aggregation returns buckets with the value null if the - * window is empty or doesn't return any value if the sibiling metric - * is null. Since our generic MetricAggType.getValue implementation - * would return the value 0 for null buckets, we need a specific - * implementation here, that preserves the null value. - */ - return bucket[agg.id] ? bucket[agg.id].value : null; + return new MetricAggType({ + name: METRIC_TYPES.MOVING_FN, + dslName: 'moving_fn', + title: movingAvgTitle, + makeLabel: (agg) => makeNestedLabel(agg, movingAvgLabel), + subtype, + getSerializedFormat, + params: [ + ...params(), + { + name: 'window', + default: 5, + }, + { + name: 'script', + default: 'MovingFunctions.unweightedAvg(values)', }, + ], + getValue(agg, bucket) { + /** + * The previous implementation using `moving_avg` did not + * return any bucket in case there are no documents or empty window. + * The `moving_fn` aggregation returns buckets with the value null if the + * window is empty or doesn't return any value if the sibiling metric + * is null. Since our generic MetricAggType.getValue implementation + * would return the value 0 for null buckets, we need a specific + * implementation here, that preserves the null value. + */ + return bucket[agg.id] ? bucket[agg.id].value : null; }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/moving_avg_fn.ts b/src/plugins/data/public/search/aggs/metrics/moving_avg_fn.ts index 54a3fa176385b..e1c1637d3ad1d 100644 --- a/src/plugins/data/public/search/aggs/metrics/moving_avg_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/moving_avg_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/parent_pipeline.test.ts b/src/plugins/data/public/search/aggs/metrics/parent_pipeline.test.ts index 91149a3f29f94..c6bba56f73ec7 100644 --- a/src/plugins/data/public/search/aggs/metrics/parent_pipeline.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/parent_pipeline.test.ts @@ -24,38 +24,31 @@ import { getSerialDiffMetricAgg } from './serial_diff'; import { AggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { IMetricAggConfig, MetricAggType } from './metric_agg_type'; -import { GetInternalStartServicesFn, InternalStartServices } from '../../../types'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; describe('parent pipeline aggs', function () { - const getInternalStartServices: GetInternalStartServicesFn = () => - (({ - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices); - const typesRegistry = mockAggTypesRegistry(); const metrics = [ { name: 'derivative', title: 'Derivative', - provider: getDerivativeMetricAgg({ getInternalStartServices }), + provider: getDerivativeMetricAgg(), }, { name: 'cumulative_sum', title: 'Cumulative Sum', - provider: getCumulativeSumMetricAgg({ getInternalStartServices }), + provider: getCumulativeSumMetricAgg(), }, { name: 'moving_avg', title: 'Moving Avg', - provider: getMovingAvgMetricAgg({ getInternalStartServices }), + provider: getMovingAvgMetricAgg(), dslName: 'moving_fn', }, { name: 'serial_diff', title: 'Serial Diff', - provider: getSerialDiffMetricAgg({ getInternalStartServices }), + provider: getSerialDiffMetricAgg(), }, ]; diff --git a/src/plugins/data/public/search/aggs/metrics/percentile_ranks.test.ts b/src/plugins/data/public/search/aggs/metrics/percentile_ranks.test.ts index 39e371763ed4b..348aecc23243a 100644 --- a/src/plugins/data/public/search/aggs/metrics/percentile_ranks.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/percentile_ranks.test.ts @@ -27,7 +27,6 @@ import { mockAggTypesRegistry } from '../test_helpers'; import { METRIC_TYPES } from './metric_agg_types'; import { FieldFormatsStart } from '../../../field_formats'; import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; import { InternalStartServices } from '../../../types'; describe('AggTypesMetricsPercentileRanksProvider class', function () { @@ -44,7 +43,6 @@ describe('AggTypesMetricsPercentileRanksProvider class', function () { getInternalStartServices: () => (({ fieldFormats, - notifications: notificationServiceMock.createStartContract(), } as unknown) as InternalStartServices), }; const typesRegistry = mockAggTypesRegistry([getPercentileRanksMetricAgg(aggTypesDependencies)]); diff --git a/src/plugins/data/public/search/aggs/metrics/percentile_ranks.ts b/src/plugins/data/public/search/aggs/metrics/percentile_ranks.ts index 1953c81a99874..3c0be229f1bbd 100644 --- a/src/plugins/data/public/search/aggs/metrics/percentile_ranks.ts +++ b/src/plugins/data/public/search/aggs/metrics/percentile_ranks.ts @@ -59,54 +59,49 @@ const getValueProps = (getInternalStartServices: GetInternalStartServicesFn) => export const getPercentileRanksMetricAgg = ({ getInternalStartServices, }: PercentileRanksMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.PERCENTILE_RANKS, - title: i18n.translate('data.search.aggs.metrics.percentileRanksTitle', { - defaultMessage: 'Percentile Ranks', - }), - makeLabel(agg) { - return i18n.translate('data.search.aggs.metrics.percentileRanksLabel', { - defaultMessage: 'Percentile ranks of {field}', - values: { field: agg.getFieldDisplayName() }, - }); - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.HISTOGRAM], - }, - { - name: 'values', - default: [], - }, - { - write(agg, output) { - output.params.keyed = false; - }, - }, - ], - getResponseAggs(agg) { - const ValueAggConfig = getResponseAggConfigClass( - agg, - getValueProps(getInternalStartServices) - ); - const values = agg.getParam('values'); - - return values.map((value: any) => new ValueAggConfig(value)); + return new MetricAggType({ + name: METRIC_TYPES.PERCENTILE_RANKS, + title: i18n.translate('data.search.aggs.metrics.percentileRanksTitle', { + defaultMessage: 'Percentile Ranks', + }), + makeLabel(agg) { + return i18n.translate('data.search.aggs.metrics.percentileRanksLabel', { + defaultMessage: 'Percentile ranks of {field}', + values: { field: agg.getFieldDisplayName() }, + }); + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.HISTOGRAM], }, - getSerializedFormat(agg) { - return { - id: 'percent', - }; + { + name: 'values', + default: [], }, - getValue(agg, bucket) { - return getPercentileValue(agg, bucket) / 100; + { + write(agg, output) { + output.params.keyed = false; + }, }, + ], + getResponseAggs(agg) { + const ValueAggConfig = getResponseAggConfigClass( + agg, + getValueProps(getInternalStartServices) + ); + const values = agg.getParam('values'); + + return values.map((value: any) => new ValueAggConfig(value)); + }, + getSerializedFormat(agg) { + return { + id: 'percent', + }; + }, + getValue(agg, bucket) { + return getPercentileValue(agg, bucket) / 100; }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/percentile_ranks_fn.ts b/src/plugins/data/public/search/aggs/metrics/percentile_ranks_fn.ts index 851e938f28c1c..08e1489a856dd 100644 --- a/src/plugins/data/public/search/aggs/metrics/percentile_ranks_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/percentile_ranks_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/percentiles.test.ts b/src/plugins/data/public/search/aggs/metrics/percentiles.test.ts index 52ab325ac5806..a44c0e5075ef9 100644 --- a/src/plugins/data/public/search/aggs/metrics/percentiles.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/percentiles.test.ts @@ -17,30 +17,16 @@ * under the License. */ -import { - IPercentileAggConfig, - getPercentilesMetricAgg, - PercentilesMetricAggDependencies, -} from './percentiles'; +import { IPercentileAggConfig, getPercentilesMetricAgg } from './percentiles'; import { AggConfigs, IAggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { METRIC_TYPES } from './metric_agg_types'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../../types'; describe('AggTypesMetricsPercentilesProvider class', () => { let aggConfigs: IAggConfigs; - const aggTypesDependencies: PercentilesMetricAggDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; beforeEach(() => { - const typesRegistry = mockAggTypesRegistry([getPercentilesMetricAgg(aggTypesDependencies)]); + const typesRegistry = mockAggTypesRegistry([getPercentilesMetricAgg()]); const field = { name: 'bytes', }; @@ -72,7 +58,7 @@ describe('AggTypesMetricsPercentilesProvider class', () => { }); it('uses the custom label if it is set', () => { - const responseAggs: any = getPercentilesMetricAgg(aggTypesDependencies).getResponseAggs( + const responseAggs: any = getPercentilesMetricAgg().getResponseAggs( aggConfigs.aggs[0] as IPercentileAggConfig ); diff --git a/src/plugins/data/public/search/aggs/metrics/percentiles.ts b/src/plugins/data/public/search/aggs/metrics/percentiles.ts index ad3c19cfaffcc..8ea493f324811 100644 --- a/src/plugins/data/public/search/aggs/metrics/percentiles.ts +++ b/src/plugins/data/public/search/aggs/metrics/percentiles.ts @@ -24,7 +24,6 @@ import { KBN_FIELD_TYPES } from '../../../../common'; import { getResponseAggConfigClass, IResponseAggConfig } from './lib/get_response_agg_config_class'; import { getPercentileValue } from './percentiles_get_value'; import { ordinalSuffix } from './lib/ordinal_suffix'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; export interface AggParamsPercentiles extends BaseAggParams { @@ -34,10 +33,6 @@ export interface AggParamsPercentiles extends BaseAggParams { export type IPercentileAggConfig = IResponseAggConfig; -export interface PercentilesMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const valueProps = { makeLabel(this: IPercentileAggConfig) { const customLabel = this.getParam('customLabel'); @@ -50,51 +45,40 @@ const valueProps = { }, }; -export const getPercentilesMetricAgg = ({ - getInternalStartServices, -}: PercentilesMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.PERCENTILES, - title: i18n.translate('data.search.aggs.metrics.percentilesTitle', { - defaultMessage: 'Percentiles', - }), - makeLabel(agg) { - return i18n.translate('data.search.aggs.metrics.percentilesLabel', { - defaultMessage: 'Percentiles of {field}', - values: { field: agg.getFieldDisplayName() }, - }); +export const getPercentilesMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.PERCENTILES, + title: i18n.translate('data.search.aggs.metrics.percentilesTitle', { + defaultMessage: 'Percentiles', + }), + makeLabel(agg) { + return i18n.translate('data.search.aggs.metrics.percentilesLabel', { + defaultMessage: 'Percentiles of {field}', + values: { field: agg.getFieldDisplayName() }, + }); + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.DATE, KBN_FIELD_TYPES.HISTOGRAM], }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [ - KBN_FIELD_TYPES.NUMBER, - KBN_FIELD_TYPES.DATE, - KBN_FIELD_TYPES.HISTOGRAM, - ], - }, - { - name: 'percents', - default: [1, 5, 25, 50, 75, 95, 99], - }, - { - write(agg, output) { - output.params.keyed = false; - }, + { + name: 'percents', + default: [1, 5, 25, 50, 75, 95, 99], + }, + { + write(agg, output) { + output.params.keyed = false; }, - ], - getResponseAggs(agg) { - const ValueAggConfig = getResponseAggConfigClass(agg, valueProps); - - return agg.getParam('percents').map((percent: any) => new ValueAggConfig(percent)); }, + ], + getResponseAggs(agg) { + const ValueAggConfig = getResponseAggConfigClass(agg, valueProps); - getValue: getPercentileValue, + return agg.getParam('percents').map((percent: any) => new ValueAggConfig(percent)); }, - { - getInternalStartServices, - } - ); + + getValue: getPercentileValue, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/percentiles_fn.ts b/src/plugins/data/public/search/aggs/metrics/percentiles_fn.ts index b799be07925fa..eb8952267f5ea 100644 --- a/src/plugins/data/public/search/aggs/metrics/percentiles_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/percentiles_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/serial_diff.ts b/src/plugins/data/public/search/aggs/metrics/serial_diff.ts index 9ea01be11fe8f..a4e4d7a8990fa 100644 --- a/src/plugins/data/public/search/aggs/metrics/serial_diff.ts +++ b/src/plugins/data/public/search/aggs/metrics/serial_diff.ts @@ -23,7 +23,6 @@ import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; import { METRIC_TYPES } from './metric_agg_types'; import { AggConfigSerialized, BaseAggParams } from '../types'; -import { GetInternalStartServicesFn } from '../../../types'; export interface AggParamsSerialDiff extends BaseAggParams { buckets_path: string; @@ -31,10 +30,6 @@ export interface AggParamsSerialDiff extends BaseAggParams { metricAgg?: string; } -export interface SerialDiffMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const serialDiffTitle = i18n.translate('data.search.aggs.metrics.serialDiffTitle', { defaultMessage: 'Serial Diff', }); @@ -43,22 +38,15 @@ const serialDiffLabel = i18n.translate('data.search.aggs.metrics.serialDiffLabel defaultMessage: 'serial diff', }); -export const getSerialDiffMetricAgg = ({ - getInternalStartServices, -}: SerialDiffMetricAggDependencies) => { +export const getSerialDiffMetricAgg = () => { const { subtype, params, getSerializedFormat } = parentPipelineAggHelper; - return new MetricAggType( - { - name: METRIC_TYPES.SERIAL_DIFF, - title: serialDiffTitle, - makeLabel: (agg) => makeNestedLabel(agg, serialDiffLabel), - subtype, - params: [...params()], - getSerializedFormat, - }, - { - getInternalStartServices, - } - ); + return new MetricAggType({ + name: METRIC_TYPES.SERIAL_DIFF, + title: serialDiffTitle, + makeLabel: (agg) => makeNestedLabel(agg, serialDiffLabel), + subtype, + params: [...params()], + getSerializedFormat, + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/serial_diff_fn.ts b/src/plugins/data/public/search/aggs/metrics/serial_diff_fn.ts index 9ba313aff7386..3cc1dacb87b3d 100644 --- a/src/plugins/data/public/search/aggs/metrics/serial_diff_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/serial_diff_fn.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; import { Assign } from '@kbn/utility-types'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/sibling_pipeline.test.ts b/src/plugins/data/public/search/aggs/metrics/sibling_pipeline.test.ts index f08e850caadce..a157d225c839c 100644 --- a/src/plugins/data/public/search/aggs/metrics/sibling_pipeline.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/sibling_pipeline.test.ts @@ -25,37 +25,30 @@ import { getBucketMaxMetricAgg } from './bucket_max'; import { AggConfigs } from '../agg_configs'; import { IMetricAggConfig, MetricAggType } from './metric_agg_type'; import { mockAggTypesRegistry } from '../test_helpers'; -import { GetInternalStartServicesFn, InternalStartServices } from '../../../types'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; describe('sibling pipeline aggs', () => { - const getInternalStartServices: GetInternalStartServicesFn = () => - (({ - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices); - const typesRegistry = mockAggTypesRegistry(); const metrics = [ { name: 'sum_bucket', title: 'Overall Sum', - provider: getBucketSumMetricAgg({ getInternalStartServices }), + provider: getBucketSumMetricAgg(), }, { name: 'avg_bucket', title: 'Overall Average', - provider: getBucketAvgMetricAgg({ getInternalStartServices }), + provider: getBucketAvgMetricAgg(), }, { name: 'min_bucket', title: 'Overall Min', - provider: getBucketMinMetricAgg({ getInternalStartServices }), + provider: getBucketMinMetricAgg(), }, { name: 'max_bucket', title: 'Overall Max', - provider: getBucketMaxMetricAgg({ getInternalStartServices }), + provider: getBucketMaxMetricAgg(), }, ]; diff --git a/src/plugins/data/public/search/aggs/metrics/std_deviation.test.ts b/src/plugins/data/public/search/aggs/metrics/std_deviation.test.ts index 2fa207e62771e..c3efe95f44a56 100644 --- a/src/plugins/data/public/search/aggs/metrics/std_deviation.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/std_deviation.test.ts @@ -17,27 +17,13 @@ * under the License. */ -import { - IStdDevAggConfig, - getStdDeviationMetricAgg, - StdDeviationMetricAggDependencies, -} from './std_deviation'; +import { IStdDevAggConfig, getStdDeviationMetricAgg } from './std_deviation'; import { AggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { METRIC_TYPES } from './metric_agg_types'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../../types'; describe('AggTypeMetricStandardDeviationProvider class', () => { - const aggTypesDependencies: StdDeviationMetricAggDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - const typesRegistry = mockAggTypesRegistry([getStdDeviationMetricAgg(aggTypesDependencies)]); + const typesRegistry = mockAggTypesRegistry([getStdDeviationMetricAgg()]); const getAggConfigs = (customLabel?: string) => { const field = { name: 'memory', @@ -72,7 +58,7 @@ describe('AggTypeMetricStandardDeviationProvider class', () => { it('uses the custom label if it is set', () => { const aggConfigs = getAggConfigs('custom label'); - const responseAggs: any = getStdDeviationMetricAgg(aggTypesDependencies).getResponseAggs( + const responseAggs: any = getStdDeviationMetricAgg().getResponseAggs( aggConfigs.aggs[0] as IStdDevAggConfig ); @@ -86,7 +72,7 @@ describe('AggTypeMetricStandardDeviationProvider class', () => { it('uses the default labels if custom label is not set', () => { const aggConfigs = getAggConfigs(); - const responseAggs: any = getStdDeviationMetricAgg(aggTypesDependencies).getResponseAggs( + const responseAggs: any = getStdDeviationMetricAgg().getResponseAggs( aggConfigs.aggs[0] as IStdDevAggConfig ); diff --git a/src/plugins/data/public/search/aggs/metrics/std_deviation.ts b/src/plugins/data/public/search/aggs/metrics/std_deviation.ts index 5d987dc2cbbe9..9aba063776252 100644 --- a/src/plugins/data/public/search/aggs/metrics/std_deviation.ts +++ b/src/plugins/data/public/search/aggs/metrics/std_deviation.ts @@ -23,7 +23,6 @@ import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { getResponseAggConfigClass, IResponseAggConfig } from './lib/get_response_agg_config_class'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; export interface AggParamsStdDeviation extends BaseAggParams { @@ -36,12 +35,8 @@ interface ValProp { } export interface IStdDevAggConfig extends IResponseAggConfig { - keyedDetails: (customLabel: string, fieldDisplayName?: string) => { [key: string]: ValProp }; - valProp: () => ValProp; -} - -export interface StdDeviationMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; + keyedDetails: (customLabel: string, fieldDisplayName?: string) => Record; + valProp: () => string[]; } const responseAggConfigProps = { @@ -85,42 +80,35 @@ const responseAggConfigProps = { }, }; -export const getStdDeviationMetricAgg = ({ - getInternalStartServices, -}: StdDeviationMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.STD_DEV, - dslName: 'extended_stats', - title: i18n.translate('data.search.aggs.metrics.standardDeviationTitle', { - defaultMessage: 'Standard Deviation', - }), - makeLabel(agg) { - return i18n.translate('data.search.aggs.metrics.standardDeviationLabel', { - defaultMessage: 'Standard Deviation of {field}', - values: { field: agg.getFieldDisplayName() }, - }); +export const getStdDeviationMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.STD_DEV, + dslName: 'extended_stats', + title: i18n.translate('data.search.aggs.metrics.standardDeviationTitle', { + defaultMessage: 'Standard Deviation', + }), + makeLabel(agg) { + return i18n.translate('data.search.aggs.metrics.standardDeviationLabel', { + defaultMessage: 'Standard Deviation of {field}', + values: { field: agg.getFieldDisplayName() }, + }); + }, + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: KBN_FIELD_TYPES.NUMBER, }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: KBN_FIELD_TYPES.NUMBER, - }, - ], + ], - getResponseAggs(agg) { - const ValueAggConfig = getResponseAggConfigClass(agg, responseAggConfigProps); + getResponseAggs(agg) { + const ValueAggConfig = getResponseAggConfigClass(agg, responseAggConfigProps); - return [new ValueAggConfig('std_lower'), new ValueAggConfig('std_upper')]; - }, + return [new ValueAggConfig('std_lower'), new ValueAggConfig('std_upper')]; + }, - getValue(agg, bucket) { - return get(bucket[agg.parentId], agg.valProp() as any); - }, + getValue(agg, bucket) { + return get(bucket[agg.parentId], agg.valProp()); }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/std_deviation_fn.ts b/src/plugins/data/public/search/aggs/metrics/std_deviation_fn.ts index 70623e2e48041..61b8a6f28f088 100644 --- a/src/plugins/data/public/search/aggs/metrics/std_deviation_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/std_deviation_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/sum.ts b/src/plugins/data/public/search/aggs/metrics/sum.ts index 66fad89316613..fa44af98554da 100644 --- a/src/plugins/data/public/search/aggs/metrics/sum.ts +++ b/src/plugins/data/public/search/aggs/metrics/sum.ts @@ -21,7 +21,6 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; const sumTitle = i18n.translate('data.search.aggs.metrics.sumTitle', { @@ -32,34 +31,25 @@ export interface AggParamsSum extends BaseAggParams { field: string; } -export interface SumMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - -export const getSumMetricAgg = ({ getInternalStartServices }: SumMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.SUM, - title: sumTitle, - makeLabel(aggConfig) { - return i18n.translate('data.search.aggs.metrics.sumLabel', { - defaultMessage: 'Sum of {field}', - values: { field: aggConfig.getFieldDisplayName() }, - }); - }, - isScalable() { - return true; - }, - params: [ - { - name: 'field', - type: 'field', - filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.HISTOGRAM], - }, - ], +export const getSumMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.SUM, + title: sumTitle, + makeLabel(aggConfig) { + return i18n.translate('data.search.aggs.metrics.sumLabel', { + defaultMessage: 'Sum of {field}', + values: { field: aggConfig.getFieldDisplayName() }, + }); + }, + isScalable() { + return true; }, - { - getInternalStartServices, - } - ); + params: [ + { + name: 'field', + type: 'field', + filterFieldTypes: [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.HISTOGRAM], + }, + ], + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/sum_fn.ts b/src/plugins/data/public/search/aggs/metrics/sum_fn.ts index a277aef02693f..e625befc8f1d9 100644 --- a/src/plugins/data/public/search/aggs/metrics/sum_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/sum_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/metrics/top_hit.test.ts b/src/plugins/data/public/search/aggs/metrics/top_hit.test.ts index 94a970a72a46f..cd5b4a2f724bd 100644 --- a/src/plugins/data/public/search/aggs/metrics/top_hit.test.ts +++ b/src/plugins/data/public/search/aggs/metrics/top_hit.test.ts @@ -18,25 +18,15 @@ */ import { dropRight, last } from 'lodash'; -import { getTopHitMetricAgg, TopHitMetricAggDependencies } from './top_hit'; +import { getTopHitMetricAgg } from './top_hit'; import { AggConfigs } from '../agg_configs'; import { mockAggTypesRegistry } from '../test_helpers'; import { IMetricAggConfig } from './metric_agg_type'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../../types'; describe('Top hit metric', () => { let aggDsl: Record; let aggConfig: IMetricAggConfig; - const aggTypesDependencies: TopHitMetricAggDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; const init = ({ fieldName = 'field', @@ -46,7 +36,7 @@ describe('Top hit metric', () => { fieldType = KBN_FIELD_TYPES.NUMBER, size = 1, }: any) => { - const typesRegistry = mockAggTypesRegistry([getTopHitMetricAgg(aggTypesDependencies)]); + const typesRegistry = mockAggTypesRegistry([getTopHitMetricAgg()]); const field = { name: fieldName, displayName: fieldName, @@ -101,7 +91,7 @@ describe('Top hit metric', () => { it('should return a label prefixed with Last if sorting in descending order', () => { init({ fieldName: 'bytes' }); - expect(getTopHitMetricAgg(aggTypesDependencies).makeLabel(aggConfig)).toEqual('Last bytes'); + expect(getTopHitMetricAgg().makeLabel(aggConfig)).toEqual('Last bytes'); }); it('should return a label prefixed with First if sorting in ascending order', () => { @@ -109,7 +99,7 @@ describe('Top hit metric', () => { fieldName: 'bytes', sortOrder: 'asc', }); - expect(getTopHitMetricAgg(aggTypesDependencies).makeLabel(aggConfig)).toEqual('First bytes'); + expect(getTopHitMetricAgg().makeLabel(aggConfig)).toEqual('First bytes'); }); it('should request the _source field', () => { @@ -150,7 +140,7 @@ describe('Top hit metric', () => { }; init({ fieldName: '@tags' }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toBe(null); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toBe(null); }); // it('should return undefined if the field does not appear in the source', () => { @@ -169,7 +159,7 @@ describe('Top hit metric', () => { }; init({ fieldName: '@tags' }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toBe(undefined); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toBe(undefined); }); it('should return the field value from the top hit', () => { @@ -188,7 +178,7 @@ describe('Top hit metric', () => { }; init({ fieldName: '@tags' }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toBe('aaa'); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toBe('aaa'); }); it('should return the object if the field value is an object', () => { @@ -210,7 +200,7 @@ describe('Top hit metric', () => { init({ fieldName: '@tags' }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toEqual({ + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toEqual({ label: 'aaa', }); }); @@ -231,10 +221,7 @@ describe('Top hit metric', () => { }; init({ fieldName: '@tags' }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toEqual([ - 'aaa', - 'bbb', - ]); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toEqual(['aaa', 'bbb']); }); it('should return undefined if the field is not in the source nor in the doc_values field', () => { @@ -256,7 +243,7 @@ describe('Top hit metric', () => { }; init({ fieldName: 'machine.os.raw', readFromDocValues: true }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toBe(undefined); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toBe(undefined); }); describe('Multivalued field and first/last X docs', () => { @@ -265,9 +252,7 @@ describe('Top hit metric', () => { fieldName: 'bytes', size: 2, }); - expect(getTopHitMetricAgg(aggTypesDependencies).makeLabel(aggConfig)).toEqual( - 'Last 2 bytes' - ); + expect(getTopHitMetricAgg().makeLabel(aggConfig)).toEqual('Last 2 bytes'); }); it('should return a label prefixed with First X docs if sorting in ascending order', () => { @@ -276,9 +261,7 @@ describe('Top hit metric', () => { size: 2, sortOrder: 'asc', }); - expect(getTopHitMetricAgg(aggTypesDependencies).makeLabel(aggConfig)).toEqual( - 'First 2 bytes' - ); + expect(getTopHitMetricAgg().makeLabel(aggConfig)).toEqual('First 2 bytes'); }); [ @@ -353,9 +336,7 @@ describe('Top hit metric', () => { }; init({ fieldName: 'bytes', aggregate: agg.type }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toEqual( - agg.result - ); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toEqual(agg.result); }); it(`should return the result of the ${agg.type} aggregation over the last X docs - ${agg.description}`, () => { @@ -379,9 +360,7 @@ describe('Top hit metric', () => { }; init({ fieldName: 'bytes', aggregate: agg.type }); - expect(getTopHitMetricAgg(aggTypesDependencies).getValue(aggConfig, bucket)).toEqual( - agg.result - ); + expect(getTopHitMetricAgg().getValue(aggConfig, bucket)).toEqual(agg.result); }); }); }); diff --git a/src/plugins/data/public/search/aggs/metrics/top_hit.ts b/src/plugins/data/public/search/aggs/metrics/top_hit.ts index c6890f98b20e4..5ca883e60afd3 100644 --- a/src/plugins/data/public/search/aggs/metrics/top_hit.ts +++ b/src/plugins/data/public/search/aggs/metrics/top_hit.ts @@ -22,7 +22,6 @@ import { i18n } from '@kbn/i18n'; import { IMetricAggConfig, MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; -import { GetInternalStartServicesFn } from '../../../types'; import { BaseAggParams } from '../types'; export interface AggParamsTopHit extends BaseAggParams { @@ -33,235 +32,223 @@ export interface AggParamsTopHit extends BaseAggParams { sortOrder?: 'desc' | 'asc'; } -export interface TopHitMetricAggDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - const isNumericFieldSelected = (agg: IMetricAggConfig) => { const field = agg.getParam('field'); return field && field.type && field.type === KBN_FIELD_TYPES.NUMBER; }; -export const getTopHitMetricAgg = ({ getInternalStartServices }: TopHitMetricAggDependencies) => { - return new MetricAggType( - { - name: METRIC_TYPES.TOP_HITS, - title: i18n.translate('data.search.aggs.metrics.topHitTitle', { - defaultMessage: 'Top Hit', - }), - makeLabel(aggConfig) { - const lastPrefixLabel = i18n.translate('data.search.aggs.metrics.topHit.lastPrefixLabel', { - defaultMessage: 'Last', - }); - const firstPrefixLabel = i18n.translate( - 'data.search.aggs.metrics.topHit.firstPrefixLabel', - { - defaultMessage: 'First', - } - ); +export const getTopHitMetricAgg = () => { + return new MetricAggType({ + name: METRIC_TYPES.TOP_HITS, + title: i18n.translate('data.search.aggs.metrics.topHitTitle', { + defaultMessage: 'Top Hit', + }), + makeLabel(aggConfig) { + const lastPrefixLabel = i18n.translate('data.search.aggs.metrics.topHit.lastPrefixLabel', { + defaultMessage: 'Last', + }); + const firstPrefixLabel = i18n.translate('data.search.aggs.metrics.topHit.firstPrefixLabel', { + defaultMessage: 'First', + }); - let prefix = - aggConfig.getParam('sortOrder').value === 'desc' ? lastPrefixLabel : firstPrefixLabel; + let prefix = + aggConfig.getParam('sortOrder').value === 'desc' ? lastPrefixLabel : firstPrefixLabel; - const size = aggConfig.getParam('size'); + const size = aggConfig.getParam('size'); - if (size !== 1) { - prefix += ` ${size}`; - } - - const field = aggConfig.getParam('field'); + if (size !== 1) { + prefix += ` ${size}`; + } - return `${prefix} ${field ? field.displayName : ''}`; - }, - params: [ - { - name: 'field', - type: 'field', - onlyAggregatable: false, - filterFieldTypes: Object.values(KBN_FIELD_TYPES).filter( - (type) => type !== KBN_FIELD_TYPES.HISTOGRAM - ), - write(agg, output) { - const field = agg.getParam('field'); - output.params = {}; + const field = aggConfig.getParam('field'); - if (field.scripted) { - output.params.script_fields = { - [field.name]: { - script: { - source: field.script, - lang: field.lang, - }, + return `${prefix} ${field ? field.displayName : ''}`; + }, + params: [ + { + name: 'field', + type: 'field', + onlyAggregatable: false, + filterFieldTypes: Object.values(KBN_FIELD_TYPES).filter( + (type) => type !== KBN_FIELD_TYPES.HISTOGRAM + ), + write(agg, output) { + const field = agg.getParam('field'); + output.params = {}; + + if (field.scripted) { + output.params.script_fields = { + [field.name]: { + script: { + source: field.script, + lang: field.lang, }, - }; - } else { - if (field.readFromDocValues) { - // always format date fields as date_time to avoid - // displaying unformatted dates like epoch_millis - // or other not-accepted momentjs formats - const format = - field.type === KBN_FIELD_TYPES.DATE ? 'date_time' : 'use_field_mapping'; - output.params.docvalue_fields = [{ field: field.name, format }]; - } - output.params._source = field.name === '_source' ? true : field.name; + }, + }; + } else { + if (field.readFromDocValues) { + // always format date fields as date_time to avoid + // displaying unformatted dates like epoch_millis + // or other not-accepted momentjs formats + const format = + field.type === KBN_FIELD_TYPES.DATE ? 'date_time' : 'use_field_mapping'; + output.params.docvalue_fields = [{ field: field.name, format }]; } - }, + output.params._source = field.name === '_source' ? true : field.name; + } }, - { - name: 'aggregate', - type: 'optioned', - options: [ - { - text: i18n.translate('data.search.aggs.metrics.topHit.minLabel', { - defaultMessage: 'Min', - }), - isCompatible: isNumericFieldSelected, - disabled: true, - value: 'min', - }, - { - text: i18n.translate('data.search.aggs.metrics.topHit.maxLabel', { - defaultMessage: 'Max', - }), - isCompatible: isNumericFieldSelected, - disabled: true, - value: 'max', - }, - { - text: i18n.translate('data.search.aggs.metrics.topHit.sumLabel', { - defaultMessage: 'Sum', - }), - isCompatible: isNumericFieldSelected, - disabled: true, - value: 'sum', - }, - { - text: i18n.translate('data.search.aggs.metrics.topHit.averageLabel', { - defaultMessage: 'Average', - }), - isCompatible: isNumericFieldSelected, - disabled: true, - value: 'average', - }, - { - text: i18n.translate('data.search.aggs.metrics.topHit.concatenateLabel', { - defaultMessage: 'Concatenate', - }), - isCompatible(aggConfig: IMetricAggConfig) { - return _.get(aggConfig.params, 'field.filterFieldTypes', '*') === '*'; - }, - disabled: true, - value: 'concat', + }, + { + name: 'aggregate', + type: 'optioned', + options: [ + { + text: i18n.translate('data.search.aggs.metrics.topHit.minLabel', { + defaultMessage: 'Min', + }), + isCompatible: isNumericFieldSelected, + disabled: true, + value: 'min', + }, + { + text: i18n.translate('data.search.aggs.metrics.topHit.maxLabel', { + defaultMessage: 'Max', + }), + isCompatible: isNumericFieldSelected, + disabled: true, + value: 'max', + }, + { + text: i18n.translate('data.search.aggs.metrics.topHit.sumLabel', { + defaultMessage: 'Sum', + }), + isCompatible: isNumericFieldSelected, + disabled: true, + value: 'sum', + }, + { + text: i18n.translate('data.search.aggs.metrics.topHit.averageLabel', { + defaultMessage: 'Average', + }), + isCompatible: isNumericFieldSelected, + disabled: true, + value: 'average', + }, + { + text: i18n.translate('data.search.aggs.metrics.topHit.concatenateLabel', { + defaultMessage: 'Concatenate', + }), + isCompatible(aggConfig: IMetricAggConfig) { + return _.get(aggConfig.params, 'field.filterFieldTypes', '*') === '*'; }, - ], - write: _.noop, - }, - { - name: 'size', - default: 1, - }, - { - name: 'sortField', - type: 'field', - filterFieldTypes: [ - KBN_FIELD_TYPES.NUMBER, - KBN_FIELD_TYPES.DATE, - KBN_FIELD_TYPES.IP, - KBN_FIELD_TYPES.STRING, - ], - default(agg: IMetricAggConfig) { - return agg.getIndexPattern().timeFieldName; + disabled: true, + value: 'concat', }, - write: _.noop, // prevent default write, it is handled below + ], + write: _.noop, + }, + { + name: 'size', + default: 1, + }, + { + name: 'sortField', + type: 'field', + filterFieldTypes: [ + KBN_FIELD_TYPES.NUMBER, + KBN_FIELD_TYPES.DATE, + KBN_FIELD_TYPES.IP, + KBN_FIELD_TYPES.STRING, + ], + default(agg: IMetricAggConfig) { + return agg.getIndexPattern().timeFieldName; }, - { - name: 'sortOrder', - type: 'optioned', - default: 'desc', - options: [ - { - text: i18n.translate('data.search.aggs.metrics.topHit.descendingLabel', { - defaultMessage: 'Descending', - }), - value: 'desc', - }, - { - text: i18n.translate('data.search.aggs.metrics.topHit.ascendingLabel', { - defaultMessage: 'Ascending', - }), - value: 'asc', - }, - ], - write(agg, output) { - const sortField = agg.params.sortField; - const sortOrder = agg.params.sortOrder; - - if (sortField.scripted) { - output.params.sort = [ - { - _script: { - script: { - source: sortField.script, - lang: sortField.lang, - }, - type: sortField.type, - order: sortOrder.value, + write: _.noop, // prevent default write, it is handled below + }, + { + name: 'sortOrder', + type: 'optioned', + default: 'desc', + options: [ + { + text: i18n.translate('data.search.aggs.metrics.topHit.descendingLabel', { + defaultMessage: 'Descending', + }), + value: 'desc', + }, + { + text: i18n.translate('data.search.aggs.metrics.topHit.ascendingLabel', { + defaultMessage: 'Ascending', + }), + value: 'asc', + }, + ], + write(agg, output) { + const sortField = agg.params.sortField; + const sortOrder = agg.params.sortOrder; + + if (sortField.scripted) { + output.params.sort = [ + { + _script: { + script: { + source: sortField.script, + lang: sortField.lang, }, + type: sortField.type, + order: sortOrder.value, }, - ]; - } else { - output.params.sort = [ - { - [sortField.name]: { - order: sortOrder.value, - }, + }, + ]; + } else { + output.params.sort = [ + { + [sortField.name]: { + order: sortOrder.value, }, - ]; - } - }, + }, + ]; + } }, - ], - getValue(agg, bucket) { - const hits: any[] = _.get(bucket, `${agg.id}.hits.hits`); - if (!hits || !hits.length) { + }, + ], + getValue(agg, bucket) { + const hits: any[] = _.get(bucket, `${agg.id}.hits.hits`); + if (!hits || !hits.length) { + return null; + } + const path = agg.getParam('field').name; + + let values = _.flatten( + hits.map((hit) => + path === '_source' ? hit._source : agg.getIndexPattern().flattenHit(hit, true)[path] + ) + ); + + if (values.length === 1) { + values = values[0]; + } + + if (Array.isArray(values)) { + if (!_.compact(values).length) { return null; } - const path = agg.getParam('field').name; - - let values = _.flatten( - hits.map((hit) => - path === '_source' ? hit._source : agg.getIndexPattern().flattenHit(hit, true)[path] - ) - ); - - if (values.length === 1) { - values = values[0]; - } - - if (Array.isArray(values)) { - if (!_.compact(values).length) { - return null; - } - const aggregate = agg.getParam('aggregate'); - - switch (aggregate.value) { - case 'max': - return _.max(values); - case 'min': - return _.min(values); - case 'sum': - return _.sum(values); - case 'average': - return _.sum(values) / values.length; - } + const aggregate = agg.getParam('aggregate'); + + switch (aggregate.value) { + case 'max': + return _.max(values); + case 'min': + return _.min(values); + case 'sum': + return _.sum(values); + case 'average': + return _.sum(values) / values.length; } - return values; - }, + } + return values; }, - { - getInternalStartServices, - } - ); + }); }; diff --git a/src/plugins/data/public/search/aggs/metrics/top_hit_fn.ts b/src/plugins/data/public/search/aggs/metrics/top_hit_fn.ts index adfd22b540e06..e0c3fd0d070b2 100644 --- a/src/plugins/data/public/search/aggs/metrics/top_hit_fn.ts +++ b/src/plugins/data/public/search/aggs/metrics/top_hit_fn.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../expressions/public'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; diff --git a/src/plugins/data/public/search/aggs/param_types/base.ts b/src/plugins/data/public/search/aggs/param_types/base.ts index 79e1cf2a540d1..1ba8a75e98cbe 100644 --- a/src/plugins/data/public/search/aggs/param_types/base.ts +++ b/src/plugins/data/public/search/aggs/param_types/base.ts @@ -17,7 +17,7 @@ * under the License. */ -import { ExpressionAstFunction } from 'src/plugins/expressions/public'; +import { ExpressionAstFunction } from 'src/plugins/expressions/common'; import { IAggConfigs } from '../agg_configs'; import { IAggConfig } from '../agg_config'; import { FetchOptions } from '../../fetch'; diff --git a/src/plugins/data/public/search/aggs/param_types/field.test.ts b/src/plugins/data/public/search/aggs/param_types/field.test.ts index 2c51d9709f906..0182471392910 100644 --- a/src/plugins/data/public/search/aggs/param_types/field.test.ts +++ b/src/plugins/data/public/search/aggs/param_types/field.test.ts @@ -18,22 +18,11 @@ */ import { BaseParamType } from './base'; -import { FieldParamType, FieldParamTypeDependencies } from './field'; +import { FieldParamType } from './field'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '../../../../common'; import { IAggConfig } from '../agg_config'; -import { fieldFormatsServiceMock } from '../../../field_formats/mocks'; -import { notificationServiceMock } from '../../../../../../../src/core/public/mocks'; -import { InternalStartServices } from '../../../types'; describe('Field', () => { - const fieldParamTypeDependencies: FieldParamTypeDependencies = { - getInternalStartServices: () => - (({ - fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - } as unknown) as InternalStartServices), - }; - const indexPattern = { id: '1234', title: 'logstash-*', @@ -63,13 +52,10 @@ describe('Field', () => { describe('constructor', () => { it('it is an instance of BaseParamType', () => { - const aggParam = new FieldParamType( - { - name: 'field', - type: 'field', - }, - fieldParamTypeDependencies - ); + const aggParam = new FieldParamType({ + name: 'field', + type: 'field', + }); expect(aggParam instanceof BaseParamType).toBeTruthy(); }); @@ -77,13 +63,10 @@ describe('Field', () => { describe('getAvailableFields', () => { it('should return only aggregatable fields by default', () => { - const aggParam = new FieldParamType( - { - name: 'field', - type: 'field', - }, - fieldParamTypeDependencies - ); + const aggParam = new FieldParamType({ + name: 'field', + type: 'field', + }); const fields = aggParam.getAvailableFields(agg); @@ -95,13 +78,10 @@ describe('Field', () => { }); it('should return all fields if onlyAggregatable is false', () => { - const aggParam = new FieldParamType( - { - name: 'field', - type: 'field', - }, - fieldParamTypeDependencies - ); + const aggParam = new FieldParamType({ + name: 'field', + type: 'field', + }); aggParam.onlyAggregatable = false; @@ -111,13 +91,10 @@ describe('Field', () => { }); it('should return all fields if filterFieldTypes was not specified', () => { - const aggParam = new FieldParamType( - { - name: 'field', - type: 'field', - }, - fieldParamTypeDependencies - ); + const aggParam = new FieldParamType({ + name: 'field', + type: 'field', + }); indexPattern.fields[1].aggregatable = true; diff --git a/src/plugins/data/public/search/aggs/param_types/field.ts b/src/plugins/data/public/search/aggs/param_types/field.ts index 63dbed9cec612..cb3617b02e882 100644 --- a/src/plugins/data/public/search/aggs/param_types/field.ts +++ b/src/plugins/data/public/search/aggs/param_types/field.ts @@ -19,12 +19,11 @@ import { i18n } from '@kbn/i18n'; import { IAggConfig } from '../agg_config'; -import { SavedObjectNotFound } from '../../../../../../plugins/kibana_utils/public'; +import { SavedObjectNotFound } from '../../../../../../plugins/kibana_utils/common'; import { BaseParamType } from './base'; import { propFilter } from '../utils'; import { isNestedField, KBN_FIELD_TYPES } from '../../../../common'; import { Field as IndexPatternField } from '../../../index_patterns'; -import { GetInternalStartServicesFn } from '../../../types'; const filterByType = propFilter('type'); @@ -32,20 +31,13 @@ export type FieldTypes = KBN_FIELD_TYPES | KBN_FIELD_TYPES[] | '*'; // TODO need to make a more explicit interface for this export type IFieldParamType = FieldParamType; -export interface FieldParamTypeDependencies { - getInternalStartServices: GetInternalStartServicesFn; -} - export class FieldParamType extends BaseParamType { required = true; scriptable = true; filterFieldTypes: FieldTypes; onlyAggregatable: boolean; - constructor( - config: Record, - { getInternalStartServices }: FieldParamTypeDependencies - ) { + constructor(config: Record) { super(config); this.filterFieldTypes = config.filterFieldTypes || '*'; @@ -91,10 +83,9 @@ export class FieldParamType extends BaseParamType { throw new SavedObjectNotFound('index-pattern-field', fieldName); } - // @ts-ignore const validField = this.getAvailableFields(aggConfig).find((f: any) => f.name === fieldName); if (!validField) { - getInternalStartServices().notifications.toasts.addDanger( + throw new Error( i18n.translate( 'data.search.aggs.paramTypes.field.invalidSavedFieldParameterErrorMessage', { diff --git a/src/plugins/data/public/search/aggs/test_helpers/function_wrapper.ts b/src/plugins/data/public/search/aggs/test_helpers/function_wrapper.ts index aa27bab8f4bd8..283e9107d3bb4 100644 --- a/src/plugins/data/public/search/aggs/test_helpers/function_wrapper.ts +++ b/src/plugins/data/public/search/aggs/test_helpers/function_wrapper.ts @@ -22,7 +22,7 @@ import { AnyExpressionFunctionDefinition, ExpressionFunctionDefinition, ExecutionContext, -} from '../../../../../../plugins/expressions/public'; +} from 'src/plugins/expressions/common'; /** * Takes a function spec and passes in default args, diff --git a/src/plugins/data/public/search/aggs/test_helpers/index.ts b/src/plugins/data/public/search/aggs/test_helpers/index.ts index 63f8ae0ce5f58..d47317d8b4725 100644 --- a/src/plugins/data/public/search/aggs/test_helpers/index.ts +++ b/src/plugins/data/public/search/aggs/test_helpers/index.ts @@ -19,4 +19,3 @@ export { functionWrapper } from './function_wrapper'; export { mockAggTypesRegistry } from './mock_agg_types_registry'; -export { mockDataServices } from './mock_data_services'; diff --git a/src/plugins/data/public/search/aggs/test_helpers/mock_agg_types_registry.ts b/src/plugins/data/public/search/aggs/test_helpers/mock_agg_types_registry.ts index 385d0cd6c6b39..4a0820c349b5f 100644 --- a/src/plugins/data/public/search/aggs/test_helpers/mock_agg_types_registry.ts +++ b/src/plugins/data/public/search/aggs/test_helpers/mock_agg_types_registry.ts @@ -17,7 +17,7 @@ * under the License. */ -import { coreMock, notificationServiceMock } from '../../../../../../../src/core/public/mocks'; +import { coreMock } from '../../../../../../../src/core/public/mocks'; import { AggTypesRegistry, AggTypesRegistryStart } from '../agg_types_registry'; import { getAggTypes } from '../agg_types'; import { BucketAggType } from '../buckets/bucket_agg_type'; @@ -74,17 +74,11 @@ export function mockAggTypesRegistry | MetricAggTyp const coreSetup = coreMock.createSetup(); coreSetup.uiSettings.get = mockUiSettings; - const coreStart = coreMock.createStart(); - coreSetup.uiSettings.get = mockUiSettings; - const aggTypes = getAggTypes({ calculateBounds: jest.fn(), getInternalStartServices: () => (({ fieldFormats: fieldFormatsServiceMock.createStartContract(), - notifications: notificationServiceMock.createStartContract(), - uiSettings: coreStart.uiSettings, - injectedMetadata: coreStart.injectedMetadata, } as unknown) as InternalStartServices), uiSettings: coreSetup.uiSettings, }); diff --git a/src/plugins/data/public/search/aggs/test_helpers/mock_data_services.ts b/src/plugins/data/public/search/aggs/test_helpers/mock_data_services.ts deleted file mode 100644 index e807e084c683a..0000000000000 --- a/src/plugins/data/public/search/aggs/test_helpers/mock_data_services.ts +++ /dev/null @@ -1,57 +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. - */ - -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { coreMock } from '../../../../../../core/public/mocks'; -import { dataPluginMock } from '../../../mocks'; -import { - setFieldFormats, - setIndexPatterns, - setInjectedMetadata, - setNotifications, - setOverlays, - setQueryService, - setSearchService, - setUiSettings, -} from '../../../services'; - -/** - * Testing helper which calls all of the service setters used in the - * data plugin. Services are added using their provided mocks. - * - * @internal - */ -export function mockDataServices() { - const core = coreMock.createStart(); - const data = dataPluginMock.createStartContract(); - - setFieldFormats(data.fieldFormats); - setIndexPatterns(data.indexPatterns); - setInjectedMetadata(core.injectedMetadata); - setNotifications(core.notifications); - setOverlays(core.overlays); - setQueryService(data.query); - setSearchService(data.search); - setUiSettings(core.uiSettings); - - return { - core, - data, - }; -} diff --git a/src/plugins/data/public/search/expressions/create_filter.test.ts b/src/plugins/data/public/search/expressions/create_filter.test.ts index 23da060cba203..a7fd67983cb92 100644 --- a/src/plugins/data/public/search/expressions/create_filter.test.ts +++ b/src/plugins/data/public/search/expressions/create_filter.test.ts @@ -21,7 +21,7 @@ import { createFilter } from './create_filter'; import { AggConfigs, IAggConfig } from '../aggs'; import { TabbedTable } from '../tabify'; import { isRangeFilter, BytesFormat, FieldFormatsGetConfigFn } from '../../../common'; -import { mockDataServices, mockAggTypesRegistry } from '../aggs/test_helpers'; +import { mockAggTypesRegistry } from '../aggs/test_helpers'; describe('createFilter', () => { let table: TabbedTable; @@ -83,7 +83,6 @@ describe('createFilter', () => { }, ], }; - mockDataServices(); }); test('ignores event when cell value is not provided', async () => { diff --git a/src/plugins/data/public/search/expressions/esaggs.ts b/src/plugins/data/public/search/expressions/esaggs.ts index c2446e9cc5555..4ac6c823d2e3b 100644 --- a/src/plugins/data/public/search/expressions/esaggs.ts +++ b/src/plugins/data/public/search/expressions/esaggs.ts @@ -24,7 +24,7 @@ import { KibanaDatatable, ExpressionFunctionDefinition, KibanaDatatableColumn, -} from '../../../../../plugins/expressions/public'; +} from 'src/plugins/expressions/public'; import { calculateObjectHash } from '../../../../../plugins/kibana_utils/public'; import { PersistedState } from '../../../../../plugins/visualizations/public'; import { Adapters } from '../../../../../plugins/inspector/public'; @@ -201,7 +201,7 @@ const handleCourierRequest = async ({ aggs, agg, requestSearchSource, - inspectorAdapters, + inspectorAdapters.requests, abortSignal ); } diff --git a/src/plugins/data/public/search/expressions/utils/courier_inspector_stats.ts b/src/plugins/data/public/search/expressions/utils/courier_inspector_stats.ts index e54c20caacb26..96d0aaa16f6ba 100644 --- a/src/plugins/data/public/search/expressions/utils/courier_inspector_stats.ts +++ b/src/plugins/data/public/search/expressions/utils/courier_inspector_stats.ts @@ -26,12 +26,12 @@ import { i18n } from '@kbn/i18n'; import { SearchResponse } from 'elasticsearch'; -import { RequestInspectorStats } from './types'; +import { RequestStatistics } from 'src/plugins/inspector/common'; import { ISearchSource } from '../../search_source'; /** @public */ export function getRequestInspectorStats(searchSource: ISearchSource) { - const stats: RequestInspectorStats = {}; + const stats: RequestStatistics = {}; const index = searchSource.getField('index'); if (index) { @@ -65,7 +65,7 @@ export function getResponseInspectorStats( resp: SearchResponse ) { const lastRequest = searchSource.history && searchSource.history[searchSource.history.length - 1]; - const stats: RequestInspectorStats = {}; + const stats: RequestStatistics = {}; if (resp && resp.took) { stats.queryTime = { diff --git a/src/plugins/data/public/search/expressions/utils/types.ts b/src/plugins/data/public/search/expressions/utils/types.ts deleted file mode 100644 index b2311e664820e..0000000000000 --- a/src/plugins/data/public/search/expressions/utils/types.ts +++ /dev/null @@ -1,34 +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. - */ - -interface InspectorStat { - label: string; - value: string; - description: string; -} - -/** @internal */ -export interface RequestInspectorStats { - indexPattern?: InspectorStat; - indexPatternId?: InspectorStat; - queryTime?: InspectorStat; - hitsTotal?: InspectorStat; - hits?: InspectorStat; - requestTime?: InspectorStat; -} diff --git a/src/plugins/data/public/search/tabify/get_columns.test.ts b/src/plugins/data/public/search/tabify/get_columns.test.ts index 35f0181f63302..7df4f5c947583 100644 --- a/src/plugins/data/public/search/tabify/get_columns.test.ts +++ b/src/plugins/data/public/search/tabify/get_columns.test.ts @@ -20,26 +20,27 @@ import { tabifyGetColumns } from './get_columns'; import { TabbedAggColumn } from './types'; import { AggConfigs } from '../aggs'; -import { mockAggTypesRegistry, mockDataServices } from '../aggs/test_helpers'; +import { mockAggTypesRegistry } from '../aggs/test_helpers'; describe('get columns', () => { - beforeEach(() => { - mockDataServices(); - }); - const typesRegistry = mockAggTypesRegistry(); const createAggConfigs = (aggs: any[] = []) => { - const field = { - name: '@timestamp', - }; + const fields = [ + { + name: '@timestamp', + }, + { + name: 'bytes', + }, + ]; const indexPattern = { id: '1234', title: 'logstash-*', fields: { - getByName: () => field, - filter: () => [field], + getByName: (name: string) => fields.find((f) => f.name === name), + filter: () => fields, }, } as any; diff --git a/src/plugins/data/public/search/tabify/response_writer.test.ts b/src/plugins/data/public/search/tabify/response_writer.test.ts index 94473d23ccc39..5a5ef8bd29524 100644 --- a/src/plugins/data/public/search/tabify/response_writer.test.ts +++ b/src/plugins/data/public/search/tabify/response_writer.test.ts @@ -19,14 +19,10 @@ import { TabbedAggResponseWriter } from './response_writer'; import { AggConfigs, BUCKET_TYPES } from '../aggs'; -import { mockDataServices, mockAggTypesRegistry } from '../aggs/test_helpers'; +import { mockAggTypesRegistry } from '../aggs/test_helpers'; import { TabbedResponseWriterOptions } from './types'; describe('TabbedAggResponseWriter class', () => { - beforeEach(() => { - mockDataServices(); - }); - let responseWriter: TabbedAggResponseWriter; const typesRegistry = mockAggTypesRegistry(); @@ -58,16 +54,21 @@ describe('TabbedAggResponseWriter class', () => { ]; const createResponseWritter = (aggs: any[] = [], opts?: Partial) => { - const field = { - name: 'geo.src', - }; + const fields = [ + { + name: 'geo.src', + }, + { + name: 'machine.os.raw', + }, + ]; const indexPattern = { id: '1234', title: 'logstash-*', fields: { - getByName: () => field, - filter: () => [field], + getByName: (name: string) => fields.find((f) => f.name === name), + filter: () => fields, }, } as any; diff --git a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts index 01a664837e704..114be67e490cf 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts +++ b/src/plugins/data/public/ui/filter_bar/filter_editor/lib/filter_editor_utils.ts @@ -18,12 +18,12 @@ */ import dateMath from '@elastic/datemath'; -import { Ipv4Address } from '../../../../../../kibana_utils/public'; import { FILTER_OPERATORS, Operator } from './filter_operators'; import { isFilterable, IIndexPattern, IFieldType, + Ipv4Address, Filter, FieldFilter, } from '../../../../../common'; diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx index 120bbf3b68f7b..c746449f14c26 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx @@ -54,6 +54,7 @@ interface Props { bubbleSubmitEvent?: boolean; placeholder?: string; languageSwitcherPopoverAnchorPosition?: PopoverAnchorPosition; + onBlur?: () => void; onChange?: (query: Query) => void; onSubmit?: (query: Query) => void; dataTestSubj?: string; @@ -535,6 +536,7 @@ export class QueryStringInputUI extends Component { onKeyUp={this.onKeyUp} onChange={this.onInputChange} onClick={this.onClickInput} + onBlur={this.props.onBlur} fullWidth autoFocus={!this.props.disableAutoFocus} inputRef={(node) => { diff --git a/src/plugins/data/server/index.ts b/src/plugins/data/server/index.ts index 6a4eb38b552ff..0dd0115add8ad 100644 --- a/src/plugins/data/server/index.ts +++ b/src/plugins/data/server/index.ts @@ -155,6 +155,7 @@ import { dateHistogramInterval, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, + Ipv4Address, isValidEsInterval, isValidInterval, parseEsInterval, @@ -184,6 +185,7 @@ export const search = { dateHistogramInterval, InvalidEsCalendarIntervalError, InvalidEsIntervalFormatError, + Ipv4Address, isValidEsInterval, isValidInterval, parseEsInterval, diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index f029609cbf7ec..0048816456e17 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -732,6 +732,7 @@ export const search: { dateHistogramInterval: typeof dateHistogramInterval; InvalidEsCalendarIntervalError: typeof InvalidEsCalendarIntervalError; InvalidEsIntervalFormatError: typeof InvalidEsIntervalFormatError; + Ipv4Address: typeof Ipv4Address; isValidEsInterval: typeof isValidEsInterval; isValidInterval: typeof isValidInterval; parseEsInterval: typeof parseEsInterval; @@ -820,12 +821,13 @@ export const UI_SETTINGS: { // src/plugins/data/server/index.ts:102:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:129:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:129:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:184:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:185:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:186:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:187:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:188:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:191:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:185:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:186:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:187:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:188:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:189:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:190:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:193:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/src/plugins/inspector/common/adapters/index.ts b/src/plugins/inspector/common/adapters/index.ts index 8e1979ab33275..2fc465e7d0b2d 100644 --- a/src/plugins/inspector/common/adapters/index.ts +++ b/src/plugins/inspector/common/adapters/index.ts @@ -18,4 +18,4 @@ */ export { DataAdapter, FormattedData } from './data'; -export { RequestAdapter, RequestStatus } from './request'; +export { RequestAdapter, RequestStatistic, RequestStatistics, RequestStatus } from './request'; diff --git a/src/plugins/inspector/common/adapters/request/index.ts b/src/plugins/inspector/common/adapters/request/index.ts index 7359c56999a94..5c93757e86d05 100644 --- a/src/plugins/inspector/common/adapters/request/index.ts +++ b/src/plugins/inspector/common/adapters/request/index.ts @@ -17,6 +17,5 @@ * under the License. */ -export { RequestStatus } from './types'; - +export { RequestStatistic, RequestStatistics, RequestStatus } from './types'; export { RequestAdapter } from './request_adapter'; diff --git a/src/plugins/kibana_utils/public/index.ts b/src/plugins/kibana_utils/public/index.ts index 2911a9ae75689..e2d6ae647abb1 100644 --- a/src/plugins/kibana_utils/public/index.ts +++ b/src/plugins/kibana_utils/public/index.ts @@ -35,7 +35,6 @@ export { export * from './core'; export * from '../common/errors'; export * from './field_wildcard'; -export * from './parse'; export * from './render_complete'; export * from './resize_checker'; export * from '../common/state_containers'; diff --git a/src/plugins/kibana_utils/public/parse/index.ts b/src/plugins/kibana_utils/public/parse/index.ts deleted file mode 100644 index 997cf1b9ae4d1..0000000000000 --- a/src/plugins/kibana_utils/public/parse/index.ts +++ /dev/null @@ -1,20 +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. - */ - -export * from './ipv4_address'; diff --git a/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx b/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx index 8fe5cdb47a53d..c0c46f6714c2d 100644 --- a/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/components/from_to_list.tsx @@ -21,7 +21,7 @@ import React, { useCallback } from 'react'; import { EuiFieldText, EuiFlexItem, EuiIcon } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { Ipv4Address } from '../../../../../kibana_utils/public'; +import { search } from '../../../../../data/public'; import { InputList, InputListConfig, InputModel, InputObject, InputItem } from './input_list'; const EMPTY_STRING = ''; @@ -49,7 +49,7 @@ const defaultConfig = { from: { value: '0.0.0.0', model: '0.0.0.0', isInvalid: false }, to: { value: '255.255.255.255', model: '255.255.255.255', isInvalid: false }, }, - validateClass: Ipv4Address, + validateClass: search.aggs.Ipv4Address, getModelValue: (item: FromToObject = {}) => ({ from: { value: item.from || EMPTY_STRING, diff --git a/src/plugins/vis_default_editor/public/components/controls/filter.tsx b/src/plugins/vis_default_editor/public/components/controls/filter.tsx index 0228c79139f16..94fd2d9bc9151 100644 --- a/src/plugins/vis_default_editor/public/components/controls/filter.tsx +++ b/src/plugins/vis_default_editor/public/components/controls/filter.tsx @@ -22,6 +22,7 @@ import { EuiForm, EuiButtonIcon, EuiFieldText, EuiFormRow, EuiSpacer } from '@el import { i18n } from '@kbn/i18n'; import { IAggConfig, Query, QueryStringInput } from '../../../../data/public'; +import { useKibana } from '../../../../kibana_react/public'; interface FilterRowProps { id: string; @@ -48,6 +49,7 @@ function FilterRow({ onChangeValue, onRemoveFilter, }: FilterRowProps) { + const { services } = useKibana(); const [showCustomLabel, setShowCustomLabel] = useState(false); const filterLabel = i18n.translate('visDefaultEditor.controls.filters.filterLabel', { defaultMessage: 'Filter {index}', @@ -56,6 +58,13 @@ function FilterRow({ }, }); + const onBlur = () => { + if (value.query.length > 0) { + // Store filter to the query log so that it is available in autocomplete. + services.data.query.addToQueryLog(services.appName, value); + } + }; + const FilterControl = (
onChangeValue(id, query, customLabel)} + onBlur={onBlur} disableAutoFocus={!autoFocus} dataTestSubj={dataTestSubj} bubbleSubmitEvent={true} diff --git a/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts b/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts index 888c881f45ce4..483ca5d6d332e 100644 --- a/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.ts @@ -7,8 +7,8 @@ import dateMath from '@elastic/datemath'; import { EuiComboBoxOptionOption } from '@elastic/eui'; -import { IFieldType } from '../../../../../../../src/plugins/data/common'; -import { Ipv4Address } from '../../../../../../../src/plugins/kibana_utils/public'; +import { IFieldType, Ipv4Address } from '../../../../../../../src/plugins/data/common'; + import { EXCEPTION_OPERATORS, isOperator, From ce1846511f105f06ea4900057df53129aa33272a Mon Sep 17 00:00:00 2001 From: Gidi Meir Morris Date: Wed, 8 Jul 2020 08:33:26 +0100 Subject: [PATCH 02/38] fixed api url in example plugin (#70934) This PR fixes a API URL used in the Alerting Example plugin which was broken when the Api Endpoint was migrated to it's new location --- examples/alerting_example/public/components/view_alert.tsx | 4 ++-- .../alerting_example/public/components/view_astros_alert.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/alerting_example/public/components/view_alert.tsx b/examples/alerting_example/public/components/view_alert.tsx index 75a515bfa1b25..0f7fc70648a9e 100644 --- a/examples/alerting_example/public/components/view_alert.tsx +++ b/examples/alerting_example/public/components/view_alert.tsx @@ -49,10 +49,10 @@ export const ViewAlertPage = withRouter(({ http, id }: Props) => { useEffect(() => { if (!alert) { - http.get(`${BASE_ALERT_API_PATH}/${id}`).then(setAlert); + http.get(`${BASE_ALERT_API_PATH}/alert/${id}`).then(setAlert); } if (!alertState) { - http.get(`${BASE_ALERT_API_PATH}/${id}/state`).then(setAlertState); + http.get(`${BASE_ALERT_API_PATH}/alert/${id}/state`).then(setAlertState); } }, [alert, alertState, http, id]); diff --git a/examples/alerting_example/public/components/view_astros_alert.tsx b/examples/alerting_example/public/components/view_astros_alert.tsx index 19f235a3f3e4e..b2d3cec269b72 100644 --- a/examples/alerting_example/public/components/view_astros_alert.tsx +++ b/examples/alerting_example/public/components/view_astros_alert.tsx @@ -55,10 +55,10 @@ export const ViewPeopleInSpaceAlertPage = withRouter(({ http, id }: Props) => { useEffect(() => { if (!alert) { - http.get(`${BASE_ALERT_API_PATH}/${id}`).then(setAlert); + http.get(`${BASE_ALERT_API_PATH}/alert/${id}`).then(setAlert); } if (!alertState) { - http.get(`${BASE_ALERT_API_PATH}/${id}/state`).then(setAlertState); + http.get(`${BASE_ALERT_API_PATH}/alert/${id}/state`).then(setAlertState); } }, [alert, alertState, http, id]); From acd5da8b9d3c5ae767256387b0b36f716a55ca27 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Wed, 8 Jul 2020 08:45:20 +0100 Subject: [PATCH 03/38] [Functional test] Add retry for dashboard save (#70950) --- test/functional/page_objects/dashboard_page.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index 92482a3779771..7c325ba6d4aec 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -290,14 +290,16 @@ export function DashboardPageProvider({ getService, getPageObjects }: FtrProvide dashboardName: string, saveOptions: SaveDashboardOptions = { waitDialogIsClosed: true } ) { - await this.enterDashboardTitleAndClickSave(dashboardName, saveOptions); + await retry.try(async () => { + await this.enterDashboardTitleAndClickSave(dashboardName, saveOptions); - if (saveOptions.needsConfirm) { - await this.clickSave(); - } + if (saveOptions.needsConfirm) { + await this.clickSave(); + } - // Confirm that the Dashboard has actually been saved - await testSubjects.existOrFail('saveDashboardSuccess'); + // Confirm that the Dashboard has actually been saved + await testSubjects.existOrFail('saveDashboardSuccess'); + }); const message = await PageObjects.common.closeToast(); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.common.waitForSaveModalToClose(); From bb96f5dd948ed5ad25924bf0140709eb6dbfae50 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Wed, 8 Jul 2020 10:10:32 +0200 Subject: [PATCH 04/38] [ML] Transforms/DFA: Refactor list action buttons so modals won't unmount after button click. (#70555) Related to #70383 and #63455. Refactors the action buttons of the transform and data frame analytics jobs list: Previously custom actions included state and JSX for e.g. confirmation modals. Problem with that: If the actions list popover hides, the modal would unmount too. Since EUI's behaviour will change with the release/merge of #70383, we needed a refactor that solves that issue right now. With this PR, state management for UI behaviour that follows after a button click like the confirmation modals was moved to a custom hook which is part of the outer level of the buttons itself. The modal now also gets mounted on the outer level. This way we won't loose the modals state and DOM rendering when the action button hides. Note that this PR doesn't fix the nested buttons issue (#63455) yet. For that we need EUI issue #70383 to be in Kibana which will arrive with EUI v26.3.0 via #70243. So there will be one follow up to that which will focus on getting rid of the nested button structure. --- .../evaluate_panel.tsx | 2 +- .../exploration_results_table.tsx | 2 +- .../outlier_exploration.tsx | 2 +- .../regression_exploration/evaluate_panel.tsx | 2 +- .../clone_button.test.ts} | 2 +- .../clone_button.tsx} | 6 +- .../components/action_clone/index.ts | 12 + .../action_delete.test.tsx | 32 ++- .../action_delete/delete_button.tsx | 64 +++++ .../action_delete/delete_button_modal.tsx | 108 ++++++++ .../components/action_delete/index.ts | 9 + .../action_delete/use_delete_action.ts | 140 ++++++++++ .../edit_button.tsx} | 40 +-- .../edit_button_flyout.tsx} | 9 +- .../components/action_edit/index.ts | 9 + .../components/action_edit/use_edit_action.ts | 37 +++ .../components/action_start/index.ts | 9 + .../components/action_start/start_button.tsx | 66 +++++ .../action_start/start_button_modal.tsx | 51 ++++ .../action_start/use_start_action.ts | 38 +++ .../components/action_stop/index.ts | 7 + .../components/action_stop/stop_button.tsx | 57 ++++ .../action_view/get_view_action.tsx | 22 ++ .../components/action_view/index.ts | 8 + .../components/action_view/view_button.tsx | 61 +++++ .../analytics_list/action_delete.tsx | 248 ------------------ .../analytics_list/action_start.tsx | 120 --------- .../components/analytics_list/actions.tsx | 157 ----------- .../analytics_list/analytics_list.tsx | 54 ++-- .../analytics_list/expanded_row.tsx | 2 +- .../components/analytics_list/use_actions.tsx | 81 ++++++ .../{columns.tsx => use_columns.tsx} | 22 +- .../hooks/use_create_analytics_form/state.ts | 2 +- .../use_create_analytics_form.ts | 5 +- .../components/analytics_panel/table.tsx | 6 +- .../clone_button.tsx} | 16 +- .../components/action_clone/index.ts | 7 + .../__snapshots__/delete_button.test.tsx.snap | 22 ++ .../delete_button.test.tsx} | 12 +- .../action_delete/delete_button.tsx | 77 ++++++ .../delete_button_modal.tsx} | 154 +++-------- .../components/action_delete/index.ts | 9 + .../action_delete/use_delete_action.ts | 75 ++++++ .../edit_button.tsx} | 37 +-- .../components/action_edit/index.ts | 8 + .../components/action_edit/use_edit_action.ts | 26 ++ .../__snapshots__/start_button.test.tsx.snap | 20 ++ .../components/action_start/index.ts | 9 + .../start_button.test.tsx} | 12 +- .../components/action_start/start_button.tsx | 106 ++++++++ .../action_start/start_button_modal.tsx | 55 ++++ .../action_start/use_start_action.ts | 42 +++ .../__snapshots__/stop_button.test.tsx.snap} | 13 +- .../components/action_stop/index.ts | 7 + .../stop_button.test.tsx} | 11 +- .../stop_button.tsx} | 20 +- .../__snapshots__/action_delete.test.tsx.snap | 23 -- .../__snapshots__/action_start.test.tsx.snap | 23 -- .../transform_list/action_start.tsx | 168 ------------ .../components/transform_list/actions.tsx | 45 ---- .../transform_list/transform_list.test.tsx | 1 + .../transform_list/transform_list.tsx | 32 ++- ...{actions.test.tsx => use_actions.test.tsx} | 10 +- .../components/transform_list/use_actions.tsx | 79 ++++++ ...{columns.test.tsx => use_columns.test.tsx} | 10 +- .../{columns.tsx => use_columns.tsx} | 10 +- 66 files changed, 1523 insertions(+), 1108 deletions(-) rename x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/{analytics_list/action_clone.test.ts => action_clone/clone_button.test.ts} (99%) rename x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/{analytics_list/action_clone.tsx => action_clone/clone_button.tsx} (98%) create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/index.ts rename x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/{analytics_list => action_delete}/action_delete.test.tsx (78%) create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button_modal.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/index.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/use_delete_action.ts rename x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/{analytics_list/action_edit.tsx => action_edit/edit_button.tsx} (55%) rename x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/{analytics_list/edit_analytics_flyout.tsx => action_edit/edit_button_flyout.tsx} (97%) create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/index.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/use_edit_action.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/index.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button_modal.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/use_start_action.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/index.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/stop_button.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/get_view_action.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/index.ts create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/view_button.tsx delete mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx delete mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_start.tsx delete mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx create mode 100644 x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_actions.tsx rename x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/{columns.tsx => use_columns.tsx} (93%) rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_clone.tsx => action_clone/clone_button.tsx} (80%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/index.ts create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/__snapshots__/delete_button.test.tsx.snap rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_delete.test.tsx => action_delete/delete_button.test.tsx} (74%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.tsx rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_delete.tsx => action_delete/delete_button_modal.tsx} (54%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/index.ts create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/use_delete_action.ts rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_edit.tsx => action_edit/edit_button.tsx} (53%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/index.ts create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/use_edit_action.ts create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/__snapshots__/start_button.test.tsx.snap create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/index.ts rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_start.test.tsx => action_start/start_button.test.tsx} (74%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.tsx create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button_modal.tsx create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/use_start_action.ts rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/__snapshots__/action_stop.test.tsx.snap => action_stop/__snapshots__/stop_button.test.tsx.snap} (78%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/index.ts rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_stop.test.tsx => action_stop/stop_button.test.tsx} (76%) rename x-pack/plugins/transform/public/app/sections/transform_management/components/{transform_list/action_stop.tsx => action_stop/stop_button.tsx} (85%) delete mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_delete.test.tsx.snap delete mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_start.test.tsx.snap delete mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.tsx delete mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/actions.tsx rename x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/{actions.test.tsx => use_actions.test.tsx} (63%) create mode 100644 x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_actions.tsx rename x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/{columns.test.tsx => use_columns.test.tsx} (67%) rename x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/{columns.tsx => use_columns.tsx} (96%) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/evaluate_panel.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/evaluate_panel.tsx index 45f883c4ccd94..86e2c5fd2fb94 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/evaluate_panel.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/classification_exploration/evaluate_panel.tsx @@ -30,7 +30,7 @@ import { DataFrameAnalyticsConfig, } from '../../../../common'; import { isKeywordAndTextType } from '../../../../common/fields'; -import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/columns'; +import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/use_columns'; import { DATA_FRAME_TASK_STATE } from '../../../analytics_management/components/analytics_list/common'; import { isResultsSearchBoolQuery, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx index 755bac699ce40..8395a11bd6fda 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_results_table/exploration_results_table.tsx @@ -29,7 +29,7 @@ import { SEARCH_SIZE, defaultSearchQuery, } from '../../../../common'; -import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/columns'; +import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/use_columns'; import { DATA_FRAME_TASK_STATE } from '../../../analytics_management/components/analytics_list/common'; import { ExplorationTitle } from '../exploration_title'; import { ExplorationQueryBar } from '../exploration_query_bar'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx index 9afb50c11fad7..9341c0aa1a338 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/outlier_exploration/outlier_exploration.tsx @@ -29,7 +29,7 @@ import { getToastNotifications } from '../../../../../util/dependency_cache'; import { defaultSearchQuery, useResultsViewConfig, INDEX_STATUS } from '../../../../common'; -import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/columns'; +import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/use_columns'; import { ExplorationQueryBar } from '../exploration_query_bar'; import { ExplorationTitle } from '../exploration_title'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx index f6e8e0047671f..d31b7734f9969 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx @@ -27,7 +27,7 @@ import { Eval, DataFrameAnalyticsConfig, } from '../../../../common'; -import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/columns'; +import { getTaskStateBadge } from '../../../analytics_management/components/analytics_list/use_columns'; import { DATA_FRAME_TASK_STATE } from '../../../analytics_management/components/analytics_list/common'; import { EvaluateStat } from './evaluate_stat'; import { diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_clone.test.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_button.test.ts similarity index 99% rename from x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_clone.test.ts rename to x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_button.test.ts index 4227c19fec5af..006cccf3b4610 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_clone.test.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_button.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { isAdvancedConfig } from './action_clone'; +import { isAdvancedConfig } from './clone_button'; describe('Analytics job clone action', () => { describe('isAdvancedConfig', () => { diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_clone.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_button.tsx similarity index 98% rename from x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_clone.tsx rename to x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_button.tsx index bff54bc283296..f8b6fdfbe2119 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_clone.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_button.tsx @@ -19,7 +19,7 @@ import { DEFAULT_NUM_TOP_FEATURE_IMPORTANCE_VALUES, } from '../../hooks/use_create_analytics_form'; import { State } from '../../hooks/use_create_analytics_form/state'; -import { DataFrameAnalyticsListRow } from './common'; +import { DataFrameAnalyticsListRow } from '../analytics_list/common'; import { checkPermission } from '../../../../../capabilities/check_capabilities'; import { extractErrorMessage } from '../../../../../../../common/util/errors'; @@ -343,7 +343,7 @@ export function getCloneAction(createAnalyticsForm: CreateAnalyticsFormProps) { }; } -interface CloneActionProps { +interface CloneButtonProps { item: DataFrameAnalyticsListRow; createAnalyticsForm: CreateAnalyticsFormProps; } @@ -353,7 +353,7 @@ interface CloneActionProps { * Replace with {@link getCloneAction} as soon as all the actions are refactored * to support EuiContext with a valid DOM structure without nested buttons. */ -export const CloneAction: FC = ({ createAnalyticsForm, item }) => { +export const CloneButton: FC = ({ createAnalyticsForm, item }) => { const canCreateDataFrameAnalytics: boolean = checkPermission('canCreateDataFrameAnalytics'); const buttonText = i18n.translate('xpack.ml.dataframe.analyticsList.cloneJobButtonLabel', { diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/index.ts new file mode 100644 index 0000000000000..b3d7189ff8cda --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { + extractCloningConfig, + isAdvancedConfig, + CloneButton, + CloneDataFrameAnalyticsConfig, +} from './clone_button'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.test.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/action_delete.test.tsx similarity index 78% rename from x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.test.tsx rename to x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/action_delete.test.tsx index 33217f127f998..8d6272c5df860 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.test.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/action_delete.test.tsx @@ -7,14 +7,17 @@ import React from 'react'; import { fireEvent, render } from '@testing-library/react'; import * as CheckPrivilige from '../../../../../capabilities/check_capabilities'; -import mockAnalyticsListItem from './__mocks__/analytics_list_item.json'; -import { DeleteAction } from './action_delete'; +import mockAnalyticsListItem from '../analytics_list/__mocks__/analytics_list_item.json'; import { I18nProvider } from '@kbn/i18n/react'; import { coreMock as mockCoreServices, i18nServiceMock, } from '../../../../../../../../../../src/core/public/mocks'; +import { DeleteButton } from './delete_button'; +import { DeleteButtonModal } from './delete_button_modal'; +import { useDeleteAction } from './use_delete_action'; + jest.mock('../../../../../capabilities/check_capabilities', () => ({ checkPermission: jest.fn(() => false), createPermissionFailureMessage: jest.fn(), @@ -41,14 +44,18 @@ describe('DeleteAction', () => { }); test('When canDeleteDataFrameAnalytics permission is false, button should be disabled.', () => { - const { getByTestId } = render(); + const { getByTestId } = render( + {}} /> + ); expect(getByTestId('mlAnalyticsJobDeleteButton')).toHaveAttribute('disabled'); }); test('When canDeleteDataFrameAnalytics permission is true, button should not be disabled.', () => { const mock = jest.spyOn(CheckPrivilige, 'checkPermission'); mock.mockImplementation((p) => p === 'canDeleteDataFrameAnalytics'); - const { getByTestId } = render(); + const { getByTestId } = render( + {}} /> + ); expect(getByTestId('mlAnalyticsJobDeleteButton')).not.toHaveAttribute('disabled'); @@ -57,11 +64,12 @@ describe('DeleteAction', () => { test('When job is running, delete button should be disabled.', () => { const { getByTestId } = render( - {}} /> ); @@ -72,9 +80,21 @@ describe('DeleteAction', () => { test('should allow to delete target index by default.', () => { const mock = jest.spyOn(CheckPrivilige, 'checkPermission'); mock.mockImplementation((p) => p === 'canDeleteDataFrameAnalytics'); + + const TestComponent = () => { + const deleteAction = useDeleteAction(); + + return ( + <> + {deleteAction.isModalVisible && } + + + ); + }; + const { getByTestId, queryByTestId } = render( - + ); const deleteButton = getByTestId('mlAnalyticsJobDeleteButton'); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button.tsx new file mode 100644 index 0000000000000..7da3bced48576 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; +import { + checkPermission, + createPermissionFailureMessage, +} from '../../../../../capabilities/check_capabilities'; +import { isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from '../analytics_list/common'; + +interface DeleteButtonProps { + item: DataFrameAnalyticsListRow; + onClick: (item: DataFrameAnalyticsListRow) => void; +} + +export const DeleteButton: FC = ({ item, onClick }) => { + const disabled = isDataFrameAnalyticsRunning(item.stats.state); + const canDeleteDataFrameAnalytics: boolean = checkPermission('canDeleteDataFrameAnalytics'); + + const buttonDeleteText = i18n.translate('xpack.ml.dataframe.analyticsList.deleteActionName', { + defaultMessage: 'Delete', + }); + + const buttonDisabled = disabled || !canDeleteDataFrameAnalytics; + let deleteButton = ( + onClick(item)} + aria-label={buttonDeleteText} + style={{ padding: 0 }} + > + {buttonDeleteText} + + ); + + if (disabled || !canDeleteDataFrameAnalytics) { + deleteButton = ( + + {deleteButton} + + ); + } + + return deleteButton; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button_modal.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button_modal.tsx new file mode 100644 index 0000000000000..f94dccee479bd --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/delete_button_modal.tsx @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiConfirmModal, + EuiOverlayMask, + EuiSwitch, + EuiFlexGroup, + EuiFlexItem, + EUI_MODAL_CONFIRM_BUTTON, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { DeleteAction } from './use_delete_action'; + +export const DeleteButtonModal: FC = ({ + closeModal, + deleteAndCloseModal, + deleteTargetIndex, + deleteIndexPattern, + indexPatternExists, + item, + toggleDeleteIndex, + toggleDeleteIndexPattern, + userCanDeleteIndex, +}) => { + if (item === undefined) { + return null; + } + + const indexName = item.config.dest.index; + + return ( + + +

+ +

+ + + + {userCanDeleteIndex && ( + + )} + + + {userCanDeleteIndex && indexPatternExists && ( + + )} + + +
+
+ ); +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/index.ts new file mode 100644 index 0000000000000..ef891d7c4a128 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { DeleteButton } from './delete_button'; +export { DeleteButtonModal } from './delete_button_modal'; +export { useDeleteAction } from './use_delete_action'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/use_delete_action.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/use_delete_action.ts new file mode 100644 index 0000000000000..f924cf3afcba5 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_delete/use_delete_action.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useEffect, useState } from 'react'; + +import { i18n } from '@kbn/i18n'; + +import { IIndexPattern } from 'src/plugins/data/common'; + +import { extractErrorMessage } from '../../../../../../../common/util/errors'; + +import { useMlKibana } from '../../../../../contexts/kibana'; + +import { + deleteAnalytics, + deleteAnalyticsAndDestIndex, + canDeleteIndex, +} from '../../services/analytics_service'; + +import { DataFrameAnalyticsListRow } from '../analytics_list/common'; + +export type DeleteAction = ReturnType; +export const useDeleteAction = () => { + const [item, setItem] = useState(); + + const [isModalVisible, setModalVisible] = useState(false); + const [deleteTargetIndex, setDeleteTargetIndex] = useState(true); + const [deleteIndexPattern, setDeleteIndexPattern] = useState(true); + const [userCanDeleteIndex, setUserCanDeleteIndex] = useState(false); + const [indexPatternExists, setIndexPatternExists] = useState(false); + + const { savedObjects, notifications } = useMlKibana().services; + const savedObjectsClient = savedObjects.client; + + const indexName = item?.config.dest.index ?? ''; + + const checkIndexPatternExists = async () => { + try { + const response = await savedObjectsClient.find({ + type: 'index-pattern', + perPage: 10, + search: `"${indexName}"`, + searchFields: ['title'], + fields: ['title'], + }); + const ip = response.savedObjects.find( + (obj) => obj.attributes.title.toLowerCase() === indexName.toLowerCase() + ); + if (ip !== undefined) { + setIndexPatternExists(true); + } + } catch (e) { + const { toasts } = notifications; + const error = extractErrorMessage(e); + + toasts.addDanger( + i18n.translate( + 'xpack.ml.dataframe.analyticsList.errorWithCheckingIfIndexPatternExistsNotificationErrorMessage', + { + defaultMessage: + 'An error occurred checking if index pattern {indexPattern} exists: {error}', + values: { indexPattern: indexName, error }, + } + ) + ); + } + }; + const checkUserIndexPermission = () => { + try { + const userCanDelete = canDeleteIndex(indexName); + if (userCanDelete) { + setUserCanDeleteIndex(true); + } + } catch (e) { + const { toasts } = notifications; + const error = extractErrorMessage(e); + + toasts.addDanger( + i18n.translate( + 'xpack.ml.dataframe.analyticsList.errorWithCheckingIfUserCanDeleteIndexNotificationErrorMessage', + { + defaultMessage: + 'An error occurred checking if user can delete {destinationIndex}: {error}', + values: { destinationIndex: indexName, error }, + } + ) + ); + } + }; + + useEffect(() => { + // Check if an index pattern exists corresponding to current DFA job + // if pattern does exist, show it to user + checkIndexPatternExists(); + + // Check if an user has permission to delete the index & index pattern + checkUserIndexPermission(); + }, []); + + const closeModal = () => setModalVisible(false); + const deleteAndCloseModal = () => { + setModalVisible(false); + + if (item !== undefined) { + if ((userCanDeleteIndex && deleteTargetIndex) || (userCanDeleteIndex && deleteIndexPattern)) { + deleteAnalyticsAndDestIndex( + item, + deleteTargetIndex, + indexPatternExists && deleteIndexPattern + ); + } else { + deleteAnalytics(item); + } + } + }; + const toggleDeleteIndex = () => setDeleteTargetIndex(!deleteTargetIndex); + const toggleDeleteIndexPattern = () => setDeleteIndexPattern(!deleteIndexPattern); + + const openModal = (newItem: DataFrameAnalyticsListRow) => { + setItem(newItem); + setModalVisible(true); + }; + + return { + closeModal, + deleteAndCloseModal, + deleteTargetIndex, + deleteIndexPattern, + indexPatternExists, + isModalVisible, + item, + openModal, + toggleDeleteIndex, + toggleDeleteIndexPattern, + userCanDeleteIndex, + }; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_edit.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/edit_button.tsx similarity index 55% rename from x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_edit.tsx rename to x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/edit_button.tsx index 041b52d0322c4..0acb215336faf 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_edit.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/edit_button.tsx @@ -4,44 +4,37 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useState, FC } from 'react'; +import React, { FC } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; import { checkPermission } from '../../../../../capabilities/check_capabilities'; -import { DataFrameAnalyticsListRow } from './common'; -import { EditAnalyticsFlyout } from './edit_analytics_flyout'; - -interface EditActionProps { - item: DataFrameAnalyticsListRow; +interface EditButtonProps { + onClick: () => void; } -export const EditAction: FC = ({ item }) => { +export const EditButton: FC = ({ onClick }) => { const canCreateDataFrameAnalytics: boolean = checkPermission('canCreateDataFrameAnalytics'); - const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); - const closeFlyout = () => setIsFlyoutVisible(false); - const showFlyout = () => setIsFlyoutVisible(true); - const buttonEditText = i18n.translate('xpack.ml.dataframe.analyticsList.editActionName', { defaultMessage: 'Edit', }); + const buttonDisabled = !canCreateDataFrameAnalytics; const editButton = ( - - {buttonEditText} - + {buttonEditText} + ); if (!canCreateDataFrameAnalytics) { @@ -57,10 +50,5 @@ export const EditAction: FC = ({ item }) => { ); } - return ( - <> - {editButton} - {isFlyoutVisible && } - - ); + return editButton; }; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/edit_analytics_flyout.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/edit_button_flyout.tsx similarity index 97% rename from x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/edit_analytics_flyout.tsx rename to x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/edit_button_flyout.tsx index b6aed9321e4e3..728f53bf69ee2 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/edit_analytics_flyout.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/edit_button_flyout.tsx @@ -32,20 +32,17 @@ import { MemoryInputValidatorResult, } from '../../../../../../../common/util/validators'; import { extractErrorMessage } from '../../../../../../../common/util/errors'; -import { DataFrameAnalyticsListRow, DATA_FRAME_TASK_STATE } from './common'; +import { DATA_FRAME_TASK_STATE } from '../analytics_list/common'; import { useRefreshAnalyticsList, UpdateDataFrameAnalyticsConfig, } from '../../../../common/analytics'; -interface EditAnalyticsJobFlyoutProps { - closeFlyout: () => void; - item: DataFrameAnalyticsListRow; -} +import { EditAction } from './use_edit_action'; let mmLValidator: (value: any) => MemoryInputValidatorResult; -export const EditAnalyticsFlyout: FC = ({ closeFlyout, item }) => { +export const EditButtonFlyout: FC> = ({ closeFlyout, item }) => { const { id: jobId, config } = item; const { state } = item.stats; const initialAllowLazyStart = diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/index.ts new file mode 100644 index 0000000000000..cfb0bba16ca18 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { EditButton } from './edit_button'; +export { EditButtonFlyout } from './edit_button_flyout'; +export { isEditActionFlyoutVisible, useEditAction } from './use_edit_action'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/use_edit_action.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/use_edit_action.ts new file mode 100644 index 0000000000000..82a7bcc91997a --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_edit/use_edit_action.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useState } from 'react'; + +import { DataFrameAnalyticsListRow } from '../analytics_list/common'; + +export const isEditActionFlyoutVisible = (editAction: any): editAction is Required => { + return editAction.isFlyoutVisible === true && editAction.item !== undefined; +}; + +export interface EditAction { + isFlyoutVisible: boolean; + item?: DataFrameAnalyticsListRow; + closeFlyout: () => void; + openFlyout: (newItem: DataFrameAnalyticsListRow) => void; +} +export const useEditAction = () => { + const [item, setItem] = useState(); + + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + const closeFlyout = () => setIsFlyoutVisible(false); + const openFlyout = (newItem: DataFrameAnalyticsListRow) => { + setItem(newItem); + setIsFlyoutVisible(true); + }; + + return { + isFlyoutVisible, + item, + closeFlyout, + openFlyout, + }; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/index.ts new file mode 100644 index 0000000000000..df6bbb7c61908 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { StartButton } from './start_button'; +export { StartButtonModal } from './start_button_modal'; +export { useStartAction } from './use_start_action'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button.tsx new file mode 100644 index 0000000000000..279a335de8f42 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button.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 React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; + +import { + checkPermission, + createPermissionFailureMessage, +} from '../../../../../capabilities/check_capabilities'; + +import { DataFrameAnalyticsListRow, isCompletedAnalyticsJob } from '../analytics_list/common'; + +interface StartButtonProps { + item: DataFrameAnalyticsListRow; + onClick: (item: DataFrameAnalyticsListRow) => void; +} + +export const StartButton: FC = ({ item, onClick }) => { + const canStartStopDataFrameAnalytics: boolean = checkPermission('canStartStopDataFrameAnalytics'); + + const buttonStartText = i18n.translate('xpack.ml.dataframe.analyticsList.startActionName', { + defaultMessage: 'Start', + }); + + // Disable start for analytics jobs which have completed. + const completeAnalytics = isCompletedAnalyticsJob(item.stats); + + const disabled = !canStartStopDataFrameAnalytics || completeAnalytics; + + let startButton = ( + onClick(item)} + aria-label={buttonStartText} + data-test-subj="mlAnalyticsJobStartButton" + > + {buttonStartText} + + ); + + if (!canStartStopDataFrameAnalytics || completeAnalytics) { + startButton = ( + + {startButton} + + ); + } + + return startButton; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button_modal.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button_modal.tsx new file mode 100644 index 0000000000000..664dbe5c62b2f --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/start_button_modal.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 React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiConfirmModal, EuiOverlayMask, EUI_MODAL_CONFIRM_BUTTON } from '@elastic/eui'; + +import { StartAction } from './use_start_action'; + +export const StartButtonModal: FC = ({ closeModal, item, startAndCloseModal }) => { + return ( + <> + {item !== undefined && ( + + +

+ {i18n.translate('xpack.ml.dataframe.analyticsList.startModalBody', { + defaultMessage: + 'A data frame analytics job will increase search and indexing load in your cluster. Please stop the analytics job if excessive load is experienced. Are you sure you want to start this analytics job?', + })} +

+
+
+ )} + + ); +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/use_start_action.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/use_start_action.ts new file mode 100644 index 0000000000000..8eb6b990827ac --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_start/use_start_action.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useState } from 'react'; + +import { DataFrameAnalyticsListRow } from '../analytics_list/common'; +import { startAnalytics } from '../../services/analytics_service'; + +export type StartAction = ReturnType; +export const useStartAction = () => { + const [isModalVisible, setModalVisible] = useState(false); + + const [item, setItem] = useState(); + + const closeModal = () => setModalVisible(false); + const startAndCloseModal = () => { + if (item !== undefined) { + setModalVisible(false); + startAnalytics(item); + } + }; + + const openModal = (newItem: DataFrameAnalyticsListRow) => { + setItem(newItem); + setModalVisible(true); + }; + + return { + closeModal, + isModalVisible, + item, + openModal, + startAndCloseModal, + }; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/index.ts new file mode 100644 index 0000000000000..858b6c70501b3 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/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 { StopButton } from './stop_button'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/stop_button.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/stop_button.tsx new file mode 100644 index 0000000000000..b8395f2f7c2a0 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_stop/stop_button.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; + +import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; + +import { + checkPermission, + createPermissionFailureMessage, +} from '../../../../../capabilities/check_capabilities'; + +import { stopAnalytics } from '../../services/analytics_service'; + +import { DataFrameAnalyticsListRow } from '../analytics_list/common'; + +const buttonStopText = i18n.translate('xpack.ml.dataframe.analyticsList.stopActionName', { + defaultMessage: 'Stop', +}); + +interface StopButtonProps { + item: DataFrameAnalyticsListRow; +} + +export const StopButton: FC = ({ item }) => { + const canStartStopDataFrameAnalytics: boolean = checkPermission('canStartStopDataFrameAnalytics'); + + const stopButton = ( + stopAnalytics(item)} + aria-label={buttonStopText} + data-test-subj="mlAnalyticsJobStopButton" + > + {buttonStopText} + + ); + if (!canStartStopDataFrameAnalytics) { + return ( + + {stopButton} + + ); + } + + return stopButton; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/get_view_action.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/get_view_action.tsx new file mode 100644 index 0000000000000..e31670ea42ceb --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/get_view_action.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { EuiTableActionsColumnType } from '@elastic/eui'; + +import { DataFrameAnalyticsListRow } from '../analytics_list/common'; + +import { ViewButton } from './view_button'; + +export const getViewAction = ( + isManagementTable: boolean = false +): EuiTableActionsColumnType['actions'][number] => ({ + isPrimary: true, + render: (item: DataFrameAnalyticsListRow) => ( + + ), +}); diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/index.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/index.ts new file mode 100644 index 0000000000000..5ac12c12071fd --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getViewAction } from './get_view_action'; +export { ViewButton } from './view_button'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/view_button.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/view_button.tsx new file mode 100644 index 0000000000000..17a18c374dfa6 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_view/view_button.tsx @@ -0,0 +1,61 @@ +/* + * 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, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiButtonEmpty } from '@elastic/eui'; + +import { + getAnalysisType, + isRegressionAnalysis, + isOutlierAnalysis, + isClassificationAnalysis, +} from '../../../../common/analytics'; +import { useMlKibana } from '../../../../../contexts/kibana'; + +import { getResultsUrl, DataFrameAnalyticsListRow } from '../analytics_list/common'; + +interface ViewButtonProps { + item: DataFrameAnalyticsListRow; + isManagementTable: boolean; +} + +export const ViewButton: FC = ({ item, isManagementTable }) => { + const { + services: { + application: { navigateToUrl, navigateToApp }, + }, + } = useMlKibana(); + + const analysisType = getAnalysisType(item.config.analysis); + const isDisabled = + !isRegressionAnalysis(item.config.analysis) && + !isOutlierAnalysis(item.config.analysis) && + !isClassificationAnalysis(item.config.analysis); + + const url = getResultsUrl(item.id, analysisType); + const navigator = isManagementTable + ? () => navigateToApp('ml', { path: url }) + : () => navigateToUrl(url); + + return ( + + {i18n.translate('xpack.ml.dataframe.analyticsList.viewActionName', { + defaultMessage: 'View', + })} + + ); +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx deleted file mode 100644 index 38ef00914e8fb..0000000000000 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx +++ /dev/null @@ -1,248 +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, FC, useState, useEffect } from 'react'; -import { i18n } from '@kbn/i18n'; -import { - EuiButtonEmpty, - EuiConfirmModal, - EuiOverlayMask, - EuiToolTip, - EuiSwitch, - EuiFlexGroup, - EuiFlexItem, - EUI_MODAL_CONFIRM_BUTTON, -} from '@elastic/eui'; -import { IIndexPattern } from 'src/plugins/data/common'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { extractErrorMessage } from '../../../../../../../common/util/errors'; -import { - deleteAnalytics, - deleteAnalyticsAndDestIndex, - canDeleteIndex, -} from '../../services/analytics_service'; -import { - checkPermission, - createPermissionFailureMessage, -} from '../../../../../capabilities/check_capabilities'; -import { useMlKibana } from '../../../../../contexts/kibana'; -import { isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from './common'; - -interface DeleteActionProps { - item: DataFrameAnalyticsListRow; -} - -export const DeleteAction: FC = ({ item }) => { - const disabled = isDataFrameAnalyticsRunning(item.stats.state); - const canDeleteDataFrameAnalytics: boolean = checkPermission('canDeleteDataFrameAnalytics'); - - const [isModalVisible, setModalVisible] = useState(false); - const [deleteTargetIndex, setDeleteTargetIndex] = useState(true); - const [deleteIndexPattern, setDeleteIndexPattern] = useState(true); - const [userCanDeleteIndex, setUserCanDeleteIndex] = useState(false); - const [indexPatternExists, setIndexPatternExists] = useState(false); - - const { savedObjects, notifications } = useMlKibana().services; - const savedObjectsClient = savedObjects.client; - - const indexName = item.config.dest.index; - - const checkIndexPatternExists = async () => { - try { - const response = await savedObjectsClient.find({ - type: 'index-pattern', - perPage: 10, - search: `"${indexName}"`, - searchFields: ['title'], - fields: ['title'], - }); - const ip = response.savedObjects.find( - (obj) => obj.attributes.title.toLowerCase() === indexName.toLowerCase() - ); - if (ip !== undefined) { - setIndexPatternExists(true); - } - } catch (e) { - const { toasts } = notifications; - const error = extractErrorMessage(e); - - toasts.addDanger( - i18n.translate( - 'xpack.ml.dataframe.analyticsList.errorWithCheckingIfIndexPatternExistsNotificationErrorMessage', - { - defaultMessage: - 'An error occurred checking if index pattern {indexPattern} exists: {error}', - values: { indexPattern: indexName, error }, - } - ) - ); - } - }; - const checkUserIndexPermission = () => { - try { - const userCanDelete = canDeleteIndex(indexName); - if (userCanDelete) { - setUserCanDeleteIndex(true); - } - } catch (e) { - const { toasts } = notifications; - const error = extractErrorMessage(e); - - toasts.addDanger( - i18n.translate( - 'xpack.ml.dataframe.analyticsList.errorWithCheckingIfUserCanDeleteIndexNotificationErrorMessage', - { - defaultMessage: - 'An error occurred checking if user can delete {destinationIndex}: {error}', - values: { destinationIndex: indexName, error }, - } - ) - ); - } - }; - - useEffect(() => { - // Check if an index pattern exists corresponding to current DFA job - // if pattern does exist, show it to user - checkIndexPatternExists(); - - // Check if an user has permission to delete the index & index pattern - checkUserIndexPermission(); - }, []); - - const closeModal = () => setModalVisible(false); - const deleteAndCloseModal = () => { - setModalVisible(false); - - if ((userCanDeleteIndex && deleteTargetIndex) || (userCanDeleteIndex && deleteIndexPattern)) { - deleteAnalyticsAndDestIndex( - item, - deleteTargetIndex, - indexPatternExists && deleteIndexPattern - ); - } else { - deleteAnalytics(item); - } - }; - const openModal = () => setModalVisible(true); - const toggleDeleteIndex = () => setDeleteTargetIndex(!deleteTargetIndex); - const toggleDeleteIndexPattern = () => setDeleteIndexPattern(!deleteIndexPattern); - - const buttonDeleteText = i18n.translate('xpack.ml.dataframe.analyticsList.deleteActionName', { - defaultMessage: 'Delete', - }); - - let deleteButton = ( - - {buttonDeleteText} - - ); - - if (disabled || !canDeleteDataFrameAnalytics) { - deleteButton = ( - - {deleteButton} - - ); - } - - return ( - - {deleteButton} - {isModalVisible && ( - - -

- -

- - - - {userCanDeleteIndex && ( - - )} - - - {userCanDeleteIndex && indexPatternExists && ( - - )} - - -
-
- )} -
- ); -}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_start.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_start.tsx deleted file mode 100644 index 74eb1d0b02782..0000000000000 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/action_start.tsx +++ /dev/null @@ -1,120 +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, FC, useState } from 'react'; -import { i18n } from '@kbn/i18n'; -import { - EuiButtonEmpty, - EuiConfirmModal, - EuiOverlayMask, - EuiToolTip, - EUI_MODAL_CONFIRM_BUTTON, -} from '@elastic/eui'; - -import { startAnalytics } from '../../services/analytics_service'; - -import { - checkPermission, - createPermissionFailureMessage, -} from '../../../../../capabilities/check_capabilities'; - -import { DataFrameAnalyticsListRow, isCompletedAnalyticsJob } from './common'; - -interface StartActionProps { - item: DataFrameAnalyticsListRow; -} - -export const StartAction: FC = ({ item }) => { - const canStartStopDataFrameAnalytics: boolean = checkPermission('canStartStopDataFrameAnalytics'); - - const [isModalVisible, setModalVisible] = useState(false); - - const closeModal = () => setModalVisible(false); - const startAndCloseModal = () => { - setModalVisible(false); - startAnalytics(item); - }; - const openModal = () => setModalVisible(true); - - const buttonStartText = i18n.translate('xpack.ml.dataframe.analyticsList.startActionName', { - defaultMessage: 'Start', - }); - - // Disable start for analytics jobs which have completed. - const completeAnalytics = isCompletedAnalyticsJob(item.stats); - - let startButton = ( - - {buttonStartText} - - ); - - if (!canStartStopDataFrameAnalytics || completeAnalytics) { - startButton = ( - - {startButton} - - ); - } - - return ( - - {startButton} - {isModalVisible && ( - - -

- {i18n.translate('xpack.ml.dataframe.analyticsList.startModalBody', { - defaultMessage: - 'A data frame analytics job will increase search and indexing load in your cluster. Please stop the analytics job if excessive load is experienced. Are you sure you want to start this analytics job?', - })} -

-
-
- )} -
- ); -}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx deleted file mode 100644 index b03a3a4c4edb2..0000000000000 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx +++ /dev/null @@ -1,157 +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, { FC } from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; - -import { - checkPermission, - createPermissionFailureMessage, -} from '../../../../../capabilities/check_capabilities'; - -import { - getAnalysisType, - isRegressionAnalysis, - isOutlierAnalysis, - isClassificationAnalysis, -} from '../../../../common/analytics'; -import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form'; -import { useMlKibana } from '../../../../../contexts/kibana'; -import { CloneAction } from './action_clone'; - -import { getResultsUrl, isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from './common'; -import { stopAnalytics } from '../../services/analytics_service'; - -import { StartAction } from './action_start'; -import { EditAction } from './action_edit'; -import { DeleteAction } from './action_delete'; - -interface Props { - item: DataFrameAnalyticsListRow; - isManagementTable: boolean; -} - -const AnalyticsViewButton: FC = ({ item, isManagementTable }) => { - const { - services: { - application: { navigateToUrl, navigateToApp }, - }, - } = useMlKibana(); - - const analysisType = getAnalysisType(item.config.analysis); - const isDisabled = - !isRegressionAnalysis(item.config.analysis) && - !isOutlierAnalysis(item.config.analysis) && - !isClassificationAnalysis(item.config.analysis); - - const url = getResultsUrl(item.id, analysisType); - const navigator = isManagementTable - ? () => navigateToApp('ml', { path: url }) - : () => navigateToUrl(url); - - return ( - - {i18n.translate('xpack.ml.dataframe.analyticsList.viewActionName', { - defaultMessage: 'View', - })} - - ); -}; - -interface Action { - isPrimary?: boolean; - render: (item: DataFrameAnalyticsListRow) => any; -} - -export const getAnalyticsViewAction = (isManagementTable: boolean = false): Action => ({ - isPrimary: true, - render: (item: DataFrameAnalyticsListRow) => ( - - ), -}); - -export const getActions = ( - createAnalyticsForm: CreateAnalyticsFormProps, - isManagementTable: boolean -) => { - const canStartStopDataFrameAnalytics: boolean = checkPermission('canStartStopDataFrameAnalytics'); - const actions: Action[] = [getAnalyticsViewAction(isManagementTable)]; - - if (isManagementTable === false) { - actions.push( - ...[ - { - render: (item: DataFrameAnalyticsListRow) => { - if (!isDataFrameAnalyticsRunning(item.stats.state)) { - return ; - } - - const buttonStopText = i18n.translate( - 'xpack.ml.dataframe.analyticsList.stopActionName', - { - defaultMessage: 'Stop', - } - ); - - const stopButton = ( - stopAnalytics(item)} - aria-label={buttonStopText} - data-test-subj="mlAnalyticsJobStopButton" - > - {buttonStopText} - - ); - if (!canStartStopDataFrameAnalytics) { - return ( - - {stopButton} - - ); - } - - return stopButton; - }, - }, - { - render: (item: DataFrameAnalyticsListRow) => { - return ; - }, - }, - { - render: (item: DataFrameAnalyticsListRow) => { - return ; - }, - }, - { - render: (item: DataFrameAnalyticsListRow) => { - return ; - }, - }, - ] - ); - } - - return actions; -}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx index dac0de4c7a533..405231aef5774 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, FC, useState, useEffect } from 'react'; +import React, { FC, useState, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; @@ -25,7 +25,6 @@ import { ANALYSIS_CONFIG_TYPE, } from '../../../../common'; import { checkPermission } from '../../../../../capabilities/check_capabilities'; -import { getTaskStateBadge, getJobTypeBadge } from './columns'; import { DataFrameAnalyticsListColumn, @@ -38,7 +37,7 @@ import { FieldClause, } from './common'; import { getAnalyticsFactory } from '../../services/analytics_service'; -import { getColumns } from './columns'; +import { getTaskStateBadge, getJobTypeBadge, useColumns } from './use_columns'; import { ExpandedRow } from './expanded_row'; import { ProgressBar, @@ -232,6 +231,14 @@ export const DataFrameAnalyticsList: FC = ({ setIsLoading(false); }; + const { columns, modals } = useColumns( + expandedRowItemIds, + setExpandedRowItemIds, + isManagementTable, + isMlEnabledInSpace, + createAnalyticsForm + ); + // Before the analytics have been loaded for the first time, display the loading indicator only. // Otherwise a user would see 'No data frame analytics found' during the initial loading. if (!isInitialized) { @@ -240,7 +247,7 @@ export const DataFrameAnalyticsList: FC = ({ if (typeof errorMessage !== 'undefined') { return ( - + <> = ({ >
{JSON.stringify(errorMessage)}
-
+ ); } if (analytics.length === 0) { return ( - + <> = ({ {isSourceIndexModalVisible === true && ( setIsSourceIndexModalVisible(false)} /> )} - + ); } - const columns = getColumns( - expandedRowItemIds, - setExpandedRowItemIds, - isManagementTable, - isMlEnabledInSpace, - createAnalyticsForm - ); - const sorting = { sort: { field: sortField, @@ -349,26 +348,6 @@ export const DataFrameAnalyticsList: FC = ({ view: getTaskStateBadge(val), })), }, - // For now analytics jobs are batch only - /* - { - type: 'field_value_selection', - field: 'mode', - name: i18n.translate('xpack.ml.dataframe.analyticsList.modeFilter', { - defaultMessage: 'Mode', - }), - multiSelect: false, - options: Object.values(DATA_FRAME_MODE).map(val => ({ - value: val, - name: val, - view: ( - - {val} - - ), - })), - }, - */ ], }; @@ -386,7 +365,8 @@ export const DataFrameAnalyticsList: FC = ({ }; return ( - + <> + {modals} {analyticsStats && ( @@ -435,6 +415,6 @@ export const DataFrameAnalyticsList: FC = ({ {isSourceIndexModalVisible === true && ( setIsSourceIndexModalVisible(false)} /> )} - + ); }; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/expanded_row.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/expanded_row.tsx index 0ee57fe5be141..4d029ff1d9546 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/expanded_row.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/expanded_row.tsx @@ -24,7 +24,7 @@ import { loadEvalData, Eval, } from '../../../../common'; -import { getTaskStateBadge } from './columns'; +import { getTaskStateBadge } from './use_columns'; import { getDataFrameAnalyticsProgressPhase, isCompletedAnalyticsJob } from './common'; import { isRegressionAnalysis, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_actions.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_actions.tsx new file mode 100644 index 0000000000000..e75d938116991 --- /dev/null +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_actions.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 from 'react'; + +import { EuiTableActionsColumnType } from '@elastic/eui'; + +import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form'; +import { CloneButton } from '../action_clone'; +import { useDeleteAction, DeleteButton, DeleteButtonModal } from '../action_delete'; +import { + isEditActionFlyoutVisible, + useEditAction, + EditButton, + EditButtonFlyout, +} from '../action_edit'; +import { useStartAction, StartButton, StartButtonModal } from '../action_start'; +import { StopButton } from '../action_stop'; +import { getViewAction } from '../action_view'; + +import { isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from './common'; + +export const useActions = ( + createAnalyticsForm: CreateAnalyticsFormProps, + isManagementTable: boolean +): { + actions: EuiTableActionsColumnType['actions']; + modals: JSX.Element | null; +} => { + const deleteAction = useDeleteAction(); + const editAction = useEditAction(); + const startAction = useStartAction(); + + let modals: JSX.Element | null = null; + + const actions: EuiTableActionsColumnType['actions'] = [ + getViewAction(isManagementTable), + ]; + + if (isManagementTable === false) { + modals = ( + <> + {startAction.isModalVisible && } + {deleteAction.isModalVisible && } + {isEditActionFlyoutVisible(editAction) && } + + ); + actions.push( + ...[ + { + render: (item: DataFrameAnalyticsListRow) => { + if (!isDataFrameAnalyticsRunning(item.stats.state)) { + return ; + } + return ; + }, + }, + { + render: (item: DataFrameAnalyticsListRow) => { + return editAction.openFlyout(item)} />; + }, + }, + { + render: (item: DataFrameAnalyticsListRow) => { + return ; + }, + }, + { + render: (item: DataFrameAnalyticsListRow) => { + return ; + }, + }, + ] + ); + } + + return { actions, modals }; +}; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx similarity index 93% rename from x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx rename to x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx index a3d2e65386c19..fa88396461cd7 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx @@ -33,7 +33,7 @@ import { DataFrameAnalyticsListRow, DataFrameAnalyticsStats, } from './common'; -import { getActions } from './actions'; +import { useActions } from './use_actions'; enum TASK_STATE_COLOR { analyzing = 'primary', @@ -141,14 +141,14 @@ export const getDFAnalyticsJobIdLink = (item: DataFrameAnalyticsListRow) => ( {item.id} ); -export const getColumns = ( +export const useColumns = ( expandedRowItemIds: DataFrameAnalyticsId[], setExpandedRowItemIds: React.Dispatch>, isManagementTable: boolean = false, isMlEnabledInSpace: boolean = true, createAnalyticsForm?: CreateAnalyticsFormProps ) => { - const actions = getActions(createAnalyticsForm!, isManagementTable); + const { actions, modals } = useActions(createAnalyticsForm!, isManagementTable); function toggleDetails(item: DataFrameAnalyticsListRow) { const index = expandedRowItemIds.indexOf(item.config.id); @@ -253,20 +253,6 @@ export const getColumns = ( width: '100px', 'data-test-subj': 'mlAnalyticsTableColumnStatus', }, - // For now there is batch mode only so we hide this column for now. - /* - { - name: i18n.translate('xpack.ml.dataframe.analyticsList.mode', { defaultMessage: 'Mode' }), - sortable: (item: DataFrameAnalyticsListRow) => item.mode, - truncateText: true, - render(item: DataFrameAnalyticsListRow) { - const mode = item.mode; - const color = 'hollow'; - return {mode}; - }, - width: '100px', - }, - */ progressColumn, { name: i18n.translate('xpack.ml.dataframe.analyticsList.tableActionLabel', { @@ -293,5 +279,5 @@ export const getColumns = ( } } - return columns; + return { columns, modals }; }; 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 da6e2e440a26e..cedbe9094cb20 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 @@ -13,7 +13,7 @@ import { DataFrameAnalyticsConfig, ANALYSIS_CONFIG_TYPE, } from '../../../../common/analytics'; -import { CloneDataFrameAnalyticsConfig } from '../../components/analytics_list/action_clone'; +import { CloneDataFrameAnalyticsConfig } from '../../components/action_clone'; export enum DEFAULT_MODEL_MEMORY_LIMIT { regression = '100mb', diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts index f95d2f572a406..4c312be26613c 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts @@ -18,10 +18,7 @@ import { DataFrameAnalyticsId, DataFrameAnalyticsConfig, } from '../../../../common'; -import { - extractCloningConfig, - isAdvancedConfig, -} from '../../components/analytics_list/action_clone'; +import { extractCloningConfig, isAdvancedConfig } from '../../components/action_clone'; import { ActionDispatchers, ACTION } from './actions'; import { reducer } from './reducer'; diff --git a/x-pack/plugins/ml/public/application/overview/components/analytics_panel/table.tsx b/x-pack/plugins/ml/public/application/overview/components/analytics_panel/table.tsx index f2e6ff7885b16..1eeff6287867d 100644 --- a/x-pack/plugins/ml/public/application/overview/components/analytics_panel/table.tsx +++ b/x-pack/plugins/ml/public/application/overview/components/analytics_panel/table.tsx @@ -22,8 +22,8 @@ import { import { getTaskStateBadge, progressColumn, -} from '../../../data_frame_analytics/pages/analytics_management/components/analytics_list/columns'; -import { getAnalyticsViewAction } from '../../../data_frame_analytics/pages/analytics_management/components/analytics_list/actions'; +} from '../../../data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns'; +import { getViewAction } from '../../../data_frame_analytics/pages/analytics_management/components/action_view'; import { formatHumanReadableDateTimeSeconds } from '../../../util/date_utils'; const MlInMemoryTable = mlInMemoryTableFactory(); @@ -82,7 +82,7 @@ export const AnalyticsTable: FC = ({ items }) => { name: i18n.translate('xpack.ml.overview.analyticsList.tableActionLabel', { defaultMessage: 'Actions', }), - actions: [getAnalyticsViewAction()], + actions: [getViewAction()], width: '100px', }, ]; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_clone.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/clone_button.tsx similarity index 80% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_clone.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/clone_button.tsx index aa78dfb4315f9..4686ede7bc2c2 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_clone.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/clone_button.tsx @@ -7,7 +7,7 @@ import React, { FC, useContext } from 'react'; import { useHistory } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; -import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; import { createCapabilityFailureMessage, @@ -20,7 +20,7 @@ interface CloneActionProps { itemId: string; } -export const CloneAction: FC = ({ itemId }) => { +export const CloneButton: FC = ({ itemId }) => { const history = useHistory(); const { canCreateTransform } = useContext(AuthorizationContext).capabilities; @@ -34,17 +34,15 @@ export const CloneAction: FC = ({ itemId }) => { } const cloneButton = ( - - {buttonCloneText} - + {buttonCloneText} + ); if (!canCreateTransform) { diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/index.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/index.ts new file mode 100644 index 0000000000000..727cc87c70f2c --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_clone/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 { CloneButton } from './clone_button'; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/__snapshots__/delete_button.test.tsx.snap b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/__snapshots__/delete_button.test.tsx.snap new file mode 100644 index 0000000000000..3980cc5d5a1ae --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/__snapshots__/delete_button.test.tsx.snap @@ -0,0 +1,22 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Transform: Transform List Actions Minimal initialization 1`] = ` + + + + + Delete + + +`; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_delete.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.test.tsx similarity index 74% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_delete.test.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.test.tsx index fdd0b821f54fd..63f8243b403d3 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_delete.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.test.tsx @@ -5,10 +5,10 @@ */ import { shallow } from 'enzyme'; -import React from 'react'; +import React, { ComponentProps } from 'react'; import { TransformListRow } from '../../../../common'; -import { DeleteAction } from './action_delete'; +import { DeleteButton } from './delete_button'; import transformListRow from '../../../../common/__mocks__/transform_list_row.json'; @@ -18,13 +18,13 @@ jest.mock('../../../../../app/app_dependencies'); describe('Transform: Transform List Actions ', () => { test('Minimal initialization', () => { const item: TransformListRow = transformListRow; - const props = { - disabled: false, + const props: ComponentProps = { + forceDisable: false, items: [item], - deleteTransform(d: TransformListRow) {}, + onClick: () => {}, }; - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.tsx new file mode 100644 index 0000000000000..b81c3ebc34ca0 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button.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, { FC, useContext } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; +import { TRANSFORM_STATE } from '../../../../../../common'; +import { + AuthorizationContext, + createCapabilityFailureMessage, +} from '../../../../lib/authorization'; +import { TransformListRow } from '../../../../common'; + +interface DeleteButtonProps { + items: TransformListRow[]; + forceDisable?: boolean; + onClick: (items: TransformListRow[]) => void; +} + +const transformCanNotBeDeleted = (i: TransformListRow) => + ![TRANSFORM_STATE.STOPPED, TRANSFORM_STATE.FAILED].includes(i.stats.state); + +export const DeleteButton: FC = ({ items, forceDisable, onClick }) => { + const isBulkAction = items.length > 1; + + const disabled = items.some(transformCanNotBeDeleted); + const { canDeleteTransform } = useContext(AuthorizationContext).capabilities; + + const buttonDeleteText = i18n.translate('xpack.transform.transformList.deleteActionName', { + defaultMessage: 'Delete', + }); + const bulkDeleteButtonDisabledText = i18n.translate( + 'xpack.transform.transformList.deleteBulkActionDisabledToolTipContent', + { + defaultMessage: 'One or more selected transforms must be stopped in order to be deleted.', + } + ); + const deleteButtonDisabledText = i18n.translate( + 'xpack.transform.transformList.deleteActionDisabledToolTipContent', + { + defaultMessage: 'Stop the transform in order to delete it.', + } + ); + + const buttonDisabled = forceDisable === true || disabled || !canDeleteTransform; + let deleteButton = ( + onClick(items)} + aria-label={buttonDeleteText} + > + {buttonDeleteText} + + ); + + if (disabled || !canDeleteTransform) { + let content; + if (disabled) { + content = isBulkAction ? bulkDeleteButtonDisabledText : deleteButtonDisabledText; + } else { + content = createCapabilityFailureMessage('canDeleteTransform'); + } + + deleteButton = ( + + {deleteButton} + + ); + } + + return deleteButton; +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_delete.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button_modal.tsx similarity index 54% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_delete.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button_modal.tsx index 79a9e45e317e5..668e535198649 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_delete.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/delete_button_modal.tsx @@ -4,88 +4,36 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { FC, Fragment, useContext, useMemo, useState } from 'react'; +import React, { FC } from 'react'; import { i18n } from '@kbn/i18n'; import { EUI_MODAL_CONFIRM_BUTTON, - EuiButtonEmpty, EuiConfirmModal, EuiFlexGroup, EuiFlexItem, EuiOverlayMask, EuiSpacer, EuiSwitch, - EuiToolTip, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { TRANSFORM_STATE } from '../../../../../../common'; -import { useDeleteIndexAndTargetIndex, useDeleteTransforms } from '../../../../hooks'; -import { - AuthorizationContext, - createCapabilityFailureMessage, -} from '../../../../lib/authorization'; -import { TransformListRow } from '../../../../common'; - -interface DeleteActionProps { - items: TransformListRow[]; - forceDisable?: boolean; -} -const transformCanNotBeDeleted = (i: TransformListRow) => - ![TRANSFORM_STATE.STOPPED, TRANSFORM_STATE.FAILED].includes(i.stats.state); +import { DeleteAction } from './use_delete_action'; -export const DeleteAction: FC = ({ items, forceDisable }) => { +export const DeleteButtonModal: FC = ({ + closeModal, + deleteAndCloseModal, + deleteDestIndex, + deleteIndexPattern, + indexPatternExists, + items, + shouldForceDelete, + toggleDeleteIndex, + toggleDeleteIndexPattern, + userCanDeleteIndex, +}) => { const isBulkAction = items.length > 1; - const disabled = items.some(transformCanNotBeDeleted); - const shouldForceDelete = useMemo( - () => items.some((i: TransformListRow) => i.stats.state === TRANSFORM_STATE.FAILED), - [items] - ); - const { canDeleteTransform } = useContext(AuthorizationContext).capabilities; - const deleteTransforms = useDeleteTransforms(); - const { - userCanDeleteIndex, - deleteDestIndex, - indexPatternExists, - deleteIndexPattern, - toggleDeleteIndex, - toggleDeleteIndexPattern, - } = useDeleteIndexAndTargetIndex(items); - - const [isModalVisible, setModalVisible] = useState(false); - - const closeModal = () => setModalVisible(false); - const deleteAndCloseModal = () => { - setModalVisible(false); - - const shouldDeleteDestIndex = userCanDeleteIndex && deleteDestIndex; - const shouldDeleteDestIndexPattern = - userCanDeleteIndex && indexPatternExists && deleteIndexPattern; - // if we are deleting multiple transforms, then force delete all if at least one item has failed - // else, force delete only when the item user picks has failed - const forceDelete = isBulkAction - ? shouldForceDelete - : items[0] && items[0] && items[0].stats.state === TRANSFORM_STATE.FAILED; - deleteTransforms(items, shouldDeleteDestIndex, shouldDeleteDestIndexPattern, forceDelete); - }; - const openModal = () => setModalVisible(true); - - const buttonDeleteText = i18n.translate('xpack.transform.transformList.deleteActionName', { - defaultMessage: 'Delete', - }); - const bulkDeleteButtonDisabledText = i18n.translate( - 'xpack.transform.transformList.deleteBulkActionDisabledToolTipContent', - { - defaultMessage: 'One or more selected transforms must be stopped in order to be deleted.', - } - ); - const deleteButtonDisabledText = i18n.translate( - 'xpack.transform.transformList.deleteActionDisabledToolTipContent', - { - defaultMessage: 'Stop the transform in order to delete it.', - } - ); const bulkDeleteModalTitle = i18n.translate( 'xpack.transform.transformList.bulkDeleteModalTitle', { @@ -203,63 +151,23 @@ export const DeleteAction: FC = ({ items, forceDisable }) => ); - let deleteButton = ( - - {buttonDeleteText} - - ); - - if (disabled || !canDeleteTransform) { - let content; - if (disabled) { - content = isBulkAction ? bulkDeleteButtonDisabledText : deleteButtonDisabledText; - } else { - content = createCapabilityFailureMessage('canDeleteTransform'); - } - - deleteButton = ( - - {deleteButton} - - ); - } - return ( - - {deleteButton} - {isModalVisible && ( - - - {isBulkAction ? bulkDeleteModalContent : deleteModalContent} - - - )} - + + + {isBulkAction ? bulkDeleteModalContent : deleteModalContent} + + ); }; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/index.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/index.ts new file mode 100644 index 0000000000000..ef891d7c4a128 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { DeleteButton } from './delete_button'; +export { DeleteButtonModal } from './delete_button_modal'; +export { useDeleteAction } from './use_delete_action'; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/use_delete_action.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/use_delete_action.ts new file mode 100644 index 0000000000000..d76eebe954d7b --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_delete/use_delete_action.ts @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useMemo, useState } from 'react'; + +import { TRANSFORM_STATE } from '../../../../../../common'; + +import { TransformListRow } from '../../../../common'; +import { useDeleteIndexAndTargetIndex, useDeleteTransforms } from '../../../../hooks'; + +export type DeleteAction = ReturnType; +export const useDeleteAction = () => { + const deleteTransforms = useDeleteTransforms(); + + const [isModalVisible, setModalVisible] = useState(false); + const [items, setItems] = useState([]); + + const isBulkAction = items.length > 1; + const shouldForceDelete = useMemo( + () => items.some((i: TransformListRow) => i.stats.state === TRANSFORM_STATE.FAILED), + [items] + ); + + const closeModal = () => setModalVisible(false); + + const { + userCanDeleteIndex, + deleteDestIndex, + indexPatternExists, + deleteIndexPattern, + toggleDeleteIndex, + toggleDeleteIndexPattern, + } = useDeleteIndexAndTargetIndex(items); + + const deleteAndCloseModal = () => { + setModalVisible(false); + + const shouldDeleteDestIndex = userCanDeleteIndex && deleteDestIndex; + const shouldDeleteDestIndexPattern = + userCanDeleteIndex && indexPatternExists && deleteIndexPattern; + // if we are deleting multiple transforms, then force delete all if at least one item has failed + // else, force delete only when the item user picks has failed + const forceDelete = isBulkAction + ? shouldForceDelete + : items[0] && items[0] && items[0].stats.state === TRANSFORM_STATE.FAILED; + deleteTransforms(items, shouldDeleteDestIndex, shouldDeleteDestIndexPattern, forceDelete); + }; + + const openModal = (newItems: TransformListRow[]) => { + // EUI issue: Might trigger twice, one time as an array, + // one time as a single object. See https://github.com/elastic/eui/issues/3679 + if (Array.isArray(newItems)) { + setItems(newItems); + setModalVisible(true); + } + }; + + return { + closeModal, + deleteAndCloseModal, + deleteDestIndex, + deleteIndexPattern, + indexPatternExists, + isModalVisible, + items, + openModal, + shouldForceDelete, + toggleDeleteIndex, + toggleDeleteIndexPattern, + userCanDeleteIndex, + }; +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_edit.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/edit_button.tsx similarity index 53% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_edit.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/edit_button.tsx index dfb4cd443e904..6ba8e7aeba20f 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_edit.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/edit_button.tsx @@ -4,47 +4,37 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext, useState, FC } from 'react'; +import React, { useContext, FC } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; -import { TransformPivotConfig } from '../../../../common'; import { createCapabilityFailureMessage, AuthorizationContext, } from '../../../../lib/authorization'; -import { EditTransformFlyout } from '../edit_transform_flyout'; - -interface EditActionProps { - config: TransformPivotConfig; +interface EditButtonProps { + onClick: () => void; } - -export const EditAction: FC = ({ config }) => { +export const EditButton: FC = ({ onClick }) => { const { canCreateTransform } = useContext(AuthorizationContext).capabilities; - const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); - const closeFlyout = () => setIsFlyoutVisible(false); - const showFlyout = () => setIsFlyoutVisible(true); - const buttonEditText = i18n.translate('xpack.transform.transformList.editActionName', { defaultMessage: 'Edit', }); const editButton = ( - - {buttonEditText} - + {buttonEditText} + ); if (!canCreateTransform) { @@ -57,10 +47,5 @@ export const EditAction: FC = ({ config }) => { ); } - return ( - <> - {editButton} - {isFlyoutVisible && } - - ); + return editButton; }; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/index.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/index.ts new file mode 100644 index 0000000000000..17a2ad9444f8d --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { EditButton } from './edit_button'; +export { useEditAction } from './use_edit_action'; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/use_edit_action.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/use_edit_action.ts new file mode 100644 index 0000000000000..ace3ec8f636e6 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_edit/use_edit_action.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useState } from 'react'; + +import { TransformPivotConfig } from '../../../../common'; + +export const useEditAction = () => { + const [config, setConfig] = useState(); + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + const closeFlyout = () => setIsFlyoutVisible(false); + const showFlyout = (newConfig: TransformPivotConfig) => { + setConfig(newConfig); + setIsFlyoutVisible(true); + }; + + return { + config, + closeFlyout, + isFlyoutVisible, + showFlyout, + }; +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/__snapshots__/start_button.test.tsx.snap b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/__snapshots__/start_button.test.tsx.snap new file mode 100644 index 0000000000000..231a1f30f2c31 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/__snapshots__/start_button.test.tsx.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Transform: Transform List Actions Minimal initialization 1`] = ` + + + + + Start + + +`; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/index.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/index.ts new file mode 100644 index 0000000000000..df6bbb7c61908 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { StartButton } from './start_button'; +export { StartButtonModal } from './start_button_modal'; +export { useStartAction } from './use_start_action'; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.test.tsx similarity index 74% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.test.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.test.tsx index 2de115236c4dc..b88e1257f56ad 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.test.tsx @@ -5,10 +5,10 @@ */ import { shallow } from 'enzyme'; -import React from 'react'; +import React, { ComponentProps } from 'react'; import { TransformListRow } from '../../../../common'; -import { StartAction } from './action_start'; +import { StartButton } from './start_button'; import transformListRow from '../../../../common/__mocks__/transform_list_row.json'; @@ -18,13 +18,13 @@ jest.mock('../../../../../app/app_dependencies'); describe('Transform: Transform List Actions ', () => { test('Minimal initialization', () => { const item: TransformListRow = transformListRow; - const props = { - disabled: false, + const props: ComponentProps = { + forceDisable: false, items: [item], - startTransform(d: TransformListRow) {}, + onClick: () => {}, }; - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper).toMatchSnapshot(); }); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.tsx new file mode 100644 index 0000000000000..a0fe1bfbb9544 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button.tsx @@ -0,0 +1,106 @@ +/* + * 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, { FC, useContext } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; + +import { TRANSFORM_STATE } from '../../../../../../common'; + +import { + createCapabilityFailureMessage, + AuthorizationContext, +} from '../../../../lib/authorization'; +import { TransformListRow, isCompletedBatchTransform } from '../../../../common'; + +interface StartButtonProps { + items: TransformListRow[]; + forceDisable?: boolean; + onClick: (items: TransformListRow[]) => void; +} +export const StartButton: FC = ({ items, forceDisable, onClick }) => { + const { canStartStopTransform } = useContext(AuthorizationContext).capabilities; + const isBulkAction = items.length > 1; + + const buttonStartText = i18n.translate('xpack.transform.transformList.startActionName', { + defaultMessage: 'Start', + }); + + // Disable start for batch transforms which have completed. + const completedBatchTransform = items.some((i: TransformListRow) => isCompletedBatchTransform(i)); + // Disable start action if one of the transforms is already started or trying to restart will throw error + const startedTransform = items.some( + (i: TransformListRow) => i.stats.state === TRANSFORM_STATE.STARTED + ); + + let startedTransformMessage; + let completedBatchTransformMessage; + + if (isBulkAction === true) { + startedTransformMessage = i18n.translate( + 'xpack.transform.transformList.startedTransformBulkToolTip', + { + defaultMessage: 'One or more transforms are already started.', + } + ); + completedBatchTransformMessage = i18n.translate( + 'xpack.transform.transformList.completeBatchTransformBulkActionToolTip', + { + defaultMessage: + 'One or more transforms are completed batch transforms and cannot be restarted.', + } + ); + } else { + startedTransformMessage = i18n.translate( + 'xpack.transform.transformList.startedTransformToolTip', + { + defaultMessage: '{transformId} is already started.', + values: { transformId: items[0] && items[0].config.id }, + } + ); + completedBatchTransformMessage = i18n.translate( + 'xpack.transform.transformList.completeBatchTransformToolTip', + { + defaultMessage: '{transformId} is a completed batch transform and cannot be restarted.', + values: { transformId: items[0] && items[0].config.id }, + } + ); + } + + const actionIsDisabled = + !canStartStopTransform || completedBatchTransform || startedTransform || items.length === 0; + + let content: string | undefined; + if (actionIsDisabled && items.length > 0) { + if (!canStartStopTransform) { + content = createCapabilityFailureMessage('canStartStopTransform'); + } else if (completedBatchTransform) { + content = completedBatchTransformMessage; + } else if (startedTransform) { + content = startedTransformMessage; + } + } + + const disabled = forceDisable === true || actionIsDisabled; + + const startButton = ( + onClick(items)} + > + {buttonStartText} + + ); + if (disabled && content !== undefined) { + return ( + + {startButton} + + ); + } + return startButton; +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button_modal.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button_modal.tsx new file mode 100644 index 0000000000000..2ef0d20c45116 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/start_button_modal.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiConfirmModal, EuiOverlayMask, EUI_MODAL_CONFIRM_BUTTON } from '@elastic/eui'; + +import { StartAction } from './use_start_action'; + +export const StartButtonModal: FC = ({ + closeModal, + isModalVisible, + items, + startAndCloseModal, +}) => { + const isBulkAction = items.length > 1; + + const bulkStartModalTitle = i18n.translate('xpack.transform.transformList.bulkStartModalTitle', { + defaultMessage: 'Start {count} {count, plural, one {transform} other {transforms}}?', + values: { count: items && items.length }, + }); + const startModalTitle = i18n.translate('xpack.transform.transformList.startModalTitle', { + defaultMessage: 'Start {transformId}', + values: { transformId: items[0] && items[0].config.id }, + }); + + return ( + + +

+ {i18n.translate('xpack.transform.transformList.startModalBody', { + defaultMessage: + 'A transform will increase search and indexing load in your cluster. Please stop the transform if excessive load is experienced. Are you sure you want to start {count, plural, one {this} other {these}} {count} {count, plural, one {transform} other {transforms}}?', + values: { count: items.length }, + })} +

+
+
+ ); +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/use_start_action.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/use_start_action.ts new file mode 100644 index 0000000000000..32d2dc6dabf86 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_start/use_start_action.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useState } from 'react'; + +import { TransformListRow } from '../../../../common'; +import { useStartTransforms } from '../../../../hooks'; + +export type StartAction = ReturnType; +export const useStartAction = () => { + const startTransforms = useStartTransforms(); + + const [isModalVisible, setModalVisible] = useState(false); + const [items, setItems] = useState([]); + + const closeModal = () => setModalVisible(false); + + const startAndCloseModal = () => { + setModalVisible(false); + startTransforms(items); + }; + + const openModal = (newItems: TransformListRow[]) => { + // EUI issue: Might trigger twice, one time as an array, + // one time as a single object. See https://github.com/elastic/eui/issues/3679 + if (Array.isArray(newItems)) { + setItems(newItems); + setModalVisible(true); + } + }; + + return { + closeModal, + isModalVisible, + items, + openModal, + startAndCloseModal, + }; +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_stop.test.tsx.snap b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/__snapshots__/stop_button.test.tsx.snap similarity index 78% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_stop.test.tsx.snap rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/__snapshots__/stop_button.test.tsx.snap index 97d393bc8128b..dd81bf34bf582 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_stop.test.tsx.snap +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/__snapshots__/stop_button.test.tsx.snap @@ -6,16 +6,17 @@ exports[`Transform: Transform List Actions Minimal initialization delay="regular" position="top" > - + + Stop - + `; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/index.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/index.ts new file mode 100644 index 0000000000000..858b6c70501b3 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/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 { StopButton } from './stop_button'; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_stop.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/stop_button.test.tsx similarity index 76% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_stop.test.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/stop_button.test.tsx index a97097d909848..d9c07a9dccc8f 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_stop.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/stop_button.test.tsx @@ -5,10 +5,10 @@ */ import { shallow } from 'enzyme'; -import React from 'react'; +import React, { ComponentProps } from 'react'; import { TransformListRow } from '../../../../common'; -import { StopAction } from './action_stop'; +import { StopButton } from './stop_button'; import transformListRow from '../../../../common/__mocks__/transform_list_row.json'; @@ -18,13 +18,12 @@ jest.mock('../../../../../app/app_dependencies'); describe('Transform: Transform List Actions ', () => { test('Minimal initialization', () => { const item: TransformListRow = transformListRow; - const props = { - disabled: false, + const props: ComponentProps = { + forceDisable: false, items: [item], - stopTransform(d: TransformListRow) {}, }; - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper).toMatchSnapshot(); }); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_stop.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/stop_button.tsx similarity index 85% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_stop.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/stop_button.tsx index 3f35bef458951..2c67ea3e83ecc 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_stop.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/action_stop/stop_button.tsx @@ -6,7 +6,7 @@ import React, { FC, useContext } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiButtonEmpty, EuiToolTip } from '@elastic/eui'; +import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; import { TRANSFORM_STATE } from '../../../../../../common'; @@ -17,12 +17,11 @@ import { } from '../../../../lib/authorization'; import { useStopTransforms } from '../../../../hooks'; -interface StopActionProps { +interface StopButtonProps { items: TransformListRow[]; forceDisable?: boolean; } - -export const StopAction: FC = ({ items, forceDisable }) => { +export const StopButton: FC = ({ items, forceDisable }) => { const isBulkAction = items.length > 1; const { canStartStopTransform } = useContext(AuthorizationContext).capabilities; const stopTransforms = useStopTransforms(); @@ -57,18 +56,17 @@ export const StopAction: FC = ({ items, forceDisable }) => { stopTransforms(items); }; + const disabled = forceDisable === true || !canStartStopTransform || stoppedTransform === true; + const stopButton = ( - - {buttonStopText} - + {buttonStopText} + ); if (!canStartStopTransform || stoppedTransform) { return ( diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_delete.test.tsx.snap b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_delete.test.tsx.snap deleted file mode 100644 index da5ad27c9d6b1..0000000000000 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_delete.test.tsx.snap +++ /dev/null @@ -1,23 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Transform: Transform List Actions Minimal initialization 1`] = ` - - - - Delete - - - -`; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_start.test.tsx.snap b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_start.test.tsx.snap deleted file mode 100644 index d534f05d3be96..0000000000000 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/__snapshots__/action_start.test.tsx.snap +++ /dev/null @@ -1,23 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Transform: Transform List Actions Minimal initialization 1`] = ` - - - - Start - - - -`; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.tsx deleted file mode 100644 index 9edfe7fab70a0..0000000000000 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/action_start.tsx +++ /dev/null @@ -1,168 +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, FC, useContext, useState } from 'react'; -import { i18n } from '@kbn/i18n'; -import { - EuiButtonEmpty, - EuiConfirmModal, - EuiOverlayMask, - EuiToolTip, - EUI_MODAL_CONFIRM_BUTTON, -} from '@elastic/eui'; - -import { TRANSFORM_STATE } from '../../../../../../common'; - -import { useStartTransforms } from '../../../../hooks'; -import { - createCapabilityFailureMessage, - AuthorizationContext, -} from '../../../../lib/authorization'; -import { TransformListRow, isCompletedBatchTransform } from '../../../../common'; - -interface StartActionProps { - items: TransformListRow[]; - forceDisable?: boolean; -} - -export const StartAction: FC = ({ items, forceDisable }) => { - const isBulkAction = items.length > 1; - const { canStartStopTransform } = useContext(AuthorizationContext).capabilities; - const startTransforms = useStartTransforms(); - - const [isModalVisible, setModalVisible] = useState(false); - - const closeModal = () => setModalVisible(false); - const startAndCloseModal = () => { - setModalVisible(false); - startTransforms(items); - }; - const openModal = () => setModalVisible(true); - - const buttonStartText = i18n.translate('xpack.transform.transformList.startActionName', { - defaultMessage: 'Start', - }); - - // Disable start for batch transforms which have completed. - const completedBatchTransform = items.some((i: TransformListRow) => isCompletedBatchTransform(i)); - // Disable start action if one of the transforms is already started or trying to restart will throw error - const startedTransform = items.some( - (i: TransformListRow) => i.stats.state === TRANSFORM_STATE.STARTED - ); - - let startedTransformMessage; - let completedBatchTransformMessage; - - if (isBulkAction === true) { - startedTransformMessage = i18n.translate( - 'xpack.transform.transformList.startedTransformBulkToolTip', - { - defaultMessage: 'One or more transforms are already started.', - } - ); - completedBatchTransformMessage = i18n.translate( - 'xpack.transform.transformList.completeBatchTransformBulkActionToolTip', - { - defaultMessage: - 'One or more transforms are completed batch transforms and cannot be restarted.', - } - ); - } else { - startedTransformMessage = i18n.translate( - 'xpack.transform.transformList.startedTransformToolTip', - { - defaultMessage: '{transformId} is already started.', - values: { transformId: items[0] && items[0].config.id }, - } - ); - completedBatchTransformMessage = i18n.translate( - 'xpack.transform.transformList.completeBatchTransformToolTip', - { - defaultMessage: '{transformId} is a completed batch transform and cannot be restarted.', - values: { transformId: items[0] && items[0].config.id }, - } - ); - } - - const actionIsDisabled = !canStartStopTransform || completedBatchTransform || startedTransform; - - let startButton = ( - - {buttonStartText} - - ); - - if (actionIsDisabled) { - let content; - if (!canStartStopTransform) { - content = createCapabilityFailureMessage('canStartStopTransform'); - } else if (completedBatchTransform) { - content = completedBatchTransformMessage; - } else if (startedTransform) { - content = startedTransformMessage; - } - - startButton = ( - - {startButton} - - ); - } - - const bulkStartModalTitle = i18n.translate('xpack.transform.transformList.bulkStartModalTitle', { - defaultMessage: 'Start {count} {count, plural, one {transform} other {transforms}}?', - values: { count: items && items.length }, - }); - const startModalTitle = i18n.translate('xpack.transform.transformList.startModalTitle', { - defaultMessage: 'Start {transformId}', - values: { transformId: items[0] && items[0].config.id }, - }); - - return ( - - {startButton} - {isModalVisible && ( - - -

- {i18n.translate('xpack.transform.transformList.startModalBody', { - defaultMessage: - 'A transform will increase search and indexing load in your cluster. Please stop the transform if excessive load is experienced. Are you sure you want to start {count, plural, one {this} other {these}} {count} {count, plural, one {transform} other {transforms}}?', - values: { count: items.length }, - })} -

-
-
- )} -
- ); -}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/actions.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/actions.tsx deleted file mode 100644 index 343b5e4db67e3..0000000000000 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/actions.tsx +++ /dev/null @@ -1,45 +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 from 'react'; - -import { TRANSFORM_STATE } from '../../../../../../common'; - -import { TransformListRow } from '../../../../common'; - -import { CloneAction } from './action_clone'; -import { DeleteAction } from './action_delete'; -import { EditAction } from './action_edit'; -import { StartAction } from './action_start'; -import { StopAction } from './action_stop'; - -export const getActions = ({ forceDisable }: { forceDisable: boolean }) => { - return [ - { - render: (item: TransformListRow) => { - if (item.stats.state === TRANSFORM_STATE.STOPPED) { - return ; - } - return ; - }, - }, - { - render: (item: TransformListRow) => { - return ; - }, - }, - { - render: (item: TransformListRow) => { - return ; - }, - }, - { - render: (item: TransformListRow) => { - return ; - }, - }, - ]; -}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.test.tsx index 5e0363d0a7a15..70b3dc7c2bffe 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.test.tsx @@ -10,6 +10,7 @@ import React from 'react'; import { TransformList } from './transform_list'; jest.mock('../../../../../shared_imports'); +jest.mock('../../../../../app/app_dependencies'); describe('Transform: Transform List ', () => { test('Minimal initialization', () => { diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.tsx index b1eea4a09fca3..9df4113fa9a8b 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/transform_list.tsx @@ -35,13 +35,12 @@ import { AuthorizationContext } from '../../../../lib/authorization'; import { CreateTransformButton } from '../create_transform_button'; import { RefreshTransformListButton } from '../refresh_transform_list_button'; -import { getTaskStateBadge } from './columns'; -import { DeleteAction } from './action_delete'; -import { StartAction } from './action_start'; -import { StopAction } from './action_stop'; +import { useDeleteAction, DeleteButton, DeleteButtonModal } from '../action_delete'; +import { useStartAction, StartButton, StartButtonModal } from '../action_start'; +import { StopButton } from '../action_stop'; import { ItemIdToExpandedRowMap, Clause, TermClause, FieldClause, Value } from './common'; -import { getColumns } from './columns'; +import { getTaskStateBadge, useColumns } from './use_columns'; import { ExpandedRow } from './expanded_row'; function getItemIdToExpandedRowMap( @@ -90,6 +89,8 @@ export const TransformList: FC = ({ const [transformSelection, setTransformSelection] = useState([]); const [isActionsMenuOpen, setIsActionsMenuOpen] = useState(false); + const bulkStartAction = useStartAction(); + const bulkDeleteAction = useDeleteAction(); const [searchError, setSearchError] = useState(undefined); @@ -185,6 +186,12 @@ export const TransformList: FC = ({ setIsLoading(false); }; + const { columns, modals: singleActionModals } = useColumns( + expandedRowItemIds, + setExpandedRowItemIds, + transformSelection + ); + // Before the transforms have been loaded for the first time, display the loading indicator only. // Otherwise a user would see 'No transforms found' during the initial loading. if (!isInitialized) { @@ -231,8 +238,6 @@ export const TransformList: FC = ({ ); } - const columns = getColumns(expandedRowItemIds, setExpandedRowItemIds, transformSelection); - const sorting = { sort: { field: sortField, @@ -252,13 +257,13 @@ export const TransformList: FC = ({ const bulkActionMenuItems = [
- +
,
- +
,
- +
, ]; @@ -375,6 +380,13 @@ export const TransformList: FC = ({ return (
+ {/* Bulk Action Modals */} + {bulkStartAction.isModalVisible && } + {bulkDeleteAction.isModalVisible && } + + {/* Single Action Modals */} + {singleActionModals} + { - test('getActions()', () => { - const actions = getActions({ forceDisable: false }); + test('useActions()', () => { + const { result } = renderHook(() => useActions({ forceDisable: false })); + const actions: ReturnType['actions'] = result.current.actions; expect(actions).toHaveLength(4); expect(typeof actions[0].render).toBe('function'); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_actions.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_actions.tsx new file mode 100644 index 0000000000000..a6b1aa1a1b5c5 --- /dev/null +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_actions.tsx @@ -0,0 +1,79 @@ +/* + * 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 { EuiTableComputedColumnType } from '@elastic/eui'; + +import { TRANSFORM_STATE } from '../../../../../../common'; + +import { TransformListRow } from '../../../../common'; + +import { CloneButton } from '../action_clone'; +import { useDeleteAction, DeleteButton, DeleteButtonModal } from '../action_delete'; +import { EditTransformFlyout } from '../edit_transform_flyout'; +import { useEditAction, EditButton } from '../action_edit'; +import { useStartAction, StartButton, StartButtonModal } from '../action_start'; +import { StopButton } from '../action_stop'; + +export const useActions = ({ + forceDisable, +}: { + forceDisable: boolean; +}): { actions: Array>; modals: JSX.Element } => { + const deleteAction = useDeleteAction(); + const editAction = useEditAction(); + const startAction = useStartAction(); + + return { + modals: ( + <> + {startAction.isModalVisible && } + {editAction.config && editAction.isFlyoutVisible && ( + + )} + {deleteAction.isModalVisible && } + + ), + actions: [ + { + render: (item: TransformListRow) => { + if (item.stats.state === TRANSFORM_STATE.STOPPED) { + return ( + + ); + } + return ; + }, + }, + { + render: (item: TransformListRow) => { + return editAction.showFlyout(item.config)} />; + }, + }, + { + render: (item: TransformListRow) => { + return ; + }, + }, + { + render: (item: TransformListRow) => { + return ( + + ); + }, + }, + ], + }; +}; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/columns.test.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx similarity index 67% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/columns.test.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx index 3c75c33caf840..94d3e5322a2e8 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/columns.test.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.test.tsx @@ -4,13 +4,17 @@ * you may not use this file except in compliance with the Elastic License. */ -import { getColumns } from './columns'; +import { renderHook } from '@testing-library/react-hooks'; + +import { useColumns } from './use_columns'; jest.mock('../../../../../shared_imports'); +jest.mock('../../../../../app/app_dependencies'); describe('Transform: Job List Columns', () => { - test('getColumns()', () => { - const columns = getColumns([], () => {}, []); + test('useColumns()', () => { + const { result } = renderHook(() => useColumns([], () => {}, [])); + const columns: ReturnType['columns'] = result.current.columns; expect(columns).toHaveLength(7); expect(columns[0].isExpander).toBeTruthy(); diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/columns.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx similarity index 96% rename from x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/columns.tsx rename to x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx index 5ed2566e8a194..d2d8c7084941d 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/columns.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/use_columns.tsx @@ -30,7 +30,7 @@ import { TransformStats, TRANSFORM_LIST_COLUMN, } from '../../../../common'; -import { getActions } from './actions'; +import { useActions } from './use_actions'; enum STATE_COLOR { aborting = 'warning', @@ -64,12 +64,12 @@ export const getTaskStateBadge = ( ); }; -export const getColumns = ( +export const useColumns = ( expandedRowItemIds: TransformId[], setExpandedRowItemIds: React.Dispatch>, transformSelection: TransformListRow[] ) => { - const actions = getActions({ forceDisable: transformSelection.length > 0 }); + const { actions, modals } = useActions({ forceDisable: transformSelection.length > 0 }); function toggleDetails(item: TransformListRow) { const index = expandedRowItemIds.indexOf(item.config.id); @@ -223,10 +223,10 @@ export const getColumns = ( }, { name: i18n.translate('xpack.transform.tableActionLabel', { defaultMessage: 'Actions' }), - actions, + actions: actions as EuiTableActionsColumnType['actions'], width: '80px', }, ]; - return columns; + return { columns, modals }; }; From 0ea7f9ff6e32a1d4b3bd9a008ceb46fa00935060 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Wed, 8 Jul 2020 11:48:06 +0300 Subject: [PATCH 05/38] [Functional test] Increase the timeout on opening a saved visualization (#70952) * fixes the flakiness on hybrid visualization test * increase timeout to 20 sec to find and click the hybrid visualization --- test/functional/page_objects/visualize_page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 49133d8b13836..a08598fc42d68 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -257,7 +257,7 @@ export function VisualizePageProvider({ getService, getPageObjects }: FtrProvide public async openSavedVisualization(vizName: string) { const dataTestSubj = `visListingTitleLink-${vizName.split(' ').join('-')}`; - await testSubjects.click(dataTestSubj); + await testSubjects.click(dataTestSubj, 20000); await header.waitUntilLoadingHasFinished(); } From a0a3e2f9ab2de8c37b9a014ff9c47aa31e87c6cb Mon Sep 17 00:00:00 2001 From: Marco Vettorello Date: Wed, 8 Jul 2020 11:10:03 +0200 Subject: [PATCH 06/38] fix: remove only consecutive ticks in TSVB (#70981) Co-authored-by: Elastic Machine --- package.json | 2 +- packages/kbn-ui-shared-deps/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index bb28c9e27e9f7..6178bb07067d7 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.10.1", "@babel/register": "^7.10.1", "@elastic/apm-rum": "^5.2.0", - "@elastic/charts": "19.8.0", + "@elastic/charts": "19.8.1", "@elastic/datemath": "5.0.3", "@elastic/ems-client": "7.9.3", "@elastic/eui": "24.1.0", diff --git a/packages/kbn-ui-shared-deps/package.json b/packages/kbn-ui-shared-deps/package.json index f4d9beb038966..6ea4a621f92f6 100644 --- a/packages/kbn-ui-shared-deps/package.json +++ b/packages/kbn-ui-shared-deps/package.json @@ -9,7 +9,7 @@ "kbn:watch": "node scripts/build --dev --watch" }, "dependencies": { - "@elastic/charts": "19.8.0", + "@elastic/charts": "19.8.1", "@elastic/eui": "24.1.0", "@elastic/numeral": "^2.5.0", "@kbn/i18n": "1.0.0", diff --git a/yarn.lock b/yarn.lock index ac5f653fdf3d5..acf7c3a1e8754 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2144,10 +2144,10 @@ dependencies: "@elastic/apm-rum-core" "^5.3.0" -"@elastic/charts@19.8.0": - version "19.8.0" - resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-19.8.0.tgz#d8439288e2574053ca9e6eee6f3b00bf04917803" - integrity sha512-px0mX0UBtFhbt5O4JAqOZPYC+K9avVmjgKPoIqQBMnnwkKtuKGH1mQ7XZro3E7COJ4WQ5nGxWtC+ewlFQP3zww== +"@elastic/charts@19.8.1": + version "19.8.1" + resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-19.8.1.tgz#27653823911c26e4703c73588367473215beaf0f" + integrity sha512-vONCrcZ8bZ+C16+bKLoLyNrMC/b2UvYNoPbYcnB5XYAg5a68finvXEcWD6Y+qa7GLaO2CMe5J9eSjLWXHHDmLg== dependencies: "@popperjs/core" "^2.4.0" chroma-js "^2.1.0" From 949941758f1f2633f36210f8c681c320740c22ef Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 8 Jul 2020 11:26:34 +0200 Subject: [PATCH 07/38] [RUM Dashboard] New rum services api to replace usage of get services API (#70746) --- .../RumDashboard/Charts/PageLoadDistChart.tsx | 2 +- .../PercentileAnnotations.tsx | 2 +- .../PageLoadDistribution/index.tsx | 2 +- .../components/app/RumDashboard/index.tsx | 8 +- .../__snapshots__/queries.test.ts.snap | 55 ++ .../rum_client/get_page_load_distribution.ts | 41 +- .../lib/rum_client/get_pl_dist_breakdown.ts | 10 +- .../server/lib/rum_client/get_rum_services.ts | 48 ++ .../apm/server/lib/rum_client/queries.test.ts | 10 + .../apm/server/routes/create_apm_api.ts | 2 + .../plugins/apm/server/routes/rum_client.ts | 13 + .../apm/typings/elasticsearch/aggregations.ts | 1 + .../es_archiver/rum_8.0.0/data.json.gz | Bin 0 -> 11144 bytes .../es_archiver/rum_8.0.0/mappings.json | 600 ++++++++++++++++++ .../apm_api_integration/trial/tests/index.ts | 1 + .../trial/tests/rum_services.ts | 47 ++ 16 files changed, 821 insertions(+), 21 deletions(-) create mode 100644 x-pack/plugins/apm/server/lib/rum_client/get_rum_services.ts create mode 100644 x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/data.json.gz create mode 100644 x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/mappings.json create mode 100644 x-pack/test/apm_api_integration/trial/tests/rum_services.ts diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageLoadDistChart.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageLoadDistChart.tsx index e17a8046b5c6a..6c5b539fcecfa 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageLoadDistChart.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageLoadDistChart.tsx @@ -119,7 +119,7 @@ export function PageLoadDistChart({ xScaleType={ScaleType.Linear} yScaleType={ScaleType.Linear} data={data?.pageLoadDistribution ?? []} - curve={CurveType.CURVE_NATURAL} + curve={CurveType.CURVE_CATMULL_ROM} /> {breakdowns.map(({ name, type }) => ( ): LineAnnotationDatum[] { return Object.entries(values ?? {}).map((value) => ({ - dataValue: Math.round(value[1] / 1000), + dataValue: value[1], details: `${(+value[0]).toFixed(0)}`, })); } diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx index 7d48cee49b104..81503e16f7bcf 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx @@ -68,7 +68,7 @@ export const PageLoadDistribution = () => { ); const onPercentileChange = (min: number, max: number) => { - setPercentileRange({ min: min * 1000, max: max * 1000 }); + setPercentileRange({ min, max }); }; return ( diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx index 3ddaa66b8de5e..3380a81c7bfab 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/index.tsx @@ -46,7 +46,7 @@ export function RumOverview() { (callApmApi) => { if (start && end) { return callApmApi({ - pathname: '/api/apm/services', + pathname: '/api/apm/rum-client/services', params: { query: { start, @@ -68,11 +68,7 @@ export function RumOverview() { {!isRumServiceRoute && ( <> - service.serviceName) ?? [] - } - /> + {' '} diff --git a/x-pack/plugins/apm/server/lib/rum_client/__snapshots__/queries.test.ts.snap b/x-pack/plugins/apm/server/lib/rum_client/__snapshots__/queries.test.ts.snap index c006d01637483..602eb88ba8940 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/__snapshots__/queries.test.ts.snap +++ b/x-pack/plugins/apm/server/lib/rum_client/__snapshots__/queries.test.ts.snap @@ -70,6 +70,9 @@ Object { "durPercentiles": Object { "percentiles": Object { "field": "transaction.duration.us", + "hdr": Object { + "number_of_significant_value_digits": 3, + }, "percents": Array [ 50, 75, @@ -179,3 +182,55 @@ Object { "index": "myIndex", } `; + +exports[`rum client dashboard queries fetches rum services 1`] = ` +Object { + "body": Object { + "aggs": Object { + "services": Object { + "terms": Object { + "field": "service.name", + "size": 1000, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "processor.event": "transaction", + }, + }, + Object { + "term": Object { + "transaction.type": "page-load", + }, + }, + Object { + "exists": Object { + "field": "transaction.marks.navigationTiming.fetchStart", + }, + }, + Object { + "term": Object { + "my.custom.ui.filter": "foo-bar", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_page_load_distribution.ts b/x-pack/plugins/apm/server/lib/rum_client/get_page_load_distribution.ts index 43af18999547d..e847a87264759 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_page_load_distribution.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_page_load_distribution.ts @@ -12,6 +12,12 @@ import { SetupUIFilters, } from '../helpers/setup_request'; +export const MICRO_TO_SEC = 1000000; + +export function microToSec(val: number) { + return Math.round((val / MICRO_TO_SEC + Number.EPSILON) * 100) / 100; +} + export async function getPageLoadDistribution({ setup, minPercentile, @@ -42,6 +48,9 @@ export async function getPageLoadDistribution({ percentiles: { field: 'transaction.duration.us', percents: [50, 75, 90, 95, 99], + hdr: { + number_of_significant_value_digits: 3, + }, }, }, }, @@ -59,20 +68,29 @@ export async function getPageLoadDistribution({ return null; } - const minDuration = aggregations?.minDuration.value ?? 0; + const { durPercentiles, minDuration } = aggregations ?? {}; - const minPerc = minPercentile ? +minPercentile : minDuration; + const minPerc = minPercentile + ? +minPercentile * MICRO_TO_SEC + : minDuration?.value ?? 0; - const maxPercQuery = aggregations?.durPercentiles.values['99.0'] ?? 10000; + const maxPercQuery = durPercentiles?.values['99.0'] ?? 10000; - const maxPerc = maxPercentile ? +maxPercentile : maxPercQuery; + const maxPerc = maxPercentile ? +maxPercentile * MICRO_TO_SEC : maxPercQuery; const pageDist = await getPercentilesDistribution(setup, minPerc, maxPerc); + + Object.entries(durPercentiles?.values ?? {}).forEach(([key, val]) => { + if (durPercentiles?.values?.[key]) { + durPercentiles.values[key] = microToSec(val as number); + } + }); + return { pageLoadDistribution: pageDist, - percentiles: aggregations?.durPercentiles.values, - minDuration: minPerc, - maxDuration: maxPerc, + percentiles: durPercentiles?.values, + minDuration: microToSec(minPerc), + maxDuration: microToSec(maxPerc), }; } @@ -81,9 +99,9 @@ const getPercentilesDistribution = async ( minDuration: number, maxDuration: number ) => { - const stepValue = (maxDuration - minDuration) / 50; + const stepValue = (maxDuration - minDuration) / 100; const stepValues = []; - for (let i = 1; i < 51; i++) { + for (let i = 1; i < 101; i++) { stepValues.push((stepValue * i + minDuration).toFixed(2)); } @@ -103,6 +121,9 @@ const getPercentilesDistribution = async ( field: 'transaction.duration.us', values: stepValues, keyed: false, + hdr: { + number_of_significant_value_digits: 3, + }, }, }, }, @@ -117,7 +138,7 @@ const getPercentilesDistribution = async ( return pageDist.map(({ key, value }, index: number, arr) => { return { - x: Math.round(key / 1000), + x: microToSec(key), y: index === 0 ? value : value - arr[index - 1].value, }; }); diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_pl_dist_breakdown.ts b/x-pack/plugins/apm/server/lib/rum_client/get_pl_dist_breakdown.ts index 5ae6bd1540f7c..ea9d701e64c3d 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/get_pl_dist_breakdown.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/get_pl_dist_breakdown.ts @@ -17,6 +17,7 @@ import { USER_AGENT_NAME, USER_AGENT_OS, } from '../../../common/elasticsearch_fieldnames'; +import { MICRO_TO_SEC, microToSec } from './get_page_load_distribution'; export const getBreakdownField = (breakdown: string) => { switch (breakdown) { @@ -38,7 +39,9 @@ export const getPageLoadDistBreakdown = async ( maxDuration: number, breakdown: string ) => { - const stepValue = (maxDuration - minDuration) / 50; + // convert secs to micros + const stepValue = + (maxDuration * MICRO_TO_SEC - minDuration * MICRO_TO_SEC) / 50; const stepValues = []; for (let i = 1; i < 51; i++) { @@ -67,6 +70,9 @@ export const getPageLoadDistBreakdown = async ( field: 'transaction.duration.us', values: stepValues, keyed: false, + hdr: { + number_of_significant_value_digits: 3, + }, }, }, }, @@ -86,7 +92,7 @@ export const getPageLoadDistBreakdown = async ( name: String(key), data: pageDist.values?.map(({ key: pKey, value }, index: number, arr) => { return { - x: Math.round(pKey / 1000), + x: microToSec(pKey), y: index === 0 ? value : value - arr[index - 1].value, }; }), diff --git a/x-pack/plugins/apm/server/lib/rum_client/get_rum_services.ts b/x-pack/plugins/apm/server/lib/rum_client/get_rum_services.ts new file mode 100644 index 0000000000000..5957a25239307 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/rum_client/get_rum_services.ts @@ -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 { getRumOverviewProjection } from '../../../common/projections/rum_overview'; +import { mergeProjection } from '../../../common/projections/util/merge_projection'; +import { + Setup, + SetupTimeRange, + SetupUIFilters, +} from '../helpers/setup_request'; + +export async function getRumServices({ + setup, +}: { + setup: Setup & SetupTimeRange & SetupUIFilters; +}) { + const projection = getRumOverviewProjection({ + setup, + }); + + const params = mergeProjection(projection, { + body: { + size: 0, + query: { + bool: projection.body.query.bool, + }, + aggs: { + services: { + terms: { + field: 'service.name', + size: 1000, + }, + }, + }, + }, + }); + + const { client } = setup; + + const response = await client.search(params); + + const result = response.aggregations?.services.buckets ?? []; + + return result.map(({ key }) => key as string); +} diff --git a/x-pack/plugins/apm/server/lib/rum_client/queries.test.ts b/x-pack/plugins/apm/server/lib/rum_client/queries.test.ts index 5f5a48eced746..37432672c5d89 100644 --- a/x-pack/plugins/apm/server/lib/rum_client/queries.test.ts +++ b/x-pack/plugins/apm/server/lib/rum_client/queries.test.ts @@ -11,6 +11,7 @@ import { import { getClientMetrics } from './get_client_metrics'; import { getPageViewTrends } from './get_page_view_trends'; import { getPageLoadDistribution } from './get_page_load_distribution'; +import { getRumServices } from './get_rum_services'; describe('rum client dashboard queries', () => { let mock: SearchParamsMock; @@ -49,4 +50,13 @@ describe('rum client dashboard queries', () => { ); expect(mock.params).toMatchSnapshot(); }); + + it('fetches rum services', async () => { + mock = await inspectSearchParams((setup) => + getRumServices({ + setup, + }) + ); + expect(mock.params).toMatchSnapshot(); + }); }); diff --git a/x-pack/plugins/apm/server/routes/create_apm_api.ts b/x-pack/plugins/apm/server/routes/create_apm_api.ts index c314debcd8049..513c44904683e 100644 --- a/x-pack/plugins/apm/server/routes/create_apm_api.ts +++ b/x-pack/plugins/apm/server/routes/create_apm_api.ts @@ -76,6 +76,7 @@ import { rumPageViewsTrendRoute, rumPageLoadDistributionRoute, rumPageLoadDistBreakdownRoute, + rumServicesRoute, } from './rum_client'; import { observabilityDashboardHasDataRoute, @@ -172,6 +173,7 @@ const createApmApi = () => { .add(rumPageLoadDistributionRoute) .add(rumPageLoadDistBreakdownRoute) .add(rumClientMetricsRoute) + .add(rumServicesRoute) // Observability dashboard .add(observabilityDashboardHasDataRoute) diff --git a/x-pack/plugins/apm/server/routes/rum_client.ts b/x-pack/plugins/apm/server/routes/rum_client.ts index 75651f646a50d..01e549632a0bc 100644 --- a/x-pack/plugins/apm/server/routes/rum_client.ts +++ b/x-pack/plugins/apm/server/routes/rum_client.ts @@ -12,6 +12,7 @@ import { rangeRt, uiFiltersRt } from './default_api_types'; import { getPageViewTrends } from '../lib/rum_client/get_page_view_trends'; import { getPageLoadDistribution } from '../lib/rum_client/get_page_load_distribution'; import { getPageLoadDistBreakdown } from '../lib/rum_client/get_pl_dist_breakdown'; +import { getRumServices } from '../lib/rum_client/get_rum_services'; export const percentileRangeRt = t.partial({ minPercentile: t.string, @@ -91,3 +92,15 @@ export const rumPageViewsTrendRoute = createRoute(() => ({ return getPageViewTrends({ setup, breakdowns }); }, })); + +export const rumServicesRoute = createRoute(() => ({ + path: '/api/apm/rum-client/services', + params: { + query: t.intersection([uiFiltersRt, rangeRt]), + }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + + return getRumServices({ setup }); + }, +})); diff --git a/x-pack/plugins/apm/typings/elasticsearch/aggregations.ts b/x-pack/plugins/apm/typings/elasticsearch/aggregations.ts index a340aa24aebfb..ac7499c23e926 100644 --- a/x-pack/plugins/apm/typings/elasticsearch/aggregations.ts +++ b/x-pack/plugins/apm/typings/elasticsearch/aggregations.ts @@ -150,6 +150,7 @@ export interface AggregationOptionsByType { field: string; values: string[]; keyed?: boolean; + hdr?: { number_of_significant_value_digits: number }; }; } diff --git a/x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/data.json.gz b/x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad3f2351ed30aff77f40ff7098e37ebd0915a0ef GIT binary patch literal 11144 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 literal 0 HcmV?d00001 diff --git a/x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/mappings.json b/x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/mappings.json new file mode 100644 index 0000000000000..48ac74d97dfa7 --- /dev/null +++ b/x-pack/test/apm_api_integration/trial/fixtures/es_archiver/rum_8.0.0/mappings.json @@ -0,0 +1,600 @@ +{ + "type": "index", + "value": { + "aliases": { + }, + "index": "apm-8.0.0-transaction-005", + "mappings": { + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "properties": { + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "client": { + "properties": { + "geo": { + "properties": { + "continent_name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "country_iso_code": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "location": { + "properties": { + "lat": { + "type": "float" + }, + "lon": { + "type": "float" + } + } + } + } + }, + "ip": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "ecs": { + "properties": { + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "event": { + "properties": { + "ingested": { + "type": "date" + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "referrer": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "response": { + "properties": { + "decoded_body_size": { + "type": "long" + }, + "encoded_body_size": { + "type": "long" + }, + "transfer_size": { + "type": "long" + } + } + } + } + }, + "observer": { + "properties": { + "ephemeral_id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "hostname": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version_major": { + "type": "long" + } + } + }, + "processor": { + "properties": { + "event": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "service": { + "properties": { + "language": { + "properties": { + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "source": { + "properties": { + "ip": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "timestamp": { + "properties": { + "us": { + "type": "long" + } + } + }, + "trace": { + "properties": { + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "transaction": { + "properties": { + "custom": { + "properties": { + "userConfig": { + "properties": { + "featureFlags": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "showDashboard": { + "type": "boolean" + } + } + } + } + }, + "duration": { + "properties": { + "us": { + "type": "long" + } + } + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "marks": { + "properties": { + "agent": { + "properties": { + "domComplete": { + "type": "long" + }, + "domInteractive": { + "type": "long" + }, + "firstContentfulPaint": { + "type": "float" + }, + "largestContentfulPaint": { + "type": "float" + }, + "timeToFirstByte": { + "type": "long" + } + } + }, + "navigationTiming": { + "properties": { + "connectEnd": { + "type": "long" + }, + "connectStart": { + "type": "long" + }, + "domComplete": { + "type": "long" + }, + "domContentLoadedEventEnd": { + "type": "long" + }, + "domContentLoadedEventStart": { + "type": "long" + }, + "domInteractive": { + "type": "long" + }, + "domLoading": { + "type": "long" + }, + "domainLookupEnd": { + "type": "long" + }, + "domainLookupStart": { + "type": "long" + }, + "fetchStart": { + "type": "long" + }, + "loadEventEnd": { + "type": "long" + }, + "loadEventStart": { + "type": "long" + }, + "requestStart": { + "type": "long" + }, + "responseEnd": { + "type": "long" + }, + "responseStart": { + "type": "long" + } + } + } + } + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "page": { + "properties": { + "referer": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "url": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "sampled": { + "type": "boolean" + }, + "span_count": { + "properties": { + "started": { + "type": "long" + } + } + }, + "type": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "url": { + "properties": { + "domain": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "full": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "original": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "path": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "port": { + "type": "long" + }, + "scheme": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "user": { + "properties": { + "email": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "original": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "os": { + "properties": { + "full": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "name": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "version": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + } + } + } + } + }, + "settings": { + "index": { + "number_of_replicas": "1", + "number_of_shards": "1" + } + } + } +} diff --git a/x-pack/test/apm_api_integration/trial/tests/index.ts b/x-pack/test/apm_api_integration/trial/tests/index.ts index 1a00f7e2df9e8..37328badcb794 100644 --- a/x-pack/test/apm_api_integration/trial/tests/index.ts +++ b/x-pack/test/apm_api_integration/trial/tests/index.ts @@ -11,5 +11,6 @@ export default function observabilityApiIntegrationTests({ loadTestFile }: FtrPr this.tags('ciGroup1'); loadTestFile(require.resolve('./annotations')); loadTestFile(require.resolve('./service_maps')); + loadTestFile(require.resolve('./rum_services')); }); } diff --git a/x-pack/test/apm_api_integration/trial/tests/rum_services.ts b/x-pack/test/apm_api_integration/trial/tests/rum_services.ts new file mode 100644 index 0000000000000..5505387de54a7 --- /dev/null +++ b/x-pack/test/apm_api_integration/trial/tests/rum_services.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 expect from '@kbn/expect'; +import { FtrProviderContext } from '../../common/ftr_provider_context'; + +export default function rumServicesApiTests({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + + describe('RUM Services', () => { + describe('when there is no data', () => { + it('returns empty list', async () => { + const response = await supertest.get( + '/api/apm/rum-client/services?start=2020-06-28T10%3A24%3A46.055Z&end=2020-07-29T10%3A24%3A46.055Z&uiFilters=%7B%22agentName%22%3A%5B%22js-base%22%2C%22rum-js%22%5D%7D' + ); + + expect(response.status).to.be(200); + expect(response.body).to.eql([]); + }); + }); + + describe('when there is data', () => { + before(async () => { + await esArchiver.load('8.0.0'); + await esArchiver.load('rum_8.0.0'); + }); + after(async () => { + await esArchiver.unload('8.0.0'); + await esArchiver.unload('rum_8.0.0'); + }); + + it('returns rum services list', async () => { + const response = await supertest.get( + '/api/apm/rum-client/services?start=2020-06-28T10%3A24%3A46.055Z&end=2020-07-29T10%3A24%3A46.055Z&uiFilters=%7B%22agentName%22%3A%5B%22js-base%22%2C%22rum-js%22%5D%7D' + ); + + expect(response.status).to.be(200); + + expect(response.body).to.eql(['client', 'opbean-client-rum']); + }); + }); + }); +} From 0ebddcf788de0f20379e4faec20467ce8ee55695 Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Wed, 8 Jul 2020 15:01:07 +0300 Subject: [PATCH 08/38] add a test interceptors do not have access to request body (#70929) --- .../http/integration_tests/lifecycle.test.ts | 137 +++++++++++++++++- 1 file changed, 136 insertions(+), 1 deletion(-) diff --git a/src/core/server/http/integration_tests/lifecycle.test.ts b/src/core/server/http/integration_tests/lifecycle.test.ts index 879cbc689f8e7..cbab14115ba6b 100644 --- a/src/core/server/http/integration_tests/lifecycle.test.ts +++ b/src/core/server/http/integration_tests/lifecycle.test.ts @@ -19,6 +19,7 @@ import supertest from 'supertest'; import request from 'request'; +import { schema } from '@kbn/config-schema'; import { ensureRawRequest } from '../router'; import { HttpService } from '../http_service'; @@ -222,6 +223,39 @@ describe('OnPreAuth', () => { await supertest(innerServer.listener).get('/').expect(200, { customField: 'undefined' }); }); + + it('has no access to request body', async () => { + const { registerOnPreAuth, server: innerServer, createRouter } = await server.setup(setupDeps); + const router = createRouter('/'); + let requestBody = null; + registerOnPreAuth((req, res, t) => { + requestBody = req.body; + return t.next(); + }); + + router.post( + { + path: '/', + validate: { + body: schema.object({ + term: schema.string(), + }), + }, + }, + (context, req, res) => res.ok({ body: req.body.term }) + ); + + await server.start(); + + await supertest(innerServer.listener) + .post('/') + .send({ + term: 'foo', + }) + .expect(200, 'foo'); + + expect(requestBody).toStrictEqual({}); + }); }); describe('OnPostAuth', () => { @@ -356,6 +390,39 @@ describe('OnPostAuth', () => { await supertest(innerServer.listener).get('/').expect(200, { customField: 'undefined' }); }); + + it('has no access to request body', async () => { + const { registerOnPostAuth, server: innerServer, createRouter } = await server.setup(setupDeps); + const router = createRouter('/'); + let requestBody = null; + registerOnPostAuth((req, res, t) => { + requestBody = req.body; + return t.next(); + }); + + router.post( + { + path: '/', + validate: { + body: schema.object({ + term: schema.string(), + }), + }, + }, + (context, req, res) => res.ok({ body: req.body.term }) + ); + + await server.start(); + + await supertest(innerServer.listener) + .post('/') + .send({ + term: 'foo', + }) + .expect(200, 'foo'); + + expect(requestBody).toStrictEqual({}); + }); }); describe('Auth', () => { @@ -852,10 +919,43 @@ describe('Auth', () => { await supertest(innerServer.listener).get('/').expect(200, { customField: 'undefined' }); }); + + it('has no access to request body', async () => { + const { registerAuth, server: innerServer, createRouter } = await server.setup(setupDeps); + const router = createRouter('/'); + let requestBody = null; + registerAuth((req, res, t) => { + requestBody = req.body; + return t.authenticated({}); + }); + + router.post( + { + path: '/', + validate: { + body: schema.object({ + term: schema.string(), + }), + }, + }, + (context, req, res) => res.ok({ body: req.body.term }) + ); + + await server.start(); + + await supertest(innerServer.listener) + .post('/') + .send({ + term: 'foo', + }) + .expect(200, 'foo'); + + expect(requestBody).toStrictEqual({}); + }); }); describe('OnPreResponse', () => { - it('supports registering response inceptors', async () => { + it('supports registering response interceptors', async () => { const { registerOnPreResponse, server: innerServer, createRouter } = await server.setup( setupDeps ); @@ -1001,4 +1101,39 @@ describe('OnPreResponse', () => { await supertest(innerServer.listener).get('/').expect(200); }); + + it('has no access to request body', async () => { + const { registerOnPreResponse, server: innerServer, createRouter } = await server.setup( + setupDeps + ); + const router = createRouter('/'); + let requestBody = null; + registerOnPreResponse((req, res, t) => { + requestBody = req.body; + return t.next(); + }); + + router.post( + { + path: '/', + validate: { + body: schema.object({ + term: schema.string(), + }), + }, + }, + (context, req, res) => res.ok({ body: req.body.term }) + ); + + await server.start(); + + await supertest(innerServer.listener) + .post('/') + .send({ + term: 'foo', + }) + .expect(200, 'foo'); + + expect(requestBody).toStrictEqual({}); + }); }); From 1c91b1c9c23275d2bcc74f93359d72af38065d16 Mon Sep 17 00:00:00 2001 From: Daniil Suleiman <31325372+sulemanof@users.noreply.github.com> Date: Wed, 8 Jul 2020 15:06:53 +0300 Subject: [PATCH 09/38] [Visualize] Add unit tests (#70410) * Reactify visualize app * Fix typescript failures after merging master * Make sure refresh button works * Subscribe filter manager fetches * Use redirect to landing page * Update savedSearch type * Add check for TSVB is loaded * Add unit tests for useSavedVisInstance effect * Fix comments * Fix uiState persistence on vis load * Remove extra div around TableListView * Update DTS selectors * Add error handling for embeddable * Add unit tests for createVisualizeAppState * Add unit tests for useChromeVisibility * Add filter_manager.mock * Add unit tests for useVisualizeAppState * Use app state stub * Add unit tests for useLinkedSearchUpdates * Add unit tests for useEditorUpdates * Remove extra argument from useEditorUpdates effect * Update comments, fix typos * Remove extra div wrapper * Apply design suggestions * Revert accidental config changes * Add unit tests for useEditorUpdates * Use visualize services mock * Add unit tests for getVisualizationInstance * Fix eslint warnings Co-authored-by: Elastic Machine --- .../filter_manager/filter_manager.mock.ts | 42 +++ src/plugins/data/public/query/mocks.ts | 5 +- src/plugins/visualizations/public/mocks.ts | 4 +- .../visualize/public/application/types.ts | 2 +- .../utils/create_visualize_app_state.test.ts | 134 +++++++ .../utils/get_visualization_instance.test.ts | 124 +++++++ .../public/application/utils/mocks.ts | 43 +++ .../public/application/utils/stubs.ts | 89 +++++ .../utils/use/use_chrome_visibility.test.ts | 55 +++ .../utils/use/use_editor_updates.test.ts | 327 ++++++++++++++++++ .../use/use_linked_search_updates.test.ts | 76 ++++ .../utils/use/use_saved_vis_instance.test.ts | 224 ++++++++++++ .../utils/use/use_visualize_app_state.test.ts | 210 +++++++++++ 13 files changed, 1331 insertions(+), 4 deletions(-) create mode 100644 src/plugins/data/public/query/filter_manager/filter_manager.mock.ts create mode 100644 src/plugins/visualize/public/application/utils/create_visualize_app_state.test.ts create mode 100644 src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts create mode 100644 src/plugins/visualize/public/application/utils/mocks.ts create mode 100644 src/plugins/visualize/public/application/utils/stubs.ts create mode 100644 src/plugins/visualize/public/application/utils/use/use_chrome_visibility.test.ts create mode 100644 src/plugins/visualize/public/application/utils/use/use_editor_updates.test.ts create mode 100644 src/plugins/visualize/public/application/utils/use/use_linked_search_updates.test.ts create mode 100644 src/plugins/visualize/public/application/utils/use/use_saved_vis_instance.test.ts create mode 100644 src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts diff --git a/src/plugins/data/public/query/filter_manager/filter_manager.mock.ts b/src/plugins/data/public/query/filter_manager/filter_manager.mock.ts new file mode 100644 index 0000000000000..c95a943be7713 --- /dev/null +++ b/src/plugins/data/public/query/filter_manager/filter_manager.mock.ts @@ -0,0 +1,42 @@ +/* + * 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 { Observable } from 'rxjs'; +import { FilterManager } from './filter_manager'; + +export const createFilterManagerMock = () => { + const filterManager = ({ + mergeIncomingFilters: jest.fn(), + handleStateUpdate: jest.fn(), + getFilters: jest.fn(), + getAppFilters: jest.fn(), + getGlobalFilters: jest.fn(), + getPartitionedFilters: jest.fn(), + getUpdates$: jest.fn(() => new Observable()), + getFetches$: jest.fn(() => new Observable()), + addFilters: jest.fn(), + setFilters: jest.fn(), + setGlobalFilters: jest.fn(), + setAppFilters: jest.fn(), + removeFilter: jest.fn(), + removeAll: jest.fn(), + } as unknown) as jest.Mocked; + + return filterManager; +}; diff --git a/src/plugins/data/public/query/mocks.ts b/src/plugins/data/public/query/mocks.ts index 0c19f71277bc5..41896107bb868 100644 --- a/src/plugins/data/public/query/mocks.ts +++ b/src/plugins/data/public/query/mocks.ts @@ -20,12 +20,13 @@ import { Observable } from 'rxjs'; import { QueryService, QuerySetup, QueryStart } from '.'; import { timefilterServiceMock } from './timefilter/timefilter_service.mock'; +import { createFilterManagerMock } from './filter_manager/filter_manager.mock'; type QueryServiceClientContract = PublicMethodsOf; const createSetupContractMock = () => { const setupContract: jest.Mocked = { - filterManager: jest.fn() as any, + filterManager: createFilterManagerMock(), timefilter: timefilterServiceMock.createSetupContract(), state$: new Observable(), }; @@ -36,7 +37,7 @@ const createSetupContractMock = () => { const createStartContractMock = () => { const startContract: jest.Mocked = { addToQueryLog: jest.fn(), - filterManager: jest.fn() as any, + filterManager: createFilterManagerMock(), savedQueries: jest.fn() as any, state$: new Observable(), timefilter: timefilterServiceMock.createStartContract(), diff --git a/src/plugins/visualizations/public/mocks.ts b/src/plugins/visualizations/public/mocks.ts index 05644eddc5fca..e0ec4801b3caf 100644 --- a/src/plugins/visualizations/public/mocks.ts +++ b/src/plugins/visualizations/public/mocks.ts @@ -39,7 +39,9 @@ const createStartContract = (): VisualizationsStart => ({ get: jest.fn(), all: jest.fn(), getAliases: jest.fn(), - savedVisualizationsLoader: {} as any, + savedVisualizationsLoader: { + get: jest.fn(), + } as any, showNewVisModal: jest.fn(), createVis: jest.fn(), convertFromSerializedVis: jest.fn(), diff --git a/src/plugins/visualize/public/application/types.ts b/src/plugins/visualize/public/application/types.ts index a6adaf1f3c62b..02ae1cc155dd2 100644 --- a/src/plugins/visualize/public/application/types.ts +++ b/src/plugins/visualize/public/application/types.ts @@ -50,7 +50,7 @@ export type PureVisState = SavedVisState; export interface VisualizeAppState { filters: Filter[]; - uiState: PersistedState; + uiState: Record; vis: PureVisState; query: Query; savedQuery?: string; diff --git a/src/plugins/visualize/public/application/utils/create_visualize_app_state.test.ts b/src/plugins/visualize/public/application/utils/create_visualize_app_state.test.ts new file mode 100644 index 0000000000000..885eec8a68d2d --- /dev/null +++ b/src/plugins/visualize/public/application/utils/create_visualize_app_state.test.ts @@ -0,0 +1,134 @@ +/* + * 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 { IKbnUrlStateStorage } from 'src/plugins/kibana_utils/public'; +import { createVisualizeAppState } from './create_visualize_app_state'; +import { migrateAppState } from './migrate_app_state'; +import { visualizeAppStateStub } from './stubs'; + +const mockStartStateSync = jest.fn(); +const mockStopStateSync = jest.fn(); + +jest.mock('../../../../kibana_utils/public', () => ({ + createStateContainer: jest.fn(() => 'stateContainer'), + syncState: jest.fn(() => ({ + start: mockStartStateSync, + stop: mockStopStateSync, + })), +})); +jest.mock('./migrate_app_state', () => ({ + migrateAppState: jest.fn(() => 'migratedAppState'), +})); + +const { createStateContainer, syncState } = jest.requireMock('../../../../kibana_utils/public'); + +describe('createVisualizeAppState', () => { + const kbnUrlStateStorage = ({ + set: jest.fn(), + get: jest.fn(() => ({ linked: false })), + } as unknown) as IKbnUrlStateStorage; + + const { stateContainer, stopStateSync } = createVisualizeAppState({ + stateDefaults: visualizeAppStateStub, + kbnUrlStateStorage, + }); + const transitions = createStateContainer.mock.calls[0][1]; + + test('should initialize visualize app state', () => { + expect(kbnUrlStateStorage.get).toHaveBeenCalledWith('_a'); + expect(migrateAppState).toHaveBeenCalledWith({ + ...visualizeAppStateStub, + linked: false, + }); + expect(kbnUrlStateStorage.set).toHaveBeenCalledWith('_a', 'migratedAppState', { + replace: true, + }); + expect(createStateContainer).toHaveBeenCalled(); + expect(syncState).toHaveBeenCalled(); + expect(mockStartStateSync).toHaveBeenCalled(); + }); + + test('should return the stateContainer and stopStateSync', () => { + expect(stateContainer).toBe('stateContainer'); + stopStateSync(); + expect(stopStateSync).toHaveBeenCalledTimes(1); + }); + + describe('stateContainer transitions', () => { + test('set', () => { + const newQuery = { query: '', language: '' }; + expect(transitions.set(visualizeAppStateStub)('query', newQuery)).toEqual({ + ...visualizeAppStateStub, + query: newQuery, + }); + }); + + test('setVis', () => { + const newVis = { data: 'data' }; + expect(transitions.setVis(visualizeAppStateStub)(newVis)).toEqual({ + ...visualizeAppStateStub, + vis: { + ...visualizeAppStateStub.vis, + ...newVis, + }, + }); + }); + + test('unlinkSavedSearch', () => { + const params = { + query: { query: '', language: '' }, + parentFilters: [{ test: 'filter2' }], + }; + expect(transitions.unlinkSavedSearch(visualizeAppStateStub)(params)).toEqual({ + ...visualizeAppStateStub, + query: params.query, + filters: [...visualizeAppStateStub.filters, { test: 'filter2' }], + linked: false, + }); + }); + + test('updateVisState: should not include resctricted param types', () => { + const newVisState = { + a: 1, + _b: 2, + $c: 3, + d: () => {}, + }; + expect(transitions.updateVisState(visualizeAppStateStub)(newVisState)).toEqual({ + ...visualizeAppStateStub, + vis: { a: 1 }, + }); + }); + + test('updateSavedQuery: add savedQuery', () => { + const savedQueryId = '123test'; + expect(transitions.updateSavedQuery(visualizeAppStateStub)(savedQueryId)).toEqual({ + ...visualizeAppStateStub, + savedQuery: savedQueryId, + }); + }); + + test('updateSavedQuery: remove savedQuery from state', () => { + const savedQueryId = '123test'; + expect( + transitions.updateSavedQuery({ ...visualizeAppStateStub, savedQuery: savedQueryId })() + ).toEqual(visualizeAppStateStub); + }); + }); +}); diff --git a/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts b/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts new file mode 100644 index 0000000000000..31f0fc5f94479 --- /dev/null +++ b/src/plugins/visualize/public/application/utils/get_visualization_instance.test.ts @@ -0,0 +1,124 @@ +/* + * 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 { createSavedSearchesLoader } from '../../../../discover/public'; +import { getVisualizationInstance } from './get_visualization_instance'; +import { createVisualizeServicesMock } from './mocks'; +import { VisualizeServices } from '../types'; +import { BehaviorSubject } from 'rxjs'; + +const mockSavedSearchObj = {}; +const mockGetSavedSearch = jest.fn(() => mockSavedSearchObj); + +jest.mock('../../../../discover/public', () => ({ + createSavedSearchesLoader: jest.fn(() => ({ + get: mockGetSavedSearch, + })), +})); + +describe('getVisualizationInstance', () => { + const serializedVisMock = { + type: 'area', + }; + let savedVisMock: any; + let visMock: any; + let mockServices: jest.Mocked; + let subj: BehaviorSubject; + + beforeEach(() => { + mockServices = createVisualizeServicesMock(); + subj = new BehaviorSubject({}); + visMock = { + type: {}, + data: {}, + }; + savedVisMock = {}; + // @ts-expect-error + mockServices.savedVisualizations.get.mockImplementation(() => savedVisMock); + // @ts-expect-error + mockServices.visualizations.convertToSerializedVis.mockImplementation(() => serializedVisMock); + // @ts-expect-error + mockServices.visualizations.createVis.mockImplementation(() => visMock); + // @ts-expect-error + mockServices.createVisEmbeddableFromObject.mockImplementation(() => ({ + getOutput$: jest.fn(() => subj.asObservable()), + })); + }); + + test('should create new instances of savedVis, vis and embeddableHandler', async () => { + const opts = { + type: 'area', + indexPattern: 'my_index_pattern', + }; + const { savedVis, savedSearch, vis, embeddableHandler } = await getVisualizationInstance( + mockServices, + opts + ); + + expect(mockServices.savedVisualizations.get).toHaveBeenCalledWith(opts); + expect(savedVisMock.searchSourceFields).toEqual({ + index: opts.indexPattern, + }); + expect(mockServices.visualizations.convertToSerializedVis).toHaveBeenCalledWith(savedVisMock); + expect(mockServices.visualizations.createVis).toHaveBeenCalledWith( + serializedVisMock.type, + serializedVisMock + ); + expect(mockServices.createVisEmbeddableFromObject).toHaveBeenCalledWith(visMock, { + timeRange: undefined, + filters: undefined, + id: '', + }); + + expect(vis).toBe(visMock); + expect(savedVis).toBe(savedVisMock); + expect(embeddableHandler).toBeDefined(); + expect(savedSearch).toBeUndefined(); + }); + + test('should load existing vis by id and call vis type setup if exists', async () => { + const newVisObj = { data: {} }; + visMock.type.setup = jest.fn(() => newVisObj); + const { vis } = await getVisualizationInstance(mockServices, 'saved_vis_id'); + + expect(mockServices.savedVisualizations.get).toHaveBeenCalledWith('saved_vis_id'); + expect(savedVisMock.searchSourceFields).toBeUndefined(); + expect(visMock.type.setup).toHaveBeenCalledWith(visMock); + expect(vis).toBe(newVisObj); + }); + + test('should create saved search instance if vis based on saved search id', async () => { + visMock.data.savedSearchId = 'saved_search_id'; + const { savedSearch } = await getVisualizationInstance(mockServices, 'saved_vis_id'); + + expect(createSavedSearchesLoader).toHaveBeenCalled(); + expect(mockGetSavedSearch).toHaveBeenCalledWith(visMock.data.savedSearchId); + expect(savedSearch).toBe(mockSavedSearchObj); + }); + + test('should subscribe on embeddable handler updates and send toasts on errors', async () => { + await getVisualizationInstance(mockServices, 'saved_vis_id'); + + subj.next({ + error: 'error', + }); + + expect(mockServices.toastNotifications.addError).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/visualize/public/application/utils/mocks.ts b/src/plugins/visualize/public/application/utils/mocks.ts new file mode 100644 index 0000000000000..09e7ba23875ca --- /dev/null +++ b/src/plugins/visualize/public/application/utils/mocks.ts @@ -0,0 +1,43 @@ +/* + * 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 { coreMock } from '../../../../../core/public/mocks'; +import { dataPluginMock } from '../../../../data/public/mocks'; +import { visualizationsPluginMock } from '../../../../visualizations/public/mocks'; +import { VisualizeServices } from '../types'; + +export const createVisualizeServicesMock = () => { + const coreStartMock = coreMock.createStart(); + const dataStartMock = dataPluginMock.createStartContract(); + const toastNotifications = coreStartMock.notifications.toasts; + const visualizations = visualizationsPluginMock.createStartContract(); + + return ({ + ...coreStartMock, + data: dataStartMock, + toastNotifications, + history: { + replace: jest.fn(), + location: { pathname: '' }, + }, + visualizations, + savedVisualizations: visualizations.savedVisualizationsLoader, + createVisEmbeddableFromObject: visualizations.__LEGACY.createVisEmbeddableFromObject, + } as unknown) as jest.Mocked; +}; diff --git a/src/plugins/visualize/public/application/utils/stubs.ts b/src/plugins/visualize/public/application/utils/stubs.ts new file mode 100644 index 0000000000000..1bbd738a739cf --- /dev/null +++ b/src/plugins/visualize/public/application/utils/stubs.ts @@ -0,0 +1,89 @@ +/* + * 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 { VisualizeAppState } from '../types'; + +export const visualizeAppStateStub: VisualizeAppState = { + uiState: { + vis: { + defaultColors: { + '0 - 2': 'rgb(165,0,38)', + '2 - 3': 'rgb(255,255,190)', + '3 - 4': 'rgb(0,104,55)', + }, + }, + }, + query: { query: '', language: 'kuery' }, + filters: [], + vis: { + title: '[eCommerce] Average Sold Quantity', + type: 'gauge', + aggs: [ + { + id: '1', + enabled: true, + // @ts-expect-error + type: 'avg', + schema: 'metric', + params: { field: 'total_quantity', customLabel: 'average items' }, + }, + ], + params: { + type: 'gauge', + addTooltip: true, + addLegend: true, + isDisplayWarning: false, + gauge: { + extendRange: true, + percentageMode: false, + gaugeType: 'Circle', + gaugeStyle: 'Full', + backStyle: 'Full', + orientation: 'vertical', + colorSchema: 'Green to Red', + gaugeColorMode: 'Labels', + colorsRange: [ + { from: 0, to: 2 }, + { from: 2, to: 3 }, + { from: 3, to: 4 }, + ], + invertColors: true, + labels: { show: true, color: 'black' }, + scale: { show: false, labels: false, color: '#333' }, + type: 'meter', + style: { + bgWidth: 0.9, + width: 0.9, + mask: false, + bgMask: false, + maskBars: 50, + bgFill: '#eee', + bgColor: false, + subText: 'per order', + fontSize: 60, + labelColor: true, + }, + minAngle: 0, + maxAngle: 6.283185307179586, + alignment: 'horizontal', + }, + }, + }, + linked: false, +}; diff --git a/src/plugins/visualize/public/application/utils/use/use_chrome_visibility.test.ts b/src/plugins/visualize/public/application/utils/use/use_chrome_visibility.test.ts new file mode 100644 index 0000000000000..904816db22278 --- /dev/null +++ b/src/plugins/visualize/public/application/utils/use/use_chrome_visibility.test.ts @@ -0,0 +1,55 @@ +/* + * 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 { act, renderHook } from '@testing-library/react-hooks'; + +import { chromeServiceMock } from '../../../../../../core/public/mocks'; +import { useChromeVisibility } from './use_chrome_visibility'; + +describe('useChromeVisibility', () => { + const chromeMock = chromeServiceMock.createStartContract(); + + test('should set up a subscription for chrome visibility', () => { + const { result } = renderHook(() => useChromeVisibility(chromeMock)); + + expect(chromeMock.getIsVisible$).toHaveBeenCalled(); + expect(result.current).toEqual(false); + }); + + test('should change chrome visibility to true if change was emitted', () => { + const { result } = renderHook(() => useChromeVisibility(chromeMock)); + const behaviorSubj = chromeMock.getIsVisible$.mock.results[0].value; + act(() => { + behaviorSubj.next(true); + }); + + expect(result.current).toEqual(true); + }); + + test('should destroy a subscription', () => { + const { unmount } = renderHook(() => useChromeVisibility(chromeMock)); + const behaviorSubj = chromeMock.getIsVisible$.mock.results[0].value; + const subscription = behaviorSubj.observers[0]; + subscription.unsubscribe = jest.fn(); + + unmount(); + + expect(subscription.unsubscribe).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/visualize/public/application/utils/use/use_editor_updates.test.ts b/src/plugins/visualize/public/application/utils/use/use_editor_updates.test.ts new file mode 100644 index 0000000000000..3546ee7b321bb --- /dev/null +++ b/src/plugins/visualize/public/application/utils/use/use_editor_updates.test.ts @@ -0,0 +1,327 @@ +/* + * 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 { renderHook, act } from '@testing-library/react-hooks'; +import { EventEmitter } from 'events'; + +import { useEditorUpdates } from './use_editor_updates'; +import { + VisualizeServices, + VisualizeAppStateContainer, + SavedVisInstance, + IEditorController, +} from '../../types'; +import { visualizeAppStateStub } from '../stubs'; +import { createVisualizeServicesMock } from '../mocks'; + +describe('useEditorUpdates', () => { + const eventEmitter = new EventEmitter(); + const setHasUnsavedChangesMock = jest.fn(); + let mockServices: jest.Mocked; + + beforeEach(() => { + mockServices = createVisualizeServicesMock(); + // @ts-expect-error + mockServices.visualizations.convertFromSerializedVis.mockImplementation(() => ({ + visState: visualizeAppStateStub.vis, + })); + }); + + test('should not create any subscriptions if app state container is not ready', () => { + const { result } = renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + null, + undefined, + undefined + ) + ); + + expect(result.current).toEqual({ + isEmbeddableRendered: false, + currentAppState: undefined, + }); + }); + + let unsubscribeStateUpdatesMock: jest.Mock; + let appState: VisualizeAppStateContainer; + let savedVisInstance: SavedVisInstance; + let visEditorController: IEditorController; + let timeRange: any; + let mockFilters: any; + + beforeEach(() => { + unsubscribeStateUpdatesMock = jest.fn(); + appState = ({ + getState: jest.fn(() => visualizeAppStateStub), + subscribe: jest.fn(() => unsubscribeStateUpdatesMock), + transitions: { + set: jest.fn(), + }, + } as unknown) as VisualizeAppStateContainer; + savedVisInstance = ({ + vis: { + uiState: { + on: jest.fn(), + off: jest.fn(), + setSilent: jest.fn(), + getChanges: jest.fn(() => visualizeAppStateStub.uiState), + }, + data: {}, + serialize: jest.fn(), + title: visualizeAppStateStub.vis.title, + setState: jest.fn(), + }, + embeddableHandler: { + updateInput: jest.fn(), + reload: jest.fn(), + }, + savedVis: {}, + } as unknown) as SavedVisInstance; + visEditorController = { + render: jest.fn(), + destroy: jest.fn(), + }; + timeRange = { + from: 'now-15m', + to: 'now', + }; + mockFilters = ['mockFilters']; + // @ts-expect-error + mockServices.data.query.timefilter.timefilter.getTime.mockImplementation(() => timeRange); + // @ts-expect-error + mockServices.data.query.filterManager.getFilters.mockImplementation(() => mockFilters); + }); + + test('should set up current app state and render the editor', () => { + const { result } = renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + visEditorController + ) + ); + + expect(result.current).toEqual({ + isEmbeddableRendered: false, + currentAppState: visualizeAppStateStub, + }); + expect(savedVisInstance.vis.uiState.setSilent).toHaveBeenCalledWith( + visualizeAppStateStub.uiState + ); + expect(visEditorController.render).toHaveBeenCalledWith({ + core: mockServices, + data: mockServices.data, + uiState: savedVisInstance.vis.uiState, + timeRange, + filters: mockFilters, + query: visualizeAppStateStub.query, + linked: false, + savedSearch: undefined, + }); + }); + + test('should update embeddable handler in embeded mode', () => { + renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + + expect(savedVisInstance.embeddableHandler.updateInput).toHaveBeenCalledWith({ + timeRange, + filters: mockFilters, + query: visualizeAppStateStub.query, + }); + }); + + test('should update isEmbeddableRendered value when embedabble is rendered', () => { + const { result } = renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + + act(() => { + eventEmitter.emit('embeddableRendered'); + }); + + expect(result.current.isEmbeddableRendered).toBe(true); + }); + + test('should destroy subscriptions on unmount', () => { + const { unmount } = renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + + unmount(); + + expect(unsubscribeStateUpdatesMock).toHaveBeenCalledTimes(1); + expect(savedVisInstance.vis.uiState.off).toHaveBeenCalledTimes(1); + }); + + describe('subscribe on app state updates', () => { + test('should subscribe on appState updates', () => { + const { result } = renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + // @ts-expect-error + const listener = appState.subscribe.mock.calls[0][0]; + + act(() => { + listener(visualizeAppStateStub); + }); + + expect(result.current.currentAppState).toEqual(visualizeAppStateStub); + expect(setHasUnsavedChangesMock).toHaveBeenCalledWith(true); + expect(savedVisInstance.embeddableHandler.updateInput).toHaveBeenCalledTimes(2); + }); + + test('should update vis state and reload the editor if changes come from url', () => { + const { result } = renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + // @ts-expect-error + const listener = appState.subscribe.mock.calls[0][0]; + const newAppState = { + ...visualizeAppStateStub, + vis: { + ...visualizeAppStateStub.vis, + title: 'New title', + }, + }; + const { aggs, ...visState } = newAppState.vis; + const updateEditorSpy = jest.fn(); + + eventEmitter.on('updateEditor', updateEditorSpy); + + act(() => { + listener(newAppState); + }); + + expect(result.current.currentAppState).toEqual(newAppState); + expect(savedVisInstance.vis.setState).toHaveBeenCalledWith({ + ...visState, + data: { aggs }, + }); + expect(savedVisInstance.embeddableHandler.reload).toHaveBeenCalled(); + expect(updateEditorSpy).toHaveBeenCalled(); + }); + + describe('handle linked search changes', () => { + test('should update saved search id in saved instance', () => { + // @ts-expect-error + savedVisInstance.savedSearch = { + id: 'saved_search_id', + }; + + renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + // @ts-expect-error + const listener = appState.subscribe.mock.calls[0][0]; + + act(() => { + listener({ + ...visualizeAppStateStub, + linked: true, + }); + }); + + expect(savedVisInstance.savedVis.savedSearchId).toEqual('saved_search_id'); + expect(savedVisInstance.vis.data.savedSearchId).toEqual('saved_search_id'); + }); + + test('should remove saved search id from vis instance', () => { + // @ts-expect-error + savedVisInstance.savedVis = { + savedSearchId: 'saved_search_id', + }; + // @ts-expect-error + savedVisInstance.savedSearch = { + id: 'saved_search_id', + }; + savedVisInstance.vis.data.savedSearchId = 'saved_search_id'; + + renderHook(() => + useEditorUpdates( + mockServices, + eventEmitter, + setHasUnsavedChangesMock, + appState, + savedVisInstance, + undefined + ) + ); + // @ts-expect-error + const listener = appState.subscribe.mock.calls[0][0]; + + act(() => { + listener(visualizeAppStateStub); + }); + + expect(savedVisInstance.savedVis.savedSearchId).toBeUndefined(); + expect(savedVisInstance.vis.data.savedSearchId).toBeUndefined(); + }); + }); + }); +}); diff --git a/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.test.ts b/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.test.ts new file mode 100644 index 0000000000000..4c9ebbc1d9abd --- /dev/null +++ b/src/plugins/visualize/public/application/utils/use/use_linked_search_updates.test.ts @@ -0,0 +1,76 @@ +/* + * 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 { renderHook } from '@testing-library/react-hooks'; +import { EventEmitter } from 'events'; + +import { useLinkedSearchUpdates } from './use_linked_search_updates'; +import { VisualizeServices, SavedVisInstance, VisualizeAppStateContainer } from '../../types'; +import { createVisualizeServicesMock } from '../mocks'; + +describe('useLinkedSearchUpdates', () => { + let mockServices: jest.Mocked; + const eventEmitter = new EventEmitter(); + const savedVisInstance = ({ + vis: { + data: { + searchSource: { setField: jest.fn(), setParent: jest.fn() }, + }, + }, + savedVis: {}, + embeddableHandler: {}, + } as unknown) as SavedVisInstance; + + beforeEach(() => { + mockServices = createVisualizeServicesMock(); + }); + + it('should not subscribe on unlinkFromSavedSearch event if appState or savedSearch are not defined', () => { + renderHook(() => useLinkedSearchUpdates(mockServices, eventEmitter, null, savedVisInstance)); + + expect(mockServices.toastNotifications.addSuccess).not.toHaveBeenCalled(); + }); + + it('should subscribe on unlinkFromSavedSearch event if vis is based on saved search', () => { + const mockAppState = ({ + transitions: { + unlinkSavedSearch: jest.fn(), + }, + } as unknown) as VisualizeAppStateContainer; + savedVisInstance.savedSearch = ({ + searchSource: { + getParent: jest.fn(), + getField: jest.fn(), + getOwnField: jest.fn(), + }, + title: 'savedSearch', + } as unknown) as SavedVisInstance['savedSearch']; + + renderHook(() => + useLinkedSearchUpdates(mockServices, eventEmitter, mockAppState, savedVisInstance) + ); + + eventEmitter.emit('unlinkFromSavedSearch'); + + expect(savedVisInstance.savedSearch?.searchSource?.getParent).toHaveBeenCalled(); + expect(savedVisInstance.savedSearch?.searchSource?.getField).toHaveBeenCalledWith('index'); + expect(mockAppState.transitions.unlinkSavedSearch).toHaveBeenCalled(); + expect(mockServices.toastNotifications.addSuccess).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/visualize/public/application/utils/use/use_saved_vis_instance.test.ts b/src/plugins/visualize/public/application/utils/use/use_saved_vis_instance.test.ts new file mode 100644 index 0000000000000..a6b6d8ca0e837 --- /dev/null +++ b/src/plugins/visualize/public/application/utils/use/use_saved_vis_instance.test.ts @@ -0,0 +1,224 @@ +/* + * 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 { renderHook } from '@testing-library/react-hooks'; +import { EventEmitter } from 'events'; + +import { coreMock } from '../../../../../../core/public/mocks'; +import { useSavedVisInstance } from './use_saved_vis_instance'; +import { redirectWhenMissing } from '../../../../../kibana_utils/public'; +import { getEditBreadcrumbs, getCreateBreadcrumbs } from '../breadcrumbs'; +import { VisualizeServices } from '../../types'; +import { VisualizeConstants } from '../../visualize_constants'; + +const mockDefaultEditorControllerDestroy = jest.fn(); +const mockEmbeddableHandlerDestroy = jest.fn(); +const mockEmbeddableHandlerRender = jest.fn(); +const mockSavedVisDestroy = jest.fn(); +const savedVisId = '9ca7aa90-b892-11e8-a6d9-e546fe2bba5f'; +const mockSavedVisInstance = { + embeddableHandler: { + destroy: mockEmbeddableHandlerDestroy, + render: mockEmbeddableHandlerRender, + }, + savedVis: { + id: savedVisId, + title: 'Test Vis', + destroy: mockSavedVisDestroy, + }, + vis: { + type: {}, + }, +}; + +jest.mock('../get_visualization_instance', () => ({ + getVisualizationInstance: jest.fn(() => mockSavedVisInstance), +})); +jest.mock('../breadcrumbs', () => ({ + getEditBreadcrumbs: jest.fn((text) => text), + getCreateBreadcrumbs: jest.fn((text) => text), +})); +jest.mock('../../../../../vis_default_editor/public', () => ({ + DefaultEditorController: jest.fn(() => ({ destroy: mockDefaultEditorControllerDestroy })), +})); +jest.mock('../../../../../kibana_utils/public'); + +const mockGetVisualizationInstance = jest.requireMock('../get_visualization_instance') + .getVisualizationInstance; + +describe('useSavedVisInstance', () => { + const coreStartMock = coreMock.createStart(); + const toastNotifications = coreStartMock.notifications.toasts; + let mockServices: VisualizeServices; + const eventEmitter = new EventEmitter(); + + beforeEach(() => { + mockServices = ({ + ...coreStartMock, + toastNotifications, + history: { + location: { + pathname: VisualizeConstants.EDIT_PATH, + }, + replace: () => {}, + }, + visualizations: { + all: jest.fn(() => [ + { + name: 'area', + requiresSearch: true, + options: { + showIndexSelection: true, + }, + }, + { name: 'gauge' }, + ]), + }, + } as unknown) as VisualizeServices; + + mockDefaultEditorControllerDestroy.mockClear(); + mockEmbeddableHandlerDestroy.mockClear(); + mockEmbeddableHandlerRender.mockClear(); + mockSavedVisDestroy.mockClear(); + toastNotifications.addWarning.mockClear(); + mockGetVisualizationInstance.mockClear(); + }); + + test('should not load instance until chrome is defined', () => { + const { result } = renderHook(() => + useSavedVisInstance(mockServices, eventEmitter, undefined, undefined) + ); + expect(mockGetVisualizationInstance).not.toHaveBeenCalled(); + expect(result.current.visEditorController).toBeUndefined(); + expect(result.current.savedVisInstance).toBeUndefined(); + expect(result.current.visEditorRef).toBeDefined(); + }); + + describe('edit saved visualization route', () => { + test('should load instance and initiate an editor if chrome is set up', async () => { + const { result, waitForNextUpdate } = renderHook(() => + useSavedVisInstance(mockServices, eventEmitter, true, savedVisId) + ); + + expect(mockGetVisualizationInstance).toHaveBeenCalledWith(mockServices, savedVisId); + expect(mockGetVisualizationInstance.mock.calls.length).toBe(1); + + await waitForNextUpdate(); + expect(mockServices.chrome.setBreadcrumbs).toHaveBeenCalledWith('Test Vis'); + expect(getEditBreadcrumbs).toHaveBeenCalledWith('Test Vis'); + expect(getCreateBreadcrumbs).not.toHaveBeenCalled(); + expect(mockEmbeddableHandlerRender).not.toHaveBeenCalled(); + expect(result.current.visEditorController).toBeDefined(); + expect(result.current.savedVisInstance).toBeDefined(); + }); + + test('should destroy the editor and the savedVis on unmount if chrome exists', async () => { + const { unmount, waitForNextUpdate } = renderHook(() => + useSavedVisInstance(mockServices, eventEmitter, true, savedVisId) + ); + + await waitForNextUpdate(); + unmount(); + + expect(mockDefaultEditorControllerDestroy.mock.calls.length).toBe(1); + expect(mockEmbeddableHandlerDestroy).not.toHaveBeenCalled(); + expect(mockSavedVisDestroy.mock.calls.length).toBe(1); + }); + }); + + describe('create new visualization route', () => { + beforeEach(() => { + mockServices.history.location = { + ...mockServices.history.location, + pathname: VisualizeConstants.CREATE_PATH, + search: '?type=area&indexPattern=1a2b3c4d', + }; + delete mockSavedVisInstance.savedVis.id; + }); + + test('should create new visualization based on search params', async () => { + const { result, waitForNextUpdate } = renderHook(() => + useSavedVisInstance(mockServices, eventEmitter, true, undefined) + ); + + expect(mockGetVisualizationInstance).toHaveBeenCalledWith(mockServices, { + indexPattern: '1a2b3c4d', + type: 'area', + }); + + await waitForNextUpdate(); + + expect(getCreateBreadcrumbs).toHaveBeenCalled(); + expect(mockEmbeddableHandlerRender).not.toHaveBeenCalled(); + expect(result.current.visEditorController).toBeDefined(); + expect(result.current.savedVisInstance).toBeDefined(); + }); + + test('should throw error if vis type is invalid', async () => { + mockServices.history.location = { + ...mockServices.history.location, + search: '?type=myVisType&indexPattern=1a2b3c4d', + }; + + renderHook(() => useSavedVisInstance(mockServices, eventEmitter, true, undefined)); + + expect(mockGetVisualizationInstance).not.toHaveBeenCalled(); + expect(redirectWhenMissing).toHaveBeenCalled(); + expect(toastNotifications.addWarning).toHaveBeenCalled(); + }); + + test("should throw error if index pattern or saved search id doesn't exist in search params", async () => { + mockServices.history.location = { + ...mockServices.history.location, + search: '?type=area', + }; + + renderHook(() => useSavedVisInstance(mockServices, eventEmitter, true, undefined)); + + expect(mockGetVisualizationInstance).not.toHaveBeenCalled(); + expect(redirectWhenMissing).toHaveBeenCalled(); + expect(toastNotifications.addWarning).toHaveBeenCalled(); + }); + }); + + describe('embeded mode', () => { + test('should create new visualization based on search params', async () => { + const { result, unmount, waitForNextUpdate } = renderHook(() => + useSavedVisInstance(mockServices, eventEmitter, false, savedVisId) + ); + + // mock editor ref + // @ts-expect-error + result.current.visEditorRef.current = 'div'; + + expect(mockGetVisualizationInstance).toHaveBeenCalledWith(mockServices, savedVisId); + + await waitForNextUpdate(); + + expect(mockEmbeddableHandlerRender).toHaveBeenCalled(); + expect(result.current.visEditorController).toBeUndefined(); + expect(result.current.savedVisInstance).toBeDefined(); + + unmount(); + expect(mockDefaultEditorControllerDestroy).not.toHaveBeenCalled(); + expect(mockEmbeddableHandlerDestroy.mock.calls.length).toBe(1); + expect(mockSavedVisDestroy.mock.calls.length).toBe(1); + }); + }); +}); diff --git a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts new file mode 100644 index 0000000000000..e885067c58184 --- /dev/null +++ b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts @@ -0,0 +1,210 @@ +/* + * 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 { act, renderHook } from '@testing-library/react-hooks'; +import { EventEmitter } from 'events'; +import { Observable } from 'rxjs'; + +import { useVisualizeAppState } from './use_visualize_app_state'; +import { VisualizeServices, SavedVisInstance } from '../../types'; +import { visualizeAppStateStub } from '../stubs'; +import { VisualizeConstants } from '../../visualize_constants'; +import { createVisualizeServicesMock } from '../mocks'; + +jest.mock('../utils'); +jest.mock('../create_visualize_app_state'); +jest.mock('../../../../../data/public'); + +describe('useVisualizeAppState', () => { + const { visStateToEditorState } = jest.requireMock('../utils'); + const { createVisualizeAppState } = jest.requireMock('../create_visualize_app_state'); + const { connectToQueryState } = jest.requireMock('../../../../../data/public'); + const stopStateSyncMock = jest.fn(); + const stateContainerGetStateMock = jest.fn(() => visualizeAppStateStub); + const stopSyncingAppFiltersMock = jest.fn(); + const stateContainer = { + getState: stateContainerGetStateMock, + state$: new Observable(), + transitions: { + updateVisState: jest.fn(), + set: jest.fn(), + }, + }; + + visStateToEditorState.mockImplementation(() => visualizeAppStateStub); + createVisualizeAppState.mockImplementation(() => ({ + stateContainer, + stopStateSync: stopStateSyncMock, + })); + connectToQueryState.mockImplementation(() => stopSyncingAppFiltersMock); + + const eventEmitter = new EventEmitter(); + const savedVisInstance = ({ + vis: { + setState: jest.fn().mockResolvedValue({}), + }, + savedVis: {}, + embeddableHandler: {}, + } as unknown) as SavedVisInstance; + let mockServices: jest.Mocked; + + beforeEach(() => { + mockServices = createVisualizeServicesMock(); + + stopStateSyncMock.mockClear(); + stopSyncingAppFiltersMock.mockClear(); + visStateToEditorState.mockClear(); + }); + + it("should not create appState if vis instance isn't ready", () => { + const { result } = renderHook(() => useVisualizeAppState(mockServices, eventEmitter)); + + expect(result.current).toEqual({ + appState: null, + hasUnappliedChanges: false, + }); + }); + + it('should create appState and connect it to query search params', () => { + const { result } = renderHook(() => + useVisualizeAppState(mockServices, eventEmitter, savedVisInstance) + ); + + expect(visStateToEditorState).toHaveBeenCalledWith(savedVisInstance, mockServices); + expect(createVisualizeAppState).toHaveBeenCalledWith({ + stateDefaults: visualizeAppStateStub, + kbnUrlStateStorage: undefined, + }); + expect(mockServices.data.query.filterManager.setAppFilters).toHaveBeenCalledWith( + visualizeAppStateStub.filters + ); + expect(connectToQueryState).toHaveBeenCalledWith(mockServices.data.query, expect.any(Object), { + filters: 'appState', + }); + expect(result.current).toEqual({ + appState: stateContainer, + hasUnappliedChanges: false, + }); + }); + + it('should stop state and app filters syncing with query on destroy', () => { + const { unmount } = renderHook(() => + useVisualizeAppState(mockServices, eventEmitter, savedVisInstance) + ); + + unmount(); + + expect(stopStateSyncMock).toBeCalledTimes(1); + expect(stopSyncingAppFiltersMock).toBeCalledTimes(1); + }); + + it('should be subscribed on dirtyStateChange event from an editor', () => { + const { result } = renderHook(() => + useVisualizeAppState(mockServices, eventEmitter, savedVisInstance) + ); + + act(() => { + eventEmitter.emit('dirtyStateChange', { isDirty: true }); + }); + + expect(result.current.hasUnappliedChanges).toEqual(true); + expect(stateContainer.transitions.updateVisState).not.toHaveBeenCalled(); + expect(visStateToEditorState).toHaveBeenCalledTimes(1); + + act(() => { + eventEmitter.emit('dirtyStateChange', { isDirty: false }); + }); + + expect(result.current.hasUnappliedChanges).toEqual(false); + expect(stateContainer.transitions.updateVisState).toHaveBeenCalledWith( + visualizeAppStateStub.vis + ); + expect(visStateToEditorState).toHaveBeenCalledTimes(2); + }); + + describe('update vis state if the url params are not equal with the saved object vis state', () => { + const newAgg = { + id: '2', + enabled: true, + type: 'terms', + schema: 'group', + params: { + field: 'total_quantity', + orderBy: '1', + order: 'desc', + size: 5, + otherBucket: false, + otherBucketLabel: 'Other', + missingBucket: false, + missingBucketLabel: 'Missing', + customLabel: '', + }, + }; + const state = { + ...visualizeAppStateStub, + vis: { + ...visualizeAppStateStub.vis, + aggs: [...visualizeAppStateStub.vis.aggs, newAgg], + }, + }; + + it('should successfully update vis state and set up app state container', async () => { + // @ts-expect-error + stateContainerGetStateMock.mockImplementation(() => state); + const { result, waitForNextUpdate } = renderHook(() => + useVisualizeAppState(mockServices, eventEmitter, savedVisInstance) + ); + + await waitForNextUpdate(); + + const { aggs, ...visState } = stateContainer.getState().vis; + const expectedNewVisState = { + ...visState, + data: { aggs: state.vis.aggs }, + }; + + expect(savedVisInstance.vis.setState).toHaveBeenCalledWith(expectedNewVisState); + expect(result.current).toEqual({ + appState: stateContainer, + hasUnappliedChanges: false, + }); + }); + + it(`should add warning toast and redirect to the landing page + if setting new vis state was not successful, e.x. invalid query params`, async () => { + // @ts-expect-error + stateContainerGetStateMock.mockImplementation(() => state); + // @ts-expect-error + savedVisInstance.vis.setState.mockRejectedValue({ + message: 'error', + }); + + renderHook(() => useVisualizeAppState(mockServices, eventEmitter, savedVisInstance)); + + await new Promise((res) => { + setTimeout(() => res()); + }); + + expect(mockServices.toastNotifications.addWarning).toHaveBeenCalled(); + expect(mockServices.history.replace).toHaveBeenCalledWith( + `${VisualizeConstants.LANDING_PAGE_PATH}?notFound=visualization` + ); + }); + }); +}); From 79e671111875394b53418e03680edc8104d1e40d Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Wed, 8 Jul 2020 14:23:18 +0200 Subject: [PATCH 10/38] Improve description of refresh interval setting (#71062) Co-authored-by: Elastic Machine --- src/plugins/data/server/ui_settings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/data/server/ui_settings.ts b/src/plugins/data/server/ui_settings.ts index de978c7968aee..e825ef7f6c945 100644 --- a/src/plugins/data/server/ui_settings.ts +++ b/src/plugins/data/server/ui_settings.ts @@ -518,7 +518,7 @@ export function getUiSettings(): Record> { }`, type: 'json', description: i18n.translate('data.advancedSettings.timepicker.refreshIntervalDefaultsText', { - defaultMessage: `The timefilter's default refresh interval`, + defaultMessage: `The timefilter's default refresh interval. The "value" needs to be specified in milliseconds.`, }), requiresPageReload: true, schema: schema.object({ From 67be99d545a3a0c3e12dcd887873499baad080d6 Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Wed, 8 Jul 2020 07:43:17 -0500 Subject: [PATCH 11/38] [APM] Remove unused mock anomaly data. (#71040) This file was referenced in #71002 but is not being used. Delete it. --- .../__tests__/mockData/anomalyData.ts | 192 ------------------ 1 file changed, 192 deletions(-) delete mode 100644 x-pack/plugins/apm/public/selectors/__tests__/mockData/anomalyData.ts diff --git a/x-pack/plugins/apm/public/selectors/__tests__/mockData/anomalyData.ts b/x-pack/plugins/apm/public/selectors/__tests__/mockData/anomalyData.ts deleted file mode 100644 index 299e8a2104282..0000000000000 --- a/x-pack/plugins/apm/public/selectors/__tests__/mockData/anomalyData.ts +++ /dev/null @@ -1,192 +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. - */ - -export const anomalyData = { - dates: [ - 1530614880000, - 1530614940000, - 1530615000000, - 1530615060000, - 1530615120000, - 1530615180000, - 1530615240000, - 1530615300000, - 1530615360000, - 1530615420000, - 1530615480000, - 1530615540000, - 1530615600000, - 1530615660000, - 1530615720000, - 1530615780000, - 1530615840000, - 1530615900000, - 1530615960000, - 1530616020000, - 1530616080000, - 1530616140000, - 1530616200000, - 1530616260000, - 1530616320000, - 1530616380000, - 1530616440000, - 1530616500000, - 1530616560000, - 1530616620000, - ], - buckets: [ - { - anomalyScore: null, - lower: 15669, - upper: 54799, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 17808, - upper: 49874, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 18012, - upper: 49421, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 17889, - upper: 49654, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 17713, - upper: 50026, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 18044, - upper: 49371, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 17713, - upper: 50110, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: 0, - lower: 17582, - upper: 50419, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - { - anomalyScore: null, - lower: null, - upper: null, - }, - ], -}; From 637a0d9f98faa8d72780c6f41cf498aea19a7b30 Mon Sep 17 00:00:00 2001 From: Sonja Krause-Harder Date: Wed, 8 Jul 2020 15:06:17 +0200 Subject: [PATCH 12/38] [Ingest Manager] Add usage collector for telemetry. (#69294) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add usage collector for telemetry. * Make minimal usage collector work. * Add all fields to Usage and schema * Type packages as array. * Temporarily remove schema. * Temporarily exclude our collector from schema checks. * Add fleet telemetry. * Remove events from agent stats. * Add package telemetry. * Use correct import. * Add telemetry about enabled packages. * Clean up comments. * Update x-pack/plugins/ingest_manager/server/collectors/package_collectors.ts Co-authored-by: Alejandro Fernández Haro * Update x-pack/plugins/ingest_manager/server/collectors/package_collectors.ts Co-authored-by: Nicolas Chaulet * Correctly check for element in array. * Use a real SavedObjectsClient. * Remove useless use of undefined. * Use less deep path to import SavedObjectsClient. Co-authored-by: Alejandro Fernández Haro Co-authored-by: Nicolas Chaulet --- x-pack/.telemetryrc.json | 1 + x-pack/plugins/ingest_manager/kibana.json | 2 +- .../server/collectors/agent_collectors.ts | 33 ++++++++++ .../server/collectors/config_collectors.ts | 11 ++++ .../server/collectors/helpers.ts | 15 +++++ .../server/collectors/package_collectors.ts | 49 +++++++++++++++ .../server/collectors/register.ts | 62 +++++++++++++++++++ .../plugins/ingest_manager/server/plugin.ts | 6 ++ 8 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugins/ingest_manager/server/collectors/agent_collectors.ts create mode 100644 x-pack/plugins/ingest_manager/server/collectors/config_collectors.ts create mode 100644 x-pack/plugins/ingest_manager/server/collectors/helpers.ts create mode 100644 x-pack/plugins/ingest_manager/server/collectors/package_collectors.ts create mode 100644 x-pack/plugins/ingest_manager/server/collectors/register.ts diff --git a/x-pack/.telemetryrc.json b/x-pack/.telemetryrc.json index 2c16491c1096b..4da44667e167f 100644 --- a/x-pack/.telemetryrc.json +++ b/x-pack/.telemetryrc.json @@ -7,6 +7,7 @@ "plugins/apm/server/lib/apm_telemetry/index.ts", "plugins/canvas/server/collectors/collector.ts", "plugins/infra/server/usage/usage_collector.ts", + "plugins/ingest_manager/server/collectors/register.ts", "plugins/lens/server/usage/collectors.ts", "plugins/reporting/server/usage/reporting_usage_collector.ts", "plugins/maps/server/maps_telemetry/collectors/register.ts" diff --git a/x-pack/plugins/ingest_manager/kibana.json b/x-pack/plugins/ingest_manager/kibana.json index 35447139607a6..181b93a9e2425 100644 --- a/x-pack/plugins/ingest_manager/kibana.json +++ b/x-pack/plugins/ingest_manager/kibana.json @@ -5,6 +5,6 @@ "ui": true, "configPath": ["xpack", "ingestManager"], "requiredPlugins": ["licensing", "data", "encryptedSavedObjects"], - "optionalPlugins": ["security", "features", "cloud"], + "optionalPlugins": ["security", "features", "cloud", "usageCollection"], "extraPublicDirs": ["common"] } diff --git a/x-pack/plugins/ingest_manager/server/collectors/agent_collectors.ts b/x-pack/plugins/ingest_manager/server/collectors/agent_collectors.ts new file mode 100644 index 0000000000000..920b336297171 --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/collectors/agent_collectors.ts @@ -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 { SavedObjectsClient } from 'kibana/server'; +import * as AgentService from '../services/agents'; +export interface AgentUsage { + total: number; + online: number; + error: number; + offline: number; +} + +export const getAgentUsage = async (soClient?: SavedObjectsClient): Promise => { + // TODO: unsure if this case is possible at all. + if (!soClient) { + return { + total: 0, + online: 0, + error: 0, + offline: 0, + }; + } + const { total, online, error, offline } = await AgentService.getAgentStatusForConfig(soClient); + return { + total, + online, + error, + offline, + }; +}; diff --git a/x-pack/plugins/ingest_manager/server/collectors/config_collectors.ts b/x-pack/plugins/ingest_manager/server/collectors/config_collectors.ts new file mode 100644 index 0000000000000..514984f7f859d --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/collectors/config_collectors.ts @@ -0,0 +1,11 @@ +/* + * 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 { IngestManagerConfigType } from '..'; + +export const getIsFleetEnabled = (config: IngestManagerConfigType) => { + return config.fleet.enabled; +}; diff --git a/x-pack/plugins/ingest_manager/server/collectors/helpers.ts b/x-pack/plugins/ingest_manager/server/collectors/helpers.ts new file mode 100644 index 0000000000000..c8ed54d5074fd --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/collectors/helpers.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { CoreSetup } from 'kibana/server'; +import { SavedObjectsClient } from '../../../../../src/core/server'; + +export async function getInternalSavedObjectsClient(core: CoreSetup) { + return core.getStartServices().then(async ([coreStart]) => { + const savedObjectsRepo = coreStart.savedObjects.createInternalRepository(); + return new SavedObjectsClient(savedObjectsRepo); + }); +} diff --git a/x-pack/plugins/ingest_manager/server/collectors/package_collectors.ts b/x-pack/plugins/ingest_manager/server/collectors/package_collectors.ts new file mode 100644 index 0000000000000..399e38f1919ba --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/collectors/package_collectors.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsClient } from 'kibana/server'; +import _ from 'lodash'; +import { getPackageSavedObjects } from '../services/epm/packages/get'; +import { agentConfigService } from '../services'; +import { NewPackageConfig } from '../types'; + +export interface PackageUsage { + name: string; + version: string; + enabled: boolean; +} + +export const getPackageUsage = async (soClient?: SavedObjectsClient): Promise => { + if (!soClient) { + return []; + } + const packagesSavedObjects = await getPackageSavedObjects(soClient); + const agentConfigs = await agentConfigService.list(soClient, { + perPage: 1000, // avoiding pagination + withPackageConfigs: true, + }); + + // Once we provide detailed telemetry on agent configs, this logic should probably be moved + // to the (then to be created) agent config collector, so we only query and loop over these + // objects once. + + const packagesInConfigs = agentConfigs.items.map((agentConfig) => { + const packageConfigs: NewPackageConfig[] = agentConfig.package_configs as NewPackageConfig[]; + return packageConfigs + .map((packageConfig) => packageConfig.package?.name) + .filter((packageName): packageName is string => packageName !== undefined); + }); + + const enabledPackages = _.uniq(_.flatten(packagesInConfigs)); + + return packagesSavedObjects.saved_objects.map((p) => { + return { + name: p.attributes.name, + version: p.attributes.version, + enabled: enabledPackages.includes(p.attributes.name), + }; + }); +}; diff --git a/x-pack/plugins/ingest_manager/server/collectors/register.ts b/x-pack/plugins/ingest_manager/server/collectors/register.ts new file mode 100644 index 0000000000000..aad59ee74433c --- /dev/null +++ b/x-pack/plugins/ingest_manager/server/collectors/register.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; +import { CoreSetup } from 'kibana/server'; +import { getIsFleetEnabled } from './config_collectors'; +import { AgentUsage, getAgentUsage } from './agent_collectors'; +import { getInternalSavedObjectsClient } from './helpers'; +import { PackageUsage, getPackageUsage } from './package_collectors'; +import { IngestManagerConfigType } from '..'; + +interface Usage { + fleet_enabled: boolean; + agents: AgentUsage; + packages: PackageUsage[]; +} + +export function registerIngestManagerUsageCollector( + core: CoreSetup, + config: IngestManagerConfigType, + usageCollection: UsageCollectionSetup | undefined +): void { + // usageCollection is an optional dependency, so make sure to return if it is not registered. + // if for any reason the saved objects client is not available, also return + if (!usageCollection) { + return; + } + + // create usage collector + const ingestManagerCollector = usageCollection.makeUsageCollector({ + type: 'ingest_manager', + isReady: () => true, + fetch: async () => { + const soClient = await getInternalSavedObjectsClient(core); + return { + fleet_enabled: getIsFleetEnabled(config), + agents: await getAgentUsage(soClient), + packages: await getPackageUsage(soClient), + }; + }, + // schema: { // temporarily disabled because of type errors + // fleet_enabled: { type: 'boolean' }, + // agents: { + // total: { type: 'number' }, + // online: { type: 'number' }, + // error: { type: 'number' }, + // offline: { type: 'number' }, + // }, + // packages: { + // name: { type: 'keyword' }, + // version: { type: 'keyword' }, + // enabled: { type: boolean }, + // }, + // }, + }); + + // register usage collector + usageCollection.registerCollector(ingestManagerCollector); +} diff --git a/x-pack/plugins/ingest_manager/server/plugin.ts b/x-pack/plugins/ingest_manager/server/plugin.ts index 91201dbf9848b..d1adbd8b2f65d 100644 --- a/x-pack/plugins/ingest_manager/server/plugin.ts +++ b/x-pack/plugins/ingest_manager/server/plugin.ts @@ -14,6 +14,7 @@ import { SavedObjectsServiceStart, HttpServiceSetup, } from 'kibana/server'; +import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; import { LicensingPluginSetup, ILicense } from '../../licensing/server'; import { EncryptedSavedObjectsPluginStart, @@ -62,6 +63,7 @@ import { } from './services/agents'; import { CloudSetup } from '../../cloud/server'; import { agentCheckinState } from './services/agents/checkin/state'; +import { registerIngestManagerUsageCollector } from './collectors/register'; export interface IngestManagerSetupDeps { licensing: LicensingPluginSetup; @@ -69,6 +71,7 @@ export interface IngestManagerSetupDeps { features?: FeaturesPluginSetup; encryptedSavedObjects: EncryptedSavedObjectsPluginSetup; cloud?: CloudSetup; + usageCollection?: UsageCollectionSetup; } export type IngestManagerStartDeps = object; @@ -198,6 +201,9 @@ export class IngestManagerPlugin const router = core.http.createRouter(); const config = await this.config$.pipe(first()).toPromise(); + // Register usage collection + registerIngestManagerUsageCollector(core, config, deps.usageCollection); + // Always register app routes for permissions checking registerAppRoutes(router); From 9cf1dec6a9a08ce2c7e204eb869fd5a5070565e6 Mon Sep 17 00:00:00 2001 From: Thomas Neirynck Date: Wed, 8 Jul 2020 09:24:34 -0400 Subject: [PATCH 13/38] Load configuration from EMS-metadata in region-maps (#70888) --- .../__tests__/map/ems_mocks/sample_files.json | 42 ++++++++++++ .../__tests__/map/ems_mocks/sample_tiles.json | 2 +- .../public/map/service_settings.js | 66 +++++++++++++------ .../public/map/service_settings.test.js | 19 +++++- .../public/region_map_visualization.js | 61 ++++++++++++----- 5 files changed, 151 insertions(+), 39 deletions(-) diff --git a/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json index cdbed7fa06367..470544cf35b30 100644 --- a/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json +++ b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_files.json @@ -406,6 +406,48 @@ "zh-tw": "國家" } }, + { + "layer_id": "world_countries_with_compromised_attribution", + "created_at": "2017-04-26T17:12:15.978370", + "attribution": [ + { + "label": { + "en": "
Made with NaturalEarth
" + }, + "url": { + "en": "http://www.naturalearthdata.com/about/terms-of-use" + } + }, + { + "label": { + "en": "Elastic Maps Service" + }, + "url": { + "en": "javascript:alert('foobar')" + } + } + ], + "formats": [ + { + "type": "geojson", + "url": "/files/world_countries_v1.geo.json", + "legacy_default": true + } + ], + "fields": [ + { + "type": "id", + "id": "iso2", + "label": { + "en": "ISO 3166-1 alpha-2 code" + } + } + ], + "legacy_ids": [], + "layer_name": { + "en": "World Countries (compromised)" + } + }, { "layer_id": "australia_states", "created_at": "2018-06-27T23:47:32.202380", diff --git a/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json index c038bb411daec..1bbd94879b70c 100644 --- a/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json +++ b/src/plugins/maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json @@ -11,7 +11,7 @@ { "label": { "en": "OpenMapTiles" }, "url": { "en": "https://openmaptiles.org" } }, { "label": { "en": "MapTiler" }, "url": { "en": "https://www.maptiler.com" } }, { - "label": { "en": "Elastic Maps Service" }, + "label": { "en": "" }, "url": { "en": "https://www.elastic.co/elastic-maps-service" } } ], diff --git a/src/plugins/maps_legacy/public/map/service_settings.js b/src/plugins/maps_legacy/public/map/service_settings.js index f4f88bd5807d5..ae40b2c92d40e 100644 --- a/src/plugins/maps_legacy/public/map/service_settings.js +++ b/src/plugins/maps_legacy/public/map/service_settings.js @@ -89,28 +89,31 @@ export class ServiceSettings { }; } + _backfillSettings = (fileLayer) => { + // Older version of Kibana stored EMS state in the URL-params + // Creates object literal with required parameters as key-value pairs + const format = fileLayer.getDefaultFormatType(); + const meta = fileLayer.getDefaultFormatMeta(); + + return { + name: fileLayer.getDisplayName(), + origin: fileLayer.getOrigin(), + id: fileLayer.getId(), + created_at: fileLayer.getCreatedAt(), + attribution: getAttributionString(fileLayer), + fields: fileLayer.getFieldsInLanguage(), + format: format, //legacy: format and meta are split up + meta: meta, //legacy, format and meta are split up + }; + }; + async getFileLayers() { if (!this._mapConfig.includeElasticMapsService) { return []; } const fileLayers = await this._emsClient.getFileLayers(); - return fileLayers.map((fileLayer) => { - //backfill to older settings - const format = fileLayer.getDefaultFormatType(); - const meta = fileLayer.getDefaultFormatMeta(); - - return { - name: fileLayer.getDisplayName(), - origin: fileLayer.getOrigin(), - id: fileLayer.getId(), - created_at: fileLayer.getCreatedAt(), - attribution: fileLayer.getHTMLAttribution(), - fields: fileLayer.getFieldsInLanguage(), - format: format, //legacy: format and meta are split up - meta: meta, //legacy, format and meta are split up - }; - }); + return fileLayers.map(this._backfillSettings); } /** @@ -139,7 +142,7 @@ export class ServiceSettings { id: tmsService.getId(), minZoom: await tmsService.getMinZoom(), maxZoom: await tmsService.getMaxZoom(), - attribution: tmsService.getHTMLAttribution(), + attribution: getAttributionString(tmsService), }; }) ); @@ -159,16 +162,25 @@ export class ServiceSettings { this._emsClient.addQueryParams(additionalQueryParams); } - async getEMSHotLink(fileLayerConfig) { + async getFileLayerFromConfig(fileLayerConfig) { const fileLayers = await this._emsClient.getFileLayers(); - const layer = fileLayers.find((fileLayer) => { + return fileLayers.find((fileLayer) => { const hasIdByName = fileLayer.hasId(fileLayerConfig.name); //legacy const hasIdById = fileLayer.hasId(fileLayerConfig.id); return hasIdByName || hasIdById; }); + } + + async getEMSHotLink(fileLayerConfig) { + const layer = await this.getFileLayerFromConfig(fileLayerConfig); return layer ? layer.getEMSHotLink() : null; } + async loadFileLayerConfig(fileLayerConfig) { + const fileLayer = await this.getFileLayerFromConfig(fileLayerConfig); + return fileLayer ? this._backfillSettings(fileLayer) : null; + } + async _getAttributesForEMSTMSLayer(isDesaturated, isDarkMode) { const tmsServices = await this._emsClient.getTMSServices(); const emsTileLayerId = this._mapConfig.emsTileLayerId; @@ -189,7 +201,7 @@ export class ServiceSettings { url: await tmsService.getUrlTemplate(), minZoom: await tmsService.getMinZoom(), maxZoom: await tmsService.getMaxZoom(), - attribution: await tmsService.getHTMLAttribution(), + attribution: getAttributionString(tmsService), origin: ORIGIN.EMS, }; } @@ -255,3 +267,17 @@ export class ServiceSettings { return await response.json(); } } + +function getAttributionString(emsService) { + const attributions = emsService.getAttributions(); + const attributionSnippets = attributions.map((attribution) => { + const anchorTag = document.createElement('a'); + anchorTag.setAttribute('rel', 'noreferrer noopener'); + if (attribution.url.startsWith('http://') || attribution.url.startsWith('https://')) { + anchorTag.setAttribute('href', attribution.url); + } + anchorTag.textContent = attribution.label; + return anchorTag.outerHTML; + }); + return attributionSnippets.join(' | '); //!!!this is the current convention used in Kibana +} diff --git a/src/plugins/maps_legacy/public/map/service_settings.test.js b/src/plugins/maps_legacy/public/map/service_settings.test.js index 01facdc54137e..6e416f7fd5c84 100644 --- a/src/plugins/maps_legacy/public/map/service_settings.test.js +++ b/src/plugins/maps_legacy/public/map/service_settings.test.js @@ -98,6 +98,9 @@ describe('service_settings (FKA tile_map test)', function () { expect(attrs.url.includes('{x}')).toEqual(true); expect(attrs.url.includes('{y}')).toEqual(true); expect(attrs.url.includes('{z}')).toEqual(true); + expect(attrs.attribution).toEqual( + 'OpenStreetMap contributors | OpenMapTiles | MapTiler | <iframe id=\'iframe\' style=\'position:fixed;height: 40%;width: 100%;top: 60%;left: 5%;right:5%;border: 0px;background:white;\' src=\'http://256.256.256.256\'></iframe>' + ); const urlObject = url.parse(attrs.url, true); expect(urlObject.hostname).toEqual('tiles.foobar'); @@ -182,7 +185,7 @@ describe('service_settings (FKA tile_map test)', function () { minZoom: 0, maxZoom: 10, attribution: - 'OpenStreetMap contributors | OpenMapTiles | MapTiler | Elastic Maps Service', + 'OpenStreetMap contributors | OpenMapTiles | MapTiler | <iframe id=\'iframe\' style=\'position:fixed;height: 40%;width: 100%;top: 60%;left: 5%;right:5%;border: 0px;background:white;\' src=\'http://256.256.256.256\'></iframe>', subdomains: [], }, ]; @@ -276,7 +279,6 @@ describe('service_settings (FKA tile_map test)', function () { serviceSettings = makeServiceSettings({ includeElasticMapsService: false, }); - // mapConfig.includeElasticMapsService = false; const tilemapServices = await serviceSettings.getTMSServices(); const expected = []; expect(tilemapServices).toEqual(expected); @@ -289,7 +291,7 @@ describe('service_settings (FKA tile_map test)', function () { const serviceSettings = makeServiceSettings(); serviceSettings.setQueryParams({ foo: 'bar' }); const fileLayers = await serviceSettings.getFileLayers(); - expect(fileLayers.length).toEqual(18); + expect(fileLayers.length).toEqual(19); const assertions = fileLayers.map(async function (fileLayer) { expect(fileLayer.origin).toEqual(ORIGIN.EMS); const fileUrl = await serviceSettings.getUrlForRegionLayer(fileLayer); @@ -343,5 +345,16 @@ describe('service_settings (FKA tile_map test)', function () { const hotlink = await serviceSettings.getEMSHotLink(fileLayers[0]); expect(hotlink).toEqual('?locale=en#file/world_countries'); //url host undefined becuase emsLandingPageUrl is set at kibana-load }); + + it('should sanitize EMS attribution', async () => { + const serviceSettings = makeServiceSettings(); + const fileLayers = await serviceSettings.getFileLayers(); + const fileLayer = fileLayers.find((layer) => { + return layer.id === 'world_countries_with_compromised_attribution'; + }); + expect(fileLayer.attribution).toEqual( + '<div onclick=\'alert(1\')>Made with NaturalEarth</div> | Elastic Maps Service' + ); + }); }); }); diff --git a/src/plugins/region_map/public/region_map_visualization.js b/src/plugins/region_map/public/region_map_visualization.js index 002d020fcd568..43959c367558f 100644 --- a/src/plugins/region_map/public/region_map_visualization.js +++ b/src/plugins/region_map/public/region_map_visualization.js @@ -22,9 +22,11 @@ import ChoroplethLayer from './choropleth_layer'; import { getFormatService, getNotifications, getKibanaLegacy } from './kibana_services'; import { truncatedColorMaps } from '../../charts/public'; import { tooltipFormatter } from './tooltip_formatter'; -import { mapTooltipProvider } from '../../maps_legacy/public'; +import { mapTooltipProvider, ORIGIN } from '../../maps_legacy/public'; +import _ from 'lodash'; export function createRegionMapVisualization({ + regionmapsConfig, serviceSettings, uiSettings, BaseMapsVisualization, @@ -60,17 +62,18 @@ export function createRegionMapVisualization({ }); } - if (!this._params.selectedJoinField && this._params.selectedLayer) { - this._params.selectedJoinField = this._params.selectedLayer.fields[0]; + const selectedLayer = await this._loadConfig(this._params.selectedLayer); + if (!this._params.selectedJoinField && selectedLayer) { + this._params.selectedJoinField = selectedLayer.fields[0]; } - if (!this._params.selectedLayer) { + if (!selectedLayer) { return; } this._updateChoroplethLayerForNewMetrics( - this._params.selectedLayer.name, - this._params.selectedLayer.attribution, + selectedLayer.name, + selectedLayer.attribution, this._params.showAllShapes, results ); @@ -90,29 +93,57 @@ export function createRegionMapVisualization({ this._kibanaMap.useUiStateFromVisualization(this._vis); } + async _loadConfig(fileLayerConfig) { + // Load the selected layer from the metadata-service. + // Do not use the selectedLayer from the visState. + // These settings are stored in the URL and can be used to inject dirty display content. + + if ( + fileLayerConfig.isEMS || //Hosted by EMS. Metadata needs to be resolved through EMS + (fileLayerConfig.layerId && fileLayerConfig.layerId.startsWith(`${ORIGIN.EMS}.`)) //fallback for older saved objects + ) { + return await serviceSettings.loadFileLayerConfig(fileLayerConfig); + } + + //Configured in the kibana.yml. Needs to be resolved through the settings. + const configuredLayer = regionmapsConfig.layers.find( + (layer) => layer.name === fileLayerConfig.name + ); + + if (configuredLayer) { + return { + ...configuredLayer, + attribution: _.escape(configuredLayer.attribution ? configuredLayer.attribution : ''), + }; + } + + return null; + } + async _updateParams() { await super._updateParams(); - const visParams = this._params; - if (!visParams.selectedJoinField && visParams.selectedLayer) { - visParams.selectedJoinField = visParams.selectedLayer.fields[0]; + const selectedLayer = await this._loadConfig(this._params.selectedLayer); + + if (!this._params.selectedJoinField && selectedLayer) { + this._params.selectedJoinField = selectedLayer.fields[0]; } - if (!visParams.selectedJoinField || !visParams.selectedLayer) { + if (!this._params.selectedJoinField || !selectedLayer) { return; } this._updateChoroplethLayerForNewProperties( - visParams.selectedLayer.name, - visParams.selectedLayer.attribution, + selectedLayer.name, + selectedLayer.attribution, this._params.showAllShapes ); const metricFieldFormatter = getFormatService().deserialize(this._params.metric.format); - this._choroplethLayer.setJoinField(visParams.selectedJoinField.name); - this._choroplethLayer.setColorRamp(truncatedColorMaps[visParams.colorSchema].value); - this._choroplethLayer.setLineWeight(visParams.outlineWeight); + this._choroplethLayer.setJoinField(this._params.selectedJoinField.name); + this._choroplethLayer.setColorRamp(truncatedColorMaps[this._params.colorSchema].value); + this._choroplethLayer.setLineWeight(this._params.outlineWeight); this._choroplethLayer.setTooltipFormatter( this._tooltipFormatter, metricFieldFormatter, From 7f39cb5e3ad17b3191184d7b9b5808b3c77e269f Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Wed, 8 Jul 2020 06:59:37 -0700 Subject: [PATCH 14/38] Polish Data Streams copy, add doc links and tooltips (#70983) * Add learn more links to data streams, indices, and index templates tabs. * Add tooltips to detail panel. * Unify data streams description text. * Fix bug in which index tab showed an empty list, by clearing the filter state on unmount. * Add indices count to data stream detail panel. --- .../data_stream_detail_panel.tsx | 129 +++++++++++++----- .../data_stream_list/data_stream_list.tsx | 40 ++++-- .../index_list/index_table/index_table.js | 37 +++-- .../home/template_list/template_list.tsx | 32 +++-- .../application/services/documentation.ts | 4 + .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - 7 files changed, 183 insertions(+), 63 deletions(-) diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx index 577f04a4a7efd..a0381557db21e 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx @@ -8,35 +8,35 @@ import React, { useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiButton, - EuiFlyout, - EuiFlyoutHeader, - EuiTitle, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiFlexGroup, - EuiFlexItem, EuiButtonEmpty, EuiDescriptionList, - EuiDescriptionListTitle, EuiDescriptionListDescription, + EuiDescriptionListTitle, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiIconTip, + EuiLink, + EuiTitle, } from '@elastic/eui'; +import { reactRouterNavigate } from '../../../../../shared_imports'; import { SectionLoading, SectionError, Error } from '../../../../components'; import { useLoadDataStream } from '../../../../services/api'; import { DeleteDataStreamConfirmationModal } from '../delete_data_stream_confirmation_modal'; interface Props { dataStreamName: string; + backingIndicesLink: ReturnType; onClose: (shouldReload?: boolean) => void; } -/** - * NOTE: This currently isn't in use by data_stream_list.tsx because it doesn't contain any - * information that doesn't already exist in the table. We'll use it once we add additional - * info, e.g. storage size, docs count. - */ export const DataStreamDetailPanel: React.FunctionComponent = ({ dataStreamName, + backingIndicesLink, onClose, }) => { const { error, data: dataStream, isLoading } = useLoadDataStream(dataStreamName); @@ -68,28 +68,95 @@ export const DataStreamDetailPanel: React.FunctionComponent = ({ /> ); } else if (dataStream) { - const { timeStampField, generation } = dataStream; + const { indices, timeStampField, generation } = dataStream; content = ( - - - - + + + + + + + + + + + + } + position="top" + /> + + + - {timeStampField.name} + + {indices.length} + - - - - - {generation} - + + + + + + + + + } + position="top" + /> + + + + + {timeStampField.name} + + + + + + + + + + + + + + } + position="top" + /> + + + + + {generation} + + + ); } diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx index adfaa7820aff3..239b119051c06 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_list.tsx @@ -8,14 +8,15 @@ import React from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { EuiTitle, EuiText, EuiSpacer, EuiEmptyPrompt, EuiLink } from '@elastic/eui'; +import { EuiText, EuiSpacer, EuiEmptyPrompt, EuiLink } from '@elastic/eui'; import { ScopedHistory } from 'kibana/public'; import { reactRouterNavigate, extractQueryParams } from '../../../../shared_imports'; import { useAppContext } from '../../../app_context'; import { SectionError, SectionLoading, Error } from '../../../components'; import { useLoadDataStreams } from '../../../services/api'; -import { decodePathFromReactRouter } from '../../../services/routing'; +import { encodePathForReactRouter, decodePathFromReactRouter } from '../../../services/routing'; +import { documentationService } from '../../../services/documentation'; import { Section } from '../../home'; import { DataStreamTable } from './data_stream_table'; import { DataStreamDetailPanel } from './data_stream_detail_panel'; @@ -79,7 +80,7 @@ export const DataStreamList: React.FunctionComponent {' ' /* We need this space to separate these two sentences. */} {ingestManager ? ( @@ -134,14 +135,25 @@ export const DataStreamList: React.FunctionComponent {/* TODO: Add a switch for toggling on data streams created by Ingest Manager */} - - - - - + + + {i18n.translate('xpack.idxMgmt.dataStreamListDescription.learnMoreLinkText', { + defaultMessage: 'Learn more.', + })} + + ), + }} + /> + @@ -170,6 +182,12 @@ export const DataStreamList: React.FunctionComponent { history.push(`/${Section.DataStreams}`); diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js b/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js index 5f10eebc9d270..9122c6524d05d 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js @@ -33,7 +33,6 @@ import { EuiTableRowCell, EuiTableRowCellCheckbox, EuiText, - EuiTitle, } from '@elastic/eui'; import { UIM_SHOW_DETAILS_CLICK } from '../../../../../../common/constants'; @@ -41,6 +40,7 @@ import { reactRouterNavigate } from '../../../../../shared_imports'; import { REFRESH_RATE_INDEX_LIST } from '../../../../constants'; import { healthToColor } from '../../../../services'; import { encodePathForReactRouter } from '../../../../services/routing'; +import { documentationService } from '../../../../services/documentation'; import { AppContextConsumer } from '../../../../app_context'; import { renderBadges } from '../../../../lib/render_badges'; import { NoMatch, PageErrorForbidden } from '../../../../components'; @@ -121,6 +121,11 @@ export class IndexTable extends Component { } componentWillUnmount() { + // When you deep-link to an index from the data streams tab, the hidden indices are toggled on. + // However, this state is lost when you navigate away. We need to clear the filter too, or else + // navigating back to this tab would just show an empty list because the backing indices + // would be hidden. + this.props.filterChanged(''); clearInterval(this.interval); } @@ -494,14 +499,28 @@ export class IndexTable extends Component { - - - - - + + + {i18n.translate( + 'xpack.idxMgmt.indexTableDescription.learnMoreLinkText', + { + defaultMessage: 'Learn more.', + } + )} + + ), + }} + /> + diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx index afa8fa5b4ee04..18a65407ee20d 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx @@ -17,12 +17,14 @@ import { EuiFlexItem, EuiFlexGroup, EuiButton, + EuiLink, } from '@elastic/eui'; import { UIM_TEMPLATE_LIST_LOAD } from '../../../../../common/constants'; import { TemplateListItem } from '../../../../../common'; import { SectionError, SectionLoading, Error } from '../../../components'; import { useLoadIndexTemplates } from '../../../services/api'; +import { documentationService } from '../../../services/documentation'; import { useServices } from '../../../app_context'; import { getTemplateEditLink, @@ -109,14 +111,28 @@ export const TemplateList: React.FunctionComponent ( - - - - - + + + {i18n.translate( + 'xpack.idxMgmt.home.indexTemplatesDescription.learnMoreLinkText', + { + defaultMessage: 'Learn more.', + } + )} + + ), + }} + /> + filters={filters} onChange={setFilters} /> diff --git a/x-pack/plugins/index_management/public/application/services/documentation.ts b/x-pack/plugins/index_management/public/application/services/documentation.ts index ccccccce19766..972b4f4b25680 100644 --- a/x-pack/plugins/index_management/public/application/services/documentation.ts +++ b/x-pack/plugins/index_management/public/application/services/documentation.ts @@ -36,6 +36,10 @@ class DocumentationService { return `${this.esDocsBase}/mapping-routing-field.html`; } + public getDataStreamsDocumentationLink() { + return `${this.esDocsBase}/data-streams.html`; + } + public getTemplatesDocumentationLink() { return `${this.esDocsBase}/indices-templates.html`; } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 3200240e9089a..72d21400540fd 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -6455,9 +6455,7 @@ "xpack.idxMgmt.freezeIndicesAction.successfullyFrozeIndicesMessage": "[{indexNames}] が凍結されました", "xpack.idxMgmt.frozenBadgeLabel": "凍結", "xpack.idxMgmt.home.appTitle": "インデックス管理", - "xpack.idxMgmt.home.idxMgmtDescription": "Elasticsearch インデックスを個々に、または一斉に更新します", "xpack.idxMgmt.home.idxMgmtDocsLinkText": "インデックス管理ドキュメント", - "xpack.idxMgmt.home.indexTemplatesDescription": "インデックステンプレートを使用して設定、マッピング、エイリアスをインデックスに自動的に適用します。", "xpack.idxMgmt.home.indexTemplatesTabTitle": "インデックステンプレート", "xpack.idxMgmt.home.indicesTabTitle": "インデックス", "xpack.idxMgmt.indexActionsMenu.clearIndexCacheLabel": "{selectedIndexCount, plural, one {インデックス} other {インデックス} }のキャッシュを消去", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 9758893732540..2fa281c8042ee 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -6458,9 +6458,7 @@ "xpack.idxMgmt.freezeIndicesAction.successfullyFrozeIndicesMessage": "成功冻结:[{indexNames}]", "xpack.idxMgmt.frozenBadgeLabel": "已冻结", "xpack.idxMgmt.home.appTitle": "索引管理", - "xpack.idxMgmt.home.idxMgmtDescription": "单个或批量更新您的 Elasticsearch 索引。", "xpack.idxMgmt.home.idxMgmtDocsLinkText": "索引管理文档", - "xpack.idxMgmt.home.indexTemplatesDescription": "使用索引模板可将设置、映射和别名自动应用到索引。", "xpack.idxMgmt.home.indexTemplatesTabTitle": "索引模板", "xpack.idxMgmt.home.indicesTabTitle": "索引", "xpack.idxMgmt.indexActionsMenu.clearIndexCacheLabel": "清除 {selectedIndexCount, plural, one { 个索引} other { 个索引} } 缓存", From ea7012ebb1732d2011e10ee658d75ba0909c79fe Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Wed, 8 Jul 2020 09:58:32 -0500 Subject: [PATCH 15/38] Index Patterns Management - use `/_resolve` endpoint for data streams support (#70271) * Index Patterns Management - use `/_resolve` endpoint for data streams support --- .../index_pattern_management/kibana.json | 2 +- .../create_index_pattern_wizard.test.tsx.snap | 153 +++---- .../header/__snapshots__/header.test.tsx.snap | 394 +++++++++++------- .../components/header/header.test.tsx | 21 +- .../components/header/header.tsx | 81 ++-- .../step_index_pattern.test.tsx.snap | 4 + .../header/__snapshots__/header.test.tsx.snap | 192 +++++---- .../components/header/header.test.tsx | 4 + .../components/header/header.tsx | 86 ++-- .../indices_list/indices_list.test.tsx | 5 +- .../components/indices_list/indices_list.tsx | 6 +- .../status_message.test.tsx.snap | 112 ++--- .../status_message/status_message.test.tsx | 11 +- .../status_message/status_message.tsx | 97 ++--- .../step_index_pattern.test.tsx | 59 ++- .../step_index_pattern/step_index_pattern.tsx | 98 +++-- .../step_time_field.test.tsx.snap | 109 ++--- .../header/__snapshots__/header.test.tsx.snap | 19 +- .../components/header/header.tsx | 11 +- .../__snapshots__/time_field.test.tsx.snap | 212 ++++------ .../components/time_field/time_field.tsx | 126 +++--- .../step_time_field/step_time_field.tsx | 40 +- .../create_index_pattern_wizard.tsx | 116 +++--- .../__snapshots__/get_indices.test.ts.snap | 69 +++ .../lib/get_indices.test.ts | 174 +++----- .../lib/get_indices.ts | 118 +++--- .../lib/get_matched_indices.test.ts | 8 +- .../lib/get_matched_indices.ts | 10 +- .../create_index_pattern_wizard/types.ts | 44 +- .../__snapshots__/field_editor.test.tsx.snap | 1 - .../warning_call_out.test.tsx.snap | 20 +- .../index_pattern_management/public/mocks.ts | 8 +- .../public/service/creation/config.ts | 4 +- .../index_pattern_management/server/index.ts | 25 ++ .../index_pattern_management/server/plugin.ts | 70 ++++ .../_create_index_pattern_wizard.js | 55 +++ .../rollup_index_pattern_creation_config.js | 1 + 37 files changed, 1412 insertions(+), 1153 deletions(-) create mode 100644 src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/__snapshots__/get_indices.test.ts.snap create mode 100644 src/plugins/index_pattern_management/server/index.ts create mode 100644 src/plugins/index_pattern_management/server/plugin.ts diff --git a/src/plugins/index_pattern_management/kibana.json b/src/plugins/index_pattern_management/kibana.json index 364edbb030dc9..23adef2626a72 100644 --- a/src/plugins/index_pattern_management/kibana.json +++ b/src/plugins/index_pattern_management/kibana.json @@ -1,7 +1,7 @@ { "id": "indexPatternManagement", "version": "kibana", - "server": false, + "server": true, "ui": true, "requiredPlugins": ["management", "data", "kibanaLegacy"] } diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/__snapshots__/create_index_pattern_wizard.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/__snapshots__/create_index_pattern_wizard.test.tsx.snap index 5c955bbd3283e..70200e03c0dbe 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/__snapshots__/create_index_pattern_wizard.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/__snapshots__/create_index_pattern_wizard.test.tsx.snap @@ -1,41 +1,33 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CreateIndexPatternWizard defaults to the loading state 1`] = ` - -
-
- -
+ + -
+
`; exports[`CreateIndexPatternWizard renders index pattern step when there are indices 1`] = ` - -
+ +
+ -
+ -
+ `; exports[`CreateIndexPatternWizard renders the empty state when there are no indices 1`] = ` - -
-
- -
+ + -
+ `; exports[`CreateIndexPatternWizard renders time field step when step is set to 2 1`] = ` - -
+ +
+ -
+ -
+ `; exports[`CreateIndexPatternWizard renders when there are no indices but there are remote clusters 1`] = ` - -
+ +
+ -
+ -
+ `; exports[`CreateIndexPatternWizard shows system indices even if there are no other indices if the include system indices is toggled 1`] = ` - -
-
- -
+ + -
+ `; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/__snapshots__/header.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/__snapshots__/header.test.tsx.snap index 81ca3e644d3ce..6a2fd1000e6b4 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/__snapshots__/header.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/__snapshots__/header.test.tsx.snap @@ -2,10 +2,15 @@ exports[`Header should render a different name, prompt, and beta tag if provided 1`] = `
Test prompt @@ -31,76 +36,114 @@ exports[`Header should render a different name, prompt, and beta tag if provided -
+ + +
- -
+ + multiple + , + "single": + filebeat-4-3-22 + , + "star": + filebeat-* + , + } + } + > + + An index pattern can match a single source, for example, + + + + + filebeat-4-3-22 + + + + + , or + + multiple + + data souces, + + + + + filebeat-* + + + + + . + + +
+ - -
-

- - - - - Kibana uses index patterns to retrieve data from Elasticsearch indices for things like visualizations. - - - - -

-
-
-
-
+ + Read documentation + + + + +

- +
Test prompt
- -
-
`; exports[`Header should render normally 1`] = `
@@ -110,66 +153,104 @@ exports[`Header should render normally 1`] = ` Create test index pattern -
+ + +
- -
+ + multiple + , + "single": + filebeat-4-3-22 + , + "star": + filebeat-* + , + } + } > - + An index pattern can match a single source, for example, + + + + + filebeat-4-3-22 + + + + + , or + + multiple + + data souces, + + + + + filebeat-* + + + + + . + + +
+ +
-
+ + Read documentation + + + + +

- - -
- +
`; exports[`Header should render without including system indices 1`] = `
@@ -179,57 +260,90 @@ exports[`Header should render without including system indices 1`] = ` Create test index pattern -
+ + +
- -
+ + multiple + , + "single": + filebeat-4-3-22 + , + "star": + filebeat-* + , + } + } + > + + An index pattern can match a single source, for example, + + + + + filebeat-4-3-22 + + + + + , or + + multiple + + data souces, + + + + + filebeat-* + + + + + . + + +
+ - -
-

- - - - - Kibana uses index patterns to retrieve data from Elasticsearch indices for things like visualizations. - - - - -

-
-
-
-
+ + Read documentation + + + + +

- - -
- +
`; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.test.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.test.tsx index d12e0401380b9..865b3ec353f76 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.test.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.test.tsx @@ -22,18 +22,20 @@ import { Header } from '../header'; import { mount } from 'enzyme'; import { KibanaContextProvider } from 'src/plugins/kibana_react/public'; import { mockManagementPlugin } from '../../../../mocks'; +import { DocLinksStart } from 'kibana/public'; describe('Header', () => { const indexPatternName = 'test index pattern'; const mockedContext = mockManagementPlugin.createIndexPatternManagmentContext(); + const mockedDocLinks = { + links: { + indexPatterns: {}, + }, + } as DocLinksStart; it('should render normally', () => { const component = mount( -
{}} - />, +
, { wrappingComponent: KibanaContextProvider, wrappingComponentProps: { @@ -47,11 +49,7 @@ describe('Header', () => { it('should render without including system indices', () => { const component = mount( -
{}} - />, +
, { wrappingComponent: KibanaContextProvider, wrappingComponentProps: { @@ -66,11 +64,10 @@ describe('Header', () => { it('should render a different name, prompt, and beta tag if provided', () => { const component = mount(
{}} prompt={
Test prompt
} indexPatternName={indexPatternName} isBeta={true} + docLinks={mockedDocLinks} />, { wrappingComponent: KibanaContextProvider, diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.tsx index 35c6e67d0ea0e..f90425311142d 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/header/header.tsx @@ -17,38 +17,26 @@ * under the License. */ -import React, { Fragment } from 'react'; +import React from 'react'; -import { - EuiBetaBadge, - EuiSpacer, - EuiTitle, - EuiFlexGroup, - EuiFlexItem, - EuiText, - EuiTextColor, - EuiSwitch, -} from '@elastic/eui'; +import { EuiBetaBadge, EuiSpacer, EuiTitle, EuiText, EuiCode, EuiLink } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { DocLinksStart } from 'kibana/public'; import { useKibana } from '../../../../../../../plugins/kibana_react/public'; import { IndexPatternManagmentContext } from '../../../../types'; export const Header = ({ prompt, indexPatternName, - showSystemIndices = false, - isIncludingSystemIndices, - onChangeIncludingSystemIndices, isBeta = false, + docLinks, }: { prompt?: React.ReactNode; indexPatternName: string; - showSystemIndices?: boolean; - isIncludingSystemIndices: boolean; - onChangeIncludingSystemIndices: () => void; isBeta?: boolean; + docLinks: DocLinksStart; }) => { const changeTitle = useKibana().services.chrome.docTitle.change; const createIndexPatternHeader = i18n.translate( @@ -67,53 +55,44 @@ export const Header = ({

{createIndexPatternHeader} {isBeta ? ( - + <> {' '} - + ) : null}

- - - -

- - - -

-
-
- {showSystemIndices ? ( - - - } - id="checkboxShowSystemIndices" - checked={isIncludingSystemIndices} - onChange={onChangeIncludingSystemIndices} + + +

+ multiple, + single: filebeat-4-3-22, + star: filebeat-*, + }} + /> +
+ + - - ) : null} - + +

+
{prompt ? ( - - + <> + {prompt} - + ) : null} -
); }; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/__snapshots__/step_index_pattern.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/__snapshots__/step_index_pattern.test.tsx.snap index b68ba4720b935..813a0c61c0829 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/__snapshots__/step_index_pattern.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/__snapshots__/step_index_pattern.test.tsx.snap @@ -11,8 +11,10 @@ Object { ] } goToNextStep={[Function]} + isIncludingSystemIndices={false} isInputInvalid={true} isNextStepDisabled={true} + onChangeIncludingSystemIndices={[Function]} onQueryChanged={[Function]} query="?" />, @@ -25,6 +27,7 @@ exports[`StepIndexPattern renders indices which match the initial query 1`] = ` indices={ Array [ Object { + "item": Object {}, "name": "kibana", }, ] @@ -39,6 +42,7 @@ exports[`StepIndexPattern renders matching indices when input is valid 1`] = ` indices={ Array [ Object { + "item": Object {}, "name": "kibana", }, ] diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/__snapshots__/header.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/__snapshots__/header.test.tsx.snap index 3021292953ff5..c4f735558b1f2 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/__snapshots__/header.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/__snapshots__/header.test.tsx.snap @@ -16,13 +16,8 @@ exports[`Header should mark the input as invalid 1`] = ` - - + + @@ -34,43 +29,40 @@ exports[`Header should mark the input as invalid 1`] = ` "Input is invalid", ] } - fullWidth={false} + fullWidth={true} hasChildLabel={true} hasEmptyLabelSpace={false} helpText={ -
-

- - * - , - } + + + * + , } - /> -

-

- - % - , - } + } + /> + + + % + , } - /> -

-
+ } + /> + } isInvalid={true} label={ @@ -79,6 +71,7 @@ exports[`Header should mark the input as invalid 1`] = ` > - - - + + + +
@@ -124,13 +128,8 @@ exports[`Header should render normally 1`] = ` - - + + @@ -138,43 +137,40 @@ exports[`Header should render normally 1`] = ` describedByIds={Array []} display="row" error={Array []} - fullWidth={false} + fullWidth={true} hasChildLabel={true} hasEmptyLabelSpace={false} helpText={ -
-

- - * - , - } + + + * + , } - /> -

-

- - % - , - } + } + /> + + + % + , } - /> -

-
+ } + /> + } isInvalid={false} label={ @@ -183,6 +179,7 @@ exports[`Header should render normally 1`] = ` > - - - + + + +
diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.test.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.test.tsx index f56340d0009be..acc133a4dd649 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.test.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.test.tsx @@ -32,6 +32,8 @@ describe('Header', () => { onQueryChanged={() => {}} goToNextStep={() => {}} isNextStepDisabled={false} + onChangeIncludingSystemIndices={() => {}} + isIncludingSystemIndices={false} /> ); @@ -48,6 +50,8 @@ describe('Header', () => { onQueryChanged={() => {}} goToNextStep={() => {}} isNextStepDisabled={true} + onChangeIncludingSystemIndices={() => {}} + isIncludingSystemIndices={false} /> ); diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.tsx index 9ce72aeeea6e3..f1bf0d54a1cbf 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/header/header.tsx @@ -28,6 +28,8 @@ import { EuiForm, EuiFormRow, EuiFieldText, + EuiSwitchEvent, + EuiSwitch, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -41,6 +43,9 @@ interface HeaderProps { onQueryChanged: (e: React.ChangeEvent) => void; goToNextStep: (query: string) => void; isNextStepDisabled: boolean; + showSystemIndices?: boolean; + onChangeIncludingSystemIndices: (event: EuiSwitchEvent) => void; + isIncludingSystemIndices: boolean; } export const Header: React.FC = ({ @@ -51,6 +56,9 @@ export const Header: React.FC = ({ onQueryChanged, goToNextStep, isNextStepDisabled, + showSystemIndices = false, + onChangeIncludingSystemIndices, + isIncludingSystemIndices, ...rest }) => (
@@ -63,35 +71,32 @@ export const Header: React.FC = ({ - - + + } isInvalid={isInputInvalid} error={errors} helpText={ -
-

- * }} - /> -

-

- {characterList} }} - /> -

-
+ <> + * }} + />{' '} + {characterList} }} + /> + } > = ({ isInvalid={isInputInvalid} onChange={onQueryChanged} data-test-subj="createIndexPatternNameInput" + fullWidth />
+ + {showSystemIndices ? ( + + + } + id="checkboxShowSystemIndices" + checked={isIncludingSystemIndices} + onChange={onChangeIncludingSystemIndices} + /> + + ) : null}
- goToNextStep(query)} - isDisabled={isNextStepDisabled} - data-test-subj="createIndexPatternGoToStep2Button" - > - - + + goToNextStep(query)} + isDisabled={isNextStepDisabled} + data-test-subj="createIndexPatternGoToStep2Button" + > + + +
diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.test.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.test.tsx index d8a1d1a0ab72f..fbd60cbe3d131 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.test.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.test.tsx @@ -20,11 +20,12 @@ import React from 'react'; import { IndicesList } from '../indices_list'; import { shallow } from 'enzyme'; +import { MatchedItem } from '../../../../types'; -const indices = [ +const indices = ([ { name: 'kibana', tags: [] }, { name: 'es', tags: [] }, -]; +] as unknown) as MatchedItem[]; describe('IndicesList', () => { it('should render normally', () => { diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.tsx index c590d2a7ddfe2..4a051ee698209 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/indices_list/indices_list.tsx @@ -39,10 +39,10 @@ import { Pager } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { PER_PAGE_INCREMENTS } from '../../../../constants'; -import { MatchedIndex, Tag } from '../../../../types'; +import { MatchedItem, Tag } from '../../../../types'; interface IndicesListProps { - indices: MatchedIndex[]; + indices: MatchedItem[]; query: string; } @@ -187,7 +187,7 @@ export class IndicesList extends React.Component {index.tags.map((tag: Tag) => { return ( - + {tag.name} ); diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/__snapshots__/status_message.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/__snapshots__/status_message.test.tsx.snap index 4a063f1430d1c..44b753c473803 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/__snapshots__/status_message.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/__snapshots__/status_message.test.tsx.snap @@ -1,67 +1,44 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`StatusMessage should render with exact matches 1`] = ` - - - + title={   - - , - "strongSuccess": - - , + "sourceCount": 1, } } /> - - + } +/> `; exports[`StatusMessage should render with no partial matches 1`] = ` - - + title={ - - + } +/> `; exports[`StatusMessage should render with partial matches 1`] = ` - - + title={ - - + } +/> `; exports[`StatusMessage should render without a query 1`] = ` - - + title={ - 2 - indices - , + "sourceCount": 2, } } /> - - + } +/> `; exports[`StatusMessage should show that no indices exist 1`] = ` - - + title={ - - + } +/> `; exports[`StatusMessage should show that system indices exist 1`] = ` - - + title={ - - + } +/> `; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.test.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.test.tsx index 899c21d59c5bc..f97c9ffe8a364 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.test.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.test.tsx @@ -20,18 +20,19 @@ import React from 'react'; import { StatusMessage } from '../status_message'; import { shallow } from 'enzyme'; +import { MatchedItem } from '../../../../types'; const tagsPartial = { tags: [], }; const matchedIndices = { - allIndices: [ + allIndices: ([ { name: 'kibana', ...tagsPartial }, { name: 'es', ...tagsPartial }, - ], - exactMatchedIndices: [], - partialMatchedIndices: [{ name: 'kibana', ...tagsPartial }], + ] as unknown) as MatchedItem[], + exactMatchedIndices: [] as MatchedItem[], + partialMatchedIndices: ([{ name: 'kibana', ...tagsPartial }] as unknown) as MatchedItem[], }; describe('StatusMessage', () => { @@ -51,7 +52,7 @@ describe('StatusMessage', () => { it('should render with exact matches', () => { const localMatchedIndices = { ...matchedIndices, - exactMatchedIndices: [{ name: 'kibana', ...tagsPartial }], + exactMatchedIndices: ([{ name: 'kibana', ...tagsPartial }] as unknown) as MatchedItem[], }; const component = shallow( diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.tsx index ccdd1833ea9bf..22b75071b93bb 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/components/status_message/status_message.tsx @@ -19,16 +19,17 @@ import React from 'react'; -import { EuiText, EuiTextColor, EuiIcon } from '@elastic/eui'; +import { EuiCallOut } from '@elastic/eui'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { FormattedMessage } from '@kbn/i18n/react'; -import { MatchedIndex } from '../../../../types'; +import { MatchedItem } from '../../../../types'; interface StatusMessageProps { matchedIndices: { - allIndices: MatchedIndex[]; - exactMatchedIndices: MatchedIndex[]; - partialMatchedIndices: MatchedIndex[]; + allIndices: MatchedItem[]; + exactMatchedIndices: MatchedItem[]; + partialMatchedIndices: MatchedItem[]; }; isIncludingSystemIndices: boolean; query: string; @@ -41,23 +42,26 @@ export const StatusMessage: React.FC = ({ query, showSystemIndices, }) => { - let statusIcon; + let statusIcon: EuiIconType | undefined; let statusMessage; - let statusColor: 'default' | 'secondary' | undefined; + let statusColor: 'primary' | 'success' | 'warning' | undefined; const allIndicesLength = allIndices.length; if (query.length === 0) { - statusIcon = null; - statusColor = 'default'; + statusIcon = undefined; + statusColor = 'primary'; - if (allIndicesLength > 1) { + if (allIndicesLength >= 1) { statusMessage = ( {allIndicesLength} indices }} + defaultMessage="Your index pattern can match {sourceCount, plural, + one {your # source} + other {any of your # sources} + }." + values={{ sourceCount: allIndicesLength }} /> ); @@ -66,8 +70,7 @@ export const StatusMessage: React.FC = ({ ); @@ -83,51 +86,44 @@ export const StatusMessage: React.FC = ({ } } else if (exactMatchedIndices.length) { statusIcon = 'check'; - statusColor = 'secondary'; + statusColor = 'success'; statusMessage = (   - - - ), - strongIndices: ( - - - - ), + sourceCount: exactMatchedIndices.length, }} /> ); } else if (partialMatchedIndices.length) { - statusIcon = null; - statusColor = 'default'; + statusIcon = undefined; + statusColor = 'primary'; statusMessage = ( @@ -137,20 +133,26 @@ export const StatusMessage: React.FC = ({ ); } else if (allIndicesLength) { - statusIcon = null; - statusColor = 'default'; + statusIcon = undefined; + statusColor = 'warning'; statusMessage = ( @@ -163,11 +165,12 @@ export const StatusMessage: React.FC = ({ } return ( - - - {statusIcon ? : null} - {statusMessage} - - + ); }; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.test.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.test.tsx index 053940270c2b6..c88918041ca81 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.test.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.test.tsx @@ -19,7 +19,7 @@ import React from 'react'; import { SavedObjectsFindResponsePublic } from 'kibana/public'; -import { StepIndexPattern } from '../step_index_pattern'; +import { StepIndexPattern, canPreselectTimeField } from './step_index_pattern'; import { Header } from './components/header'; import { IndexPatternCreationConfig } from '../../../../../../../plugins/index_pattern_management/public'; import { mockManagementPlugin } from '../../../../mocks'; @@ -38,16 +38,16 @@ const mockIndexPatternCreationType = new IndexPatternCreationConfig({ jest.mock('../../lib/get_indices', () => ({ getIndices: ({}, {}, query: string) => { if (query.startsWith('e')) { - return [{ name: 'es' }]; + return [{ name: 'es', item: {} }]; } - return [{ name: 'kibana' }]; + return [{ name: 'kibana', item: {} }]; }, })); const allIndices = [ - { name: 'kibana', tags: [] }, - { name: 'es', tags: [] }, + { name: 'kibana', tags: [], item: {} }, + { name: 'es', tags: [], item: {} }, ]; const goToNextStep = () => {}; @@ -205,4 +205,53 @@ describe('StepIndexPattern', () => { await new Promise((resolve) => process.nextTick(resolve)); expect(component.state('exactMatchedIndices')).toEqual([]); }); + + it('it can preselect time field', async () => { + const dataStream1 = { + name: 'data stream 1', + tags: [], + item: { name: 'data stream 1', backing_indices: [], timestamp_field: 'timestamp_field' }, + }; + + const dataStream2 = { + name: 'data stream 2', + tags: [], + item: { name: 'data stream 2', backing_indices: [], timestamp_field: 'timestamp_field' }, + }; + + const differentDataStream = { + name: 'different data stream', + tags: [], + item: { name: 'different data stream 2', backing_indices: [], timestamp_field: 'x' }, + }; + + const index = { + name: 'index', + tags: [], + item: { + name: 'index', + }, + }; + + const alias = { + name: 'alias', + tags: [], + item: { + name: 'alias', + indices: [], + }, + }; + + expect(canPreselectTimeField([index])).toEqual(undefined); + expect(canPreselectTimeField([alias])).toEqual(undefined); + expect(canPreselectTimeField([index, alias, dataStream1])).toEqual(undefined); + + expect(canPreselectTimeField([dataStream1])).toEqual('timestamp_field'); + + expect(canPreselectTimeField([dataStream1, dataStream2])).toEqual('timestamp_field'); + + expect(canPreselectTimeField([dataStream1, dataStream2, differentDataStream])).toEqual( + undefined + ); + }); }); diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.tsx index b6205a8731dfa..5797149a51aea 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.tsx @@ -18,7 +18,7 @@ */ import React, { Component } from 'react'; -import { EuiPanel, EuiSpacer, EuiCallOut } from '@elastic/eui'; +import { EuiSpacer, EuiCallOut, EuiSwitchEvent } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { @@ -26,7 +26,6 @@ import { IndexPatternAttributes, UI_SETTINGS, } from '../../../../../../../plugins/data/public'; -import { MAX_SEARCH_SIZE } from '../../constants'; import { getIndices, containsIllegalCharacters, @@ -40,20 +39,20 @@ import { IndicesList } from './components/indices_list'; import { Header } from './components/header'; import { context as contextType } from '../../../../../../kibana_react/public'; import { IndexPatternCreationConfig } from '../../../../../../../plugins/index_pattern_management/public'; -import { MatchedIndex } from '../../types'; +import { MatchedItem } from '../../types'; import { IndexPatternManagmentContextValue } from '../../../../types'; interface StepIndexPatternProps { - allIndices: MatchedIndex[]; - isIncludingSystemIndices: boolean; + allIndices: MatchedItem[]; indexPatternCreationType: IndexPatternCreationConfig; - goToNextStep: (query: string) => void; + goToNextStep: (query: string, timestampField?: string) => void; initialQuery?: string; + showSystemIndices: boolean; } interface StepIndexPatternState { - partialMatchedIndices: MatchedIndex[]; - exactMatchedIndices: MatchedIndex[]; + partialMatchedIndices: MatchedItem[]; + exactMatchedIndices: MatchedItem[]; isLoadingIndices: boolean; existingIndexPatterns: string[]; indexPatternExists: boolean; @@ -61,8 +60,35 @@ interface StepIndexPatternState { appendedWildcard: boolean; showingIndexPatternQueryErrors: boolean; indexPatternName: string; + isIncludingSystemIndices: boolean; } +export const canPreselectTimeField = (indices: MatchedItem[]) => { + const preselectStatus = indices.reduce( + ( + { canPreselect, timeFieldName }: { canPreselect: boolean; timeFieldName?: string }, + matchedItem + ) => { + const dataStreamItem = matchedItem.item; + const dataStreamTimestampField = dataStreamItem.timestamp_field; + const isDataStream = !!dataStreamItem.timestamp_field; + const timestampFieldMatches = + timeFieldName === undefined || timeFieldName === dataStreamTimestampField; + + return { + canPreselect: canPreselect && isDataStream && timestampFieldMatches, + timeFieldName: dataStreamTimestampField || timeFieldName, + }; + }, + { + canPreselect: true, + timeFieldName: undefined, + } + ); + + return preselectStatus.canPreselect ? preselectStatus.timeFieldName : undefined; +}; + export class StepIndexPattern extends Component { static contextType = contextType; @@ -78,9 +104,9 @@ export class StepIndexPattern extends Component goToNextStep(query, canPreselectTimeField(indices))} isNextStepDisabled={isNextStepDisabled} + onChangeIncludingSystemIndices={this.onChangeIncludingSystemIndices} + isIncludingSystemIndices={isIncludingSystemIndices} + showSystemIndices={this.props.showSystemIndices} /> ); } + onChangeIncludingSystemIndices = (event: EuiSwitchEvent) => { + this.setState({ isIncludingSystemIndices: event.target.checked }, () => + this.fetchIndices(this.state.query) + ); + }; + render() { - const { isIncludingSystemIndices, allIndices } = this.props; - const { partialMatchedIndices, exactMatchedIndices } = this.state; + const { allIndices } = this.props; + const { partialMatchedIndices, exactMatchedIndices, isIncludingSystemIndices } = this.state; const matchedIndices = getMatchedIndices( allIndices, @@ -334,15 +372,15 @@ export class StepIndexPattern extends Component + <> {this.renderHeader(matchedIndices)} - + {this.renderLoadingState()} {this.renderIndexPatternExists()} {this.renderStatusMessage(matchedIndices)} - + {this.renderList(matchedIndices)} - + ); } } diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/__snapshots__/step_time_field.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/__snapshots__/step_time_field.test.tsx.snap index f865a1ddfd223..6cc92d20cfdcc 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/__snapshots__/step_time_field.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/__snapshots__/step_time_field.test.tsx.snap @@ -17,9 +17,7 @@ exports[`StepTimeField should enable the action button if the user decides to no `; exports[`StepTimeField should render "Custom index pattern ID already exists" when error is "Conflict" 1`] = ` - +
- + - + `; exports[`StepTimeField should render a loading state when creating the index pattern 1`] = ` - - + - - - - - +

- - - - +

+ +
+ + + +
`; exports[`StepTimeField should render a selected timeField 1`] = ` - +
- + - + `; exports[`StepTimeField should render advanced options 1`] = ` - +
- + - + `; exports[`StepTimeField should render advanced options with an index pattern id 1`] = ` - +
- + - + `; exports[`StepTimeField should render any error message 1`] = ` - +
- + - + `; exports[`StepTimeField should render normally 1`] = ` - +
- + - + `; exports[`StepTimeField should render timeFields 1`] = ` - +
- + - + `; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/__snapshots__/header.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/__snapshots__/header.test.tsx.snap index 63008ec5b52e7..2ac243780b31d 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/__snapshots__/header.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/__snapshots__/header.test.tsx.snap @@ -16,21 +16,10 @@ exports[`Header should render normally 1`] = ` - - - ki* - , - "indexPatternName": "ki*", - } - } - /> + + + ki* + `; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/header.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/header.tsx index 22e245f7ac137..c17b356e159f6 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/header.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/header/header.tsx @@ -39,15 +39,8 @@ export const Header: React.FC = ({ indexPattern, indexPatternName } - - {indexPattern}, - indexPatternName, - }} - /> + + {indexPattern} ); diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/__snapshots__/time_field.test.tsx.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/__snapshots__/time_field.test.tsx.snap index 886a4ccad39cc..73277b1963626 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/__snapshots__/time_field.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/__snapshots__/time_field.test.tsx.snap @@ -2,55 +2,33 @@ exports[`TimeField should render a loading state 1`] = ` + +

+ +

+
+ -

- -

-

- -

- - } label={ - - - - - - - - - - + + } + labelAppend={ + } labelType="label" > @@ -73,62 +51,43 @@ exports[`TimeField should render a loading state 1`] = ` exports[`TimeField should render a selected time field 1`] = ` + +

+ +

+
+ -

- -

-

- -

- - } label={ - + } + labelAppend={ + - - - - - - - - - - - + + +
} labelType="label" > @@ -154,62 +113,43 @@ exports[`TimeField should render a selected time field 1`] = ` exports[`TimeField should render normally 1`] = ` + +

+ +

+
+ -

- -

-

- -

- - } label={ - + } + labelAppend={ + - - - - - - - - - - - + + +
} labelType="label" > diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/time_field.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/time_field.tsx index b4ed37118966b..7a3d72551f464 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/time_field.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/components/time_field/time_field.tsx @@ -24,8 +24,7 @@ import React from 'react'; import { EuiForm, EuiFormRow, - EuiFlexGroup, - EuiFlexItem, + EuiSpacer, EuiLink, EuiSelect, EuiText, @@ -54,77 +53,68 @@ export const TimeField: React.FC = ({ }) => ( {isVisible ? ( - - - - - - - - {isLoading ? ( - - ) : ( - + <> + +

+ +

+
+ + + } + labelAppend={ + isLoading ? ( + + ) : ( + + - )} -
- - } - helpText={ -
-

- -

-

- -

-
- } - > - {isLoading ? ( - - ) : ( - - )} -
+ + ) + } + > + {isLoading ? ( + + ) : ( + + )} + + ) : (

diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.tsx index 98ce22cd14227..5d33a08557fed 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.tsx @@ -22,10 +22,10 @@ import { EuiCallOut, EuiFlexGroup, EuiFlexItem, - EuiPanel, - EuiText, + EuiTitle, EuiSpacer, EuiLoadingSpinner, + EuiHorizontalRule, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { ensureMinimumTime, extractTimeFields } from '../../lib'; @@ -43,6 +43,7 @@ interface StepTimeFieldProps { goToPreviousStep: () => void; createIndexPattern: (selectedTimeField: string | undefined, indexPatternId: string) => void; indexPatternCreationType: IndexPatternCreationConfig; + selectedTimeField?: string; } interface StepTimeFieldState { @@ -69,7 +70,7 @@ export class StepTimeField extends Component - - - - - - + + + +

- - - - +

+ + + + + + + ); } @@ -236,7 +242,7 @@ export class StepTimeField extends Component + <>
- + - + ); } } diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/create_index_pattern_wizard.tsx b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/create_index_pattern_wizard.tsx index 111be41cfc53a..cd76ca09ccb74 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/create_index_pattern_wizard.tsx +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/create_index_pattern_wizard.tsx @@ -19,10 +19,16 @@ import React, { ReactElement, Component } from 'react'; -import { EuiGlobalToastList, EuiGlobalToastListToast, EuiPanel } from '@elastic/eui'; +import { + EuiGlobalToastList, + EuiGlobalToastListToast, + EuiPageContent, + EuiHorizontalRule, +} from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { withRouter, RouteComponentProps } from 'react-router-dom'; +import { DocLinksStart } from 'src/core/public'; import { StepIndexPattern } from './components/step_index_pattern'; import { StepTimeField } from './components/step_time_field'; import { Header } from './components/header'; @@ -31,21 +37,21 @@ import { EmptyState } from './components/empty_state'; import { context as contextType } from '../../../../kibana_react/public'; import { getCreateBreadcrumbs } from '../breadcrumbs'; -import { MAX_SEARCH_SIZE } from './constants'; import { ensureMinimumTime, getIndices } from './lib'; import { IndexPatternCreationConfig } from '../..'; import { IndexPatternManagmentContextValue } from '../../types'; -import { MatchedIndex } from './types'; +import { MatchedItem } from './types'; interface CreateIndexPatternWizardState { step: number; indexPattern: string; - allIndices: MatchedIndex[]; + allIndices: MatchedItem[]; remoteClustersExist: boolean; isInitiallyLoadingIndices: boolean; - isIncludingSystemIndices: boolean; toasts: EuiGlobalToastListToast[]; indexPatternCreationType: IndexPatternCreationConfig; + selectedTimeField?: string; + docLinks: DocLinksStart; } export class CreateIndexPatternWizard extends Component< @@ -69,9 +75,9 @@ export class CreateIndexPatternWizard extends Component< allIndices: [], remoteClustersExist: false, isInitiallyLoadingIndices: true, - isIncludingSystemIndices: false, toasts: [], indexPatternCreationType: context.services.indexPatternManagementStart.creation.getType(type), + docLinks: context.services.docLinks, }; } @@ -80,7 +86,7 @@ export class CreateIndexPatternWizard extends Component< } catchAndWarn = async ( - asyncFn: Promise, + asyncFn: Promise, errorValue: [] | string[], errorMsg: ReactElement ) => { @@ -102,12 +108,6 @@ export class CreateIndexPatternWizard extends Component< }; fetchData = async () => { - this.setState({ - allIndices: [], - isInitiallyLoadingIndices: true, - remoteClustersExist: false, - }); - const indicesFailMsg = ( + ).then((allIndices: MatchedItem[]) => this.setState({ allIndices, isInitiallyLoadingIndices: false }) ); this.catchAndWarn( // if we get an error from remote cluster query, supply fallback value that allows user entry. // ['a'] is fallback value - getIndices( - this.context.services.data.search.__LEGACY.esClient, - this.state.indexPatternCreationType, - `*:*`, - 1 - ), + getIndices(this.context.services.http, this.state.indexPatternCreationType, `*:*`, false), ['a'], clustersFailMsg - ).then((remoteIndices: string[] | MatchedIndex[]) => + ).then((remoteIndices: string[] | MatchedItem[]) => this.setState({ remoteClustersExist: !!remoteIndices.length }) ); }; @@ -189,7 +179,7 @@ export class CreateIndexPatternWizard extends Component< if (isConfirmed) { return history.push(`/patterns/${indexPatternId}`); } else { - return false; + return; } } @@ -201,31 +191,21 @@ export class CreateIndexPatternWizard extends Component< history.push(`/patterns/${createdId}`); }; - goToTimeFieldStep = (indexPattern: string) => { - this.setState({ step: 2, indexPattern }); + goToTimeFieldStep = (indexPattern: string, selectedTimeField?: string) => { + this.setState({ step: 2, indexPattern, selectedTimeField }); }; goToIndexPatternStep = () => { this.setState({ step: 1 }); }; - onChangeIncludingSystemIndices = () => { - this.setState((prevState) => ({ - isIncludingSystemIndices: !prevState.isIncludingSystemIndices, - })); - }; - renderHeader() { - const { isIncludingSystemIndices } = this.state; - return (
); } @@ -234,7 +214,6 @@ export class CreateIndexPatternWizard extends Component< const { allIndices, isInitiallyLoadingIndices, - isIncludingSystemIndices, step, indexPattern, remoteClustersExist, @@ -244,8 +223,8 @@ export class CreateIndexPatternWizard extends Component< return ; } - const hasDataIndices = allIndices.some(({ name }: MatchedIndex) => !name.startsWith('.')); - if (!hasDataIndices && !isIncludingSystemIndices && !remoteClustersExist) { + const hasDataIndices = allIndices.some(({ name }: MatchedItem) => !name.startsWith('.')); + if (!hasDataIndices && !remoteClustersExist) { return ( + + {header} + + + ); } if (step === 2) { return ( - + + {header} + + + ); } @@ -290,15 +282,11 @@ export class CreateIndexPatternWizard extends Component< }; render() { - const header = this.renderHeader(); const content = this.renderContent(); return ( - -
- {header} - {content} -
+ <> + {content} { @@ -306,7 +294,7 @@ export class CreateIndexPatternWizard extends Component< }} toastLifeTimeMs={6000} /> -
+ ); } } diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/__snapshots__/get_indices.test.ts.snap b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/__snapshots__/get_indices.test.ts.snap new file mode 100644 index 0000000000000..99876383b4343 --- /dev/null +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/__snapshots__/get_indices.test.ts.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getIndices response object to item array 1`] = ` +Array [ + Object { + "item": Object { + "attributes": Array [ + "frozen", + ], + "name": "frozen_index", + }, + "name": "frozen_index", + "tags": Array [ + Object { + "color": "default", + "key": "index", + "name": "Index", + }, + Object { + "color": "danger", + "key": "frozen", + "name": "Frozen", + }, + ], + }, + Object { + "item": Object { + "indices": Array [], + "name": "test_alias", + }, + "name": "test_alias", + "tags": Array [ + Object { + "color": "default", + "key": "alias", + "name": "Alias", + }, + ], + }, + Object { + "item": Object { + "backing_indices": Array [], + "name": "test_data_stream", + "timestamp_field": "test_timestamp_field", + }, + "name": "test_data_stream", + "tags": Array [ + Object { + "color": "primary", + "key": "data_stream", + "name": "Data stream", + }, + ], + }, + Object { + "item": Object { + "name": "test_index", + }, + "name": "test_index", + "tags": Array [ + Object { + "color": "default", + "key": "index", + "name": "Index", + }, + ], + }, +] +`; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.test.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.test.ts index b1faca8a04964..8e4dd37284333 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.test.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.test.ts @@ -17,66 +17,31 @@ * under the License. */ -import { getIndices } from './get_indices'; +import { getIndices, responseToItemArray } from './get_indices'; import { IndexPatternCreationConfig } from '../../../../../index_pattern_management/public'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { LegacyApiCaller } from '../../../../../data/public/search/legacy'; +import { httpServiceMock } from '../../../../../../core/public/mocks'; +import { ResolveIndexResponseItemIndexAttrs } from '../types'; export const successfulResponse = { - hits: { - total: 1, - max_score: 0.0, - hits: [], - }, - aggregations: { - indices: { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 0, - buckets: [ - { - key: '1', - doc_count: 1, - }, - { - key: '2', - doc_count: 1, - }, - ], + indices: [ + { + name: 'remoteCluster1:bar-01', + attributes: ['open'], }, - }, -}; - -export const exceptionResponse = { - body: { - error: { - root_cause: [ - { - type: 'index_not_found_exception', - reason: 'no such index', - index_uuid: '_na_', - 'resource.type': 'index_or_alias', - 'resource.id': 't', - index: 't', - }, - ], - type: 'transport_exception', - reason: 'unable to communicate with remote cluster [cluster_one]', - caused_by: { - type: 'index_not_found_exception', - reason: 'no such index', - index_uuid: '_na_', - 'resource.type': 'index_or_alias', - 'resource.id': 't', - index: 't', - }, + ], + aliases: [ + { + name: 'f-alias', + indices: ['freeze-index', 'my-index'], }, - }, - status: 500, -}; - -export const errorResponse = { - statusCode: 400, - error: 'Bad Request', + ], + data_streams: [ + { + name: 'foo', + backing_indices: ['foo-000001'], + timestamp_field: '@timestamp', + }, + ], }; const mockIndexPatternCreationType = new IndexPatternCreationConfig({ @@ -87,81 +52,62 @@ const mockIndexPatternCreationType = new IndexPatternCreationConfig({ isBeta: false, }); -function esClientFactory(search: (params: any) => any): LegacyApiCaller { - return { - search, - msearch: () => ({ - abort: () => {}, - ...new Promise((resolve) => resolve({})), - }), - }; -} - -const es = esClientFactory(() => successfulResponse); +const http = httpServiceMock.createStartContract(); +http.get.mockResolvedValue(successfulResponse); describe('getIndices', () => { it('should work in a basic case', async () => { - const result = await getIndices(es, mockIndexPatternCreationType, 'kibana', 1); - expect(result.length).toBe(2); - expect(result[0].name).toBe('1'); - expect(result[1].name).toBe('2'); + const result = await getIndices(http, mockIndexPatternCreationType, 'kibana', false); + expect(result.length).toBe(3); + expect(result[0].name).toBe('f-alias'); + expect(result[1].name).toBe('foo'); }); it('should ignore ccs query-all', async () => { - expect((await getIndices(es, mockIndexPatternCreationType, '*:', 10)).length).toBe(0); + expect((await getIndices(http, mockIndexPatternCreationType, '*:', false)).length).toBe(0); }); it('should ignore a single comma', async () => { - expect((await getIndices(es, mockIndexPatternCreationType, ',', 10)).length).toBe(0); - expect((await getIndices(es, mockIndexPatternCreationType, ',*', 10)).length).toBe(0); - expect((await getIndices(es, mockIndexPatternCreationType, ',foobar', 10)).length).toBe(0); - }); - - it('should trim the input', async () => { - let index; - const esClient = esClientFactory( - jest.fn().mockImplementation((params) => { - index = params.index; - }) - ); - - await getIndices(esClient, mockIndexPatternCreationType, 'kibana ', 1); - expect(index).toBe('kibana'); + expect((await getIndices(http, mockIndexPatternCreationType, ',', false)).length).toBe(0); + expect((await getIndices(http, mockIndexPatternCreationType, ',*', false)).length).toBe(0); + expect((await getIndices(http, mockIndexPatternCreationType, ',foobar', false)).length).toBe(0); }); - it('should use the limit', async () => { - let limit; - const esClient = esClientFactory( - jest.fn().mockImplementation((params) => { - limit = params.body.aggs.indices.terms.size; - }) - ); - await getIndices(esClient, mockIndexPatternCreationType, 'kibana', 10); - expect(limit).toBe(10); + it('response object to item array', () => { + const result = { + indices: [ + { + name: 'test_index', + }, + { + name: 'frozen_index', + attributes: ['frozen' as ResolveIndexResponseItemIndexAttrs], + }, + ], + aliases: [ + { + name: 'test_alias', + indices: [], + }, + ], + data_streams: [ + { + name: 'test_data_stream', + backing_indices: [], + timestamp_field: 'test_timestamp_field', + }, + ], + }; + expect(responseToItemArray(result, mockIndexPatternCreationType)).toMatchSnapshot(); + expect(responseToItemArray({}, mockIndexPatternCreationType)).toEqual([]); }); describe('errors', () => { it('should handle errors gracefully', async () => { - const esClient = esClientFactory(() => errorResponse); - const result = await getIndices(esClient, mockIndexPatternCreationType, 'kibana', 1); - expect(result.length).toBe(0); - }); - - it('should throw exceptions', async () => { - const esClient = esClientFactory(() => { - throw new Error('Fail'); + http.get.mockImplementationOnce(() => { + throw new Error('Test error'); }); - - await expect( - getIndices(esClient, mockIndexPatternCreationType, 'kibana', 1) - ).rejects.toThrow(); - }); - - it('should handle index_not_found_exception errors gracefully', async () => { - const esClient = esClientFactory( - () => new Promise((resolve, reject) => reject(exceptionResponse)) - ); - const result = await getIndices(esClient, mockIndexPatternCreationType, 'kibana', 1); + const result = await getIndices(http, mockIndexPatternCreationType, 'kibana', false); expect(result.length).toBe(0); }); }); diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.ts index 9f75dc39a654c..c6a11de1bc4fc 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.ts @@ -17,17 +17,31 @@ * under the License. */ -import { get, sortBy } from 'lodash'; +import { sortBy } from 'lodash'; +import { HttpStart } from 'kibana/public'; +import { i18n } from '@kbn/i18n'; import { IndexPatternCreationConfig } from '../../../../../index_pattern_management/public'; -import { DataPublicPluginStart } from '../../../../../data/public'; -import { MatchedIndex } from '../types'; +import { MatchedItem, ResolveIndexResponse, ResolveIndexResponseItemIndexAttrs } from '../types'; + +const aliasLabel = i18n.translate('indexPatternManagement.aliasLabel', { defaultMessage: 'Alias' }); +const dataStreamLabel = i18n.translate('indexPatternManagement.dataStreamLabel', { + defaultMessage: 'Data stream', +}); + +const indexLabel = i18n.translate('indexPatternManagement.indexLabel', { + defaultMessage: 'Index', +}); + +const frozenLabel = i18n.translate('indexPatternManagement.frozenLabel', { + defaultMessage: 'Frozen', +}); export async function getIndices( - es: DataPublicPluginStart['search']['__LEGACY']['esClient'], + http: HttpStart, indexPatternCreationType: IndexPatternCreationConfig, rawPattern: string, - limit: number -): Promise { + showAllIndices: boolean +): Promise { const pattern = rawPattern.trim(); // Searching for `*:` fails for CCS environments. The search request @@ -48,54 +62,58 @@ export async function getIndices( return []; } - // We need to always provide a limit and not rely on the default - if (!limit) { - throw new Error('`getIndices()` was called without the required `limit` parameter.'); - } - - const params = { - ignoreUnavailable: true, - index: pattern, - ignore: [404], - body: { - size: 0, // no hits - aggs: { - indices: { - terms: { - field: '_index', - size: limit, - }, - }, - }, - }, - }; + const query = showAllIndices ? { expand_wildcards: 'all' } : undefined; try { - const response = await es.search(params); - if (!response || response.error || !response.aggregations) { - return []; - } - - return sortBy( - response.aggregations.indices.buckets - .map((bucket: { key: string; doc_count: number }) => { - return bucket.key; - }) - .map((indexName: string) => { - return { - name: indexName, - tags: indexPatternCreationType.getIndexTags(indexName), - }; - }), - 'name' + const response = await http.get( + `/internal/index-pattern-management/resolve_index/${pattern}`, + { query } ); - } catch (err) { - const type = get(err, 'body.error.caused_by.type'); - if (type === 'index_not_found_exception') { - // This happens in a CSS environment when the controlling node returns a 500 even though the data - // nodes returned a 404. Remove this when/if this is handled: https://github.com/elastic/elasticsearch/issues/27461 + if (!response) { return []; } - throw err; + + return responseToItemArray(response, indexPatternCreationType); + } catch { + return []; } } + +export const responseToItemArray = ( + response: ResolveIndexResponse, + indexPatternCreationType: IndexPatternCreationConfig +): MatchedItem[] => { + const source: MatchedItem[] = []; + + (response.indices || []).forEach((index) => { + const tags: MatchedItem['tags'] = [{ key: 'index', name: indexLabel, color: 'default' }]; + const isFrozen = (index.attributes || []).includes(ResolveIndexResponseItemIndexAttrs.FROZEN); + + tags.push(...indexPatternCreationType.getIndexTags(index.name)); + if (isFrozen) { + tags.push({ name: frozenLabel, key: 'frozen', color: 'danger' }); + } + + source.push({ + name: index.name, + tags, + item: index, + }); + }); + (response.aliases || []).forEach((alias) => { + source.push({ + name: alias.name, + tags: [{ key: 'alias', name: aliasLabel, color: 'default' }], + item: alias, + }); + }); + (response.data_streams || []).forEach((dataStream) => { + source.push({ + name: dataStream.name, + tags: [{ key: 'data_stream', name: dataStreamLabel, color: 'primary' }], + item: dataStream, + }); + }); + + return sortBy(source, 'name'); +}; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.test.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.test.ts index 65840aa64046d..c27eaa5ebc99e 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.test.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.test.ts @@ -18,7 +18,7 @@ */ import { getMatchedIndices } from './get_matched_indices'; -import { Tag } from '../types'; +import { Tag, MatchedItem } from '../types'; jest.mock('./../constants', () => ({ MAX_NUMBER_OF_MATCHING_INDICES: 6, @@ -32,18 +32,18 @@ const indices = [ { name: 'packetbeat', tags }, { name: 'metricbeat', tags }, { name: '.kibana', tags }, -]; +] as MatchedItem[]; const partialIndices = [ { name: 'kibana', tags }, { name: 'es', tags }, { name: '.kibana', tags }, -]; +] as MatchedItem[]; const exactIndices = [ { name: 'kibana', tags }, { name: '.kibana', tags }, -]; +] as MatchedItem[]; describe('getMatchedIndices', () => { it('should return all indices', () => { diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.ts index 7e2eeb17ab387..dbb166597152e 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_matched_indices.ts @@ -33,7 +33,7 @@ function isSystemIndex(index: string): boolean { return false; } -function filterSystemIndices(indices: MatchedIndex[], isIncludingSystemIndices: boolean) { +function filterSystemIndices(indices: MatchedItem[], isIncludingSystemIndices: boolean) { if (!indices) { return indices; } @@ -65,12 +65,12 @@ function filterSystemIndices(indices: MatchedIndex[], isIncludingSystemIndices: We call this `exact` matches because ES is telling us exactly what it matches */ -import { MatchedIndex } from '../types'; +import { MatchedItem } from '../types'; export function getMatchedIndices( - unfilteredAllIndices: MatchedIndex[], - unfilteredPartialMatchedIndices: MatchedIndex[], - unfilteredExactMatchedIndices: MatchedIndex[], + unfilteredAllIndices: MatchedItem[], + unfilteredPartialMatchedIndices: MatchedItem[], + unfilteredExactMatchedIndices: MatchedItem[], isIncludingSystemIndices: boolean = false ) { const allIndices = filterSystemIndices(unfilteredAllIndices, isIncludingSystemIndices); diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/types.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/types.ts index 634bbd856ea86..b23924837ffb7 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/types.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/types.ts @@ -17,12 +17,54 @@ * under the License. */ -export interface MatchedIndex { +export interface MatchedItem { name: string; tags: Tag[]; + item: { + name: string; + backing_indices?: string[]; + timestamp_field?: string; + indices?: string[]; + aliases?: string[]; + attributes?: ResolveIndexResponseItemIndexAttrs[]; + data_stream?: string; + }; +} + +export interface ResolveIndexResponse { + indices?: ResolveIndexResponseItemIndex[]; + aliases?: ResolveIndexResponseItemAlias[]; + data_streams?: ResolveIndexResponseItemDataStream[]; +} + +export interface ResolveIndexResponseItem { + name: string; +} + +export interface ResolveIndexResponseItemDataStream extends ResolveIndexResponseItem { + backing_indices: string[]; + timestamp_field: string; +} + +export interface ResolveIndexResponseItemAlias extends ResolveIndexResponseItem { + indices: string[]; +} + +export interface ResolveIndexResponseItemIndex extends ResolveIndexResponseItem { + aliases?: string[]; + attributes?: ResolveIndexResponseItemIndexAttrs[]; + data_stream?: string; +} + +export enum ResolveIndexResponseItemIndexAttrs { + OPEN = 'open', + CLOSED = 'closed', + HIDDEN = 'hidden', + FROZEN = 'frozen', } export interface Tag { name: string; key: string; + color: string; } diff --git a/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap b/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap index 6bc99c356592e..7a7545580d82a 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap @@ -836,7 +836,6 @@ exports[`FieldEditor should show deprecated lang warning 1`] = ` testlang , "painlessLink": , "scriptsInAggregation": Please familiarize yourself with - - + and with - - + before using scripted fields. diff --git a/src/plugins/index_pattern_management/public/mocks.ts b/src/plugins/index_pattern_management/public/mocks.ts index 93574cde7dc85..ec8100db42085 100644 --- a/src/plugins/index_pattern_management/public/mocks.ts +++ b/src/plugins/index_pattern_management/public/mocks.ts @@ -76,6 +76,13 @@ const createInstance = async () => { }; }; +const docLinks = { + links: { + indexPatterns: {}, + scriptedFields: {}, + }, +}; + const createIndexPatternManagmentContext = () => { const { chrome, @@ -84,7 +91,6 @@ const createIndexPatternManagmentContext = () => { uiSettings, notifications, overlays, - docLinks, } = coreMock.createStart(); const { http } = coreMock.createSetup(); const data = dataPluginMock.createStartContract(); diff --git a/src/plugins/index_pattern_management/public/service/creation/config.ts b/src/plugins/index_pattern_management/public/service/creation/config.ts index 95a91fd7594ca..04510b1d64e1e 100644 --- a/src/plugins/index_pattern_management/public/service/creation/config.ts +++ b/src/plugins/index_pattern_management/public/service/creation/config.ts @@ -18,7 +18,7 @@ */ import { i18n } from '@kbn/i18n'; -import { MatchedIndex } from '../../components/create_index_pattern_wizard/types'; +import { MatchedItem } from '../../components/create_index_pattern_wizard/types'; const indexPatternTypeName = i18n.translate( 'indexPatternManagement.editIndexPattern.createIndex.defaultTypeName', @@ -105,7 +105,7 @@ export class IndexPatternCreationConfig { return []; } - public checkIndicesForErrors(indices: MatchedIndex[]) { + public checkIndicesForErrors(indices: MatchedItem[]) { return undefined; } diff --git a/src/plugins/index_pattern_management/server/index.ts b/src/plugins/index_pattern_management/server/index.ts new file mode 100644 index 0000000000000..02a4631589832 --- /dev/null +++ b/src/plugins/index_pattern_management/server/index.ts @@ -0,0 +1,25 @@ +/* + * 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 { PluginInitializerContext } from 'src/core/server'; +import { IndexPatternManagementPlugin } from './plugin'; + +export function plugin(initializerContext: PluginInitializerContext) { + return new IndexPatternManagementPlugin(initializerContext); +} diff --git a/src/plugins/index_pattern_management/server/plugin.ts b/src/plugins/index_pattern_management/server/plugin.ts new file mode 100644 index 0000000000000..ecca45cbcc453 --- /dev/null +++ b/src/plugins/index_pattern_management/server/plugin.ts @@ -0,0 +1,70 @@ +/* + * 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 { PluginInitializerContext, CoreSetup, Plugin } from 'src/core/server'; +import { schema } from '@kbn/config-schema'; + +export class IndexPatternManagementPlugin implements Plugin { + constructor(initializerContext: PluginInitializerContext) {} + + public setup(core: CoreSetup) { + const router = core.http.createRouter(); + + router.get( + { + path: '/internal/index-pattern-management/resolve_index/{query}', + validate: { + params: schema.object({ + query: schema.string(), + }), + query: schema.object({ + expand_wildcards: schema.maybe( + schema.oneOf([ + schema.literal('all'), + schema.literal('open'), + schema.literal('closed'), + schema.literal('hidden'), + schema.literal('none'), + ]) + ), + }), + }, + }, + async (context, req, res) => { + const queryString = req.query.expand_wildcards + ? { expand_wildcards: req.query.expand_wildcards } + : null; + const result = await context.core.elasticsearch.legacy.client.callAsCurrentUser( + 'transport.request', + { + method: 'GET', + path: `/_resolve/index/${encodeURIComponent(req.params.query)}${ + queryString ? '?' + new URLSearchParams(queryString).toString() : '' + }`, + } + ); + return res.ok({ body: result }); + } + ); + } + + public start() {} + + public stop() {} +} diff --git a/test/functional/apps/management/_create_index_pattern_wizard.js b/test/functional/apps/management/_create_index_pattern_wizard.js index 8209f3e1ac9d6..cb8b5a6ddc65f 100644 --- a/test/functional/apps/management/_create_index_pattern_wizard.js +++ b/test/functional/apps/management/_create_index_pattern_wizard.js @@ -22,6 +22,7 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); + const es = getService('legacyEs'); const PageObjects = getPageObjects(['settings', 'common']); describe('"Create Index Pattern" wizard', function () { @@ -48,5 +49,59 @@ export default function ({ getService, getPageObjects }) { expect(isEnabled).to.be.ok(); }); }); + + describe('data streams', () => { + it('can be an index pattern', async () => { + await es.transport.request({ + path: '/_index_template/generic-logs', + method: 'PUT', + body: { + index_patterns: ['logs-*', 'test_data_stream'], + template: { + mappings: { + properties: { + '@timestamp': { + type: 'date', + }, + }, + }, + }, + data_stream: { + timestamp_field: '@timestamp', + }, + }, + }); + + await es.transport.request({ + path: '/_data_stream/test_data_stream', + method: 'PUT', + }); + + await PageObjects.settings.createIndexPattern('test_data_stream', false); + + await es.transport.request({ + path: '/_data_stream/test_data_stream', + method: 'DELETE', + }); + }); + }); + + describe('index alias', () => { + it('can be an index pattern', async () => { + await es.transport.request({ + path: '/blogs/_doc', + method: 'POST', + body: { user: 'matt', message: 20 }, + }); + + await es.transport.request({ + path: '/_aliases', + method: 'POST', + body: { actions: [{ add: { index: 'blogs', alias: 'alias1' } }] }, + }); + + await PageObjects.settings.createIndexPattern('alias1', false); + }); + }); }); } diff --git a/x-pack/plugins/rollup/public/index_pattern_creation/rollup_index_pattern_creation_config.js b/x-pack/plugins/rollup/public/index_pattern_creation/rollup_index_pattern_creation_config.js index 4ff189d8f1be0..643cc3efb0136 100644 --- a/x-pack/plugins/rollup/public/index_pattern_creation/rollup_index_pattern_creation_config.js +++ b/x-pack/plugins/rollup/public/index_pattern_creation/rollup_index_pattern_creation_config.js @@ -100,6 +100,7 @@ export class RollupIndexPatternCreationConfig extends IndexPatternCreationConfig { key: this.type, name: rollupIndexPatternIndexLabel, + color: 'primary', }, ] : []; From a86110488bfb4ff3c476baf0932d2559926f1eda Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Wed, 8 Jul 2020 16:19:12 +0100 Subject: [PATCH 16/38] [ML] Fixing missing daily_model_snapshot_retention_after_days in job update schema (#71086) --- .../plugins/ml/server/routes/schemas/anomaly_detectors_schema.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/plugins/ml/server/routes/schemas/anomaly_detectors_schema.ts b/x-pack/plugins/ml/server/routes/schemas/anomaly_detectors_schema.ts index 16eaab20fe8cb..196e17d0984f9 100644 --- a/x-pack/plugins/ml/server/routes/schemas/anomaly_detectors_schema.ts +++ b/x-pack/plugins/ml/server/routes/schemas/anomaly_detectors_schema.ts @@ -70,6 +70,7 @@ export const anomalyDetectionUpdateJobSchema = schema.object({ ), groups: schema.maybe(schema.arrayOf(schema.maybe(schema.string()))), model_snapshot_retention_days: schema.maybe(schema.number()), + daily_model_snapshot_retention_after_days: schema.maybe(schema.number()), }); export const analysisConfigSchema = schema.object({ From f044856038e2dbd33988c2aeacd3b2596b91a997 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Wed, 8 Jul 2020 17:21:00 +0200 Subject: [PATCH 17/38] Add new elasticsearch client (#69905) * add "@elastic/elasticsearch" to dependencies * first POC of new client * add logging * add generation script for client facade API and implementation * add back keepAlive * add exports from client * add new client mocks * add some doc * fix API usages * rename legacy client to legacy in service * rename currently unused config/client observable * wire new client to service & update mocks * fix mock type * export client types * add transport.request * more doc * migrate version_check to new client * fix default port logic * rename legacy client mocks * move legacy client mocks to legacy folder * start adding tests * add configure_client tests * add get_client_facade tests * bump client to 7.8 * add cluster_client tests * expose new client on internal contract only * revert using the new client for es version check * add service level test for new client * update generated API * Revert "rename legacy client mocks" This reverts commit e48f3ad6 * address some review comments * revert ts-expect-error from unowned files * move response mocks to mocks.ts * Remove generated facade, use ES Client directly * log queries even in case of error * nits * use direct properties instead of accessors * handle async closing of client * review nits * ElasticSearchClient -> ElasticsearchClient * add test for encoded querystring * adapt test file --- package.json | 2 +- .../client/client_config.test.ts | 483 ++++++++++++++++++ .../elasticsearch/client/client_config.ts | 158 ++++++ .../client/cluster_client.test.mocks.ts | 23 + .../client/cluster_client.test.ts | 376 ++++++++++++++ .../elasticsearch/client/cluster_client.ts | 113 ++++ .../client/configure_client.test.mocks.ts | 32 ++ .../client/configure_client.test.ts | 279 ++++++++++ .../elasticsearch/client/configure_client.ts | 65 +++ src/core/server/elasticsearch/client/index.ts | 24 + .../server/elasticsearch/client/mocks.test.ts | 60 +++ src/core/server/elasticsearch/client/mocks.ts | 148 ++++++ .../client/scoped_cluster_client.test.ts | 41 ++ .../client/scoped_cluster_client.ts | 49 ++ src/core/server/elasticsearch/client/types.ts | 42 ++ .../elasticsearch_service.mock.ts | 28 +- .../elasticsearch_service.test.mocks.ts | 5 +- .../elasticsearch_service.test.ts | 195 +++++-- .../elasticsearch/elasticsearch_service.ts | 184 +++---- src/core/server/elasticsearch/index.ts | 8 + src/core/server/elasticsearch/types.ts | 60 ++- .../version_check/ensure_es_version.ts | 2 +- src/core/server/internal_types.ts | 7 +- src/core/server/mocks.ts | 2 +- src/core/server/plugins/plugin_context.ts | 4 +- src/core/server/server.api.md | 5 + .../api_integration/apis/fleet/agents/acks.ts | 2 +- .../apis/fleet/agents/checkin.ts | 2 +- .../apis/fleet/agents/enroll.ts | 2 +- .../upgrade_assistant/status.ts | 3 +- yarn.lock | 16 + 31 files changed, 2216 insertions(+), 204 deletions(-) create mode 100644 src/core/server/elasticsearch/client/client_config.test.ts create mode 100644 src/core/server/elasticsearch/client/client_config.ts create mode 100644 src/core/server/elasticsearch/client/cluster_client.test.mocks.ts create mode 100644 src/core/server/elasticsearch/client/cluster_client.test.ts create mode 100644 src/core/server/elasticsearch/client/cluster_client.ts create mode 100644 src/core/server/elasticsearch/client/configure_client.test.mocks.ts create mode 100644 src/core/server/elasticsearch/client/configure_client.test.ts create mode 100644 src/core/server/elasticsearch/client/configure_client.ts create mode 100644 src/core/server/elasticsearch/client/index.ts create mode 100644 src/core/server/elasticsearch/client/mocks.test.ts create mode 100644 src/core/server/elasticsearch/client/mocks.ts create mode 100644 src/core/server/elasticsearch/client/scoped_cluster_client.test.ts create mode 100644 src/core/server/elasticsearch/client/scoped_cluster_client.ts create mode 100644 src/core/server/elasticsearch/client/types.ts diff --git a/package.json b/package.json index 6178bb07067d7..1a497a2ec8b10 100644 --- a/package.json +++ b/package.json @@ -125,6 +125,7 @@ "@elastic/apm-rum": "^5.2.0", "@elastic/charts": "19.8.1", "@elastic/datemath": "5.0.3", + "@elastic/elasticsearch": "7.8.0", "@elastic/ems-client": "7.9.3", "@elastic/eui": "24.1.0", "@elastic/filesaver": "1.1.2", @@ -294,7 +295,6 @@ "devDependencies": { "@babel/parser": "^7.10.2", "@babel/types": "^7.10.2", - "@elastic/elasticsearch": "^7.4.0", "@elastic/eslint-config-kibana": "0.15.0", "@elastic/eslint-plugin-eui": "0.0.2", "@elastic/github-checks-reporter": "0.0.20b3", diff --git a/src/core/server/elasticsearch/client/client_config.test.ts b/src/core/server/elasticsearch/client/client_config.test.ts new file mode 100644 index 0000000000000..675d8840e7118 --- /dev/null +++ b/src/core/server/elasticsearch/client/client_config.test.ts @@ -0,0 +1,483 @@ +/* + * 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 { duration } from 'moment'; +import { ElasticsearchClientConfig, parseClientOptions } from './client_config'; + +const createConfig = ( + parts: Partial = {} +): ElasticsearchClientConfig => { + return { + customHeaders: {}, + logQueries: false, + sniffOnStart: false, + sniffOnConnectionFault: false, + sniffInterval: false, + requestHeadersWhitelist: ['authorization'], + hosts: ['http://localhost:80'], + ...parts, + }; +}; + +describe('parseClientOptions', () => { + describe('basic options', () => { + it('`customHeaders` option', () => { + const config = createConfig({ + customHeaders: { + foo: 'bar', + hello: 'dolly', + }, + }); + + expect(parseClientOptions(config, false)).toEqual( + expect.objectContaining({ + headers: { + foo: 'bar', + hello: 'dolly', + }, + }) + ); + }); + + it('`keepAlive` option', () => { + expect(parseClientOptions(createConfig({ keepAlive: true }), false)).toEqual( + expect.objectContaining({ agent: { keepAlive: true } }) + ); + expect(parseClientOptions(createConfig({ keepAlive: false }), false).agent).toBeUndefined(); + }); + + it('`sniffOnStart` options', () => { + expect( + parseClientOptions( + createConfig({ + sniffOnStart: true, + }), + false + ).sniffOnStart + ).toEqual(true); + + expect( + parseClientOptions( + createConfig({ + sniffOnStart: false, + }), + false + ).sniffOnStart + ).toEqual(false); + }); + it('`sniffOnConnectionFault` options', () => { + expect( + parseClientOptions( + createConfig({ + sniffOnConnectionFault: true, + }), + false + ).sniffOnConnectionFault + ).toEqual(true); + + expect( + parseClientOptions( + createConfig({ + sniffOnConnectionFault: false, + }), + false + ).sniffOnConnectionFault + ).toEqual(false); + }); + it('`sniffInterval` options', () => { + expect( + parseClientOptions( + createConfig({ + sniffInterval: false, + }), + false + ).sniffInterval + ).toEqual(false); + + expect( + parseClientOptions( + createConfig({ + sniffInterval: duration(100, 'ms'), + }), + false + ).sniffInterval + ).toEqual(100); + }); + + it('`hosts` option', () => { + const options = parseClientOptions( + createConfig({ + hosts: ['http://node-A:9200', 'http://node-B', 'https://node-C'], + }), + false + ); + + expect(options.nodes).toMatchInlineSnapshot(` + Array [ + Object { + "url": "http://node-a:9200/", + }, + Object { + "url": "http://node-b/", + }, + Object { + "url": "https://node-c/", + }, + ] + `); + }); + }); + + describe('authorization', () => { + describe('when `scoped` is false', () => { + it('adds the `auth` option if both `username` and `password` are set', () => { + expect( + parseClientOptions( + createConfig({ + username: 'user', + }), + false + ).auth + ).toBeUndefined(); + + expect( + parseClientOptions( + createConfig({ + password: 'pass', + }), + false + ).auth + ).toBeUndefined(); + + expect( + parseClientOptions( + createConfig({ + username: 'user', + password: 'pass', + }), + false + ) + ).toEqual( + expect.objectContaining({ + auth: { + username: 'user', + password: 'pass', + }, + }) + ); + }); + + it('adds auth to the nodes if both `username` and `password` are set', () => { + let options = parseClientOptions( + createConfig({ + username: 'user', + hosts: ['http://node-A:9200'], + }), + false + ); + expect(options.nodes).toMatchInlineSnapshot(` + Array [ + Object { + "url": "http://node-a:9200/", + }, + ] + `); + + options = parseClientOptions( + createConfig({ + password: 'pass', + hosts: ['http://node-A:9200'], + }), + false + ); + expect(options.nodes).toMatchInlineSnapshot(` + Array [ + Object { + "url": "http://node-a:9200/", + }, + ] + `); + + options = parseClientOptions( + createConfig({ + username: 'user', + password: 'pass', + hosts: ['http://node-A:9200'], + }), + false + ); + expect(options.nodes).toMatchInlineSnapshot(` + Array [ + Object { + "url": "http://user:pass@node-a:9200/", + }, + ] + `); + }); + }); + describe('when `scoped` is true', () => { + it('does not add the `auth` option even if both `username` and `password` are set', () => { + expect( + parseClientOptions( + createConfig({ + username: 'user', + password: 'pass', + }), + true + ).auth + ).toBeUndefined(); + }); + + it('does not add auth to the nodes even if both `username` and `password` are set', () => { + const options = parseClientOptions( + createConfig({ + username: 'user', + password: 'pass', + hosts: ['http://node-A:9200'], + }), + true + ); + expect(options.nodes).toMatchInlineSnapshot(` + Array [ + Object { + "url": "http://node-a:9200/", + }, + ] + `); + }); + }); + }); + + describe('ssl config', () => { + it('does not generate ssl option is ssl config is not set', () => { + expect(parseClientOptions(createConfig({}), false).ssl).toBeUndefined(); + expect(parseClientOptions(createConfig({}), true).ssl).toBeUndefined(); + }); + + it('handles the `certificateAuthorities` option', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { verificationMode: 'full', certificateAuthorities: ['content-of-ca-path'] }, + }), + false + ).ssl!.ca + ).toEqual(['content-of-ca-path']); + expect( + parseClientOptions( + createConfig({ + ssl: { verificationMode: 'full', certificateAuthorities: ['content-of-ca-path'] }, + }), + true + ).ssl!.ca + ).toEqual(['content-of-ca-path']); + }); + + describe('verificationMode', () => { + it('handles `none` value', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'none', + }, + }), + false + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "rejectUnauthorized": false, + } + `); + }); + it('handles `certificate` value', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'certificate', + }, + }), + false + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "checkServerIdentity": [Function], + "rejectUnauthorized": true, + } + `); + }); + it('handles `full` value', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'full', + }, + }), + false + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "rejectUnauthorized": true, + } + `); + }); + it('throws for invalid values', () => { + expect( + () => + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'unknown' as any, + }, + }), + false + ).ssl + ).toThrowErrorMatchingInlineSnapshot(`"Unknown ssl verificationMode: unknown"`); + }); + it('throws for undefined values', () => { + expect( + () => + parseClientOptions( + createConfig({ + ssl: { + verificationMode: undefined as any, + }, + }), + false + ).ssl + ).toThrowErrorMatchingInlineSnapshot(`"Unknown ssl verificationMode: undefined"`); + }); + }); + + describe('`certificate`, `key` and `passphrase`', () => { + it('are not added if `key` is not present', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'full', + certificate: 'content-of-cert', + keyPassphrase: 'passphrase', + }, + }), + false + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "rejectUnauthorized": true, + } + `); + }); + + it('are not added if `certificate` is not present', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'full', + key: 'content-of-key', + keyPassphrase: 'passphrase', + }, + }), + false + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "rejectUnauthorized": true, + } + `); + }); + + it('are added if `key` and `certificate` are present and `scoped` is false', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'full', + key: 'content-of-key', + certificate: 'content-of-cert', + keyPassphrase: 'passphrase', + }, + }), + false + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "cert": "content-of-cert", + "key": "content-of-key", + "passphrase": "passphrase", + "rejectUnauthorized": true, + } + `); + }); + + it('are not added if `scoped` is true unless `alwaysPresentCertificate` is true', () => { + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'full', + key: 'content-of-key', + certificate: 'content-of-cert', + keyPassphrase: 'passphrase', + }, + }), + true + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "rejectUnauthorized": true, + } + `); + + expect( + parseClientOptions( + createConfig({ + ssl: { + verificationMode: 'full', + key: 'content-of-key', + certificate: 'content-of-cert', + keyPassphrase: 'passphrase', + alwaysPresentCertificate: true, + }, + }), + true + ).ssl + ).toMatchInlineSnapshot(` + Object { + "ca": undefined, + "cert": "content-of-cert", + "key": "content-of-key", + "passphrase": "passphrase", + "rejectUnauthorized": true, + } + `); + }); + }); + }); +}); diff --git a/src/core/server/elasticsearch/client/client_config.ts b/src/core/server/elasticsearch/client/client_config.ts new file mode 100644 index 0000000000000..f365ca331cfea --- /dev/null +++ b/src/core/server/elasticsearch/client/client_config.ts @@ -0,0 +1,158 @@ +/* + * 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 { ConnectionOptions as TlsConnectionOptions } from 'tls'; +import { URL } from 'url'; +import { Duration } from 'moment'; +import { ClientOptions, NodeOptions } from '@elastic/elasticsearch'; +import { ElasticsearchConfig } from '../elasticsearch_config'; + +/** + * Configuration options to be used to create a {@link IClusterClient | cluster client} using the + * {@link ElasticsearchServiceStart.createClient | createClient API} + * + * @public + */ +export type ElasticsearchClientConfig = Pick< + ElasticsearchConfig, + | 'customHeaders' + | 'logQueries' + | 'sniffOnStart' + | 'sniffOnConnectionFault' + | 'requestHeadersWhitelist' + | 'sniffInterval' + | 'hosts' + | 'username' + | 'password' +> & { + pingTimeout?: ElasticsearchConfig['pingTimeout'] | ClientOptions['pingTimeout']; + requestTimeout?: ElasticsearchConfig['requestTimeout'] | ClientOptions['requestTimeout']; + ssl?: Partial; + keepAlive?: boolean; +}; + +/** + * Parse the client options from given client config and `scoped` flag. + * + * @param config The config to generate the client options from. + * @param scoped if true, will adapt the configuration to be used by a scoped client + * (will remove basic auth and ssl certificates) + */ +export function parseClientOptions( + config: ElasticsearchClientConfig, + scoped: boolean +): ClientOptions { + const clientOptions: ClientOptions = { + sniffOnStart: config.sniffOnStart, + sniffOnConnectionFault: config.sniffOnConnectionFault, + headers: config.customHeaders, + }; + + if (config.pingTimeout != null) { + clientOptions.pingTimeout = getDurationAsMs(config.pingTimeout); + } + if (config.requestTimeout != null) { + clientOptions.requestTimeout = getDurationAsMs(config.requestTimeout); + } + if (config.sniffInterval != null) { + clientOptions.sniffInterval = + typeof config.sniffInterval === 'boolean' + ? config.sniffInterval + : getDurationAsMs(config.sniffInterval); + } + if (config.keepAlive) { + clientOptions.agent = { + keepAlive: config.keepAlive, + }; + } + + if (config.username && config.password && !scoped) { + clientOptions.auth = { + username: config.username, + password: config.password, + }; + } + + clientOptions.nodes = config.hosts.map((host) => convertHost(host, !scoped, config)); + + if (config.ssl) { + clientOptions.ssl = generateSslConfig( + config.ssl, + scoped && !config.ssl.alwaysPresentCertificate + ); + } + + return clientOptions; +} + +const generateSslConfig = ( + sslConfig: Required['ssl'], + ignoreCertAndKey: boolean +): TlsConnectionOptions => { + const ssl: TlsConnectionOptions = { + ca: sslConfig.certificateAuthorities, + }; + + const verificationMode = sslConfig.verificationMode; + switch (verificationMode) { + case 'none': + ssl.rejectUnauthorized = false; + break; + case 'certificate': + ssl.rejectUnauthorized = true; + // by default, NodeJS is checking the server identify + ssl.checkServerIdentity = () => undefined; + break; + case 'full': + ssl.rejectUnauthorized = true; + break; + default: + throw new Error(`Unknown ssl verificationMode: ${verificationMode}`); + } + + // Add client certificate and key if required by elasticsearch + if (!ignoreCertAndKey && sslConfig.certificate && sslConfig.key) { + ssl.cert = sslConfig.certificate; + ssl.key = sslConfig.key; + ssl.passphrase = sslConfig.keyPassphrase; + } + + return ssl; +}; + +const convertHost = ( + host: string, + needAuth: boolean, + { username, password }: ElasticsearchClientConfig +): NodeOptions => { + const url = new URL(host); + const isHTTPS = url.protocol === 'https:'; + url.port = url.port || (isHTTPS ? '443' : '80'); + if (needAuth && username && password) { + url.username = username; + url.password = password; + } + + return { + url, + }; +}; + +const getDurationAsMs = (duration: number | Duration) => + typeof duration === 'number' ? duration : duration.asMilliseconds(); diff --git a/src/core/server/elasticsearch/client/cluster_client.test.mocks.ts b/src/core/server/elasticsearch/client/cluster_client.test.mocks.ts new file mode 100644 index 0000000000000..e08c0d55b4551 --- /dev/null +++ b/src/core/server/elasticsearch/client/cluster_client.test.mocks.ts @@ -0,0 +1,23 @@ +/* + * 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 const configureClientMock = jest.fn(); +jest.doMock('./configure_client', () => ({ + configureClient: configureClientMock, +})); diff --git a/src/core/server/elasticsearch/client/cluster_client.test.ts b/src/core/server/elasticsearch/client/cluster_client.test.ts new file mode 100644 index 0000000000000..85517b80745f1 --- /dev/null +++ b/src/core/server/elasticsearch/client/cluster_client.test.ts @@ -0,0 +1,376 @@ +/* + * 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 { configureClientMock } from './cluster_client.test.mocks'; +import { loggingSystemMock } from '../../logging/logging_system.mock'; +import { httpServerMock } from '../../http/http_server.mocks'; +import { GetAuthHeaders } from '../../http'; +import { elasticsearchClientMock } from './mocks'; +import { ClusterClient } from './cluster_client'; +import { ElasticsearchClientConfig } from './client_config'; + +const createConfig = ( + parts: Partial = {} +): ElasticsearchClientConfig => { + return { + logQueries: false, + sniffOnStart: false, + sniffOnConnectionFault: false, + sniffInterval: false, + requestHeadersWhitelist: ['authorization'], + customHeaders: {}, + hosts: ['http://localhost'], + ...parts, + }; +}; + +describe('ClusterClient', () => { + let logger: ReturnType; + let getAuthHeaders: jest.MockedFunction; + let internalClient: ReturnType; + let scopedClient: ReturnType; + + beforeEach(() => { + logger = loggingSystemMock.createLogger(); + internalClient = elasticsearchClientMock.createInternalClient(); + scopedClient = elasticsearchClientMock.createInternalClient(); + getAuthHeaders = jest.fn().mockImplementation(() => ({ + authorization: 'auth', + foo: 'bar', + })); + + configureClientMock.mockImplementation((config, { scoped = false }) => { + return scoped ? scopedClient : internalClient; + }); + }); + + afterEach(() => { + configureClientMock.mockReset(); + }); + + it('creates a single internal and scoped client during initialization', () => { + const config = createConfig(); + + new ClusterClient(config, logger, getAuthHeaders); + + expect(configureClientMock).toHaveBeenCalledTimes(2); + expect(configureClientMock).toHaveBeenCalledWith(config, { logger }); + expect(configureClientMock).toHaveBeenCalledWith(config, { logger, scoped: true }); + }); + + describe('#asInternalUser', () => { + it('returns the internal client', () => { + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + + expect(clusterClient.asInternalUser).toBe(internalClient); + }); + }); + + describe('#asScoped', () => { + it('returns a scoped cluster client bound to the request', () => { + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest(); + + const scopedClusterClient = clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ headers: expect.any(Object) }); + + expect(scopedClusterClient.asInternalUser).toBe(clusterClient.asInternalUser); + expect(scopedClusterClient.asCurrentUser).toBe(scopedClient.child.mock.results[0].value); + }); + + it('returns a distinct scoped cluster client on each call', () => { + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest(); + + const scopedClusterClient1 = clusterClient.asScoped(request); + const scopedClusterClient2 = clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(2); + + expect(scopedClusterClient1).not.toBe(scopedClusterClient2); + expect(scopedClusterClient1.asInternalUser).toBe(scopedClusterClient2.asInternalUser); + }); + + it('creates a scoped client with filtered request headers', () => { + const config = createConfig({ + requestHeadersWhitelist: ['foo'], + }); + getAuthHeaders.mockReturnValue({}); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest({ + headers: { + foo: 'bar', + hello: 'dolly', + }, + }); + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { foo: 'bar' }, + }); + }); + + it('creates a scoped facade with filtered auth headers', () => { + const config = createConfig({ + requestHeadersWhitelist: ['authorization'], + }); + getAuthHeaders.mockReturnValue({ + authorization: 'auth', + other: 'nope', + }); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest({}); + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { authorization: 'auth' }, + }); + }); + + it('respects auth headers precedence', () => { + const config = createConfig({ + requestHeadersWhitelist: ['authorization'], + }); + getAuthHeaders.mockReturnValue({ + authorization: 'auth', + other: 'nope', + }); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest({ + headers: { + authorization: 'override', + }, + }); + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { authorization: 'auth' }, + }); + }); + + it('includes the `customHeaders` from the config without filtering them', () => { + const config = createConfig({ + customHeaders: { + foo: 'bar', + hello: 'dolly', + }, + requestHeadersWhitelist: ['authorization'], + }); + getAuthHeaders.mockReturnValue({}); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest({}); + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { + foo: 'bar', + hello: 'dolly', + }, + }); + }); + + it('respect the precedence of auth headers over config headers', () => { + const config = createConfig({ + customHeaders: { + foo: 'config', + hello: 'dolly', + }, + requestHeadersWhitelist: ['foo'], + }); + getAuthHeaders.mockReturnValue({ + foo: 'auth', + }); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest({}); + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { + foo: 'auth', + hello: 'dolly', + }, + }); + }); + + it('respect the precedence of request headers over config headers', () => { + const config = createConfig({ + customHeaders: { + foo: 'config', + hello: 'dolly', + }, + requestHeadersWhitelist: ['foo'], + }); + getAuthHeaders.mockReturnValue({}); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = httpServerMock.createKibanaRequest({ + headers: { foo: 'request' }, + }); + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { + foo: 'request', + hello: 'dolly', + }, + }); + }); + + it('filter headers when called with a `FakeRequest`', () => { + const config = createConfig({ + requestHeadersWhitelist: ['authorization'], + }); + getAuthHeaders.mockReturnValue({}); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = { + headers: { + authorization: 'auth', + hello: 'dolly', + }, + }; + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { authorization: 'auth' }, + }); + }); + + it('does not add auth headers when called with a `FakeRequest`', () => { + const config = createConfig({ + requestHeadersWhitelist: ['authorization', 'foo'], + }); + getAuthHeaders.mockReturnValue({ + authorization: 'auth', + }); + + const clusterClient = new ClusterClient(config, logger, getAuthHeaders); + const request = { + headers: { + foo: 'bar', + hello: 'dolly', + }, + }; + + clusterClient.asScoped(request); + + expect(scopedClient.child).toHaveBeenCalledTimes(1); + expect(scopedClient.child).toHaveBeenCalledWith({ + headers: { foo: 'bar' }, + }); + }); + }); + + describe('#close', () => { + it('closes both underlying clients', async () => { + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + + await clusterClient.close(); + + expect(internalClient.close).toHaveBeenCalledTimes(1); + expect(scopedClient.close).toHaveBeenCalledTimes(1); + }); + + it('waits for both clients to close', async (done) => { + expect.assertions(4); + + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + + let internalClientClosed = false; + let scopedClientClosed = false; + let clusterClientClosed = false; + + let closeInternalClient: () => void; + let closeScopedClient: () => void; + + internalClient.close.mockReturnValue( + new Promise((resolve) => { + closeInternalClient = resolve; + }).then(() => { + expect(clusterClientClosed).toBe(false); + internalClientClosed = true; + }) + ); + scopedClient.close.mockReturnValue( + new Promise((resolve) => { + closeScopedClient = resolve; + }).then(() => { + expect(clusterClientClosed).toBe(false); + scopedClientClosed = true; + }) + ); + + clusterClient.close().then(() => { + clusterClientClosed = true; + expect(internalClientClosed).toBe(true); + expect(scopedClientClosed).toBe(true); + done(); + }); + + closeInternalClient!(); + closeScopedClient!(); + }); + + it('return a rejected promise is any client rejects', async () => { + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + + internalClient.close.mockRejectedValue(new Error('error closing client')); + + expect(clusterClient.close()).rejects.toThrowErrorMatchingInlineSnapshot( + `"error closing client"` + ); + }); + + it('does nothing after the first call', async () => { + const clusterClient = new ClusterClient(createConfig(), logger, getAuthHeaders); + + await clusterClient.close(); + + expect(internalClient.close).toHaveBeenCalledTimes(1); + expect(scopedClient.close).toHaveBeenCalledTimes(1); + + await clusterClient.close(); + await clusterClient.close(); + + expect(internalClient.close).toHaveBeenCalledTimes(1); + expect(scopedClient.close).toHaveBeenCalledTimes(1); + }); + }); +}); diff --git a/src/core/server/elasticsearch/client/cluster_client.ts b/src/core/server/elasticsearch/client/cluster_client.ts new file mode 100644 index 0000000000000..d9a0e6fe3f238 --- /dev/null +++ b/src/core/server/elasticsearch/client/cluster_client.ts @@ -0,0 +1,113 @@ +/* + * 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 { Client } from '@elastic/elasticsearch'; +import { Logger } from '../../logging'; +import { GetAuthHeaders, isRealRequest, Headers } from '../../http'; +import { ensureRawRequest, filterHeaders } from '../../http/router'; +import { ScopeableRequest } from '../types'; +import { ElasticsearchClient } from './types'; +import { configureClient } from './configure_client'; +import { ElasticsearchClientConfig } from './client_config'; +import { ScopedClusterClient, IScopedClusterClient } from './scoped_cluster_client'; + +const noop = () => undefined; + +/** + * Represents an Elasticsearch cluster API client created by the platform. + * It allows to call API on behalf of the internal Kibana user and + * the actual user that is derived from the request headers (via `asScoped(...)`). + * + * @public + **/ +export interface IClusterClient { + /** + * A {@link ElasticsearchClient | client} to be used to query the ES cluster on behalf of the Kibana internal user + */ + readonly asInternalUser: ElasticsearchClient; + /** + * Creates a {@link IScopedClusterClient | scoped cluster client} bound to given {@link ScopeableRequest | request} + */ + asScoped: (request: ScopeableRequest) => IScopedClusterClient; +} + +/** + * See {@link IClusterClient} + * + * @public + */ +export interface ICustomClusterClient extends IClusterClient { + /** + * Closes the cluster client. After that client cannot be used and one should + * create a new client instance to be able to interact with Elasticsearch API. + */ + close: () => Promise; +} + +/** @internal **/ +export class ClusterClient implements ICustomClusterClient { + public readonly asInternalUser: Client; + private readonly rootScopedClient: Client; + + private isClosed = false; + + constructor( + private readonly config: ElasticsearchClientConfig, + logger: Logger, + private readonly getAuthHeaders: GetAuthHeaders = noop + ) { + this.asInternalUser = configureClient(config, { logger }); + this.rootScopedClient = configureClient(config, { logger, scoped: true }); + } + + asScoped(request: ScopeableRequest) { + const scopedHeaders = this.getScopedHeaders(request); + const scopedClient = this.rootScopedClient.child({ + headers: scopedHeaders, + }); + return new ScopedClusterClient(this.asInternalUser, scopedClient); + } + + public async close() { + if (this.isClosed) { + return; + } + this.isClosed = true; + await Promise.all([this.asInternalUser.close(), this.rootScopedClient.close()]); + } + + private getScopedHeaders(request: ScopeableRequest): Headers { + let scopedHeaders: Headers; + if (isRealRequest(request)) { + const authHeaders = this.getAuthHeaders(request); + const requestHeaders = ensureRawRequest(request).headers; + scopedHeaders = filterHeaders( + { ...requestHeaders, ...authHeaders }, + this.config.requestHeadersWhitelist + ); + } else { + scopedHeaders = filterHeaders(request?.headers ?? {}, this.config.requestHeadersWhitelist); + } + + return { + ...this.config.customHeaders, + ...scopedHeaders, + }; + } +} diff --git a/src/core/server/elasticsearch/client/configure_client.test.mocks.ts b/src/core/server/elasticsearch/client/configure_client.test.mocks.ts new file mode 100644 index 0000000000000..0a74f57120fb0 --- /dev/null +++ b/src/core/server/elasticsearch/client/configure_client.test.mocks.ts @@ -0,0 +1,32 @@ +/* + * 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 const parseClientOptionsMock = jest.fn(); +jest.doMock('./client_config', () => ({ + parseClientOptions: parseClientOptionsMock, +})); + +export const ClientMock = jest.fn(); +jest.doMock('@elastic/elasticsearch', () => { + const actual = jest.requireActual('@elastic/elasticsearch'); + return { + ...actual, + Client: ClientMock, + }; +}); diff --git a/src/core/server/elasticsearch/client/configure_client.test.ts b/src/core/server/elasticsearch/client/configure_client.test.ts new file mode 100644 index 0000000000000..32da142764a78 --- /dev/null +++ b/src/core/server/elasticsearch/client/configure_client.test.ts @@ -0,0 +1,279 @@ +/* + * 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 { RequestEvent, errors } from '@elastic/elasticsearch'; +import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; + +import { parseClientOptionsMock, ClientMock } from './configure_client.test.mocks'; +import { loggingSystemMock } from '../../logging/logging_system.mock'; +import EventEmitter from 'events'; +import type { ElasticsearchClientConfig } from './client_config'; +import { configureClient } from './configure_client'; + +const createFakeConfig = ( + parts: Partial = {} +): ElasticsearchClientConfig => { + return ({ + type: 'fake-config', + ...parts, + } as unknown) as ElasticsearchClientConfig; +}; + +const createFakeClient = () => { + const client = new EventEmitter(); + jest.spyOn(client, 'on'); + return client; +}; + +const createApiResponse = ({ + body, + statusCode = 200, + headers = {}, + warnings = [], + params, +}: { + body: T; + statusCode?: number; + headers?: Record; + warnings?: string[]; + params?: TransportRequestParams; +}): RequestEvent => { + return { + body, + statusCode, + headers, + warnings, + meta: { + request: { + params: params!, + } as any, + } as any, + }; +}; + +describe('configureClient', () => { + let logger: ReturnType; + let config: ElasticsearchClientConfig; + + beforeEach(() => { + logger = loggingSystemMock.createLogger(); + config = createFakeConfig(); + parseClientOptionsMock.mockReturnValue({}); + ClientMock.mockImplementation(() => createFakeClient()); + }); + + afterEach(() => { + parseClientOptionsMock.mockReset(); + ClientMock.mockReset(); + }); + + it('calls `parseClientOptions` with the correct parameters', () => { + configureClient(config, { logger, scoped: false }); + + expect(parseClientOptionsMock).toHaveBeenCalledTimes(1); + expect(parseClientOptionsMock).toHaveBeenCalledWith(config, false); + + parseClientOptionsMock.mockClear(); + + configureClient(config, { logger, scoped: true }); + + expect(parseClientOptionsMock).toHaveBeenCalledTimes(1); + expect(parseClientOptionsMock).toHaveBeenCalledWith(config, true); + }); + + it('constructs a client using the options returned by `parseClientOptions`', () => { + const parsedOptions = { + nodes: ['http://localhost'], + }; + parseClientOptionsMock.mockReturnValue(parsedOptions); + + const client = configureClient(config, { logger, scoped: false }); + + expect(ClientMock).toHaveBeenCalledTimes(1); + expect(ClientMock).toHaveBeenCalledWith(parsedOptions); + expect(client).toBe(ClientMock.mock.results[0].value); + }); + + it('listens to client on `response` events', () => { + const client = configureClient(config, { logger, scoped: false }); + + expect(client.on).toHaveBeenCalledTimes(1); + expect(client.on).toHaveBeenCalledWith('response', expect.any(Function)); + }); + + describe('Client logging', () => { + it('logs error when the client emits an error', () => { + const client = configureClient(config, { logger, scoped: false }); + + const response = createApiResponse({ + body: { + error: { + type: 'error message', + }, + }, + }); + client.emit('response', new errors.ResponseError(response), null); + client.emit('response', new Error('some error'), null); + + expect(loggingSystemMock.collect(logger).error).toMatchInlineSnapshot(` + Array [ + Array [ + "ResponseError: error message", + ], + Array [ + "Error: some error", + ], + ] + `); + }); + + it('logs each queries if `logQueries` is true', () => { + const client = configureClient( + createFakeConfig({ + logQueries: true, + }), + { logger, scoped: false } + ); + + const response = createApiResponse({ + body: {}, + statusCode: 200, + params: { + method: 'GET', + path: '/foo', + querystring: { hello: 'dolly' }, + }, + }); + + client.emit('response', null, response); + + expect(loggingSystemMock.collect(logger).debug).toMatchInlineSnapshot(` + Array [ + Array [ + "200 + GET /foo + hello=dolly", + Object { + "tags": Array [ + "query", + ], + }, + ], + ] + `); + }); + + it('properly encode queries', () => { + const client = configureClient( + createFakeConfig({ + logQueries: true, + }), + { logger, scoped: false } + ); + + const response = createApiResponse({ + body: {}, + statusCode: 200, + params: { + method: 'GET', + path: '/foo', + querystring: { city: 'Münich' }, + }, + }); + + client.emit('response', null, response); + + expect(loggingSystemMock.collect(logger).debug).toMatchInlineSnapshot(` + Array [ + Array [ + "200 + GET /foo + city=M%C3%BCnich", + Object { + "tags": Array [ + "query", + ], + }, + ], + ] + `); + }); + + it('logs queries even in case of errors if `logQueries` is true', () => { + const client = configureClient( + createFakeConfig({ + logQueries: true, + }), + { logger, scoped: false } + ); + + const response = createApiResponse({ + statusCode: 500, + body: { + error: { + type: 'internal server error', + }, + }, + params: { + method: 'GET', + path: '/foo', + querystring: { hello: 'dolly' }, + }, + }); + client.emit('response', new errors.ResponseError(response), response); + + expect(loggingSystemMock.collect(logger).debug).toMatchInlineSnapshot(` + Array [ + Array [ + "500 + GET /foo + hello=dolly", + Object { + "tags": Array [ + "query", + ], + }, + ], + ] + `); + }); + + it('does not log queries if `logQueries` is false', () => { + const client = configureClient( + createFakeConfig({ + logQueries: false, + }), + { logger, scoped: false } + ); + + const response = createApiResponse({ + body: {}, + statusCode: 200, + params: { + method: 'GET', + path: '/foo', + }, + }); + + client.emit('response', null, response); + + expect(logger.debug).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/src/core/server/elasticsearch/client/configure_client.ts b/src/core/server/elasticsearch/client/configure_client.ts new file mode 100644 index 0000000000000..5377f8ca1b070 --- /dev/null +++ b/src/core/server/elasticsearch/client/configure_client.ts @@ -0,0 +1,65 @@ +/* + * 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 { stringify } from 'querystring'; +import { Client } from '@elastic/elasticsearch'; +import { Logger } from '../../logging'; +import { parseClientOptions, ElasticsearchClientConfig } from './client_config'; + +export const configureClient = ( + config: ElasticsearchClientConfig, + { logger, scoped = false }: { logger: Logger; scoped?: boolean } +): Client => { + const clientOptions = parseClientOptions(config, scoped); + + const client = new Client(clientOptions); + addLogging(client, logger, config.logQueries); + + return client; +}; + +const addLogging = (client: Client, logger: Logger, logQueries: boolean) => { + client.on('response', (err, event) => { + if (err) { + logger.error(`${err.name}: ${err.message}`); + } + if (event && logQueries) { + const params = event.meta.request.params; + + // definition is wrong, `params.querystring` can be either a string or an object + const querystring = convertQueryString(params.querystring); + + logger.debug( + `${event.statusCode}\n${params.method} ${params.path}${ + querystring ? `\n${querystring}` : '' + }`, + { + tags: ['query'], + } + ); + } + }); +}; + +const convertQueryString = (qs: string | Record | undefined): string => { + if (qs === undefined || typeof qs === 'string') { + return qs ?? ''; + } + return stringify(qs); +}; diff --git a/src/core/server/elasticsearch/client/index.ts b/src/core/server/elasticsearch/client/index.ts new file mode 100644 index 0000000000000..18e84482024ca --- /dev/null +++ b/src/core/server/elasticsearch/client/index.ts @@ -0,0 +1,24 @@ +/* + * 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 { ElasticsearchClient } from './types'; +export { IScopedClusterClient, ScopedClusterClient } from './scoped_cluster_client'; +export { ElasticsearchClientConfig } from './client_config'; +export { IClusterClient, ICustomClusterClient, ClusterClient } from './cluster_client'; +export { configureClient } from './configure_client'; diff --git a/src/core/server/elasticsearch/client/mocks.test.ts b/src/core/server/elasticsearch/client/mocks.test.ts new file mode 100644 index 0000000000000..b882f8d0c5d79 --- /dev/null +++ b/src/core/server/elasticsearch/client/mocks.test.ts @@ -0,0 +1,60 @@ +/* + * 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 { elasticsearchClientMock } from './mocks'; + +describe('Mocked client', () => { + let client: ReturnType; + + const expectMocked = (fn: jest.MockedFunction | undefined) => { + expect(fn).toBeDefined(); + expect(fn.mockReturnValue).toEqual(expect.any(Function)); + }; + + beforeEach(() => { + client = elasticsearchClientMock.createInternalClient(); + }); + + it('`transport.request` should be mocked', () => { + expectMocked(client.transport.request); + }); + + it('root level API methods should be mocked', () => { + expectMocked(client.bulk); + expectMocked(client.search); + }); + + it('nested level API methods should be mocked', () => { + expectMocked(client.asyncSearch.get); + expectMocked(client.nodes.info); + }); + + it('`close` should be mocked', () => { + expectMocked(client.close); + }); + + it('`child` should be mocked and return a mocked Client', () => { + expectMocked(client.child); + + const child = client.child(); + + expect(child).not.toBe(client); + expectMocked(child.search); + }); +}); diff --git a/src/core/server/elasticsearch/client/mocks.ts b/src/core/server/elasticsearch/client/mocks.ts new file mode 100644 index 0000000000000..75644435a7f2a --- /dev/null +++ b/src/core/server/elasticsearch/client/mocks.ts @@ -0,0 +1,148 @@ +/* + * 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 { Client, ApiResponse } from '@elastic/elasticsearch'; +import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; +import { ElasticsearchClient } from './types'; +import { ICustomClusterClient } from './cluster_client'; + +const createInternalClientMock = (): DeeplyMockedKeys => { + // we mimic 'reflection' on a concrete instance of the client to generate the mocked functions. + const client = new Client({ + node: 'http://localhost', + }) as any; + + const blackListedProps = [ + '_events', + '_eventsCount', + '_maxListeners', + 'name', + 'serializer', + 'connectionPool', + 'transport', + 'helpers', + ]; + + const mockify = (obj: Record, blacklist: string[] = []) => { + Object.keys(obj) + .filter((key) => !blacklist.includes(key)) + .forEach((key) => { + const propType = typeof obj[key]; + if (propType === 'function') { + obj[key] = jest.fn(); + } else if (propType === 'object' && obj[key] != null) { + mockify(obj[key]); + } + }); + }; + + mockify(client, blackListedProps); + + client.transport = { + request: jest.fn(), + }; + client.close = jest.fn().mockReturnValue(Promise.resolve()); + client.child = jest.fn().mockImplementation(() => createInternalClientMock()); + + return (client as unknown) as DeeplyMockedKeys; +}; + +export type ElasticSearchClientMock = DeeplyMockedKeys; + +const createClientMock = (): ElasticSearchClientMock => + (createInternalClientMock() as unknown) as ElasticSearchClientMock; + +interface ScopedClusterClientMock { + asInternalUser: ElasticSearchClientMock; + asCurrentUser: ElasticSearchClientMock; +} + +const createScopedClusterClientMock = () => { + const mock: ScopedClusterClientMock = { + asInternalUser: createClientMock(), + asCurrentUser: createClientMock(), + }; + + return mock; +}; + +export interface ClusterClientMock { + asInternalUser: ElasticSearchClientMock; + asScoped: jest.MockedFunction<() => ScopedClusterClientMock>; +} + +const createClusterClientMock = () => { + const mock: ClusterClientMock = { + asInternalUser: createClientMock(), + asScoped: jest.fn(), + }; + + mock.asScoped.mockReturnValue(createScopedClusterClientMock()); + + return mock; +}; + +export type CustomClusterClientMock = jest.Mocked & ClusterClientMock; + +const createCustomClusterClientMock = () => { + const mock: CustomClusterClientMock = { + asInternalUser: createClientMock(), + asScoped: jest.fn(), + close: jest.fn(), + }; + + mock.asScoped.mockReturnValue(createScopedClusterClientMock()); + mock.close.mockReturnValue(Promise.resolve()); + + return mock; +}; + +export type MockedTransportRequestPromise = TransportRequestPromise & { + abort: jest.MockedFunction<() => undefined>; +}; + +const createMockedClientResponse = (body: T): MockedTransportRequestPromise> => { + const response: ApiResponse = { + body, + statusCode: 200, + warnings: [], + headers: {}, + meta: {} as any, + }; + const promise = Promise.resolve(response); + (promise as MockedTransportRequestPromise>).abort = jest.fn(); + + return promise as MockedTransportRequestPromise>; +}; + +const createMockedClientError = (err: any): MockedTransportRequestPromise => { + const promise = Promise.reject(err); + (promise as MockedTransportRequestPromise).abort = jest.fn(); + return promise as MockedTransportRequestPromise; +}; + +export const elasticsearchClientMock = { + createClusterClient: createClusterClientMock, + createCustomClusterClient: createCustomClusterClientMock, + createScopedClusterClient: createScopedClusterClientMock, + createElasticSearchClient: createClientMock, + createInternalClient: createInternalClientMock, + createClientResponse: createMockedClientResponse, + createClientError: createMockedClientError, +}; diff --git a/src/core/server/elasticsearch/client/scoped_cluster_client.test.ts b/src/core/server/elasticsearch/client/scoped_cluster_client.test.ts new file mode 100644 index 0000000000000..78ca8fcbd3c07 --- /dev/null +++ b/src/core/server/elasticsearch/client/scoped_cluster_client.test.ts @@ -0,0 +1,41 @@ +/* + * 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 { elasticsearchClientMock } from './mocks'; +import { ScopedClusterClient } from './scoped_cluster_client'; + +describe('ScopedClusterClient', () => { + it('uses the internal client passed in the constructor', () => { + const internalClient = elasticsearchClientMock.createElasticSearchClient(); + const scopedClient = elasticsearchClientMock.createElasticSearchClient(); + + const scopedClusterClient = new ScopedClusterClient(internalClient, scopedClient); + + expect(scopedClusterClient.asInternalUser).toBe(internalClient); + }); + + it('uses the scoped client passed in the constructor', () => { + const internalClient = elasticsearchClientMock.createElasticSearchClient(); + const scopedClient = elasticsearchClientMock.createElasticSearchClient(); + + const scopedClusterClient = new ScopedClusterClient(internalClient, scopedClient); + + expect(scopedClusterClient.asCurrentUser).toBe(scopedClient); + }); +}); diff --git a/src/core/server/elasticsearch/client/scoped_cluster_client.ts b/src/core/server/elasticsearch/client/scoped_cluster_client.ts new file mode 100644 index 0000000000000..1af7948a65e16 --- /dev/null +++ b/src/core/server/elasticsearch/client/scoped_cluster_client.ts @@ -0,0 +1,49 @@ +/* + * 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 { ElasticsearchClient } from './types'; + +/** + * Serves the same purpose as the normal {@link ClusterClient | cluster client} but exposes + * an additional `asCurrentUser` method that doesn't use credentials of the Kibana internal + * user (as `asInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers + * extracted from the current user request to the API instead. + * + * @public + **/ +export interface IScopedClusterClient { + /** + * A {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster + * on behalf of the internal Kibana user. + */ + readonly asInternalUser: ElasticsearchClient; + /** + * A {@link ElasticsearchClient | client} to be used to query the elasticsearch cluster + * on behalf of the user that initiated the request to the Kibana server. + */ + readonly asCurrentUser: ElasticsearchClient; +} + +/** @internal **/ +export class ScopedClusterClient implements IScopedClusterClient { + constructor( + public readonly asInternalUser: ElasticsearchClient, + public readonly asCurrentUser: ElasticsearchClient + ) {} +} diff --git a/src/core/server/elasticsearch/client/types.ts b/src/core/server/elasticsearch/client/types.ts new file mode 100644 index 0000000000000..934120c330e92 --- /dev/null +++ b/src/core/server/elasticsearch/client/types.ts @@ -0,0 +1,42 @@ +/* + * 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 type { Client } from '@elastic/elasticsearch'; +import type { + ApiResponse, + TransportRequestOptions, + TransportRequestParams, +} from '@elastic/elasticsearch/lib/Transport'; + +/** + * Client used to query the elasticsearch cluster. + * + * @public + */ +export type ElasticsearchClient = Omit< + Client, + 'connectionPool' | 'transport' | 'serializer' | 'extend' | 'helpers' | 'child' | 'close' +> & { + transport: { + request( + params: TransportRequestParams, + options?: TransportRequestOptions + ): Promise; + }; +}; diff --git a/src/core/server/elasticsearch/elasticsearch_service.mock.ts b/src/core/server/elasticsearch/elasticsearch_service.mock.ts index f524781de4c7e..b97f6df6b0afc 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.mock.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.mock.ts @@ -19,6 +19,11 @@ import { BehaviorSubject } from 'rxjs'; import { ILegacyClusterClient, ILegacyCustomClusterClient } from './legacy'; +import { + elasticsearchClientMock, + ClusterClientMock, + CustomClusterClientMock, +} from './client/mocks'; import { legacyClientMock } from './legacy/mocks'; import { ElasticsearchConfig } from './elasticsearch_config'; import { ElasticsearchService } from './elasticsearch_service'; @@ -33,6 +38,13 @@ interface MockedElasticSearchServiceSetup { }; } +type MockedElasticSearchServiceStart = MockedElasticSearchServiceSetup; + +interface MockedInternalElasticSearchServiceStart extends MockedElasticSearchServiceStart { + client: ClusterClientMock; + createClient: jest.MockedFunction<() => CustomClusterClientMock>; +} + const createSetupContractMock = () => { const setupContract: MockedElasticSearchServiceSetup = { legacy: { @@ -47,8 +59,6 @@ const createSetupContractMock = () => { return setupContract; }; -type MockedElasticSearchServiceStart = MockedElasticSearchServiceSetup; - const createStartContractMock = () => { const startContract: MockedElasticSearchServiceStart = { legacy: { @@ -60,6 +70,17 @@ const createStartContractMock = () => { startContract.legacy.client.asScoped.mockReturnValue( legacyClientMock.createScopedClusterClient() ); + return startContract; +}; + +const createInternalStartContractMock = () => { + const startContract: MockedInternalElasticSearchServiceStart = { + ...createStartContractMock(), + client: elasticsearchClientMock.createClusterClient(), + createClient: jest.fn(), + }; + + startContract.createClient.mockReturnValue(elasticsearchClientMock.createCustomClusterClient()); return startContract; }; @@ -100,7 +121,7 @@ const createMock = () => { stop: jest.fn(), }; mocked.setup.mockResolvedValue(createInternalSetupContractMock()); - mocked.start.mockResolvedValueOnce(createStartContractMock()); + mocked.start.mockResolvedValueOnce(createInternalStartContractMock()); mocked.stop.mockResolvedValue(); return mocked; }; @@ -109,6 +130,7 @@ export const elasticsearchServiceMock = { create: createMock, createInternalSetup: createInternalSetupContractMock, createSetup: createSetupContractMock, + createInternalStart: createInternalStartContractMock, createStart: createStartContractMock, createLegacyClusterClient: legacyClientMock.createClusterClient, createLegacyCustomClusterClient: legacyClientMock.createCustomClusterClient, diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts b/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts index c30230a7847a0..955ab197ffce1 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.mocks.ts @@ -17,5 +17,8 @@ * under the License. */ +export const MockLegacyClusterClient = jest.fn(); +jest.mock('./legacy/cluster_client', () => ({ LegacyClusterClient: MockLegacyClusterClient })); + export const MockClusterClient = jest.fn(); -jest.mock('./legacy/cluster_client', () => ({ LegacyClusterClient: MockClusterClient })); +jest.mock('./client/cluster_client', () => ({ ClusterClient: MockClusterClient })); diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index 8f3dc5688f6fc..b36af2a7e4671 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -19,7 +19,7 @@ import { first } from 'rxjs/operators'; -import { MockClusterClient } from './elasticsearch_service.test.mocks'; +import { MockLegacyClusterClient, MockClusterClient } from './elasticsearch_service.test.mocks'; import { BehaviorSubject } from 'rxjs'; import { Env } from '../config'; @@ -28,9 +28,11 @@ import { CoreContext } from '../core_context'; import { configServiceMock } from '../config/config_service.mock'; import { loggingSystemMock } from '../logging/logging_system.mock'; import { httpServiceMock } from '../http/http_service.mock'; +import { auditTrailServiceMock } from '../audit_trail/audit_trail_service.mock'; import { ElasticsearchConfig } from './elasticsearch_config'; import { ElasticsearchService } from './elasticsearch_service'; import { elasticsearchServiceMock } from './elasticsearch_service.mock'; +import { elasticsearchClientMock } from './client/mocks'; import { duration } from 'moment'; const delay = async (durationMs: number) => @@ -38,9 +40,12 @@ const delay = async (durationMs: number) => let elasticsearchService: ElasticsearchService; const configService = configServiceMock.create(); -const deps = { +const setupDeps = { http: httpServiceMock.createInternalSetupContract(), }; +const startDeps = { + auditTrail: auditTrailServiceMock.createStartContract(), +}; configService.atPath.mockReturnValue( new BehaviorSubject({ hosts: ['http://1.2.3.4'], @@ -56,49 +61,58 @@ configService.atPath.mockReturnValue( let env: Env; let coreContext: CoreContext; const logger = loggingSystemMock.create(); + +let mockClusterClientInstance: ReturnType; +let mockLegacyClusterClientInstance: ReturnType; + beforeEach(() => { env = Env.createDefault(getEnvOptions()); coreContext = { coreId: Symbol(), env, logger, configService: configService as any }; elasticsearchService = new ElasticsearchService(coreContext); + + MockLegacyClusterClient.mockClear(); + MockClusterClient.mockClear(); + + mockLegacyClusterClientInstance = elasticsearchServiceMock.createLegacyCustomClusterClient(); + MockLegacyClusterClient.mockImplementation(() => mockLegacyClusterClientInstance); + mockClusterClientInstance = elasticsearchClientMock.createCustomClusterClient(); + MockClusterClient.mockImplementation(() => mockClusterClientInstance); }); afterEach(() => jest.clearAllMocks()); describe('#setup', () => { it('returns legacy Elasticsearch config as a part of the contract', async () => { - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); await expect(setupContract.legacy.config$.pipe(first()).toPromise()).resolves.toBeInstanceOf( ElasticsearchConfig ); }); - it('returns elasticsearch client as a part of the contract', async () => { - const mockClusterClientInstance = elasticsearchServiceMock.createLegacyClusterClient(); - MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance); - - const setupContract = await elasticsearchService.setup(deps); + it('returns legacy elasticsearch client as a part of the contract', async () => { + const setupContract = await elasticsearchService.setup(setupDeps); const client = setupContract.legacy.client; - expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); await client.callAsInternalUser('any'); - expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); }); - describe('#createClient', () => { + describe('#createLegacyClient', () => { it('allows to specify config properties', async () => { - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); - const mockClusterClientInstance = { close: jest.fn() }; - MockClusterClient.mockImplementation(() => mockClusterClientInstance); + // reset all mocks called during setup phase + MockLegacyClusterClient.mockClear(); const customConfig = { logQueries: true }; const clusterClient = setupContract.legacy.createClient('some-custom-type', customConfig); - expect(clusterClient).toBe(mockClusterClientInstance); + expect(clusterClient).toBe(mockLegacyClusterClientInstance); - expect(MockClusterClient).toHaveBeenCalledWith( + expect(MockLegacyClusterClient).toHaveBeenCalledWith( expect.objectContaining(customConfig), expect.objectContaining({ context: ['elasticsearch', 'some-custom-type'] }), expect.any(Function), @@ -107,9 +121,10 @@ describe('#setup', () => { }); it('falls back to elasticsearch default config values if property not specified', async () => { - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); + // reset all mocks called during setup phase - MockClusterClient.mockClear(); + MockLegacyClusterClient.mockClear(); const customConfig = { hosts: ['http://8.8.8.8'], @@ -118,7 +133,7 @@ describe('#setup', () => { }; setupContract.legacy.createClient('some-custom-type', customConfig); - const config = MockClusterClient.mock.calls[0][0]; + const config = MockLegacyClusterClient.mock.calls[0][0]; expect(config).toMatchInlineSnapshot(` Object { "healthCheckDelay": "PT0.01S", @@ -137,13 +152,14 @@ describe('#setup', () => { `); }); it('falls back to elasticsearch config if custom config not passed', async () => { - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); + // reset all mocks called during setup phase - MockClusterClient.mockClear(); + MockLegacyClusterClient.mockClear(); setupContract.legacy.createClient('another-type'); - const config = MockClusterClient.mock.calls[0][0]; + const config = MockLegacyClusterClient.mock.calls[0][0]; expect(config).toMatchInlineSnapshot(` Object { "healthCheckDelay": "PT0.01S", @@ -178,9 +194,10 @@ describe('#setup', () => { } as any) ); elasticsearchService = new ElasticsearchService(coreContext); - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); + // reset all mocks called during setup phase - MockClusterClient.mockClear(); + MockLegacyClusterClient.mockClear(); const customConfig = { hosts: ['http://8.8.8.8'], @@ -189,7 +206,7 @@ describe('#setup', () => { }; setupContract.legacy.createClient('some-custom-type', customConfig); - const config = MockClusterClient.mock.calls[0][0]; + const config = MockLegacyClusterClient.mock.calls[0][0]; expect(config).toMatchInlineSnapshot(` Object { "healthCheckDelay": "PT2S", @@ -210,66 +227,142 @@ describe('#setup', () => { }); it('esNodeVersionCompatibility$ only starts polling when subscribed to', async (done) => { - const clusterClientInstance = elasticsearchServiceMock.createLegacyClusterClient(); - MockClusterClient.mockImplementationOnce(() => clusterClientInstance); + mockLegacyClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error()); - clusterClientInstance.callAsInternalUser.mockRejectedValue(new Error()); - - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); await delay(10); - expect(clusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); setupContract.esNodesCompatibility$.subscribe(() => { - expect(clusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); done(); }); }); it('esNodeVersionCompatibility$ stops polling when unsubscribed from', async (done) => { - const mockClusterClientInstance = elasticsearchServiceMock.createLegacyClusterClient(); - MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance); - - mockClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error()); + mockLegacyClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error()); - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); - expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(0); const sub = setupContract.esNodesCompatibility$.subscribe(async () => { sub.unsubscribe(); await delay(100); - expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); done(); }); }); }); -describe('#stop', () => { - it('stops both admin and data clients', async () => { - const mockClusterClientInstance = { close: jest.fn() }; - MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance); +describe('#start', () => { + it('throws if called before `setup`', async () => { + expect(() => elasticsearchService.start(startDeps)).rejects.toMatchInlineSnapshot( + `[Error: ElasticsearchService needs to be setup before calling start]` + ); + }); + + it('returns elasticsearch client as a part of the contract', async () => { + await elasticsearchService.setup(setupDeps); + const startContract = await elasticsearchService.start(startDeps); + const client = startContract.client; + + expect(client.asInternalUser).toBe(mockClusterClientInstance.asInternalUser); + }); + + describe('#createClient', () => { + it('allows to specify config properties', async () => { + await elasticsearchService.setup(setupDeps); + const startContract = await elasticsearchService.start(startDeps); + + // reset all mocks called during setup phase + MockClusterClient.mockClear(); + + const customConfig = { logQueries: true }; + const clusterClient = startContract.createClient('custom-type', customConfig); + + expect(clusterClient).toBe(mockClusterClientInstance); + + expect(MockClusterClient).toHaveBeenCalledTimes(1); + expect(MockClusterClient).toHaveBeenCalledWith( + expect.objectContaining(customConfig), + expect.objectContaining({ context: ['elasticsearch', 'custom-type'] }), + expect.any(Function) + ); + }); + it('creates a new client on each call', async () => { + await elasticsearchService.setup(setupDeps); + const startContract = await elasticsearchService.start(startDeps); + + // reset all mocks called during setup phase + MockClusterClient.mockClear(); + + const customConfig = { logQueries: true }; + + startContract.createClient('custom-type', customConfig); + startContract.createClient('another-type', customConfig); + + expect(MockClusterClient).toHaveBeenCalledTimes(2); + }); + + it('falls back to elasticsearch default config values if property not specified', async () => { + await elasticsearchService.setup(setupDeps); + const startContract = await elasticsearchService.start(startDeps); + + // reset all mocks called during setup phase + MockClusterClient.mockClear(); + + const customConfig = { + hosts: ['http://8.8.8.8'], + logQueries: true, + ssl: { certificate: 'certificate-value' }, + }; + + startContract.createClient('some-custom-type', customConfig); + const config = MockClusterClient.mock.calls[0][0]; - await elasticsearchService.setup(deps); + expect(config).toMatchInlineSnapshot(` + Object { + "healthCheckDelay": "PT0.01S", + "hosts": Array [ + "http://8.8.8.8", + ], + "logQueries": true, + "requestHeadersWhitelist": Array [ + undefined, + ], + "ssl": Object { + "certificate": "certificate-value", + "verificationMode": "none", + }, + } + `); + }); + }); +}); + +describe('#stop', () => { + it('stops both legacy and new clients', async () => { + await elasticsearchService.setup(setupDeps); + await elasticsearchService.start(startDeps); await elasticsearchService.stop(); + expect(mockLegacyClusterClientInstance.close).toHaveBeenCalledTimes(1); expect(mockClusterClientInstance.close).toHaveBeenCalledTimes(1); }); it('stops pollEsNodeVersions even if there are active subscriptions', async (done) => { expect.assertions(2); - const mockClusterClientInstance = elasticsearchServiceMock.createLegacyCustomClusterClient(); - - MockClusterClient.mockImplementationOnce(() => mockClusterClientInstance); - mockClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error()); + mockLegacyClusterClientInstance.callAsInternalUser.mockRejectedValue(new Error()); - const setupContract = await elasticsearchService.setup(deps); + const setupContract = await elasticsearchService.setup(setupDeps); setupContract.esNodesCompatibility$.subscribe(async () => { - expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); await elasticsearchService.stop(); await delay(100); - expect(mockClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); + expect(mockLegacyClusterClientInstance.callAsInternalUser).toHaveBeenCalledTimes(1); done(); }); }); diff --git a/src/core/server/elasticsearch/elasticsearch_service.ts b/src/core/server/elasticsearch/elasticsearch_service.ts index 4ea10f6ae4e2e..9b05fb9887a3b 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.ts @@ -17,17 +17,8 @@ * under the License. */ -import { ConnectableObservable, Observable, Subscription, Subject } from 'rxjs'; -import { - filter, - first, - map, - publishReplay, - switchMap, - take, - shareReplay, - takeUntil, -} from 'rxjs/operators'; +import { Observable, Subject } from 'rxjs'; +import { first, map, shareReplay, takeUntil } from 'rxjs/operators'; import { CoreService } from '../../types'; import { merge } from '../../utils'; @@ -35,28 +26,17 @@ import { CoreContext } from '../core_context'; import { Logger } from '../logging'; import { LegacyClusterClient, - ILegacyClusterClient, ILegacyCustomClusterClient, LegacyElasticsearchClientConfig, - LegacyCallAPIOptions, } from './legacy'; +import { ClusterClient, ICustomClusterClient, ElasticsearchClientConfig } from './client'; import { ElasticsearchConfig, ElasticsearchConfigType } from './elasticsearch_config'; import { InternalHttpServiceSetup, GetAuthHeaders } from '../http/'; import { AuditTrailStart, AuditorFactory } from '../audit_trail'; -import { - InternalElasticsearchServiceSetup, - ElasticsearchServiceStart, - ScopeableRequest, -} from './types'; +import { InternalElasticsearchServiceSetup, InternalElasticsearchServiceStart } from './types'; import { pollEsNodesVersion } from './version_check/ensure_es_version'; import { calculateStatus$ } from './status'; -/** @internal */ -interface CoreClusterClients { - config: ElasticsearchConfig; - client: LegacyClusterClient; -} - interface SetupDeps { http: InternalHttpServiceSetup; } @@ -67,18 +47,21 @@ interface StartDeps { /** @internal */ export class ElasticsearchService - implements CoreService { + implements CoreService { private readonly log: Logger; private readonly config$: Observable; - private subscription?: Subscription; private auditorFactory?: AuditorFactory; private stop$ = new Subject(); private kibanaVersion: string; - private createClient?: ( + private getAuthHeaders?: GetAuthHeaders; + + private createLegacyCustomClient?: ( type: string, clientConfig?: Partial ) => ILegacyCustomClusterClient; - private client?: ILegacyClusterClient; + private legacyClient?: LegacyClusterClient; + + private client?: ClusterClient; constructor(private readonly coreContext: CoreContext) { this.kibanaVersion = coreContext.env.packageInfo.version; @@ -91,139 +74,86 @@ export class ElasticsearchService public async setup(deps: SetupDeps): Promise { this.log.debug('Setting up elasticsearch service'); - const clients$ = this.config$.pipe( - filter(() => { - if (this.subscription !== undefined) { - this.log.error('Clients cannot be changed after they are created'); - return false; - } - - return true; - }), - switchMap( - (config) => - new Observable((subscriber) => { - this.log.debug('Creating elasticsearch client'); - - const coreClients = { - config, - client: this.createClusterClient('data', config, deps.http.getAuthHeaders), - }; - - subscriber.next(coreClients); - - return () => { - this.log.debug('Closing elasticsearch client'); - - coreClients.client.close(); - }; - }) - ), - publishReplay(1) - ) as ConnectableObservable; - - this.subscription = clients$.connect(); - const config = await this.config$.pipe(first()).toPromise(); - const client$ = clients$.pipe(map((clients) => clients.client)); - - const client = { - async callAsInternalUser( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) { - const _client = await client$.pipe(take(1)).toPromise(); - return await _client.callAsInternalUser(endpoint, clientParams, options); - }, - asScoped(request: ScopeableRequest) { - const _clientPromise = client$.pipe(take(1)).toPromise(); - return { - async callAsInternalUser( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) { - const _client = await _clientPromise; - return await _client - .asScoped(request) - .callAsInternalUser(endpoint, clientParams, options); - }, - async callAsCurrentUser( - endpoint: string, - clientParams: Record = {}, - options?: LegacyCallAPIOptions - ) { - const _client = await _clientPromise; - return await _client - .asScoped(request) - .callAsCurrentUser(endpoint, clientParams, options); - }, - }; - }, - }; - - this.client = client; + this.getAuthHeaders = deps.http.getAuthHeaders; + this.legacyClient = this.createLegacyClusterClient('data', config); const esNodesCompatibility$ = pollEsNodesVersion({ - callWithInternalUser: client.callAsInternalUser, + callWithInternalUser: this.legacyClient.callAsInternalUser, log: this.log, ignoreVersionMismatch: config.ignoreVersionMismatch, esVersionCheckInterval: config.healthCheckDelay.asMilliseconds(), kibanaVersion: this.kibanaVersion, }).pipe(takeUntil(this.stop$), shareReplay({ refCount: true, bufferSize: 1 })); - this.createClient = ( - type: string, - clientConfig: Partial = {} - ) => { + this.createLegacyCustomClient = (type, clientConfig = {}) => { const finalConfig = merge({}, config, clientConfig); - return this.createClusterClient(type, finalConfig, deps.http.getAuthHeaders); + return this.createLegacyClusterClient(type, finalConfig); }; return { legacy: { - config$: clients$.pipe(map((clients) => clients.config)), - client, - createClient: this.createClient, + config$: this.config$, + client: this.legacyClient, + createClient: this.createLegacyCustomClient, }, esNodesCompatibility$, status$: calculateStatus$(esNodesCompatibility$), }; } - public async start({ auditTrail }: StartDeps) { + public async start({ auditTrail }: StartDeps): Promise { this.auditorFactory = auditTrail; - if (typeof this.client === 'undefined' || typeof this.createClient === 'undefined') { + if (!this.legacyClient || !this.createLegacyCustomClient) { throw new Error('ElasticsearchService needs to be setup before calling start'); - } else { - return { - legacy: { - client: this.client, - createClient: this.createClient, - }, - }; } + + const config = await this.config$.pipe(first()).toPromise(); + this.client = this.createClusterClient('data', config); + + const createClient = ( + type: string, + clientConfig: Partial = {} + ): ICustomClusterClient => { + const finalConfig = merge({}, config, clientConfig); + return this.createClusterClient(type, finalConfig); + }; + + return { + client: this.client, + createClient, + legacy: { + client: this.legacyClient, + createClient: this.createLegacyCustomClient, + }, + }; } public async stop() { this.log.debug('Stopping elasticsearch service'); - if (this.subscription !== undefined) { - this.subscription.unsubscribe(); - } this.stop$.next(); + if (this.client) { + this.client.close(); + } + if (this.legacyClient) { + this.legacyClient.close(); + } } - private createClusterClient( - type: string, - config: LegacyElasticsearchClientConfig, - getAuthHeaders?: GetAuthHeaders - ) { + private createClusterClient(type: string, config: ElasticsearchClientConfig) { + return new ClusterClient( + config, + this.coreContext.logger.get('elasticsearch', type), + this.getAuthHeaders + ); + } + + private createLegacyClusterClient(type: string, config: LegacyElasticsearchClientConfig) { return new LegacyClusterClient( config, this.coreContext.logger.get('elasticsearch', type), this.getAuditorFactory, - getAuthHeaders + this.getAuthHeaders ); } diff --git a/src/core/server/elasticsearch/index.ts b/src/core/server/elasticsearch/index.ts index f5f5f5cc7b6f8..8bb77b5dfdee0 100644 --- a/src/core/server/elasticsearch/index.ts +++ b/src/core/server/elasticsearch/index.ts @@ -25,7 +25,15 @@ export { ElasticsearchServiceStart, ElasticsearchStatusMeta, InternalElasticsearchServiceSetup, + InternalElasticsearchServiceStart, FakeRequest, ScopeableRequest, } from './types'; export * from './legacy'; +export { + IClusterClient, + ICustomClusterClient, + ElasticsearchClientConfig, + ElasticsearchClient, + IScopedClusterClient, +} from './client'; diff --git a/src/core/server/elasticsearch/types.ts b/src/core/server/elasticsearch/types.ts index 2b4ba4b0a0a55..40399aecbc446 100644 --- a/src/core/server/elasticsearch/types.ts +++ b/src/core/server/elasticsearch/types.ts @@ -26,6 +26,7 @@ import { ILegacyClusterClient, ILegacyCustomClusterClient, } from './legacy'; +import { IClusterClient, ICustomClusterClient, ElasticsearchClientConfig } from './client'; import { NodesVersionCompatibility } from './version_check/ensure_es_version'; import { ServiceStatus } from '../status'; @@ -80,6 +81,16 @@ export interface ElasticsearchServiceSetup { }; } +/** @internal */ +export interface InternalElasticsearchServiceSetup { + // Required for the BWC with the legacy Kibana only. + readonly legacy: ElasticsearchServiceSetup['legacy'] & { + readonly config$: Observable; + }; + esNodesCompatibility$: Observable; + status$: Observable>; +} + /** * @public */ @@ -103,7 +114,7 @@ export interface ElasticsearchServiceStart { * * @example * ```js - * const client = elasticsearch.createCluster('my-app-name', config); + * const client = elasticsearch.legacy.createClient('my-app-name', config); * const data = await client.callAsInternalUser(); * ``` */ @@ -113,26 +124,51 @@ export interface ElasticsearchServiceStart { ) => ILegacyCustomClusterClient; /** - * A pre-configured Elasticsearch client. All Elasticsearch config value changes are processed under the hood. - * See {@link ILegacyClusterClient}. + * A pre-configured {@link ILegacyClusterClient | legacy Elasticsearch client}. * * @example * ```js - * const client = core.elasticsearch.client; + * const client = core.elasticsearch.legacy.client; * ``` */ readonly client: ILegacyClusterClient; }; } -/** @internal */ -export interface InternalElasticsearchServiceSetup { - // Required for the BWC with the legacy Kibana only. - readonly legacy: ElasticsearchServiceSetup['legacy'] & { - readonly config$: Observable; - }; - esNodesCompatibility$: Observable; - status$: Observable>; +/** + * @internal + */ +export interface InternalElasticsearchServiceStart extends ElasticsearchServiceStart { + /** + * A pre-configured {@link IClusterClient | Elasticsearch client} + * + * @example + * ```js + * const client = core.elasticsearch.client; + * ``` + */ + readonly client: IClusterClient; + /** + * Create application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}. + * + * @param type Unique identifier of the client + * @param clientConfig A config consists of Elasticsearch JS client options and + * valid sub-set of Elasticsearch service config. + * We fill all the missing properties in the `clientConfig` using the default + * Elasticsearch config so that we don't depend on default values set and + * controlled by underlying Elasticsearch JS client. + * We don't run validation against the passed config and expect it to be valid. + * + * @example + * ```js + * const client = elasticsearch.createClient('my-app-name', config); + * const data = await client.asInternalUser().search(); + * ``` + */ + readonly createClient: ( + type: string, + clientConfig?: Partial + ) => ICustomClusterClient; } /** @public */ diff --git a/src/core/server/elasticsearch/version_check/ensure_es_version.ts b/src/core/server/elasticsearch/version_check/ensure_es_version.ts index 3f562dac22a02..dc56d982d7b4a 100644 --- a/src/core/server/elasticsearch/version_check/ensure_es_version.ts +++ b/src/core/server/elasticsearch/version_check/ensure_es_version.ts @@ -29,7 +29,7 @@ import { esVersionEqualsKibana, } from './es_kibana_version_compatability'; import { Logger } from '../../logging'; -import { LegacyAPICaller } from '..'; +import { LegacyAPICaller } from '../legacy'; export interface PollEsNodesVersionOptions { callWithInternalUser: LegacyAPICaller; diff --git a/src/core/server/internal_types.ts b/src/core/server/internal_types.ts index 24080f2529beb..4f4bf50f07b8e 100644 --- a/src/core/server/internal_types.ts +++ b/src/core/server/internal_types.ts @@ -22,7 +22,10 @@ import { Type } from '@kbn/config-schema'; import { CapabilitiesSetup, CapabilitiesStart } from './capabilities'; import { ConfigDeprecationProvider } from './config'; import { ContextSetup } from './context'; -import { InternalElasticsearchServiceSetup, ElasticsearchServiceStart } from './elasticsearch'; +import { + InternalElasticsearchServiceSetup, + InternalElasticsearchServiceStart, +} from './elasticsearch'; import { InternalHttpServiceSetup, InternalHttpServiceStart } from './http'; import { InternalSavedObjectsServiceSetup, @@ -58,7 +61,7 @@ export interface InternalCoreSetup { */ export interface InternalCoreStart { capabilities: CapabilitiesStart; - elasticsearch: ElasticsearchServiceStart; + elasticsearch: InternalElasticsearchServiceStart; http: InternalHttpServiceStart; metrics: InternalMetricsServiceStart; savedObjects: InternalSavedObjectsServiceStart; diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index 75ca88627814b..a3dbb279d19eb 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -177,7 +177,7 @@ function createInternalCoreSetupMock() { function createInternalCoreStartMock() { const startDeps: InternalCoreStart = { capabilities: capabilitiesServiceMock.createStartContract(), - elasticsearch: elasticsearchServiceMock.createStart(), + elasticsearch: elasticsearchServiceMock.createInternalStart(), http: httpServiceMock.createInternalStartContract(), metrics: metricsServiceMock.createStartContract(), savedObjects: savedObjectsServiceMock.createInternalStartContract(), diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index b0f9ff6fd5ebd..a6dd13a12b527 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -210,7 +210,9 @@ export function createPluginStartContext( capabilities: { resolveCapabilities: deps.capabilities.resolveCapabilities, }, - elasticsearch: deps.elasticsearch, + elasticsearch: { + legacy: deps.elasticsearch.legacy, + }, http: { auth: deps.http.auth, basePath: deps.http.basePath, diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index ea95329bf8fa4..107edf11bb6f4 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -4,6 +4,7 @@ ```ts +import { ApiResponse } from '@elastic/elasticsearch/lib/Transport'; import Boom from 'boom'; import { BulkIndexDocumentsParams } from 'elasticsearch'; import { CatAliasesParams } from 'elasticsearch'; @@ -21,6 +22,8 @@ import { CatTasksParams } from 'elasticsearch'; import { CatThreadPoolParams } from 'elasticsearch'; import { ClearScrollParams } from 'elasticsearch'; import { Client } from 'elasticsearch'; +import { Client as Client_2 } from '@elastic/elasticsearch'; +import { ClientOptions } from '@elastic/elasticsearch'; import { ClusterAllocationExplainParams } from 'elasticsearch'; import { ClusterGetSettingsParams } from 'elasticsearch'; import { ClusterHealthParams } from 'elasticsearch'; @@ -138,6 +141,8 @@ import { TasksCancelParams } from 'elasticsearch'; import { TasksGetParams } from 'elasticsearch'; import { TasksListParams } from 'elasticsearch'; import { TermvectorsParams } from 'elasticsearch'; +import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; +import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; import { Type } from '@kbn/config-schema'; import { TypeOf } from '@kbn/config-schema'; import { UpdateDocumentByQueryParams } from 'elasticsearch'; diff --git a/x-pack/test/api_integration/apis/fleet/agents/acks.ts b/x-pack/test/api_integration/apis/fleet/agents/acks.ts index 45833012cb475..e8381aa9d59ea 100644 --- a/x-pack/test/api_integration/apis/fleet/agents/acks.ts +++ b/x-pack/test/api_integration/apis/fleet/agents/acks.ts @@ -22,7 +22,7 @@ export default function (providerContext: FtrProviderContext) { before(async () => { await esArchiver.loadIfNeeded('fleet/agents'); - const { body: apiKeyBody } = await esClient.security.createApiKey({ + const { body: apiKeyBody } = await esClient.security.createApiKey({ body: { name: `test access api key: ${uuid.v4()}`, }, diff --git a/x-pack/test/api_integration/apis/fleet/agents/checkin.ts b/x-pack/test/api_integration/apis/fleet/agents/checkin.ts index d24f7f495a06c..8942deafdd83c 100644 --- a/x-pack/test/api_integration/apis/fleet/agents/checkin.ts +++ b/x-pack/test/api_integration/apis/fleet/agents/checkin.ts @@ -22,7 +22,7 @@ export default function (providerContext: FtrProviderContext) { before(async () => { await esArchiver.loadIfNeeded('fleet/agents'); - const { body: apiKeyBody } = await esClient.security.createApiKey({ + const { body: apiKeyBody } = await esClient.security.createApiKey({ body: { name: `test access api key: ${uuid.v4()}`, }, diff --git a/x-pack/test/api_integration/apis/fleet/agents/enroll.ts b/x-pack/test/api_integration/apis/fleet/agents/enroll.ts index b4d23a2392320..e9f7471f6437e 100644 --- a/x-pack/test/api_integration/apis/fleet/agents/enroll.ts +++ b/x-pack/test/api_integration/apis/fleet/agents/enroll.ts @@ -25,7 +25,7 @@ export default function (providerContext: FtrProviderContext) { before(async () => { await esArchiver.loadIfNeeded('fleet/agents'); - const { body: apiKeyBody } = await esClient.security.createApiKey({ + const { body: apiKeyBody } = await esClient.security.createApiKey({ body: { name: `test access api key: ${uuid.v4()}`, }, diff --git a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/status.ts b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/status.ts index 76cea64bffc1c..d13b9836f25a1 100644 --- a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/status.ts +++ b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/status.ts @@ -6,6 +6,7 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../api_integration/ftr_provider_context'; +import { ClusterStateAPIResponse } from '../../../plugins/upgrade_assistant/common/types'; import { getIndexStateFromClusterState } from '../../../plugins/upgrade_assistant/common/get_index_state_from_cluster_state'; // eslint-disable-next-line import/no-default-export @@ -28,7 +29,7 @@ export default function ({ getService }: FtrProviderContext) { it('the _cluster/state endpoint is still what we expect', async () => { await esArchiver.load('upgrade_assistant/reindex'); await es.indices.close({ index: '7.0-data' }); - const result = await es.cluster.state({ + const result = await es.cluster.state({ index: '7.0-data', metric: 'metadata', }); diff --git a/yarn.lock b/yarn.lock index acf7c3a1e8754..2d575634686a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2172,6 +2172,17 @@ redux-immutable-state-invariant "^2.1.0" redux-logger "^3.0.6" +"@elastic/elasticsearch@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.8.0.tgz#3f9ee54fe8ef79874ebd231db03825fa500a7111" + integrity sha512-rUOTNN1At0KoN0Fcjd6+J7efghuURnoMTB/od9EMK6Mcdebi6N3z5ulShTsKRn6OanS9Eq3l/OmheQY1Y+WLcg== + dependencies: + debug "^4.1.1" + decompress-response "^4.2.0" + ms "^2.1.1" + pump "^3.0.0" + secure-json-parse "^2.1.0" + "@elastic/elasticsearch@^7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.4.0.tgz#57f4066acf25e9d4e9b4f6376088433aae6f25d4" @@ -27784,6 +27795,11 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" +secure-json-parse@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.1.0.tgz#ae76f5624256b5c497af887090a5d9e156c9fb20" + integrity sha512-GckO+MS/wT4UogDyoI/H/S1L0MCcKS1XX/vp48wfmU7Nw4woBmb8mIpu4zPBQjKlRT88/bt9xdoV4111jPpNJA== + seedrandom@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" From 5326d2c614f3aefbf4dde7af518182c3c0d6acf1 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Wed, 8 Jul 2020 12:14:42 -0400 Subject: [PATCH 18/38] [ML] DF Analytics functional tests: re-enable regression, classification, and outlier creation (#71006) * update mml test. re-enable reg, class, and outlier creation tests * remove unnecessary second argument --- .../ml/data_frame_analytics/classification_creation.ts | 8 ++++---- .../data_frame_analytics/outlier_detection_creation.ts | 7 +++---- .../apps/ml/data_frame_analytics/regression_creation.ts | 8 ++++---- .../services/ml/data_frame_analytics_creation.ts | 9 +++++++++ 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts index 4a79610cadbde..2c6edeba2129f 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation.ts @@ -10,8 +10,8 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); - // flaky test https://github.com/elastic/kibana/issues/70455 - describe.skip('classification creation', function () { + + describe('classification creation', function () { before(async () => { await esArchiver.loadIfNeeded('ml/bm_classification'); await ml.testResources.createIndexPatternIfNeeded('ft_bank_marketing', '@timestamp'); @@ -96,9 +96,9 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsCreation.continueToAdditionalOptionsStep(); }); - it('inputs the model memory limit', async () => { + it('accepts the suggested model memory limit', async () => { await ml.dataFrameAnalyticsCreation.assertModelMemoryInputExists(); - await ml.dataFrameAnalyticsCreation.setModelMemory(testData.modelMemory); + await ml.dataFrameAnalyticsCreation.assertModelMemoryInputPopulated(); }); it('continues to the details step', async () => { diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts index 65e6dc9b4ea74..6cdb9caa1e2db 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/outlier_detection_creation.ts @@ -11,8 +11,7 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); - // Flaky: https://github.com/elastic/kibana/issues/70906 - describe.skip('outlier detection creation', function () { + describe('outlier detection creation', function () { before(async () => { await esArchiver.loadIfNeeded('ml/ihp_outlier'); await ml.testResources.createIndexPatternIfNeeded('ft_ihp_outlier', '@timestamp'); @@ -93,9 +92,9 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsCreation.continueToAdditionalOptionsStep(); }); - it('inputs the model memory limit', async () => { + it('accepts the suggested model memory limit', async () => { await ml.dataFrameAnalyticsCreation.assertModelMemoryInputExists(); - await ml.dataFrameAnalyticsCreation.setModelMemory(testData.modelMemory); + await ml.dataFrameAnalyticsCreation.assertModelMemoryInputPopulated(); }); it('continues to the details step', async () => { diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts index 33f0ee9cd99ac..03117d4cc419d 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/regression_creation.ts @@ -10,8 +10,8 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const ml = getService('ml'); - // flaky test https://github.com/elastic/kibana/issues/70455 - describe.skip('regression creation', function () { + + describe('regression creation', function () { before(async () => { await esArchiver.loadIfNeeded('ml/egs_regression'); await ml.testResources.createIndexPatternIfNeeded('ft_egs_regression', '@timestamp'); @@ -96,9 +96,9 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsCreation.continueToAdditionalOptionsStep(); }); - it('inputs the model memory limit', async () => { + it('accepts the suggested model memory limit', async () => { await ml.dataFrameAnalyticsCreation.assertModelMemoryInputExists(); - await ml.dataFrameAnalyticsCreation.setModelMemory(testData.modelMemory); + await ml.dataFrameAnalyticsCreation.assertModelMemoryInputPopulated(); }); it('continues to the details step', async () => { diff --git a/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts b/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts index 918c982de02ed..1b756bbaca5d8 100644 --- a/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts +++ b/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts @@ -306,6 +306,15 @@ export function MachineLearningDataFrameAnalyticsCreationProvider( ); }, + async assertModelMemoryInputPopulated() { + const actualModelMemory = await testSubjects.getAttribute( + 'mlAnalyticsCreateJobWizardModelMemoryInput', + 'value' + ); + + expect(actualModelMemory).not.to.be(''); + }, + async assertPredictionFieldNameValue(expectedValue: string) { const actualPredictedFieldName = await testSubjects.getAttribute( 'mlAnalyticsCreateJobWizardPredictionFieldNameInput', From 93ac059cacc9ebf472a0d67775ed877746266cb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Wed, 8 Jul 2020 17:30:58 +0100 Subject: [PATCH 19/38] [Usage Collector] Fix schema types to allow arrays (#70988) * [Usage Collector] Fix schema types to allow arrays * More and better tests Co-authored-by: Elastic Machine --- .../src/tools/__fixture__/mock_schema.json | 13 +- .../__fixture__/parsed_working_collector.ts | 21 ++ .../extract_collectors.test.ts.snap | 25 ++ .../telemetry_collectors/working_collector.ts | 16 ++ .../server/collector/collector.test.ts | 213 ++++++++++++++++++ .../server/collector/collector.ts | 14 +- 6 files changed, 294 insertions(+), 8 deletions(-) create mode 100644 src/plugins/usage_collection/server/collector/collector.test.ts diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json b/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json index 885fe0e38dacf..e87699825b4e1 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/mock_schema.json @@ -17,7 +17,18 @@ "type": "boolean" } } - } + }, + "my_array": { + "properties": { + "total": { + "type": "number" + }, + "type": { + "type": "boolean" + } + } + }, + "my_str_array": { "type": "keyword" } } } } diff --git a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts index 25e49ea221c94..803bc7f13f59e 100644 --- a/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts +++ b/packages/kbn-telemetry-tools/src/tools/__fixture__/parsed_working_collector.ts @@ -40,6 +40,13 @@ export const parsedWorkingCollector: ParsedUsageCollection = [ type: 'boolean', }, }, + my_array: { + total: { + type: 'number', + }, + type: { type: 'boolean' }, + }, + my_str_array: { type: 'keyword' }, }, }, fetch: { @@ -63,6 +70,20 @@ export const parsedWorkingCollector: ParsedUsageCollection = [ type: 'BooleanKeyword', }, }, + my_array: { + total: { + kind: SyntaxKind.NumberKeyword, + type: 'NumberKeyword', + }, + type: { + kind: SyntaxKind.BooleanKeyword, + type: 'BooleanKeyword', + }, + }, + my_str_array: { + kind: SyntaxKind.StringKeyword, + type: 'StringKeyword', + }, }, }, }, diff --git a/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap b/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap index 44a12dfa9030c..fc933b6c7fd35 100644 --- a/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap +++ b/packages/kbn-telemetry-tools/src/tools/__snapshots__/extract_collectors.test.ts.snap @@ -122,6 +122,16 @@ Array [ "kind": 143, "type": "StringKeyword", }, + "my_array": Object { + "total": Object { + "kind": 140, + "type": "NumberKeyword", + }, + "type": Object { + "kind": 128, + "type": "BooleanKeyword", + }, + }, "my_objects": Object { "total": Object { "kind": 140, @@ -136,6 +146,10 @@ Array [ "kind": 143, "type": "StringKeyword", }, + "my_str_array": Object { + "kind": 143, + "type": "StringKeyword", + }, }, "typeName": "Usage", }, @@ -144,6 +158,14 @@ Array [ "flat": Object { "type": "keyword", }, + "my_array": Object { + "total": Object { + "type": "number", + }, + "type": Object { + "type": "boolean", + }, + }, "my_objects": Object { "total": Object { "type": "number", @@ -155,6 +177,9 @@ Array [ "my_str": Object { "type": "text", }, + "my_str_array": Object { + "type": "keyword", + }, }, }, }, diff --git a/src/fixtures/telemetry_collectors/working_collector.ts b/src/fixtures/telemetry_collectors/working_collector.ts index d70a247c61e70..d58a89db97d74 100644 --- a/src/fixtures/telemetry_collectors/working_collector.ts +++ b/src/fixtures/telemetry_collectors/working_collector.ts @@ -33,6 +33,8 @@ interface Usage { flat?: string; my_str?: string; my_objects: MyObject; + my_array?: MyObject[]; + my_str_array?: string[]; } const SOME_NUMBER: number = 123; @@ -54,6 +56,13 @@ export const myCollector = makeUsageCollector({ total: SOME_NUMBER, type: true, }, + my_array: [ + { + total: SOME_NUMBER, + type: true, + }, + ], + my_str_array: ['hello', 'world'], }; } catch (err) { return { @@ -77,5 +86,12 @@ export const myCollector = makeUsageCollector({ }, type: { type: 'boolean' }, }, + my_array: { + total: { + type: 'number', + }, + type: { type: 'boolean' }, + }, + my_str_array: { type: 'keyword' }, }, }); diff --git a/src/plugins/usage_collection/server/collector/collector.test.ts b/src/plugins/usage_collection/server/collector/collector.test.ts new file mode 100644 index 0000000000000..a3e2425c1f122 --- /dev/null +++ b/src/plugins/usage_collection/server/collector/collector.test.ts @@ -0,0 +1,213 @@ +/* + * 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 { loggingSystemMock } from '../../../../core/server/mocks'; +import { Collector } from './collector'; +import { UsageCollector } from './usage_collector'; + +const logger = loggingSystemMock.createLogger(); + +describe('collector', () => { + describe('options validations', () => { + it('should not accept an empty object', () => { + // @ts-expect-error + expect(() => new Collector(logger, {})).toThrowError( + 'Collector must be instantiated with a options.type string property' + ); + }); + + it('should fail if init is not a function', () => { + expect( + () => + new Collector(logger, { + type: 'my_test_collector', + // @ts-expect-error + init: 1, + }) + ).toThrowError( + 'If init property is passed, Collector must be instantiated with a options.init as a function property' + ); + }); + + it('should fail if fetch is not defined', () => { + expect( + () => + // @ts-expect-error + new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + }) + ).toThrowError('Collector must be instantiated with a options.fetch function property'); + }); + + it('should fail if fetch is not a function', () => { + expect( + () => + new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + // @ts-expect-error + fetch: 1, + }) + ).toThrowError('Collector must be instantiated with a options.fetch function property'); + }); + + it('should be OK with all mandatory properties', () => { + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => ({ testPass: 100 }), + }); + expect(collector).toBeDefined(); + }); + + it('should fallback when isReady is not provided', () => { + const fetchOutput = { testPass: 100 }; + // @ts-expect-error not providing isReady to test the logic fallback + const collector = new Collector(logger, { + type: 'my_test_collector', + fetch: () => fetchOutput, + }); + expect(collector.isReady()).toBe(true); + }); + }); + + describe('formatForBulkUpload', () => { + it('should use the default formatter', () => { + const fetchOutput = { testPass: 100 }; + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => fetchOutput, + }); + expect(collector.formatForBulkUpload(fetchOutput)).toStrictEqual({ + type: 'my_test_collector', + payload: fetchOutput, + }); + }); + + it('should use a custom formatter', () => { + const fetchOutput = { testPass: 100 }; + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => fetchOutput, + formatForBulkUpload: (a) => ({ type: 'other_value', payload: { nested: a } }), + }); + expect(collector.formatForBulkUpload(fetchOutput)).toStrictEqual({ + type: 'other_value', + payload: { nested: fetchOutput }, + }); + }); + + it("should use UsageCollector's default formatter", () => { + const fetchOutput = { testPass: 100 }; + const collector = new UsageCollector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => fetchOutput, + }); + expect(collector.formatForBulkUpload(fetchOutput)).toStrictEqual({ + type: 'kibana_stats', + payload: { usage: { my_test_collector: fetchOutput } }, + }); + }); + }); + + describe('schema TS validations', () => { + // These tests below are used to ensure types inference is working as expected. + // We don't intend to test any logic as such, just the relation between the types in `fetch` and `schema`. + // Using ts-expect-error when an error is expected will fail the compilation if there is not such error. + + test('when fetch returns a simple object', () => { + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => ({ testPass: 100 }), + schema: { + testPass: { type: 'long' }, + }, + }); + expect(collector).toBeDefined(); + }); + + test('when fetch returns array-properties and schema', () => { + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => ({ testPass: [{ name: 'a', value: 100 }] }), + schema: { + testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, + }); + expect(collector).toBeDefined(); + }); + + test('TS should complain when schema is missing some properties', () => { + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + fetch: () => ({ testPass: [{ name: 'a', value: 100 }], otherProp: 1 }), + // @ts-expect-error + schema: { + testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, + }); + expect(collector).toBeDefined(); + }); + + test('TS complains if schema misses any of the optional properties', () => { + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + // Need to be explicit with the returned type because TS struggles to identify it + fetch: (): { testPass?: Array<{ name: string; value: number }>; otherProp?: number } => { + if (Math.random() > 0.5) { + return { testPass: [{ name: 'a', value: 100 }] }; + } + return { otherProp: 1 }; + }, + // @ts-expect-error + schema: { + testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + }, + }); + expect(collector).toBeDefined(); + }); + + test('schema defines all the optional properties', () => { + const collector = new Collector(logger, { + type: 'my_test_collector', + isReady: () => false, + // Need to be explicit with the returned type because TS struggles to identify it + fetch: (): { testPass?: Array<{ name: string; value: number }>; otherProp?: number } => { + if (Math.random() > 0.5) { + return { testPass: [{ name: 'a', value: 100 }] }; + } + return { otherProp: 1 }; + }, + schema: { + testPass: { name: { type: 'keyword' }, value: { type: 'long' } }, + otherProp: { type: 'long' }, + }, + }); + expect(collector).toBeDefined(); + }); + }); +}); diff --git a/src/plugins/usage_collection/server/collector/collector.ts b/src/plugins/usage_collection/server/collector/collector.ts index 9ae63b9f50e42..d57700024c088 100644 --- a/src/plugins/usage_collection/server/collector/collector.ts +++ b/src/plugins/usage_collection/server/collector/collector.ts @@ -34,20 +34,20 @@ export interface SchemaField { type: string; } -type Purify = { [P in T]: T }[T]; +export type RecursiveMakeSchemaFrom = U extends object + ? MakeSchemaFrom + : { type: AllowedSchemaTypes }; export type MakeSchemaFrom = { - [Key in Purify>]: Base[Key] extends Array - ? { type: AllowedSchemaTypes } - : Base[Key] extends object - ? MakeSchemaFrom - : { type: AllowedSchemaTypes }; + [Key in keyof Base]: Base[Key] extends Array + ? RecursiveMakeSchemaFrom + : RecursiveMakeSchemaFrom; }; export interface CollectorOptions { type: string; init?: Function; - schema?: MakeSchemaFrom; + schema?: MakeSchemaFrom>; // Using Required to enforce all optional keys in the object fetch: (callCluster: LegacyAPICaller) => Promise | T; /* * A hook for allowing the fetched data payload to be organized into a typed From c815c969373ad472cf3ebc1382fc3848e71ec3aa Mon Sep 17 00:00:00 2001 From: Dave Snider Date: Wed, 8 Jul 2020 10:01:00 -0700 Subject: [PATCH 20/38] Multi-line kql bar (#70140) * Multiline kql bar * fix id * use visibility rather than display to hide stuff, cross fingers for tests * another vis trick for tests * quasi fix tests, still some failures * caroline feedback * fun! * fix for mouse * fix test * check api * fix unit test on query_string_input * Fix cypress test * handle the resize of the height of the textarea when the window have been resize Co-authored-by: Xavier Mouligneau <189600+XavierM@users.noreply.github.com> Co-authored-by: Elastic Machine Co-authored-by: Liza K --- ...in-plugins-data-public.querystringinput.md | 2 +- src/plugins/data/public/public.api.md | 3 +- .../ui/query_string_input/_query_bar.scss | 44 +++++ .../query_string_input/language_switcher.tsx | 2 +- .../query_string_input/query_bar_top_row.tsx | 13 +- .../query_string_input.test.tsx | 12 +- .../query_string_input/query_string_input.tsx | 174 ++++++++++++------ .../data/public/ui/typeahead/_suggestion.scss | 9 +- test/functional/apps/discover/_discover.js | 2 + .../cypress/integration/cases.spec.ts | 2 +- .../integration/ml_conditional_links.spec.ts | 73 ++++---- .../cypress/integration/url_state.spec.ts | 7 +- .../cypress/tasks/create_new_rule.ts | 4 +- .../cypress/tasks/timeline.ts | 2 +- .../components/query_bar/index.test.tsx | 11 +- 15 files changed, 237 insertions(+), 123 deletions(-) diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md index b168602b64927..e139b326b7500 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md @@ -7,5 +7,5 @@ Signature: ```typescript -QueryStringInput: React.FC> +QueryStringInput: React.FC> ``` diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 340a378b946ec..c8110dbfd0041 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -51,7 +51,6 @@ import { ErrorToastOptions } from 'src/core/public/notifications'; import { EuiButtonEmptyProps } from '@elastic/eui'; import { EuiComboBoxProps } from '@elastic/eui'; import { EuiConfirmModalProps } from '@elastic/eui'; -import { EuiFieldText } from '@elastic/eui'; import { EuiGlobalToastListToast } from '@elastic/eui'; import { ExclusiveUnion } from '@elastic/eui'; import { ExistsParams } from 'elasticsearch'; @@ -1482,7 +1481,7 @@ export interface QueryState { // Warning: (ae-missing-release-tag) "QueryStringInput" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const QueryStringInput: React.FC>; +export const QueryStringInput: React.FC>; // @public (undocumented) export type QuerySuggestion = QuerySuggestionBasic | QuerySuggestionField; diff --git a/src/plugins/data/public/ui/query_string_input/_query_bar.scss b/src/plugins/data/public/ui/query_string_input/_query_bar.scss index f95fe748dfdae..007be9da63e49 100644 --- a/src/plugins/data/public/ui/query_string_input/_query_bar.scss +++ b/src/plugins/data/public/ui/query_string_input/_query_bar.scss @@ -1,3 +1,41 @@ +.kbnQueryBar__wrap { + max-width: 100%; + z-index: $euiZContentMenu; +} + +// Uses the append style, but no bordering +.kqlQueryBar__languageSwitcherButton { + border-right: none !important; +} + +.kbnQueryBar__textarea { + z-index: $euiZContentMenu; + resize: none !important; // When in the group, it will autosize + height: $euiSizeXXL; + // Unlike most inputs within layout control groups, the text area still needs a border. + // These adjusts help it sit above the control groups shadow to line up correctly. + padding-top: $euiSizeS + 3px !important; + transform: translateY(-2px); + padding: $euiSizeS - 1px; + + &:not(:focus) { + @include euiYScrollWithShadows; + white-space: nowrap; + overflow-y: hidden; + overflow-x: hidden; + border: none; + box-shadow: none; + } + + // When focused, let it scroll + &:focus { + overflow-x: auto; + overflow-y: auto; + width: calc(100% + 1px); // To overtake the group's fake border + white-space: normal; + } +} + @include euiBreakpoint('xs', 's') { .kbnQueryBar--withDatePicker { > :first-child { @@ -16,5 +54,11 @@ // sass-lint:disable-block no-important flex-grow: 0 !important; flex-basis: auto !important; + margin-right: -$euiSizeXS !important; + + &.kbnQueryBar__datePickerWrapper-isHidden { + width: 0; + overflow: hidden; + } } } diff --git a/src/plugins/data/public/ui/query_string_input/language_switcher.tsx b/src/plugins/data/public/ui/query_string_input/language_switcher.tsx index a4c93d0044c9a..4d51b173f6743 100644 --- a/src/plugins/data/public/ui/query_string_input/language_switcher.tsx +++ b/src/plugins/data/public/ui/query_string_input/language_switcher.tsx @@ -60,7 +60,7 @@ export function QueryLanguageSwitcher(props: Props) { setIsPopoverOpen(!isPopoverOpen)} - className="euiFormControlLayout__append" + className="euiFormControlLayout__append kqlQueryBar__languageSwitcherButton" data-test-subj={'switchQueryLanguageButton'} > {props.language === 'lucene' ? luceneLabel : kqlLabel} diff --git a/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx b/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx index 4b0dc579c39ce..86bf30ba0e374 100644 --- a/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_bar_top_row.tsx @@ -69,6 +69,7 @@ interface Props { export function QueryBarTopRow(props: Props) { const [isDateRangeInvalid, setIsDateRangeInvalid] = useState(false); + const [isQueryInputFocused, setIsQueryInputFocused] = useState(false); const kibana = useKibana(); const { uiSettings, notifications, storage, appName, docLinks } = kibana.services; @@ -107,6 +108,10 @@ export function QueryBarTopRow(props: Props) { }); } + function onChangeQueryInputFocus(isFocused: boolean) { + setIsQueryInputFocused(isFocused); + } + function onTimeChange({ start, end, @@ -182,6 +187,7 @@ export function QueryBarTopRow(props: Props) { query={props.query!} screenTitle={props.screenTitle} onChange={onQueryChange} + onChangeQueryInputFocus={onChangeQueryInputFocus} onSubmit={onInputSubmit} persistedLog={persistedLog} dataTestSubj={props.dataTestSubj} @@ -268,8 +274,12 @@ export function QueryBarTopRow(props: Props) { }; }); + const wrapperClasses = classNames('kbnQueryBar__datePickerWrapper', { + 'kbnQueryBar__datePickerWrapper-isHidden': isQueryInputFocused, + }); + return ( - + ); diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx index 755716aee8f48..0397c34d0c2b8 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.test.tsx @@ -23,7 +23,7 @@ import { mockPersistedLogFactory, } from './query_string_input.test.mocks'; -import { EuiFieldText } from '@elastic/eui'; +import { EuiTextArea } from '@elastic/eui'; import React from 'react'; import { QueryLanguageSwitcher } from './language_switcher'; import { QueryStringInput, QueryStringInputUI } from './query_string_input'; @@ -102,7 +102,7 @@ describe('QueryStringInput', () => { indexPatterns: [stubIndexPatternWithFields], }) ); - expect(component.find(EuiFieldText).props().value).toBe(kqlQuery.query); + expect(component.find(EuiTextArea).props().value).toBe(kqlQuery.query); expect(component.find(QueryLanguageSwitcher).prop('language')).toBe(kqlQuery.language); }); @@ -117,7 +117,7 @@ describe('QueryStringInput', () => { expect(component.find(QueryLanguageSwitcher).prop('language')).toBe(luceneQuery.language); }); - it('Should disable autoFocus on EuiFieldText when disableAutoFocus prop is true', () => { + it('Should disable autoFocus on EuiTextArea when disableAutoFocus prop is true', () => { const component = mount( wrapQueryStringInputInContext({ query: kqlQuery, @@ -126,7 +126,7 @@ describe('QueryStringInput', () => { disableAutoFocus: true, }) ); - expect(component.find(EuiFieldText).prop('autoFocus')).toBeFalsy(); + expect(component.find(EuiTextArea).prop('autoFocus')).toBeFalsy(); }); it('Should create a unique PersistedLog based on the appName and query language', () => { @@ -179,7 +179,7 @@ describe('QueryStringInput', () => { const instance = component.find('QueryStringInputUI').instance() as QueryStringInputUI; const input = instance.inputRef; - const inputWrapper = component.find(EuiFieldText).find('input'); + const inputWrapper = component.find(EuiTextArea).find('textarea'); inputWrapper.simulate('keyDown', { target: input, keyCode: 13, key: 'Enter', metaKey: true }); expect(mockCallback).toHaveBeenCalledTimes(1); @@ -199,7 +199,7 @@ describe('QueryStringInput', () => { const instance = component.find('QueryStringInputUI').instance() as QueryStringInputUI; const input = instance.inputRef; - const inputWrapper = component.find(EuiFieldText).find('input'); + const inputWrapper = component.find(EuiTextArea).find('textarea'); inputWrapper.simulate('keyDown', { target: input, keyCode: 13, key: 'Enter', metaKey: true }); expect(mockPersistedLog.add).toHaveBeenCalledWith('response:200'); diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx index c746449f14c26..6f72aa829d8f3 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx @@ -22,13 +22,14 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { - EuiFieldText, + EuiTextArea, EuiOutsideClickDetector, PopoverAnchorPosition, EuiFlexGroup, EuiFlexItem, EuiButton, EuiLink, + htmlIdGenerator, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -49,13 +50,14 @@ interface Props { query: Query; disableAutoFocus?: boolean; screenTitle?: string; - prepend?: React.ComponentProps['prepend']; + prepend?: any; persistedLog?: PersistedLog; bubbleSubmitEvent?: boolean; placeholder?: string; languageSwitcherPopoverAnchorPosition?: PopoverAnchorPosition; onBlur?: () => void; onChange?: (query: Query) => void; + onChangeQueryInputFocus?: (isFocused: boolean) => void; onSubmit?: (query: Query) => void; dataTestSubj?: string; } @@ -93,7 +95,7 @@ export class QueryStringInputUI extends Component { indexPatterns: [], }; - public inputRef: HTMLInputElement | null = null; + public inputRef: HTMLTextAreaElement | null = null; private persistedLog: PersistedLog | undefined; private abortController?: AbortController; @@ -223,27 +225,32 @@ export class QueryStringInputUI extends Component { this.onChange({ query: value, language: this.props.query.language }); }; - private onInputChange = (event: React.ChangeEvent) => { + private onInputChange = (event: React.ChangeEvent) => { this.onQueryStringChange(event.target.value); + if (event.target.value === '') { + this.handleRemoveHeight(); + } else { + this.handleAutoHeight(); + } }; - private onClickInput = (event: React.MouseEvent) => { - if (event.target instanceof HTMLInputElement) { + private onClickInput = (event: React.MouseEvent) => { + if (event.target instanceof HTMLTextAreaElement) { this.onQueryStringChange(event.target.value); } }; - private onKeyUp = (event: React.KeyboardEvent) => { + private onKeyUp = (event: React.KeyboardEvent) => { if ([KEY_CODES.LEFT, KEY_CODES.RIGHT, KEY_CODES.HOME, KEY_CODES.END].includes(event.keyCode)) { this.setState({ isSuggestionsVisible: true }); - if (event.target instanceof HTMLInputElement) { + if (event.target instanceof HTMLTextAreaElement) { this.onQueryStringChange(event.target.value); } } }; - private onKeyDown = (event: React.KeyboardEvent) => { - if (event.target instanceof HTMLInputElement) { + private onKeyDown = (event: React.KeyboardEvent) => { + if (event.target instanceof HTMLTextAreaElement) { const { isSuggestionsVisible, index } = this.state; const preventDefault = event.preventDefault.bind(event); const { target, key, metaKey } = event; @@ -258,16 +265,19 @@ export class QueryStringInputUI extends Component { switch (event.keyCode) { case KEY_CODES.DOWN: - event.preventDefault(); if (isSuggestionsVisible && index !== null) { + event.preventDefault(); this.incrementIndex(index); - } else { + // Note to engineers. `isSuggestionVisible` does not mean the suggestions are visible. + // This should likely be fixed, it's more that suggestions can be shown. + } else if ((isSuggestionsVisible && index == null) || this.getQueryString() === '') { + event.preventDefault(); this.setState({ isSuggestionsVisible: true, index: 0 }); } break; case KEY_CODES.UP: - event.preventDefault(); if (isSuggestionsVisible && index !== null) { + event.preventDefault(); this.decrementIndex(index); } break; @@ -439,6 +449,17 @@ export class QueryStringInputUI extends Component { if (this.state.isSuggestionsVisible) { this.setState({ isSuggestionsVisible: false, index: null }); } + this.handleBlurHeight(); + if (this.props.onChangeQueryInputFocus) { + this.props.onChangeQueryInputFocus(false); + } + }; + + private onInputBlur = () => { + this.handleBlurHeight(); + if (this.props.onChangeQueryInputFocus) { + this.props.onChangeQueryInputFocus(false); + } }; private onClickSuggestion = (suggestion: QuerySuggestion) => { @@ -460,6 +481,8 @@ export class QueryStringInputUI extends Component { this.setState({ index }); }; + textareaId = htmlIdGenerator()(); + public componentDidMount() { const parsedQuery = fromUser(toUser(this.props.query.query)); if (!isEqual(this.props.query.query, parsedQuery)) { @@ -468,6 +491,8 @@ export class QueryStringInputUI extends Component { this.initPersistedLog(); this.fetchIndexPatterns().then(this.updateSuggestions); + + window.addEventListener('resize', this.handleAutoHeight); } public componentDidUpdate(prevProps: Props) { @@ -485,15 +510,18 @@ export class QueryStringInputUI extends Component { } if (this.state.selectionStart !== null && this.state.selectionEnd !== null) { - if (this.inputRef) { - // For some reason the type guard above does not make the compiler happy - // @ts-ignore + if (this.inputRef != null) { this.inputRef.setSelectionRange(this.state.selectionStart, this.state.selectionEnd); } this.setState({ selectionStart: null, selectionEnd: null, }); + if (document.activeElement !== null && document.activeElement.id === this.textareaId) { + this.handleAutoHeight(); + } else { + this.handleRemoveHeight(); + } } } @@ -501,8 +529,37 @@ export class QueryStringInputUI extends Component { if (this.abortController) this.abortController.abort(); this.updateSuggestions.cancel(); this.componentIsUnmounting = true; + window.removeEventListener('resize', this.handleAutoHeight); } + handleAutoHeight = () => { + if (this.inputRef !== null && document.activeElement === this.inputRef) { + this.inputRef.style.setProperty('height', `${this.inputRef.scrollHeight}px`, 'important'); + } + }; + + handleRemoveHeight = () => { + if (this.inputRef !== null) { + this.inputRef.style.removeProperty('height'); + } + }; + + handleBlurHeight = () => { + if (this.inputRef !== null) { + this.handleRemoveHeight(); + this.inputRef.scrollTop = 0; + } + }; + + handleOnFocus = () => { + if (this.props.onChangeQueryInputFocus) { + this.props.onChangeQueryInputFocus(true); + } + requestAnimationFrame(() => { + this.handleAutoHeight(); + }); + }; + public render() { const isSuggestionsVisible = this.state.isSuggestionsVisible && { 'aria-controls': 'kbnTypeahead__items', @@ -511,20 +568,24 @@ export class QueryStringInputUI extends Component { const ariaCombobox = { ...isSuggestionsVisible, role: 'combobox' }; return ( - -
-
-
- + {this.props.prepend} + +
+
+ { onKeyUp={this.onKeyUp} onChange={this.onInputChange} onClick={this.onClickInput} - onBlur={this.props.onBlur} + onBlur={this.onInputBlur} + onFocus={this.handleOnFocus} + className="kbnQueryBar__textarea" fullWidth - autoFocus={!this.props.disableAutoFocus} - inputRef={(node) => { + rows={1} + id={this.textareaId} + autoFocus={ + this.props.onChangeQueryInputFocus ? false : !this.props.disableAutoFocus + } + inputRef={(node: any) => { if (node) { this.inputRef = node; } @@ -550,7 +617,6 @@ export class QueryStringInputUI extends Component { defaultMessage: 'Start typing to search and filter the {pageType} page', values: { pageType: this.services.appName }, })} - type="text" aria-autocomplete="list" aria-controls={this.state.isSuggestionsVisible ? 'kbnTypeahead__items' : undefined} aria-activedescendant={ @@ -559,29 +625,29 @@ export class QueryStringInputUI extends Component { : undefined } role="textbox" - prepend={this.props.prepend} - append={ - - } data-test-subj={this.props.dataTestSubj || 'queryInput'} - /> + > + {this.getQueryString()} +
-
- -
- + +
+ + + +
); } } diff --git a/src/plugins/data/public/ui/typeahead/_suggestion.scss b/src/plugins/data/public/ui/typeahead/_suggestion.scss index 3a215ceddcd00..81c05f1a8a78c 100644 --- a/src/plugins/data/public/ui/typeahead/_suggestion.scss +++ b/src/plugins/data/public/ui/typeahead/_suggestion.scss @@ -16,7 +16,7 @@ $kbnTypeaheadTypes: ( color: $euiTextColor; background-color: $euiColorEmptyShade; position: absolute; - top: -1px; + top: -2px; z-index: $euiZContentMenu; width: 100%; border-bottom-left-radius: $euiBorderRadius; @@ -56,7 +56,6 @@ $kbnTypeaheadTypes: ( .kbnTypeahead__item.active { background-color: $euiColorLightestShade; - .kbnSuggestionItem__callout { background: $euiColorEmptyShade; } @@ -130,7 +129,6 @@ $kbnTypeaheadTypes: ( align-items: center; } - .kbnSuggestionItem__text { flex-grow: 0; /* 2 */ flex-basis: auto; /* 2 */ @@ -142,16 +140,15 @@ $kbnTypeaheadTypes: ( color: $euiTextColor; } - .kbnSuggestionItem__description { color: $euiColorDarkShade; overflow: hidden; text-overflow: ellipsis; margin-left: $euiSizeXL; - + &:empty { flex-grow: 0; - margin-left:0; + margin-left: 0; } } diff --git a/test/functional/apps/discover/_discover.js b/test/functional/apps/discover/_discover.js index 906f0b83e99e7..949a01ff7873a 100644 --- a/test/functional/apps/discover/_discover.js +++ b/test/functional/apps/discover/_discover.js @@ -218,6 +218,8 @@ export default function ({ getService, getPageObjects }) { await PageObjects.common.navigateToApp('discover'); await PageObjects.header.awaitKibanaChrome(); await queryBar.setQuery(''); + // To remove focus of the of the search bar so date/time picker can show + await PageObjects.discover.selectIndexPattern(defaultSettings.defaultIndex); await PageObjects.timePicker.setDefaultAbsoluteRange(); log.debug( diff --git a/x-pack/plugins/security_solution/cypress/integration/cases.spec.ts b/x-pack/plugins/security_solution/cypress/integration/cases.spec.ts index efd9ece8aec56..9438c28f05fef 100644 --- a/x-pack/plugins/security_solution/cypress/integration/cases.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/cases.spec.ts @@ -99,6 +99,6 @@ describe('Cases', () => { cy.get(TIMELINE_TITLE).should('have.attr', 'value', case1.timeline.title); cy.get(TIMELINE_DESCRIPTION).should('have.attr', 'value', case1.timeline.description); - cy.get(TIMELINE_QUERY).should('have.attr', 'value', case1.timeline.query); + cy.get(TIMELINE_QUERY).invoke('text').should('eq', case1.timeline.query); }); }); diff --git a/x-pack/plugins/security_solution/cypress/integration/ml_conditional_links.spec.ts b/x-pack/plugins/security_solution/cypress/integration/ml_conditional_links.spec.ts index 0c3424576e4cf..6b3fc9e751ea4 100644 --- a/x-pack/plugins/security_solution/cypress/integration/ml_conditional_links.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/ml_conditional_links.spec.ts @@ -27,74 +27,67 @@ import { describe('ml conditional links', () => { it('sets the KQL from a single IP with a value for the query', () => { loginAndWaitForPageWithoutDateRange(mlNetworkSingleIpKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '(process.name: "conhost.exe" or process.name: "sc.exe")' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should('eq', '(process.name: "conhost.exe" or process.name: "sc.exe")'); }); it('sets the KQL from a multiple IPs with a null for the query', () => { loginAndWaitForPageWithoutDateRange(mlNetworkMultipleIpNullKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '((source.ip: "127.0.0.1" or destination.ip: "127.0.0.1") or (source.ip: "127.0.0.2" or destination.ip: "127.0.0.2"))' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should( + 'eq', + '((source.ip: "127.0.0.1" or destination.ip: "127.0.0.1") or (source.ip: "127.0.0.2" or destination.ip: "127.0.0.2"))' + ); }); it('sets the KQL from a multiple IPs with a value for the query', () => { loginAndWaitForPageWithoutDateRange(mlNetworkMultipleIpKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '((source.ip: "127.0.0.1" or destination.ip: "127.0.0.1") or (source.ip: "127.0.0.2" or destination.ip: "127.0.0.2")) and ((process.name: "conhost.exe" or process.name: "sc.exe"))' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should( + 'eq', + '((source.ip: "127.0.0.1" or destination.ip: "127.0.0.1") or (source.ip: "127.0.0.2" or destination.ip: "127.0.0.2")) and ((process.name: "conhost.exe" or process.name: "sc.exe"))' + ); }); it('sets the KQL from a $ip$ with a value for the query', () => { loginAndWaitForPageWithoutDateRange(mlNetworkKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '(process.name: "conhost.exe" or process.name: "sc.exe")' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should('eq', '(process.name: "conhost.exe" or process.name: "sc.exe")'); }); it('sets the KQL from a single host name with a value for query', () => { loginAndWaitForPageWithoutDateRange(mlHostSingleHostKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '(process.name: "conhost.exe" or process.name: "sc.exe")' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should('eq', '(process.name: "conhost.exe" or process.name: "sc.exe")'); }); it('sets the KQL from a multiple host names with null for query', () => { loginAndWaitForPageWithoutDateRange(mlHostMultiHostNullKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '(host.name: "siem-windows" or host.name: "siem-suricata")' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should('eq', '(host.name: "siem-windows" or host.name: "siem-suricata")'); }); it('sets the KQL from a multiple host names with a value for query', () => { loginAndWaitForPageWithoutDateRange(mlHostMultiHostKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '(host.name: "siem-windows" or host.name: "siem-suricata") and ((process.name: "conhost.exe" or process.name: "sc.exe"))' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should( + 'eq', + '(host.name: "siem-windows" or host.name: "siem-suricata") and ((process.name: "conhost.exe" or process.name: "sc.exe"))' + ); }); it('sets the KQL from a undefined/null host name but with a value for query', () => { loginAndWaitForPageWithoutDateRange(mlHostVariableHostKqlQuery); - cy.get(KQL_INPUT).should( - 'have.attr', - 'value', - '(process.name: "conhost.exe" or process.name: "sc.exe")' - ); + cy.get(KQL_INPUT) + .invoke('text') + .should('eq', '(process.name: "conhost.exe" or process.name: "sc.exe")'); }); it('redirects from a single IP with a null for the query', () => { diff --git a/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts b/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts index a3a927cbea7d4..81af9ece9ed45 100644 --- a/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts +++ b/x-pack/plugins/security_solution/cypress/integration/url_state.spec.ts @@ -154,12 +154,12 @@ describe('url state', () => { it('sets kql on network page', () => { loginAndWaitForPageWithoutDateRange(ABSOLUTE_DATE_RANGE.urlKqlNetworkNetwork); - cy.get(KQL_INPUT).should('have.attr', 'value', 'source.ip: "10.142.0.9"'); + cy.get(KQL_INPUT).invoke('text').should('eq', 'source.ip: "10.142.0.9"'); }); it('sets kql on hosts page', () => { loginAndWaitForPageWithoutDateRange(ABSOLUTE_DATE_RANGE.urlKqlHostsHosts); - cy.get(KQL_INPUT).should('have.attr', 'value', 'source.ip: "10.142.0.9"'); + cy.get(KQL_INPUT).invoke('text').should('eq', 'source.ip: "10.142.0.9"'); }); it('sets the url state when kql is set', () => { @@ -230,8 +230,7 @@ describe('url state', () => { it('Do not clears kql when navigating to a new page', () => { loginAndWaitForPageWithoutDateRange(ABSOLUTE_DATE_RANGE.urlKqlHostsHosts); navigateFromHeaderTo(NETWORK); - - cy.get(KQL_INPUT).should('have.attr', 'value', 'source.ip: "10.142.0.9"'); + cy.get(KQL_INPUT).invoke('text').should('eq', 'source.ip: "10.142.0.9"'); }); it.skip('sets and reads the url state for timeline by id', () => { diff --git a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts index eca5885e7b3d9..88ae582b58891 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/create_new_rule.ts @@ -82,7 +82,7 @@ export const fillAboutRuleAndContinue = (rule: CustomRule | MachineLearningRule) export const fillDefineCustomRuleAndContinue = (rule: CustomRule) => { cy.get(CUSTOM_QUERY_INPUT).type(rule.customQuery); - cy.get(CUSTOM_QUERY_INPUT).should('have.attr', 'value', rule.customQuery); + cy.get(CUSTOM_QUERY_INPUT).invoke('text').should('eq', rule.customQuery); cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); cy.get(CUSTOM_QUERY_INPUT).should('not.exist'); @@ -91,7 +91,7 @@ export const fillDefineCustomRuleAndContinue = (rule: CustomRule) => { export const fillDefineCustomRuleWithImportedQueryAndContinue = (rule: CustomRule) => { cy.get(IMPORT_QUERY_FROM_SAVED_TIMELINE_LINK).click(); cy.get(TIMELINE(rule.timelineId)).click(); - cy.get(CUSTOM_QUERY_INPUT).should('have.attr', 'value', rule.customQuery); + cy.get(CUSTOM_QUERY_INPUT).invoke('text').should('eq', rule.customQuery); cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); cy.get(CUSTOM_QUERY_INPUT).should('not.exist'); diff --git a/x-pack/plugins/security_solution/cypress/tasks/timeline.ts b/x-pack/plugins/security_solution/cypress/tasks/timeline.ts index 9e17433090c2b..761fd2c1e6a0b 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/timeline.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/timeline.ts @@ -58,7 +58,7 @@ export const createNewTimeline = () => { }; export const executeTimelineKQL = (query: string) => { - cy.get(`${SEARCH_OR_FILTER_CONTAINER} input`).type(`${query} {enter}`); + cy.get(`${SEARCH_OR_FILTER_CONTAINER} textarea`).type(`${query} {enter}`); }; export const expandFirstTimelineEventDetails = () => { diff --git a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx index a3cab1cfabd71..aac83ce650d86 100644 --- a/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/query_bar/index.test.tsx @@ -214,15 +214,18 @@ describe('QueryBar ', () => { /> ); - const queryInput = wrapper.find(QueryBar).find('input[data-test-subj="queryInput"]'); + let queryInput = wrapper.find(QueryBar).find('textarea[data-test-subj="queryInput"]'); queryInput.simulate('change', { target: { value: 'host.name:*' } }); - expect(queryInput.html()).toContain('value="host.name:*"'); + wrapper.update(); + queryInput = wrapper.find(QueryBar).find('textarea[data-test-subj="queryInput"]'); + expect(queryInput.props().children).toBe('host.name:*'); wrapper.setProps({ filterQueryDraft: null }); wrapper.update(); + queryInput = wrapper.find(QueryBar).find('textarea[data-test-subj="queryInput"]'); - expect(queryInput.html()).toContain('value=""'); + expect(queryInput.props().children).toBe(''); }); }); @@ -258,7 +261,7 @@ describe('QueryBar ', () => { const onSubmitQueryRef = searchBarProps.onQuerySubmit; const onSavedQueryRef = searchBarProps.onSavedQueryUpdated; - const queryInput = wrapper.find(QueryBar).find('input[data-test-subj="queryInput"]'); + const queryInput = wrapper.find(QueryBar).find('textarea[data-test-subj="queryInput"]'); queryInput.simulate('change', { target: { value: 'hello: world' } }); wrapper.update(); From 54bd07f81b6fc75ede018b9632e06c5bce616c4c Mon Sep 17 00:00:00 2001 From: Spencer Date: Wed, 8 Jul 2020 10:41:09 -0700 Subject: [PATCH 21/38] temporarily disable firefox functional tests in PRs (#71116) Co-authored-by: spalger --- vars/tasks.groovy | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vars/tasks.groovy b/vars/tasks.groovy index 9de4c78322d3e..3ff9a7b4850ae 100644 --- a/vars/tasks.groovy +++ b/vars/tasks.groovy @@ -42,7 +42,13 @@ def test() { } def functionalOss(Map params = [:]) { - def config = params ?: [ciGroups: true, firefox: true, accessibility: true, pluginFunctional: true, visualRegression: false] + def config = params ?: [ + ciGroups: true, + firefox: !githubPr.isPr(), + accessibility: true, + pluginFunctional: true, + visualRegression: false + ] task { kibanaPipeline.buildOss(6) @@ -73,7 +79,7 @@ def functionalOss(Map params = [:]) { def functionalXpack(Map params = [:]) { def config = params ?: [ ciGroups: true, - firefox: true, + firefox: !githubPr.isPr(), accessibility: true, pluginFunctional: true, savedObjectsFieldMetrics: true, From 43302bd0b6a145cfec831bb4859636e3694ca566 Mon Sep 17 00:00:00 2001 From: Tre Date: Wed, 8 Jul 2020 11:54:03 -0600 Subject: [PATCH 22/38] [QA] stack integration tests (not run in ci) (#70904) ## Summary Migrate tests from integration-test repo. The integration-test repo's purpose is to smoke test the build artifacts of all the main products in the stack (the .deb, .rpm, .tar.gz, .zip files). Currently Vagrant and VirtualBox are used to create VMs of the OSs appropriate for installing those build artifacts. These scripts are in the integration-test repo. After the VMs are installed and running the stack, a small number of UI tests are run against Kibana to verify we have beats data, logstash data, etc. Kibana-QA team also uses the various VMs for manual testing since manually setting up security across the full stack can be time consuming. The new tests in this PR under x-pack/test/stack_functional_integration/ are NOT executed as part of Kibana CI process. They run from other periodic Jenkins jobs. Co-authored-by: Elastic Machine Co-authored-by: LeeDr --- test/functional/services/remote/webdriver.ts | 38 +++- .../page_objects/monitoring_page.js | 6 + .../configs/build_state.js | 18 ++ ...onfig.stack_functional_integration_base.js | 62 +++++++ ...ig.stack_functional_integration_base_ie.js | 18 ++ .../configs/tests_list.js | 56 ++++++ .../test/functional/apps/ccs/ccs.js | 175 ++++++++++++++++++ .../test/functional/apps/ccs/index.js | 11 ++ .../test/functional/apps/filebeat/filebeat.js | 24 +++ .../test/functional/apps/filebeat/index.js | 11 ++ .../functional/apps/heartbeat/_heartbeat.js | 23 +++ .../test/functional/apps/heartbeat/index.js | 12 ++ .../apps/management/_index_pattern_create.js | 64 +++++++ .../test/functional/apps/management/index.js | 11 ++ .../functional/apps/metricbeat/_metricbeat.js | 34 ++++ .../test/functional/apps/metricbeat/index.js | 11 ++ .../functional/apps/monitoring/_monitoring.js | 40 ++++ .../test/functional/apps/monitoring/index.js | 11 ++ .../functional/apps/packetbeat/_packetbeat.js | 38 ++++ .../test/functional/apps/packetbeat/index.js | 11 ++ .../test/functional/apps/reporting/index.js | 18 ++ .../apps/reporting/reporting_watcher.js | 94 ++++++++++ .../apps/reporting/reporting_watcher_png.js | 88 +++++++++ .../test/functional/apps/reporting/util.js | 77 ++++++++ .../functional/apps/sample_data/e_commerce.js | 29 +++ .../test/functional/apps/sample_data/index.js | 11 ++ .../functional/apps/telemetry/_telemetry.js | 31 ++++ .../test/functional/apps/telemetry/index.js | 12 ++ .../functional/apps/winlogbeat/_winlogbeat.js | 33 ++++ .../test/functional/apps/winlogbeat/index.js | 11 ++ 30 files changed, 1068 insertions(+), 10 deletions(-) create mode 100644 x-pack/test/stack_functional_integration/configs/build_state.js create mode 100644 x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js create mode 100644 x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base_ie.js create mode 100644 x-pack/test/stack_functional_integration/configs/tests_list.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/ccs/ccs.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/ccs/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/filebeat/filebeat.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/filebeat/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/_heartbeat.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/management/_index_pattern_create.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/management/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/_metricbeat.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/monitoring/_monitoring.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/monitoring/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/_packetbeat.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/reporting/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher_png.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/reporting/util.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/sample_data/e_commerce.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/sample_data/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/telemetry/_telemetry.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/telemetry/index.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/_winlogbeat.js create mode 100644 x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/index.js diff --git a/test/functional/services/remote/webdriver.ts b/test/functional/services/remote/webdriver.ts index 27814060e70c1..78f659a064a0c 100644 --- a/test/functional/services/remote/webdriver.ts +++ b/test/functional/services/remote/webdriver.ts @@ -88,6 +88,7 @@ async function attemptToCreateCommand( ) { const attemptId = ++attemptCounter; log.debug('[webdriver] Creating session'); + const remoteSessionUrl = process.env.REMOTE_SESSION_URL; const buildDriverInstance = async () => { switch (browserType) { @@ -133,11 +134,20 @@ async function attemptToCreateCommand( chromeCapabilities.set('goog:loggingPrefs', { browser: 'ALL' }); chromeCapabilities.setAcceptInsecureCerts(config.acceptInsecureCerts); - const session = await new Builder() - .forBrowser(browserType) - .withCapabilities(chromeCapabilities) - .setChromeService(new chrome.ServiceBuilder(chromeDriver.path).enableVerboseLogging()) - .build(); + let session; + if (remoteSessionUrl) { + session = await new Builder() + .forBrowser(browserType) + .withCapabilities(chromeCapabilities) + .usingServer(remoteSessionUrl) + .build(); + } else { + session = await new Builder() + .forBrowser(browserType) + .withCapabilities(chromeCapabilities) + .setChromeService(new chrome.ServiceBuilder(chromeDriver.path).enableVerboseLogging()) + .build(); + } return { session, @@ -284,11 +294,19 @@ async function attemptToCreateCommand( logLevel: 'TRACE', }); - const session = await new Builder() - .forBrowser(browserType) - .withCapabilities(ieCapabilities) - .build(); - + let session; + if (remoteSessionUrl) { + session = await new Builder() + .forBrowser(browserType) + .withCapabilities(ieCapabilities) + .usingServer(remoteSessionUrl) + .build(); + } else { + session = await new Builder() + .forBrowser(browserType) + .withCapabilities(ieCapabilities) + .build(); + } return { session, consoleLog$: Rx.EMPTY, diff --git a/x-pack/test/functional/page_objects/monitoring_page.js b/x-pack/test/functional/page_objects/monitoring_page.js index ece0c0a6c7854..c3b9d20b3ac4a 100644 --- a/x-pack/test/functional/page_objects/monitoring_page.js +++ b/x-pack/test/functional/page_objects/monitoring_page.js @@ -8,6 +8,7 @@ export function MonitoringPageProvider({ getPageObjects, getService }) { const PageObjects = getPageObjects(['common', 'header', 'security', 'login', 'spaceSelector']); const testSubjects = getService('testSubjects'); const security = getService('security'); + const find = getService('find'); return new (class MonitoringPage { async navigateTo(useSuperUser = false) { @@ -25,6 +26,11 @@ export function MonitoringPageProvider({ getPageObjects, getService }) { await PageObjects.common.navigateToApp('monitoring'); } + async getWelcome() { + const el = await find.byCssSelector('.euiCallOut--primary', 10000 * 10); + return await el.getVisibleText(); + } + async getAccessDeniedMessage() { return testSubjects.getVisibleText('accessDeniedTitle'); } diff --git a/x-pack/test/stack_functional_integration/configs/build_state.js b/x-pack/test/stack_functional_integration/configs/build_state.js new file mode 100644 index 0000000000000..abf1bff56331a --- /dev/null +++ b/x-pack/test/stack_functional_integration/configs/build_state.js @@ -0,0 +1,18 @@ +/* + * 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-next-line import/no-extraneous-dependencies +import dotEnv from 'dotenv'; +import testsList from './tests_list'; + +// envObj :: path -> {} +const envObj = (path) => dotEnv.config({ path }); + +// default fn :: path -> {} +export default (path) => { + const obj = envObj(path).parsed; + return { tests: testsList(obj), ...obj }; +}; diff --git a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js new file mode 100644 index 0000000000000..a34d158496ba0 --- /dev/null +++ b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js @@ -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. + */ + +import { resolve } from 'path'; +import buildState from './build_state'; +import { ToolingLog } from '@kbn/dev-utils'; +import chalk from 'chalk'; +import { esTestConfig, kbnTestConfig } from '@kbn/test'; + +const reportName = 'Stack Functional Integration Tests'; +const testsFolder = '../test/functional/apps'; +const stateFilePath = '../../../../../integration-test/qa/envvars.sh'; +const prepend = (testFile) => require.resolve(`${testsFolder}/${testFile}`); +const log = new ToolingLog({ + level: 'info', + writeTo: process.stdout, +}); + +export default async ({ readConfigFile }) => { + const defaultConfigs = await readConfigFile(require.resolve('../../functional/config')); + const { tests, ...provisionedConfigs } = buildState(resolve(__dirname, stateFilePath)); + + const servers = { + kibana: kbnTestConfig.getUrlParts(), + elasticsearch: esTestConfig.getUrlParts(), + }; + log.info(`servers data: ${JSON.stringify(servers)}`); + const settings = { + ...defaultConfigs.getAll(), + junit: { + reportName: `${reportName} - ${provisionedConfigs.VM}`, + }, + servers, + testFiles: tests.map(prepend).map(logTest), + // testFiles: ['monitoring'].map(prepend).map(logTest), + // If we need to do things like disable animations, we can do it in configure_start_kibana.sh, in the provisioner...which lives in the integration-test private repo + uiSettings: {}, + security: { disableTestUser: true }, + }; + return settings; +}; + +// Returns index 1 from the resulting array-like. +const splitRight = (re) => (testPath) => re.exec(testPath)[1]; + +function truncate(testPath) { + const dropKibanaPath = splitRight(/^.+kibana[\\/](.*$)/gm); + return dropKibanaPath(testPath); +} +function highLight(testPath) { + const dropTestsPath = splitRight(/^.+test[\\/]functional[\\/]apps[\\/](.*)[\\/]/gm); + const cleaned = dropTestsPath(testPath); + const colored = chalk.greenBright.bold(cleaned); + return testPath.replace(cleaned, colored); +} +function logTest(testPath) { + log.info(`Testing: '${highLight(truncate(testPath))}'`); + return testPath; +} diff --git a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base_ie.js b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base_ie.js new file mode 100644 index 0000000000000..933a59e4e25b9 --- /dev/null +++ b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base_ie.js @@ -0,0 +1,18 @@ +/* + * 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 default async ({ readConfigFile }) => { + const baseConfigs = await readConfigFile( + require.resolve('./config.stack_functional_integration_base.js') + ); + return { + ...baseConfigs.getAll(), + browser: { + type: 'ie', + }, + security: { disableTestUser: true }, + }; +}; diff --git a/x-pack/test/stack_functional_integration/configs/tests_list.js b/x-pack/test/stack_functional_integration/configs/tests_list.js new file mode 100644 index 0000000000000..ff68cb6285965 --- /dev/null +++ b/x-pack/test/stack_functional_integration/configs/tests_list.js @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +// testsList :: {} -> list +export default (envObj) => { + const xs = []; + // one of these 2 needs to create the default index pattern + if (envObj.PRODUCTS.includes('logstash')) { + xs.push('management'); + } else { + xs.push('sample_data'); + } + + // get the opt in/out banner out of the way early + if (envObj.XPACK === 'YES') { + xs.push('telemetry'); + } + + if (envObj.BEATS.includes('metricbeat')) { + xs.push('metricbeat'); + } + if (envObj.BEATS.includes('filebeat')) { + xs.push('filebeat'); + } + if (envObj.BEATS.includes('packetbeat')) { + xs.push('packetbeat'); + } + if (envObj.BEATS.includes('winlogbeat')) { + xs.push('winlogbeat'); + } + if (envObj.BEATS.includes('heartbeat')) { + xs.push('heartbeat'); + } + if (envObj.VM === 'ubuntu16_tar_ccs') { + xs.push('ccs'); + } + + // with latest elasticsearch Js client, we can only run these watcher tests + // which use the watcher API on a config with x-pack but without TLS (no security) + if (envObj.VM === 'ubuntu16_tar') { + xs.push('reporting'); + } + + if (envObj.XPACK === 'YES' && ['TRIAL', 'GOLD', 'PLATINUM'].includes(envObj.LICENSE)) { + // we can't test enabling monitoring on this config because we already enable it through cluster settings for both clusters. + if (envObj.VM !== 'ubuntu16_tar_ccs') { + // monitoring is last because we switch to the elastic superuser here + xs.push('monitoring'); + } + } + + return xs; +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/ccs/ccs.js b/x-pack/test/stack_functional_integration/test/functional/apps/ccs/ccs.js new file mode 100644 index 0000000000000..a952824d8db61 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/ccs/ccs.js @@ -0,0 +1,175 @@ +/* + * 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'; + +export default ({ getService, getPageObjects }) => { + describe('Cross cluster search test', async () => { + const PageObjects = getPageObjects([ + 'common', + 'settings', + 'discover', + 'security', + 'header', + 'timePicker', + ]); + const retry = getService('retry'); + const log = getService('log'); + const browser = getService('browser'); + const appsMenu = getService('appsMenu'); + const kibanaServer = getService('kibanaServer'); + + before(async () => { + await browser.setWindowSize(1200, 800); + // pincking relative time in timepicker isn't working. This is also faster. + // It's the default set, plus new "makelogs" +/- 3 days from now + await kibanaServer.uiSettings.replace({ + 'timepicker:quickRanges': `[ + { + "from": "now-3d", + "to": "now+3d", + "display": "makelogs" + }, + { + "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" + } + ]`, + }); + }); + + before(async () => { + if (process.env.SECURITY === 'YES') { + log.debug( + '### provisionedEnv.SECURITY === YES so log in as elastic superuser to create cross cluster indices' + ); + await PageObjects.security.logout(); + } + const url = await browser.getCurrentUrl(); + log.debug(url); + if (!url.includes('kibana')) { + await PageObjects.common.navigateToApp('management', { insertTimestamp: false }); + } else if (!url.includes('management')) { + await appsMenu.clickLink('Management'); + } + }); + + it('create local admin makelogs index pattern', async () => { + log.debug('create local admin makelogs工程 index pattern'); + await PageObjects.settings.createIndexPattern('local:makelogs工程*'); + const patternName = await PageObjects.settings.getIndexPageHeading(); + expect(patternName).to.be('local:makelogs工程*'); + }); + + it('create remote data makelogs index pattern', async () => { + log.debug('create remote data makelogs工程 index pattern'); + await PageObjects.settings.createIndexPattern('data:makelogs工程*'); + const patternName = await PageObjects.settings.getIndexPageHeading(); + expect(patternName).to.be('data:makelogs工程*'); + }); + + it('create comma separated index patterns for data and local makelogs index pattern', async () => { + log.debug( + 'create comma separated index patterns for data and local makelogs工程 index pattern' + ); + await PageObjects.settings.createIndexPattern('data:makelogs工程-*,local:makelogs工程-*'); + const patternName = await PageObjects.settings.getIndexPageHeading(); + expect(patternName).to.be('data:makelogs工程-*,local:makelogs工程-*'); + }); + + it('create index pattern for data from both clusters', async () => { + await PageObjects.settings.createIndexPattern('*:makelogs工程-*', '@timestamp', true, false); + const patternName = await PageObjects.settings.getIndexPageHeading(); + expect(patternName).to.be('*:makelogs工程-*'); + }); + + it('local:makelogs(star) should discover data from the local cluster', async () => { + await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); + + await PageObjects.discover.selectIndexPattern('local:makelogs工程*'); + await PageObjects.timePicker.setCommonlyUsedTime('makelogs'); + await retry.tryForTime(40000, async () => { + const hitCount = await PageObjects.discover.getHitCount(); + log.debug('### hit count = ' + hitCount); + expect(hitCount).to.be('14,005'); + }); + }); + + it('data:makelogs(star) should discover data from remote', async function () { + await PageObjects.discover.selectIndexPattern('data:makelogs工程*'); + await retry.tryForTime(40000, async () => { + const hitCount = await PageObjects.discover.getHitCount(); + log.debug('### hit count = ' + hitCount); + expect(hitCount).to.be('14,005'); + }); + }); + + it('star:makelogs-star should discover data from both clusters', async function () { + await PageObjects.discover.selectIndexPattern('*:makelogs工程-*'); + await PageObjects.timePicker.setCommonlyUsedTime('makelogs'); + await retry.tryForTime(40000, async () => { + const hitCount = await PageObjects.discover.getHitCount(); + log.debug('### hit count = ' + hitCount); + expect(hitCount).to.be('28,010'); + }); + }); + + it('data:makelogs-star,local:makelogs-star should discover data from both clusters', async function () { + await PageObjects.discover.selectIndexPattern('data:makelogs工程-*,local:makelogs工程-*'); + await retry.tryForTime(40000, async () => { + const hitCount = await PageObjects.discover.getHitCount(); + log.debug('### hit count = ' + hitCount); + expect(hitCount).to.be('28,010'); + }); + }); + }); +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/ccs/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/ccs/index.js new file mode 100644 index 0000000000000..e31a903cf0be2 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/ccs/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('ccs test', function () { + loadTestFile(require.resolve('./ccs')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/filebeat/filebeat.js b/x-pack/test/stack_functional_integration/test/functional/apps/filebeat/filebeat.js new file mode 100644 index 0000000000000..14d06ac296ba3 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/filebeat/filebeat.js @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; + +export default function ({ getService, getPageObjects }) { + describe('check filebeat', function () { + const retry = getService('retry'); + const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); + + it('filebeat- should have hit count GT 0', async function () { + await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); + await PageObjects.discover.selectIndexPattern('filebeat-*'); + await PageObjects.timePicker.setCommonlyUsedTime('Last_30 days'); + await retry.try(async () => { + const hitCount = parseInt(await PageObjects.discover.getHitCount()); + expect(hitCount).to.be.greaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/filebeat/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/filebeat/index.js new file mode 100644 index 0000000000000..c3a81ca43a68f --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/filebeat/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('filebeat app', function () { + loadTestFile(require.resolve('./filebeat')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/_heartbeat.js b/x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/_heartbeat.js new file mode 100644 index 0000000000000..4e1c02b627de0 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/_heartbeat.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; + +export default function ({ getService, getPageObjects }) { + const retry = getService('retry'); + const PageObjects = getPageObjects(['common', 'uptime']); + + describe('check heartbeat', function () { + it('Uptime app should show snapshot count greater than zero', async function () { + await PageObjects.common.navigateToApp('uptime', { insertTimestamp: false }); + + await retry.try(async function () { + const upCount = parseInt((await PageObjects.uptime.getSnapshotCount()).up); + expect(upCount).to.be.greaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/index.js new file mode 100644 index 0000000000000..28ae1bbaa488d --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/heartbeat/index.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export default function ({ loadTestFile }) { + describe('heartbeat app', function () { + require('./_heartbeat'); + loadTestFile(require.resolve('./_heartbeat')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/management/_index_pattern_create.js b/x-pack/test/stack_functional_integration/test/functional/apps/management/_index_pattern_create.js new file mode 100644 index 0000000000000..a43a2fce61ea1 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/management/_index_pattern_create.js @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; + +export default ({ getService, getPageObjects }) => { + describe('creating default index', function describeIndexTests() { + const PageObjects = getPageObjects(['common', 'settings']); + const retry = getService('retry'); + const log = getService('log'); + const browser = getService('browser'); + + before(async () => { + await PageObjects.common.navigateToApp('management', { insertTimestamp: false }); + await browser.setWindowSize(1200, 800); + }); + + it('create makelogs工程 index pattern', async function pageHeader() { + log.debug('create makelogs工程 index pattern'); + await PageObjects.settings.createIndexPattern('makelogs工程-*'); + const patternName = await PageObjects.settings.getIndexPageHeading(); + expect(patternName).to.be('makelogs工程-*'); + }); + + describe('create logstash index pattern', function indexPatternCreation() { + before(async () => { + await retry.tryForTime(120000, async () => { + log.debug('create Index Pattern'); + await PageObjects.settings.createIndexPattern(); + }); + }); + + it('should have index pattern in page header', async function pageHeader() { + const patternName = await PageObjects.settings.getIndexPageHeading(); + expect(patternName).to.be('logstash-*'); + }); + + it('should have expected table headers', async function checkingHeader() { + const headers = await PageObjects.settings.getTableHeader(); + log.debug('header.length = ' + headers.length); + const expectedHeaders = [ + 'Name', + 'Type', + 'Format', + 'Searchable', + 'Aggregatable', + 'Excluded', + ]; + + expect(headers.length).to.be(expectedHeaders.length); + + await Promise.all( + headers.map(async function compareHead(header, i) { + const text = await header.getVisibleText(); + expect(text).to.be(expectedHeaders[i]); + }) + ); + }); + }); + }); +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/management/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/management/index.js new file mode 100644 index 0000000000000..6e032c198bc6a --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/management/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('settings / management app', function () { + loadTestFile(require.resolve('./_index_pattern_create')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/_metricbeat.js b/x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/_metricbeat.js new file mode 100644 index 0000000000000..8f6ddff180695 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/_metricbeat.js @@ -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 expect from '@kbn/expect'; + +export default function ({ getService, getPageObjects }) { + const log = getService('log'); + const retry = getService('retry'); + const browser = getService('browser'); + const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); + const appsMenu = getService('appsMenu'); + + describe('check metricbeat', function () { + it('metricbeat- should have hit count GT 0', async function () { + const url = await browser.getCurrentUrl(); + log.debug(url); + if (!url.includes('kibana')) { + await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); + } else if (!url.includes('discover')) { + await appsMenu.clickLink('Discover'); + } + + await PageObjects.discover.selectIndexPattern('metricbeat-*'); + await PageObjects.timePicker.setCommonlyUsedTime('Today'); + await retry.try(async function () { + const hitCount = parseInt(await PageObjects.discover.getHitCount()); + expect(hitCount).to.be.greaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/index.js new file mode 100644 index 0000000000000..d45d6c835a315 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/metricbeat/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('metricbeat app', function () { + loadTestFile(require.resolve('./_metricbeat')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/monitoring/_monitoring.js b/x-pack/test/stack_functional_integration/test/functional/apps/monitoring/_monitoring.js new file mode 100644 index 0000000000000..623937b178833 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/monitoring/_monitoring.js @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export default ({ getService, getPageObjects }) => { + describe('monitoring app - stack functional integration - suite', () => { + const browser = getService('browser'); + const PageObjects = getPageObjects(['security', 'monitoring', 'common']); + const log = getService('log'); + const testSubjects = getService('testSubjects'); + const isSaml = !!process.env.VM.includes('saml') || !!process.env.VM.includes('oidc'); + + before(async () => { + await browser.setWindowSize(1200, 800); + if (process.env.SECURITY === 'YES' && !isSaml) { + await PageObjects.security.logout(); + log.debug('### log in as elastic superuser to enable monitoring'); + // Tests may be running as a non-superuser like `power` but that user + // doesn't have the cluster privs to enable monitoring. + // On the SAML config, this will fail, but the test recovers on the next + // navigate and logs in as the saml user. + } + // navigateToApp without a username and password will default to the superuser + await PageObjects.common.navigateToApp('monitoring', { insertTimestamp: false }); + }); + + it('should enable Monitoring', async () => { + await testSubjects.click('useInternalCollection'); + await testSubjects.click('enableCollectionEnabled'); + }); + + after(async () => { + if (process.env.SECURITY === 'YES' && !isSaml) { + await PageObjects.security.forceLogout(isSaml); + } + }); + }); +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/monitoring/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/monitoring/index.js new file mode 100644 index 0000000000000..f6ea0ae4aa2b5 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/monitoring/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('monitoring app - stack functional integration - index', function () { + loadTestFile(require.resolve('./_monitoring')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/_packetbeat.js b/x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/_packetbeat.js new file mode 100644 index 0000000000000..e09ac478fccbd --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/_packetbeat.js @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; + +export default function ({ getService, getPageObjects }) { + const log = getService('log'); + const retry = getService('retry'); + const browser = getService('browser'); + const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); + const appsMenu = getService('appsMenu'); + + describe('check packetbeat', function () { + before(function () { + log.debug('navigateToApp Discover'); + }); + + it('packetbeat- should have hit count GT 0', async function () { + const url = await browser.getCurrentUrl(); + log.debug(url); + if (!url.includes('kibana')) { + await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); + } + if (!url.includes('discover')) { + await appsMenu.clickLink('Discover'); + } + await PageObjects.discover.selectIndexPattern('packetbeat-*'); + await PageObjects.timePicker.setCommonlyUsedTime('Today'); + await retry.try(async function () { + const hitCount = parseInt(await PageObjects.discover.getHitCount()); + expect(hitCount).to.be.greaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/index.js new file mode 100644 index 0000000000000..5bb4582eb16de --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/packetbeat/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('packetbeat app', function () { + loadTestFile(require.resolve('./_packetbeat')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/reporting/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/index.js new file mode 100644 index 0000000000000..98771a57693a2 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/index.js @@ -0,0 +1,18 @@ +/* + * 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 default function ({ getService, loadTestFile }) { + describe('reporting app', function () { + const browser = getService('browser'); + + before(async () => { + await browser.setWindowSize(1200, 800); + }); + + loadTestFile(require.resolve('./reporting_watcher_png')); + loadTestFile(require.resolve('./reporting_watcher')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher.js b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher.js new file mode 100644 index 0000000000000..c373c797bef50 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher.js @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { getWatcher, deleteWatcher, putWatcher } from './util'; + +export default function ({ getService, getPageObjects }) { + describe('watcher app', function describeIndexTests() { + const config = getService('config'); + const servers = config.get('servers'); + const retry = getService('retry'); + const log = getService('log'); + const client = getService('es'); + + const KIBANAIP = process.env.KIBANAIP; + const VERSION_NUMBER = process.env.VERSION_NUMBER; + const VM = process.env.VM; + const VERSION_BUILD_HASH = process.env.VERSION_BUILD_HASH; + const STARTEDBY = process.env.STARTEDBY; + const REPORTING_TEST_EMAILS = process.env.REPORTING_TEST_EMAILS; + + const PageObjects = getPageObjects(['common']); + describe('PDF Reporting watch', function () { + let id = 'watcher_report-'; + id = id + new Date().getTime(); // For debugging. + const watch = { id }; + const interval = 10; + const emails = REPORTING_TEST_EMAILS.split(','); + + // https://localhost:5601/api/reporting/generate/printablePdf?jobParams=(objectType:dashboard,queryString:%27_g%3D(refreshInterval%3A(display%3AOff%2Cpause%3A!!f%2Cvalue%3A0)%2Ctime%3A(from%3Anow-7d%2Cmode%3Aquick%2Cto%3Anow))%26_a%3D(description%3A%2527%2527%2Cfilters%3A!!()%2CfullScreenMode%3A!!f%2Coptions%3A(darkTheme%3A!!f)%2Cpanels%3A!!((col%3A1%2Cid%3ASystem-Navigation%2CpanelIndex%3A9%2Crow%3A1%2Csize_x%3A8%2Csize_y%3A1%2Ctype%3Avisualization)%2C(col%3A1%2Cid%3Ac6f2ffd0-4d17-11e7-a196-69b9a7a020a9%2CpanelIndex%3A11%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A7%2Cid%3Afe064790-1b1f-11e7-bec4-a5e9ec5cab8b%2CpanelIndex%3A12%2Crow%3A4%2Csize_x%3A6%2Csize_y%3A5%2Ctype%3Avisualization)%2C(col%3A1%2Cid%3A%2527855899e0-1b1c-11e7-b09e-037021c4f8df%2527%2CpanelIndex%3A13%2Crow%3A4%2Csize_x%3A6%2Csize_y%3A5%2Ctype%3Avisualization)%2C(col%3A1%2Cid%3A%25277cdb1330-4d1a-11e7-a196-69b9a7a020a9%2527%2CpanelIndex%3A14%2Crow%3A9%2Csize_x%3A12%2Csize_y%3A6%2Ctype%3Avisualization)%2C(col%3A9%2Cid%3A%2527522ee670-1b92-11e7-bec4-a5e9ec5cab8b%2527%2CpanelIndex%3A16%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A11%2Cid%3A%25271aae9140-1b93-11e7-8ada-3df93aab833e%2527%2CpanelIndex%3A17%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A7%2Cid%3A%2527825fdb80-4d1d-11e7-b5f2-2b7c1895bf32%2527%2CpanelIndex%3A18%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A5%2Cid%3Ad3166e80-1b91-11e7-bec4-a5e9ec5cab8b%2CpanelIndex%3A19%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A3%2Cid%3A%252783e12df0-1b91-11e7-bec4-a5e9ec5cab8b%2527%2CpanelIndex%3A20%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A9%2Cid%3Ae9d22060-4d64-11e7-aa29-87a97a796de6%2CpanelIndex%3A21%2Crow%3A1%2Csize_x%3A4%2Csize_y%3A1%2Ctype%3Avisualization))%2Cquery%3A(language%3Alucene%2Cquery%3A(query_string%3A(analyze_wildcard%3A!!t%2Cquery%3A%2527*%2527)))%2CtimeRestore%3A!!f%2Ctitle%3A%2527Metricbeat%2Bsystem%2Boverview%2527%2CuiState%3A(P-11%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-12%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-14%3A(vis%3A(defaultColors%3A(%25270%2525%2B-%2B8.75%2525%2527%3A%2527rgb(247%2C252%2C245)%2527%2C%252717.5%2525%2B-%2B26.25%2525%2527%3A%2527rgb(116%2C196%2C118)%2527%2C%252726.25%2525%2B-%2B35%2525%2527%3A%2527rgb(35%2C139%2C69)%2527%2C%25278.75%2525%2B-%2B17.5%2525%2527%3A%2527rgb(199%2C233%2C192)%2527)))%2CP-16%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-2%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-3%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527))))%2CviewMode%3Aview)%27,savedObjectId:Metricbeat-system-overview) + // https://localhost:5601/api/reporting/generate/printablePdf?jobParams=(objectType:dashboard,queryString:%27_g%3D()%26_a%3D(description%3A%2527%2527%2Cfilters%3A!!()%2CfullScreenMode%3A!!f%2Coptions%3A(darkTheme%3A!!f)%2Cpanels%3A!!((col%3A1%2Cid%3ASystem-Navigation%2CpanelIndex%3A9%2Crow%3A1%2Csize_x%3A12%2Csize_y%3A1%2Ctype%3Avisualization)%2C(col%3A1%2Cid%3Ac6f2ffd0-4d17-11e7-a196-69b9a7a020a9%2CpanelIndex%3A11%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A7%2Cid%3Afe064790-1b1f-11e7-bec4-a5e9ec5cab8b%2CpanelIndex%3A12%2Crow%3A4%2Csize_x%3A6%2Csize_y%3A5%2Ctype%3Avisualization)%2C(col%3A1%2Cid%3A%2527855899e0-1b1c-11e7-b09e-037021c4f8df%2527%2CpanelIndex%3A13%2Crow%3A4%2Csize_x%3A6%2Csize_y%3A5%2Ctype%3Avisualization)%2C(col%3A1%2Cid%3A%25277cdb1330-4d1a-11e7-a196-69b9a7a020a9%2527%2CpanelIndex%3A14%2Crow%3A9%2Csize_x%3A12%2Csize_y%3A6%2Ctype%3Avisualization)%2C(col%3A9%2Cid%3A%2527522ee670-1b92-11e7-bec4-a5e9ec5cab8b%2527%2CpanelIndex%3A16%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A11%2Cid%3A%25271aae9140-1b93-11e7-8ada-3df93aab833e%2527%2CpanelIndex%3A17%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A7%2Cid%3A%2527825fdb80-4d1d-11e7-b5f2-2b7c1895bf32%2527%2CpanelIndex%3A18%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A5%2Cid%3Ad3166e80-1b91-11e7-bec4-a5e9ec5cab8b%2CpanelIndex%3A19%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization)%2C(col%3A3%2Cid%3A%252783e12df0-1b91-11e7-bec4-a5e9ec5cab8b%2527%2CpanelIndex%3A20%2Crow%3A2%2Csize_x%3A2%2Csize_y%3A2%2Ctype%3Avisualization))%2Cquery%3A(language%3Alucene%2Cquery%3A(query_string%3A(analyze_wildcard%3A!!t%2Cdefault_field%3A%2527*%2527%2Cquery%3A%2527*%2527)))%2CtimeRestore%3A!!f%2Ctitle%3A%2527%255BMetricbeat%2BSystem%255D%2BOverview%2527%2CuiState%3A(P-11%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-12%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-14%3A(vis%3A(defaultColors%3A(%25270%2525%2B-%2B8.75%2525%2527%3A%2527rgb(247%2C252%2C245)%2527%2C%252717.5%2525%2B-%2B26.25%2525%2527%3A%2527rgb(116%2C196%2C118)%2527%2C%252726.25%2525%2B-%2B35%2525%2527%3A%2527rgb(35%2C139%2C69)%2527%2C%25278.75%2525%2B-%2B17.5%2525%2527%3A%2527rgb(199%2C233%2C192)%2527)))%2CP-16%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-2%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527)))%2CP-3%3A(vis%3A(defaultColors%3A(%25270%2B-%2B100%2527%3A%2527rgb(0%2C104%2C55)%2527))))%2CviewMode%3Aview)%27,savedObjectId:Metricbeat-system-overview) + // https://localhost:5601 + // "/api/reporting/generate/printablePdf?jobParams=(browserTimezone:America%2FChicago,layout:(dimensions:(height:540.5,width:633),id:preserve_layout),objectType:visualization,relativeUrls:!(%27%2Fapp%2Fkibana%23%2Fvisualize%2Fedit%2FLatency-histogram%3F_g%3D(refreshInterval:(pause:!!t,value:0),time:(from:now-24h,mode:quick,to:now))%26_a%3D(filters:!!(),linked:!!t,query:(language:lucene,query:!%27!%27),uiState:(),vis:(aggs:!!((enabled:!!t,id:!%271!%27,params:(),schema:metric,type:count),(enabled:!!t,id:!%272!%27,params:(extended_bounds:(),field:responsetime,interval:10),schema:segment,type:histogram)),params:(addLegend:!!t,addTimeMarker:!!f,addTooltip:!!t,categoryAxes:!!((id:CategoryAxis-1,labels:(show:!!t,truncate:100),position:bottom,scale:(type:linear),show:!!t,style:(),title:(),type:category)),defaultYExtents:!!f,grid:(categoryLines:!!f,style:(color:%2523eee)),interpolate:linear,legendPosition:right,mode:stacked,scale:linear,seriesParams:!!((data:(id:!%271!%27,label:Count),interpolate:cardinal,mode:stacked,show:true,type:area,valueAxis:ValueAxis-1)),setYExtents:!!f,shareYAxis:!!t,smoothLines:!!t,times:!!(),type:area,valueAxes:!!((id:ValueAxis-1,labels:(filter:!!f,rotate:0,show:!!t,truncate:100),name:LeftAxis-1,position:left,scale:(defaultYExtents:!!f,mode:normal,setYExtents:!!f,type:linear),show:!!t,style:(),title:(text:Count),type:value)),yAxis:()),title:!%27Latency%2Bhistogram!%27,type:area))%27),title:%27Latency%20histogram%27) + const url = + servers.kibana.protocol + + '://' + + KIBANAIP + + ':' + + servers.kibana.port + + '/api/reporting/generate/printablePdf?jobParams=(browserTimezone:America%2FChicago,layout:(dimensions:(height:2024,width:3006.400146484375),id:preserve_layout),objectType:dashboard,relativeUrls:!(%27%2Fapp%2Fkibana%23%2Fdashboard%2F722b74f0-b882-11e8-a6d9-e546fe2bba5f%3F_g%3D(refreshInterval:(pause:!!f,value:900000),time:(from:now-7d,to:now))%26_a%3D(description:!%27Analyze%2Bmock%2BeCommerce%2Borders%2Band%2Brevenue!%27,filters:!!(),fullScreenMode:!!f,options:(hidePanelTitles:!!f,useMargins:!!t),panels:!!((embeddableConfig:(vis:(colors:(!%27Men!!!%27s%2BAccessories!%27:%252382B5D8,!%27Men!!!%27s%2BClothing!%27:%2523F9BA8F,!%27Men!!!%27s%2BShoes!%27:%2523F29191,!%27Women!!!%27s%2BAccessories!%27:%2523F4D598,!%27Women!!!%27s%2BClothing!%27:%252370DBED,!%27Women!!!%27s%2BShoes!%27:%2523B7DBAB))),gridData:(h:10,i:!%271!%27,w:36,x:12,y:18),id:!%2737cc8650-b882-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%271!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(vis:(colors:(FEMALE:%25236ED0E0,MALE:%2523447EBC),legendOpen:!!f)),gridData:(h:11,i:!%272!%27,w:12,x:12,y:7),id:ed8436b0-b88b-11e8-a6d9-e546fe2bba5f,panelIndex:!%272!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:7,i:!%273!%27,w:18,x:0,y:0),id:!%2709ffee60-b88c-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%273!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:7,i:!%274!%27,w:30,x:18,y:0),id:!%271c389590-b88d-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%274!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:11,i:!%275!%27,w:48,x:0,y:28),id:!%2745e07720-b890-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%275!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:10,i:!%276!%27,w:12,x:0,y:18),id:!%2710f1a240-b891-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%276!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:11,i:!%277!%27,w:12,x:0,y:7),id:b80e6540-b891-11e8-a6d9-e546fe2bba5f,panelIndex:!%277!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(vis:(colors:(!%270%2B-%2B50!%27:%2523E24D42,!%2750%2B-%2B75!%27:%2523EAB839,!%2775%2B-%2B100!%27:%25237EB26D),defaultColors:(!%270%2B-%2B50!%27:!%27rgb(165,0,38)!%27,!%2750%2B-%2B75!%27:!%27rgb(255,255,190)!%27,!%2775%2B-%2B100!%27:!%27rgb(0,104,55)!%27),legendOpen:!!f)),gridData:(h:11,i:!%278!%27,w:12,x:24,y:7),id:!%274b3ec120-b892-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%278!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(vis:(colors:(!%270%2B-%2B2!%27:%2523E24D42,!%272%2B-%2B3!%27:%2523F2C96D,!%273%2B-%2B4!%27:%25239AC48A),defaultColors:(!%270%2B-%2B2!%27:!%27rgb(165,0,38)!%27,!%272%2B-%2B3!%27:!%27rgb(255,255,190)!%27,!%273%2B-%2B4!%27:!%27rgb(0,104,55)!%27),legendOpen:!!f)),gridData:(h:11,i:!%279!%27,w:12,x:36,y:7),id:!%279ca7aa90-b892-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%279!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:18,i:!%2710!%27,w:48,x:0,y:54),id:!%273ba638e0-b894-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%2710!%27,type:search,version:!%277.0.0-alpha1!%27),(embeddableConfig:(isLayerTOCOpen:!!f,mapCenter:(lat:45.88578,lon:-15.07605,zoom:2.11),openTOCDetails:!!()),gridData:(h:15,i:!%2711!%27,w:24,x:0,y:39),id:!%272c9c1f60-1909-11e9-919b-ffe5949a18d2!%27,panelIndex:!%2711!%27,type:map,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:15,i:!%2712!%27,w:24,x:24,y:39),id:b72dd430-bb4d-11e8-9c84-77068524bcab,panelIndex:!%2712!%27,type:visualization,version:!%277.0.0-alpha1!%27)),query:(language:kuery,query:!%27!%27),timeRestore:!!t,title:!%27%255BeCommerce%255D%2BRevenue%2BDashboard!%27,viewMode:view)%27),title:%27%5BeCommerce%5D%20Revenue%20Dashboard%27)'; + + const body = { + trigger: { + schedule: { + interval: `${interval}s`, + }, + }, + actions: { + email_admin: { + email: { + to: emails, + subject: + 'PDF ' + + VERSION_NUMBER + + ' ' + + id + + ', VM=' + + VM + + ' ' + + VERSION_BUILD_HASH + + ' by:' + + STARTEDBY, + attachments: { + 'test_report.pdf': { + reporting: { + url: url, + auth: { + basic: { + username: servers.elasticsearch.username, + password: servers.elasticsearch.password, + }, + }, + }, + }, + }, + }, + }, + }, + }; + + it('should successfully add a new watch for PDF Reporting', async () => { + await putWatcher(watch, id, body, client, log); + }); + it('should be successful and increment revision', async () => { + await getWatcher(watch, id, client, log, PageObjects.common, retry.tryForTime); + }); + it('should delete watch and update revision', async () => { + await deleteWatcher(watch, id, client, log); + }); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher_png.js b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher_png.js new file mode 100644 index 0000000000000..ac247cc23900d --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/reporting_watcher_png.js @@ -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 { getWatcher, deleteWatcher, putWatcher } from './util'; + +export default ({ getService, getPageObjects }) => { + describe('watcher app', () => { + const config = getService('config'); + const servers = config.get('servers'); + const retry = getService('retry'); + const log = getService('log'); + const client = getService('es'); + + const KIBANAIP = process.env.KIBANAIP; + const VERSION_NUMBER = process.env.VERSION_NUMBER; + const VM = process.env.VM; + const VERSION_BUILD_HASH = process.env.VERSION_BUILD_HASH; + const STARTEDBY = process.env.STARTEDBY; + const REPORTING_TEST_EMAILS = process.env.REPORTING_TEST_EMAILS; + + const PageObjects = getPageObjects(['common']); + describe('PNG Reporting watch', () => { + let id = 'watcher_png_report-'; + id = id + new Date().getTime(); // For debugging. + const watch = { id }; + const reportingUrl = + servers.kibana.protocol + + '://' + + KIBANAIP + + ':' + + servers.kibana.port + + '/api/reporting/generate/png?jobParams=(browserTimezone:America%2FChicago,layout:(dimensions:(height:2024,width:3006.400146484375),id:png),objectType:dashboard,relativeUrl:%27%2Fapp%2Fkibana%23%2Fdashboard%2F722b74f0-b882-11e8-a6d9-e546fe2bba5f%3F_g%3D(refreshInterval:(pause:!!f,value:900000),time:(from:now-7d,to:now))%26_a%3D(description:!%27Analyze%2Bmock%2BeCommerce%2Borders%2Band%2Brevenue!%27,filters:!!(),fullScreenMode:!!f,options:(hidePanelTitles:!!f,useMargins:!!t),panels:!!((embeddableConfig:(vis:(colors:(!%27Men!!!%27s%2BAccessories!%27:%252382B5D8,!%27Men!!!%27s%2BClothing!%27:%2523F9BA8F,!%27Men!!!%27s%2BShoes!%27:%2523F29191,!%27Women!!!%27s%2BAccessories!%27:%2523F4D598,!%27Women!!!%27s%2BClothing!%27:%252370DBED,!%27Women!!!%27s%2BShoes!%27:%2523B7DBAB))),gridData:(h:10,i:!%271!%27,w:36,x:12,y:18),id:!%2737cc8650-b882-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%271!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(vis:(colors:(FEMALE:%25236ED0E0,MALE:%2523447EBC),legendOpen:!!f)),gridData:(h:11,i:!%272!%27,w:12,x:12,y:7),id:ed8436b0-b88b-11e8-a6d9-e546fe2bba5f,panelIndex:!%272!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:7,i:!%273!%27,w:18,x:0,y:0),id:!%2709ffee60-b88c-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%273!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:7,i:!%274!%27,w:30,x:18,y:0),id:!%271c389590-b88d-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%274!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:11,i:!%275!%27,w:48,x:0,y:28),id:!%2745e07720-b890-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%275!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:10,i:!%276!%27,w:12,x:0,y:18),id:!%2710f1a240-b891-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%276!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:11,i:!%277!%27,w:12,x:0,y:7),id:b80e6540-b891-11e8-a6d9-e546fe2bba5f,panelIndex:!%277!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(vis:(colors:(!%270%2B-%2B50!%27:%2523E24D42,!%2750%2B-%2B75!%27:%2523EAB839,!%2775%2B-%2B100!%27:%25237EB26D),defaultColors:(!%270%2B-%2B50!%27:!%27rgb(165,0,38)!%27,!%2750%2B-%2B75!%27:!%27rgb(255,255,190)!%27,!%2775%2B-%2B100!%27:!%27rgb(0,104,55)!%27),legendOpen:!!f)),gridData:(h:11,i:!%278!%27,w:12,x:24,y:7),id:!%274b3ec120-b892-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%278!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(vis:(colors:(!%270%2B-%2B2!%27:%2523E24D42,!%272%2B-%2B3!%27:%2523F2C96D,!%273%2B-%2B4!%27:%25239AC48A),defaultColors:(!%270%2B-%2B2!%27:!%27rgb(165,0,38)!%27,!%272%2B-%2B3!%27:!%27rgb(255,255,190)!%27,!%273%2B-%2B4!%27:!%27rgb(0,104,55)!%27),legendOpen:!!f)),gridData:(h:11,i:!%279!%27,w:12,x:36,y:7),id:!%279ca7aa90-b892-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%279!%27,type:visualization,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:18,i:!%2710!%27,w:48,x:0,y:54),id:!%273ba638e0-b894-11e8-a6d9-e546fe2bba5f!%27,panelIndex:!%2710!%27,type:search,version:!%277.0.0-alpha1!%27),(embeddableConfig:(isLayerTOCOpen:!!f,mapCenter:(lat:45.88578,lon:-15.07605,zoom:2.11),openTOCDetails:!!()),gridData:(h:15,i:!%2711!%27,w:24,x:0,y:39),id:!%272c9c1f60-1909-11e9-919b-ffe5949a18d2!%27,panelIndex:!%2711!%27,type:map,version:!%277.0.0-alpha1!%27),(embeddableConfig:(),gridData:(h:15,i:!%2712!%27,w:24,x:24,y:39),id:b72dd430-bb4d-11e8-9c84-77068524bcab,panelIndex:!%2712!%27,type:visualization,version:!%277.0.0-alpha1!%27)),query:(language:kuery,query:!%27!%27),timeRestore:!!t,title:!%27%255BeCommerce%255D%2BRevenue%2BDashboard!%27,viewMode:view)%27,title:%27%5BeCommerce%5D%20Revenue%20Dashboard%27)'; + const emails = REPORTING_TEST_EMAILS.split(','); + const interval = 10; + const body = { + trigger: { + schedule: { + interval: `${interval}s`, + }, + }, + actions: { + email_admin: { + email: { + to: emails, + subject: + 'PNG ' + + VERSION_NUMBER + + ' ' + + id + + ', VM=' + + VM + + ' ' + + VERSION_BUILD_HASH + + ' by:' + + STARTEDBY, + attachments: { + 'test_report.png': { + reporting: { + url: reportingUrl, + auth: { + basic: { + username: servers.elasticsearch.username, + password: servers.elasticsearch.password, + }, + }, + }, + }, + }, + }, + }, + }, + }; + + it('should successfully add a new watch for PNG Reporting', async () => { + await putWatcher(watch, id, body, client, log); + }); + it('should be successful and increment revision', async () => { + await getWatcher(watch, id, client, log, PageObjects.common, retry.tryForTime); + }); + it('should delete watch and update revision', async () => { + await deleteWatcher(watch, id, client, log); + }); + }); + }); +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/reporting/util.js b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/util.js new file mode 100644 index 0000000000000..3c959656a3c57 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/reporting/util.js @@ -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 expect from '@kbn/expect'; + +export const pretty = (x) => JSON.stringify(x, null, 2); +export const buildUrl = ({ protocol, auth, hostname, port }) => + new URL(`${protocol}://${auth}@${hostname}:${port}`); +export const putWatcher = async (watch, id, body, client, log) => { + const putWatchResponse = await client.watcher.putWatch({ ...watch, body }); + log.debug(`# putWatchResponse \n${pretty(putWatchResponse)}`); + expect(putWatchResponse.body._id).to.eql(id); + expect(putWatchResponse.statusCode).to.eql('201'); + expect(putWatchResponse.body._version).to.eql('1'); +}; +export const getWatcher = async (watch, id, client, log, common, tryForTime) => { + await common.sleep(50000); + await tryForTime( + 250000, + async () => { + await common.sleep(25000); + + await watcherHistory(id, client, log); + + const getWatchResponse = await client.watcher.getWatch(watch); + log.debug(`\n getWatchResponse: ${JSON.stringify(getWatchResponse)}`); + expect(getWatchResponse.body._id).to.eql(id); + expect(getWatchResponse.body._version).to.be.above(1); + log.debug(`\n getWatchResponse.body._version: ${getWatchResponse.body._version}`); + expect(getWatchResponse.body.status.execution_state).to.eql('executed'); + expect(getWatchResponse.body.status.actions.email_admin.last_execution.successful).to.eql( + true + ); + + return getWatchResponse; + }, + async function onFailure(obj) { + log.debug(`\n### tryForTime-Failure--raw body: \n\t${pretty(obj)}`); + } + ); +}; +export const deleteWatcher = async (watch, id, client, log) => { + const deleteResponse = await client.watcher.deleteWatch(watch); + log.debug('\nDelete Response=' + pretty(deleteResponse) + '\n'); + expect(deleteResponse.body._id).to.eql(id); + expect(deleteResponse.body.found).to.eql(true); + expect(deleteResponse.statusCode).to.eql('200'); +}; +async function watcherHistory(watchId, client, log) { + const { body } = await client.search({ + index: '.watcher-history*', + body: { + query: { + bool: { + filter: [ + { + bool: { + should: [ + { + match_phrase: { + watchId, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + }, + }); + log.debug(`\nwatcherHistoryResponse \n${pretty(body)}\n`); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/sample_data/e_commerce.js b/x-pack/test/stack_functional_integration/test/functional/apps/sample_data/e_commerce.js new file mode 100644 index 0000000000000..306f30133f6ee --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/sample_data/e_commerce.js @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export default function ({ getService, getPageObjects }) { + describe('eCommerce Sample Data', function sampleData() { + const browser = getService('browser'); + const PageObjects = getPageObjects(['common', 'home']); + const testSubjects = getService('testSubjects'); + + before(async () => { + await browser.setWindowSize(1200, 800); + await PageObjects.common.navigateToUrl('home', '/home/tutorial_directory/sampleData', { + useActualUrl: true, + insertTimestamp: false, + }); + await PageObjects.common.sleep(3000); + }); + + it('install eCommerce sample data', async function installECommerceData() { + await PageObjects.home.addSampleDataSet('ecommerce'); + await PageObjects.common.sleep(5000); + // verify it's installed by finding the remove link + await testSubjects.find('removeSampleDataSetecommerce'); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/sample_data/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/sample_data/index.js new file mode 100644 index 0000000000000..4b9178c753b9a --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/sample_data/index.js @@ -0,0 +1,11 @@ +/* + * 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 default ({ loadTestFile }) => { + describe('sample data', function () { + loadTestFile(require.resolve('./e_commerce')); + }); +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/telemetry/_telemetry.js b/x-pack/test/stack_functional_integration/test/functional/apps/telemetry/_telemetry.js new file mode 100644 index 0000000000000..09698675f0678 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/telemetry/_telemetry.js @@ -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 expect from '@kbn/expect'; + +export default ({ getService, getPageObjects }) => { + const log = getService('log'); + const browser = getService('browser'); + const appsMenu = getService('appsMenu'); + const PageObjects = getPageObjects(['common', 'monitoring', 'header']); + + describe('telemetry', function () { + before(async () => { + log.debug('monitoring'); + await browser.setWindowSize(1200, 800); + await appsMenu.clickLink('Stack Monitoring'); + }); + + it('should show banner Help us improve Kibana and Elasticsearch', async () => { + const expectedMessage = `Help us improve the Elastic Stack +To learn about how usage data helps us manage and improve our products and services, see our Privacy Statement. To stop collection, disable usage data here. +Dismiss`; + const actualMessage = await PageObjects.monitoring.getWelcome(); + log.debug(`X-Pack message = ${actualMessage}`); + expect(actualMessage).to.be(expectedMessage); + }); + }); +}; diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/telemetry/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/telemetry/index.js new file mode 100644 index 0000000000000..0803f48ed90fe --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/telemetry/index.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export default function ({ loadTestFile }) { + describe('telemetry feature', function () { + this.tags('ciGroup1'); + loadTestFile(require.resolve('./_telemetry')); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/_winlogbeat.js b/x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/_winlogbeat.js new file mode 100644 index 0000000000000..657fdf4daaeb4 --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/_winlogbeat.js @@ -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 expect from '@kbn/expect'; + +export default function ({ getService, getPageObjects }) { + const log = getService('log'); + const browser = getService('browser'); + const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); + const retry = getService('retry'); + const appsMenu = getService('appsMenu'); + + describe('check winlogbeat', function () { + it('winlogbeat- should have hit count GT 0', async function () { + const url = await browser.getCurrentUrl(); + log.debug(url); + if (!url.includes('kibana')) { + await PageObjects.common.navigateToApp('discover', { insertTimestamp: false }); + } else if (!url.includes('discover')) { + await appsMenu.clickLink('Discover'); + } + await PageObjects.discover.selectIndexPattern('winlogbeat-*'); + await PageObjects.timePicker.setCommonlyUsedTime('Today'); + await retry.try(async function () { + const hitCount = parseInt(await PageObjects.discover.getHitCount()); + expect(hitCount).to.be.greaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/index.js b/x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/index.js new file mode 100644 index 0000000000000..a940be781ccfe --- /dev/null +++ b/x-pack/test/stack_functional_integration/test/functional/apps/winlogbeat/index.js @@ -0,0 +1,11 @@ +/* + * 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 default function ({ loadTestFile }) { + describe('winlogbeat app', function () { + loadTestFile(require.resolve('./_winlogbeat')); + }); +} From 90fb7a6c2d16d0d2a007855b1032a526c029260e Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Wed, 8 Jul 2020 11:06:49 -0700 Subject: [PATCH 23/38] [Ingest Manager] Show experimental packages by default (#70997) * Add beta and experimental badges to epm list and detail pages; clean up some epm components * Clean up styled warnings * Fix types * Allow experimental query param to be passed through to registry /search * Allow experimental query param to be passed through to registry /categories endpoint * Fix buggy categories count (#64981) * Always enable experimental packages and categories * Handle long package names nicely; misc layout tweaks * Move experimental=true flag to client side * Prevent layout jumps even more * Adjust beta/experimental badge tooltip copy --- .../ingest_manager/common/types/models/epm.ts | 4 + .../common/types/rest_spec/epm.ts | 8 + .../hooks/use_package_icon_type.ts | 2 +- .../ingest_manager/hooks/use_request/epm.ts | 17 +- .../epm/components/assets_facet_group.tsx | 29 +- .../sections/epm/components/icon_panel.tsx | 64 +++-- .../sections/epm/components/icons.tsx | 23 +- .../sections/epm/components/index.ts | 5 - .../epm/components/nav_button_back.tsx | 19 -- .../sections/epm/components/package_card.tsx | 15 +- .../epm/components/package_list_grid.tsx | 22 +- .../sections/epm/components/release_badge.ts | 25 ++ .../sections/epm/screens/detail/content.tsx | 34 +-- .../sections/epm/screens/detail/header.tsx | 89 ------ .../sections/epm/screens/detail/index.tsx | 258 ++++++++++++++---- .../sections/epm/screens/detail/layout.tsx | 2 +- .../epm/screens/detail/screenshots.tsx | 63 +++-- .../epm/screens/detail/settings_panel.tsx | 2 +- .../epm/screens/detail/side_nav_links.tsx | 17 +- .../sections/epm/screens/home/header.tsx | 30 +- .../sections/epm/screens/home/index.tsx | 15 +- .../epm/screens/home/search_packages.tsx | 33 --- .../epm/screens/home/search_results.tsx | 33 --- .../ingest_manager/types/index.ts | 3 + .../server/routes/epm/handlers.ts | 10 +- .../ingest_manager/server/routes/epm/index.ts | 3 +- .../server/services/epm/packages/get.ts | 10 +- .../server/services/epm/registry/index.ts | 34 ++- .../server/types/rest_spec/epm.ts | 7 + 29 files changed, 485 insertions(+), 391 deletions(-) delete mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/index.ts delete mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/nav_button_back.tsx create mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/release_badge.ts delete mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/header.tsx delete mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/search_packages.tsx delete mode 100644 x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/search_results.tsx diff --git a/x-pack/plugins/ingest_manager/common/types/models/epm.ts b/x-pack/plugins/ingest_manager/common/types/models/epm.ts index 23e31227cbf3c..a34038d4fba04 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/epm.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/epm.ts @@ -42,6 +42,8 @@ export enum AgentAssetType { input = 'input', } +export type RegistryRelease = 'ga' | 'beta' | 'experimental'; + // from /package/{name} // type Package struct at https://github.com/elastic/package-registry/blob/master/util/package.go // https://github.com/elastic/package-registry/blob/master/docs/api/package.json @@ -49,6 +51,7 @@ export interface RegistryPackage { name: string; title?: string; version: string; + release?: RegistryRelease; readme?: string; description: string; type: string; @@ -114,6 +117,7 @@ export type RegistrySearchResult = Pick< | 'name' | 'title' | 'version' + | 'release' | 'description' | 'type' | 'icons' diff --git a/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts b/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts index c5035d2d44432..1901b8c0c7039 100644 --- a/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts +++ b/x-pack/plugins/ingest_manager/common/types/rest_spec/epm.ts @@ -12,13 +12,21 @@ import { PackageInfo, } from '../models/epm'; +export interface GetCategoriesRequest { + query: { + experimental?: boolean; + }; +} + export interface GetCategoriesResponse { response: CategorySummaryList; success: boolean; } + export interface GetPackagesRequest { query: { category?: string; + experimental?: boolean; }; } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_package_icon_type.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_package_icon_type.ts index 011e0c69f2683..e5a7191372e9c 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_package_icon_type.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_package_icon_type.ts @@ -6,7 +6,7 @@ import { useEffect, useState } from 'react'; import { ICON_TYPES } from '@elastic/eui'; -import { PackageInfo, PackageListItem } from '../../../../common/types/models'; +import { PackageInfo, PackageListItem } from '../types'; import { useLinks } from '../sections/epm/hooks'; import { sendGetPackageInfoByKey } from './index'; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_request/epm.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_request/epm.ts index 64bee1763b08b..40a22f6b44d50 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_request/epm.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/hooks/use_request/epm.ts @@ -4,11 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -import { HttpFetchQuery } from 'src/core/public'; import { useRequest, sendRequest } from './use_request'; import { epmRouteService } from '../../services'; import { + GetCategoriesRequest, GetCategoriesResponse, + GetPackagesRequest, GetPackagesResponse, GetLimitedPackagesResponse, GetInfoResponse, @@ -16,18 +17,19 @@ import { DeletePackageResponse, } from '../../types'; -export const useGetCategories = () => { +export const useGetCategories = (query: GetCategoriesRequest['query'] = {}) => { return useRequest({ path: epmRouteService.getCategoriesPath(), method: 'get', + query: { experimental: true, ...query }, }); }; -export const useGetPackages = (query: HttpFetchQuery = {}) => { +export const useGetPackages = (query: GetPackagesRequest['query'] = {}) => { return useRequest({ path: epmRouteService.getListPath(), method: 'get', - query, + query: { experimental: true, ...query }, }); }; @@ -52,6 +54,13 @@ export const sendGetPackageInfoByKey = (pkgkey: string) => { }); }; +export const useGetFileByPath = (filePath: string) => { + return useRequest({ + path: epmRouteService.getFilePath(filePath), + method: 'get', + }); +}; + export const sendGetFileByPath = (filePath: string) => { return sendRequest({ path: epmRouteService.getFilePath(filePath), diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/assets_facet_group.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/assets_facet_group.tsx index ac74b09ab4391..24b4baeaa092b 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/assets_facet_group.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/assets_facet_group.tsx @@ -30,19 +30,24 @@ import { ServiceTitleMap, } from '../constants'; -export function AssetsFacetGroup({ assets }: { assets: AssetsGroupedByServiceByType }) { - const FirstHeaderRow = styled(EuiFlexGroup)` - padding: 0 0 ${(props) => props.theme.eui.paddingSizes.m} 0; - `; +const FirstHeaderRow = styled(EuiFlexGroup)` + padding: 0 0 ${(props) => props.theme.eui.paddingSizes.m} 0; +`; + +const HeaderRow = styled(EuiFlexGroup)` + padding: ${(props) => props.theme.eui.paddingSizes.m} 0; +`; - const HeaderRow = styled(EuiFlexGroup)` - padding: ${(props) => props.theme.eui.paddingSizes.m} 0; - `; +const FacetGroup = styled(EuiFacetGroup)` + flex-grow: 0; +`; - const FacetGroup = styled(EuiFacetGroup)` - flex-grow: 0; - `; +const FacetButton = styled(EuiFacetButton)` + padding: '${(props) => props.theme.eui.paddingSizes.xs} 0'; + height: 'unset'; +`; +export function AssetsFacetGroup({ assets }: { assets: AssetsGroupedByServiceByType }) { return ( {entries(assets).map(([service, typeToParts], index) => { @@ -77,10 +82,6 @@ export function AssetsFacetGroup({ assets }: { assets: AssetsGroupedByServiceByT // only kibana assets have icons const iconType = type in AssetIcons && AssetIcons[type]; const iconNode = iconType ? : ''; - const FacetButton = styled(EuiFacetButton)` - padding: '${(props) => props.theme.eui.paddingSizes.xs} 0'; - height: 'unset'; - `; return ( + parseFloat(props.theme.eui.euiSize) * 6 + parseFloat(props.theme.eui.spacerSizes.xl) * 2}px; + height: 1px; +`; + +const Panel = styled(EuiPanel)` + padding: ${(props) => props.theme.eui.spacerSizes.xl}; + margin-bottom: -100%; + svg, + img { + height: ${(props) => parseFloat(props.theme.eui.euiSize) * 6}px; + width: ${(props) => parseFloat(props.theme.eui.euiSize) * 6}px; + } + .euiFlexItem { + height: ${(props) => parseFloat(props.theme.eui.euiSize) * 6}px; + justify-content: center; + } +`; + +export function IconPanel({ + packageName, + version, + icons, +}: Pick) { + const iconType = usePackageIconType({ packageName, version, icons }); -export function IconPanel({ iconType }: { iconType: IconType }) { - const Panel = styled(EuiPanel)` - /* 🤢🤷 https://www.styled-components.com/docs/faqs#how-can-i-override-styles-with-higher-specificity */ - &&& { - position: absolute; - text-align: center; - vertical-align: middle; - padding: ${(props) => props.theme.eui.spacerSizes.xl}; - svg, - img { - height: ${(props) => props.theme.eui.euiKeyPadMenuSize}; - width: ${(props) => props.theme.eui.euiKeyPadMenuSize}; - } - } - `; + return ( + + + + + + ); +} +export function LoadingIconPanel() { return ( - - - + + + + + ); } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/icons.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/icons.tsx index acdcd5b9a3406..3f0803af6daae 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/icons.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/icons.tsx @@ -3,13 +3,20 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { EuiIcon } from '@elastic/eui'; import React from 'react'; -import styled from 'styled-components'; +import { EuiIconTip, EuiIconProps } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; -export const StyledAlert = styled(EuiIcon)` - color: ${(props) => props.theme.eui.euiColorWarning}; - padding: 0 5px; -`; - -export const UpdateIcon = () => ; +export const UpdateIcon = ({ size = 'm' }: { size?: EuiIconProps['size'] }) => ( + +); diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/index.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/index.ts deleted file mode 100644 index 41bc2aa258807..0000000000000 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/index.ts +++ /dev/null @@ -1,5 +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. - */ diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/nav_button_back.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/nav_button_back.tsx deleted file mode 100644 index 3fcf9758368de..0000000000000 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/nav_button_back.tsx +++ /dev/null @@ -1,19 +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 { EuiButtonEmpty } from '@elastic/eui'; -import React from 'react'; -import styled from 'styled-components'; - -export function NavButtonBack({ href, text }: { href: string; text: string }) { - const ButtonEmpty = styled(EuiButtonEmpty)` - margin-right: ${(props) => props.theme.eui.spacerSizes.xl}; - `; - return ( - - {text} - - ); -} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_card.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_card.tsx index e3d8cdc8f4985..cf98f9dc90230 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_card.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_card.tsx @@ -9,12 +9,9 @@ import { EuiCard } from '@elastic/eui'; import { PackageInfo, PackageListItem } from '../../../types'; import { useLink } from '../../../hooks'; import { PackageIcon } from '../../../components/package_icon'; +import { RELEASE_BADGE_LABEL, RELEASE_BADGE_DESCRIPTION } from './release_badge'; -export interface BadgeProps { - showInstalledBadge?: boolean; -} - -type PackageCardProps = (PackageListItem | PackageInfo) & BadgeProps; +type PackageCardProps = PackageListItem | PackageInfo; // adding the `href` causes EuiCard to use a `a` instead of a `button` // `a` tags use `euiLinkColor` which results in blueish Badge text @@ -27,7 +24,7 @@ export function PackageCard({ name, title, version, - showInstalledBadge, + release, status, icons, ...restProps @@ -41,12 +38,14 @@ export function PackageCard({ return ( } href={getHref('integration_details', { pkgkey: `${name}-${urlVersion}` })} + betaBadgeLabel={release && release !== 'ga' ? RELEASE_BADGE_LABEL[release] : undefined} + betaBadgeTooltipContent={ + release && release !== 'ga' ? RELEASE_BADGE_DESCRIPTION[release] : undefined + } /> ); } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_list_grid.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_list_grid.tsx index dbf454acd2b74..0c1199f7c8867 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_list_grid.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/package_list_grid.tsx @@ -20,22 +20,16 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { Loading } from '../../../components'; import { PackageList } from '../../../types'; import { useLocalSearch, searchIdField } from '../hooks'; -import { BadgeProps, PackageCard } from './package_card'; +import { PackageCard } from './package_card'; -type ListProps = { +interface ListProps { isLoading?: boolean; controls?: ReactNode; title: string; list: PackageList; -} & BadgeProps; +} -export function PackageListGrid({ - isLoading, - controls, - title, - list, - showInstalledBadge, -}: ListProps) { +export function PackageListGrid({ isLoading, controls, title, list }: ListProps) { const initialQuery = EuiSearchBar.Query.MATCH_ALL; const [query, setQuery] = useState(initialQuery); @@ -71,7 +65,7 @@ export function PackageListGrid({ .includes(item[searchIdField]) ) : list; - gridContent = ; + gridContent = ; } return ( @@ -108,16 +102,16 @@ function ControlsColumn({ controls, title }: ControlsColumnProps) { - {controls} + {controls} ); } -type GridColumnProps = { +interface GridColumnProps { list: PackageList; -} & BadgeProps; +} function GridColumn({ list }: GridColumnProps) { return ( diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/release_badge.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/release_badge.ts new file mode 100644 index 0000000000000..f3520b4e7a9b3 --- /dev/null +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/components/release_badge.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; +import { RegistryRelease } from '../../../types'; + +export const RELEASE_BADGE_LABEL: { [key in Exclude]: string } = { + beta: i18n.translate('xpack.ingestManager.epm.releaseBadge.betaLabel', { + defaultMessage: 'Beta', + }), + experimental: i18n.translate('xpack.ingestManager.epm.releaseBadge.experimentalLabel', { + defaultMessage: 'Experimental', + }), +}; + +export const RELEASE_BADGE_DESCRIPTION: { [key in Exclude]: string } = { + beta: i18n.translate('xpack.ingestManager.epm.releaseBadge.betaDescription', { + defaultMessage: 'This integration is not recommended for use in production environments.', + }), + experimental: i18n.translate('xpack.ingestManager.epm.releaseBadge.experimentalDescription', { + defaultMessage: 'This integration may have breaking changes or be removed in a future release.', + }), +}; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/content.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/content.tsx index c9a8cabdf414b..f53b4e9150ca1 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/content.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/content.tsx @@ -16,22 +16,22 @@ import { SideNavLinks } from './side_nav_links'; import { PackageConfigsPanel } from './package_configs_panel'; import { SettingsPanel } from './settings_panel'; -type ContentProps = PackageInfo & Pick & { hasIconPanel: boolean }; -export function Content(props: ContentProps) { - const { hasIconPanel, name, panel, version } = props; - const SideNavColumn = hasIconPanel - ? styled(LeftColumn)` - /* 🤢🤷 https://www.styled-components.com/docs/faqs#how-can-i-override-styles-with-higher-specificity */ - &&& { - margin-top: 77px; - } - ` - : LeftColumn; +type ContentProps = PackageInfo & Pick; + +const SideNavColumn = styled(LeftColumn)` + /* 🤢🤷 https://www.styled-components.com/docs/faqs#how-can-i-override-styles-with-higher-specificity */ + &&& { + margin-top: 77px; + } +`; + +// fixes IE11 problem with nested flex items +const ContentFlexGroup = styled(EuiFlexGroup)` + flex: 0 0 auto !important; +`; - // fixes IE11 problem with nested flex items - const ContentFlexGroup = styled(EuiFlexGroup)` - flex: 0 0 auto !important; - `; +export function Content(props: ContentProps) { + const { name, panel, version } = props; return ( @@ -75,13 +75,13 @@ function RightColumnContent(props: RightColumnContentProps) { const { assets, panel } = props; switch (panel) { case 'overview': - return ( + return assets ? ( - ); + ) : null; default: return ; } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/header.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/header.tsx deleted file mode 100644 index 875a8f5c5c127..0000000000000 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/header.tsx +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { Fragment } from 'react'; -import styled from 'styled-components'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiFlexGroup, EuiFlexItem, EuiPage, EuiTitle, IconType, EuiButton } from '@elastic/eui'; -import { PackageInfo } from '../../../../types'; -import { useCapabilities, useLink } from '../../../../hooks'; -import { IconPanel } from '../../components/icon_panel'; -import { NavButtonBack } from '../../components/nav_button_back'; -import { CenterColumn, LeftColumn, RightColumn } from './layout'; -import { UpdateIcon } from '../../components/icons'; - -const FullWidthNavRow = styled(EuiPage)` - /* no left padding so link is against column left edge */ - padding-left: 0; -`; - -const Text = styled.span` - margin-right: ${(props) => props.theme.eui.euiSizeM}; -`; - -type HeaderProps = PackageInfo & { iconType?: IconType }; - -export function Header(props: HeaderProps) { - const { iconType, name, title, version, latestVersion } = props; - - let installedVersion; - if ('savedObject' in props) { - installedVersion = props.savedObject.attributes.version; - } - const hasWriteCapabilites = useCapabilities().write; - const { getHref } = useLink(); - const updateAvailable = installedVersion && installedVersion < latestVersion ? true : false; - return ( - - - - - - {iconType ? ( - - - - ) : null} - - -

- {title} - - - {version} {updateAvailable && } - - -

-
-
- - - - - - - - - -
-
- ); -} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/index.tsx index 505687068cf42..3267fbbe3733c 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/index.tsx @@ -3,15 +3,37 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { EuiPage, EuiPageBody, EuiPageProps } from '@elastic/eui'; -import React, { Fragment, useEffect, useState } from 'react'; +import React, { useEffect, useState, useMemo } from 'react'; import { useParams } from 'react-router-dom'; import styled from 'styled-components'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiButtonEmpty, + EuiText, + EuiSpacer, + EuiBetaBadge, + EuiButton, + EuiDescriptionList, + EuiDescriptionListTitle, + EuiDescriptionListDescription, +} from '@elastic/eui'; import { DetailViewPanelName, InstallStatus, PackageInfo } from '../../../../types'; -import { sendGetPackageInfoByKey, usePackageIconType, useBreadcrumbs } from '../../../../hooks'; +import { Loading, Error } from '../../../../components'; +import { + useGetPackageInfoByKey, + useBreadcrumbs, + useLink, + useCapabilities, +} from '../../../../hooks'; +import { WithHeaderLayout } from '../../../../layouts'; import { useSetPackageInstallStatus } from '../../hooks'; +import { IconPanel, LoadingIconPanel } from '../../components/icon_panel'; +import { RELEASE_BADGE_LABEL, RELEASE_BADGE_DESCRIPTION } from '../../components/release_badge'; +import { UpdateIcon } from '../../components/icons'; import { Content } from './content'; -import { Header } from './header'; export const DEFAULT_PANEL: DetailViewPanelName = 'overview'; @@ -20,66 +42,202 @@ export interface DetailParams { panel?: DetailViewPanelName; } +const Divider = styled.div` + width: 0; + height: 100%; + border-left: ${(props) => props.theme.eui.euiBorderThin}; +`; + +// Allows child text to be truncated +const FlexItemWithMinWidth = styled(EuiFlexItem)` + min-width: 0px; +`; + +function Breadcrumbs({ packageTitle }: { packageTitle: string }) { + useBreadcrumbs('integration_details', { pkgTitle: packageTitle }); + return null; +} + export function Detail() { // TODO: fix forced cast if possible const { pkgkey, panel = DEFAULT_PANEL } = useParams() as DetailParams; + const { getHref } = useLink(); + const hasWriteCapabilites = useCapabilities().write; - const [info, setInfo] = useState(null); + // Package info state + const [packageInfo, setPackageInfo] = useState(null); const setPackageInstallStatus = useSetPackageInstallStatus(); + const updateAvailable = + packageInfo && + 'savedObject' in packageInfo && + packageInfo.savedObject && + packageInfo.savedObject.attributes.version < packageInfo.latestVersion; + + // Fetch package info + const { data: packageInfoData, error: packageInfoError, isLoading } = useGetPackageInfoByKey( + pkgkey + ); + + // Track install status state useEffect(() => { - sendGetPackageInfoByKey(pkgkey).then((response) => { - const packageInfo = response.data?.response; - const title = packageInfo?.title; - const name = packageInfo?.name; + if (packageInfoData?.response) { + const packageInfoResponse = packageInfoData.response; + setPackageInfo(packageInfoResponse); + let installedVersion; - if (packageInfo && 'savedObject' in packageInfo) { - installedVersion = packageInfo.savedObject.attributes.version; + const { name } = packageInfoData.response; + if ('savedObject' in packageInfoResponse) { + installedVersion = packageInfoResponse.savedObject.attributes.version; } - const status: InstallStatus = packageInfo?.status as any; - - // track install status state + const status: InstallStatus = packageInfoResponse?.status as any; if (name) { setPackageInstallStatus({ name, status, version: installedVersion || null }); } - if (packageInfo) { - setInfo({ ...packageInfo, title: title || '' }); - } - }); - }, [pkgkey, setPackageInstallStatus]); - - if (!info) return null; - - return ; -} + } + }, [packageInfoData, setPackageInstallStatus, setPackageInfo]); -const FullWidthHeader = styled(EuiPage)` - border-bottom: ${(props) => props.theme.eui.euiBorderThin}; - padding-bottom: ${(props) => props.theme.eui.paddingSizes.xl}; -`; + const headerLeftContent = useMemo( + () => ( + + + {/* Allows button to break out of full width */} +
+ + + +
+
+ + + + {isLoading || !packageInfo ? ( + + ) : ( + + )} + + + + + + {/* Render space in place of package name while package info loads to prevent layout from jumping around */} +

{packageInfo?.title || '\u00A0'}

+
+
+ {packageInfo?.release && packageInfo.release !== 'ga' ? ( + + + + ) : null} +
+
+
+
+
+ ), + [getHref, isLoading, packageInfo] + ); -const FullWidthContent = styled(EuiPage)` - background-color: ${(props) => props.theme.eui.euiColorEmptyShade}; - padding-top: ${(props) => parseInt(props.theme.eui.paddingSizes.xl, 10) * 1.25}px; - flex-grow: 1; -`; + const headerRightContent = useMemo( + () => + packageInfo ? ( + <> + + + {[ + { + label: i18n.translate('xpack.ingestManager.epm.versionLabel', { + defaultMessage: 'Version', + }), + content: ( + + {packageInfo.version} + {updateAvailable ? ( + + + + ) : null} + + ), + }, + { isDivider: true }, + { + content: ( + + + + ), + }, + ].map((item, index) => ( + + {item.isDivider ?? false ? ( + + ) : item.label ? ( + + {item.label} + {item.content} + + ) : ( + item.content + )} + + ))} + + + ) : undefined, + [getHref, hasWriteCapabilites, packageInfo, pkgkey, updateAvailable] + ); -type LayoutProps = PackageInfo & Pick & Pick; -export function DetailLayout(props: LayoutProps) { - const { name: packageName, version, icons, restrictWidth, title: packageTitle } = props; - const iconType = usePackageIconType({ packageName, version, icons }); - useBreadcrumbs('integration_details', { pkgTitle: packageTitle }); return ( - - - -
- - - - - - - - + + {packageInfo ? : null} + {packageInfoError ? ( + + } + error={packageInfoError} + /> + ) : isLoading || !packageInfo ? ( + + ) : ( + + )} + ); } diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/layout.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/layout.tsx index a802e35add7db..c329596384730 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/layout.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/layout.tsx @@ -22,7 +22,7 @@ export const LeftColumn: FunctionComponent = ({ children, ...rest } export const CenterColumn: FunctionComponent = ({ children, ...rest }) => { return ( - + {children} ); diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/screenshots.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/screenshots.tsx index 696af14604c5b..d8388a71556d6 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/screenshots.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/screenshots.tsx @@ -3,9 +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 { EuiFlexGroup, EuiFlexItem, EuiImage, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; import React, { Fragment } from 'react'; import styled from 'styled-components'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiFlexGroup, EuiFlexItem, EuiImage, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; import { ScreenshotItem } from '../../../../types'; import { useLinks } from '../../hooks'; @@ -13,6 +14,29 @@ interface ScreenshotProps { images: ScreenshotItem[]; } +const getHorizontalPadding = (styledProps: any): number => + parseInt(styledProps.theme.eui.paddingSizes.xl, 10) * 2; +const getVerticalPadding = (styledProps: any): number => + parseInt(styledProps.theme.eui.paddingSizes.xl, 10) * 1.75; +const getPadding = (styledProps: any) => + styledProps.hascaption + ? `${styledProps.theme.eui.paddingSizes.xl} ${getHorizontalPadding( + styledProps + )}px ${getVerticalPadding(styledProps)}px` + : `${getHorizontalPadding(styledProps)}px ${getVerticalPadding(styledProps)}px`; +const ScreenshotsContainer = styled(EuiFlexGroup)` + background: linear-gradient(360deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 100%), + ${(styledProps) => styledProps.theme.eui.euiColorPrimary}; + padding: ${(styledProps) => getPadding(styledProps)}; + flex: 0 0 auto; + border-radius: ${(styledProps) => styledProps.theme.eui.euiBorderRadius}; +`; + +// fixes ie11 problems with nested flex items +const NestedEuiFlexItem = styled(EuiFlexItem)` + flex: 0 0 auto !important; +`; + export function Screenshots(props: ScreenshotProps) { const { toImage } = useLinks(); const { images } = props; @@ -21,36 +45,23 @@ export function Screenshots(props: ScreenshotProps) { const image = images[0]; const hasCaption = image.title ? true : false; - const getHorizontalPadding = (styledProps: any): number => - parseInt(styledProps.theme.eui.paddingSizes.xl, 10) * 2; - const getVerticalPadding = (styledProps: any): number => - parseInt(styledProps.theme.eui.paddingSizes.xl, 10) * 1.75; - const getPadding = (styledProps: any) => - hasCaption - ? `${styledProps.theme.eui.paddingSizes.xl} ${getHorizontalPadding( - styledProps - )}px ${getVerticalPadding(styledProps)}px` - : `${getHorizontalPadding(styledProps)}px ${getVerticalPadding(styledProps)}px`; - - const ScreenshotsContainer = styled(EuiFlexGroup)` - background: linear-gradient(360deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 100%), - ${(styledProps) => styledProps.theme.eui.euiColorPrimary}; - padding: ${(styledProps) => getPadding(styledProps)}; - flex: 0 0 auto; - border-radius: ${(styledProps) => styledProps.theme.eui.euiBorderRadius}; - `; - - // fixes ie11 problems with nested flex items - const NestedEuiFlexItem = styled(EuiFlexItem)` - flex: 0 0 auto !important; - `; return ( -

Screenshots

+

+ +

- + {hasCaption && ( diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/settings_panel.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/settings_panel.tsx index 125289ce3ee8d..4832a89479026 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/settings_panel.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/detail/settings_panel.tsx @@ -33,7 +33,7 @@ const NoteLabel = () => ( ); const UpdatesAvailableMsg = () => ( - + {entries(PanelDisplayNames).map(([panel, display]) => { - const Link = styled(EuiButtonEmpty).attrs({ - href: getHref('integration_details', { pkgkey: `${name}-${version}`, panel }), - })` - font-weight: ${(p) => - active === panel - ? p.theme.eui.euiFontWeightSemiBold - : p.theme.eui.euiFontWeightRegular}; - `; // Don't display usages tab as we haven't implemented this yet // FIXME: Restore when we implement usages page if (panel === 'usages' && (true || packageInstallStatus.status !== InstallStatus.installed)) @@ -50,7 +41,11 @@ export function SideNavLinks({ name, version, active }: NavLinkProps) { return (
- {display} + + {active === panel ? {display} : display} +
); })} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/header.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/header.tsx index c378e5a47a9b9..363b1ede89e9e 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/header.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/header.tsx @@ -39,22 +39,26 @@ export const HeroCopy = memo(() => { ); }); +const Illustration = styled(EuiImage)` + margin-bottom: -68px; + width: 80%; +`; + export const HeroImage = memo(() => { const { toAssets } = useLinks(); const { uiSettings } = useCore(); const IS_DARK_THEME = uiSettings.get('theme:darkMode'); - const Illustration = styled(EuiImage).attrs((props) => ({ - alt: i18n.translate('xpack.ingestManager.epm.illustrationAltText', { - defaultMessage: 'Illustration of an integration', - }), - url: IS_DARK_THEME - ? toAssets('illustration_integrations_darkmode.svg') - : toAssets('illustration_integrations_lightmode.svg'), - }))` - margin-bottom: -68px; - width: 80%; - `; - - return ; + return ( + + ); }); diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/index.tsx index c68833c1b2d95..a8e4d0105066b 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/index.tsx @@ -61,7 +61,9 @@ export function EPMHomePage() { function InstalledPackages() { useBreadcrumbs('integrations_installed'); - const { data: allPackages, isLoading: isLoadingPackages } = useGetPackages(); + const { data: allPackages, isLoading: isLoadingPackages } = useGetPackages({ + experimental: true, + }); const [selectedCategory, setSelectedCategory] = useState(''); const title = i18n.translate('xpack.ingestManager.epmList.installedTitle', { @@ -118,7 +120,8 @@ function AvailablePackages() { const queryParams = new URLSearchParams(useLocation().search); const initialCategory = queryParams.get('category') || ''; const [selectedCategory, setSelectedCategory] = useState(initialCategory); - const { data: categoryPackagesRes, isLoading: isLoadingPackages } = useGetPackages({ + const { data: allPackagesRes, isLoading: isLoadingAllPackages } = useGetPackages(); + const { data: categoryPackagesRes, isLoading: isLoadingCategoryPackages } = useGetPackages({ category: selectedCategory, }); const { data: categoriesRes, isLoading: isLoadingCategories } = useGetCategories(); @@ -126,7 +129,7 @@ function AvailablePackages() { categoryPackagesRes && categoryPackagesRes.response ? categoryPackagesRes.response : []; const title = i18n.translate('xpack.ingestManager.epmList.allTitle', { - defaultMessage: 'All integrations', + defaultMessage: 'Browse by category', }); const categories = [ @@ -135,13 +138,13 @@ function AvailablePackages() { title: i18n.translate('xpack.ingestManager.epmList.allPackagesFilterLinkText', { defaultMessage: 'All', }), - count: packages.length, + count: allPackagesRes?.response?.length || 0, }, ...(categoriesRes ? categoriesRes.response : []), ]; const controls = categories ? ( { @@ -156,7 +159,7 @@ function AvailablePackages() { return ( ; - allPackages: PackageList; -} - -export function SearchPackages({ searchTerm, localSearchRef, allPackages }: SearchPackagesProps) { - // this means the search index hasn't been built yet. - // i.e. the intial fetch of all packages hasn't finished - if (!localSearchRef.current) return
Still fetching matches. Try again in a moment.
; - - const matches = localSearchRef.current.search(searchTerm) as PackageList; - const matchingIds = matches.map((match) => match[searchIdField]); - const filtered = allPackages.filter((item) => matchingIds.includes(item[searchIdField])); - - return ; -} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/search_results.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/search_results.tsx deleted file mode 100644 index fbdcaac01931b..0000000000000 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/epm/screens/home/search_results.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { EuiText, EuiTitle } from '@elastic/eui'; -import React from 'react'; -import { PackageList } from '../../../../types'; -import { PackageListGrid } from '../../components/package_list_grid'; - -interface SearchResultsProps { - term: string; - results: PackageList; -} - -export function SearchResults({ term, results }: SearchResultsProps) { - const title = 'Search results'; - return ( - - - {results.length} results for "{term}" - - - } - /> - ); -} diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/types/index.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/types/index.ts index 9cd8a75642296..170a9cedc08d9 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/types/index.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/types/index.ts @@ -91,7 +91,9 @@ export { RequirementVersion, ScreenshotItem, ServiceName, + GetCategoriesRequest, GetCategoriesResponse, + GetPackagesRequest, GetPackagesResponse, GetLimitedPackagesResponse, GetInfoResponse, @@ -101,6 +103,7 @@ export { InstallStatus, InstallationStatus, Installable, + RegistryRelease, } from '../../../../common'; export * from './intra_app_route_state'; diff --git a/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts b/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts index a50b3b13faeab..fe813f29b72e6 100644 --- a/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts +++ b/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts @@ -14,6 +14,7 @@ import { GetLimitedPackagesResponse, } from '../../../common'; import { + GetCategoriesRequestSchema, GetPackagesRequestSchema, GetFileRequestSchema, GetInfoRequestSchema, @@ -30,9 +31,12 @@ import { getLimitedPackages, } from '../../services/epm/packages'; -export const getCategoriesHandler: RequestHandler = async (context, request, response) => { +export const getCategoriesHandler: RequestHandler< + undefined, + TypeOf +> = async (context, request, response) => { try { - const res = await getCategories(); + const res = await getCategories(request.query); const body: GetCategoriesResponse = { response: res, success: true, @@ -54,7 +58,7 @@ export const getListHandler: RequestHandler< const savedObjectsClient = context.core.savedObjects.client; const res = await getPackages({ savedObjectsClient, - category: request.query.category, + ...request.query, }); const body: GetPackagesResponse = { response: res, diff --git a/x-pack/plugins/ingest_manager/server/routes/epm/index.ts b/x-pack/plugins/ingest_manager/server/routes/epm/index.ts index ffaf0ce46c89a..b524a7b33923e 100644 --- a/x-pack/plugins/ingest_manager/server/routes/epm/index.ts +++ b/x-pack/plugins/ingest_manager/server/routes/epm/index.ts @@ -15,6 +15,7 @@ import { deletePackageHandler, } from './handlers'; import { + GetCategoriesRequestSchema, GetPackagesRequestSchema, GetFileRequestSchema, GetInfoRequestSchema, @@ -26,7 +27,7 @@ export const registerRoutes = (router: IRouter) => { router.get( { path: EPM_API_ROUTES.CATEGORIES_PATTERN, - validate: false, + validate: GetCategoriesRequestSchema, options: { tags: [`access:${PLUGIN_ID}-read`] }, }, getCategoriesHandler diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/get.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/get.ts index ad9635cc02e06..78aa513d1a1dc 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/packages/get.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/get.ts @@ -17,8 +17,8 @@ function nameAsTitle(name: string) { return name.charAt(0).toUpperCase() + name.substr(1).toLowerCase(); } -export async function getCategories() { - return Registry.fetchCategories(); +export async function getCategories(options: Registry.CategoriesParams) { + return Registry.fetchCategories(options); } export async function getPackages( @@ -26,8 +26,8 @@ export async function getPackages( savedObjectsClient: SavedObjectsClientContract; } & Registry.SearchParams ) { - const { savedObjectsClient } = options; - const registryItems = await Registry.fetchList({ category: options.category }).then((items) => { + const { savedObjectsClient, experimental, category } = options; + const registryItems = await Registry.fetchList({ category, experimental }).then((items) => { return items.map((item) => Object.assign({}, item, { title: item.title || nameAsTitle(item.name) }) ); @@ -56,7 +56,7 @@ export async function getLimitedPackages(options: { savedObjectsClient: SavedObjectsClientContract; }): Promise { const { savedObjectsClient } = options; - const allPackages = await getPackages({ savedObjectsClient }); + const allPackages = await getPackages({ savedObjectsClient, experimental: true }); const installedPackages = allPackages.filter( (pkg) => (pkg.status = InstallationStatus.installed) ); diff --git a/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts b/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts index 0393cabca8ba2..ea906517f6dec 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts @@ -26,6 +26,11 @@ export { ArchiveEntry } from './extract'; export interface SearchParams { category?: CategoryId; + experimental?: boolean; +} + +export interface CategoriesParams { + experimental?: boolean; } export const pkgToPkgKey = ({ name, version }: { name: string; version: string }) => @@ -34,19 +39,23 @@ export const pkgToPkgKey = ({ name, version }: { name: string; version: string } export async function fetchList(params?: SearchParams): Promise { const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/search`); - if (params && params.category) { - url.searchParams.set('category', params.category); + if (params) { + if (params.category) { + url.searchParams.set('category', params.category); + } + if (params.experimental) { + url.searchParams.set('experimental', params.experimental.toString()); + } } return fetchUrl(url.toString()).then(JSON.parse); } -export async function fetchFindLatestPackage( - packageName: string, - internal: boolean = true -): Promise { +export async function fetchFindLatestPackage(packageName: string): Promise { const registryUrl = getRegistryUrl(); - const url = new URL(`${registryUrl}/search?package=${packageName}&internal=${internal}`); + const url = new URL( + `${registryUrl}/search?package=${packageName}&internal=true&experimental=true` + ); const res = await fetchUrl(url.toString()); const searchResults = JSON.parse(res); if (searchResults.length) { @@ -66,9 +75,16 @@ export async function fetchFile(filePath: string): Promise { return getResponse(`${registryUrl}${filePath}`); } -export async function fetchCategories(): Promise { +export async function fetchCategories(params?: CategoriesParams): Promise { const registryUrl = getRegistryUrl(); - return fetchUrl(`${registryUrl}/categories`).then(JSON.parse); + const url = new URL(`${registryUrl}/categories`); + if (params) { + if (params.experimental) { + url.searchParams.set('experimental', params.experimental.toString()); + } + } + + return fetchUrl(url.toString()).then(JSON.parse); } export async function getArchiveInfo( diff --git a/x-pack/plugins/ingest_manager/server/types/rest_spec/epm.ts b/x-pack/plugins/ingest_manager/server/types/rest_spec/epm.ts index 3ed6ee553a507..08f47a8f1caaa 100644 --- a/x-pack/plugins/ingest_manager/server/types/rest_spec/epm.ts +++ b/x-pack/plugins/ingest_manager/server/types/rest_spec/epm.ts @@ -5,9 +5,16 @@ */ import { schema } from '@kbn/config-schema'; +export const GetCategoriesRequestSchema = { + query: schema.object({ + experimental: schema.maybe(schema.boolean()), + }), +}; + export const GetPackagesRequestSchema = { query: schema.object({ category: schema.maybe(schema.string()), + experimental: schema.maybe(schema.boolean()), }), }; From 595e9c2d8d5d131f1ab2dfddfa2c33b8aa0a08cb Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Wed, 8 Jul 2020 14:08:53 -0400 Subject: [PATCH 24/38] [Ingest Manager] Fix agent config out of date display (#71103) --- .../common/openapi/spec_oas3.json | 3 -- .../common/types/models/agent.ts | 1 - .../sections/fleet/agent_list_page/index.tsx | 18 ++++++++--- .../server/saved_objects/index.ts | 1 - .../server/services/agent_config_update.ts | 6 +--- .../server/services/agents/reassign.ts | 1 - .../server/services/agents/update.ts | 32 ------------------- 7 files changed, 14 insertions(+), 48 deletions(-) diff --git a/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json b/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json index c374cbb3bb146..4b10dab5d1ae5 100644 --- a/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json +++ b/x-pack/plugins/ingest_manager/common/openapi/spec_oas3.json @@ -4146,9 +4146,6 @@ "config_revision": { "type": ["number", "null"] }, - "config_newest_revision": { - "type": "number" - }, "last_checkin": { "type": "string" }, diff --git a/x-pack/plugins/ingest_manager/common/types/models/agent.ts b/x-pack/plugins/ingest_manager/common/types/models/agent.ts index 27f0c61685fd4..1f4718acc2c1f 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/agent.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/agent.ts @@ -81,7 +81,6 @@ interface AgentBase { default_api_key_id?: string; config_id?: string; config_revision?: number | null; - config_newest_revision?: number; last_checkin?: string; user_provided_metadata: AgentMetadata; local_metadata: AgentMetadata; diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx index ec58789becb72..30204603e764c 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/fleet/agent_list_page/index.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, { useState } from 'react'; +import React, { useState, useMemo } from 'react'; import { EuiBasicTable, EuiButton, @@ -25,7 +25,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage, FormattedRelative } from '@kbn/i18n/react'; import { CSSProperties } from 'styled-components'; import { AgentEnrollmentFlyout } from '../components'; -import { Agent } from '../../../types'; +import { Agent, AgentConfig } from '../../../types'; import { usePagination, useCapabilities, @@ -220,6 +220,13 @@ export const AgentListPage: React.FunctionComponent<{}> = () => { }); const agentConfigs = agentConfigsRequest.data ? agentConfigsRequest.data.items : []; + const agentConfigsIndexedById = useMemo(() => { + return agentConfigs.reduce((acc, config) => { + acc[config.id] = config; + + return acc; + }, {} as { [k: string]: AgentConfig }); + }, [agentConfigs]); const { isLoading: isAgentConfigsLoading } = agentConfigsRequest; const columns = [ @@ -271,9 +278,10 @@ export const AgentListPage: React.FunctionComponent<{}> = () => {
)} - {agent.config_revision && - agent.config_newest_revision && - agent.config_newest_revision > agent.config_revision && ( + {agent.config_id && + agent.config_revision && + agentConfigsIndexedById[agent.config_id] && + agentConfigsIndexedById[agent.config_id].revision > agent.config_revision && ( diff --git a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts index b47cf4f7e7c3b..a5b5cc4337908 100644 --- a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts +++ b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts @@ -64,7 +64,6 @@ const savedObjectTypes: { [key: string]: SavedObjectsType } = { last_updated: { type: 'date' }, last_checkin: { type: 'date' }, config_revision: { type: 'integer' }, - config_newest_revision: { type: 'integer' }, default_api_key_id: { type: 'keyword' }, default_api_key: { type: 'binary', index: false }, updated_at: { type: 'date' }, diff --git a/x-pack/plugins/ingest_manager/server/services/agent_config_update.ts b/x-pack/plugins/ingest_manager/server/services/agent_config_update.ts index 1cca165906732..3d40d128afda8 100644 --- a/x-pack/plugins/ingest_manager/server/services/agent_config_update.ts +++ b/x-pack/plugins/ingest_manager/server/services/agent_config_update.ts @@ -6,7 +6,7 @@ import { SavedObjectsClientContract } from 'src/core/server'; import { generateEnrollmentAPIKey, deleteEnrollmentApiKeyForConfigId } from './api_keys'; -import { updateAgentsForConfigId, unenrollForConfigId } from './agents'; +import { unenrollForConfigId } from './agents'; import { outputService } from './output'; export async function agentConfigUpdateEventHandler( @@ -26,10 +26,6 @@ export async function agentConfigUpdateEventHandler( }); } - if (action === 'updated') { - await updateAgentsForConfigId(soClient, configId); - } - if (action === 'deleted') { await unenrollForConfigId(soClient, configId); await deleteEnrollmentApiKeyForConfigId(soClient, configId); diff --git a/x-pack/plugins/ingest_manager/server/services/agents/reassign.ts b/x-pack/plugins/ingest_manager/server/services/agents/reassign.ts index f8142af376eb3..ecc2c987d04b6 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/reassign.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/reassign.ts @@ -23,6 +23,5 @@ export async function reassignAgent( await soClient.update(AGENT_SAVED_OBJECT_TYPE, agentId, { config_id: newConfigId, config_revision: null, - config_newest_revision: config.revision, }); } diff --git a/x-pack/plugins/ingest_manager/server/services/agents/update.ts b/x-pack/plugins/ingest_manager/server/services/agents/update.ts index ec7a42ff11b7a..11ad76fe81784 100644 --- a/x-pack/plugins/ingest_manager/server/services/agents/update.ts +++ b/x-pack/plugins/ingest_manager/server/services/agents/update.ts @@ -8,38 +8,6 @@ import { SavedObjectsClientContract } from 'src/core/server'; import { listAgents } from './crud'; import { AGENT_SAVED_OBJECT_TYPE } from '../../constants'; import { unenrollAgent } from './unenroll'; -import { agentConfigService } from '../agent_config'; - -export async function updateAgentsForConfigId( - soClient: SavedObjectsClientContract, - configId: string -) { - const config = await agentConfigService.get(soClient, configId); - if (!config) { - throw new Error('Config not found'); - } - let hasMore = true; - let page = 1; - while (hasMore) { - const { agents } = await listAgents(soClient, { - kuery: `${AGENT_SAVED_OBJECT_TYPE}.config_id:"${configId}"`, - page: page++, - perPage: 1000, - showInactive: true, - }); - if (agents.length === 0) { - hasMore = false; - break; - } - const agentUpdate = agents.map((agent) => ({ - id: agent.id, - type: AGENT_SAVED_OBJECT_TYPE, - attributes: { config_newest_revision: config.revision }, - })); - - await soClient.bulkUpdate(agentUpdate); - } -} export async function unenrollForConfigId(soClient: SavedObjectsClientContract, configId: string) { let hasMore = true; From 203fde92ac1f7c2e061429acbdcede9deb49fa86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Wed, 8 Jul 2020 20:52:16 +0100 Subject: [PATCH 25/38] Observability overview page (#69141) * creating overview page and menu * styling the home page * adjusting breadcrumb * renaming isnt working * renaming isnt working * renaming isnt working * fixing import * fixing scroll when resize window * fixing eslint errors * prepending links * adding target option * refactoring * adding dark mode support * fixing prettier format * fixing i18n * reverting some unnecessary changes * addressing PR comments * fixing functional tests * ordering observability menu * fixing tests * addressing PR comments * fixing scroll * addressing pr comments * addressing pr comments * creating overview page * mocking data * mocking data * refactoring * crearting apm chart * adding overview page * adding metric charts * adding charts * changing mock data location * adding mock registry * adding date picker * adding route validation * adding io-ts * adding io-ts * adding io-ts support * fixing imports and mock data * adding app folder * creating a section for each plugin * adding stats * adding domain min max * refactoring xcoordinaters * fixing route * adding bucket size * adding group property on logs * adding home page * dont break page if location state is undefined * each component fetches its own data * Refactoring * adding loading indicator to chart * fixing uptime chart * adding brush functionality to charts * fixing refresh button and auto refresh function * adding horizontal line to accordion section * adding emptySection to dashboard page * adding add data button * adding resources section * removing margins from horizontal rule * changing min interval to 60s * fixing empty section * removing unnecessary code * adding unit tests * fixing imports * adding initial story book for observability * removeing uptime mock data * fixing xDomain to show correct data on x-axis * fixing empty state alignment * adding story book and other improvements * adding news component * adding support to custom colors on EuiProgress and EuiStats * removing infra mock data * adding error message when api throwns an error * adding alert section * Adding alerts * adding alert api call * addressing PR comments * adding storybook * adding feedback button * addressing PR comments * chamging plugins return data * fixing kibana app navigation * fixing unit test * fixing ts issues * addressing PR comments * using lodash truncate * adding comment * updating public documentation * fixing alerts request * fixing unit test * fixing unit test * aligin beta badge to the center * adding moment duration to get the units as seconds * addressing PR comments * addressing PR comments --- ...-plugin-plugins-data-public.ui_settings.md | 55 +- ...-plugin-plugins-data-server.ui_settings.md | 55 +- src/dev/storybook/aliases.ts | 1 + src/plugins/data/common/constants.ts | 3 +- src/plugins/data/public/public.api.md | 55 +- src/plugins/data/server/server.api.md | 55 +- x-pack/plugins/apm/public/plugin.ts | 3 +- .../rest/observability.dashboard.test.ts | 55 +- .../services/rest/observability_dashboard.ts | 28 +- .../metrics_overview_fetchers.test.ts.snap | 7 - .../infra/public/metrics_overview_fetchers.ts | 21 - .../public/application/index.tsx | 57 +- .../app/chart_container/index.test.tsx | 29 + .../components/app/chart_container/index.tsx | 43 + .../app/empty_section/index.test.tsx | 41 + .../components/app/empty_section/index.tsx | 41 + .../components/app/header/index.test.tsx | 23 + .../public/components/app/header/index.tsx | 97 + .../components/app/layout/with_header.tsx | 54 + .../public/components/app/news/index.scss | 3 + .../public/components/app/news/index.test.tsx | 16 + .../public/components/app/news/index.tsx | 97 + .../app/news/mock/news.mock.data.ts | 34 + .../components/app/resources/index.test.tsx | 17 + .../public/components/app/resources/index.tsx | 49 + .../components/app/section/alerts/index.tsx | 129 + .../components/app/section/apm/index.test.tsx | 53 + .../components/app/section/apm/index.tsx | 112 + .../app/section/apm/mock_data/apm.mock.ts | 168 ++ .../app/section/error_panel/index.tsx | 22 + .../components/app/section/helper.test.ts | 37 + .../public/components/app/section/helper.ts | 29 + .../components/app/section/index.test.tsx | 43 + .../public/components/app/section/index.tsx | 62 + .../components/app/section/logs/index.tsx | 151 ++ .../components/app/section/metrics/index.tsx | 182 ++ .../components/app/section/uptime/index.tsx | 179 ++ .../components/app/styled_stat/index.tsx | 27 + .../action_menu/index.tsx} | 0 .../components/shared/data_picker/index.tsx | 89 + .../observability/public/data_handler.ts | 11 + .../public/hooks/use_chart_theme.tsx | 13 + .../public/hooks/use_fetcher.tsx | 84 + .../public/hooks/use_kibana_ui_settings.tsx | 18 + .../public/hooks/use_url_params.tsx | 52 + x-pack/plugins/observability/public/index.ts | 2 +- .../observability/public/pages/home/index.tsx | 178 +- .../public/pages/home/section.ts | 18 +- .../public/pages/landing/index.tsx | 116 + .../public/pages/overview/empty_section.ts | 90 + .../public/pages/overview/index.tsx | 198 ++ .../pages/overview/loading_observability.tsx | 53 + .../public/pages/overview/mock/alerts.mock.ts | 57 + .../public/pages/overview/mock/apm.mock.ts | 627 +++++ .../public/pages/overview/mock/logs.mock.ts | 2326 +++++++++++++++++ .../pages/overview/mock/metrics.mock.ts | 133 + .../public/pages/overview/mock/uptime.mock.ts | 1218 +++++++++ .../pages/overview/overview.stories.tsx | 534 ++++ .../observability/public/routes/index.tsx | 71 + .../observability/public/routes/json_rt.ts | 21 + .../services/get_observability_alerts.test.ts | 91 + .../services/get_observability_alerts.ts | 27 + .../typings/fetch_overview_data/index.ts | 12 +- .../public/typings/section/index.ts | 17 + .../observability/public/utils/date.ts | 15 + .../public/utils/format_stat_value.test.ts | 49 + .../public/utils/format_stat_value.ts | 20 + .../utils/get_bucket_size/calculate_auto.js | 77 + .../utils/get_bucket_size/index.test.ts | 70 + .../public/utils/get_bucket_size/index.ts | 35 + .../utils/get_bucket_size/unit_to_seconds.ts | 25 + .../public/utils/test_helper.tsx | 26 + .../plugins/observability/public/utils/url.ts | 19 + .../observability/scripts/storybook.js | 16 + .../public/apps/uptime_overview_fetcher.ts | 5 - 75 files changed, 8153 insertions(+), 393 deletions(-) create mode 100644 x-pack/plugins/observability/public/components/app/chart_container/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/chart_container/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/empty_section/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/empty_section/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/header/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/header/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/layout/with_header.tsx create mode 100644 x-pack/plugins/observability/public/components/app/news/index.scss create mode 100644 x-pack/plugins/observability/public/components/app/news/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/news/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/news/mock/news.mock.data.ts create mode 100644 x-pack/plugins/observability/public/components/app/resources/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/resources/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/alerts/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/apm/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/apm/mock_data/apm.mock.ts create mode 100644 x-pack/plugins/observability/public/components/app/section/error_panel/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/helper.test.ts create mode 100644 x-pack/plugins/observability/public/components/app/section/helper.ts create mode 100644 x-pack/plugins/observability/public/components/app/section/index.test.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/logs/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/metrics/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/section/uptime/index.tsx create mode 100644 x-pack/plugins/observability/public/components/app/styled_stat/index.tsx rename x-pack/plugins/observability/public/components/{action_menu.tsx => shared/action_menu/index.tsx} (100%) create mode 100644 x-pack/plugins/observability/public/components/shared/data_picker/index.tsx create mode 100644 x-pack/plugins/observability/public/hooks/use_chart_theme.tsx create mode 100644 x-pack/plugins/observability/public/hooks/use_fetcher.tsx create mode 100644 x-pack/plugins/observability/public/hooks/use_kibana_ui_settings.tsx create mode 100644 x-pack/plugins/observability/public/hooks/use_url_params.tsx create mode 100644 x-pack/plugins/observability/public/pages/landing/index.tsx create mode 100644 x-pack/plugins/observability/public/pages/overview/empty_section.ts create mode 100644 x-pack/plugins/observability/public/pages/overview/index.tsx create mode 100644 x-pack/plugins/observability/public/pages/overview/loading_observability.tsx create mode 100644 x-pack/plugins/observability/public/pages/overview/mock/alerts.mock.ts create mode 100644 x-pack/plugins/observability/public/pages/overview/mock/apm.mock.ts create mode 100644 x-pack/plugins/observability/public/pages/overview/mock/logs.mock.ts create mode 100644 x-pack/plugins/observability/public/pages/overview/mock/metrics.mock.ts create mode 100644 x-pack/plugins/observability/public/pages/overview/mock/uptime.mock.ts create mode 100644 x-pack/plugins/observability/public/pages/overview/overview.stories.tsx create mode 100644 x-pack/plugins/observability/public/routes/index.tsx create mode 100644 x-pack/plugins/observability/public/routes/json_rt.ts create mode 100644 x-pack/plugins/observability/public/services/get_observability_alerts.test.ts create mode 100644 x-pack/plugins/observability/public/services/get_observability_alerts.ts create mode 100644 x-pack/plugins/observability/public/typings/section/index.ts create mode 100644 x-pack/plugins/observability/public/utils/date.ts create mode 100644 x-pack/plugins/observability/public/utils/format_stat_value.test.ts create mode 100644 x-pack/plugins/observability/public/utils/format_stat_value.ts create mode 100644 x-pack/plugins/observability/public/utils/get_bucket_size/calculate_auto.js create mode 100644 x-pack/plugins/observability/public/utils/get_bucket_size/index.test.ts create mode 100644 x-pack/plugins/observability/public/utils/get_bucket_size/index.ts create mode 100644 x-pack/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts create mode 100644 x-pack/plugins/observability/public/utils/test_helper.tsx create mode 100644 x-pack/plugins/observability/public/utils/url.ts create mode 100644 x-pack/plugins/observability/scripts/storybook.js diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md index a48f4920b3d26..e515c3513df6c 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.ui_settings.md @@ -8,32 +8,33 @@ ```typescript UI_SETTINGS: { - META_FIELDS: string; - DOC_HIGHLIGHT: string; - QUERY_STRING_OPTIONS: string; - QUERY_ALLOW_LEADING_WILDCARDS: string; - SEARCH_QUERY_LANGUAGE: string; - SORT_OPTIONS: string; - COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: string; - COURIER_SET_REQUEST_PREFERENCE: string; - COURIER_CUSTOM_REQUEST_PREFERENCE: string; - COURIER_MAX_CONCURRENT_SHARD_REQUESTS: string; - COURIER_BATCH_SEARCHES: string; - SEARCH_INCLUDE_FROZEN: string; - HISTOGRAM_BAR_TARGET: string; - HISTOGRAM_MAX_BARS: string; - HISTORY_LIMIT: string; - SHORT_DOTS_ENABLE: string; - FORMAT_DEFAULT_TYPE_MAP: string; - FORMAT_NUMBER_DEFAULT_PATTERN: string; - FORMAT_PERCENT_DEFAULT_PATTERN: string; - FORMAT_BYTES_DEFAULT_PATTERN: string; - FORMAT_CURRENCY_DEFAULT_PATTERN: string; - FORMAT_NUMBER_DEFAULT_LOCALE: string; - TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: string; - TIMEPICKER_QUICK_RANGES: string; - INDEXPATTERN_PLACEHOLDER: string; - FILTERS_PINNED_BY_DEFAULT: string; - FILTERS_EDITOR_SUGGEST_VALUES: string; + readonly META_FIELDS: "metaFields"; + readonly DOC_HIGHLIGHT: "doc_table:highlight"; + readonly QUERY_STRING_OPTIONS: "query:queryString:options"; + readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; + readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; + readonly SORT_OPTIONS: "sort:options"; + readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; + readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; + readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; + readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; + readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; + readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; + readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; + readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; + readonly HISTORY_LIMIT: "history:limit"; + readonly SHORT_DOTS_ENABLE: "shortDots:enable"; + readonly FORMAT_DEFAULT_TYPE_MAP: "format:defaultTypeMap"; + readonly FORMAT_NUMBER_DEFAULT_PATTERN: "format:number:defaultPattern"; + readonly FORMAT_PERCENT_DEFAULT_PATTERN: "format:percent:defaultPattern"; + readonly FORMAT_BYTES_DEFAULT_PATTERN: "format:bytes:defaultPattern"; + readonly FORMAT_CURRENCY_DEFAULT_PATTERN: "format:currency:defaultPattern"; + readonly FORMAT_NUMBER_DEFAULT_LOCALE: "format:number:defaultLocale"; + readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; + readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; + readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; + readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; + readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; + readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; } ``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md index 855cfd11d00ea..e419b64cd43aa 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.ui_settings.md @@ -8,32 +8,33 @@ ```typescript UI_SETTINGS: { - META_FIELDS: string; - DOC_HIGHLIGHT: string; - QUERY_STRING_OPTIONS: string; - QUERY_ALLOW_LEADING_WILDCARDS: string; - SEARCH_QUERY_LANGUAGE: string; - SORT_OPTIONS: string; - COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: string; - COURIER_SET_REQUEST_PREFERENCE: string; - COURIER_CUSTOM_REQUEST_PREFERENCE: string; - COURIER_MAX_CONCURRENT_SHARD_REQUESTS: string; - COURIER_BATCH_SEARCHES: string; - SEARCH_INCLUDE_FROZEN: string; - HISTOGRAM_BAR_TARGET: string; - HISTOGRAM_MAX_BARS: string; - HISTORY_LIMIT: string; - SHORT_DOTS_ENABLE: string; - FORMAT_DEFAULT_TYPE_MAP: string; - FORMAT_NUMBER_DEFAULT_PATTERN: string; - FORMAT_PERCENT_DEFAULT_PATTERN: string; - FORMAT_BYTES_DEFAULT_PATTERN: string; - FORMAT_CURRENCY_DEFAULT_PATTERN: string; - FORMAT_NUMBER_DEFAULT_LOCALE: string; - TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: string; - TIMEPICKER_QUICK_RANGES: string; - INDEXPATTERN_PLACEHOLDER: string; - FILTERS_PINNED_BY_DEFAULT: string; - FILTERS_EDITOR_SUGGEST_VALUES: string; + readonly META_FIELDS: "metaFields"; + readonly DOC_HIGHLIGHT: "doc_table:highlight"; + readonly QUERY_STRING_OPTIONS: "query:queryString:options"; + readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; + readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; + readonly SORT_OPTIONS: "sort:options"; + readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; + readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; + readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; + readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; + readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; + readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; + readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; + readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; + readonly HISTORY_LIMIT: "history:limit"; + readonly SHORT_DOTS_ENABLE: "shortDots:enable"; + readonly FORMAT_DEFAULT_TYPE_MAP: "format:defaultTypeMap"; + readonly FORMAT_NUMBER_DEFAULT_PATTERN: "format:number:defaultPattern"; + readonly FORMAT_PERCENT_DEFAULT_PATTERN: "format:percent:defaultPattern"; + readonly FORMAT_BYTES_DEFAULT_PATTERN: "format:bytes:defaultPattern"; + readonly FORMAT_CURRENCY_DEFAULT_PATTERN: "format:currency:defaultPattern"; + readonly FORMAT_NUMBER_DEFAULT_LOCALE: "format:number:defaultLocale"; + readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; + readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; + readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; + readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; + readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; + readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; } ``` diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index 85bfd4a7a4d26..9d9f5616b5a33 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -26,4 +26,5 @@ export const storybookAliases = { infra: 'x-pack/legacy/plugins/infra/scripts/storybook.js', security_solution: 'x-pack/plugins/security_solution/scripts/storybook.js', ui_actions_enhanced: 'x-pack/plugins/ui_actions_enhanced/scripts/storybook.js', + observability: 'x-pack/plugins/observability/scripts/storybook.js', }; diff --git a/src/plugins/data/common/constants.ts b/src/plugins/data/common/constants.ts index 8ec72dc1f9a74..22db1552e4303 100644 --- a/src/plugins/data/common/constants.ts +++ b/src/plugins/data/common/constants.ts @@ -44,7 +44,8 @@ export const UI_SETTINGS = { FORMAT_NUMBER_DEFAULT_LOCALE: 'format:number:defaultLocale', TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: 'timepicker:refreshIntervalDefaults', TIMEPICKER_QUICK_RANGES: 'timepicker:quickRanges', + TIMEPICKER_TIME_DEFAULTS: 'timepicker:timeDefaults', INDEXPATTERN_PLACEHOLDER: 'indexPattern:placeholder', FILTERS_PINNED_BY_DEFAULT: 'filters:pinnedByDefault', FILTERS_EDITOR_SUGGEST_VALUES: 'filterEditor:suggestValues', -}; +} as const; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index c8110dbfd0041..edc8748a29ecd 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -1906,33 +1906,34 @@ export interface TimeRange { // // @public (undocumented) export const UI_SETTINGS: { - META_FIELDS: string; - DOC_HIGHLIGHT: string; - QUERY_STRING_OPTIONS: string; - QUERY_ALLOW_LEADING_WILDCARDS: string; - SEARCH_QUERY_LANGUAGE: string; - SORT_OPTIONS: string; - COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: string; - COURIER_SET_REQUEST_PREFERENCE: string; - COURIER_CUSTOM_REQUEST_PREFERENCE: string; - COURIER_MAX_CONCURRENT_SHARD_REQUESTS: string; - COURIER_BATCH_SEARCHES: string; - SEARCH_INCLUDE_FROZEN: string; - HISTOGRAM_BAR_TARGET: string; - HISTOGRAM_MAX_BARS: string; - HISTORY_LIMIT: string; - SHORT_DOTS_ENABLE: string; - FORMAT_DEFAULT_TYPE_MAP: string; - FORMAT_NUMBER_DEFAULT_PATTERN: string; - FORMAT_PERCENT_DEFAULT_PATTERN: string; - FORMAT_BYTES_DEFAULT_PATTERN: string; - FORMAT_CURRENCY_DEFAULT_PATTERN: string; - FORMAT_NUMBER_DEFAULT_LOCALE: string; - TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: string; - TIMEPICKER_QUICK_RANGES: string; - INDEXPATTERN_PLACEHOLDER: string; - FILTERS_PINNED_BY_DEFAULT: string; - FILTERS_EDITOR_SUGGEST_VALUES: string; + readonly META_FIELDS: "metaFields"; + readonly DOC_HIGHLIGHT: "doc_table:highlight"; + readonly QUERY_STRING_OPTIONS: "query:queryString:options"; + readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; + readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; + readonly SORT_OPTIONS: "sort:options"; + readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; + readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; + readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; + readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; + readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; + readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; + readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; + readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; + readonly HISTORY_LIMIT: "history:limit"; + readonly SHORT_DOTS_ENABLE: "shortDots:enable"; + readonly FORMAT_DEFAULT_TYPE_MAP: "format:defaultTypeMap"; + readonly FORMAT_NUMBER_DEFAULT_PATTERN: "format:number:defaultPattern"; + readonly FORMAT_PERCENT_DEFAULT_PATTERN: "format:percent:defaultPattern"; + readonly FORMAT_BYTES_DEFAULT_PATTERN: "format:bytes:defaultPattern"; + readonly FORMAT_CURRENCY_DEFAULT_PATTERN: "format:currency:defaultPattern"; + readonly FORMAT_NUMBER_DEFAULT_LOCALE: "format:number:defaultLocale"; + readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; + readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; + readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; + readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; + readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; + readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; }; diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index 0048816456e17..6b62d942de688 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -767,33 +767,34 @@ export type TStrategyTypes = typeof ES_SEARCH_STRATEGY | string; // // @public (undocumented) export const UI_SETTINGS: { - META_FIELDS: string; - DOC_HIGHLIGHT: string; - QUERY_STRING_OPTIONS: string; - QUERY_ALLOW_LEADING_WILDCARDS: string; - SEARCH_QUERY_LANGUAGE: string; - SORT_OPTIONS: string; - COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: string; - COURIER_SET_REQUEST_PREFERENCE: string; - COURIER_CUSTOM_REQUEST_PREFERENCE: string; - COURIER_MAX_CONCURRENT_SHARD_REQUESTS: string; - COURIER_BATCH_SEARCHES: string; - SEARCH_INCLUDE_FROZEN: string; - HISTOGRAM_BAR_TARGET: string; - HISTOGRAM_MAX_BARS: string; - HISTORY_LIMIT: string; - SHORT_DOTS_ENABLE: string; - FORMAT_DEFAULT_TYPE_MAP: string; - FORMAT_NUMBER_DEFAULT_PATTERN: string; - FORMAT_PERCENT_DEFAULT_PATTERN: string; - FORMAT_BYTES_DEFAULT_PATTERN: string; - FORMAT_CURRENCY_DEFAULT_PATTERN: string; - FORMAT_NUMBER_DEFAULT_LOCALE: string; - TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: string; - TIMEPICKER_QUICK_RANGES: string; - INDEXPATTERN_PLACEHOLDER: string; - FILTERS_PINNED_BY_DEFAULT: string; - FILTERS_EDITOR_SUGGEST_VALUES: string; + readonly META_FIELDS: "metaFields"; + readonly DOC_HIGHLIGHT: "doc_table:highlight"; + readonly QUERY_STRING_OPTIONS: "query:queryString:options"; + readonly QUERY_ALLOW_LEADING_WILDCARDS: "query:allowLeadingWildcards"; + readonly SEARCH_QUERY_LANGUAGE: "search:queryLanguage"; + readonly SORT_OPTIONS: "sort:options"; + readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: "courier:ignoreFilterIfFieldNotInIndex"; + readonly COURIER_SET_REQUEST_PREFERENCE: "courier:setRequestPreference"; + readonly COURIER_CUSTOM_REQUEST_PREFERENCE: "courier:customRequestPreference"; + readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: "courier:maxConcurrentShardRequests"; + readonly COURIER_BATCH_SEARCHES: "courier:batchSearches"; + readonly SEARCH_INCLUDE_FROZEN: "search:includeFrozen"; + readonly HISTOGRAM_BAR_TARGET: "histogram:barTarget"; + readonly HISTOGRAM_MAX_BARS: "histogram:maxBars"; + readonly HISTORY_LIMIT: "history:limit"; + readonly SHORT_DOTS_ENABLE: "shortDots:enable"; + readonly FORMAT_DEFAULT_TYPE_MAP: "format:defaultTypeMap"; + readonly FORMAT_NUMBER_DEFAULT_PATTERN: "format:number:defaultPattern"; + readonly FORMAT_PERCENT_DEFAULT_PATTERN: "format:percent:defaultPattern"; + readonly FORMAT_BYTES_DEFAULT_PATTERN: "format:bytes:defaultPattern"; + readonly FORMAT_CURRENCY_DEFAULT_PATTERN: "format:currency:defaultPattern"; + readonly FORMAT_NUMBER_DEFAULT_LOCALE: "format:number:defaultLocale"; + readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: "timepicker:refreshIntervalDefaults"; + readonly TIMEPICKER_QUICK_RANGES: "timepicker:quickRanges"; + readonly TIMEPICKER_TIME_DEFAULTS: "timepicker:timeDefaults"; + readonly INDEXPATTERN_PLACEHOLDER: "indexPattern:placeholder"; + readonly FILTERS_PINNED_BY_DEFAULT: "filters:pinnedByDefault"; + readonly FILTERS_EDITOR_SUGGEST_VALUES: "filterEditor:suggestValues"; }; diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index f31ad83666a17..6e3a29d9f3dbc 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -6,7 +6,6 @@ import { i18n } from '@kbn/i18n'; import { lazy } from 'react'; -import { euiThemeVars as theme } from '@kbn/ui-shared-deps/theme'; import { ConfigSchema } from '.'; import { ObservabilityPluginSetup } from '../../observability/public'; import { @@ -83,7 +82,7 @@ export class ApmPlugin implements Plugin { plugins.observability.dashboard.register({ appName: 'apm', fetchData: async (params) => { - return fetchLandingPageData(params, { theme }); + return fetchLandingPageData(params); }, hasData, }); diff --git a/x-pack/plugins/apm/public/services/rest/observability.dashboard.test.ts b/x-pack/plugins/apm/public/services/rest/observability.dashboard.test.ts index a14d827eeaec5..fd407a8bf72ad 100644 --- a/x-pack/plugins/apm/public/services/rest/observability.dashboard.test.ts +++ b/x-pack/plugins/apm/public/services/rest/observability.dashboard.test.ts @@ -6,7 +6,6 @@ import { fetchLandingPageData, hasData } from './observability_dashboard'; import * as createCallApmApi from './createCallApmApi'; -import { euiThemeVars as theme } from '@kbn/ui-shared-deps/theme'; describe('Observability dashboard data', () => { const callApmApiMock = jest.spyOn(createCallApmApi, 'callApmApi'); @@ -38,39 +37,31 @@ describe('Observability dashboard data', () => { ], }) ); - const response = await fetchLandingPageData( - { - startTime: '1', - endTime: '2', - bucketSize: '3', - }, - { theme } - ); + const response = await fetchLandingPageData({ + startTime: '1', + endTime: '2', + bucketSize: '3', + }); expect(response).toEqual({ title: 'APM', appLink: '/app/apm', stats: { services: { type: 'number', - label: 'Services', value: 10, }, transactions: { type: 'number', - label: 'Transactions', value: 2, - color: '#6092c0', }, }, series: { transactions: { - label: 'Transactions', coordinates: [ { x: 1, y: 1 }, { x: 2, y: 2 }, { x: 3, y: 3 }, ], - color: '#6092c0', }, }, }); @@ -82,35 +73,27 @@ describe('Observability dashboard data', () => { transactionCoordinates: [], }) ); - const response = await fetchLandingPageData( - { - startTime: '1', - endTime: '2', - bucketSize: '3', - }, - { theme } - ); + const response = await fetchLandingPageData({ + startTime: '1', + endTime: '2', + bucketSize: '3', + }); expect(response).toEqual({ title: 'APM', appLink: '/app/apm', stats: { services: { type: 'number', - label: 'Services', value: 0, }, transactions: { type: 'number', - label: 'Transactions', value: 0, - color: '#6092c0', }, }, series: { transactions: { - label: 'Transactions', coordinates: [], - color: '#6092c0', }, }, }); @@ -122,35 +105,27 @@ describe('Observability dashboard data', () => { transactionCoordinates: [{ x: 1 }, { x: 2 }, { x: 3 }], }) ); - const response = await fetchLandingPageData( - { - startTime: '1', - endTime: '2', - bucketSize: '3', - }, - { theme } - ); + const response = await fetchLandingPageData({ + startTime: '1', + endTime: '2', + bucketSize: '3', + }); expect(response).toEqual({ title: 'APM', appLink: '/app/apm', stats: { services: { type: 'number', - label: 'Services', value: 0, }, transactions: { type: 'number', - label: 'Transactions', value: 0, - color: '#6092c0', }, }, series: { transactions: { - label: 'Transactions', coordinates: [{ x: 1 }, { x: 2 }, { x: 3 }], - color: '#6092c0', }, }, }); diff --git a/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts b/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts index 79ccf8dbd6f9b..409cec8b9ce10 100644 --- a/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts +++ b/x-pack/plugins/apm/public/services/rest/observability_dashboard.ts @@ -6,21 +6,17 @@ import { i18n } from '@kbn/i18n'; import { mean } from 'lodash'; -import { Theme } from '@kbn/ui-shared-deps/theme'; import { ApmFetchDataResponse, FetchDataParams, } from '../../../../observability/public'; import { callApmApi } from './createCallApmApi'; -interface Options { - theme: Theme; -} - -export const fetchLandingPageData = async ( - { startTime, endTime, bucketSize }: FetchDataParams, - { theme }: Options -): Promise => { +export const fetchLandingPageData = async ({ + startTime, + endTime, + bucketSize, +}: FetchDataParams): Promise => { const data = await callApmApi({ pathname: '/api/apm/observability_dashboard', params: { query: { start: startTime, end: endTime, bucketSize } }, @@ -36,34 +32,20 @@ export const fetchLandingPageData = async ( stats: { services: { type: 'number', - label: i18n.translate( - 'xpack.apm.observabilityDashboard.stats.services', - { defaultMessage: 'Services' } - ), value: serviceCount, }, transactions: { type: 'number', - label: i18n.translate( - 'xpack.apm.observabilityDashboard.stats.transactions', - { defaultMessage: 'Transactions' } - ), value: mean( transactionCoordinates .map(({ y }) => y) .filter((y) => y && isFinite(y)) ) || 0, - color: theme.euiColorVis1, }, }, series: { transactions: { - label: i18n.translate( - 'xpack.apm.observabilityDashboard.chart.transactions', - { defaultMessage: 'Transactions' } - ), - color: theme.euiColorVis1, coordinates: transactionCoordinates, }, }, diff --git a/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap b/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap index 99ab129fc36e3..4680414493a2c 100644 --- a/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap +++ b/x-pack/plugins/infra/public/__snapshots__/metrics_overview_fetchers.test.ts.snap @@ -91,7 +91,6 @@ Object { "y": 3.5, }, ], - "label": "Inbound traffic", }, "outboundTraffic": Object { "coordinates": Array [ @@ -180,32 +179,26 @@ Object { "y": 4, }, ], - "label": "Outbound traffic", }, }, "stats": Object { "cpu": Object { - "label": "CPU usage", "type": "percent", "value": 0.0015, }, "hosts": Object { - "label": "Hosts", "type": "number", "value": 2, }, "inboundTraffic": Object { - "label": "Inbound traffic", "type": "bytesPerSecond", "value": 3.5, }, "memory": Object { - "label": "Memory usage", "type": "percent", "value": 0.0015, }, "outboundTraffic": Object { - "label": "Outbound traffic", "type": "bytesPerSecond", "value": 3, }, diff --git a/x-pack/plugins/infra/public/metrics_overview_fetchers.ts b/x-pack/plugins/infra/public/metrics_overview_fetchers.ts index 15751fab39abc..25b334d03c4f7 100644 --- a/x-pack/plugins/infra/public/metrics_overview_fetchers.ts +++ b/x-pack/plugins/infra/public/metrics_overview_fetchers.ts @@ -103,14 +103,6 @@ export const createMetricsFetchData = ( body: JSON.stringify(snapshotRequest), }); - const inboundLabel = i18n.translate('xpack.infra.observabilityHomepage.metrics.rxLabel', { - defaultMessage: 'Inbound traffic', - }); - - const outboundLabel = i18n.translate('xpack.infra.observabilityHomepage.metrics.txLabel', { - defaultMessage: 'Outbound traffic', - }); - return { title: i18n.translate('xpack.infra.observabilityHomepage.metrics.title', { defaultMessage: 'Metrics', @@ -119,43 +111,30 @@ export const createMetricsFetchData = ( stats: { hosts: { type: 'number', - label: i18n.translate('xpack.infra.observabilityHomepage.metrics.hostsLabel', { - defaultMessage: 'Hosts', - }), value: results.nodes.length, }, cpu: { type: 'percent', - label: i18n.translate('xpack.infra.observabilityHomepage.metrics.cpuLabel', { - defaultMessage: 'CPU usage', - }), value: combineNodesBy('cpu', results.nodes, average), }, memory: { type: 'percent', - label: i18n.translate('xpack.infra.observabilityHomepage.metrics.memoryLabel', { - defaultMessage: 'Memory usage', - }), value: combineNodesBy('memory', results.nodes, average), }, inboundTraffic: { type: 'bytesPerSecond', - label: inboundLabel, value: combineNodesBy('rx', results.nodes, average), }, outboundTraffic: { type: 'bytesPerSecond', - label: outboundLabel, value: combineNodesBy('tx', results.nodes, average), }, }, series: { inboundTraffic: { - label: inboundLabel, coordinates: combineNodeTimeseriesBy('rx', results.nodes, average), }, outboundTraffic: { - label: outboundLabel, coordinates: combineNodeTimeseriesBy('tx', results.nodes, average), }, }, diff --git a/x-pack/plugins/observability/public/application/index.tsx b/x-pack/plugins/observability/public/application/index.tsx index 21a9fabf445f1..5bc8d96656ed4 100644 --- a/x-pack/plugins/observability/public/application/index.tsx +++ b/x-pack/plugins/observability/public/application/index.tsx @@ -3,23 +3,64 @@ * 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 { createHashHistory } from 'history'; +import React, { useEffect } from 'react'; import ReactDOM from 'react-dom'; -import { EuiThemeProvider } from '../../../../legacy/common/eui_styled_components'; +import { Route, Router, Switch } from 'react-router-dom'; +import { i18n } from '@kbn/i18n'; +import { RedirectAppLinks } from '../../../../../src/plugins/kibana_react/public'; import { AppMountParameters, CoreStart } from '../../../../../src/core/public'; -import { Home } from '../pages/home'; +import { EuiThemeProvider } from '../../../../legacy/common/eui_styled_components'; import { PluginContext } from '../context/plugin_context'; +import { useUrlParams } from '../hooks/use_url_params'; +import { routes } from '../routes'; +import { usePluginContext } from '../hooks/use_plugin_context'; + +const App = () => { + return ( + <> + + {Object.keys(routes).map((key) => { + const path = key as keyof typeof routes; + const route = routes[path]; + const Wrapper = () => { + const { core } = usePluginContext(); + useEffect(() => { + core.chrome.setBreadcrumbs([ + { + text: i18n.translate('xpack.observability.observability.breadcrumb.', { + defaultMessage: 'Observability', + }), + }, + ...route.breadcrumb, + ]); + }, [core]); + + const { query, path: pathParams } = useUrlParams(route.params); + return route.handler({ query, path: pathParams }); + }; + return ; + })} + + + ); +}; export const renderApp = (core: CoreStart, { element }: AppMountParameters) => { const i18nCore = core.i18n; const isDarkMode = core.uiSettings.get('theme:darkMode'); + const history = createHashHistory(); ReactDOM.render( - - - - - + + + + + + + + + , element ); diff --git a/x-pack/plugins/observability/public/components/app/chart_container/index.test.tsx b/x-pack/plugins/observability/public/components/app/chart_container/index.test.tsx new file mode 100644 index 0000000000000..d09d535a49340 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/chart_container/index.test.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { render } from '@testing-library/react'; +import React from 'react'; +import { ChartContainer } from './'; + +describe('chart container', () => { + it('shows loading indicator', () => { + const component = render( + +
My amazing component
+
+ ); + expect(component.getByTestId('loading')).toBeInTheDocument(); + expect(component.queryByText('My amazing component')).not.toBeInTheDocument(); + }); + it("doesn't show loading indicator", () => { + const component = render( + +
My amazing component
+
+ ); + expect(component.queryByTestId('loading')).not.toBeInTheDocument(); + expect(component.getByText('My amazing component')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/chart_container/index.tsx b/x-pack/plugins/observability/public/components/app/chart_container/index.tsx new file mode 100644 index 0000000000000..2a0c25773eae5 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/chart_container/index.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { Chart } from '@elastic/charts'; +import { EuiLoadingChart } from '@elastic/eui'; +import { EuiLoadingChartSize } from '@elastic/eui/src/components/loading/loading_chart'; +import React from 'react'; + +interface Props { + isInitialLoad: boolean; + height?: number; + width?: number; + iconSize?: EuiLoadingChartSize; + children: React.ReactNode; +} + +const CHART_HEIGHT = 170; + +export const ChartContainer = ({ + isInitialLoad, + children, + iconSize = 'xl', + height = CHART_HEIGHT, +}: Props) => { + if (isInitialLoad) { + return ( +
+ +
+ ); + } + return {children}; +}; diff --git a/x-pack/plugins/observability/public/components/app/empty_section/index.test.tsx b/x-pack/plugins/observability/public/components/app/empty_section/index.test.tsx new file mode 100644 index 0000000000000..e04e8f050006a --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/empty_section/index.test.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { ISection } from '../../../typings/section'; +import { render } from '../../../utils/test_helper'; +import { EmptySection } from './'; + +describe('EmptySection', () => { + it('renders without action button', () => { + const section: ISection = { + id: 'apm', + title: 'APM', + icon: 'logoAPM', + description: 'foo bar', + }; + const { getByText, queryAllByText } = render(); + + expect(getByText('APM')).toBeInTheDocument(); + expect(getByText('foo bar')).toBeInTheDocument(); + expect(queryAllByText('Install agent')).toEqual([]); + }); + it('renders with action button', () => { + const section: ISection = { + id: 'apm', + title: 'APM', + icon: 'logoAPM', + description: 'foo bar', + linkTitle: 'install agent', + href: 'https://www.elastic.co', + }; + const { getByText, getByTestId } = render(); + + expect(getByText('APM')).toBeInTheDocument(); + expect(getByText('foo bar')).toBeInTheDocument(); + const linkButton = getByTestId('empty-apm') as HTMLAnchorElement; + expect(linkButton.href).toEqual('https://www.elastic.co/'); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/empty_section/index.tsx b/x-pack/plugins/observability/public/components/app/empty_section/index.tsx new file mode 100644 index 0000000000000..e19bf1678bc01 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/empty_section/index.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { EuiButton, EuiEmptyPrompt, EuiText } from '@elastic/eui'; +import React from 'react'; +import { ISection } from '../../../typings/section'; + +interface Props { + section: ISection; +} + +export const EmptySection = ({ section }: Props) => { + return ( + {section.title}} + titleSize="xs" + body={{section.description}} + actions={ + <> + {section.linkTitle && ( + + {section.linkTitle} + + )} + + } + /> + ); +}; diff --git a/x-pack/plugins/observability/public/components/app/header/index.test.tsx b/x-pack/plugins/observability/public/components/app/header/index.test.tsx new file mode 100644 index 0000000000000..59b6fbe9caf7a --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/header/index.test.tsx @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { render } from '../../../utils/test_helper'; +import { Header } from './'; + +describe('Header', () => { + it('renders without add data button', () => { + const { getByText, queryAllByText, getByTestId } = render(
); + expect(getByTestId('observability-logo')).toBeInTheDocument(); + expect(getByText('Observability')).toBeInTheDocument(); + expect(queryAllByText('Add data')).toEqual([]); + }); + it('renders with add data button', () => { + const { getByText, getByTestId } = render(
); + expect(getByTestId('observability-logo')).toBeInTheDocument(); + expect(getByText('Observability')).toBeInTheDocument(); + expect(getByText('Add data')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/header/index.tsx b/x-pack/plugins/observability/public/components/app/header/index.tsx new file mode 100644 index 0000000000000..1c6ce766d0901 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/header/index.tsx @@ -0,0 +1,97 @@ +/* + * 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 { + EuiBetaBadge, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import styled from 'styled-components'; +import { usePluginContext } from '../../../hooks/use_plugin_context'; + +const Container = styled.div<{ color: string }>` + background: ${(props) => props.color}; + border-bottom: ${(props) => props.theme.eui.euiBorderThin}; +`; + +const Wrapper = styled.div<{ restrictWidth?: number }>` + width: 100%; + max-width: ${(props) => `${props.restrictWidth}px`}; + margin: 0 auto; + overflow: hidden; + padding: ${(props) => (props.restrictWidth ? 0 : '0 24px')}; +`; + +interface Props { + color: string; + showAddData?: boolean; + restrictWidth?: number; + showGiveFeedback?: boolean; +} + +export const Header = ({ + color, + restrictWidth, + showAddData = false, + showGiveFeedback = false, +}: Props) => { + const { core } = usePluginContext(); + return ( + + + + + + + + + +

+ {i18n.translate('xpack.observability.home.title', { + defaultMessage: 'Observability', + })}{' '} + +

+
+
+ {showGiveFeedback && ( + + + {i18n.translate('xpack.observability.home.feedback', { + defaultMessage: 'Give us feedback', + })} + + + )} + {showAddData && ( + + + {i18n.translate('xpack.observability.home.addData', { defaultMessage: 'Add data' })} + + + )} +
+ +
+
+ ); +}; diff --git a/x-pack/plugins/observability/public/components/app/layout/with_header.tsx b/x-pack/plugins/observability/public/components/app/layout/with_header.tsx new file mode 100644 index 0000000000000..27b25f0056055 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/layout/with_header.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 { EuiPage, EuiPageBody, EuiPageProps } from '@elastic/eui'; +import React from 'react'; +import styled from 'styled-components'; +import { Header } from '../header/index'; + +const getPaddingSize = (props: EuiPageProps) => (props.restrictWidth ? 0 : '24px'); + +const Page = styled(EuiPage)` + background: transparent; + padding-right: ${getPaddingSize}; + padding-left: ${getPaddingSize}; +`; + +const Container = styled.div<{ color?: string }>` + overflow-y: hidden; + min-height: calc(100vh - ${(props) => props.theme.eui.euiHeaderChildSize}); + background: ${(props) => props.color}; +`; + +interface Props { + headerColor: string; + bodyColor: string; + children?: React.ReactNode; + restrictWidth?: number; + showAddData?: boolean; + showGiveFeedback?: boolean; +} + +export const WithHeaderLayout = ({ + headerColor, + bodyColor, + children, + restrictWidth, + showAddData, + showGiveFeedback, +}: Props) => ( + +
+ + {children} + + +); diff --git a/x-pack/plugins/observability/public/components/app/news/index.scss b/x-pack/plugins/observability/public/components/app/news/index.scss new file mode 100644 index 0000000000000..1222fe489c732 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/news/index.scss @@ -0,0 +1,3 @@ +.obsNewsFeed__itemImg{ + @include euiBottomShadowSmall; +} \ No newline at end of file diff --git a/x-pack/plugins/observability/public/components/app/news/index.test.tsx b/x-pack/plugins/observability/public/components/app/news/index.test.tsx new file mode 100644 index 0000000000000..cae6b4aec0c62 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/news/index.test.tsx @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { render } from '../../../utils/test_helper'; +import { News } from './'; + +describe('News', () => { + it('renders resources with all elements', () => { + const { getByText, getAllByText } = render(); + expect(getByText("What's new")).toBeInTheDocument(); + expect(getAllByText('Read full story')).not.toEqual([]); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/news/index.tsx b/x-pack/plugins/observability/public/components/app/news/index.tsx new file mode 100644 index 0000000000000..41a4074f47976 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/news/index.tsx @@ -0,0 +1,97 @@ +/* + * 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 { + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiLink, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useContext } from 'react'; +import { ThemeContext } from 'styled-components'; +import './index.scss'; +import { truncate } from 'lodash'; +import { news as newsMockData } from './mock/news.mock.data'; + +interface NewsItem { + title: string; + description: string; + link_url: string; + image_url: string; +} + +export const News = () => { + const newsItems: NewsItem[] = newsMockData; + return ( + + + +

+ {i18n.translate('xpack.observability.news.title', { + defaultMessage: "What's new", + })} +

+
+
+ {newsItems.map((item, index) => ( + + + + ))} +
+ ); +}; + +const limitString = (string: string, limit: number) => truncate(string, { length: limit }); + +const NewsItem = ({ item }: { item: NewsItem }) => { + const theme = useContext(ThemeContext); + + return ( + + + +

{item.title}

+
+
+ + + + + + + {limitString(item.description, 128)} + + + + + + {i18n.translate('xpack.observability.news.readFullStory', { + defaultMessage: 'Read full story', + })} + + + + + + + {item.title} + + + + +
+ ); +}; diff --git a/x-pack/plugins/observability/public/components/app/news/mock/news.mock.data.ts b/x-pack/plugins/observability/public/components/app/news/mock/news.mock.data.ts new file mode 100644 index 0000000000000..5c623bb9134eb --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/news/mock/news.mock.data.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. + */ + +export const news = [ + { + title: 'Have SIEM questions?', + description: + 'Join our growing community of Elastic SIEM users to discuss the configuration and use of Elastic SIEM for threat detection and response.', + link_url: 'https://discuss.elastic.co/c/security/siem/?blade=securitysolutionfeed', + image_url: + 'https://aws1.discourse-cdn.com/elastic/original/3X/f/8/f8c3d0b9971cfcd0be349d973aa5799f71d280cc.png?blade=securitysolutionfeed', + }, + { + title: 'Elastic SIEM on-demand training course — free for a limited time', + description: + 'With this self-paced, on-demand course, you will learn how to leverage Elastic SIEM to drive your security operations and threat hunting. This course is designed for security analysts and practitioners who have used other SIEMs or are familiar with SIEM concepts.', + link_url: + 'https://training.elastic.co/elearning/security-analytics/elastic-siem-fundamentals-promo?blade=securitysolutionfeed', + image_url: + 'https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt50f58e0358ebea9d/5c30508693d9791a70cd73ad/illustration-specialization-course-page-security.svg?blade=securitysolutionfeed', + }, + { + title: 'New to Elastic SIEM? Take our on-demand training course', + description: + 'With this self-paced, on-demand course, you will learn how to leverage Elastic SIEM to drive your security operations and threat hunting. This course is designed for security analysts and practitioners who have used other SIEMs or are familiar with SIEM concepts.', + link_url: + 'https://www.elastic.co/training/specializations/security-analytics/elastic-siem-fundamentals?blade=securitysolutionfeed', + image_url: + 'https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt50f58e0358ebea9d/5c30508693d9791a70cd73ad/illustration-specialization-course-page-security.svg?blade=securitysolutionfeed', + }, +]; diff --git a/x-pack/plugins/observability/public/components/app/resources/index.test.tsx b/x-pack/plugins/observability/public/components/app/resources/index.test.tsx new file mode 100644 index 0000000000000..570aa3954424f --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/resources/index.test.tsx @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { render } from '@testing-library/react'; +import React from 'react'; +import { Resources } from './'; + +describe('Resources', () => { + it('renders resources with all elements', () => { + const { getByText } = render(); + expect(getByText('Documentation')).toBeInTheDocument(); + expect(getByText('Discuss forum')).toBeInTheDocument(); + expect(getByText('Observability fundamentals')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/resources/index.tsx b/x-pack/plugins/observability/public/components/app/resources/index.tsx new file mode 100644 index 0000000000000..c330c358d022a --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/resources/index.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 { EuiFlexGroup, EuiFlexItem, EuiListGroup, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +const resources = [ + { + iconType: 'documents', + label: i18n.translate('xpack.observability.resources.documentation', { + defaultMessage: 'Documentation', + }), + href: 'https://www.elastic.co/guide/en/observability/current/observability-ui.html', + }, + { + iconType: 'editorComment', + label: i18n.translate('xpack.observability.resources.forum', { + defaultMessage: 'Discuss forum', + }), + href: 'https://discuss.elastic.co/c/observability/', + }, + { + iconType: 'training', + label: i18n.translate('xpack.observability.resources.training', { + defaultMessage: 'Observability fundamentals', + }), + href: 'https://www.elastic.co/training/observability-fundamentals', + }, +]; + +export const Resources = () => { + return ( + + + +

+ {i18n.translate('xpack.observability.resources.title', { + defaultMessage: 'Resources', + })} +

+
+
+ +
+ ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx b/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx new file mode 100644 index 0000000000000..4c80195d33ace --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/alerts/index.tsx @@ -0,0 +1,129 @@ +/* + * 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 { + EuiBadge, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiIconTip, + EuiLink, + EuiText, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React, { useState } from 'react'; +import { EuiSelect } from '@elastic/eui'; +import { uniqBy } from 'lodash'; +import { Alert } from '../../../../../../alerts/common'; +import { usePluginContext } from '../../../../hooks/use_plugin_context'; +import { SectionContainer } from '..'; + +const ALL_TYPES = 'ALL_TYPES'; +const allTypes = { + value: ALL_TYPES, + text: i18n.translate('xpack.observability.overview.alert.allTypes', { + defaultMessage: 'All types', + }), +}; + +interface Props { + alerts: Alert[]; +} + +export const AlertsSection = ({ alerts }: Props) => { + const { core } = usePluginContext(); + const [filter, setFilter] = useState(ALL_TYPES); + + const filterOptions = uniqBy(alerts, (alert) => alert.consumer).map(({ consumer }) => ({ + value: consumer, + text: consumer, + })); + + return ( + + + + + + setFilter(e.target.value)} + prepend={i18n.translate('xpack.observability.overview.alert.view', { + defaultMessage: 'View', + })} + /> + + + + + + {alerts + .filter((alert) => filter === ALL_TYPES || alert.consumer === filter) + .map((alert, index) => { + const isLastElement = index === alerts.length - 1; + return ( + + + + {alert.name} + + + + + + {alert.alertTypeId} + + {alert.tags.map((tag, idx) => { + return ( + + {tag} + + ); + })} + + + + + + + Updated {moment.duration(moment().diff(alert.updatedAt)).humanize()} ago + + + {alert.muteAll && ( + + + + )} + + + {!isLastElement && } + + ); + })} + + + + ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx new file mode 100644 index 0000000000000..d4b8236e0ef49 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.test.tsx @@ -0,0 +1,53 @@ +/* + * 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 * as fetcherHook from '../../../../hooks/use_fetcher'; +import { render } from '../../../../utils/test_helper'; +import { APMSection } from './'; +import { response } from './mock_data/apm.mock'; + +describe('APMSection', () => { + it('renders with transaction series and stats', () => { + jest.spyOn(fetcherHook, 'useFetcher').mockReturnValue({ + data: response, + status: fetcherHook.FETCH_STATUS.SUCCESS, + refetch: jest.fn(), + }); + const { getByText, queryAllByTestId } = render( + + ); + + expect(getByText('APM')).toBeInTheDocument(); + expect(getByText('View in app')).toBeInTheDocument(); + expect(getByText('Services 11')).toBeInTheDocument(); + expect(getByText('Transactions per minute 312.00k')).toBeInTheDocument(); + expect(queryAllByTestId('loading')).toEqual([]); + }); + it('shows loading state', () => { + jest.spyOn(fetcherHook, 'useFetcher').mockReturnValue({ + data: undefined, + status: fetcherHook.FETCH_STATUS.LOADING, + refetch: jest.fn(), + }); + const { getByText, queryAllByText, getByTestId } = render( + + ); + + expect(getByText('APM')).toBeInTheDocument(); + expect(getByTestId('loading')).toBeInTheDocument(); + expect(queryAllByText('View in app')).toEqual([]); + expect(queryAllByText('Services 11')).toEqual([]); + expect(queryAllByText('Transactions per minute 312.00k')).toEqual([]); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/section/apm/index.tsx b/x-pack/plugins/observability/public/components/app/section/apm/index.tsx new file mode 100644 index 0000000000000..697d4adfa0b75 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/apm/index.tsx @@ -0,0 +1,112 @@ +/* + * 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 { Axis, BarSeries, niceTimeFormatter, Position, ScaleType, Settings } from '@elastic/charts'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import numeral from '@elastic/numeral'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React, { useContext } from 'react'; +import { useHistory } from 'react-router-dom'; +import { ThemeContext } from 'styled-components'; +import { SectionContainer } from '../'; +import { getDataHandler } from '../../../../data_handler'; +import { useChartTheme } from '../../../../hooks/use_chart_theme'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; +import { ChartContainer } from '../../chart_container'; +import { StyledStat } from '../../styled_stat'; +import { onBrushEnd } from '../helper'; + +interface Props { + startTime?: string; + endTime?: string; + bucketSize?: string; +} + +function formatTpm(value?: number) { + return numeral(value).format('0.00a'); +} + +export const APMSection = ({ startTime, endTime, bucketSize }: Props) => { + const theme = useContext(ThemeContext); + const history = useHistory(); + + const { data, status } = useFetcher(() => { + if (startTime && endTime && bucketSize) { + return getDataHandler('apm')?.fetchData({ startTime, endTime, bucketSize }); + } + }, [startTime, endTime, bucketSize]); + + const { title = 'APM', appLink, stats, series } = data || {}; + + const min = moment.utc(startTime).valueOf(); + const max = moment.utc(endTime).valueOf(); + + const formatter = niceTimeFormatter([min, max]); + + const isLoading = status === FETCH_STATUS.LOADING; + + const transactionsColor = theme.eui.euiColorVis1; + + return ( + + + + + + + + + + + onBrushEnd({ x, history })} + theme={useChartTheme()} + showLegend={false} + xDomain={{ min, max }} + /> + {series?.transactions.coordinates && ( + <> + + `${formatTpm(value)} tpm`} + /> + + + )} + + + ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/apm/mock_data/apm.mock.ts b/x-pack/plugins/observability/public/components/app/section/apm/mock_data/apm.mock.ts new file mode 100644 index 0000000000000..5857021b1537f --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/apm/mock_data/apm.mock.ts @@ -0,0 +1,168 @@ +/* + * 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 { ApmFetchDataResponse } from '../../../../../typings'; + +export const response: ApmFetchDataResponse = { + title: 'APM', + + appLink: '/app/apm', + stats: { + services: { value: 11, type: 'number' }, + transactions: { value: 312000, type: 'number' }, + }, + series: { + transactions: { + coordinates: [ + { x: 1591365600000, y: 32 }, + { x: 1591366200000, y: 43 }, + { x: 1591366800000, y: 22 }, + { x: 1591367400000, y: 29 }, + { x: 1591368000000, y: 39 }, + { x: 1591368600000, y: 36 }, + { x: 1591369200000, y: 50 }, + { x: 1591369800000, y: 31 }, + { x: 1591370400000, y: 39 }, + { x: 1591371000000, y: 26 }, + { x: 1591371600000, y: 45 }, + { x: 1591372200000, y: 27 }, + { x: 1591372800000, y: 37 }, + { x: 1591373400000, y: 55 }, + { x: 1591374000000, y: 31 }, + { x: 1591374600000, y: 26 }, + { x: 1591375200000, y: 57 }, + { x: 1591375800000, y: 25 }, + { x: 1591376400000, y: 28 }, + { x: 1591377000000, y: 40 }, + { x: 1591377600000, y: 33 }, + { x: 1591378200000, y: 33 }, + { x: 1591378800000, y: 31 }, + { x: 1591379400000, y: 32 }, + { x: 1591380000000, y: 34 }, + { x: 1591380600000, y: 31 }, + { x: 1591381200000, y: 16 }, + { x: 1591381800000, y: 34 }, + { x: 1591382400000, y: 33 }, + { x: 1591383000000, y: 35 }, + { x: 1591383600000, y: 47 }, + { x: 1591384200000, y: 44 }, + { x: 1591384800000, y: 21 }, + { x: 1591385400000, y: 25 }, + { x: 1591386000000, y: 34 }, + { x: 1591386600000, y: 37 }, + { x: 1591387200000, y: 38 }, + { x: 1591387800000, y: 28 }, + { x: 1591388400000, y: 32 }, + { x: 1591389000000, y: 37 }, + { x: 1591389600000, y: 25 }, + { x: 1591390200000, y: 33 }, + { x: 1591390800000, y: 34 }, + { x: 1591391400000, y: 30 }, + { x: 1591392000000, y: 45 }, + { x: 1591392600000, y: 42 }, + { x: 1591393200000, y: 23 }, + { x: 1591393800000, y: 33 }, + { x: 1591394400000, y: 38 }, + { x: 1591395000000, y: 30 }, + { x: 1591395600000, y: 25 }, + { x: 1591396200000, y: 33 }, + { x: 1591396800000, y: 37 }, + { x: 1591397400000, y: 43 }, + { x: 1591398000000, y: 30 }, + { x: 1591398600000, y: 36 }, + { x: 1591399200000, y: 28 }, + { x: 1591399800000, y: 39 }, + { x: 1591400400000, y: 27 }, + { x: 1591401000000, y: 41 }, + { x: 1591401600000, y: 25 }, + { x: 1591402200000, y: 31 }, + { x: 1591402800000, y: 28 }, + { x: 1591403400000, y: 29 }, + { x: 1591404000000, y: 49 }, + { x: 1591404600000, y: 24 }, + { x: 1591405200000, y: 41 }, + { x: 1591405800000, y: 30 }, + { x: 1591406400000, y: 36 }, + { x: 1591407000000, y: 39 }, + { x: 1591407600000, y: 23 }, + { x: 1591408200000, y: 40 }, + { x: 1591408800000, y: 34 }, + { x: 1591409400000, y: 28 }, + { x: 1591410000000, y: 33 }, + { x: 1591410600000, y: 31 }, + { x: 1591411200000, y: 39 }, + { x: 1591411800000, y: 33 }, + { x: 1591412400000, y: 35 }, + { x: 1591413000000, y: 31 }, + { x: 1591413600000, y: 35 }, + { x: 1591414200000, y: 37 }, + { x: 1591414800000, y: 26 }, + { x: 1591415400000, y: 27 }, + { x: 1591416000000, y: 26 }, + { x: 1591416600000, y: 34 }, + { x: 1591417200000, y: 33 }, + { x: 1591417800000, y: 38 }, + { x: 1591418400000, y: 34 }, + { x: 1591419000000, y: 37 }, + { x: 1591419600000, y: 24 }, + { x: 1591420200000, y: 25 }, + { x: 1591420800000, y: 20 }, + { x: 1591421400000, y: 35 }, + { x: 1591422000000, y: 41 }, + { x: 1591422600000, y: 40 }, + { x: 1591423200000, y: 33 }, + { x: 1591423800000, y: 24 }, + { x: 1591424400000, y: 44 }, + { x: 1591425000000, y: 24 }, + { x: 1591425600000, y: 32 }, + { x: 1591426200000, y: 37 }, + { x: 1591426800000, y: 34 }, + { x: 1591427400000, y: 28 }, + { x: 1591428000000, y: 26 }, + { x: 1591428600000, y: 37 }, + { x: 1591429200000, y: 36 }, + { x: 1591429800000, y: 37 }, + { x: 1591430400000, y: 23 }, + { x: 1591431000000, y: 47 }, + { x: 1591431600000, y: 41 }, + { x: 1591432200000, y: 24 }, + { x: 1591432800000, y: 34 }, + { x: 1591433400000, y: 27 }, + { x: 1591434000000, y: 34 }, + { x: 1591434600000, y: 44 }, + { x: 1591435200000, y: 20 }, + { x: 1591435800000, y: 34 }, + { x: 1591436400000, y: 29 }, + { x: 1591437000000, y: 28 }, + { x: 1591437600000, y: 36 }, + { x: 1591438200000, y: 34 }, + { x: 1591438800000, y: 26 }, + { x: 1591439400000, y: 29 }, + { x: 1591440000000, y: 45 }, + { x: 1591440600000, y: 34 }, + { x: 1591441200000, y: 25 }, + { x: 1591441800000, y: 34 }, + { x: 1591442400000, y: 28 }, + { x: 1591443000000, y: 34 }, + { x: 1591443600000, y: 31 }, + { x: 1591444200000, y: 24 }, + { x: 1591444800000, y: 34 }, + { x: 1591445400000, y: 21 }, + { x: 1591446000000, y: 40 }, + { x: 1591446600000, y: 37 }, + { x: 1591447200000, y: 31 }, + { x: 1591447800000, y: 21 }, + { x: 1591448400000, y: 24 }, + { x: 1591449000000, y: 30 }, + { x: 1591449600000, y: 22 }, + { x: 1591450200000, y: 27 }, + { x: 1591450800000, y: 30 }, + { x: 1591451400000, y: 22 }, + { x: 1591452000000, y: 9 }, + ], + }, + }, +}; diff --git a/x-pack/plugins/observability/public/components/app/section/error_panel/index.tsx b/x-pack/plugins/observability/public/components/app/section/error_panel/index.tsx new file mode 100644 index 0000000000000..8f0781b8f0269 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/error_panel/index.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export const ErrorPanel = () => { + return ( + + + + {i18n.translate('xpack.observability.section.errorPanel', { + defaultMessage: 'An error happened when trying to fetch data. Please try again', + })} + + + + ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/helper.test.ts b/x-pack/plugins/observability/public/components/app/section/helper.test.ts new file mode 100644 index 0000000000000..6a8cd27753a8d --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/helper.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { onBrushEnd } from './helper'; +import { History } from 'history'; + +describe('Chart helper', () => { + describe('onBrushEnd', () => { + const history = ({ + push: jest.fn(), + location: { + search: '', + }, + } as unknown) as History; + it("doesn't push a new history when x is not defined", () => { + onBrushEnd({ x: undefined, history }); + expect(history.push).not.toBeCalled(); + }); + + it('pushes a new history with time range converted to ISO', () => { + onBrushEnd({ x: [1593409448167, 1593415727797], history }); + expect(history.push).toBeCalledWith({ + search: 'rangeFrom=2020-06-29T05:44:08.167Z&rangeTo=2020-06-29T07:28:47.797Z', + }); + }); + + it('pushes a new history keeping current search', () => { + history.location.search = '?foo=bar'; + onBrushEnd({ x: [1593409448167, 1593415727797], history }); + expect(history.push).toBeCalledWith({ + search: 'foo=bar&rangeFrom=2020-06-29T05:44:08.167Z&rangeTo=2020-06-29T07:28:47.797Z', + }); + }); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/section/helper.ts b/x-pack/plugins/observability/public/components/app/section/helper.ts new file mode 100644 index 0000000000000..81fa92cb87782 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/helper.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { XYBrushArea } from '@elastic/charts'; +import { History } from 'history'; +import { fromQuery, toQuery } from '../../../utils/url'; + +export const onBrushEnd = ({ x, history }: { x: XYBrushArea['x']; history: History }) => { + if (x) { + const start = x[0]; + const end = x[1]; + + const currentSearch = toQuery(history.location.search); + const nextSearch = { + rangeFrom: new Date(start).toISOString(), + rangeTo: new Date(end).toISOString(), + }; + history.push({ + ...history.location, + search: fromQuery({ + ...currentSearch, + ...nextSearch, + }), + }); + } +}; diff --git a/x-pack/plugins/observability/public/components/app/section/index.test.tsx b/x-pack/plugins/observability/public/components/app/section/index.test.tsx new file mode 100644 index 0000000000000..49cb175d0c094 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/index.test.tsx @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { render } from '../../../utils/test_helper'; +import { SectionContainer } from './'; + +describe('SectionContainer', () => { + it('renders section without app link', () => { + const component = render( + +
I am a very nice component
+
+ ); + expect(component.getByText('I am a very nice component')).toBeInTheDocument(); + expect(component.getByText('Foo')).toBeInTheDocument(); + expect(component.queryAllByText('View in app')).toEqual([]); + }); + it('renders section with app link', () => { + const component = render( + +
I am a very nice component
+
+ ); + expect(component.getByText('I am a very nice component')).toBeInTheDocument(); + expect(component.getByText('Foo')).toBeInTheDocument(); + expect(component.getByText('View in app')).toBeInTheDocument(); + }); + it('renders section with error', () => { + const component = render( + +
I am a very nice component
+
+ ); + expect(component.queryByText('I am a very nice component')).not.toBeInTheDocument(); + expect(component.getByText('Foo')).toBeInTheDocument(); + expect( + component.getByText('An error happened when trying to fetch data. Please try again') + ).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/observability/public/components/app/section/index.tsx b/x-pack/plugins/observability/public/components/app/section/index.tsx new file mode 100644 index 0000000000000..3556e8c01ab30 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/index.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. + */ +import { EuiAccordion, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { ErrorPanel } from './error_panel'; +import { usePluginContext } from '../../../hooks/use_plugin_context'; + +interface Props { + title: string; + hasError: boolean; + children: React.ReactNode; + minHeight?: number; + appLink?: string; + appLinkName?: string; +} + +export const SectionContainer = ({ title, appLink, children, hasError, appLinkName }: Props) => { + const { core } = usePluginContext(); + return ( + +
{title}
+ + } + extraAction={ + appLink && ( + + + {appLinkName + ? appLinkName + : i18n.translate('xpack.observability.chart.viewInAppLabel', { + defaultMessage: 'View in app', + })} + + + ) + } + > + <> + + + {hasError ? ( + + ) : ( + <> + + {children} + + )} + + +
+ ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/logs/index.tsx b/x-pack/plugins/observability/public/components/app/section/logs/index.tsx new file mode 100644 index 0000000000000..f3ba2ef6fa83a --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/logs/index.tsx @@ -0,0 +1,151 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Axis, BarSeries, niceTimeFormatter, Position, ScaleType, Settings } from '@elastic/charts'; +import { EuiFlexGroup, EuiFlexItem, euiPaletteColorBlind } from '@elastic/eui'; +import numeral from '@elastic/numeral'; +import { isEmpty } from 'lodash'; +import moment from 'moment'; +import React, { Fragment } from 'react'; +import { useHistory } from 'react-router-dom'; +import { EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { EuiSpacer } from '@elastic/eui'; +import { SectionContainer } from '../'; +import { getDataHandler } from '../../../../data_handler'; +import { useChartTheme } from '../../../../hooks/use_chart_theme'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; +import { LogsFetchDataResponse } from '../../../../typings'; +import { formatStatValue } from '../../../../utils/format_stat_value'; +import { ChartContainer } from '../../chart_container'; +import { StyledStat } from '../../styled_stat'; +import { onBrushEnd } from '../helper'; + +interface Props { + startTime?: string; + endTime?: string; + bucketSize?: string; +} + +function getColorPerItem(series?: LogsFetchDataResponse['series']) { + if (!series) { + return {}; + } + const availableColors = euiPaletteColorBlind({ + rotations: Math.ceil(Object.keys(series).length / 10), + }); + const colorsPerItem = Object.keys(series).reduce((acc: Record, key, index) => { + acc[key] = availableColors[index]; + return acc; + }, {}); + + return colorsPerItem; +} + +export const LogsSection = ({ startTime, endTime, bucketSize }: Props) => { + const history = useHistory(); + + const { data, status } = useFetcher(() => { + if (startTime && endTime && bucketSize) { + return getDataHandler('infra_logs')?.fetchData({ startTime, endTime, bucketSize }); + } + }, [startTime, endTime, bucketSize]); + + const min = moment.utc(startTime).valueOf(); + const max = moment.utc(endTime).valueOf(); + + const formatter = niceTimeFormatter([min, max]); + + const { title, appLink, stats, series } = data || {}; + + const colorsPerItem = getColorPerItem(series); + + const isLoading = status === FETCH_STATUS.LOADING; + + return ( + + +

+ {i18n.translate('xpack.observability.overview.logs.subtitle', { + defaultMessage: 'Logs rate per minute', + })} +

+
+ + + {!stats || isEmpty(stats) ? ( + + + + ) : ( + Object.keys(stats).map((key) => { + const stat = stats[key]; + return ( + + + + ); + }) + )} + + + onBrushEnd({ x, history })} + theme={useChartTheme()} + showLegend + legendPosition={Position.Right} + xDomain={{ min, max }} + showLegendExtra + /> + {series && + Object.keys(series).map((key) => { + const serie = series[key]; + const chartData = serie.coordinates.map((coordinate) => ({ + ...coordinate, + g: serie.label, + })); + return ( + + + + numeral(d).format('0a')} + /> + + ); + })} + +
+ ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx b/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx new file mode 100644 index 0000000000000..6276e1ba1baca --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/metrics/index.tsx @@ -0,0 +1,182 @@ +/* + * 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 { AreaSeries, ScaleType, Settings } from '@elastic/charts'; +import { EuiFlexGroup, EuiFlexItem, EuiProgress, EuiSpacer } from '@elastic/eui'; +import numeral from '@elastic/numeral'; +import { i18n } from '@kbn/i18n'; +import React, { useContext } from 'react'; +import styled, { ThemeContext } from 'styled-components'; +import { SectionContainer } from '../'; +import { getDataHandler } from '../../../../data_handler'; +import { useChartTheme } from '../../../../hooks/use_chart_theme'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; +import { Series } from '../../../../typings'; +import { ChartContainer } from '../../chart_container'; +import { StyledStat } from '../../styled_stat'; + +interface Props { + startTime?: string; + endTime?: string; + bucketSize?: string; +} + +/** + * EuiProgress doesn't support custom color, when it does this component can be removed. + */ +const StyledProgress = styled.div<{ color?: string }>` + progress { + &.euiProgress--native { + &::-webkit-progress-value { + background-color: ${(props) => props.color}; + } + + &::-moz-progress-bar { + background-color: ${(props) => props.color}; + } + } + + &.euiProgress--indeterminate { + &:before { + background-color: ${(props) => props.color}; + } + } + } +`; + +export const MetricsSection = ({ startTime, endTime, bucketSize }: Props) => { + const theme = useContext(ThemeContext); + const { data, status } = useFetcher(() => { + if (startTime && endTime && bucketSize) { + return getDataHandler('infra_metrics')?.fetchData({ startTime, endTime, bucketSize }); + } + }, [startTime, endTime, bucketSize]); + + const isLoading = status === FETCH_STATUS.LOADING; + + const { title = 'Metrics', appLink, stats, series } = data || {}; + + const cpuColor = theme.eui.euiColorVis7; + const memoryColor = theme.eui.euiColorVis0; + const inboundTrafficColor = theme.eui.euiColorVis3; + const outboundTrafficColor = theme.eui.euiColorVis2; + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +const AreaChart = ({ + serie, + isLoading, + color, +}: { + serie?: Series; + isLoading: boolean; + color: string; +}) => { + const chartTheme = useChartTheme(); + + return ( + + + {serie && ( + + )} + + ); +}; diff --git a/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx b/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx new file mode 100644 index 0000000000000..1f8ca6e61f132 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/section/uptime/index.tsx @@ -0,0 +1,179 @@ +/* + * 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 { + Axis, + BarSeries, + niceTimeFormatter, + Position, + ScaleType, + Settings, + TickFormatter, +} from '@elastic/charts'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import numeral from '@elastic/numeral'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React, { useContext } from 'react'; +import { useHistory } from 'react-router-dom'; +import { ThemeContext } from 'styled-components'; +import { SectionContainer } from '../'; +import { getDataHandler } from '../../../../data_handler'; +import { useChartTheme } from '../../../../hooks/use_chart_theme'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; +import { Series } from '../../../../typings'; +import { ChartContainer } from '../../chart_container'; +import { StyledStat } from '../../styled_stat'; +import { onBrushEnd } from '../helper'; + +interface Props { + startTime?: string; + endTime?: string; + bucketSize?: string; +} + +export const UptimeSection = ({ startTime, endTime, bucketSize }: Props) => { + const theme = useContext(ThemeContext); + const history = useHistory(); + + const { data, status } = useFetcher(() => { + if (startTime && endTime && bucketSize) { + return getDataHandler('uptime')?.fetchData({ startTime, endTime, bucketSize }); + } + }, [startTime, endTime, bucketSize]); + + const min = moment.utc(startTime).valueOf(); + const max = moment.utc(endTime).valueOf(); + const formatter = niceTimeFormatter([min, max]); + + const isLoading = status === FETCH_STATUS.LOADING; + + const { title = 'Uptime', appLink, stats, series } = data || {}; + + const downColor = theme.eui.euiColorVis2; + const upColor = theme.eui.euiColorLightShade; + + return ( + + + {/* Stats section */} + + + + + + + + + + + + {/* Chart section */} + + onBrushEnd({ x, history })} + theme={useChartTheme()} + showLegend={false} + legendPosition={Position.Right} + xDomain={{ min, max }} + /> + + + + + ); +}; + +const UptimeBarSeries = ({ + id, + label, + series, + color, + ticktFormatter, +}: { + id: string; + label: string; + series?: Series; + color: string; + ticktFormatter: TickFormatter; +}) => { + if (!series) { + return null; + } + const chartData = series.coordinates.map((coordinate) => ({ + ...coordinate, + g: label, + })); + return ( + <> + + + numeral(x).format('0a')} + /> + + ); +}; diff --git a/x-pack/plugins/observability/public/components/app/styled_stat/index.tsx b/x-pack/plugins/observability/public/components/app/styled_stat/index.tsx new file mode 100644 index 0000000000000..fe38df6484c29 --- /dev/null +++ b/x-pack/plugins/observability/public/components/app/styled_stat/index.tsx @@ -0,0 +1,27 @@ +/* + * 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 styled from 'styled-components'; +import { EuiStat } from '@elastic/eui'; +import React from 'react'; +import { EuiStatProps } from '@elastic/eui/src/components/stat/stat'; + +const Stat = styled(EuiStat)` + .euiStat__title { + color: ${(props) => props.color}; + } +`; + +interface Props extends Partial { + children?: React.ReactNode; + color?: string; +} + +const EMPTY_VALUE = '--'; + +export const StyledStat = (props: Props) => { + const { description = EMPTY_VALUE, title = EMPTY_VALUE, ...rest } = props; + return ; +}; diff --git a/x-pack/plugins/observability/public/components/action_menu.tsx b/x-pack/plugins/observability/public/components/shared/action_menu/index.tsx similarity index 100% rename from x-pack/plugins/observability/public/components/action_menu.tsx rename to x-pack/plugins/observability/public/components/shared/action_menu/index.tsx diff --git a/x-pack/plugins/observability/public/components/shared/data_picker/index.tsx b/x-pack/plugins/observability/public/components/shared/data_picker/index.tsx new file mode 100644 index 0000000000000..cc77c1ed72b4a --- /dev/null +++ b/x-pack/plugins/observability/public/components/shared/data_picker/index.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 { EuiSuperDatePicker } from '@elastic/eui'; +import React from 'react'; +import { useHistory, useLocation } from 'react-router-dom'; +import { UI_SETTINGS, useKibanaUISettings } from '../../../hooks/use_kibana_ui_settings'; +import { fromQuery, toQuery } from '../../../utils/url'; + +export interface TimePickerTime { + from: string; + to: string; +} + +export interface TimePickerQuickRange extends TimePickerTime { + display: string; +} + +export interface TimePickerRefreshInterval { + pause: boolean; + value: number; +} + +interface Props { + rangeFrom: string; + rangeTo: string; + refreshPaused: boolean; + refreshInterval: number; +} + +export const DatePicker = ({ rangeFrom, rangeTo, refreshPaused, refreshInterval }: Props) => { + const location = useLocation(); + const history = useHistory(); + + const timePickerQuickRanges = useKibanaUISettings( + UI_SETTINGS.TIMEPICKER_QUICK_RANGES + ); + + const commonlyUsedRanges = timePickerQuickRanges.map(({ from, to, display }) => ({ + start: from, + end: to, + label: display, + })); + + function updateUrl(nextQuery: { + rangeFrom?: string; + rangeTo?: string; + refreshPaused?: boolean; + refreshInterval?: number; + }) { + history.push({ + ...location, + search: fromQuery({ + ...toQuery(location.search), + ...nextQuery, + }), + }); + } + + function onRefreshChange({ + isPaused, + refreshInterval: interval, + }: { + isPaused: boolean; + refreshInterval: number; + }) { + updateUrl({ refreshPaused: isPaused, refreshInterval: interval }); + } + + function onTimeChange({ start, end }: { start: string; end: string }) { + updateUrl({ rangeFrom: start, rangeTo: end }); + } + + return ( + + ); +}; diff --git a/x-pack/plugins/observability/public/data_handler.ts b/x-pack/plugins/observability/public/data_handler.ts index 39e702a332a8e..d7f8c471ad9aa 100644 --- a/x-pack/plugins/observability/public/data_handler.ts +++ b/x-pack/plugins/observability/public/data_handler.ts @@ -17,9 +17,20 @@ export function registerDataHandler({ dataHandlers[appName] = { fetchData, hasData }; } +export function unregisterDataHandler({ appName }: { appName: T }) { + delete dataHandlers[appName]; +} + export function getDataHandler(appName: T) { const dataHandler = dataHandlers[appName]; if (dataHandler) { return dataHandler as DataHandler; } } + +export async function fetchHasData() { + const apps: ObservabilityApp[] = ['apm', 'uptime', 'infra_logs', 'infra_metrics']; + const promises = apps.map((app) => getDataHandler(app)?.hasData()); + const [apm, uptime, logs, metrics] = await Promise.all(promises); + return { apm, uptime, infra_logs: logs, infra_metrics: metrics }; +} diff --git a/x-pack/plugins/observability/public/hooks/use_chart_theme.tsx b/x-pack/plugins/observability/public/hooks/use_chart_theme.tsx new file mode 100644 index 0000000000000..13f7159ba6043 --- /dev/null +++ b/x-pack/plugins/observability/public/hooks/use_chart_theme.tsx @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { EUI_CHARTS_THEME_DARK, EUI_CHARTS_THEME_LIGHT } from '@elastic/eui/dist/eui_charts_theme'; +import { useContext } from 'react'; +import { ThemeContext } from 'styled-components'; + +export function useChartTheme() { + const theme = useContext(ThemeContext); + return theme.darkMode ? EUI_CHARTS_THEME_DARK.theme : EUI_CHARTS_THEME_LIGHT.theme; +} diff --git a/x-pack/plugins/observability/public/hooks/use_fetcher.tsx b/x-pack/plugins/observability/public/hooks/use_fetcher.tsx new file mode 100644 index 0000000000000..88a8ad264e737 --- /dev/null +++ b/x-pack/plugins/observability/public/hooks/use_fetcher.tsx @@ -0,0 +1,84 @@ +/* + * 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 { useEffect, useState, useMemo } from 'react'; + +export enum FETCH_STATUS { + LOADING = 'loading', + SUCCESS = 'success', + FAILURE = 'failure', + PENDING = 'pending', +} + +export interface FetcherResult { + data?: Data; + status: FETCH_STATUS; + error?: Error; +} + +// fetcher functions can return undefined OR a promise. Previously we had a more simple type +// but it led to issues when using object destructuring with default values +type InferResponseType = Exclude extends Promise + ? TResponseType + : unknown; + +export function useFetcher( + fn: () => TReturn, + fnDeps: any[], + options: { + preservePreviousData?: boolean; + } = {} +): FetcherResult> & { refetch: () => void } { + const { preservePreviousData = true } = options; + + const [result, setResult] = useState>>({ + data: undefined, + status: FETCH_STATUS.PENDING, + }); + const [counter, setCounter] = useState(0); + useEffect(() => { + async function doFetch() { + const promise = fn(); + if (!promise) { + return; + } + + setResult((prevResult) => ({ + data: preservePreviousData ? prevResult.data : undefined, + status: FETCH_STATUS.LOADING, + error: undefined, + })); + + try { + const data = await promise; + setResult({ + data, + status: FETCH_STATUS.SUCCESS, + error: undefined, + } as FetcherResult>); + } catch (e) { + setResult((prevResult) => ({ + data: preservePreviousData ? prevResult.data : undefined, + status: FETCH_STATUS.FAILURE, + error: e, + })); + } + } + + doFetch(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [counter, ...fnDeps]); + + return useMemo(() => { + return { + ...result, + refetch: () => { + // this will invalidate the deps to `useEffect` and will result in a new request + setCounter((count) => count + 1); + }, + }; + }, [result]); +} diff --git a/x-pack/plugins/observability/public/hooks/use_kibana_ui_settings.tsx b/x-pack/plugins/observability/public/hooks/use_kibana_ui_settings.tsx new file mode 100644 index 0000000000000..884d74db391ee --- /dev/null +++ b/x-pack/plugins/observability/public/hooks/use_kibana_ui_settings.tsx @@ -0,0 +1,18 @@ +/* + * 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 { usePluginContext } from './use_plugin_context'; +import { UI_SETTINGS } from '../../../../../src/plugins/data/public'; + +export { UI_SETTINGS }; + +type SettingKeys = keyof typeof UI_SETTINGS; +type SettingValues = typeof UI_SETTINGS[SettingKeys]; + +export function useKibanaUISettings(key: SettingValues): T { + const { core } = usePluginContext(); + return core.uiSettings.get(key); +} diff --git a/x-pack/plugins/observability/public/hooks/use_url_params.tsx b/x-pack/plugins/observability/public/hooks/use_url_params.tsx new file mode 100644 index 0000000000000..680a32fb49677 --- /dev/null +++ b/x-pack/plugins/observability/public/hooks/use_url_params.tsx @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import * as t from 'io-ts'; +import { useLocation, useParams } from 'react-router-dom'; +import { isLeft } from 'fp-ts/lib/Either'; +import { PathReporter } from 'io-ts/lib/PathReporter'; +import { Params } from '../routes'; + +function getQueryParams(location: ReturnType) { + const urlSearchParms = new URLSearchParams(location.search); + const queryParams: Record = {}; + urlSearchParms.forEach((value, key) => { + queryParams[key] = value; + }); + return queryParams; +} + +/** + * Extracts query and path params from the url and validate it against the type defined in the route file. + * It removes any aditional item which is not declared in the type. + * @param params + */ +export function useUrlParams(params: Params) { + const location = useLocation(); + const pathParams = useParams(); + const queryParams = getQueryParams(location); + + const rts = { + queryRt: params.query ? t.exact(params.query) : t.strict({}), + pathRt: params.path ? t.exact(params.path) : t.strict({}), + }; + + const queryResult = rts.queryRt.decode(queryParams); + const pathResult = rts.pathRt.decode(pathParams); + if (isLeft(queryResult)) { + // eslint-disable-next-line no-console + console.error(PathReporter.report(queryResult)[0]); + } + + if (isLeft(pathResult)) { + // eslint-disable-next-line no-console + console.error(PathReporter.report(pathResult)[0]); + } + + return { + query: isLeft(queryResult) ? {} : queryResult.right, + path: isLeft(pathResult) ? {} : pathResult.right, + }; +} diff --git a/x-pack/plugins/observability/public/index.ts b/x-pack/plugins/observability/public/index.ts index d2f1d246f79ec..03939736b64ae 100644 --- a/x-pack/plugins/observability/public/index.ts +++ b/x-pack/plugins/observability/public/index.ts @@ -15,7 +15,7 @@ export const plugin: PluginInitializer props.theme.eui.euiColorEmptyShade}; -`; - -const Title = styled.div` - background-color: ${(props) => props.theme.eui.euiPageBackgroundColor}; - border-bottom: ${(props) => props.theme.eui.euiBorderThin}; -`; - -const Page = styled.div` - width: 100%; - max-width: 1200px; - margin: 0 auto; - overflow: hidden; -} -`; - -const EuiCardWithoutPadding = styled(EuiCard)` - padding: 0; -`; - -export const Home = () => { - const { core } = usePluginContext(); - - useEffect(() => { - core.chrome.setBreadcrumbs([ - { - text: i18n.translate('xpack.observability.home.breadcrumb.observability', { - defaultMessage: 'Observability', - }), - }, - { - text: i18n.translate('xpack.observability.home.breadcrumb.gettingStarted', { - defaultMessage: 'Getting started', - }), - }, - ]); - }, [core]); - - return ( - - - <Page> - <EuiSpacer size="xxl" /> - <EuiFlexGroup> - <EuiFlexItem grow={false}> - <EuiIcon type="logoObservability" size="xxl" /> - </EuiFlexItem> - <EuiFlexItem> - <EuiTitle size="m"> - <h1> - {i18n.translate('xpack.observability.home.title', { - defaultMessage: 'Observability', - })} - </h1> - </EuiTitle> - </EuiFlexItem> - </EuiFlexGroup> - <EuiSpacer size="xxl" /> - </Page> - - - - - {/* title and description */} - - -

- {i18n.translate('xpack.observability.home.sectionTitle', { - defaultMessage: 'Unified visibility across your entire ecosystem', - })} -

-
- - - {i18n.translate('xpack.observability.home.sectionsubtitle', { - defaultMessage: - 'Monitor, analyze, and react to events happening anywhere in your environment by bringing logs, metrics, and traces together at scale in a single stack.', - })} - -
- - {/* Apps sections */} - - - - - - {appsSection.map((app) => ( - - } - title={ - -

{app.title}

-
- } - description={app.description} - /> -
- ))} -
-
- - - -
-
- - {/* Get started button */} - - - - - {i18n.translate('xpack.observability.home.getStatedButton', { - defaultMessage: 'Get started', - })} - - - - -
-
-
- ); +import React from 'react'; +import { useHistory } from 'react-router-dom'; +import { fetchHasData } from '../../data_handler'; +import { useFetcher } from '../../hooks/use_fetcher'; + +export const HomePage = () => { + const history = useHistory(); + const { data = {} } = useFetcher(() => fetchHasData(), []); + + const values = Object.values(data); + const hasSomeData = values.length ? values.some((hasData) => hasData) : null; + + if (hasSomeData === true) { + history.push({ pathname: '/overview' }); + } + if (hasSomeData === false) { + history.push({ pathname: '/landing' }); + } + + return <>; }; diff --git a/x-pack/plugins/observability/public/pages/home/section.ts b/x-pack/plugins/observability/public/pages/home/section.ts index d33571a16ccb7..8c87f17c16b3d 100644 --- a/x-pack/plugins/observability/public/pages/home/section.ts +++ b/x-pack/plugins/observability/public/pages/home/section.ts @@ -4,19 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ import { i18n } from '@kbn/i18n'; - -interface ISection { - id: string; - title: string; - icon: string; - description: string; - href?: string; - target?: '_blank'; -} +import { ISection } from '../../typings/section'; export const appsSection: ISection[] = [ { - id: 'logs', + id: 'infra_logs', title: i18n.translate('xpack.observability.section.apps.logs.title', { defaultMessage: 'Logs', }), @@ -25,6 +17,7 @@ export const appsSection: ISection[] = [ defaultMessage: 'Centralize logs from any source. Search, tail, automate anomaly detection, and visualize trends so you can take action quicker.', }), + href: 'https://www.elastic.co', }, { id: 'apm', @@ -36,9 +29,10 @@ export const appsSection: ISection[] = [ defaultMessage: 'Trace transactions through a distributed architecture and map your services’ interactions to easily spot performance bottlenecks.', }), + href: 'https://www.elastic.co', }, { - id: 'metrics', + id: 'infra_metrics', title: i18n.translate('xpack.observability.section.apps.metrics.title', { defaultMessage: 'Metrics', }), @@ -47,6 +41,7 @@ export const appsSection: ISection[] = [ defaultMessage: 'Analyze metrics from your infrastructure, apps, and services. Discover trends, forecast behavior, get alerts on anomalies, and more.', }), + href: 'https://www.elastic.co', }, { id: 'uptime', @@ -58,5 +53,6 @@ export const appsSection: ISection[] = [ defaultMessage: 'Proactively monitor the availability of your sites and services. Receive alerts and resolve issues faster to optimize your users’ experience.', }), + href: 'https://www.elastic.co', }, ]; diff --git a/x-pack/plugins/observability/public/pages/landing/index.tsx b/x-pack/plugins/observability/public/pages/landing/index.tsx new file mode 100644 index 0000000000000..b614095641250 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/landing/index.tsx @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + EuiButton, + EuiCard, + EuiFlexGrid, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiImage, + EuiSpacer, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useContext } from 'react'; +import styled, { ThemeContext } from 'styled-components'; +import { WithHeaderLayout } from '../../components/app/layout/with_header'; +import { usePluginContext } from '../../hooks/use_plugin_context'; +import { appsSection } from '../home/section'; + +const EuiCardWithoutPadding = styled(EuiCard)` + padding: 0; +`; + +export const LandingPage = () => { + const { core } = usePluginContext(); + const theme = useContext(ThemeContext); + + return ( + + + {/* title and description */} + + +

+ {i18n.translate('xpack.observability.home.sectionTitle', { + defaultMessage: 'Unified visibility across your entire ecosystem', + })} +

+
+ + + {i18n.translate('xpack.observability.home.sectionsubtitle', { + defaultMessage: + 'Monitor, analyze, and react to events happening anywhere in your environment by bringing logs, metrics, and traces together at scale in a single stack.', + })} + +
+ + {/* Apps sections */} + + + + + + {appsSection.map((app) => ( + + } + title={ + +

{app.title}

+
+ } + description={app.description} + /> +
+ ))} +
+
+ + + +
+
+ + + + {/* Get started button */} + + + + + {i18n.translate('xpack.observability.home.getStatedButton', { + defaultMessage: 'Get started', + })} + + + + +
+
+ ); +}; diff --git a/x-pack/plugins/observability/public/pages/overview/empty_section.ts b/x-pack/plugins/observability/public/pages/overview/empty_section.ts new file mode 100644 index 0000000000000..61456bc88bd3e --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/empty_section.ts @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; +import { AppMountContext } from 'kibana/public'; +import { ISection } from '../../typings/section'; + +export const getEmptySections = ({ core }: { core: AppMountContext['core'] }): ISection[] => { + return [ + { + id: 'infra_logs', + title: i18n.translate('xpack.observability.emptySection.apps.logs.title', { + defaultMessage: 'Logs', + }), + icon: 'logoLogging', + description: i18n.translate('xpack.observability.emptySection.apps.logs.description', { + defaultMessage: + 'Centralize logs from any source. Search, tail, automate anomaly detection, and visualize trends so you can take action quicker.', + }), + linkTitle: i18n.translate('xpack.observability.emptySection.apps.logs.link', { + defaultMessage: 'Install Filebeat', + }), + href: 'https://www.elastic.co', + }, + { + id: 'apm', + title: i18n.translate('xpack.observability.emptySection.apps.apm.title', { + defaultMessage: 'APM', + }), + icon: 'logoAPM', + description: i18n.translate('xpack.observability.emptySection.apps.apm.description', { + defaultMessage: + 'Trace transactions through a distributed architecture and map your services’ interactions to easily spot performance bottlenecks.', + }), + linkTitle: i18n.translate('xpack.observability.emptySection.apps.apm.link', { + defaultMessage: 'Install agent', + }), + href: 'https://www.elastic.co', + }, + { + id: 'infra_metrics', + title: i18n.translate('xpack.observability.emptySection.apps.metrics.title', { + defaultMessage: 'Metrics', + }), + icon: 'logoMetrics', + description: i18n.translate('xpack.observability.emptySection.apps.metrics.description', { + defaultMessage: + 'Analyze metrics from your infrastructure, apps, and services. Discover trends, forecast behavior, get alerts on anomalies, and more.', + }), + linkTitle: i18n.translate('xpack.observability.emptySection.apps.metrics.link', { + defaultMessage: 'Install metrics module', + }), + href: 'https://www.elastic.co', + }, + { + id: 'uptime', + title: i18n.translate('xpack.observability.emptySection.apps.uptime.title', { + defaultMessage: 'Uptime', + }), + icon: 'logoUptime', + description: i18n.translate('xpack.observability.emptySection.apps.uptime.description', { + defaultMessage: + 'Proactively monitor the availability of your sites and services. Receive alerts and resolve issues faster to optimize your users’ experience.', + }), + linkTitle: i18n.translate('xpack.observability.emptySection.apps.uptime.link', { + defaultMessage: 'Install Heartbeat', + }), + href: 'https://www.elastic.co', + }, + { + id: 'alert', + title: i18n.translate('xpack.observability.emptySection.apps.alert.title', { + defaultMessage: 'No alerts found.', + }), + icon: 'watchesApp', + description: i18n.translate('xpack.observability.emptySection.apps.alert.description', { + defaultMessage: + '503 errors stacking up. Applications not responding. CPU and RAM utilization jumping. See these warnings as they happen - not as part of the post-mortem.', + }), + linkTitle: i18n.translate('xpack.observability.emptySection.apps.alert.link', { + defaultMessage: 'Create alert', + }), + href: core.http.basePath.prepend( + '/app/management/insightsAndAlerting/triggersActions/alerts' + ), + }, + ]; +}; diff --git a/x-pack/plugins/observability/public/pages/overview/index.tsx b/x-pack/plugins/observability/public/pages/overview/index.tsx new file mode 100644 index 0000000000000..9caac7f9d86f4 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/index.tsx @@ -0,0 +1,198 @@ +/* + * 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 { EuiFlexGrid, EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, EuiSpacer } from '@elastic/eui'; +import moment from 'moment'; +import React, { useContext } from 'react'; +import { ThemeContext } from 'styled-components'; +import { EmptySection } from '../../components/app/empty_section'; +import { WithHeaderLayout } from '../../components/app/layout/with_header'; +import { Resources } from '../../components/app/resources'; +import { AlertsSection } from '../../components/app/section/alerts'; +import { APMSection } from '../../components/app/section/apm'; +import { LogsSection } from '../../components/app/section/logs'; +import { MetricsSection } from '../../components/app/section/metrics'; +import { UptimeSection } from '../../components/app/section/uptime'; +import { DatePicker, TimePickerTime } from '../../components/shared/data_picker'; +import { fetchHasData } from '../../data_handler'; +import { FETCH_STATUS, useFetcher } from '../../hooks/use_fetcher'; +import { UI_SETTINGS, useKibanaUISettings } from '../../hooks/use_kibana_ui_settings'; +import { usePluginContext } from '../../hooks/use_plugin_context'; +import { RouteParams } from '../../routes'; +import { getObservabilityAlerts } from '../../services/get_observability_alerts'; +import { getParsedDate } from '../../utils/date'; +import { getBucketSize } from '../../utils/get_bucket_size'; +import { getEmptySections } from './empty_section'; +import { LoadingObservability } from './loading_observability'; + +interface Props { + routeParams: RouteParams<'/overview'>; +} + +function calculatetBucketSize({ startTime, endTime }: { startTime?: string; endTime?: string }) { + if (startTime && endTime) { + return getBucketSize({ + start: moment.utc(startTime).valueOf(), + end: moment.utc(endTime).valueOf(), + minInterval: '60s', + }); + } +} + +export const OverviewPage = ({ routeParams }: Props) => { + const { core } = usePluginContext(); + + const { data: alerts = [], status: alertStatus } = useFetcher(() => { + return getObservabilityAlerts({ core }); + }, []); + + const theme = useContext(ThemeContext); + const timePickerTime = useKibanaUISettings(UI_SETTINGS.TIMEPICKER_TIME_DEFAULTS); + + const result = useFetcher(() => fetchHasData(), []); + const hasData = result.data; + + if (!hasData) { + return ; + } + + const { + rangeFrom = timePickerTime.from, + rangeTo = timePickerTime.to, + refreshInterval = 10000, + refreshPaused = true, + } = routeParams.query; + + const startTime = getParsedDate(rangeFrom); + const endTime = getParsedDate(rangeTo, { roundUp: true }); + const bucketSize = calculatetBucketSize({ startTime, endTime }); + + const appEmptySections = getEmptySections({ core }).filter(({ id }) => { + if (id === 'alert') { + return alertStatus !== FETCH_STATUS.FAILURE && !alerts.length; + } + return !hasData[id]; + }); + + // Hides the data section when all 'hasData' is false or undefined + const showDataSections = Object.values(hasData).some((hasPluginData) => hasPluginData); + + return ( + + + + + + + + + + + + {/* Data sections */} + {showDataSections && ( + + {hasData.infra_logs && ( + + + + )} + {hasData.infra_metrics && ( + + + + )} + {hasData.apm && ( + + + + )} + {hasData.uptime && ( + + + + )} + + )} + + {/* Empty sections */} + {!!appEmptySections.length && ( + + + 2 ? 2 : 1 + } + gutterSize="s" + > + {appEmptySections.map((app) => { + return ( + + + + ); + })} + + + )} + + + {/* Alert section */} + {!!alerts.length && ( + + + + )} + + {/* Resources section */} + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/observability/public/pages/overview/loading_observability.tsx b/x-pack/plugins/observability/public/pages/overview/loading_observability.tsx new file mode 100644 index 0000000000000..90e3104443e6b --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/loading_observability.tsx @@ -0,0 +1,53 @@ +/* + * 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, { useContext } from 'react'; +import styled, { ThemeContext } from 'styled-components'; +import { EuiFlexItem } from '@elastic/eui'; +import { EuiPanel } from '@elastic/eui'; +import { EuiFlexGroup } from '@elastic/eui'; +import { EuiLoadingSpinner } from '@elastic/eui'; +import { EuiText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { WithHeaderLayout } from '../../components/app/layout/with_header'; + +const CentralizedFlexGroup = styled(EuiFlexGroup)` + justify-content: center; + align-items: center; + // place the element in the center of the page + min-height: calc(100vh - ${(props) => props.theme.eui.euiHeaderChildSize}); +`; + +export const LoadingObservability = () => { + const theme = useContext(ThemeContext); + + return ( + + + + + + + + + + + {i18n.translate('xpack.observability.overview.loadingObservability', { + defaultMessage: 'Loading Observability', + })} + + + + + + + + ); +}; diff --git a/x-pack/plugins/observability/public/pages/overview/mock/alerts.mock.ts b/x-pack/plugins/observability/public/pages/overview/mock/alerts.mock.ts new file mode 100644 index 0000000000000..759b8b5fdae4f --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/mock/alerts.mock.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const alertsFetchData = async () => { + return Promise.resolve({ + data: [ + { + id: '1', + consumer: 'apm', + name: 'Error rate | opbeans-java', + alertTypeId: 'apm.error_rate', + tags: ['apm', 'service.name:opbeans-java'], + updatedAt: '2020-07-03T14:27:51.488Z', + muteAll: true, + }, + { + id: '2', + consumer: 'apm', + name: 'Transaction duration | opbeans-java', + alertTypeId: 'apm.transaction_duration', + tags: ['apm', 'service.name:opbeans-java'], + updatedAt: '2020-07-02T14:27:51.488Z', + muteAll: true, + }, + { + id: '3', + consumer: 'logs', + name: 'Logs obs test', + alertTypeId: 'logs.alert.document.count', + tags: ['logs', 'observability'], + updatedAt: '2020-06-30T14:27:51.488Z', + muteAll: true, + }, + { + id: '4', + consumer: 'metrics', + name: 'Metrics obs test', + alertTypeId: 'metrics.alert.inventory.threshold', + tags: ['metrics', 'observability'], + updatedAt: '2020-03-20T14:27:51.488Z', + muteAll: true, + }, + { + id: '5', + consumer: 'uptime', + name: 'Uptime obs test', + alertTypeId: 'xpack.uptime.alerts.monitorStatus', + tags: ['uptime', 'observability'], + updatedAt: '2020-03-25T17:27:51.488Z', + muteAll: true, + }, + ], + }); +}; diff --git a/x-pack/plugins/observability/public/pages/overview/mock/apm.mock.ts b/x-pack/plugins/observability/public/pages/overview/mock/apm.mock.ts new file mode 100644 index 0000000000000..7303b78cc0132 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/mock/apm.mock.ts @@ -0,0 +1,627 @@ +/* + * 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 { ApmFetchDataResponse, FetchData } from '../../../typings'; + +export const fetchApmData: FetchData = () => { + return Promise.resolve(response); +}; + +const response: ApmFetchDataResponse = { + title: 'APM', + appLink: '/app/apm', + stats: { + services: { + type: 'number', + value: 7, + }, + transactions: { + type: 'number', + value: 125808, + }, + }, + series: { + transactions: { + coordinates: [ + { + x: 1593295200000, + y: 891, + }, + { + x: 1593297000000, + y: 902, + }, + { + x: 1593298800000, + y: 924, + }, + { + x: 1593300600000, + y: 944, + }, + { + x: 1593302400000, + y: 935, + }, + { + x: 1593304200000, + y: 915, + }, + { + x: 1593306000000, + y: 917, + }, + { + x: 1593307800000, + y: 941, + }, + { + x: 1593309600000, + y: 906, + }, + { + x: 1593311400000, + y: 939, + }, + { + x: 1593313200000, + y: 961, + }, + { + x: 1593315000000, + y: 911, + }, + { + x: 1593316800000, + y: 958, + }, + { + x: 1593318600000, + y: 861, + }, + { + x: 1593320400000, + y: 906, + }, + { + x: 1593322200000, + y: 899, + }, + { + x: 1593324000000, + y: 785, + }, + { + x: 1593325800000, + y: 952, + }, + { + x: 1593327600000, + y: 910, + }, + { + x: 1593329400000, + y: 869, + }, + { + x: 1593331200000, + y: 895, + }, + { + x: 1593333000000, + y: 924, + }, + { + x: 1593334800000, + y: 930, + }, + { + x: 1593336600000, + y: 947, + }, + { + x: 1593338400000, + y: 905, + }, + { + x: 1593340200000, + y: 963, + }, + { + x: 1593342000000, + y: 877, + }, + { + x: 1593343800000, + y: 839, + }, + { + x: 1593345600000, + y: 884, + }, + { + x: 1593347400000, + y: 934, + }, + { + x: 1593349200000, + y: 908, + }, + { + x: 1593351000000, + y: 982, + }, + { + x: 1593352800000, + y: 897, + }, + { + x: 1593354600000, + y: 903, + }, + { + x: 1593356400000, + y: 877, + }, + { + x: 1593358200000, + y: 893, + }, + { + x: 1593360000000, + y: 919, + }, + { + x: 1593361800000, + y: 844, + }, + { + x: 1593363600000, + y: 940, + }, + { + x: 1593365400000, + y: 951, + }, + { + x: 1593367200000, + y: 869, + }, + { + x: 1593369000000, + y: 901, + }, + { + x: 1593370800000, + y: 940, + }, + { + x: 1593372600000, + y: 942, + }, + { + x: 1593374400000, + y: 881, + }, + { + x: 1593376200000, + y: 935, + }, + { + x: 1593378000000, + y: 892, + }, + { + x: 1593379800000, + y: 861, + }, + { + x: 1593381600000, + y: 868, + }, + { + x: 1593383400000, + y: 990, + }, + { + x: 1593385200000, + y: 931, + }, + { + x: 1593387000000, + y: 898, + }, + { + x: 1593388800000, + y: 906, + }, + { + x: 1593390600000, + y: 928, + }, + { + x: 1593392400000, + y: 975, + }, + { + x: 1593394200000, + y: 842, + }, + { + x: 1593396000000, + y: 940, + }, + { + x: 1593397800000, + y: 922, + }, + { + x: 1593399600000, + y: 962, + }, + { + x: 1593401400000, + y: 940, + }, + { + x: 1593403200000, + y: 974, + }, + { + x: 1593405000000, + y: 887, + }, + { + x: 1593406800000, + y: 920, + }, + { + x: 1593408600000, + y: 854, + }, + { + x: 1593410400000, + y: 898, + }, + { + x: 1593412200000, + y: 952, + }, + { + x: 1593414000000, + y: 987, + }, + { + x: 1593415800000, + y: 932, + }, + { + x: 1593417600000, + y: 1009, + }, + { + x: 1593419400000, + y: 989, + }, + { + x: 1593421200000, + y: 939, + }, + { + x: 1593423000000, + y: 929, + }, + { + x: 1593424800000, + y: 929, + }, + { + x: 1593426600000, + y: 864, + }, + { + x: 1593428400000, + y: 895, + }, + { + x: 1593430200000, + y: 876, + }, + { + x: 1593432000000, + y: 68, + }, + { + x: 1593433800000, + y: 0, + }, + { + x: 1593435600000, + y: 0, + }, + { + x: 1593437400000, + y: 0, + }, + { + x: 1593439200000, + y: 0, + }, + { + x: 1593441000000, + y: 0, + }, + { + x: 1593442800000, + y: 700, + }, + { + x: 1593444600000, + y: 930, + }, + { + x: 1593446400000, + y: 953, + }, + { + x: 1593448200000, + y: 995, + }, + { + x: 1593450000000, + y: 883, + }, + { + x: 1593451800000, + y: 902, + }, + { + x: 1593453600000, + y: 988, + }, + { + x: 1593455400000, + y: 947, + }, + { + x: 1593457200000, + y: 889, + }, + { + x: 1593459000000, + y: 982, + }, + { + x: 1593460800000, + y: 919, + }, + { + x: 1593462600000, + y: 854, + }, + { + x: 1593464400000, + y: 894, + }, + { + x: 1593466200000, + y: 901, + }, + { + x: 1593468000000, + y: 970, + }, + { + x: 1593469800000, + y: 840, + }, + { + x: 1593471600000, + y: 857, + }, + { + x: 1593473400000, + y: 943, + }, + { + x: 1593475200000, + y: 825, + }, + { + x: 1593477000000, + y: 955, + }, + { + x: 1593478800000, + y: 959, + }, + { + x: 1593480600000, + y: 921, + }, + { + x: 1593482400000, + y: 924, + }, + { + x: 1593484200000, + y: 840, + }, + { + x: 1593486000000, + y: 943, + }, + { + x: 1593487800000, + y: 919, + }, + { + x: 1593489600000, + y: 882, + }, + { + x: 1593491400000, + y: 900, + }, + { + x: 1593493200000, + y: 930, + }, + { + x: 1593495000000, + y: 854, + }, + { + x: 1593496800000, + y: 905, + }, + { + x: 1593498600000, + y: 922, + }, + { + x: 1593500400000, + y: 863, + }, + { + x: 1593502200000, + y: 966, + }, + { + x: 1593504000000, + y: 910, + }, + { + x: 1593505800000, + y: 851, + }, + { + x: 1593507600000, + y: 867, + }, + { + x: 1593509400000, + y: 904, + }, + { + x: 1593511200000, + y: 913, + }, + { + x: 1593513000000, + y: 889, + }, + { + x: 1593514800000, + y: 907, + }, + { + x: 1593516600000, + y: 965, + }, + { + x: 1593518400000, + y: 868, + }, + { + x: 1593520200000, + y: 919, + }, + { + x: 1593522000000, + y: 945, + }, + { + x: 1593523800000, + y: 883, + }, + { + x: 1593525600000, + y: 902, + }, + { + x: 1593527400000, + y: 900, + }, + { + x: 1593529200000, + y: 829, + }, + { + x: 1593531000000, + y: 919, + }, + { + x: 1593532800000, + y: 942, + }, + { + x: 1593534600000, + y: 924, + }, + { + x: 1593536400000, + y: 958, + }, + { + x: 1593538200000, + y: 867, + }, + { + x: 1593540000000, + y: 844, + }, + { + x: 1593541800000, + y: 976, + }, + { + x: 1593543600000, + y: 937, + }, + { + x: 1593545400000, + y: 891, + }, + { + x: 1593547200000, + y: 936, + }, + { + x: 1593549000000, + y: 895, + }, + { + x: 1593550800000, + y: 850, + }, + { + x: 1593552600000, + y: 899, + }, + ], + }, + }, +}; + +export const emptyResponse: ApmFetchDataResponse = { + title: 'APM', + appLink: '/app/apm', + stats: { + services: { + type: 'number', + value: 0, + }, + transactions: { + type: 'number', + value: 0, + }, + }, + series: { + transactions: { + coordinates: [], + }, + }, +}; diff --git a/x-pack/plugins/observability/public/pages/overview/mock/logs.mock.ts b/x-pack/plugins/observability/public/pages/overview/mock/logs.mock.ts new file mode 100644 index 0000000000000..5bea1fbf19ace --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/mock/logs.mock.ts @@ -0,0 +1,2326 @@ +/* + * 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 { FetchData, LogsFetchDataResponse } from '../../../typings'; + +export const fetchLogsData: FetchData = () => { + return Promise.resolve(response); +}; + +const response: LogsFetchDataResponse = { + title: 'Logs', + appLink: + "/app/logs/stream?logPosition=(end:'2020-06-30T21:30:00.000Z',start:'2020-06-27T22:00:00.000Z')", + stats: { + 'haproxy.log': { + type: 'number', + label: 'haproxy.log', + value: 145.84289044289045, + }, + 'nginx.access': { + type: 'number', + label: 'nginx.access', + value: 94.67039627039627, + }, + 'kibana.log': { + type: 'number', + label: 'kibana.log', + value: 11.018181818181818, + }, + 'nginx.error': { + type: 'number', + label: 'nginx.error', + value: 8.218181818181819, + }, + }, + series: { + 'haproxy.log': { + label: 'haproxy.log', + coordinates: [ + { + x: 1593295200000, + y: 146.83333333333334, + }, + { + x: 1593297000000, + y: 146.96666666666667, + }, + { + x: 1593298800000, + y: 146.96666666666667, + }, + { + x: 1593300600000, + y: 146.86666666666667, + }, + { + x: 1593302400000, + y: 146.96666666666667, + }, + { + x: 1593304200000, + y: 147.03333333333333, + }, + { + x: 1593306000000, + y: 147.16666666666666, + }, + { + x: 1593307800000, + y: 146.96666666666667, + }, + { + x: 1593309600000, + y: 146.96666666666667, + }, + { + x: 1593311400000, + y: 146.96666666666667, + }, + { + x: 1593313200000, + y: 147.03333333333333, + }, + { + x: 1593315000000, + y: 147.13333333333333, + }, + { + x: 1593316800000, + y: 146.96666666666667, + }, + { + x: 1593318600000, + y: 146.96666666666667, + }, + { + x: 1593320400000, + y: 146.93333333333334, + }, + { + x: 1593322200000, + y: 147.06666666666666, + }, + { + x: 1593324000000, + y: 146.9, + }, + { + x: 1593325800000, + y: 147.06666666666666, + }, + { + x: 1593327600000, + y: 147.06666666666666, + }, + { + x: 1593329400000, + y: 146.93333333333334, + }, + { + x: 1593331200000, + y: 146.86666666666667, + }, + { + x: 1593333000000, + y: 146.86666666666667, + }, + { + x: 1593334800000, + y: 147, + }, + { + x: 1593336600000, + y: 146.66666666666666, + }, + { + x: 1593338400000, + y: 146.83333333333334, + }, + { + x: 1593340200000, + y: 146.9, + }, + { + x: 1593342000000, + y: 146.96666666666667, + }, + { + x: 1593343800000, + y: 146.86666666666667, + }, + { + x: 1593345600000, + y: 146.83333333333334, + }, + { + x: 1593347400000, + y: 146.86666666666667, + }, + { + x: 1593349200000, + y: 146.93333333333334, + }, + { + x: 1593351000000, + y: 146.8, + }, + { + x: 1593352800000, + y: 146.83333333333334, + }, + { + x: 1593354600000, + y: 146.83333333333334, + }, + { + x: 1593356400000, + y: 146.73333333333332, + }, + { + x: 1593358200000, + y: 146.9, + }, + { + x: 1593360000000, + y: 146.73333333333332, + }, + { + x: 1593361800000, + y: 146.63333333333333, + }, + { + x: 1593363600000, + y: 146.6, + }, + { + x: 1593365400000, + y: 147.06666666666666, + }, + { + x: 1593367200000, + y: 147, + }, + { + x: 1593369000000, + y: 146.93333333333334, + }, + { + x: 1593370800000, + y: 146.73333333333332, + }, + { + x: 1593372600000, + y: 147.06666666666666, + }, + { + x: 1593374400000, + y: 147, + }, + { + x: 1593376200000, + y: 147.06666666666666, + }, + { + x: 1593378000000, + y: 147.2, + }, + { + x: 1593379800000, + y: 147.1, + }, + { + x: 1593381600000, + y: 147, + }, + { + x: 1593383400000, + y: 147.06666666666666, + }, + { + x: 1593385200000, + y: 147.13333333333333, + }, + { + x: 1593387000000, + y: 147.2, + }, + { + x: 1593388800000, + y: 146.96666666666667, + }, + { + x: 1593390600000, + y: 146.83333333333334, + }, + { + x: 1593392400000, + y: 146.8, + }, + { + x: 1593394200000, + y: 144.3, + }, + { + x: 1593396000000, + y: 147.3, + }, + { + x: 1593397800000, + y: 147.2, + }, + { + x: 1593399600000, + y: 147.33333333333334, + }, + { + x: 1593401400000, + y: 147.1, + }, + { + x: 1593403200000, + y: 147.13333333333333, + }, + { + x: 1593405000000, + y: 147.16666666666666, + }, + { + x: 1593406800000, + y: 147.1, + }, + { + x: 1593408600000, + y: 147.3, + }, + { + x: 1593410400000, + y: 147.26666666666668, + }, + { + x: 1593412200000, + y: 147.2, + }, + { + x: 1593414000000, + y: 147.03333333333333, + }, + { + x: 1593415800000, + y: 146.9, + }, + { + x: 1593417600000, + y: 146.96666666666667, + }, + { + x: 1593419400000, + y: 147.1, + }, + { + x: 1593421200000, + y: 147.13333333333333, + }, + { + x: 1593423000000, + y: 147.03333333333333, + }, + { + x: 1593424800000, + y: 141.36666666666667, + }, + { + x: 1593426600000, + y: 144.63333333333333, + }, + { + x: 1593428400000, + y: 153.66666666666666, + }, + { + x: 1593430200000, + y: 136.76666666666668, + }, + { + x: 1593432000000, + y: 123.43333333333334, + }, + { + x: 1593433800000, + y: 123.5, + }, + { + x: 1593435600000, + y: 123.26666666666667, + }, + { + x: 1593437400000, + y: 123.23333333333333, + }, + { + x: 1593439200000, + y: 123.13333333333334, + }, + { + x: 1593441000000, + y: 123.2, + }, + { + x: 1593442800000, + y: 144.23333333333332, + }, + { + x: 1593444600000, + y: 147.06666666666666, + }, + { + x: 1593446400000, + y: 146.9, + }, + { + x: 1593448200000, + y: 146.7, + }, + { + x: 1593450000000, + y: 146.8, + }, + { + x: 1593451800000, + y: 146.73333333333332, + }, + { + x: 1593453600000, + y: 146.7, + }, + { + x: 1593455400000, + y: 146.7, + }, + { + x: 1593457200000, + y: 146.56666666666666, + }, + { + x: 1593459000000, + y: 146.8, + }, + { + x: 1593460800000, + y: 146.8, + }, + { + x: 1593462600000, + y: 146.83333333333334, + }, + { + x: 1593464400000, + y: 146.7, + }, + { + x: 1593466200000, + y: 146.9, + }, + { + x: 1593468000000, + y: 147.03333333333333, + }, + { + x: 1593469800000, + y: 146.76666666666668, + }, + { + x: 1593471600000, + y: 146.7, + }, + { + x: 1593473400000, + y: 146.63333333333333, + }, + { + x: 1593475200000, + y: 146.93333333333334, + }, + { + x: 1593477000000, + y: 146.5, + }, + { + x: 1593478800000, + y: 146.76666666666668, + }, + { + x: 1593480600000, + y: 144.83333333333334, + }, + { + x: 1593482400000, + y: 146.96666666666667, + }, + { + x: 1593484200000, + y: 147.1, + }, + { + x: 1593486000000, + y: 147.1, + }, + { + x: 1593487800000, + y: 147.3, + }, + { + x: 1593489600000, + y: 147.1, + }, + { + x: 1593491400000, + y: 147.03333333333333, + }, + { + x: 1593493200000, + y: 147.2, + }, + { + x: 1593495000000, + y: 147.06666666666666, + }, + { + x: 1593496800000, + y: 147.1, + }, + { + x: 1593498600000, + y: 147.2, + }, + { + x: 1593500400000, + y: 147.06666666666666, + }, + { + x: 1593502200000, + y: 147.06666666666666, + }, + { + x: 1593504000000, + y: 147.06666666666666, + }, + { + x: 1593505800000, + y: 147.06666666666666, + }, + { + x: 1593507600000, + y: 146.96666666666667, + }, + { + x: 1593509400000, + y: 147.16666666666666, + }, + { + x: 1593511200000, + y: 147.03333333333333, + }, + { + x: 1593513000000, + y: 147, + }, + { + x: 1593514800000, + y: 147.03333333333333, + }, + { + x: 1593516600000, + y: 146.96666666666667, + }, + { + x: 1593518400000, + y: 146.63333333333333, + }, + { + x: 1593520200000, + y: 146.43333333333334, + }, + { + x: 1593522000000, + y: 147.13333333333333, + }, + { + x: 1593523800000, + y: 147.13333333333333, + }, + { + x: 1593525600000, + y: 146.93333333333334, + }, + { + x: 1593527400000, + y: 147, + }, + { + x: 1593529200000, + y: 147.03333333333333, + }, + { + x: 1593531000000, + y: 147.2, + }, + { + x: 1593532800000, + y: 147.13333333333333, + }, + { + x: 1593534600000, + y: 147.13333333333333, + }, + { + x: 1593536400000, + y: 147.13333333333333, + }, + { + x: 1593538200000, + y: 147.1, + }, + { + x: 1593540000000, + y: 147, + }, + { + x: 1593541800000, + y: 147.26666666666668, + }, + { + x: 1593543600000, + y: 146.73333333333332, + }, + { + x: 1593545400000, + y: 147.03333333333333, + }, + { + x: 1593547200000, + y: 147, + }, + { + x: 1593549000000, + y: 146.9, + }, + { + x: 1593550800000, + y: 147.03333333333333, + }, + ], + }, + 'nginx.access': { + label: 'nginx.access', + coordinates: [ + { + x: 1593295200000, + y: 94.06666666666666, + }, + { + x: 1593297000000, + y: 91.4, + }, + { + x: 1593298800000, + y: 95.03333333333333, + }, + { + x: 1593300600000, + y: 94.5, + }, + { + x: 1593302400000, + y: 94.06666666666666, + }, + { + x: 1593304200000, + y: 93.3, + }, + { + x: 1593306000000, + y: 91.16666666666667, + }, + { + x: 1593307800000, + y: 94.5, + }, + { + x: 1593309600000, + y: 93.53333333333333, + }, + { + x: 1593311400000, + y: 118.9, + }, + { + x: 1593313200000, + y: 110.66666666666667, + }, + { + x: 1593315000000, + y: 95.66666666666667, + }, + { + x: 1593316800000, + y: 99.53333333333333, + }, + { + x: 1593318600000, + y: 123.36666666666666, + }, + { + x: 1593320400000, + y: 94.13333333333334, + }, + { + x: 1593322200000, + y: 95.53333333333333, + }, + { + x: 1593324000000, + y: 93.93333333333334, + }, + { + x: 1593325800000, + y: 94.06666666666666, + }, + { + x: 1593327600000, + y: 118.16666666666667, + }, + { + x: 1593329400000, + y: 108.6, + }, + { + x: 1593331200000, + y: 93.53333333333333, + }, + { + x: 1593333000000, + y: 93.06666666666666, + }, + { + x: 1593334800000, + y: 93.76666666666667, + }, + { + x: 1593336600000, + y: 95.3, + }, + { + x: 1593338400000, + y: 96.4, + }, + { + x: 1593340200000, + y: 121.93333333333334, + }, + { + x: 1593342000000, + y: 134.43333333333334, + }, + { + x: 1593343800000, + y: 160.4, + }, + { + x: 1593345600000, + y: 129.7, + }, + { + x: 1593347400000, + y: 119.16666666666667, + }, + { + x: 1593349200000, + y: 133.06666666666666, + }, + { + x: 1593351000000, + y: 212.4, + }, + { + x: 1593352800000, + y: 95.36666666666666, + }, + { + x: 1593354600000, + y: 93.6, + }, + { + x: 1593356400000, + y: 93.4, + }, + { + x: 1593358200000, + y: 95.1, + }, + { + x: 1593360000000, + y: 94.36666666666666, + }, + { + x: 1593361800000, + y: 97.23333333333333, + }, + { + x: 1593363600000, + y: 94.03333333333333, + }, + { + x: 1593365400000, + y: 94.53333333333333, + }, + { + x: 1593367200000, + y: 93.56666666666666, + }, + { + x: 1593369000000, + y: 98.43333333333334, + }, + { + x: 1593370800000, + y: 92.3, + }, + { + x: 1593372600000, + y: 93.13333333333334, + }, + { + x: 1593374400000, + y: 93.16666666666667, + }, + { + x: 1593376200000, + y: 93.7, + }, + { + x: 1593378000000, + y: 94.46666666666667, + }, + { + x: 1593379800000, + y: 97.16666666666667, + }, + { + x: 1593381600000, + y: 94.36666666666666, + }, + { + x: 1593383400000, + y: 93.7, + }, + { + x: 1593385200000, + y: 93.4, + }, + { + x: 1593387000000, + y: 91.3, + }, + { + x: 1593388800000, + y: 92.66666666666667, + }, + { + x: 1593390600000, + y: 93.73333333333333, + }, + { + x: 1593392400000, + y: 94.33333333333333, + }, + { + x: 1593394200000, + y: 93.23333333333333, + }, + { + x: 1593396000000, + y: 93.9, + }, + { + x: 1593397800000, + y: 92.83333333333333, + }, + { + x: 1593399600000, + y: 93, + }, + { + x: 1593401400000, + y: 91.2, + }, + { + x: 1593403200000, + y: 91.96666666666667, + }, + { + x: 1593405000000, + y: 93.83333333333333, + }, + { + x: 1593406800000, + y: 93.16666666666667, + }, + { + x: 1593408600000, + y: 95.36666666666666, + }, + { + x: 1593410400000, + y: 92.5, + }, + { + x: 1593412200000, + y: 93.16666666666667, + }, + { + x: 1593414000000, + y: 92.8, + }, + { + x: 1593415800000, + y: 95.83333333333333, + }, + { + x: 1593417600000, + y: 96.96666666666667, + }, + { + x: 1593419400000, + y: 94.63333333333334, + }, + { + x: 1593421200000, + y: 98.7, + }, + { + x: 1593423000000, + y: 100.03333333333333, + }, + { + x: 1593424800000, + y: 108.66666666666667, + }, + { + x: 1593426600000, + y: 110.9, + }, + { + x: 1593428400000, + y: 88.56666666666666, + }, + { + x: 1593430200000, + y: 1, + }, + { + x: 1593442800000, + y: 74.53333333333333, + }, + { + x: 1593444600000, + y: 99.03333333333333, + }, + { + x: 1593446400000, + y: 98.03333333333333, + }, + { + x: 1593448200000, + y: 91.26666666666667, + }, + { + x: 1593450000000, + y: 107.76666666666667, + }, + { + x: 1593451800000, + y: 98.26666666666667, + }, + { + x: 1593453600000, + y: 99.46666666666667, + }, + { + x: 1593455400000, + y: 102.33333333333333, + }, + { + x: 1593457200000, + y: 108.13333333333334, + }, + { + x: 1593459000000, + y: 95.36666666666666, + }, + { + x: 1593460800000, + y: 98.23333333333333, + }, + { + x: 1593462600000, + y: 91.46666666666667, + }, + { + x: 1593464400000, + y: 115.63333333333334, + }, + { + x: 1593466200000, + y: 116.23333333333333, + }, + { + x: 1593468000000, + y: 91.66666666666667, + }, + { + x: 1593469800000, + y: 94.33333333333333, + }, + { + x: 1593471600000, + y: 96.43333333333334, + }, + { + x: 1593473400000, + y: 94.7, + }, + { + x: 1593475200000, + y: 93.76666666666667, + }, + { + x: 1593477000000, + y: 91.5, + }, + { + x: 1593478800000, + y: 91.9, + }, + { + x: 1593480600000, + y: 91.3, + }, + { + x: 1593482400000, + y: 98.3, + }, + { + x: 1593484200000, + y: 95.53333333333333, + }, + { + x: 1593486000000, + y: 95.66666666666667, + }, + { + x: 1593487800000, + y: 92.73333333333333, + }, + { + x: 1593489600000, + y: 93.6, + }, + { + x: 1593491400000, + y: 94.3, + }, + { + x: 1593493200000, + y: 93.13333333333334, + }, + { + x: 1593495000000, + y: 104.36666666666666, + }, + { + x: 1593496800000, + y: 107.26666666666667, + }, + { + x: 1593498600000, + y: 101.83333333333333, + }, + { + x: 1593500400000, + y: 105.46666666666667, + }, + { + x: 1593502200000, + y: 111.86666666666666, + }, + { + x: 1593504000000, + y: 111.56666666666666, + }, + { + x: 1593505800000, + y: 103.76666666666667, + }, + { + x: 1593507600000, + y: 93.9, + }, + { + x: 1593509400000, + y: 97.16666666666667, + }, + { + x: 1593511200000, + y: 93.03333333333333, + }, + { + x: 1593513000000, + y: 94.4, + }, + { + x: 1593514800000, + y: 94.76666666666667, + }, + { + x: 1593516600000, + y: 94.96666666666667, + }, + { + x: 1593518400000, + y: 101.3, + }, + { + x: 1593520200000, + y: 98.63333333333334, + }, + { + x: 1593522000000, + y: 94.8, + }, + { + x: 1593523800000, + y: 97.46666666666667, + }, + { + x: 1593525600000, + y: 95.86666666666666, + }, + { + x: 1593527400000, + y: 97.3, + }, + { + x: 1593529200000, + y: 96.1, + }, + { + x: 1593531000000, + y: 97.1, + }, + { + x: 1593532800000, + y: 97.56666666666666, + }, + { + x: 1593534600000, + y: 107.6, + }, + { + x: 1593536400000, + y: 97.46666666666667, + }, + { + x: 1593538200000, + y: 96.46666666666667, + }, + { + x: 1593540000000, + y: 93.83333333333333, + }, + { + x: 1593541800000, + y: 98.73333333333333, + }, + { + x: 1593543600000, + y: 99.86666666666666, + }, + { + x: 1593545400000, + y: 98.66666666666667, + }, + { + x: 1593547200000, + y: 102.8, + }, + { + x: 1593549000000, + y: 96.13333333333334, + }, + { + x: 1593550800000, + y: 94.53333333333333, + }, + ], + }, + 'kibana.log': { + label: 'kibana.log', + coordinates: [ + { + x: 1593295200000, + y: 11.8, + }, + { + x: 1593297000000, + y: 11.833333333333334, + }, + { + x: 1593298800000, + y: 12.1, + }, + { + x: 1593300600000, + y: 12.133333333333333, + }, + { + x: 1593302400000, + y: 11.2, + }, + { + x: 1593304200000, + y: 11.933333333333334, + }, + { + x: 1593306000000, + y: 11.466666666666667, + }, + { + x: 1593307800000, + y: 12.066666666666666, + }, + { + x: 1593309600000, + y: 11.9, + }, + { + x: 1593311400000, + y: 11.766666666666667, + }, + { + x: 1593313200000, + y: 12.066666666666666, + }, + { + x: 1593315000000, + y: 11.7, + }, + { + x: 1593316800000, + y: 11.6, + }, + { + x: 1593318600000, + y: 11.766666666666667, + }, + { + x: 1593320400000, + y: 11.633333333333333, + }, + { + x: 1593322200000, + y: 11.833333333333334, + }, + { + x: 1593324000000, + y: 11.8, + }, + { + x: 1593325800000, + y: 11.7, + }, + { + x: 1593327600000, + y: 11.666666666666666, + }, + { + x: 1593329400000, + y: 11.8, + }, + { + x: 1593331200000, + y: 11.966666666666667, + }, + { + x: 1593333000000, + y: 11.766666666666667, + }, + { + x: 1593334800000, + y: 11.766666666666667, + }, + { + x: 1593336600000, + y: 11.866666666666667, + }, + { + x: 1593338400000, + y: 11.433333333333334, + }, + { + x: 1593340200000, + y: 12.033333333333333, + }, + { + x: 1593342000000, + y: 12.1, + }, + { + x: 1593343800000, + y: 12.1, + }, + { + x: 1593345600000, + y: 11.8, + }, + { + x: 1593347400000, + y: 12.366666666666667, + }, + { + x: 1593349200000, + y: 12.033333333333333, + }, + { + x: 1593351000000, + y: 12, + }, + { + x: 1593352800000, + y: 11.8, + }, + { + x: 1593354600000, + y: 11.5, + }, + { + x: 1593356400000, + y: 12.1, + }, + { + x: 1593358200000, + y: 11.966666666666667, + }, + { + x: 1593360000000, + y: 11.9, + }, + { + x: 1593361800000, + y: 12.233333333333333, + }, + { + x: 1593363600000, + y: 11.533333333333333, + }, + { + x: 1593365400000, + y: 11.633333333333333, + }, + { + x: 1593367200000, + y: 11.866666666666667, + }, + { + x: 1593369000000, + y: 12, + }, + { + x: 1593370800000, + y: 11.7, + }, + { + x: 1593372600000, + y: 11.8, + }, + { + x: 1593374400000, + y: 11.4, + }, + { + x: 1593376200000, + y: 11.766666666666667, + }, + { + x: 1593378000000, + y: 12.033333333333333, + }, + { + x: 1593379800000, + y: 11.833333333333334, + }, + { + x: 1593381600000, + y: 11.9, + }, + { + x: 1593383400000, + y: 11.966666666666667, + }, + { + x: 1593385200000, + y: 11.8, + }, + { + x: 1593387000000, + y: 12, + }, + { + x: 1593388800000, + y: 11.933333333333334, + }, + { + x: 1593390600000, + y: 12.033333333333333, + }, + { + x: 1593392400000, + y: 12, + }, + { + x: 1593394200000, + y: 11.533333333333333, + }, + { + x: 1593396000000, + y: 11.4, + }, + { + x: 1593397800000, + y: 11.666666666666666, + }, + { + x: 1593399600000, + y: 11.633333333333333, + }, + { + x: 1593401400000, + y: 11.166666666666666, + }, + { + x: 1593403200000, + y: 11.3, + }, + { + x: 1593405000000, + y: 11.2, + }, + { + x: 1593406800000, + y: 10.966666666666667, + }, + { + x: 1593408600000, + y: 11.5, + }, + { + x: 1593410400000, + y: 11.1, + }, + { + x: 1593412200000, + y: 11.2, + }, + { + x: 1593414000000, + y: 11.4, + }, + { + x: 1593415800000, + y: 10.8, + }, + { + x: 1593417600000, + y: 11.066666666666666, + }, + { + x: 1593419400000, + y: 11.8, + }, + { + x: 1593421200000, + y: 11.266666666666667, + }, + { + x: 1593423000000, + y: 11.333333333333334, + }, + { + x: 1593424800000, + y: 11.233333333333333, + }, + { + x: 1593426600000, + y: 11.5, + }, + { + x: 1593428400000, + y: 8.2, + }, + { + x: 1593442800000, + y: 8.2, + }, + { + x: 1593444600000, + y: 11.4, + }, + { + x: 1593446400000, + y: 10.733333333333333, + }, + { + x: 1593448200000, + y: 10.833333333333334, + }, + { + x: 1593450000000, + y: 11.3, + }, + { + x: 1593451800000, + y: 11.633333333333333, + }, + { + x: 1593453600000, + y: 11.266666666666667, + }, + { + x: 1593455400000, + y: 11.3, + }, + { + x: 1593457200000, + y: 11.333333333333334, + }, + { + x: 1593459000000, + y: 11.133333333333333, + }, + { + x: 1593460800000, + y: 10.933333333333334, + }, + { + x: 1593462600000, + y: 11.2, + }, + { + x: 1593464400000, + y: 11.166666666666666, + }, + { + x: 1593466200000, + y: 11.766666666666667, + }, + { + x: 1593468000000, + y: 11.433333333333334, + }, + { + x: 1593469800000, + y: 10.8, + }, + { + x: 1593471600000, + y: 11.266666666666667, + }, + { + x: 1593473400000, + y: 11.333333333333334, + }, + { + x: 1593475200000, + y: 11.133333333333333, + }, + { + x: 1593477000000, + y: 11.133333333333333, + }, + { + x: 1593478800000, + y: 10.9, + }, + { + x: 1593480600000, + y: 11.3, + }, + { + x: 1593482400000, + y: 12.166666666666666, + }, + { + x: 1593484200000, + y: 11.433333333333334, + }, + { + x: 1593486000000, + y: 12.133333333333333, + }, + { + x: 1593487800000, + y: 11.666666666666666, + }, + { + x: 1593489600000, + y: 11.533333333333333, + }, + { + x: 1593491400000, + y: 11.833333333333334, + }, + { + x: 1593493200000, + y: 11.766666666666667, + }, + { + x: 1593495000000, + y: 11.9, + }, + { + x: 1593496800000, + y: 11.433333333333334, + }, + { + x: 1593498600000, + y: 12, + }, + { + x: 1593500400000, + y: 12.1, + }, + { + x: 1593502200000, + y: 11.6, + }, + { + x: 1593504000000, + y: 12, + }, + { + x: 1593505800000, + y: 12.233333333333333, + }, + { + x: 1593507600000, + y: 11.633333333333333, + }, + { + x: 1593509400000, + y: 11.2, + }, + { + x: 1593511200000, + y: 11.766666666666667, + }, + { + x: 1593513000000, + y: 11.9, + }, + { + x: 1593514800000, + y: 11.366666666666667, + }, + { + x: 1593516600000, + y: 11.833333333333334, + }, + { + x: 1593518400000, + y: 11.5, + }, + { + x: 1593520200000, + y: 12, + }, + { + x: 1593522000000, + y: 12.033333333333333, + }, + { + x: 1593523800000, + y: 11.733333333333333, + }, + { + x: 1593525600000, + y: 11.566666666666666, + }, + { + x: 1593527400000, + y: 11.6, + }, + { + x: 1593529200000, + y: 11.333333333333334, + }, + { + x: 1593531000000, + y: 11.833333333333334, + }, + { + x: 1593532800000, + y: 11.233333333333333, + }, + { + x: 1593534600000, + y: 11.833333333333334, + }, + { + x: 1593536400000, + y: 11.266666666666667, + }, + { + x: 1593538200000, + y: 12, + }, + { + x: 1593540000000, + y: 11.633333333333333, + }, + { + x: 1593541800000, + y: 11.9, + }, + { + x: 1593543600000, + y: 11.966666666666667, + }, + { + x: 1593545400000, + y: 11.5, + }, + { + x: 1593547200000, + y: 11.466666666666667, + }, + { + x: 1593549000000, + y: 11.4, + }, + { + x: 1593550800000, + y: 11.833333333333334, + }, + ], + }, + 'nginx.error': { + label: 'nginx.error', + coordinates: [ + { + x: 1593295200000, + y: 9.266666666666667, + }, + { + x: 1593297000000, + y: 8.833333333333334, + }, + { + x: 1593298800000, + y: 9.033333333333333, + }, + { + x: 1593300600000, + y: 8.933333333333334, + }, + { + x: 1593302400000, + y: 8.9, + }, + { + x: 1593304200000, + y: 9.6, + }, + { + x: 1593306000000, + y: 9.066666666666666, + }, + { + x: 1593307800000, + y: 8.966666666666667, + }, + { + x: 1593309600000, + y: 8.933333333333334, + }, + { + x: 1593311400000, + y: 8.5, + }, + { + x: 1593313200000, + y: 8.133333333333333, + }, + { + x: 1593315000000, + y: 8.233333333333333, + }, + { + x: 1593316800000, + y: 8.433333333333334, + }, + { + x: 1593318600000, + y: 8.4, + }, + { + x: 1593320400000, + y: 9.266666666666667, + }, + { + x: 1593322200000, + y: 8.566666666666666, + }, + { + x: 1593324000000, + y: 8.966666666666667, + }, + { + x: 1593325800000, + y: 8.833333333333334, + }, + { + x: 1593327600000, + y: 7.5, + }, + { + x: 1593329400000, + y: 8.033333333333333, + }, + { + x: 1593331200000, + y: 8.633333333333333, + }, + { + x: 1593333000000, + y: 8.5, + }, + { + x: 1593334800000, + y: 8.866666666666667, + }, + { + x: 1593336600000, + y: 8.3, + }, + { + x: 1593338400000, + y: 8.966666666666667, + }, + { + x: 1593340200000, + y: 8.2, + }, + { + x: 1593342000000, + y: 7.566666666666666, + }, + { + x: 1593343800000, + y: 7.5, + }, + { + x: 1593345600000, + y: 7.933333333333334, + }, + { + x: 1593347400000, + y: 7.866666666666666, + }, + { + x: 1593349200000, + y: 7.566666666666666, + }, + { + x: 1593351000000, + y: 7.533333333333333, + }, + { + x: 1593352800000, + y: 8.866666666666667, + }, + { + x: 1593354600000, + y: 8.566666666666666, + }, + { + x: 1593356400000, + y: 8.233333333333333, + }, + { + x: 1593358200000, + y: 8.9, + }, + { + x: 1593360000000, + y: 8.533333333333333, + }, + { + x: 1593361800000, + y: 8.733333333333333, + }, + { + x: 1593363600000, + y: 9.333333333333334, + }, + { + x: 1593365400000, + y: 9.133333333333333, + }, + { + x: 1593367200000, + y: 9.166666666666666, + }, + { + x: 1593369000000, + y: 9.266666666666667, + }, + { + x: 1593370800000, + y: 8.966666666666667, + }, + { + x: 1593372600000, + y: 9.2, + }, + { + x: 1593374400000, + y: 9.433333333333334, + }, + { + x: 1593376200000, + y: 9.166666666666666, + }, + { + x: 1593378000000, + y: 9.266666666666667, + }, + { + x: 1593379800000, + y: 9.5, + }, + { + x: 1593381600000, + y: 9.333333333333334, + }, + { + x: 1593383400000, + y: 8.8, + }, + { + x: 1593385200000, + y: 8.733333333333333, + }, + { + x: 1593387000000, + y: 8.633333333333333, + }, + { + x: 1593388800000, + y: 8.9, + }, + { + x: 1593390600000, + y: 8.533333333333333, + }, + { + x: 1593392400000, + y: 9.3, + }, + { + x: 1593394200000, + y: 9.266666666666667, + }, + { + x: 1593396000000, + y: 8.966666666666667, + }, + { + x: 1593397800000, + y: 8.666666666666666, + }, + { + x: 1593399600000, + y: 9.166666666666666, + }, + { + x: 1593401400000, + y: 8.733333333333333, + }, + { + x: 1593403200000, + y: 8.866666666666667, + }, + { + x: 1593405000000, + y: 8.633333333333333, + }, + { + x: 1593406800000, + y: 8.8, + }, + { + x: 1593408600000, + y: 8.466666666666667, + }, + { + x: 1593410400000, + y: 8.966666666666667, + }, + { + x: 1593412200000, + y: 8.166666666666666, + }, + { + x: 1593414000000, + y: 8.7, + }, + { + x: 1593415800000, + y: 8.333333333333334, + }, + { + x: 1593417600000, + y: 8.666666666666666, + }, + { + x: 1593419400000, + y: 8.533333333333333, + }, + { + x: 1593421200000, + y: 8.233333333333333, + }, + { + x: 1593423000000, + y: 8.3, + }, + { + x: 1593424800000, + y: 7.7, + }, + { + x: 1593426600000, + y: 7.7, + }, + { + x: 1593428400000, + y: 6.133333333333334, + }, + { + x: 1593430200000, + y: 0.4666666666666667, + }, + { + x: 1593442800000, + y: 7.233333333333333, + }, + { + x: 1593444600000, + y: 8.333333333333334, + }, + { + x: 1593446400000, + y: 8.666666666666666, + }, + { + x: 1593448200000, + y: 8.466666666666667, + }, + { + x: 1593450000000, + y: 8.666666666666666, + }, + { + x: 1593451800000, + y: 8.5, + }, + { + x: 1593453600000, + y: 8.6, + }, + { + x: 1593455400000, + y: 8.5, + }, + { + x: 1593457200000, + y: 8.6, + }, + { + x: 1593459000000, + y: 8.866666666666667, + }, + { + x: 1593460800000, + y: 9.166666666666666, + }, + { + x: 1593462600000, + y: 8.4, + }, + { + x: 1593464400000, + y: 8.533333333333333, + }, + { + x: 1593466200000, + y: 8.066666666666666, + }, + { + x: 1593468000000, + y: 8.666666666666666, + }, + { + x: 1593469800000, + y: 8.966666666666667, + }, + { + x: 1593471600000, + y: 8.4, + }, + { + x: 1593473400000, + y: 8.833333333333334, + }, + { + x: 1593475200000, + y: 8.533333333333333, + }, + { + x: 1593477000000, + y: 8.066666666666666, + }, + { + x: 1593478800000, + y: 8.533333333333333, + }, + { + x: 1593480600000, + y: 8.633333333333333, + }, + { + x: 1593482400000, + y: 8.933333333333334, + }, + { + x: 1593484200000, + y: 8.833333333333334, + }, + { + x: 1593486000000, + y: 8.4, + }, + { + x: 1593487800000, + y: 8.633333333333333, + }, + { + x: 1593489600000, + y: 9.333333333333334, + }, + { + x: 1593491400000, + y: 9.366666666666667, + }, + { + x: 1593493200000, + y: 8.333333333333334, + }, + { + x: 1593495000000, + y: 9.266666666666667, + }, + { + x: 1593496800000, + y: 8.2, + }, + { + x: 1593498600000, + y: 8.4, + }, + { + x: 1593500400000, + y: 8.433333333333334, + }, + { + x: 1593502200000, + y: 7.633333333333334, + }, + { + x: 1593504000000, + y: 7.766666666666667, + }, + { + x: 1593505800000, + y: 8.4, + }, + { + x: 1593507600000, + y: 8.3, + }, + { + x: 1593509400000, + y: 8.833333333333334, + }, + { + x: 1593511200000, + y: 8.433333333333334, + }, + { + x: 1593513000000, + y: 8.766666666666667, + }, + { + x: 1593514800000, + y: 9.066666666666666, + }, + { + x: 1593516600000, + y: 8.4, + }, + { + x: 1593518400000, + y: 8.4, + }, + { + x: 1593520200000, + y: 8.8, + }, + { + x: 1593522000000, + y: 8.466666666666667, + }, + { + x: 1593523800000, + y: 8.633333333333333, + }, + { + x: 1593525600000, + y: 9.133333333333333, + }, + { + x: 1593527400000, + y: 8.7, + }, + { + x: 1593529200000, + y: 8.566666666666666, + }, + { + x: 1593531000000, + y: 9.033333333333333, + }, + { + x: 1593532800000, + y: 8.9, + }, + { + x: 1593534600000, + y: 8.7, + }, + { + x: 1593536400000, + y: 8.7, + }, + { + x: 1593538200000, + y: 8.8, + }, + { + x: 1593540000000, + y: 9.166666666666666, + }, + { + x: 1593541800000, + y: 9.033333333333333, + }, + { + x: 1593543600000, + y: 8.733333333333333, + }, + { + x: 1593545400000, + y: 9.2, + }, + { + x: 1593547200000, + y: 8.933333333333334, + }, + { + x: 1593549000000, + y: 9.2, + }, + { + x: 1593550800000, + y: 9.333333333333334, + }, + ], + }, + sample_web_logs: { + label: 'sample_web_logs', + coordinates: [ + { + x: 1593430200000, + y: 0.5666666666666667, + }, + { + x: 1593432000000, + y: 0.36666666666666664, + }, + { + x: 1593433800000, + y: 0.5666666666666667, + }, + { + x: 1593435600000, + y: 0.4666666666666667, + }, + { + x: 1593437400000, + y: 0.36666666666666664, + }, + { + x: 1593439200000, + y: 0.3, + }, + { + x: 1593441000000, + y: 0.13333333333333333, + }, + ], + }, + 'postgresql.log': { + label: 'postgresql.log', + coordinates: [ + { + x: 1593439200000, + y: 0.1, + }, + { + x: 1593441000000, + y: 0.1, + }, + ], + }, + }, +}; + +export const emptyResponse: LogsFetchDataResponse = { + title: 'Logs', + appLink: '/app/logs', + stats: {}, + series: {}, +}; diff --git a/x-pack/plugins/observability/public/pages/overview/mock/metrics.mock.ts b/x-pack/plugins/observability/public/pages/overview/mock/metrics.mock.ts new file mode 100644 index 0000000000000..37233b4f6342c --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/mock/metrics.mock.ts @@ -0,0 +1,133 @@ +/* + * 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 { MetricsFetchDataResponse, FetchData } from '../../../typings'; + +export const fetchMetricsData: FetchData = () => { + return Promise.resolve(response); +}; + +const response: MetricsFetchDataResponse = { + title: 'Metrics', + appLink: '/app/apm', + stats: { + hosts: { value: 11, type: 'number' }, + cpu: { value: 0.8, type: 'percent' }, + memory: { value: 0.362, type: 'percent' }, + inboundTraffic: { value: 1024, type: 'bytesPerSecond' }, + outboundTraffic: { value: 1024, type: 'bytesPerSecond' }, + }, + series: { + outboundTraffic: { + coordinates: [ + { + x: 1589805437549, + y: 331514, + }, + { + x: 1590047357549, + y: 319208, + }, + { + x: 1590289277549, + y: 309648, + }, + { + x: 1590531197549, + y: 280568, + }, + { + x: 1590773117549, + y: 337180, + }, + { + x: 1591015037549, + y: 122468, + }, + { + x: 1591256957549, + y: 184164, + }, + { + x: 1591498877549, + y: 316323, + }, + { + x: 1591740797549, + y: 307351, + }, + { + x: 1591982717549, + y: 290262, + }, + ], + }, + inboundTraffic: { + coordinates: [ + { + x: 1589805437549, + y: 331514, + }, + { + x: 1590047357549, + y: 319208, + }, + { + x: 1590289277549, + y: 309648, + }, + { + x: 1590531197549, + y: 280568, + }, + { + x: 1590773117549, + y: 337180, + }, + { + x: 1591015037549, + y: 122468, + }, + { + x: 1591256957549, + y: 184164, + }, + { + x: 1591498877549, + y: 316323, + }, + { + x: 1591740797549, + y: 307351, + }, + { + x: 1591982717549, + y: 290262, + }, + ], + }, + }, +}; + +export const emptyResponse: MetricsFetchDataResponse = { + title: 'Metrics', + appLink: '/app/apm', + stats: { + hosts: { value: 0, type: 'number' }, + cpu: { value: 0, type: 'percent' }, + memory: { value: 0, type: 'percent' }, + inboundTraffic: { value: 0, type: 'bytesPerSecond' }, + outboundTraffic: { value: 0, type: 'bytesPerSecond' }, + }, + series: { + outboundTraffic: { + coordinates: [], + }, + inboundTraffic: { + coordinates: [], + }, + }, +}; diff --git a/x-pack/plugins/observability/public/pages/overview/mock/uptime.mock.ts b/x-pack/plugins/observability/public/pages/overview/mock/uptime.mock.ts new file mode 100644 index 0000000000000..ab5874f8bfcd4 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/mock/uptime.mock.ts @@ -0,0 +1,1218 @@ +/* + * 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 { UptimeFetchDataResponse, FetchData } from '../../../typings'; + +export const fetchUptimeData: FetchData = () => { + return Promise.resolve(response); +}; + +const response: UptimeFetchDataResponse = { + title: 'Uptime', + appLink: '/app/uptime#/', + stats: { + monitors: { + type: 'number', + value: 26, + }, + up: { + type: 'number', + value: 20, + }, + down: { + type: 'number', + value: 6, + }, + }, + series: { + up: { + coordinates: [ + { + x: 1593295200000, + y: 1170, + }, + { + x: 1593297000000, + y: 1170, + }, + { + x: 1593298800000, + y: 1170, + }, + { + x: 1593300600000, + y: 1170, + }, + { + x: 1593302400000, + y: 1170, + }, + { + x: 1593304200000, + y: 1170, + }, + { + x: 1593306000000, + y: 1170, + }, + { + x: 1593307800000, + y: 1170, + }, + { + x: 1593309600000, + y: 1170, + }, + { + x: 1593311400000, + y: 1170, + }, + { + x: 1593313200000, + y: 1170, + }, + { + x: 1593315000000, + y: 1170, + }, + { + x: 1593316800000, + y: 1170, + }, + { + x: 1593318600000, + y: 1170, + }, + { + x: 1593320400000, + y: 1170, + }, + { + x: 1593322200000, + y: 1170, + }, + { + x: 1593324000000, + y: 1170, + }, + { + x: 1593325800000, + y: 1170, + }, + { + x: 1593327600000, + y: 1170, + }, + { + x: 1593329400000, + y: 1170, + }, + { + x: 1593331200000, + y: 1170, + }, + { + x: 1593333000000, + y: 1170, + }, + { + x: 1593334800000, + y: 1170, + }, + { + x: 1593336600000, + y: 1170, + }, + { + x: 1593338400000, + y: 1170, + }, + { + x: 1593340200000, + y: 1170, + }, + { + x: 1593342000000, + y: 1170, + }, + { + x: 1593343800000, + y: 1170, + }, + { + x: 1593345600000, + y: 1170, + }, + { + x: 1593347400000, + y: 1170, + }, + { + x: 1593349200000, + y: 1170, + }, + { + x: 1593351000000, + y: 1170, + }, + { + x: 1593352800000, + y: 1170, + }, + { + x: 1593354600000, + y: 1170, + }, + { + x: 1593356400000, + y: 1170, + }, + { + x: 1593358200000, + y: 1170, + }, + { + x: 1593360000000, + y: 1170, + }, + { + x: 1593361800000, + y: 1170, + }, + { + x: 1593363600000, + y: 1170, + }, + { + x: 1593365400000, + y: 1170, + }, + { + x: 1593367200000, + y: 1170, + }, + { + x: 1593369000000, + y: 1170, + }, + { + x: 1593370800000, + y: 1170, + }, + { + x: 1593372600000, + y: 1170, + }, + { + x: 1593374400000, + y: 1169, + }, + { + x: 1593376200000, + y: 1170, + }, + { + x: 1593378000000, + y: 1170, + }, + { + x: 1593379800000, + y: 1170, + }, + { + x: 1593381600000, + y: 1170, + }, + { + x: 1593383400000, + y: 1170, + }, + { + x: 1593385200000, + y: 1170, + }, + { + x: 1593387000000, + y: 1170, + }, + { + x: 1593388800000, + y: 1170, + }, + { + x: 1593390600000, + y: 1170, + }, + { + x: 1593392400000, + y: 1170, + }, + { + x: 1593394200000, + y: 1239, + }, + { + x: 1593396000000, + y: 1170, + }, + { + x: 1593397800000, + y: 1170, + }, + { + x: 1593399600000, + y: 1170, + }, + { + x: 1593401400000, + y: 1170, + }, + { + x: 1593403200000, + y: 1170, + }, + { + x: 1593405000000, + y: 1170, + }, + { + x: 1593406800000, + y: 1170, + }, + { + x: 1593408600000, + y: 1170, + }, + { + x: 1593410400000, + y: 1170, + }, + { + x: 1593412200000, + y: 1170, + }, + { + x: 1593414000000, + y: 1170, + }, + { + x: 1593415800000, + y: 1170, + }, + { + x: 1593417600000, + y: 1170, + }, + { + x: 1593419400000, + y: 1170, + }, + { + x: 1593421200000, + y: 1170, + }, + { + x: 1593423000000, + y: 1170, + }, + { + x: 1593424800000, + y: 1166, + }, + { + x: 1593426600000, + y: 1206, + }, + { + x: 1593428400000, + y: 1143, + }, + { + x: 1593430200000, + y: 1170, + }, + { + x: 1593432000000, + y: 1170, + }, + { + x: 1593433800000, + y: 1170, + }, + { + x: 1593435600000, + y: 1170, + }, + { + x: 1593437400000, + y: 1170, + }, + { + x: 1593439200000, + y: 1170, + }, + { + x: 1593441000000, + y: 1170, + }, + { + x: 1593442800000, + y: 1170, + }, + { + x: 1593444600000, + y: 1170, + }, + { + x: 1593446400000, + y: 1170, + }, + { + x: 1593448200000, + y: 1170, + }, + { + x: 1593450000000, + y: 1170, + }, + { + x: 1593451800000, + y: 1170, + }, + { + x: 1593453600000, + y: 1170, + }, + { + x: 1593455400000, + y: 1170, + }, + { + x: 1593457200000, + y: 1170, + }, + { + x: 1593459000000, + y: 1170, + }, + { + x: 1593460800000, + y: 1170, + }, + { + x: 1593462600000, + y: 1170, + }, + { + x: 1593464400000, + y: 1170, + }, + { + x: 1593466200000, + y: 1170, + }, + { + x: 1593468000000, + y: 1170, + }, + { + x: 1593469800000, + y: 1170, + }, + { + x: 1593471600000, + y: 1170, + }, + { + x: 1593473400000, + y: 1170, + }, + { + x: 1593475200000, + y: 1170, + }, + { + x: 1593477000000, + y: 1170, + }, + { + x: 1593478800000, + y: 1170, + }, + { + x: 1593480600000, + y: 1201, + }, + { + x: 1593482400000, + y: 1139, + }, + { + x: 1593484200000, + y: 1140, + }, + { + x: 1593486000000, + y: 1140, + }, + { + x: 1593487800000, + y: 1140, + }, + { + x: 1593489600000, + y: 1140, + }, + { + x: 1593491400000, + y: 1140, + }, + { + x: 1593493200000, + y: 1140, + }, + { + x: 1593495000000, + y: 1140, + }, + { + x: 1593496800000, + y: 1140, + }, + { + x: 1593498600000, + y: 1140, + }, + { + x: 1593500400000, + y: 1140, + }, + { + x: 1593502200000, + y: 1140, + }, + { + x: 1593504000000, + y: 1140, + }, + { + x: 1593505800000, + y: 1140, + }, + { + x: 1593507600000, + y: 1140, + }, + { + x: 1593509400000, + y: 1140, + }, + { + x: 1593511200000, + y: 1140, + }, + { + x: 1593513000000, + y: 1140, + }, + { + x: 1593514800000, + y: 1140, + }, + { + x: 1593516600000, + y: 1140, + }, + { + x: 1593518400000, + y: 1140, + }, + { + x: 1593520200000, + y: 1140, + }, + { + x: 1593522000000, + y: 1140, + }, + { + x: 1593523800000, + y: 1140, + }, + { + x: 1593525600000, + y: 1140, + }, + { + x: 1593527400000, + y: 1140, + }, + { + x: 1593529200000, + y: 1140, + }, + { + x: 1593531000000, + y: 1140, + }, + { + x: 1593532800000, + y: 1140, + }, + { + x: 1593534600000, + y: 1140, + }, + { + x: 1593536400000, + y: 1140, + }, + { + x: 1593538200000, + y: 1140, + }, + { + x: 1593540000000, + y: 1140, + }, + { + x: 1593541800000, + y: 1139, + }, + { + x: 1593543600000, + y: 1140, + }, + { + x: 1593545400000, + y: 1140, + }, + { + x: 1593547200000, + y: 1140, + }, + { + x: 1593549000000, + y: 1140, + }, + { + x: 1593550800000, + y: 1140, + }, + { + x: 1593552600000, + y: 1140, + }, + ], + }, + down: { + coordinates: [ + { + x: 1593295200000, + y: 234, + }, + { + x: 1593297000000, + y: 234, + }, + { + x: 1593298800000, + y: 234, + }, + { + x: 1593300600000, + y: 234, + }, + { + x: 1593302400000, + y: 234, + }, + { + x: 1593304200000, + y: 234, + }, + { + x: 1593306000000, + y: 234, + }, + { + x: 1593307800000, + y: 234, + }, + { + x: 1593309600000, + y: 234, + }, + { + x: 1593311400000, + y: 234, + }, + { + x: 1593313200000, + y: 234, + }, + { + x: 1593315000000, + y: 234, + }, + { + x: 1593316800000, + y: 234, + }, + { + x: 1593318600000, + y: 234, + }, + { + x: 1593320400000, + y: 234, + }, + { + x: 1593322200000, + y: 234, + }, + { + x: 1593324000000, + y: 234, + }, + { + x: 1593325800000, + y: 234, + }, + { + x: 1593327600000, + y: 234, + }, + { + x: 1593329400000, + y: 234, + }, + { + x: 1593331200000, + y: 234, + }, + { + x: 1593333000000, + y: 234, + }, + { + x: 1593334800000, + y: 234, + }, + { + x: 1593336600000, + y: 234, + }, + { + x: 1593338400000, + y: 234, + }, + { + x: 1593340200000, + y: 234, + }, + { + x: 1593342000000, + y: 234, + }, + { + x: 1593343800000, + y: 234, + }, + { + x: 1593345600000, + y: 234, + }, + { + x: 1593347400000, + y: 234, + }, + { + x: 1593349200000, + y: 234, + }, + { + x: 1593351000000, + y: 234, + }, + { + x: 1593352800000, + y: 234, + }, + { + x: 1593354600000, + y: 234, + }, + { + x: 1593356400000, + y: 234, + }, + { + x: 1593358200000, + y: 234, + }, + { + x: 1593360000000, + y: 234, + }, + { + x: 1593361800000, + y: 234, + }, + { + x: 1593363600000, + y: 234, + }, + { + x: 1593365400000, + y: 234, + }, + { + x: 1593367200000, + y: 234, + }, + { + x: 1593369000000, + y: 234, + }, + { + x: 1593370800000, + y: 234, + }, + { + x: 1593372600000, + y: 234, + }, + { + x: 1593374400000, + y: 235, + }, + { + x: 1593376200000, + y: 234, + }, + { + x: 1593378000000, + y: 234, + }, + { + x: 1593379800000, + y: 234, + }, + { + x: 1593381600000, + y: 234, + }, + { + x: 1593383400000, + y: 234, + }, + { + x: 1593385200000, + y: 234, + }, + { + x: 1593387000000, + y: 234, + }, + { + x: 1593388800000, + y: 234, + }, + { + x: 1593390600000, + y: 234, + }, + { + x: 1593392400000, + y: 234, + }, + { + x: 1593394200000, + y: 246, + }, + { + x: 1593396000000, + y: 234, + }, + { + x: 1593397800000, + y: 234, + }, + { + x: 1593399600000, + y: 234, + }, + { + x: 1593401400000, + y: 234, + }, + { + x: 1593403200000, + y: 234, + }, + { + x: 1593405000000, + y: 234, + }, + { + x: 1593406800000, + y: 234, + }, + { + x: 1593408600000, + y: 234, + }, + { + x: 1593410400000, + y: 234, + }, + { + x: 1593412200000, + y: 234, + }, + { + x: 1593414000000, + y: 234, + }, + { + x: 1593415800000, + y: 234, + }, + { + x: 1593417600000, + y: 234, + }, + { + x: 1593419400000, + y: 234, + }, + { + x: 1593421200000, + y: 234, + }, + { + x: 1593423000000, + y: 234, + }, + { + x: 1593424800000, + y: 240, + }, + { + x: 1593426600000, + y: 254, + }, + { + x: 1593428400000, + y: 231, + }, + { + x: 1593430200000, + y: 234, + }, + { + x: 1593432000000, + y: 234, + }, + { + x: 1593433800000, + y: 234, + }, + { + x: 1593435600000, + y: 234, + }, + { + x: 1593437400000, + y: 234, + }, + { + x: 1593439200000, + y: 234, + }, + { + x: 1593441000000, + y: 234, + }, + { + x: 1593442800000, + y: 234, + }, + { + x: 1593444600000, + y: 234, + }, + { + x: 1593446400000, + y: 234, + }, + { + x: 1593448200000, + y: 234, + }, + { + x: 1593450000000, + y: 234, + }, + { + x: 1593451800000, + y: 234, + }, + { + x: 1593453600000, + y: 234, + }, + { + x: 1593455400000, + y: 234, + }, + { + x: 1593457200000, + y: 234, + }, + { + x: 1593459000000, + y: 234, + }, + { + x: 1593460800000, + y: 234, + }, + { + x: 1593462600000, + y: 234, + }, + { + x: 1593464400000, + y: 234, + }, + { + x: 1593466200000, + y: 234, + }, + { + x: 1593468000000, + y: 234, + }, + { + x: 1593469800000, + y: 234, + }, + { + x: 1593471600000, + y: 234, + }, + { + x: 1593473400000, + y: 234, + }, + { + x: 1593475200000, + y: 234, + }, + { + x: 1593477000000, + y: 234, + }, + { + x: 1593478800000, + y: 234, + }, + { + x: 1593480600000, + y: 254, + }, + { + x: 1593482400000, + y: 265, + }, + { + x: 1593484200000, + y: 264, + }, + { + x: 1593486000000, + y: 264, + }, + { + x: 1593487800000, + y: 264, + }, + { + x: 1593489600000, + y: 264, + }, + { + x: 1593491400000, + y: 264, + }, + { + x: 1593493200000, + y: 264, + }, + { + x: 1593495000000, + y: 264, + }, + { + x: 1593496800000, + y: 264, + }, + { + x: 1593498600000, + y: 264, + }, + { + x: 1593500400000, + y: 264, + }, + { + x: 1593502200000, + y: 264, + }, + { + x: 1593504000000, + y: 264, + }, + { + x: 1593505800000, + y: 264, + }, + { + x: 1593507600000, + y: 264, + }, + { + x: 1593509400000, + y: 264, + }, + { + x: 1593511200000, + y: 264, + }, + { + x: 1593513000000, + y: 264, + }, + { + x: 1593514800000, + y: 264, + }, + { + x: 1593516600000, + y: 264, + }, + { + x: 1593518400000, + y: 264, + }, + { + x: 1593520200000, + y: 264, + }, + { + x: 1593522000000, + y: 264, + }, + { + x: 1593523800000, + y: 264, + }, + { + x: 1593525600000, + y: 264, + }, + { + x: 1593527400000, + y: 264, + }, + { + x: 1593529200000, + y: 264, + }, + { + x: 1593531000000, + y: 264, + }, + { + x: 1593532800000, + y: 264, + }, + { + x: 1593534600000, + y: 264, + }, + { + x: 1593536400000, + y: 264, + }, + { + x: 1593538200000, + y: 264, + }, + { + x: 1593540000000, + y: 264, + }, + { + x: 1593541800000, + y: 265, + }, + { + x: 1593543600000, + y: 264, + }, + { + x: 1593545400000, + y: 264, + }, + { + x: 1593547200000, + y: 264, + }, + { + x: 1593549000000, + y: 264, + }, + { + x: 1593550800000, + y: 264, + }, + { + x: 1593552600000, + y: 264, + }, + ], + }, + }, +}; + +export const emptyResponse: UptimeFetchDataResponse = { + title: 'Uptime', + appLink: '/app/uptime#/', + stats: { + monitors: { + type: 'number', + value: 0, + }, + up: { + type: 'number', + value: 0, + }, + down: { + type: 'number', + value: 0, + }, + }, + series: { + up: { + coordinates: [], + }, + down: { + coordinates: [], + }, + }, +}; diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx new file mode 100644 index 0000000000000..b88614b22e81a --- /dev/null +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -0,0 +1,534 @@ +/* + * 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 { storiesOf } from '@storybook/react'; +import { AppMountContext } from 'kibana/public'; +import React from 'react'; +import { MemoryRouter } from 'react-router-dom'; +import { UI_SETTINGS } from '../../../../../../src/plugins/data/public'; +import { PluginContext } from '../../context/plugin_context'; +import { registerDataHandler, unregisterDataHandler } from '../../data_handler'; +import { emptyResponse as emptyAPMResponse, fetchApmData } from './mock/apm.mock'; +import { fetchLogsData, emptyResponse as emptyLogsResponse } from './mock/logs.mock'; +import { fetchMetricsData, emptyResponse as emptyMetricsResponse } from './mock/metrics.mock'; +import { fetchUptimeData, emptyResponse as emptyUptimeResponse } from './mock/uptime.mock'; +import { EuiThemeProvider } from '../../typings'; +import { OverviewPage } from './'; +import { alertsFetchData } from './mock/alerts.mock'; + +const core = { + http: { + basePath: { + prepend: (link) => `http://localhost:5601${link}`, + }, + }, + uiSettings: { + get: (key: string) => { + const euiSettings = { + [UI_SETTINGS.TIMEPICKER_TIME_DEFAULTS]: { + from: 'now-15m', + to: 'now', + }, + [UI_SETTINGS.TIMEPICKER_REFRESH_INTERVAL_DEFAULTS]: { + pause: true, + value: 1000, + }, + [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: [ + { + 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', + }, + ], + }; + // @ts-expect-error + return euiSettings[key]; + }, + }, +} as AppMountContext['core']; + +const coreWithAlerts = ({ + ...core, + http: { + ...core.http, + get: alertsFetchData, + }, +} as unknown) as AppMountContext['core']; + +function unregisterAll() { + unregisterDataHandler({ appName: 'apm' }); + unregisterDataHandler({ appName: 'infra_logs' }); + unregisterDataHandler({ appName: 'infra_metrics' }); + unregisterDataHandler({ appName: 'uptime' }); +} + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('Empty state', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => false, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => false, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => false, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + hasData: async () => false, + }); + + return ; + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('single panel', () => { + unregisterAll(); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('logs and metrics', () => { + unregisterAll(); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('logs, metrics and alerts', () => { + unregisterAll(); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('logs, metrics, APM and alerts', () => { + unregisterAll(); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('logs, metrics, APM and Uptime', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('logs, metrics, APM, Uptime and Alerts', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('no data', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: async () => emptyAPMResponse, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: async () => emptyLogsResponse, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: async () => emptyMetricsResponse, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: async () => emptyUptimeResponse, + hasData: async () => true, + }); + return ( + + ); + }); + +const coreAlertsThrowsError = ({ + ...core, + http: { + ...core.http, + get: async () => { + throw new Error('Error fetching Alerts data'); + }, + }, +} as unknown) as AppMountContext['core']; +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('fetch data with error', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: async () => { + throw new Error('Error fetching APM data'); + }, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: async () => { + throw new Error('Error fetching Logs data'); + }, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: async () => { + throw new Error('Error fetching Metric data'); + }, + hasData: async () => true, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: async () => { + throw new Error('Error fetching Uptime data'); + }, + hasData: async () => true, + }); + return ( + + ); + }); + +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('hasData with error and alerts', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + return ( + + ); + }); +storiesOf('app/Overview', module) + .addDecorator((storyFn) => ( + + + {storyFn()}) + + + )) + .add('hasData with error', () => { + unregisterAll(); + registerDataHandler({ + appName: 'apm', + fetchData: fetchApmData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'infra_logs', + fetchData: fetchLogsData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'infra_metrics', + fetchData: fetchMetricsData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + registerDataHandler({ + appName: 'uptime', + fetchData: fetchUptimeData, + // @ts-ignore thows an error instead + hasData: async () => { + new Error('Error has data'); + }, + }); + return ( + + ); + }); diff --git a/x-pack/plugins/observability/public/routes/index.tsx b/x-pack/plugins/observability/public/routes/index.tsx new file mode 100644 index 0000000000000..10f9b4dc42723 --- /dev/null +++ b/x-pack/plugins/observability/public/routes/index.tsx @@ -0,0 +1,71 @@ +/* + * 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 * as t from 'io-ts'; +import { i18n } from '@kbn/i18n'; +import { HomePage } from '../pages/home'; +import { LandingPage } from '../pages/landing'; +import { OverviewPage } from '../pages/overview'; +import { jsonRt } from './json_rt'; + +export type RouteParams = DecodeParams; + +type DecodeParams = { + [key in keyof TParams]: TParams[key] extends t.Any ? t.TypeOf : never; +}; + +export interface Params { + query?: t.HasProps; + path?: t.HasProps; +} +export const routes = { + '/': { + handler: () => { + return ; + }, + params: {}, + breadcrumb: [ + { + text: i18n.translate('xpack.observability.home.breadcrumb', { + defaultMessage: 'Overview', + }), + }, + ], + }, + '/landing': { + handler: () => { + return ; + }, + params: {}, + breadcrumb: [ + { + text: i18n.translate('xpack.observability.landing.breadcrumb', { + defaultMessage: 'Getting started', + }), + }, + ], + }, + '/overview': { + handler: ({ query }: any) => { + return ; + }, + params: { + query: t.partial({ + rangeFrom: t.string, + rangeTo: t.string, + refreshPaused: jsonRt.pipe(t.boolean), + refreshInterval: jsonRt.pipe(t.number), + }), + }, + breadcrumb: [ + { + text: i18n.translate('xpack.observability.overview.breadcrumb', { + defaultMessage: 'Overview', + }), + }, + ], + }, +}; diff --git a/x-pack/plugins/observability/public/routes/json_rt.ts b/x-pack/plugins/observability/public/routes/json_rt.ts new file mode 100644 index 0000000000000..fcc73547a686b --- /dev/null +++ b/x-pack/plugins/observability/public/routes/json_rt.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 * as t from 'io-ts'; +import { either } from 'fp-ts/lib/Either'; + +export const jsonRt = new t.Type( + 'JSON', + t.any.is, + (input, context) => + either.chain(t.string.validate(input, context), (str) => { + try { + return t.success(JSON.parse(str)); + } catch (e) { + return t.failure(input, context); + } + }), + (a) => JSON.stringify(a) +); diff --git a/x-pack/plugins/observability/public/services/get_observability_alerts.test.ts b/x-pack/plugins/observability/public/services/get_observability_alerts.test.ts new file mode 100644 index 0000000000000..dd3f476fe7d53 --- /dev/null +++ b/x-pack/plugins/observability/public/services/get_observability_alerts.test.ts @@ -0,0 +1,91 @@ +/* + * 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 { AppMountContext } from 'kibana/public'; +import { getObservabilityAlerts } from './get_observability_alerts'; + +describe('getObservabilityAlerts', () => { + it('Returns empty array when api throws exception', async () => { + const core = ({ + http: { + get: async () => { + throw new Error('Boom'); + }, + }, + } as unknown) as AppMountContext['core']; + + const alerts = await getObservabilityAlerts({ core }); + expect(alerts).toEqual([]); + }); + + it('Returns empty array when api return undefined', async () => { + const core = ({ + http: { + get: async () => { + return { + data: undefined, + }; + }, + }, + } as unknown) as AppMountContext['core']; + + const alerts = await getObservabilityAlerts({ core }); + expect(alerts).toEqual([]); + }); + + it('Shows alerts from Observability', async () => { + const core = ({ + http: { + get: async () => { + return { + data: [ + { + id: 1, + consumer: 'siem', + }, + { + id: 2, + consumer: 'apm', + }, + { + id: 3, + consumer: 'uptime', + }, + { + id: 4, + consumer: 'logs', + }, + { + id: 5, + consumer: 'metrics', + }, + ], + }; + }, + }, + } as unknown) as AppMountContext['core']; + + const alerts = await getObservabilityAlerts({ core }); + expect(alerts).toEqual([ + { + id: 2, + consumer: 'apm', + }, + { + id: 3, + consumer: 'uptime', + }, + { + id: 4, + consumer: 'logs', + }, + { + id: 5, + consumer: 'metrics', + }, + ]); + }); +}); diff --git a/x-pack/plugins/observability/public/services/get_observability_alerts.ts b/x-pack/plugins/observability/public/services/get_observability_alerts.ts new file mode 100644 index 0000000000000..1bbabbad2834a --- /dev/null +++ b/x-pack/plugins/observability/public/services/get_observability_alerts.ts @@ -0,0 +1,27 @@ +/* + * 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 { AppMountContext } from 'kibana/public'; +import { Alert } from '../../../alerts/common'; + +export async function getObservabilityAlerts({ core }: { core: AppMountContext['core'] }) { + try { + const { data = [] }: { data: Alert[] } = await core.http.get('/api/alerts/_find', { + query: { + page: 1, + per_page: 20, + }, + }); + + return data.filter(({ consumer }) => { + return ( + consumer === 'apm' || consumer === 'uptime' || consumer === 'logs' || consumer === 'metrics' + ); + }); + } catch (e) { + return []; + } +} diff --git a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts index e57dfebb36419..2dafd70896cc5 100644 --- a/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts +++ b/x-pack/plugins/observability/public/typings/fetch_overview_data/index.ts @@ -6,11 +6,9 @@ import { ObservabilityApp } from '../../../typings/common'; -interface Stat { +export interface Stat { type: 'number' | 'percent' | 'bytesPerSecond'; - label: string; value: number; - color?: string; } export interface Coordinates { @@ -18,10 +16,8 @@ export interface Coordinates { y?: number; } -interface Series { - label: string; +export interface Series { coordinates: Coordinates[]; - color?: string; } export interface FetchDataParams { @@ -50,8 +46,8 @@ export interface FetchDataResponse { } export interface LogsFetchDataResponse extends FetchDataResponse { - stats: Record; - series: Record; + stats: Record; + series: Record; } export interface MetricsFetchDataResponse extends FetchDataResponse { diff --git a/x-pack/plugins/observability/public/typings/section/index.ts b/x-pack/plugins/observability/public/typings/section/index.ts new file mode 100644 index 0000000000000..f336b6b981687 --- /dev/null +++ b/x-pack/plugins/observability/public/typings/section/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ObservabilityApp } from '../../../typings/common'; + +export interface ISection { + id: ObservabilityApp | 'alert'; + title: string; + icon: string; + description: string; + href?: string; + linkTitle?: string; + target?: '_blank'; +} diff --git a/x-pack/plugins/observability/public/utils/date.ts b/x-pack/plugins/observability/public/utils/date.ts new file mode 100644 index 0000000000000..fc0bbdae20cb9 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/date.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import datemath from '@elastic/datemath'; + +export function getParsedDate(range?: string, opts = {}) { + if (range) { + const parsed = datemath.parse(range, opts); + if (parsed) { + return parsed.toISOString(); + } + } +} diff --git a/x-pack/plugins/observability/public/utils/format_stat_value.test.ts b/x-pack/plugins/observability/public/utils/format_stat_value.test.ts new file mode 100644 index 0000000000000..6643692e02dd4 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/format_stat_value.test.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { formatStatValue } from './format_stat_value'; +import { Stat } from '../typings'; + +describe('formatStatValue', () => { + it('formats value as number', () => { + const stat = { + type: 'number', + label: 'numeral stat', + value: 1000, + } as Stat; + expect(formatStatValue(stat)).toEqual('1k'); + }); + it('formats value as bytes', () => { + expect( + formatStatValue({ + type: 'bytesPerSecond', + label: 'bytes stat', + value: 1, + } as Stat) + ).toEqual('1.0B/s'); + expect( + formatStatValue({ + type: 'bytesPerSecond', + label: 'bytes stat', + value: 1048576, + } as Stat) + ).toEqual('1.0MB/s'); + expect( + formatStatValue({ + type: 'bytesPerSecond', + label: 'bytes stat', + value: 1073741824, + } as Stat) + ).toEqual('1.0GB/s'); + }); + it('formats value as percent', () => { + const stat = { + type: 'percent', + label: 'percent stat', + value: 0.841, + } as Stat; + expect(formatStatValue(stat)).toEqual('84.1%'); + }); +}); diff --git a/x-pack/plugins/observability/public/utils/format_stat_value.ts b/x-pack/plugins/observability/public/utils/format_stat_value.ts new file mode 100644 index 0000000000000..c200d94d5699e --- /dev/null +++ b/x-pack/plugins/observability/public/utils/format_stat_value.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import numeral from '@elastic/numeral'; +import { Stat } from '../typings'; + +export function formatStatValue(stat: Stat) { + const { value, type } = stat; + switch (type) { + case 'bytesPerSecond': + return `${numeral(value).format('0.0b')}/s`; + case 'number': + return numeral(value).format('0a'); + case 'percent': + return numeral(value).format('0.0%'); + } +} diff --git a/x-pack/plugins/observability/public/utils/get_bucket_size/calculate_auto.js b/x-pack/plugins/observability/public/utils/get_bucket_size/calculate_auto.js new file mode 100644 index 0000000000000..1608003641596 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/get_bucket_size/calculate_auto.js @@ -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 moment from 'moment'; +const d = moment.duration; + +const roundingRules = [ + [d(500, 'ms'), d(100, 'ms')], + [d(5, 'second'), d(1, 'second')], + [d(7.5, 'second'), d(5, 'second')], + [d(15, 'second'), d(10, 'second')], + [d(45, 'second'), d(30, 'second')], + [d(3, 'minute'), d(1, 'minute')], + [d(9, 'minute'), d(5, 'minute')], + [d(20, 'minute'), d(10, 'minute')], + [d(45, 'minute'), d(30, 'minute')], + [d(2, 'hour'), d(1, 'hour')], + [d(6, 'hour'), d(3, 'hour')], + [d(24, 'hour'), d(12, 'hour')], + [d(1, 'week'), d(1, 'd')], + [d(3, 'week'), d(1, 'week')], + [d(1, 'year'), d(1, 'month')], + [Infinity, d(1, 'year')], +]; + +const revRoundingRules = roundingRules.slice(0).reverse(); + +function find(rules, check, last) { + function pick(buckets, duration) { + const target = duration / buckets; + let lastResp = null; + + for (let i = 0; i < rules.length; i++) { + const rule = rules[i]; + const resp = check(rule[0], rule[1], target); + + if (resp == null) { + if (!last) continue; + if (lastResp) return lastResp; + break; + } + + if (!last) return resp; + lastResp = resp; + } + + // fallback to just a number of milliseconds, ensure ms is >= 1 + const ms = Math.max(Math.floor(target), 1); + return moment.duration(ms, 'ms'); + } + + return (buckets, duration) => { + const interval = pick(buckets, duration); + if (interval) return moment.duration(interval._data); + }; +} + +export const calculateAuto = { + near: find( + revRoundingRules, + function near(bound, interval, target) { + if (bound > target) return interval; + }, + true + ), + + lessThan: find(revRoundingRules, function lessThan(_bound, interval, target) { + if (interval < target) return interval; + }), + + atLeast: find(revRoundingRules, function atLeast(_bound, interval, target) { + if (interval <= target) return interval; + }), +}; diff --git a/x-pack/plugins/observability/public/utils/get_bucket_size/index.test.ts b/x-pack/plugins/observability/public/utils/get_bucket_size/index.test.ts new file mode 100644 index 0000000000000..39c4aedaa6013 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/get_bucket_size/index.test.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { getBucketSize } from './index'; +import moment from 'moment'; + +describe('getBuckets', () => { + describe("minInterval 'auto'", () => { + it('last 15 minutes', () => { + const start = moment().subtract(15, 'minutes').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: 'auto' })).toEqual({ + bucketSize: 10, + intervalString: '10s', + }); + }); + it('last 1 hour', () => { + const start = moment().subtract(1, 'hour').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: 'auto' })).toEqual({ + bucketSize: 30, + intervalString: '30s', + }); + }); + it('last 1 week', () => { + const start = moment().subtract(1, 'week').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: 'auto' })).toEqual({ + bucketSize: 3600, + intervalString: '3600s', + }); + }); + it('last 30 days', () => { + const start = moment().subtract(30, 'days').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: 'auto' })).toEqual({ + bucketSize: 43200, + intervalString: '43200s', + }); + }); + it('last 1 year', () => { + const start = moment().subtract(1, 'year').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: 'auto' })).toEqual({ + bucketSize: 86400, + intervalString: '86400s', + }); + }); + }); + describe("minInterval '30s'", () => { + it('last 15 minutes', () => { + const start = moment().subtract(15, 'minutes').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: '30s' })).toEqual({ + bucketSize: 30, + intervalString: '30s', + }); + }); + it('last 1 year', () => { + const start = moment().subtract(1, 'year').valueOf(); + const end = moment.now(); + expect(getBucketSize({ start, end, minInterval: '30s' })).toEqual({ + bucketSize: 86400, + intervalString: '86400s', + }); + }); + }); +}); diff --git a/x-pack/plugins/observability/public/utils/get_bucket_size/index.ts b/x-pack/plugins/observability/public/utils/get_bucket_size/index.ts new file mode 100644 index 0000000000000..5673b890adf33 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/get_bucket_size/index.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import moment from 'moment'; +// @ts-ignore +import { calculateAuto } from './calculate_auto'; +import { unitToSeconds } from './unit_to_seconds'; + +export function getBucketSize({ + start, + end, + minInterval, +}: { + start: number; + end: number; + minInterval: string; +}) { + const duration = moment.duration(end - start, 'ms'); + const bucketSize = Math.max(calculateAuto.near(100, duration).asSeconds(), 1); + const intervalString = `${bucketSize}s`; + const matches = minInterval && minInterval.match(/^([\d]+)([shmdwMy]|ms)$/); + const minBucketSize = matches ? Number(matches[1]) * unitToSeconds(matches[2]) : 0; + + if (bucketSize < minBucketSize) { + return { + bucketSize: minBucketSize, + intervalString: minInterval, + }; + } + + return { bucketSize, intervalString }; +} diff --git a/x-pack/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts b/x-pack/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts new file mode 100644 index 0000000000000..657726d988495 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import moment, { unitOfTime as UnitOfTIme } from 'moment'; + +function getDurationAsSeconds(value: number, unitOfTime: UnitOfTIme.Base) { + return moment.duration(value, unitOfTime).asSeconds(); +} + +const units = { + ms: getDurationAsSeconds(1, 'millisecond'), + s: getDurationAsSeconds(1, 'second'), + m: getDurationAsSeconds(1, 'minute'), + h: getDurationAsSeconds(1, 'hour'), + d: getDurationAsSeconds(1, 'day'), + w: getDurationAsSeconds(1, 'week'), + M: getDurationAsSeconds(1, 'month'), + y: getDurationAsSeconds(1, 'year'), +}; + +export function unitToSeconds(unit: string) { + return units[unit as keyof typeof units]; +} diff --git a/x-pack/plugins/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability/public/utils/test_helper.tsx new file mode 100644 index 0000000000000..2a290f2b24d6b --- /dev/null +++ b/x-pack/plugins/observability/public/utils/test_helper.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { render as testLibRender } from '@testing-library/react'; +import { AppMountContext } from 'kibana/public'; +import { PluginContext } from '../context/plugin_context'; +import { EuiThemeProvider } from '../typings'; + +export const core = ({ + http: { + basePath: { + prepend: jest.fn(), + }, + }, +} as unknown) as AppMountContext['core']; + +export const render = (component: React.ReactNode) => { + return testLibRender( + + {component} + + ); +}; diff --git a/x-pack/plugins/observability/public/utils/url.ts b/x-pack/plugins/observability/public/utils/url.ts new file mode 100644 index 0000000000000..962ab8233a8f5 --- /dev/null +++ b/x-pack/plugins/observability/public/utils/url.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { parse, stringify } from 'query-string'; +import { url } from '../../../../../src/plugins/kibana_utils/public'; + +export function toQuery(search?: string) { + return search ? parse(search.slice(1), { sort: false }) : {}; +} + +export function fromQuery(query: Record) { + const encodedQuery = url.encodeQuery(query, (value) => + encodeURIComponent(value).replace(/%3A/g, ':') + ); + + return stringify(encodedQuery, { sort: false, encode: false }); +} diff --git a/x-pack/plugins/observability/scripts/storybook.js b/x-pack/plugins/observability/scripts/storybook.js new file mode 100644 index 0000000000000..e9db98e2adf6b --- /dev/null +++ b/x-pack/plugins/observability/scripts/storybook.js @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { join } from 'path'; + +// eslint-disable-next-line +require('@kbn/storybook').runStorybookCli({ + name: 'observability', + storyGlobs: [ + join(__dirname, '..', 'public', 'components', '**', '*.stories.tsx'), + join(__dirname, '..', 'public', 'pages', '**', '*.stories.tsx'), + ], +}); diff --git a/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts b/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts index bede391537ec5..89720b275c63d 100644 --- a/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts +++ b/x-pack/plugins/uptime/public/apps/uptime_overview_fetcher.ts @@ -29,29 +29,24 @@ export async function fetchUptimeOverviewData({ stats: { monitors: { type: 'number', - label: 'Monitors', value: snapshot.total, }, up: { type: 'number', - label: 'Up', value: snapshot.up, }, down: { type: 'number', - label: 'Down', value: snapshot.down, }, }, series: { up: { - label: 'Up', coordinates: pings.histogram.map((p) => { return { x: p.x!, y: p.upCount || 0 }; }), }, down: { - label: 'Down', coordinates: pings.histogram.map((p) => { return { x: p.x!, y: p.downCount || 0 }; }), From b6a06dfb61e631b6d2cf89c0b5fe1510c748cf96 Mon Sep 17 00:00:00 2001 From: Spencer Date: Wed, 8 Jul 2020 13:05:12 -0700 Subject: [PATCH 26/38] Revert #64011 and subsequent fixes (#71137) * Revert "temporarily disable firefox functional tests in PRs (#71116)" This reverts commit 54bd07f81b6fc75ede018b9632e06c5bce616c4c. * Revert "[savedObjects field count] run in baseline job (#70999)" This reverts commit 53ee7a762d4bb5790ba4c8bd9a71ceade39a9eab. * Revert "[CI] Add pipeline task queue framework and merge workers into one (#64011)" This reverts commit 465ed2119472621928ce5041d22c2dcfa95641f1. * Revert revert of change to jenkins_xpack_visual_regression.sh Co-authored-by: spalger --- .ci/Dockerfile | 35 ---- .ci/runbld_no_junit.yml | 2 +- .gitignore | 2 - Jenkinsfile | 45 ++++- src/dev/ci_setup/checkout_sibling_es.sh | 12 +- src/dev/ci_setup/setup_env.sh | 4 +- src/dev/notice/generate_notice_from_source.ts | 2 - tasks/config/karma.js | 2 +- tasks/test_jest.js | 6 +- test/scripts/checks/doc_api_changes.sh | 5 - test/scripts/checks/file_casing.sh | 5 - test/scripts/checks/i18n.sh | 5 - test/scripts/checks/licenses.sh | 5 - test/scripts/checks/lock_file_symlinks.sh | 5 - test/scripts/checks/test_hardening.sh | 5 - test/scripts/checks/test_projects.sh | 5 - test/scripts/checks/ts_projects.sh | 5 - test/scripts/checks/type_check.sh | 5 - .../checks/verify_dependency_versions.sh | 5 - test/scripts/checks/verify_notice.sh | 5 - .../jenkins_build_kbn_sample_panel_action.sh | 0 test/scripts/jenkins_build_kibana.sh | 19 +- test/scripts/jenkins_build_plugins.sh | 19 -- test/scripts/jenkins_ci_group.sh | 2 +- test/scripts/jenkins_plugin_functional.sh | 15 -- .../jenkins_security_solution_cypress.sh | 8 +- .../jenkins_setup_parallel_workspace.sh | 32 ---- test/scripts/jenkins_test_setup.sh | 4 - test/scripts/jenkins_test_setup_oss.sh | 15 +- test/scripts/jenkins_test_setup_xpack.sh | 15 +- test/scripts/jenkins_xpack_build_kibana.sh | 23 ++- test/scripts/jenkins_xpack_build_plugins.sh | 21 --- .../jenkins_xpack_page_load_metrics.sh | 0 test/scripts/lint/eslint.sh | 5 - test/scripts/lint/sasslint.sh | 5 - test/scripts/test/api_integration.sh | 5 - test/scripts/test/jest_integration.sh | 5 - test/scripts/test/jest_unit.sh | 5 - test/scripts/test/karma_ci.sh | 5 - test/scripts/test/mocha.sh | 5 - test/scripts/test/xpack_jest_unit.sh | 6 - test/scripts/test/xpack_karma.sh | 6 - .../test/xpack_list_cyclic_dependency.sh | 6 - .../test/xpack_siem_cyclic_dependency.sh | 6 - vars/catchErrors.groovy | 11 +- vars/kibanaPipeline.groovy | 175 +++--------------- vars/task.groovy | 5 - vars/tasks.groovy | 124 ------------- vars/withTaskQueue.groovy | 154 --------------- vars/workers.groovy | 12 +- .../canvas/.storybook/storyshots.test.js | 7 - 51 files changed, 130 insertions(+), 755 deletions(-) delete mode 100644 .ci/Dockerfile delete mode 100755 test/scripts/checks/doc_api_changes.sh delete mode 100755 test/scripts/checks/file_casing.sh delete mode 100755 test/scripts/checks/i18n.sh delete mode 100755 test/scripts/checks/licenses.sh delete mode 100755 test/scripts/checks/lock_file_symlinks.sh delete mode 100755 test/scripts/checks/test_hardening.sh delete mode 100755 test/scripts/checks/test_projects.sh delete mode 100755 test/scripts/checks/ts_projects.sh delete mode 100755 test/scripts/checks/type_check.sh delete mode 100755 test/scripts/checks/verify_dependency_versions.sh delete mode 100755 test/scripts/checks/verify_notice.sh mode change 100755 => 100644 test/scripts/jenkins_build_kbn_sample_panel_action.sh delete mode 100755 test/scripts/jenkins_build_plugins.sh delete mode 100755 test/scripts/jenkins_plugin_functional.sh mode change 100755 => 100644 test/scripts/jenkins_security_solution_cypress.sh delete mode 100755 test/scripts/jenkins_setup_parallel_workspace.sh mode change 100755 => 100644 test/scripts/jenkins_test_setup.sh mode change 100755 => 100644 test/scripts/jenkins_test_setup_oss.sh mode change 100755 => 100644 test/scripts/jenkins_test_setup_xpack.sh delete mode 100755 test/scripts/jenkins_xpack_build_plugins.sh mode change 100755 => 100644 test/scripts/jenkins_xpack_page_load_metrics.sh delete mode 100755 test/scripts/lint/eslint.sh delete mode 100755 test/scripts/lint/sasslint.sh delete mode 100755 test/scripts/test/api_integration.sh delete mode 100755 test/scripts/test/jest_integration.sh delete mode 100755 test/scripts/test/jest_unit.sh delete mode 100755 test/scripts/test/karma_ci.sh delete mode 100755 test/scripts/test/mocha.sh delete mode 100755 test/scripts/test/xpack_jest_unit.sh delete mode 100755 test/scripts/test/xpack_karma.sh delete mode 100755 test/scripts/test/xpack_list_cyclic_dependency.sh delete mode 100755 test/scripts/test/xpack_siem_cyclic_dependency.sh delete mode 100644 vars/task.groovy delete mode 100644 vars/tasks.groovy delete mode 100644 vars/withTaskQueue.groovy diff --git a/.ci/Dockerfile b/.ci/Dockerfile deleted file mode 100644 index 201e17b93c116..0000000000000 --- a/.ci/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -ARG NODE_VERSION=10.21.0 - -FROM node:${NODE_VERSION} AS base - -RUN apt-get update && \ - apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \ - libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \ - libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \ - libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \ - libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget openjdk-8-jre && \ - rm -rf /var/lib/apt/lists/* - -RUN curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \ - && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ - && apt-get update \ - && apt-get install -y rsync jq bsdtar google-chrome-stable \ - --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN LATEST_VAULT_RELEASE=$(curl -s https://api.github.com/repos/hashicorp/vault/tags | jq --raw-output .[0].name[1:]) \ - && curl -L https://releases.hashicorp.com/vault/${LATEST_VAULT_RELEASE}/vault_${LATEST_VAULT_RELEASE}_linux_amd64.zip -o vault.zip \ - && unzip vault.zip \ - && rm vault.zip \ - && chmod +x vault \ - && mv vault /usr/local/bin/vault - -RUN groupadd -r kibana && useradd -r -g kibana kibana && mkdir /home/kibana && chown kibana:kibana /home/kibana - -COPY ./bash_standard_lib.sh /usr/local/bin/bash_standard_lib.sh -RUN chmod +x /usr/local/bin/bash_standard_lib.sh - -COPY ./runbld /usr/local/bin/runbld -RUN chmod +x /usr/local/bin/runbld - -USER kibana diff --git a/.ci/runbld_no_junit.yml b/.ci/runbld_no_junit.yml index 1bcb7e22a2648..67b5002c1c437 100644 --- a/.ci/runbld_no_junit.yml +++ b/.ci/runbld_no_junit.yml @@ -3,4 +3,4 @@ profiles: - ".*": # Match any job tests: - junit-filename-pattern: false + junit-filename-pattern: "8d8bd494-d909-4e67-a052-7e8b5aaeb5e4" # A bogus path that should never exist diff --git a/.gitignore b/.gitignore index 25a8c369bb704..32377ec0f1ffe 100644 --- a/.gitignore +++ b/.gitignore @@ -47,8 +47,6 @@ npm-debug.log* .tern-project .nyc_output .ci/pipeline-library/build/ -.ci/runbld -.ci/bash_standard_lib.sh .gradle # apm plugin diff --git a/Jenkinsfile b/Jenkinsfile index 491a1e386deb1..f6f77ccae8427 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,7 +8,50 @@ kibanaPipeline(timeoutMinutes: 155, checkPrChanges: true, setCommitStatus: true) ciStats.trackBuild { catchError { retryable.enable() - kibanaPipeline.allCiTasks() + parallel([ + 'kibana-intake-agent': workers.intake('kibana-intake', './test/scripts/jenkins_unit.sh'), + 'x-pack-intake-agent': workers.intake('x-pack-intake', './test/scripts/jenkins_xpack.sh'), + 'kibana-oss-agent': workers.functional('kibana-oss-tests', { kibanaPipeline.buildOss() }, [ + 'oss-firefoxSmoke': kibanaPipeline.functionalTestProcess('kibana-firefoxSmoke', './test/scripts/jenkins_firefox_smoke.sh'), + 'oss-ciGroup1': kibanaPipeline.ossCiGroupProcess(1), + 'oss-ciGroup2': kibanaPipeline.ossCiGroupProcess(2), + 'oss-ciGroup3': kibanaPipeline.ossCiGroupProcess(3), + 'oss-ciGroup4': kibanaPipeline.ossCiGroupProcess(4), + 'oss-ciGroup5': kibanaPipeline.ossCiGroupProcess(5), + 'oss-ciGroup6': kibanaPipeline.ossCiGroupProcess(6), + 'oss-ciGroup7': kibanaPipeline.ossCiGroupProcess(7), + 'oss-ciGroup8': kibanaPipeline.ossCiGroupProcess(8), + 'oss-ciGroup9': kibanaPipeline.ossCiGroupProcess(9), + 'oss-ciGroup10': kibanaPipeline.ossCiGroupProcess(10), + 'oss-ciGroup11': kibanaPipeline.ossCiGroupProcess(11), + 'oss-ciGroup12': kibanaPipeline.ossCiGroupProcess(12), + 'oss-accessibility': kibanaPipeline.functionalTestProcess('kibana-accessibility', './test/scripts/jenkins_accessibility.sh'), + // 'oss-visualRegression': kibanaPipeline.functionalTestProcess('visualRegression', './test/scripts/jenkins_visual_regression.sh'), + ]), + 'kibana-xpack-agent': workers.functional('kibana-xpack-tests', { kibanaPipeline.buildXpack() }, [ + 'xpack-firefoxSmoke': kibanaPipeline.functionalTestProcess('xpack-firefoxSmoke', './test/scripts/jenkins_xpack_firefox_smoke.sh'), + 'xpack-ciGroup1': kibanaPipeline.xpackCiGroupProcess(1), + 'xpack-ciGroup2': kibanaPipeline.xpackCiGroupProcess(2), + 'xpack-ciGroup3': kibanaPipeline.xpackCiGroupProcess(3), + 'xpack-ciGroup4': kibanaPipeline.xpackCiGroupProcess(4), + 'xpack-ciGroup5': kibanaPipeline.xpackCiGroupProcess(5), + 'xpack-ciGroup6': kibanaPipeline.xpackCiGroupProcess(6), + 'xpack-ciGroup7': kibanaPipeline.xpackCiGroupProcess(7), + 'xpack-ciGroup8': kibanaPipeline.xpackCiGroupProcess(8), + 'xpack-ciGroup9': kibanaPipeline.xpackCiGroupProcess(9), + 'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10), + 'xpack-accessibility': kibanaPipeline.functionalTestProcess('xpack-accessibility', './test/scripts/jenkins_xpack_accessibility.sh'), + 'xpack-savedObjectsFieldMetrics': kibanaPipeline.functionalTestProcess('xpack-savedObjectsFieldMetrics', './test/scripts/jenkins_xpack_saved_objects_field_metrics.sh'), + // 'xpack-pageLoadMetrics': kibanaPipeline.functionalTestProcess('xpack-pageLoadMetrics', './test/scripts/jenkins_xpack_page_load_metrics.sh'), + 'xpack-securitySolutionCypress': { processNumber -> + whenChanged(['x-pack/plugins/security_solution/', 'x-pack/test/security_solution_cypress/']) { + kibanaPipeline.functionalTestProcess('xpack-securitySolutionCypress', './test/scripts/jenkins_security_solution_cypress.sh')(processNumber) + } + }, + + // 'xpack-visualRegression': kibanaPipeline.functionalTestProcess('xpack-visualRegression', './test/scripts/jenkins_xpack_visual_regression.sh'), + ]), + ]) } } } diff --git a/src/dev/ci_setup/checkout_sibling_es.sh b/src/dev/ci_setup/checkout_sibling_es.sh index 3832ec9b4076a..915759d4214f9 100755 --- a/src/dev/ci_setup/checkout_sibling_es.sh +++ b/src/dev/ci_setup/checkout_sibling_es.sh @@ -7,11 +7,10 @@ function checkout_sibling { targetDir=$2 useExistingParamName=$3 useExisting="$(eval "echo "\$$useExistingParamName"")" - repoAddress="https://github.com/" if [ -z ${useExisting:+x} ]; then if [ -d "$targetDir" ]; then - echo "I expected a clean workspace but an '${project}' sibling directory already exists in [$WORKSPACE]!" + echo "I expected a clean workspace but an '${project}' sibling directory already exists in [$PARENT_DIR]!" echo echo "Either define '${useExistingParamName}' or remove the existing '${project}' sibling." exit 1 @@ -22,9 +21,8 @@ function checkout_sibling { cloneBranch="" function clone_target_is_valid { - echo " -> checking for '${cloneBranch}' branch at ${cloneAuthor}/${project}" - if [[ -n "$(git ls-remote --heads "${repoAddress}${cloneAuthor}/${project}.git" ${cloneBranch} 2>/dev/null)" ]]; then + if [[ -n "$(git ls-remote --heads "git@github.com:${cloneAuthor}/${project}.git" ${cloneBranch} 2>/dev/null)" ]]; then return 0 else return 1 @@ -73,7 +71,7 @@ function checkout_sibling { fi echo " -> checking out '${cloneBranch}' branch from ${cloneAuthor}/${project}..." - git clone -b "$cloneBranch" "${repoAddress}${cloneAuthor}/${project}.git" "$targetDir" --depth=1 + git clone -b "$cloneBranch" "git@github.com:${cloneAuthor}/${project}.git" "$targetDir" --depth=1 echo " -> checked out ${project} revision: $(git -C "${targetDir}" rev-parse HEAD)" echo } @@ -89,12 +87,12 @@ function checkout_sibling { fi } -checkout_sibling "elasticsearch" "${WORKSPACE}/elasticsearch" "USE_EXISTING_ES" +checkout_sibling "elasticsearch" "${PARENT_DIR}/elasticsearch" "USE_EXISTING_ES" export TEST_ES_FROM=${TEST_ES_FROM:-snapshot} # Set the JAVA_HOME based on the Java property file in the ES repo # This assumes the naming convention used on CI (ex: ~/.java/java10) -ES_DIR="$WORKSPACE/elasticsearch" +ES_DIR="$PARENT_DIR/elasticsearch" ES_JAVA_PROP_PATH=$ES_DIR/.ci/java-versions.properties diff --git a/src/dev/ci_setup/setup_env.sh b/src/dev/ci_setup/setup_env.sh index f96a2240917e2..343ff47199375 100644 --- a/src/dev/ci_setup/setup_env.sh +++ b/src/dev/ci_setup/setup_env.sh @@ -53,8 +53,6 @@ export PARENT_DIR="$parentDir" kbnBranch="$(jq -r .branch "$KIBANA_DIR/package.json")" export KIBANA_PKG_BRANCH="$kbnBranch" -export WORKSPACE="${WORKSPACE:-$PARENT_DIR}" - ### ### download node ### @@ -163,7 +161,7 @@ export -f checks-reporter-with-killswitch source "$KIBANA_DIR/src/dev/ci_setup/load_env_keys.sh" -ES_DIR="$WORKSPACE/elasticsearch" +ES_DIR="$PARENT_DIR/elasticsearch" ES_JAVA_PROP_PATH=$ES_DIR/.ci/java-versions.properties if [[ -d "$ES_DIR" && -f "$ES_JAVA_PROP_PATH" ]]; then diff --git a/src/dev/notice/generate_notice_from_source.ts b/src/dev/notice/generate_notice_from_source.ts index a2b05c6dc8a4e..fb74bed0f26f4 100644 --- a/src/dev/notice/generate_notice_from_source.ts +++ b/src/dev/notice/generate_notice_from_source.ts @@ -49,10 +49,8 @@ export async function generateNoticeFromSource({ productName, directory, log }: ignore: [ '{node_modules,build,target,dist,data,built_assets}/**', 'packages/*/{node_modules,build,target,dist}/**', - 'src/plugins/*/{node_modules,build,target,dist}/**', 'x-pack/{node_modules,build,target,dist,data}/**', 'x-pack/packages/*/{node_modules,build,target,dist}/**', - 'x-pack/plugins/*/{node_modules,build,target,dist}/**', ], }; diff --git a/tasks/config/karma.js b/tasks/config/karma.js index 7c4f75bea8801..fa4bdc8ed2266 100644 --- a/tasks/config/karma.js +++ b/tasks/config/karma.js @@ -110,7 +110,7 @@ module.exports = function (grunt) { customLaunchers: { Chrome_Headless: { base: 'Chrome', - flags: ['--headless', '--disable-gpu', '--remote-debugging-port=9222', '--no-sandbox'], + flags: ['--headless', '--disable-gpu', '--remote-debugging-port=9222'], }, }, diff --git a/tasks/test_jest.js b/tasks/test_jest.js index 810ed42324840..d8f51806e8ddc 100644 --- a/tasks/test_jest.js +++ b/tasks/test_jest.js @@ -22,7 +22,7 @@ const { resolve } = require('path'); module.exports = function (grunt) { grunt.registerTask('test:jest', function () { const done = this.async(); - runJest(resolve(__dirname, '../scripts/jest.js'), ['--maxWorkers=10']).then(done, done); + runJest(resolve(__dirname, '../scripts/jest.js')).then(done, done); }); grunt.registerTask('test:jest_integration', function () { @@ -30,10 +30,10 @@ module.exports = function (grunt) { runJest(resolve(__dirname, '../scripts/jest_integration.js')).then(done, done); }); - function runJest(jestScript, args = []) { + function runJest(jestScript) { const serverCmd = { cmd: 'node', - args: [jestScript, '--ci', ...args], + args: [jestScript, '--ci'], opts: { stdio: 'inherit' }, }; diff --git a/test/scripts/checks/doc_api_changes.sh b/test/scripts/checks/doc_api_changes.sh deleted file mode 100755 index 503d12b2f6d73..0000000000000 --- a/test/scripts/checks/doc_api_changes.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:checkDocApiChanges diff --git a/test/scripts/checks/file_casing.sh b/test/scripts/checks/file_casing.sh deleted file mode 100755 index 513664263791b..0000000000000 --- a/test/scripts/checks/file_casing.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:checkFileCasing diff --git a/test/scripts/checks/i18n.sh b/test/scripts/checks/i18n.sh deleted file mode 100755 index 7a6fd46c46c76..0000000000000 --- a/test/scripts/checks/i18n.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:i18nCheck diff --git a/test/scripts/checks/licenses.sh b/test/scripts/checks/licenses.sh deleted file mode 100755 index a08d7d07a24a1..0000000000000 --- a/test/scripts/checks/licenses.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:licenses diff --git a/test/scripts/checks/lock_file_symlinks.sh b/test/scripts/checks/lock_file_symlinks.sh deleted file mode 100755 index 1d43d32c9feb8..0000000000000 --- a/test/scripts/checks/lock_file_symlinks.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:checkLockfileSymlinks diff --git a/test/scripts/checks/test_hardening.sh b/test/scripts/checks/test_hardening.sh deleted file mode 100755 index 9184758577654..0000000000000 --- a/test/scripts/checks/test_hardening.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:test_hardening diff --git a/test/scripts/checks/test_projects.sh b/test/scripts/checks/test_projects.sh deleted file mode 100755 index 5f9aafe80e10e..0000000000000 --- a/test/scripts/checks/test_projects.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:test_projects diff --git a/test/scripts/checks/ts_projects.sh b/test/scripts/checks/ts_projects.sh deleted file mode 100755 index d667c753baec2..0000000000000 --- a/test/scripts/checks/ts_projects.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:checkTsProjects diff --git a/test/scripts/checks/type_check.sh b/test/scripts/checks/type_check.sh deleted file mode 100755 index 07c49638134be..0000000000000 --- a/test/scripts/checks/type_check.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:typeCheck diff --git a/test/scripts/checks/verify_dependency_versions.sh b/test/scripts/checks/verify_dependency_versions.sh deleted file mode 100755 index b73a71e7ff7fd..0000000000000 --- a/test/scripts/checks/verify_dependency_versions.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:verifyDependencyVersions diff --git a/test/scripts/checks/verify_notice.sh b/test/scripts/checks/verify_notice.sh deleted file mode 100755 index 9f8343e540861..0000000000000 --- a/test/scripts/checks/verify_notice.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:verifyNotice diff --git a/test/scripts/jenkins_build_kbn_sample_panel_action.sh b/test/scripts/jenkins_build_kbn_sample_panel_action.sh old mode 100755 new mode 100644 diff --git a/test/scripts/jenkins_build_kibana.sh b/test/scripts/jenkins_build_kibana.sh index f449986713f97..3e49edc8e6ae5 100755 --- a/test/scripts/jenkins_build_kibana.sh +++ b/test/scripts/jenkins_build_kibana.sh @@ -2,9 +2,19 @@ source src/dev/ci_setup/setup_env.sh -if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then - ./test/scripts/jenkins_build_plugins.sh -fi +echo " -> building examples separate from test plugins" +node scripts/build_kibana_platform_plugins \ + --oss \ + --examples \ + --verbose; + +echo " -> building test plugins" +node scripts/build_kibana_platform_plugins \ + --oss \ + --no-examples \ + --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ + --scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \ + --verbose; # doesn't persist, also set in kibanaPipeline.groovy export KBN_NP_PLUGINS_BUILT=true @@ -16,7 +26,4 @@ yarn run grunt functionalTests:ensureAllTestsInCiGroup; if [[ -z "$CODE_COVERAGE" ]] ; then echo " -> building and extracting OSS Kibana distributable for use in functional tests" node scripts/build --debug --oss - - mkdir -p "$WORKSPACE/kibana-build-oss" - cp -pR build/oss/kibana-*-SNAPSHOT-linux-x86_64/. $WORKSPACE/kibana-build-oss/ fi diff --git a/test/scripts/jenkins_build_plugins.sh b/test/scripts/jenkins_build_plugins.sh deleted file mode 100755 index 32b3942074b34..0000000000000 --- a/test/scripts/jenkins_build_plugins.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -echo " -> building examples separate from test plugins" -node scripts/build_kibana_platform_plugins \ - --oss \ - --examples \ - --workers 6 \ - --verbose - -echo " -> building kibana platform plugins" -node scripts/build_kibana_platform_plugins \ - --oss \ - --no-examples \ - --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ - --scan-dir "$KIBANA_DIR/test/interpreter_functional/plugins" \ - --workers 6 \ - --verbose diff --git a/test/scripts/jenkins_ci_group.sh b/test/scripts/jenkins_ci_group.sh index 2542d7032e83b..60d7f0406f4c9 100755 --- a/test/scripts/jenkins_ci_group.sh +++ b/test/scripts/jenkins_ci_group.sh @@ -5,7 +5,7 @@ source test/scripts/jenkins_test_setup_oss.sh if [[ -z "$CODE_COVERAGE" ]]; then checks-reporter-with-killswitch "Functional tests / Group ${CI_GROUP}" yarn run grunt "run:functionalTests_ciGroup${CI_GROUP}"; - if [[ ! "$TASK_QUEUE_PROCESS_ID" && "$CI_GROUP" == "1" ]]; then + if [ "$CI_GROUP" == "1" ]; then source test/scripts/jenkins_build_kbn_sample_panel_action.sh yarn run grunt run:pluginFunctionalTestsRelease --from=source; yarn run grunt run:exampleFunctionalTestsRelease --from=source; diff --git a/test/scripts/jenkins_plugin_functional.sh b/test/scripts/jenkins_plugin_functional.sh deleted file mode 100755 index 1d691d98982de..0000000000000 --- a/test/scripts/jenkins_plugin_functional.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -source test/scripts/jenkins_test_setup_oss.sh - -cd test/plugin_functional/plugins/kbn_sample_panel_action; -if [[ ! -d "target" ]]; then - yarn build; -fi -cd -; - -pwd - -yarn run grunt run:pluginFunctionalTestsRelease --from=source; -yarn run grunt run:exampleFunctionalTestsRelease --from=source; -yarn run grunt run:interpreterFunctionalTestsRelease; diff --git a/test/scripts/jenkins_security_solution_cypress.sh b/test/scripts/jenkins_security_solution_cypress.sh old mode 100755 new mode 100644 index a5a1a2103801f..204911a3eedaa --- a/test/scripts/jenkins_security_solution_cypress.sh +++ b/test/scripts/jenkins_security_solution_cypress.sh @@ -1,6 +1,12 @@ #!/usr/bin/env bash -source test/scripts/jenkins_test_setup_xpack.sh +source test/scripts/jenkins_test_setup.sh + +installDir="$PARENT_DIR/install/kibana" +destDir="${installDir}-${CI_WORKER_NUMBER}" +cp -R "$installDir" "$destDir" + +export KIBANA_INSTALL_DIR="$destDir" echo " -> Running security solution cypress tests" cd "$XPACK_DIR" diff --git a/test/scripts/jenkins_setup_parallel_workspace.sh b/test/scripts/jenkins_setup_parallel_workspace.sh deleted file mode 100755 index 5274d05572e71..0000000000000 --- a/test/scripts/jenkins_setup_parallel_workspace.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash -set -e - -CURRENT_DIR=$(pwd) - -# Copy everything except node_modules into the current workspace -rsync -a ${WORKSPACE}/kibana/* . --exclude node_modules -rsync -a ${WORKSPACE}/kibana/.??* . - -# Symlink all non-root, non-fixture node_modules into our new workspace -cd ${WORKSPACE}/kibana -find . -type d -name node_modules -not -path '*__fixtures__*' -not -path './node_modules*' -prune -print0 | xargs -0I % ln -s "${WORKSPACE}/kibana/%" "${CURRENT_DIR}/%" -find . -type d -wholename '*__fixtures__*node_modules' -not -path './node_modules*' -prune -print0 | xargs -0I % cp -R "${WORKSPACE}/kibana/%" "${CURRENT_DIR}/%" -cd "${CURRENT_DIR}" - -# Symlink all of the individual root-level node_modules into the node_modules/ directory -mkdir -p node_modules -ln -s ${WORKSPACE}/kibana/node_modules/* node_modules/ -ln -s ${WORKSPACE}/kibana/node_modules/.??* node_modules/ - -# Copy a few node_modules instead of symlinking them. They don't work correctly if symlinked -unlink node_modules/@kbn -unlink node_modules/css-loader -unlink node_modules/style-loader - -# packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts will fail if this is a symlink -unlink node_modules/val-loader - -cp -R ${WORKSPACE}/kibana/node_modules/@kbn node_modules/ -cp -R ${WORKSPACE}/kibana/node_modules/css-loader node_modules/ -cp -R ${WORKSPACE}/kibana/node_modules/style-loader node_modules/ -cp -R ${WORKSPACE}/kibana/node_modules/val-loader node_modules/ diff --git a/test/scripts/jenkins_test_setup.sh b/test/scripts/jenkins_test_setup.sh old mode 100755 new mode 100644 index 7cced76eb650f..49ee8a6b526ca --- a/test/scripts/jenkins_test_setup.sh +++ b/test/scripts/jenkins_test_setup.sh @@ -14,7 +14,3 @@ trap 'post_work' EXIT export TEST_BROWSER_HEADLESS=1 source src/dev/ci_setup/setup_env.sh - -if [[ ! -d .es && -d "$WORKSPACE/kibana/.es" ]]; then - cp -R $WORKSPACE/kibana/.es ./ -fi diff --git a/test/scripts/jenkins_test_setup_oss.sh b/test/scripts/jenkins_test_setup_oss.sh old mode 100755 new mode 100644 index b7eac33f35176..7bbb867526384 --- a/test/scripts/jenkins_test_setup_oss.sh +++ b/test/scripts/jenkins_test_setup_oss.sh @@ -2,17 +2,10 @@ source test/scripts/jenkins_test_setup.sh -if [[ -z "$CODE_COVERAGE" ]]; then - - destDir="build/kibana-build-oss" - if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then - destDir="${destDir}-${CI_PARALLEL_PROCESS_NUMBER}" - fi - - if [[ ! -d $destDir ]]; then - mkdir -p $destDir - cp -pR "$WORKSPACE/kibana-build-oss/." $destDir/ - fi +if [[ -z "$CODE_COVERAGE" ]] ; then + installDir="$(realpath $PARENT_DIR/kibana/build/oss/kibana-*-SNAPSHOT-linux-x86_64)" + destDir=${installDir}-${CI_PARALLEL_PROCESS_NUMBER} + cp -R "$installDir" "$destDir" export KIBANA_INSTALL_DIR="$destDir" fi diff --git a/test/scripts/jenkins_test_setup_xpack.sh b/test/scripts/jenkins_test_setup_xpack.sh old mode 100755 new mode 100644 index 74a3de77e3a76..a72e9749ebbd5 --- a/test/scripts/jenkins_test_setup_xpack.sh +++ b/test/scripts/jenkins_test_setup_xpack.sh @@ -3,18 +3,11 @@ source test/scripts/jenkins_test_setup.sh if [[ -z "$CODE_COVERAGE" ]]; then + installDir="$PARENT_DIR/install/kibana" + destDir="${installDir}-${CI_PARALLEL_PROCESS_NUMBER}" + cp -R "$installDir" "$destDir" - destDir="build/kibana-build-xpack" - if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then - destDir="${destDir}-${CI_PARALLEL_PROCESS_NUMBER}" - fi - - if [[ ! -d $destDir ]]; then - mkdir -p $destDir - cp -pR "$WORKSPACE/kibana-build-xpack/." $destDir/ - fi - - export KIBANA_INSTALL_DIR="$(realpath $destDir)" + export KIBANA_INSTALL_DIR="$destDir" cd "$XPACK_DIR" fi diff --git a/test/scripts/jenkins_xpack_build_kibana.sh b/test/scripts/jenkins_xpack_build_kibana.sh index 2452e2f5b8c58..58ef6a42d3fe4 100755 --- a/test/scripts/jenkins_xpack_build_kibana.sh +++ b/test/scripts/jenkins_xpack_build_kibana.sh @@ -3,9 +3,21 @@ cd "$KIBANA_DIR" source src/dev/ci_setup/setup_env.sh -if [[ ! "$TASK_QUEUE_PROCESS_ID" ]]; then - ./test/scripts/jenkins_xpack_build_plugins.sh -fi +echo " -> building examples separate from test plugins" +node scripts/build_kibana_platform_plugins \ + --examples \ + --verbose; + +echo " -> building test plugins" +node scripts/build_kibana_platform_plugins \ + --no-examples \ + --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_functional/plugins" \ + --scan-dir "$XPACK_DIR/test/functional_with_es_ssl/fixtures/plugins" \ + --scan-dir "$XPACK_DIR/test/alerting_api_integration/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_api_integration/plugins" \ + --scan-dir "$XPACK_DIR/test/plugin_api_perf/plugins" \ + --verbose; # doesn't persist, also set in kibanaPipeline.groovy export KBN_NP_PLUGINS_BUILT=true @@ -30,10 +42,7 @@ if [[ -z "$CODE_COVERAGE" ]] ; then cd "$KIBANA_DIR" node scripts/build --debug --no-oss linuxBuild="$(find "$KIBANA_DIR/target" -name 'kibana-*-linux-x86_64.tar.gz')" - installDir="$KIBANA_DIR/install/kibana" + installDir="$PARENT_DIR/install/kibana" mkdir -p "$installDir" tar -xzf "$linuxBuild" -C "$installDir" --strip=1 - - mkdir -p "$WORKSPACE/kibana-build-xpack" - cp -pR install/kibana/. $WORKSPACE/kibana-build-xpack/ fi diff --git a/test/scripts/jenkins_xpack_build_plugins.sh b/test/scripts/jenkins_xpack_build_plugins.sh deleted file mode 100755 index fea30c547bd5f..0000000000000 --- a/test/scripts/jenkins_xpack_build_plugins.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -echo " -> building examples separate from test plugins" -node scripts/build_kibana_platform_plugins \ - --workers 12 \ - --examples \ - --verbose - -echo " -> building kibana platform plugins" -node scripts/build_kibana_platform_plugins \ - --no-examples \ - --scan-dir "$KIBANA_DIR/test/plugin_functional/plugins" \ - --scan-dir "$XPACK_DIR/test/plugin_functional/plugins" \ - --scan-dir "$XPACK_DIR/test/functional_with_es_ssl/fixtures/plugins" \ - --scan-dir "$XPACK_DIR/test/alerting_api_integration/plugins" \ - --scan-dir "$XPACK_DIR/test/plugin_api_integration/plugins" \ - --scan-dir "$XPACK_DIR/test/plugin_api_perf/plugins" \ - --workers 12 \ - --verbose diff --git a/test/scripts/jenkins_xpack_page_load_metrics.sh b/test/scripts/jenkins_xpack_page_load_metrics.sh old mode 100755 new mode 100644 diff --git a/test/scripts/lint/eslint.sh b/test/scripts/lint/eslint.sh deleted file mode 100755 index c3211300b96c5..0000000000000 --- a/test/scripts/lint/eslint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:eslint diff --git a/test/scripts/lint/sasslint.sh b/test/scripts/lint/sasslint.sh deleted file mode 100755 index b9c683bcb049e..0000000000000 --- a/test/scripts/lint/sasslint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:sasslint diff --git a/test/scripts/test/api_integration.sh b/test/scripts/test/api_integration.sh deleted file mode 100755 index 152c97a3ca7df..0000000000000 --- a/test/scripts/test/api_integration.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:apiIntegrationTests diff --git a/test/scripts/test/jest_integration.sh b/test/scripts/test/jest_integration.sh deleted file mode 100755 index 73dbbddfb38f6..0000000000000 --- a/test/scripts/test/jest_integration.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:test_jest_integration diff --git a/test/scripts/test/jest_unit.sh b/test/scripts/test/jest_unit.sh deleted file mode 100755 index e25452698cebc..0000000000000 --- a/test/scripts/test/jest_unit.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:test_jest diff --git a/test/scripts/test/karma_ci.sh b/test/scripts/test/karma_ci.sh deleted file mode 100755 index e9985300ba19d..0000000000000 --- a/test/scripts/test/karma_ci.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:test_karma_ci diff --git a/test/scripts/test/mocha.sh b/test/scripts/test/mocha.sh deleted file mode 100755 index 43c00f0a09dcf..0000000000000 --- a/test/scripts/test/mocha.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -yarn run grunt run:mocha diff --git a/test/scripts/test/xpack_jest_unit.sh b/test/scripts/test/xpack_jest_unit.sh deleted file mode 100755 index 93d70ec355391..0000000000000 --- a/test/scripts/test/xpack_jest_unit.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -cd x-pack -checks-reporter-with-killswitch "X-Pack Jest" node --max-old-space-size=6144 scripts/jest --ci --verbose --maxWorkers=10 diff --git a/test/scripts/test/xpack_karma.sh b/test/scripts/test/xpack_karma.sh deleted file mode 100755 index 9078f01f1b870..0000000000000 --- a/test/scripts/test/xpack_karma.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -cd x-pack -checks-reporter-with-killswitch "X-Pack Karma Tests" yarn test:karma diff --git a/test/scripts/test/xpack_list_cyclic_dependency.sh b/test/scripts/test/xpack_list_cyclic_dependency.sh deleted file mode 100755 index 493fe9f58d322..0000000000000 --- a/test/scripts/test/xpack_list_cyclic_dependency.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -cd x-pack -checks-reporter-with-killswitch "X-Pack List cyclic dependency test" node plugins/lists/scripts/check_circular_deps diff --git a/test/scripts/test/xpack_siem_cyclic_dependency.sh b/test/scripts/test/xpack_siem_cyclic_dependency.sh deleted file mode 100755 index b21301f25ad08..0000000000000 --- a/test/scripts/test/xpack_siem_cyclic_dependency.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -cd x-pack -checks-reporter-with-killswitch "X-Pack SIEM cyclic dependency test" node plugins/security_solution/scripts/check_circular_deps diff --git a/vars/catchErrors.groovy b/vars/catchErrors.groovy index 2a1b55d832606..460a90b8ec0c0 100644 --- a/vars/catchErrors.groovy +++ b/vars/catchErrors.groovy @@ -1,15 +1,8 @@ // Basically, this is a shortcut for catchError(catchInterruptions: false) {} // By default, catchError will swallow aborts/timeouts, which we almost never want -// Also, by wrapping it in an additional try/catch, we cut down on spam in Pipeline Steps def call(Map params = [:], Closure closure) { - try { - closure() - } catch (ex) { - params.catchInterruptions = false - catchError(params) { - throw ex - } - } + params.catchInterruptions = false + return catchError(params, closure) } return this diff --git a/vars/kibanaPipeline.groovy b/vars/kibanaPipeline.groovy index 0f11204311451..f3fc5f84583c9 100644 --- a/vars/kibanaPipeline.groovy +++ b/vars/kibanaPipeline.groovy @@ -16,34 +16,27 @@ def withPostBuildReporting(Closure closure) { } } -def withFunctionalTestEnv(List additionalEnvs = [], Closure closure) { - // This can go away once everything that uses the deprecated workers.parallelProcesses() is moved to task queue - def parallelId = env.TASK_QUEUE_PROCESS_ID ?: env.CI_PARALLEL_PROCESS_NUMBER - - def kibanaPort = "61${parallelId}1" - def esPort = "61${parallelId}2" - def esTransportPort = "61${parallelId}3" - def ingestManagementPackageRegistryPort = "61${parallelId}4" - - withEnv([ - "CI_GROUP=${parallelId}", - "REMOVE_KIBANA_INSTALL_DIR=1", - "CI_PARALLEL_PROCESS_NUMBER=${parallelId}", - "TEST_KIBANA_HOST=localhost", - "TEST_KIBANA_PORT=${kibanaPort}", - "TEST_KIBANA_URL=http://elastic:changeme@localhost:${kibanaPort}", - "TEST_ES_URL=http://elastic:changeme@localhost:${esPort}", - "TEST_ES_TRANSPORT_PORT=${esTransportPort}", - "KBN_NP_PLUGINS_BUILT=true", - "INGEST_MANAGEMENT_PACKAGE_REGISTRY_PORT=${ingestManagementPackageRegistryPort}", - ] + additionalEnvs) { - closure() - } -} - def functionalTestProcess(String name, Closure closure) { - return { - withFunctionalTestEnv(["JOB=${name}"], closure) + return { processNumber -> + def kibanaPort = "61${processNumber}1" + def esPort = "61${processNumber}2" + def esTransportPort = "61${processNumber}3" + def ingestManagementPackageRegistryPort = "61${processNumber}4" + + withEnv([ + "CI_PARALLEL_PROCESS_NUMBER=${processNumber}", + "TEST_KIBANA_HOST=localhost", + "TEST_KIBANA_PORT=${kibanaPort}", + "TEST_KIBANA_URL=http://elastic:changeme@localhost:${kibanaPort}", + "TEST_ES_URL=http://elastic:changeme@localhost:${esPort}", + "TEST_ES_TRANSPORT_PORT=${esTransportPort}", + "INGEST_MANAGEMENT_PACKAGE_REGISTRY_PORT=${ingestManagementPackageRegistryPort}", + "IS_PIPELINE_JOB=1", + "JOB=${name}", + "KBN_NP_PLUGINS_BUILT=true", + ]) { + closure() + } } } @@ -107,17 +100,11 @@ def withGcsArtifactUpload(workerName, closure) { def uploadPrefix = "kibana-ci-artifacts/jobs/${env.JOB_NAME}/${BUILD_NUMBER}/${workerName}" def ARTIFACT_PATTERNS = [ 'target/kibana-*', - 'target/test-metrics/*', 'target/kibana-security-solution/**/*.png', 'target/junit/**/*', - 'target/test-suites-ci-plan.json', - 'test/**/screenshots/session/*.png', - 'test/**/screenshots/failure/*.png', - 'test/**/screenshots/diff/*.png', + 'test/**/screenshots/**/*.png', 'test/functional/failure_debug/html/*.html', - 'x-pack/test/**/screenshots/session/*.png', - 'x-pack/test/**/screenshots/failure/*.png', - 'x-pack/test/**/screenshots/diff/*.png', + 'x-pack/test/**/screenshots/**/*.png', 'x-pack/test/functional/failure_debug/html/*.html', 'x-pack/test/functional/apps/reporting/reports/session/*.pdf', ] @@ -132,12 +119,6 @@ def withGcsArtifactUpload(workerName, closure) { ARTIFACT_PATTERNS.each { pattern -> uploadGcsArtifact(uploadPrefix, pattern) } - - dir(env.WORKSPACE) { - ARTIFACT_PATTERNS.each { pattern -> - uploadGcsArtifact(uploadPrefix, "parallel/*/kibana/${pattern}") - } - } } } }) @@ -150,11 +131,6 @@ def withGcsArtifactUpload(workerName, closure) { def publishJunit() { junit(testResults: 'target/junit/**/*.xml', allowEmptyResults: true, keepLongStdio: true) - - // junit() is weird about paths for security reasons, so we need to actually change to an upper directory first - dir(env.WORKSPACE) { - junit(testResults: 'parallel/*/kibana/target/junit/**/*.xml', allowEmptyResults: true, keepLongStdio: true) - } } def sendMail() { @@ -218,16 +194,12 @@ def doSetup() { } } -def buildOss(maxWorkers = '') { - withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) { - runbld("./test/scripts/jenkins_build_kibana.sh", "Build OSS/Default Kibana") - } +def buildOss() { + runbld("./test/scripts/jenkins_build_kibana.sh", "Build OSS/Default Kibana") } -def buildXpack(maxWorkers = '') { - withEnv(["KBN_OPTIMIZER_MAX_WORKERS=${maxWorkers}"]) { - runbld("./test/scripts/jenkins_xpack_build_kibana.sh", "Build X-Pack Kibana") - } +def buildXpack() { + runbld("./test/scripts/jenkins_xpack_build_kibana.sh", "Build X-Pack Kibana") } def runErrorReporter() { @@ -276,100 +248,6 @@ def call(Map params = [:], Closure closure) { } } -// Creates a task queue using withTaskQueue, and copies the bootstrapped kibana repo into each process's workspace -// Note that node_modules are mostly symlinked to save time/space. See test/scripts/jenkins_setup_parallel_workspace.sh -def withCiTaskQueue(Map options = [:], Closure closure) { - def setupClosure = { - // This can't use runbld, because it expects the source to be there, which isn't yet - bash("${env.WORKSPACE}/kibana/test/scripts/jenkins_setup_parallel_workspace.sh", "Set up duplicate workspace for parallel process") - } - - def config = [parallel: 24, setup: setupClosure] + options - - withTaskQueue(config) { - closure.call() - } -} - -def scriptTask(description, script) { - return { - withFunctionalTestEnv { - runbld(script, description) - } - } -} - -def scriptTaskDocker(description, script) { - return { - withDocker(scriptTask(description, script)) - } -} - -def buildDocker() { - sh( - script: """ - cp /usr/local/bin/runbld .ci/ - cp /usr/local/bin/bash_standard_lib.sh .ci/ - cd .ci - docker build -t kibana-ci -f ./Dockerfile . - """, - label: 'Build CI Docker image' - ) -} - -def withDocker(Closure closure) { - docker - .image('kibana-ci') - .inside( - "-v /etc/runbld:/etc/runbld:ro -v '${env.JENKINS_HOME}:${env.JENKINS_HOME}' -v '/dev/shm/workspace:/dev/shm/workspace' --shm-size 2GB --cpus 4", - closure - ) -} - -def buildOssPlugins() { - runbld('./test/scripts/jenkins_build_plugins.sh', 'Build OSS Plugins') -} - -def buildXpackPlugins() { - runbld('./test/scripts/jenkins_xpack_build_plugins.sh', 'Build X-Pack Plugins') -} - -def withTasks(Map params = [worker: [:]], Closure closure) { - catchErrors { - def config = [name: 'ci-worker', size: 'xxl', ramDisk: true] + (params.worker ?: [:]) - - workers.ci(config) { - withCiTaskQueue(parallel: 24) { - parallel([ - docker: { - retry(2) { - buildDocker() - } - }, - - // There are integration tests etc that require the plugins to be built first, so let's go ahead and build them before set up the parallel workspaces - ossPlugins: { buildOssPlugins() }, - xpackPlugins: { buildXpackPlugins() }, - ]) - - catchErrors { - closure() - } - } - } - } -} - -def allCiTasks() { - withTasks { - tasks.check() - tasks.lint() - tasks.test() - tasks.functionalOss() - tasks.functionalXpack() - } -} - def pipelineLibraryTests() { whenChanged(['vars/', '.ci/pipeline-library/']) { workers.base(size: 'flyweight', bootstrapped: false, ramDisk: false) { @@ -380,4 +258,5 @@ def pipelineLibraryTests() { } } + return this diff --git a/vars/task.groovy b/vars/task.groovy deleted file mode 100644 index 0c07b519b6fef..0000000000000 --- a/vars/task.groovy +++ /dev/null @@ -1,5 +0,0 @@ -def call(Closure closure) { - withTaskQueue.addTask(closure) -} - -return this diff --git a/vars/tasks.groovy b/vars/tasks.groovy deleted file mode 100644 index 3ff9a7b4850ae..0000000000000 --- a/vars/tasks.groovy +++ /dev/null @@ -1,124 +0,0 @@ -def call(List closures) { - withTaskQueue.addTasks(closures) -} - -def check() { - tasks([ - kibanaPipeline.scriptTask('Check TypeScript Projects', 'test/scripts/checks/ts_projects.sh'), - kibanaPipeline.scriptTask('Check Doc API Changes', 'test/scripts/checks/doc_api_changes.sh'), - kibanaPipeline.scriptTask('Check Types', 'test/scripts/checks/type_check.sh'), - kibanaPipeline.scriptTask('Check i18n', 'test/scripts/checks/i18n.sh'), - kibanaPipeline.scriptTask('Check File Casing', 'test/scripts/checks/file_casing.sh'), - kibanaPipeline.scriptTask('Check Lockfile Symlinks', 'test/scripts/checks/lock_file_symlinks.sh'), - kibanaPipeline.scriptTask('Check Licenses', 'test/scripts/checks/licenses.sh'), - kibanaPipeline.scriptTask('Verify Dependency Versions', 'test/scripts/checks/verify_dependency_versions.sh'), - kibanaPipeline.scriptTask('Verify NOTICE', 'test/scripts/checks/verify_notice.sh'), - kibanaPipeline.scriptTask('Test Projects', 'test/scripts/checks/test_projects.sh'), - kibanaPipeline.scriptTask('Test Hardening', 'test/scripts/checks/test_hardening.sh'), - ]) -} - -def lint() { - tasks([ - kibanaPipeline.scriptTask('Lint: eslint', 'test/scripts/lint/eslint.sh'), - kibanaPipeline.scriptTask('Lint: sasslint', 'test/scripts/lint/sasslint.sh'), - ]) -} - -def test() { - tasks([ - // These 4 tasks require isolation because of hard-coded, conflicting ports and such, so let's use Docker here - kibanaPipeline.scriptTaskDocker('Jest Integration Tests', 'test/scripts/test/jest_integration.sh'), - kibanaPipeline.scriptTaskDocker('Mocha Tests', 'test/scripts/test/mocha.sh'), - kibanaPipeline.scriptTaskDocker('Karma CI Tests', 'test/scripts/test/karma_ci.sh'), - kibanaPipeline.scriptTaskDocker('X-Pack Karma Tests', 'test/scripts/test/xpack_karma.sh'), - - kibanaPipeline.scriptTask('Jest Unit Tests', 'test/scripts/test/jest_unit.sh'), - kibanaPipeline.scriptTask('API Integration Tests', 'test/scripts/test/api_integration.sh'), - kibanaPipeline.scriptTask('X-Pack SIEM cyclic dependency', 'test/scripts/test/xpack_siem_cyclic_dependency.sh'), - kibanaPipeline.scriptTask('X-Pack List cyclic dependency', 'test/scripts/test/xpack_list_cyclic_dependency.sh'), - kibanaPipeline.scriptTask('X-Pack Jest Unit Tests', 'test/scripts/test/xpack_jest_unit.sh'), - ]) -} - -def functionalOss(Map params = [:]) { - def config = params ?: [ - ciGroups: true, - firefox: !githubPr.isPr(), - accessibility: true, - pluginFunctional: true, - visualRegression: false - ] - - task { - kibanaPipeline.buildOss(6) - - if (config.ciGroups) { - def ciGroups = 1..12 - tasks(ciGroups.collect { kibanaPipeline.ossCiGroupProcess(it) }) - } - - if (config.firefox) { - task(kibanaPipeline.functionalTestProcess('oss-firefox', './test/scripts/jenkins_firefox_smoke.sh')) - } - - if (config.accessibility) { - task(kibanaPipeline.functionalTestProcess('oss-accessibility', './test/scripts/jenkins_accessibility.sh')) - } - - if (config.pluginFunctional) { - task(kibanaPipeline.functionalTestProcess('oss-pluginFunctional', './test/scripts/jenkins_plugin_functional.sh')) - } - - if (config.visualRegression) { - task(kibanaPipeline.functionalTestProcess('oss-visualRegression', './test/scripts/jenkins_visual_regression.sh')) - } - } -} - -def functionalXpack(Map params = [:]) { - def config = params ?: [ - ciGroups: true, - firefox: !githubPr.isPr(), - accessibility: true, - pluginFunctional: true, - savedObjectsFieldMetrics: true, - pageLoadMetrics: false, - visualRegression: false, - ] - - task { - kibanaPipeline.buildXpack(10) - - if (config.ciGroups) { - def ciGroups = 1..10 - tasks(ciGroups.collect { kibanaPipeline.xpackCiGroupProcess(it) }) - } - - if (config.firefox) { - task(kibanaPipeline.functionalTestProcess('xpack-firefox', './test/scripts/jenkins_xpack_firefox_smoke.sh')) - } - - if (config.accessibility) { - task(kibanaPipeline.functionalTestProcess('xpack-accessibility', './test/scripts/jenkins_xpack_accessibility.sh')) - } - - if (config.visualRegression) { - task(kibanaPipeline.functionalTestProcess('xpack-visualRegression', './test/scripts/jenkins_xpack_visual_regression.sh')) - } - - if (config.pageLoadMetrics) { - task(kibanaPipeline.functionalTestProcess('xpack-pageLoadMetrics', './test/scripts/jenkins_xpack_page_load_metrics.sh')) - } - - if (config.savedObjectsFieldMetrics) { - task(kibanaPipeline.functionalTestProcess('xpack-savedObjectsFieldMetrics', './test/scripts/jenkins_xpack_saved_objects_field_metrics.sh')) - } - - whenChanged(['x-pack/plugins/security_solution/', 'x-pack/test/security_solution_cypress/']) { - task(kibanaPipeline.functionalTestProcess('xpack-securitySolutionCypress', './test/scripts/jenkins_security_solution_cypress.sh')) - } - } -} - -return this diff --git a/vars/withTaskQueue.groovy b/vars/withTaskQueue.groovy deleted file mode 100644 index 8132d6264744f..0000000000000 --- a/vars/withTaskQueue.groovy +++ /dev/null @@ -1,154 +0,0 @@ -import groovy.transform.Field - -public static @Field TASK_QUEUES = [:] -public static @Field TASK_QUEUES_COUNTER = 0 - -/** - withTaskQueue creates a queue of "tasks" (just plain closures to execute), and executes them with your desired level of concurrency. - This way, you can define, for example, 40 things that need to execute, then only allow 10 of them to execute at once. - - Each "process" will execute in a separate, unique, empty directory. - If you want each process to have a bootstrapped kibana repo, check out kibanaPipeline.withCiTaskQueue - - Using the queue currently requires an agent/worker. - - Usage: - - withTaskQueue(parallel: 10) { - task { print "This is a task" } - - // This is the same as calling task() multiple times - tasks([ { print "Another task" }, { print "And another task" } ]) - - // Tasks can queue up subsequent tasks - task { - buildThing() - task { print "I depend on buildThing()" } - } - } - - You can also define a setup task that each process should execute one time before executing tasks: - withTaskQueue(parallel: 10, setup: { sh "my-setup-scrupt.sh" }) { - ... - } - -*/ -def call(Map options = [:], Closure closure) { - def config = [ parallel: 10 ] + options - def counter = ++TASK_QUEUES_COUNTER - - // We're basically abusing withEnv() to create a "scope" for all steps inside of a withTaskQueue block - // This way, we could have multiple task queue instances in the same pipeline - withEnv(["TASK_QUEUE_ID=${counter}"]) { - withTaskQueue.TASK_QUEUES[env.TASK_QUEUE_ID] = [ - tasks: [], - tmpFile: sh(script: 'mktemp', returnStdout: true).trim() - ] - - closure.call() - - def processesExecuting = 0 - def processes = [:] - def iterationId = 0 - - for(def i = 1; i <= config.parallel; i++) { - def j = i - processes["task-queue-process-${j}"] = { - catchErrors { - withEnv([ - "TASK_QUEUE_PROCESS_ID=${j}", - "TASK_QUEUE_ITERATION_ID=${++iterationId}" - ]) { - dir("${WORKSPACE}/parallel/${j}/kibana") { - if (config.setup) { - config.setup.call(j) - } - - def isDone = false - while(!isDone) { // TODO some kind of timeout? - catchErrors { - if (!getTasks().isEmpty()) { - processesExecuting++ - catchErrors { - def task - try { - task = getTasks().pop() - } catch (java.util.NoSuchElementException ex) { - return - } - - task.call() - } - processesExecuting-- - // If a task finishes, and no new tasks were queued up, and nothing else is executing - // Then all of the processes should wake up and exit - if (processesExecuting < 1 && getTasks().isEmpty()) { - taskNotify() - } - return - } - - if (processesExecuting > 0) { - taskSleep() - return - } - - // Queue is empty, no processes are executing - isDone = true - } - } - } - } - } - } - } - parallel(processes) - } -} - -// If we sleep in a loop using Groovy code, Pipeline Steps is flooded with Sleep steps -// So, instead, we just watch a file and `touch` it whenever something happens that could modify the queue -// There's a 20 minute timeout just in case something goes wrong, -// in which case this method will get called again if the process is actually supposed to be waiting. -def taskSleep() { - sh(script: """#!/bin/bash - TIMESTAMP=\$(date '+%s' -d "0 seconds ago") - for (( i=1; i<=240; i++ )) - do - if [ "\$(stat -c %Y '${getTmpFile()}')" -ge "\$TIMESTAMP" ] - then - break - else - sleep 5 - if [[ \$i == 240 ]]; then - echo "Waited for new tasks for 20 minutes, exiting in case something went wrong" - fi - fi - done - """, label: "Waiting for new tasks...") -} - -// Used to let the task queue processes know that either a new task has been queued up, or work is complete -def taskNotify() { - sh "touch '${getTmpFile()}'" -} - -def getTasks() { - return withTaskQueue.TASK_QUEUES[env.TASK_QUEUE_ID].tasks -} - -def getTmpFile() { - return withTaskQueue.TASK_QUEUES[env.TASK_QUEUE_ID].tmpFile -} - -def addTask(Closure closure) { - getTasks() << closure - taskNotify() -} - -def addTasks(List closures) { - closures.reverse().each { - getTasks() << it - } - taskNotify() -} diff --git a/vars/workers.groovy b/vars/workers.groovy index 2e94ce12f34c0..8b7e8525a7ce3 100644 --- a/vars/workers.groovy +++ b/vars/workers.groovy @@ -13,8 +13,6 @@ def label(size) { return 'docker && tests-l' case 'xl': return 'docker && tests-xl' - case 'xl-highmem': - return 'docker && tests-xl-highmem' case 'xxl': return 'docker && tests-xxl' } @@ -57,11 +55,6 @@ def base(Map params, Closure closure) { } } - sh( - script: "mkdir -p ${env.WORKSPACE}/tmp", - label: "Create custom temp directory" - ) - def checkoutInfo = [:] if (config.scm) { @@ -96,7 +89,6 @@ def base(Map params, Closure closure) { "PR_AUTHOR=${env.ghprbPullAuthorLogin ?: ''}", "TEST_BROWSER_HEADLESS=1", "GIT_BRANCH=${checkoutInfo.branch}", - "TMPDIR=${env.WORKSPACE}/tmp", // For Chrome and anything else that respects it ]) { withCredentials([ string(credentialsId: 'vault-addr', variable: 'VAULT_ADDR'), @@ -175,9 +167,7 @@ def parallelProcesses(Map params) { sleep(delay) } - withEnv(["CI_PARALLEL_PROCESS_NUMBER=${processNumber}"]) { - processClosure() - } + processClosure(processNumber) } } diff --git a/x-pack/plugins/canvas/.storybook/storyshots.test.js b/x-pack/plugins/canvas/.storybook/storyshots.test.js index e3217ad4dbe58..b9fe0914b3698 100644 --- a/x-pack/plugins/canvas/.storybook/storyshots.test.js +++ b/x-pack/plugins/canvas/.storybook/storyshots.test.js @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import fs from 'fs'; import path from 'path'; import moment from 'moment'; import 'moment-timezone'; @@ -77,12 +76,6 @@ import { RenderedElement } from '../shareable_runtime/components/rendered_elemen jest.mock('../shareable_runtime/components/rendered_element'); RenderedElement.mockImplementation(() => 'RenderedElement'); -// Some of the code requires that this directory exists, but the tests don't actually require any css to be present -const cssDir = path.resolve(__dirname, '../../../../built_assets/css'); -if (!fs.existsSync(cssDir)) { - fs.mkdirSync(cssDir, { recursive: true }); -} - addSerializer(styleSheetSerializer); // Initialize Storyshots and build the Jest Snapshots From d431f939455eec03cc46e9dd34bb4fdda1db8831 Mon Sep 17 00:00:00 2001 From: EamonnTP Date: Wed, 8 Jul 2020 21:20:51 +0100 Subject: [PATCH 27/38] Removing uptime guide (#71124) --- docs/uptime-guide/alerting.asciidoc | 33 -------- docs/uptime-guide/app-overview.asciidoc | 70 ----------------- docs/uptime-guide/certificates.asciidoc | 15 ---- docs/uptime-guide/deployment-arch.asciidoc | 27 ------- docs/uptime-guide/images/cert-exp.png | Bin 94628 -> 0 bytes .../uptime-guide/images/certificates-page.png | Bin 572166 -> 0 bytes docs/uptime-guide/images/check-history.png | Bin 368356 -> 0 bytes docs/uptime-guide/images/create-alert.png | Bin 47693 -> 0 bytes .../uptime-guide/images/crosshair-example.png | Bin 157504 -> 0 bytes docs/uptime-guide/images/filter-bar.png | Bin 39097 -> 0 bytes docs/uptime-guide/images/indices.png | Bin 55262 -> 0 bytes docs/uptime-guide/images/monitor-charts.png | Bin 149018 -> 0 bytes docs/uptime-guide/images/monitor-list.png | Bin 407195 -> 0 bytes .../images/monitor-status-alert.png | Bin 131344 -> 0 bytes .../images/observability_integrations.png | Bin 453636 -> 0 bytes docs/uptime-guide/images/settings.png | Bin 172368 -> 0 bytes docs/uptime-guide/images/snapshot-view.png | Bin 113106 -> 0 bytes docs/uptime-guide/images/status-bar.png | Bin 148611 -> 0 bytes docs/uptime-guide/images/tls-alert.png | Bin 122285 -> 0 bytes .../images/uptime-multi-deployment.png | Bin 26556 -> 0 bytes docs/uptime-guide/images/uptime-overview.png | Bin 322479 -> 0 bytes docs/uptime-guide/images/uptime-setup.png | Bin 411764 -> 0 bytes .../images/uptime-simple-deployment.png | Bin 19101 -> 0 bytes docs/uptime-guide/index.asciidoc | 22 ------ docs/uptime-guide/install.asciidoc | 74 ------------------ docs/uptime-guide/monitor.asciidoc | 59 -------------- docs/uptime-guide/overview.asciidoc | 57 -------------- docs/uptime-guide/settings.asciidoc | 51 ------------ 28 files changed, 408 deletions(-) delete mode 100644 docs/uptime-guide/alerting.asciidoc delete mode 100644 docs/uptime-guide/app-overview.asciidoc delete mode 100644 docs/uptime-guide/certificates.asciidoc delete mode 100644 docs/uptime-guide/deployment-arch.asciidoc delete mode 100644 docs/uptime-guide/images/cert-exp.png delete mode 100644 docs/uptime-guide/images/certificates-page.png delete mode 100644 docs/uptime-guide/images/check-history.png delete mode 100644 docs/uptime-guide/images/create-alert.png delete mode 100644 docs/uptime-guide/images/crosshair-example.png delete mode 100644 docs/uptime-guide/images/filter-bar.png delete mode 100644 docs/uptime-guide/images/indices.png delete mode 100644 docs/uptime-guide/images/monitor-charts.png delete mode 100644 docs/uptime-guide/images/monitor-list.png delete mode 100644 docs/uptime-guide/images/monitor-status-alert.png delete mode 100644 docs/uptime-guide/images/observability_integrations.png delete mode 100644 docs/uptime-guide/images/settings.png delete mode 100644 docs/uptime-guide/images/snapshot-view.png delete mode 100644 docs/uptime-guide/images/status-bar.png delete mode 100644 docs/uptime-guide/images/tls-alert.png delete mode 100644 docs/uptime-guide/images/uptime-multi-deployment.png delete mode 100644 docs/uptime-guide/images/uptime-overview.png delete mode 100644 docs/uptime-guide/images/uptime-setup.png delete mode 100644 docs/uptime-guide/images/uptime-simple-deployment.png delete mode 100644 docs/uptime-guide/index.asciidoc delete mode 100644 docs/uptime-guide/install.asciidoc delete mode 100644 docs/uptime-guide/monitor.asciidoc delete mode 100644 docs/uptime-guide/overview.asciidoc delete mode 100644 docs/uptime-guide/settings.asciidoc diff --git a/docs/uptime-guide/alerting.asciidoc b/docs/uptime-guide/alerting.asciidoc deleted file mode 100644 index bf9e7693fc7a5..0000000000000 --- a/docs/uptime-guide/alerting.asciidoc +++ /dev/null @@ -1,33 +0,0 @@ -[role="xpack"] -[[uptime-alerting]] - -=== Uptime alerting - -The Uptime app integrates with Kibana's {kibana-ref}/alerting-getting-started.html[alerting and actions] -feature. It provides a set of built-in actions and Uptime specific threshold alerts for you to use -and enables central management of all alerts from {kibana-ref}/management.html[Kibana Management]. - -[role="screenshot"] -image::images/create-alert.png[Create alert] - -[float] -==== Monitor status alerts - -To receive alerts when a monitor goes down, use the alerting menu at the top of the -overview page. Use a query in the alert flyout to determine which monitors to check -with your alert. If you already have a query in the overview page search bar it will -be carried over into this box. - -[role="screenshot"] -image::images/monitor-status-alert.png[Create monitor status alert flyout] - -[float] -==== TLS alerts - -Uptime also provides the ability to create an alert that will notify you when one or -more of your monitors have a TLS certificate that will expire within some threshold, -or when its age exceeds a limit. The values for these thresholds are configurable on -the <>. - -[role="screenshot"] -image::images/tls-alert.png[Create TLS alert flyout] diff --git a/docs/uptime-guide/app-overview.asciidoc b/docs/uptime-guide/app-overview.asciidoc deleted file mode 100644 index 692489a7ad311..0000000000000 --- a/docs/uptime-guide/app-overview.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] -[[uptime-app]] -== Uptime app - -The Uptime app in {kib} enables you to monitor the status of network endpoints via HTTP/S, TCP, and ICMP. -You can explore endpoint status over time, drill down into specific monitors, -and view a high-level snapshot of your environment at any point in time. - -[role="screenshot"] -image::images/uptime-overview.png[Uptime app overview] - -[role="xpack"] -[[uptime-app-overview]] -=== Overview - -The Uptime overview helps you quickly identify and diagnose outages and -other connectivity issues within your network or environment. You can use the date range -selection that is global to the Uptime app, to highlight -an absolute date range, or a relative one, similar to other areas of {kib}. - -[float] -=== Filter bar - -The Filter bar enables you to quickly view specific groups of monitors, or even -an individual monitor if you have defined many. - -This control allows you to use automated filter options, as well as input custom filter -text to select specific monitors by field, URL, ID, and other attributes. - -[role="screenshot"] -image::images/filter-bar.png[Filter bar] - -[float] -=== Snapshot panel - -The Snapshot panel displays the overall -status of the environment you're monitoring or a subset of those monitors. -You can see the total number of detected monitors within the selected -Uptime date range, along with the number of monitors -in an `up` or `down` state, which is based on the last check reported by Heartbeat -for each monitor. - -Next to the counts, there is a histogram displaying the change over time throughout the -selected date range. - -[role="screenshot"] -image::images/snapshot-view.png[Snapshot view] - -[float] -=== Monitor list - -Information about individual monitors is displayed in the monitor list and provides a quick -way to navigate to a more in-depth visualization for interesting hosts or endpoints. - -The information displayed includes the recent status of a host or endpoint, when the monitor was last checked, its -ID and URL, and its IP address. There is also sparkline showing its check status over time. - -[role="screenshot"] -image::images/monitor-list.png[Monitor list] - -[float] -=== Observability integrations - -The Monitor list also contains a menu of available integrations. When Uptime detects Kubernetes or -Docker related host information, it provides links to open the Metrics app or Logs app pre-filtered -for this host. Additionally, to help you quickly determine if these solutions contain data relevant to you, -this feature contains links to filter the other views on the host's IP address. - -[role="screenshot"] -image::images/observability_integrations.png[Observability integrations] diff --git a/docs/uptime-guide/certificates.asciidoc b/docs/uptime-guide/certificates.asciidoc deleted file mode 100644 index 58db91aa080eb..0000000000000 --- a/docs/uptime-guide/certificates.asciidoc +++ /dev/null @@ -1,15 +0,0 @@ -[role="xpack"] -[[uptime-certificates]] - -=== Certificates - -The certificates page enables you to visualize TLS certificate data in your indices. In addition to the -common name, associated monitors, issuer information, and SHA fingerprints, Uptime also assigns a status -derived from the threshold values in the <>. - -Several of the columns on this page are sortable. You can use the search bar at the top of the view -to find values in most of the TLS-related fields in your Uptime indices. Additionally, using the `Alerts` -dropdown at the top of the page you can create a TLS alert. - -[role="screenshot"] -image::images/certificates-page.png[Certificates] diff --git a/docs/uptime-guide/deployment-arch.asciidoc b/docs/uptime-guide/deployment-arch.asciidoc deleted file mode 100644 index c1b2f596c6665..0000000000000 --- a/docs/uptime-guide/deployment-arch.asciidoc +++ /dev/null @@ -1,27 +0,0 @@ -[role="xpack"] -[[uptime-deployment-arch]] -== Deployment Architecture - -There are multiple ways to deploy Uptime and Heartbeat. -Use the information in this section to determine the best deployment for you. -A guiding principle is that when an outage takes down the service being monitored it should not also take down Heartbeat. -You want Heartbeat to be functioning even when your service is not, so the guidelines here help you maximize this possibility. - -Heartbeat is commonly run as a centralized service within a data center. -While it is possible to run it as a separate "sidecar" process paired with each process/container, we recommend against it. -Running Heartbeat centrally ensures you will still be able to see monitoring data in the event of an overloaded, disconnected, or otherwise malfunctioning server. - -For further redundancy, you may want to deploy multiple Heartbeats across geographic and network boundaries to provide more data. -To do so, specify Heartbeat's observer {heartbeat-ref}/configuration-observer-options.html[geo options]. - -Some examples might be: - -* **A site served from a content delivery network (CDN) with points of presence (POPs) around the globe:** -To check if your site is reachable via CDN POPS, you may want to have multiple Heartbeat instances at different data centers around the world. -* **A service within a single data center that is accessed across multiple VPNs:** -Set up one Heartbeat instance within the VPN the service operates from, and another within an additional VPN that users access the service from. -Having both instances helps pinpoint network errors in the event of an outage. -* **A single service running primarily in a US east coast data center, with a hot failover located in a US west coast data center:** -In each data center, run a Heartbeat instance that checks both the local copy of the service and its counterpart across the country. -Set up two monitors in each region, one for the local service and one for the remote service. -In the event of a data center failure it will be immediately apparent if the service had a connectivity issue to the outside world or if the failure was only internal. diff --git a/docs/uptime-guide/images/cert-exp.png b/docs/uptime-guide/images/cert-exp.png deleted file mode 100644 index cd87668db96dd3f784945dc1caab4c0435f7c71c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94628 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

OZ4ZZ_ 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 diff --git a/docs/uptime-guide/images/certificates-page.png b/docs/uptime-guide/images/certificates-page.png deleted file mode 100644 index 598aae982cd6aad75b642e4e3e8bfbf82e7d494a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 572166 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%0DeP&Ua_=( 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%0D&3Rsr!NIP#L4?)H)*9lQ(LBB8Akzi7G< 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�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 z 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 diff --git a/docs/uptime-guide/images/check-history.png b/docs/uptime-guide/images/check-history.png deleted file mode 100644 index aac5efd9b91d391e1b854a28b2d2c528ed33cac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368356 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

yt<1y&(hm-C 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

$d;C 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 vy?_4!^Y_1g^2 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

Q-w6_?{cEO$GP#bPIDaMubB!R7Pr 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�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 diff --git a/docs/uptime-guide/images/monitor-charts.png b/docs/uptime-guide/images/monitor-charts.png deleted file mode 100644 index 522f34662657ee925447bfb0957b340ee6f082d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149018 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 F{}0~)oACeu diff --git a/docs/uptime-guide/images/monitor-list.png b/docs/uptime-guide/images/monitor-list.png deleted file mode 100644 index c9a8eccf01f6e34170df8b41068a6f3b4a50de8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407195 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 pqI_|kg$Mkp0NSEY`n$&R1F zl8x5zLiGXY`ZFJ%a-l)cGO1MK8OH6Zu7NRteV_glqqO3RBAGkVn(|FShP`B>UkPSt zIkzfLc`NibogQ!)c)vO@M}q1}#tMuT>z2C+gD$D0^bRHQt1vO0g`-qm-J5S8q?_zz z3^n!*+Gg9uH`{ETBT&s-PCEFkt97k=gSa!-zG3Jj$NjQO3Q%_LtTXPH9!8a$bT(C`EcBl5ZWlN&@9dmRh(h6CQ&p|2(KAEh4R*I*zcaqcXM z))#zD@kJ+TE#5*4cC7l*D!~4p9Fn5W$uE50ZX>out~6@X8K@7#;PXxWF*NsdiP$&T zPF*%8dddWR+O+v-drEQGj$J9GhVrp)tWL38JvU3{DVP%Pe!Ew%f4x`t1c7p5IIb@A$s@2D zyr-}960I(VY?ip53~jCnkChi!4;SfPmG`JYIU2r7`uj+NXPfBU=@YUmy1oN><7*qT z#BWk(n!_rrcSdPYMyXBly8Kg}EKiHBu&eivFYXi-!?37^+Vpf;|gtZ z7OWI{ke?2p=Pw&JH<#>xjn+JFQP=a$Qp1Z6d>_ss=`7ncdXm|xQ0Sm)cq^-y=9|kw zbD}~;Q~92HJVOL`90)6`E4ZOLxd6YRB$UkWj0Ff`(y3wN`r9T5r0sIlAR^xk__{lrg2#zJZ>i zZJqv^5+PMPbNsbd4h*N0W0SPY>u+VNinsP92q)esLp1h|_52*^3lW&{G$?=dxaSh^ zY^P?)kqifWa?NPFOKnsL`@%T-f6UK37+^h_r}}?rpZ>viL;lvTjG@ZY4ZA2R^$6d| zZ6E|vhvj9hLq5zoz0{QGP;$vQVdUC~R?D}5298Z1B?j~w≶86LLb7^1enK*qNvm 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%0Ai-OmGB{kBByu_7PXihjPwa>*QK~afU|Gixkot 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¨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

Nk_$Q2T(K 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⩔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 z℘F!2J4bSK1C=Ljr2Ay|dknREzP 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

    2g%TYK3m^oPc(k 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 G$o~LM7SqlE diff --git a/docs/uptime-guide/images/settings.png b/docs/uptime-guide/images/settings.png deleted file mode 100644 index d19b7f842ea68606bbecd7ba4d2e7cb99efcf248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172368 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

    B1E;C1u+}fFAi_1+1qzP=H=hjt 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

    (Gh@W1O`o(#R}{%h!#k@vh!wnW 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