From 3d06a623eded1488a1d1af1c8e152974cc385965 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Wed, 4 Mar 2020 10:24:03 +0100 Subject: [PATCH 1/9] Add Redis Enterprise to home tutorial (#59136) --- .../redisenterprise_metrics/screenshot.png | Bin 0 -> 964042 bytes .../redisenterprise_metrics/index.ts | 72 ++++++++++++++++++ src/plugins/home/server/tutorials/register.ts | 2 + 3 files changed, 74 insertions(+) create mode 100644 src/legacy/core_plugins/kibana/public/home/tutorial_resources/redisenterprise_metrics/screenshot.png create mode 100644 src/plugins/home/server/tutorials/redisenterprise_metrics/index.ts diff --git a/src/legacy/core_plugins/kibana/public/home/tutorial_resources/redisenterprise_metrics/screenshot.png b/src/legacy/core_plugins/kibana/public/home/tutorial_resources/redisenterprise_metrics/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..cc6ef0ce509ebb555773dafe64811cfcc44d2105 GIT binary patch literal 964042 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

$k(FSAb_*0{nTd2KvlsjS79B#&>%!T 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

A!$IbU?$H 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

K}+R(ZQ;CWYTBXx$@# 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 eAAfZBD(ZfGyPD?l)NUB~BXd Date: Wed, 4 Mar 2020 10:35:05 +0100 Subject: [PATCH 2/9] activates SIEM Cypress tests in Jenkins (#59181) Co-authored-by: Elastic Machine --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 85502369b07be..742aec1d4e7ab 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -40,6 +40,7 @@ kibanaPipeline(timeoutMinutes: 135) { 'xpack-ciGroup9': kibanaPipeline.xpackCiGroupProcess(9), 'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10), 'xpack-accessibility': kibanaPipeline.functionalTestProcess('xpack-accessibility', './test/scripts/jenkins_xpack_accessibility.sh'), + 'xpack-siemCypress': kibanaPipeline.functionalTestProcess('xpack-siemCypress', './test/scripts/jenkins_siem_cypress.sh'), // 'xpack-visualRegression': kibanaPipeline.functionalTestProcess('xpack-visualRegression', './test/scripts/jenkins_xpack_visual_regression.sh'), ]), ]) From 4ce66c68931d950e4dfd8d3d27564ac0fe8bdb0a Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Wed, 4 Mar 2020 11:02:49 +0100 Subject: [PATCH 3/9] [ML] Validate manual model memory input (#59056) * [ML] validate mml based on estimated value * [ML] better memoize * [ML] memoryInputValidator unit tests * [ML] cache mml errors * [ML] prevent override * [ML] fix validators, add unit tests * [ML] ignore typing issue with numeral * [ML] fix validateMinMML * [ML] fix useCreateAnalyticsForm test * [ML] setEstimatedModelMemoryLimit to the fallback value in case of an error --- .../plugins/ml/common/util/validators.test.ts | 28 +++++- .../plugins/ml/common/util/validators.ts | 24 ++++- .../create_analytics_form.tsx | 34 ++++--- .../use_create_analytics_form/actions.ts | 5 +- .../use_create_analytics_form/reducer.test.ts | 30 +++++- .../use_create_analytics_form/reducer.ts | 93 +++++++++++++++++-- .../hooks/use_create_analytics_form/state.ts | 4 + .../use_create_analytics_form.ts | 5 + 8 files changed, 197 insertions(+), 26 deletions(-) diff --git a/x-pack/legacy/plugins/ml/common/util/validators.test.ts b/x-pack/legacy/plugins/ml/common/util/validators.test.ts index 8b55e955a3953..7a8b28c14a4a4 100644 --- a/x-pack/legacy/plugins/ml/common/util/validators.test.ts +++ b/x-pack/legacy/plugins/ml/common/util/validators.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { maxLengthValidator } from './validators'; +import { maxLengthValidator, memoryInputValidator } from './validators'; describe('maxLengthValidator', () => { test('should allow a valid input', () => { @@ -20,3 +20,29 @@ describe('maxLengthValidator', () => { }); }); }); + +describe('memoryInputValidator', () => { + test('should detect missing units', () => { + expect(memoryInputValidator()('10')).toEqual({ + invalidUnits: { + allowedUnits: 'B, KB, MB, GB, TB, PB', + }, + }); + }); + + test('should accept valid input', () => { + expect(memoryInputValidator()('100PB')).toEqual(null); + }); + + test('should accept valid input with custom allowed units', () => { + expect(memoryInputValidator(['B', 'KB'])('100KB')).toEqual(null); + }); + + test('should detect not allowed units', () => { + expect(memoryInputValidator(['B', 'KB'])('100MB')).toEqual({ + invalidUnits: { + allowedUnits: 'B, KB', + }, + }); + }); +}); diff --git a/x-pack/legacy/plugins/ml/common/util/validators.ts b/x-pack/legacy/plugins/ml/common/util/validators.ts index 7e0dd624a52e0..304d9a0029540 100644 --- a/x-pack/legacy/plugins/ml/common/util/validators.ts +++ b/x-pack/legacy/plugins/ml/common/util/validators.ts @@ -4,6 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ +import { ALLOWED_DATA_UNITS } from '../constants/validation'; + /** * Provides a validator function for maximum allowed input length. * @param maxLength Maximum length allowed. @@ -44,8 +46,8 @@ export function patternValidator( * @param validators */ export function composeValidators( - ...validators: Array<(value: string) => { [key: string]: any } | null> -): (value: string) => { [key: string]: any } | null { + ...validators: Array<(value: any) => { [key: string]: any } | null> +): (value: any) => { [key: string]: any } | null { return value => { const validationResult = validators.reduce((acc, validator) => { return { @@ -56,3 +58,21 @@ export function composeValidators( return Object.keys(validationResult).length > 0 ? validationResult : null; }; } + +export function requiredValidator() { + return (value: any) => { + return value === '' || value === undefined || value === null ? { required: true } : null; + }; +} + +export function memoryInputValidator(allowedUnits = ALLOWED_DATA_UNITS) { + return (value: any) => { + if (typeof value !== 'string' || value === '') { + return null; + } + const regexp = new RegExp(`\\d+(${allowedUnits.join('|')})$`, 'i'); + return regexp.test(value.trim()) + ? null + : { invalidUnits: { allowedUnits: allowedUnits.join(', ') } }; + }; +} diff --git a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx index 338fa1e4ac328..70722d9cb953a 100644 --- a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx +++ b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, FC, useEffect } from 'react'; +import React, { Fragment, FC, useEffect, useMemo } from 'react'; import { EuiComboBox, @@ -36,7 +36,7 @@ import { JOB_ID_MAX_LENGTH } from '../../../../../../../common/constants/validat import { Messages } from './messages'; import { JobType } from './job_type'; import { JobDescriptionInput } from './job_description'; -import { mmlUnitInvalidErrorMessage } from '../../hooks/use_create_analytics_form/reducer'; +import { getModelMemoryLimitErrors } from '../../hooks/use_create_analytics_form/reducer'; import { IndexPattern, indexPatterns, @@ -49,7 +49,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta services: { docLinks }, } = useMlKibana(); const { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } = docLinks; - const { setFormState } = actions; + const { setFormState, setEstimatedModelMemoryLimit } = actions; const mlContext = useMlContext(); const { form, indexPatternsMap, isAdvancedEditorEnabled, isJobCreated, requestMessages } = state; @@ -77,7 +77,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta loadingFieldOptions, maxDistinctValuesError, modelMemoryLimit, - modelMemoryLimitUnitValid, + modelMemoryLimitValidationResult, previousJobType, previousSourceIndex, sourceIndex, @@ -89,6 +89,10 @@ export const CreateAnalyticsForm: FC = ({ actions, sta } = form; const characterList = indexPatterns.ILLEGAL_CHARACTERS_VISIBLE.join(', '); + const mmlErrors = useMemo(() => getModelMemoryLimitErrors(modelMemoryLimitValidationResult), [ + modelMemoryLimitValidationResult, + ]); + const isJobTypeWithDepVar = jobType === JOB_TYPES.REGRESSION || jobType === JOB_TYPES.CLASSIFICATION; @@ -154,6 +158,9 @@ export const CreateAnalyticsForm: FC = ({ actions, sta const resp: DfAnalyticsExplainResponse = await ml.dataFrameAnalytics.explainDataFrameAnalytics( jobConfig ); + const expectedMemoryWithoutDisk = resp.memory_estimation?.expected_memory_without_disk; + + setEstimatedModelMemoryLimit(expectedMemoryWithoutDisk); // If sourceIndex has changed load analysis field options again if (previousSourceIndex !== sourceIndex || previousJobType !== jobType) { @@ -168,7 +175,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta } setFormState({ - modelMemoryLimit: resp.memory_estimation?.expected_memory_without_disk, + ...(!modelMemoryLimit ? { modelMemoryLimit: expectedMemoryWithoutDisk } : {}), excludesOptions: analyzedFieldsOptions, loadingFieldOptions: false, fieldOptionsFetchFail: false, @@ -176,7 +183,7 @@ export const CreateAnalyticsForm: FC = ({ actions, sta }); } else { setFormState({ - modelMemoryLimit: resp.memory_estimation?.expected_memory_without_disk, + ...(!modelMemoryLimit ? { modelMemoryLimit: expectedMemoryWithoutDisk } : {}), }); } } catch (e) { @@ -189,14 +196,16 @@ export const CreateAnalyticsForm: FC = ({ actions, sta ) { errorMessage = e.message; } + const fallbackModelMemoryLimit = + jobType !== undefined + ? DEFAULT_MODEL_MEMORY_LIMIT[jobType] + : DEFAULT_MODEL_MEMORY_LIMIT.outlier_detection; + setEstimatedModelMemoryLimit(fallbackModelMemoryLimit); setFormState({ fieldOptionsFetchFail: true, maxDistinctValuesError: errorMessage, loadingFieldOptions: false, - modelMemoryLimit: - jobType !== undefined - ? DEFAULT_MODEL_MEMORY_LIMIT[jobType] - : DEFAULT_MODEL_MEMORY_LIMIT.outlier_detection, + modelMemoryLimit: fallbackModelMemoryLimit, }); } }, 400); @@ -642,7 +651,8 @@ export const CreateAnalyticsForm: FC = ({ actions, sta label={i18n.translate('xpack.ml.dataframe.analytics.create.modelMemoryLimitLabel', { defaultMessage: 'Model memory limit', })} - helpText={!modelMemoryLimitUnitValid && mmlUnitInvalidErrorMessage} + isInvalid={modelMemoryLimitValidationResult !== null} + error={mmlErrors} > = ({ actions, sta disabled={isJobCreated} value={modelMemoryLimit || ''} onChange={e => setFormState({ modelMemoryLimit: e.target.value })} - isInvalid={modelMemoryLimit === ''} + isInvalid={modelMemoryLimitValidationResult !== null} data-test-subj="mlAnalyticsCreateJobFlyoutModelMemoryInput" /> diff --git a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/actions.ts b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/actions.ts index a763bd9639bf3..70228f0238fda 100644 --- a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/actions.ts +++ b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/actions.ts @@ -24,6 +24,7 @@ export enum ACTION { SET_JOB_CONFIG, SET_JOB_IDS, SWITCH_TO_ADVANCED_EDITOR, + SET_ESTIMATED_MODEL_MEMORY_LIMIT, } export type Action = @@ -59,7 +60,8 @@ export type Action = } | { type: ACTION.SET_IS_MODAL_VISIBLE; isModalVisible: State['isModalVisible'] } | { type: ACTION.SET_JOB_CONFIG; payload: State['jobConfig'] } - | { type: ACTION.SET_JOB_IDS; jobIds: State['jobIds'] }; + | { type: ACTION.SET_JOB_IDS; jobIds: State['jobIds'] } + | { type: ACTION.SET_ESTIMATED_MODEL_MEMORY_LIMIT; value: State['estimatedModelMemoryLimit'] }; // Actions wrapping the dispatcher exposed by the custom hook export interface ActionDispatchers { @@ -73,4 +75,5 @@ export interface ActionDispatchers { setJobConfig: (payload: State['jobConfig']) => void; startAnalyticsJob: () => void; switchToAdvancedEditor: () => void; + setEstimatedModelMemoryLimit: (value: State['estimatedModelMemoryLimit']) => void; } diff --git a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.test.ts b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.test.ts index 7ea2f74908e0e..5c989f7248a9e 100644 --- a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.test.ts +++ b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.test.ts @@ -9,7 +9,7 @@ import { merge } from 'lodash'; import { DataFrameAnalyticsConfig } from '../../../../common'; import { ACTION } from './actions'; -import { reducer, validateAdvancedEditor } from './reducer'; +import { reducer, validateAdvancedEditor, validateMinMML } from './reducer'; import { getInitialState, JOB_TYPES } from './state'; type SourceIndex = DataFrameAnalyticsConfig['source']['index']; @@ -41,13 +41,19 @@ describe('useCreateAnalyticsForm', () => { const initialState = getInitialState(); expect(initialState.isValid).toBe(false); - const updatedState = reducer(initialState, { + const stateWithEstimatedMml = reducer(initialState, { + type: ACTION.SET_ESTIMATED_MODEL_MEMORY_LIMIT, + value: '182222kb', + }); + + const updatedState = reducer(stateWithEstimatedMml, { type: ACTION.SET_FORM_STATE, payload: { destinationIndex: 'the-destination-index', jobId: 'the-analytics-job-id', sourceIndex: 'the-source-index', jobType: JOB_TYPES.OUTLIER_DETECTION, + modelMemoryLimit: '200mb', }, }); expect(updatedState.isValid).toBe(true); @@ -146,3 +152,23 @@ describe('useCreateAnalyticsForm', () => { ).toBe(false); }); }); + +describe('validateMinMML', () => { + test('should detect a lower value', () => { + expect(validateMinMML('10mb')('100kb')).toEqual({ + min: { minValue: '10mb', actualValue: '100kb' }, + }); + }); + + test('should allow a bigger value', () => { + expect(validateMinMML('10mb')('1GB')).toEqual(null); + }); + + test('should allow the same value', () => { + expect(validateMinMML('1024mb')('1gb')).toEqual(null); + }); + + test('should ignore empty parameters', () => { + expect(validateMinMML((undefined as unknown) as string)('')).toEqual(null); + }); +}); diff --git a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts index f35fa6aa2f451..42c2413607570 100644 --- a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts +++ b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/reducer.ts @@ -5,6 +5,9 @@ */ import { i18n } from '@kbn/i18n'; +import { memoize } from 'lodash'; +// @ts-ignore +import numeral from '@elastic/numeral'; import { isValidIndexName } from '../../../../../../../common/util/es_utils'; import { Action, ACTION } from './actions'; @@ -13,7 +16,12 @@ import { isJobIdValid, validateModelMemoryLimitUnits, } from '../../../../../../../common/util/job_utils'; -import { maxLengthValidator } from '../../../../../../../common/util/validators'; +import { + composeValidators, + maxLengthValidator, + memoryInputValidator, + requiredValidator, +} from '../../../../../../../common/util/validators'; import { JOB_ID_MAX_LENGTH, ALLOWED_DATA_UNITS, @@ -37,6 +45,38 @@ export const mmlUnitInvalidErrorMessage = i18n.translate( } ); +/** + * Returns the list of model memory limit errors based on validation result. + * @param mmlValidationResult + */ +export function getModelMemoryLimitErrors(mmlValidationResult: any): string[] | null { + if (mmlValidationResult === null) { + return null; + } + + return Object.keys(mmlValidationResult).reduce((acc, errorKey) => { + if (errorKey === 'min') { + acc.push( + i18n.translate('xpack.ml.dataframe.analytics.create.modelMemoryUnitsMinError', { + defaultMessage: 'Model memory limit cannot be lower than {mml}', + values: { + mml: mmlValidationResult.min.minValue, + }, + }) + ); + } + if (errorKey === 'invalidUnits') { + acc.push( + i18n.translate('xpack.ml.dataframe.analytics.create.modelMemoryUnitsInvalidError', { + defaultMessage: 'Model memory limit data unit unrecognized. It must be {str}', + values: { str: mmlAllowedUnitsStr }, + }) + ); + } + return acc; + }, [] as string[]); +} + const getSourceIndexString = (state: State) => { const { jobConfig } = state; @@ -222,6 +262,39 @@ export const validateAdvancedEditor = (state: State): State => { return state; }; +/** + * Validates provided MML isn't lower than the estimated one. + */ +export function validateMinMML(estimatedMml: string) { + return (mml: string) => { + if (!mml || !estimatedMml) { + return null; + } + + // @ts-ignore + const mmlInBytes = numeral(mml.toUpperCase()).value(); + // @ts-ignore + const estimatedMmlInBytes = numeral(estimatedMml.toUpperCase()).value(); + + return estimatedMmlInBytes > mmlInBytes + ? { min: { minValue: estimatedMml, actualValue: mml } } + : null; + }; +} + +/** + * Result validator function for the MML. + * Re-init only if the estimated mml has been changed. + */ +const mmlValidator = memoize((estimatedMml: string) => + composeValidators(requiredValidator(), validateMinMML(estimatedMml), memoryInputValidator()) +); + +const validateMml = memoize( + (estimatedMml: string, mml: string | undefined) => mmlValidator(estimatedMml)(mml), + (...args: any) => args.join('_') +); + const validateForm = (state: State): State => { const { jobIdEmpty, @@ -238,22 +311,21 @@ const validateForm = (state: State): State => { maxDistinctValuesError, modelMemoryLimit, } = state.form; + const { estimatedModelMemoryLimit } = state; const jobTypeEmpty = jobType === undefined; const dependentVariableEmpty = (jobType === JOB_TYPES.REGRESSION || jobType === JOB_TYPES.CLASSIFICATION) && dependentVariable === ''; - const modelMemoryLimitEmpty = modelMemoryLimit === ''; - if (!modelMemoryLimitEmpty && modelMemoryLimit !== undefined) { - const { valid } = validateModelMemoryLimitUnits(modelMemoryLimit); - state.form.modelMemoryLimitUnitValid = valid; - } + const mmlValidationResult = validateMml(estimatedModelMemoryLimit, modelMemoryLimit); + + state.form.modelMemoryLimitValidationResult = mmlValidationResult; state.isValid = maxDistinctValuesError === undefined && !jobTypeEmpty && - state.form.modelMemoryLimitUnitValid && + !mmlValidationResult && !jobIdEmpty && jobIdValid && !jobIdExists && @@ -262,7 +334,6 @@ const validateForm = (state: State): State => { !destinationIndexNameEmpty && destinationIndexNameValid && !dependentVariableEmpty && - !modelMemoryLimitEmpty && (!destinationIndexPatternTitleExists || !createIndexPattern); return state; @@ -373,6 +444,12 @@ export function reducer(state: State, action: Action): State { isAdvancedEditorEnabled: true, jobConfig, }); + + case ACTION.SET_ESTIMATED_MODEL_MEMORY_LIMIT: + return { + ...state, + estimatedModelMemoryLimit: action.value, + }; } return state; diff --git a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts index 282f9ff45d0ee..1f23048e09d1f 100644 --- a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts +++ b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts @@ -67,6 +67,7 @@ export interface State { maxDistinctValuesError: string | undefined; modelMemoryLimit: string | undefined; modelMemoryLimitUnitValid: boolean; + modelMemoryLimitValidationResult: any; previousJobType: null | AnalyticsJobType; previousSourceIndex: EsIndexName | undefined; sourceIndex: EsIndexName; @@ -88,6 +89,7 @@ export interface State { jobConfig: DeepPartial; jobIds: DataFrameAnalyticsId[]; requestMessages: FormMessage[]; + estimatedModelMemoryLimit: string; } export const getInitialState = (): State => ({ @@ -118,6 +120,7 @@ export const getInitialState = (): State => ({ maxDistinctValuesError: undefined, modelMemoryLimit: undefined, modelMemoryLimitUnitValid: true, + modelMemoryLimitValidationResult: null, previousJobType: null, previousSourceIndex: undefined, sourceIndex: '', @@ -142,6 +145,7 @@ export const getInitialState = (): State => ({ isValid: false, jobIds: [], requestMessages: [], + estimatedModelMemoryLimit: '', }); export const getJobConfigFromFormState = ( diff --git a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts index 59474b63213a2..350b3f98d4673 100644 --- a/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts +++ b/x-pack/legacy/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts @@ -297,6 +297,10 @@ export const useCreateAnalyticsForm = (): CreateAnalyticsFormProps => { dispatch({ type: ACTION.SWITCH_TO_ADVANCED_EDITOR }); }; + const setEstimatedModelMemoryLimit = (value: State['estimatedModelMemoryLimit']) => { + dispatch({ type: ACTION.SET_ESTIMATED_MODEL_MEMORY_LIMIT, value }); + }; + const actions: ActionDispatchers = { closeModal, createAnalyticsJob, @@ -308,6 +312,7 @@ export const useCreateAnalyticsForm = (): CreateAnalyticsFormProps => { setJobConfig, startAnalyticsJob, switchToAdvancedEditor, + setEstimatedModelMemoryLimit, }; return { state, actions }; From eb40046b937e714739fd6479e5dc59a137e72c66 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Wed, 4 Mar 2020 10:14:11 +0000 Subject: [PATCH 4/9] [ML] Fixing licensing after server NP cutover (#59275) --- .../legacy/plugins/ml/common/license/index.ts | 7 + .../plugins/ml/common/license/ml_license.ts | 78 ++++++++ .../plugins/ml/public/application/app.tsx | 11 +- .../anomalies_table/anomalies_table.test.js | 2 +- .../components/navigation_menu/main_tabs.tsx | 10 +- .../navigation_menu/navigation_menu.tsx | 2 +- .../datavisualizer_selector.tsx | 2 +- .../results_links/results_links.tsx | 2 +- .../datavisualizer/index_based/page.tsx | 2 +- .../license/__tests__/check_license.js | 36 ---- .../application/license/check_license.tsx | 160 ++++++----------- .../application/license/expired_warning.tsx | 26 +++ .../ml/public/application/license/index.ts | 13 ++ .../application/license/ml_client_license.ts | 51 ++++++ .../ml/public/application/management/index.ts | 29 ++- .../application/privilege/check_privilege.ts | 2 +- .../public/application/routing/resolvers.ts | 2 +- .../routes/datavisualizer/datavisualizer.tsx | 2 +- .../routes/datavisualizer/file_based.tsx | 4 +- .../routes/datavisualizer/index_based.tsx | 2 +- .../routes/new_job/index_or_search.tsx | 2 +- .../application/routing/routes/overview.tsx | 2 +- .../routing/routes/settings/calendar_list.tsx | 2 +- .../routes/settings/calendar_new_edit.tsx | 2 +- .../routing/routes/settings/filter_list.tsx | 2 +- .../routes/settings/filter_list_new_edit.tsx | 2 +- .../routing/routes/settings/settings.tsx | 2 +- .../calendars/edit/new_calendar.test.js | 2 +- .../calendars/list/calendars_list.test.js | 2 +- .../application/util/dependency_cache.ts | 1 + x-pack/legacy/plugins/ml/public/legacy.ts | 12 +- x-pack/legacy/plugins/ml/public/plugin.ts | 3 +- .../lib/check_license/check_license.test.ts | 167 ------------------ .../server/lib/check_license/check_license.ts | 82 --------- .../check_privileges/check_privileges.test.ts | 65 ++++--- .../lib/check_privileges/check_privileges.ts | 14 +- .../lib/{check_license => license}/index.ts | 2 +- .../server/lib/license/ml_server_license.ts | 35 ++++ .../ml/server/lib/sample_data_sets/index.ts | 2 +- .../lib/sample_data_sets/sample_data_sets.ts | 41 +++-- x-pack/plugins/ml/server/plugin.ts | 62 ++----- .../plugins/ml/server/routes/annotations.ts | 9 +- .../ml/server/routes/anomaly_detectors.ts | 33 ++-- x-pack/plugins/ml/server/routes/calendars.ts | 13 +- .../ml/server/routes/data_frame_analytics.ts | 25 ++- .../ml/server/routes/data_visualizer.ts | 7 +- x-pack/plugins/ml/server/routes/datafeeds.ts | 23 ++- .../ml/server/routes/fields_service.ts | 8 +- .../ml/server/routes/file_data_visualizer.ts | 7 +- x-pack/plugins/ml/server/routes/filters.ts | 15 +- x-pack/plugins/ml/server/routes/indices.ts | 5 +- .../ml/server/routes/job_audit_messages.ts | 7 +- .../plugins/ml/server/routes/job_service.ts | 42 +++-- .../ml/server/routes/job_validation.ts | 18 +- .../license_check_pre_routing_factory.ts | 33 ---- x-pack/plugins/ml/server/routes/modules.ts | 11 +- .../ml/server/routes/notification_settings.ts | 5 +- .../ml/server/routes/results_service.ts | 13 +- x-pack/plugins/ml/server/routes/system.ts | 19 +- x-pack/plugins/ml/server/types.ts | 3 +- .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - 62 files changed, 535 insertions(+), 714 deletions(-) create mode 100644 x-pack/legacy/plugins/ml/common/license/index.ts create mode 100644 x-pack/legacy/plugins/ml/common/license/ml_license.ts delete mode 100644 x-pack/legacy/plugins/ml/public/application/license/__tests__/check_license.js create mode 100644 x-pack/legacy/plugins/ml/public/application/license/expired_warning.tsx create mode 100644 x-pack/legacy/plugins/ml/public/application/license/index.ts create mode 100644 x-pack/legacy/plugins/ml/public/application/license/ml_client_license.ts delete mode 100644 x-pack/plugins/ml/server/lib/check_license/check_license.test.ts delete mode 100644 x-pack/plugins/ml/server/lib/check_license/check_license.ts rename x-pack/plugins/ml/server/lib/{check_license => license}/index.ts (81%) create mode 100644 x-pack/plugins/ml/server/lib/license/ml_server_license.ts delete mode 100644 x-pack/plugins/ml/server/routes/license_check_pre_routing_factory.ts diff --git a/x-pack/legacy/plugins/ml/common/license/index.ts b/x-pack/legacy/plugins/ml/common/license/index.ts new file mode 100644 index 0000000000000..e901a9545897b --- /dev/null +++ b/x-pack/legacy/plugins/ml/common/license/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 { MlLicense, LicenseStatus, MINIMUM_FULL_LICENSE, MINIMUM_LICENSE } from './ml_license'; diff --git a/x-pack/legacy/plugins/ml/common/license/ml_license.ts b/x-pack/legacy/plugins/ml/common/license/ml_license.ts new file mode 100644 index 0000000000000..8b631bf6ffb46 --- /dev/null +++ b/x-pack/legacy/plugins/ml/common/license/ml_license.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Observable, Subscription } from 'rxjs'; +import { ILicense, LICENSE_CHECK_STATE } from '../../../../../plugins/licensing/common/types'; +import { PLUGIN_ID } from '../constants/app'; + +export const MINIMUM_LICENSE = 'basic'; +export const MINIMUM_FULL_LICENSE = 'platinum'; + +export interface LicenseStatus { + isValid: boolean; + isSecurityEnabled: boolean; + message?: string; +} + +export class MlLicense { + private _licenseSubscription: Subscription | null = null; + private _license: ILicense | null = null; + private _isSecurityEnabled: boolean = false; + private _hasLicenseExpired: boolean = false; + private _isMlEnabled: boolean = false; + private _isMinimumLicense: boolean = false; + private _isFullLicense: boolean = false; + private _initialized: boolean = false; + + public setup( + license$: Observable, + postInitFunctions?: Array<(lic: MlLicense) => void> + ) { + this._licenseSubscription = license$.subscribe(async license => { + const { isEnabled: securityIsEnabled } = license.getFeature('security'); + + this._license = license; + this._isSecurityEnabled = securityIsEnabled; + this._hasLicenseExpired = this._license.status === 'expired'; + this._isMlEnabled = this._license.getFeature(PLUGIN_ID).isEnabled; + this._isMinimumLicense = + this._license.check(PLUGIN_ID, MINIMUM_LICENSE).state === LICENSE_CHECK_STATE.Valid; + this._isFullLicense = + this._license.check(PLUGIN_ID, MINIMUM_FULL_LICENSE).state === LICENSE_CHECK_STATE.Valid; + + if (this._initialized === false && postInitFunctions !== undefined) { + postInitFunctions.forEach(f => f(this)); + } + this._initialized = true; + }); + } + + public unsubscribe() { + if (this._licenseSubscription !== null) { + this._licenseSubscription.unsubscribe(); + } + } + + public isSecurityEnabled() { + return this._isSecurityEnabled; + } + + public hasLicenseExpired() { + return this._hasLicenseExpired; + } + + public isMlEnabled() { + return this._isMlEnabled; + } + + public isMinimumLicense() { + return this._isMinimumLicense; + } + + public isFullLicense() { + return this._isFullLicense; + } +} diff --git a/x-pack/legacy/plugins/ml/public/application/app.tsx b/x-pack/legacy/plugins/ml/public/application/app.tsx index 3acb24ac6e173..4c956bfabecc9 100644 --- a/x-pack/legacy/plugins/ml/public/application/app.tsx +++ b/x-pack/legacy/plugins/ml/public/application/app.tsx @@ -13,15 +13,18 @@ import { AppMountParameters, CoreStart } from 'kibana/public'; import { DataPublicPluginStart } from 'src/plugins/data/public'; import { SecurityPluginSetup } from '../../../../../plugins/security/public'; +import { LicensingPluginSetup } from '../../../../../plugins/licensing/public'; import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public'; import { setDependencyCache, clearCache } from './util/dependency_cache'; +import { setLicenseCache } from './license'; import { MlRouter } from './routing'; export interface MlDependencies extends AppMountParameters { data: DataPublicPluginStart; security: SecurityPluginSetup; + licensing: LicensingPluginSetup; __LEGACY: { XSRF: string; }; @@ -36,14 +39,14 @@ const App: FC = ({ coreStart, deps }) => { setDependencyCache({ indexPatterns: deps.data.indexPatterns, timefilter: deps.data.query.timefilter, + fieldFormats: deps.data.fieldFormats, + autocomplete: deps.data.autocomplete, config: coreStart.uiSettings!, chrome: coreStart.chrome!, docLinks: coreStart.docLinks!, toastNotifications: coreStart.notifications.toasts, overlays: coreStart.overlays, recentlyAccessed: coreStart.chrome!.recentlyAccessed, - fieldFormats: deps.data.fieldFormats, - autocomplete: deps.data.autocomplete, basePath: coreStart.http.basePath, savedObjectsClient: coreStart.savedObjects.client, XSRF: deps.__LEGACY.XSRF, @@ -51,7 +54,11 @@ const App: FC = ({ coreStart, deps }) => { http: coreStart.http, security: deps.security, }); + + const mlLicense = setLicenseCache(deps.licensing); + deps.onAppLeave(actions => { + mlLicense.unsubscribe(); clearCache(); return actions.default(); }); diff --git a/x-pack/legacy/plugins/ml/public/application/components/anomalies_table/anomalies_table.test.js b/x-pack/legacy/plugins/ml/public/application/components/anomalies_table/anomalies_table.test.js index 206b9e01bab8c..b881bfe4f1fe6 100644 --- a/x-pack/legacy/plugins/ml/public/application/components/anomalies_table/anomalies_table.test.js +++ b/x-pack/legacy/plugins/ml/public/application/components/anomalies_table/anomalies_table.test.js @@ -11,7 +11,7 @@ import { getColumns } from './anomalies_table_columns'; jest.mock('../../privilege/check_privilege', () => ({ checkPermission: () => false, })); -jest.mock('../../license/check_license', () => ({ +jest.mock('../../license', () => ({ hasLicenseExpired: () => false, })); jest.mock('../../privilege/get_privileges', () => ({ diff --git a/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/main_tabs.tsx b/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/main_tabs.tsx index dce5e7ad52b09..695783883d02e 100644 --- a/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/main_tabs.tsx +++ b/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/main_tabs.tsx @@ -81,13 +81,18 @@ export const MainTabs: FC = ({ tabId, disableLinks }) => { return ( {tabs.map((tab: Tab) => { - const id = tab.id; + const { id, disabled } = tab; const testSubject = TAB_DATA[id].testSubject; const defaultPathId = TAB_DATA[id].pathId || id; // globalState (e.g. selected jobs and time range) should be retained when changing pages. // appState will not be considered. const fullGlobalStateString = globalState !== undefined ? `?_g=${encode(globalState)}` : ''; - return ( + + return disabled ? ( + + {tab.name} + + ) : ( = ({ tabId, disableLinks }) => { className={'mlNavigationMenu__mainTab'} onClick={() => onSelectedTabChanged(id)} isSelected={id === selectedTabId} - disabled={tab.disabled} > {tab.name} diff --git a/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/navigation_menu.tsx b/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/navigation_menu.tsx index e7ba57e25354e..6be2d18e59741 100644 --- a/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/navigation_menu.tsx +++ b/x-pack/legacy/plugins/ml/public/application/components/navigation_menu/navigation_menu.tsx @@ -7,7 +7,7 @@ import React, { Fragment, FC } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule } from '@elastic/eui'; -import { isFullLicense } from '../../license/check_license'; +import { isFullLicense } from '../../license'; import { TopNav } from './top_nav'; import { MainTabs } from './main_tabs'; diff --git a/x-pack/legacy/plugins/ml/public/application/datavisualizer/datavisualizer_selector.tsx b/x-pack/legacy/plugins/ml/public/application/datavisualizer/datavisualizer_selector.tsx index 0f56f78c708ee..254788c52a7a8 100644 --- a/x-pack/legacy/plugins/ml/public/application/datavisualizer/datavisualizer_selector.tsx +++ b/x-pack/legacy/plugins/ml/public/application/datavisualizer/datavisualizer_selector.tsx @@ -22,7 +22,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { isFullLicense } from '../license/check_license'; +import { isFullLicense } from '../license'; import { useTimefilter } from '../contexts/kibana'; import { NavigationMenu } from '../components/navigation_menu'; diff --git a/x-pack/legacy/plugins/ml/public/application/datavisualizer/file_based/components/results_links/results_links.tsx b/x-pack/legacy/plugins/ml/public/application/datavisualizer/file_based/components/results_links/results_links.tsx index debadba19051b..dddf64ce2cfd3 100644 --- a/x-pack/legacy/plugins/ml/public/application/datavisualizer/file_based/components/results_links/results_links.tsx +++ b/x-pack/legacy/plugins/ml/public/application/datavisualizer/file_based/components/results_links/results_links.tsx @@ -9,7 +9,7 @@ import moment from 'moment'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiFlexGroup, EuiFlexItem, EuiCard, EuiIcon } from '@elastic/eui'; import { ml } from '../../../../services/ml_api_service'; -import { isFullLicense } from '../../../../license/check_license'; +import { isFullLicense } from '../../../../license'; import { checkPermission } from '../../../../privilege/check_privilege'; import { mlNodesAvailable } from '../../../../ml_nodes_check/check_ml_nodes'; import { useMlKibana } from '../../../../contexts/kibana'; diff --git a/x-pack/legacy/plugins/ml/public/application/datavisualizer/index_based/page.tsx b/x-pack/legacy/plugins/ml/public/application/datavisualizer/index_based/page.tsx index 84c07651d323d..fbf42ef62265c 100644 --- a/x-pack/legacy/plugins/ml/public/application/datavisualizer/index_based/page.tsx +++ b/x-pack/legacy/plugins/ml/public/application/datavisualizer/index_based/page.tsx @@ -31,7 +31,7 @@ import { SavedSearchSavedObject } from '../../../../common/types/kibana'; import { NavigationMenu } from '../../components/navigation_menu'; import { ML_JOB_FIELD_TYPES } from '../../../../common/constants/field_types'; import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search'; -import { isFullLicense } from '../../license/check_license'; +import { isFullLicense } from '../../license'; import { checkPermission } from '../../privilege/check_privilege'; import { mlNodesAvailable } from '../../ml_nodes_check/check_ml_nodes'; import { FullTimeRangeSelector } from '../../components/full_time_range_selector'; diff --git a/x-pack/legacy/plugins/ml/public/application/license/__tests__/check_license.js b/x-pack/legacy/plugins/ml/public/application/license/__tests__/check_license.js deleted file mode 100644 index 9ce0ec04befb6..0000000000000 --- a/x-pack/legacy/plugins/ml/public/application/license/__tests__/check_license.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import expect from '@kbn/expect'; -import { xpackInfo } from '../../../../../xpack_main/public/services/xpack_info'; -import { LICENSE_STATUS_VALID } from '../../../../../../common/constants/license_status'; -import { xpackFeatureAvailable } from '../check_license'; - -const initialInfo = { - features: { - watcher: { - status: LICENSE_STATUS_VALID, - }, - }, -}; - -describe('ML - check license', () => { - describe('xpackFeatureAvailable', () => { - beforeEach(() => { - xpackInfo.setAll(initialInfo); - }); - - it('returns true for enabled feature', () => { - const result = xpackFeatureAvailable('watcher'); - expect(result).to.be(true); - }); - - it('returns false for disabled feature', () => { - const result = xpackFeatureAvailable('noSuchFeature'); - expect(result).to.be(false); - }); - }); -}); diff --git a/x-pack/legacy/plugins/ml/public/application/license/check_license.tsx b/x-pack/legacy/plugins/ml/public/application/license/check_license.tsx index 4af753ddb4d1f..be5b702742baa 100644 --- a/x-pack/legacy/plugins/ml/public/application/license/check_license.tsx +++ b/x-pack/legacy/plugins/ml/public/application/license/check_license.tsx @@ -4,126 +4,74 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; -import { EuiCallOut } from '@elastic/eui'; -import { toMountPoint } from '../../../../../../../src/plugins/kibana_react/public'; -// @ts-ignore No declaration file for module -import { xpackInfo } from '../../../../xpack_main/public/services/xpack_info'; -import { LICENSE_TYPE } from '../../../common/constants/license'; -import { LICENSE_STATUS_VALID } from '../../../../../common/constants/license_status'; -import { getOverlays } from '../util/dependency_cache'; +import { LicensingPluginSetup } from '../../../../../../plugins/licensing/public'; +import { MlClientLicense } from './ml_client_license'; -let licenseHasExpired = true; -let licenseType: LICENSE_TYPE | null = null; -let expiredLicenseBannerId: string; +let mlLicense: MlClientLicense | null = null; -export function checkFullLicense() { - const features = getFeatures(); - licenseType = features.licenseType; - - if (features.isAvailable === false) { - // ML is not enabled - return redirectToKibana(); - } else if (features.licenseType === LICENSE_TYPE.BASIC) { - // ML is enabled, but only with a basic or gold license - return redirectToBasic(); - } else { - // ML is enabled - setLicenseExpired(features); - return Promise.resolve(features); - } +/** + * Create a new mlLicense and cache it for later checks + * + * @export + * @param {LicensingPluginSetup} licensingSetup + * @returns {MlClientLicense} + */ +export function setLicenseCache(licensingSetup: LicensingPluginSetup) { + mlLicense = new MlClientLicense(); + mlLicense.setup(licensingSetup.license$); + return mlLicense; } -export function checkBasicLicense() { - const features = getFeatures(); - licenseType = features.licenseType; - - if (features.isAvailable === false) { - // ML is not enabled - return redirectToKibana(); - } else { - // ML is enabled - setLicenseExpired(features); - return Promise.resolve(features); +/** + * Used as routing resolver to stop the loading of a page if the current license + * is a trial, platinum or enterprise. + * + * @export + * @returns {Promise} Promise which resolves if the license is trial, platinum or enterprise and rejects if it isn't. + */ +export async function checkFullLicense() { + if (mlLicense === null) { + // this should never happen + console.error('ML Licensing not initialized'); // eslint-disable-line + return Promise.reject(); } -} -// a wrapper for checkFullLicense which doesn't resolve if the license has expired. -// this is used by all create jobs pages to redirect back to the jobs list -// if the user's license has expired. -export function checkLicenseExpired() { - return checkFullLicense() - .then((features: any) => { - if (features.hasExpired) { - window.location.href = '#/jobs'; - return Promise.reject(); - } else { - return Promise.resolve(features); - } - }) - .catch(() => { - return Promise.reject(); - }); + return mlLicense.fullLicenseResolver(); } -function setLicenseExpired(features: any) { - licenseHasExpired = features.hasExpired || false; - // If the license has expired ML app will still work for 7 days and then - // the job management endpoints (e.g. create job, start datafeed) will be restricted. - // Therefore we need to keep the app enabled but show an info banner to the user. - if (licenseHasExpired) { - const message = features.message; - if (expiredLicenseBannerId === undefined) { - // Only show the banner once with no way to dismiss it - const overlays = getOverlays(); - expiredLicenseBannerId = overlays.banners.add( - toMountPoint() - ); - } +/** + * Used as routing resolver to stop the loading of a page if the current license + * is at least basic. + * + * @export + * @returns {Promise} Promise resolves if the license is at least basic and rejects if it isn't. + */ +export async function checkBasicLicense() { + if (mlLicense === null) { + // this should never happen + console.error('ML Licensing not initialized'); // eslint-disable-line + return Promise.reject(); } -} -// Temporary hack for cutting over server to NP -function getFeatures() { - return { - isAvailable: true, - showLinks: true, - enableLinks: true, - licenseType: 1, - hasExpired: false, - }; - // return xpackInfo.get('features.ml'); -} - -function redirectToKibana() { - window.location.href = '/'; - return Promise.reject(); -} -function redirectToBasic() { - window.location.href = '#/datavisualizer'; - return Promise.reject(); + return mlLicense.basicLicenseResolver(); } +/** + * Check to see if the current license has expired + * + * @export + * @returns {boolean} + */ export function hasLicenseExpired() { - return licenseHasExpired; + return mlLicense !== null && mlLicense.hasLicenseExpired(); } +/** + * Check to see if the current license is trial, platinum or enterprise. + * + * @export + * @returns {boolean} + */ export function isFullLicense() { - return licenseType === LICENSE_TYPE.FULL; -} - -export function xpackFeatureAvailable(feature: string) { - // each plugin can register their own set of features. - // so we need specific checks for each one. - // this list can grow if we need to check other plugin's features. - switch (feature) { - case 'watcher': - // watcher only has a license status feature - // if watcher is disabled in kibana.yml, the feature is completely missing from xpackInfo - return xpackInfo.get(`features.${feature}.status`, false) === LICENSE_STATUS_VALID; - default: - // historically plugins have used `isAvailable` as a catch all for - // license and feature enabled checks - return xpackInfo.get(`features.${feature}.isAvailable`, false); - } + return mlLicense !== null && mlLicense.isFullLicense(); } diff --git a/x-pack/legacy/plugins/ml/public/application/license/expired_warning.tsx b/x-pack/legacy/plugins/ml/public/application/license/expired_warning.tsx new file mode 100644 index 0000000000000..22cb3260d6969 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/application/license/expired_warning.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 { i18n } from '@kbn/i18n'; +import { EuiCallOut } from '@elastic/eui'; +import { toMountPoint } from '../../../../../../../src/plugins/kibana_react/public'; +import { getOverlays } from '../util/dependency_cache'; + +let expiredLicenseBannerId: string; + +export function showExpiredLicenseWarning() { + if (expiredLicenseBannerId === undefined) { + const message = i18n.translate('xpack.ml.checkLicense.licenseHasExpiredMessage', { + defaultMessage: 'Your Machine Learning license has expired.', + }); + // Only show the banner once with no way to dismiss it + const overlays = getOverlays(); + expiredLicenseBannerId = overlays.banners.add( + toMountPoint() + ); + } +} diff --git a/x-pack/legacy/plugins/ml/public/application/license/index.ts b/x-pack/legacy/plugins/ml/public/application/license/index.ts new file mode 100644 index 0000000000000..0b6866d52d070 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/application/license/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { + checkBasicLicense, + checkFullLicense, + hasLicenseExpired, + isFullLicense, + setLicenseCache, +} from './check_license'; diff --git a/x-pack/legacy/plugins/ml/public/application/license/ml_client_license.ts b/x-pack/legacy/plugins/ml/public/application/license/ml_client_license.ts new file mode 100644 index 0000000000000..13809e15135e8 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/application/license/ml_client_license.ts @@ -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 { MlLicense } from '../../../common/license'; +import { showExpiredLicenseWarning } from './expired_warning'; + +export class MlClientLicense extends MlLicense { + fullLicenseResolver() { + if (this.isMlEnabled() === false || this.isMinimumLicense() === false) { + // ML is not enabled or the license isn't at least basic + return redirectToKibana(); + } + + if (this.isFullLicense() === false) { + // ML is enabled, but only with a basic or gold license + return redirectToBasic(); + } + + // ML is enabled + if (this.hasLicenseExpired()) { + showExpiredLicenseWarning(); + } + return Promise.resolve(); + } + + basicLicenseResolver() { + if (this.isMlEnabled() === false || this.isMinimumLicense() === false) { + // ML is not enabled or the license isn't at least basic + return redirectToKibana(); + } + + // ML is enabled + if (this.hasLicenseExpired()) { + showExpiredLicenseWarning(); + } + return Promise.resolve(); + } +} + +function redirectToKibana() { + window.location.href = '/'; + return Promise.reject(); +} + +function redirectToBasic() { + window.location.href = '#/datavisualizer'; + return Promise.reject(); +} diff --git a/x-pack/legacy/plugins/ml/public/application/management/index.ts b/x-pack/legacy/plugins/ml/public/application/management/index.ts index a05de8b0d0880..16bb3ddfd1c9b 100644 --- a/x-pack/legacy/plugins/ml/public/application/management/index.ts +++ b/x-pack/legacy/plugins/ml/public/application/management/index.ts @@ -10,21 +10,36 @@ * you may not use this file except in compliance with the Elastic License. */ +import { npSetup } from 'ui/new_platform'; import { management } from 'ui/management'; import { i18n } from '@kbn/i18n'; import chrome from 'ui/chrome'; import { metadata } from 'ui/metadata'; -// @ts-ignore No declaration file for module -import { xpackInfo } from '../../../../xpack_main/public/services/xpack_info'; import { JOBS_LIST_PATH } from './management_urls'; -import { LICENSE_TYPE } from '../../../common/constants/license'; import { setDependencyCache } from '../util/dependency_cache'; import './jobs_list'; +import { + LicensingPluginSetup, + LICENSE_CHECK_STATE, +} from '../../../../../../plugins/licensing/public'; +import { PLUGIN_ID } from '../../../common/constants/app'; +import { MINIMUM_FULL_LICENSE } from '../../../common/license'; -if ( - xpackInfo.get('features.ml.showLinks', false) === true && - xpackInfo.get('features.ml.licenseType') === LICENSE_TYPE.FULL -) { +type PluginsSetupExtended = typeof npSetup.plugins & { + // adds licensing which isn't in the PluginsSetup interface, but does exist + licensing: LicensingPluginSetup; +}; + +const plugins = npSetup.plugins as PluginsSetupExtended; +const licencingSubscription = plugins.licensing.license$.subscribe(license => { + if (license.check(PLUGIN_ID, MINIMUM_FULL_LICENSE).state === LICENSE_CHECK_STATE.Valid) { + initManagementSection(); + // unsubscribe, we only want to register the plugin once. + licencingSubscription.unsubscribe(); + } +}); + +function initManagementSection() { const legacyBasePath = { prepend: chrome.addBasePath, get: chrome.getBasePath, diff --git a/x-pack/legacy/plugins/ml/public/application/privilege/check_privilege.ts b/x-pack/legacy/plugins/ml/public/application/privilege/check_privilege.ts index 6cc06231a08d0..ec9695a2ce668 100644 --- a/x-pack/legacy/plugins/ml/public/application/privilege/check_privilege.ts +++ b/x-pack/legacy/plugins/ml/public/application/privilege/check_privilege.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; -import { hasLicenseExpired } from '../license/check_license'; +import { hasLicenseExpired } from '../license'; import { Privileges, getDefaultPrivileges } from '../../../common/types/privileges'; import { getPrivileges, getManageMlPrivileges } from './get_privileges'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/resolvers.ts b/x-pack/legacy/plugins/ml/public/application/routing/resolvers.ts index 5fc1ea533e87f..acaf3f3acd0c8 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/resolvers.ts +++ b/x-pack/legacy/plugins/ml/public/application/routing/resolvers.ts @@ -5,7 +5,7 @@ */ import { loadIndexPatterns, loadSavedSearches } from '../util/index_utils'; -import { checkFullLicense } from '../license/check_license'; +import { checkFullLicense } from '../license'; import { checkGetJobsPrivilege } from '../privilege/check_privilege'; import { getMlNodeCount } from '../ml_nodes_check/check_ml_nodes'; import { loadMlServerInfo } from '../services/ml_server_info'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/datavisualizer.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/datavisualizer.tsx index e89834018f5e6..d257a9c080c35 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/datavisualizer.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/datavisualizer.tsx @@ -15,7 +15,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { DatavisualizerSelector } from '../../../datavisualizer'; -import { checkBasicLicense } from '../../../license/check_license'; +import { checkBasicLicense } from '../../../license'; import { checkFindFileStructurePrivilege } from '../../../privilege/check_privilege'; import { DATA_VISUALIZER_BREADCRUMB, ML_BREADCRUMB } from '../../breadcrumbs'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/file_based.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/file_based.tsx index b4ccccd0776eb..174b3e3b4b338 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/file_based.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/file_based.tsx @@ -16,11 +16,10 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { FileDataVisualizerPage } from '../../../datavisualizer/file_based'; -import { checkBasicLicense } from '../../../license/check_license'; +import { checkBasicLicense } from '../../../license'; import { checkFindFileStructurePrivilege } from '../../../privilege/check_privilege'; import { loadIndexPatterns } from '../../../util/index_utils'; -import { getMlNodeCount } from '../../../ml_nodes_check'; import { DATA_VISUALIZER_BREADCRUMB, ML_BREADCRUMB } from '../../breadcrumbs'; const breadcrumbs = [ @@ -45,7 +44,6 @@ const PageWrapper: FC = ({ location, deps }) => { checkBasicLicense, loadIndexPatterns: () => loadIndexPatterns(deps.indexPatterns), checkFindFileStructurePrivilege, - getMlNodeCount, }); return ( diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/index_based.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/index_based.tsx index 74ab916cb443f..a3dbc9f97124c 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/index_based.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/datavisualizer/index_based.tsx @@ -11,7 +11,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { Page } from '../../../datavisualizer/index_based'; -import { checkBasicLicense } from '../../../license/check_license'; +import { checkBasicLicense } from '../../../license'; import { checkGetJobsPrivilege } from '../../../privilege/check_privilege'; import { loadIndexPatterns } from '../../../util/index_utils'; import { checkMlNodesAvailable } from '../../../ml_nodes_check'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx index ae35d783517d3..9411b415e4e4d 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx @@ -11,7 +11,7 @@ import { useResolver } from '../../use_resolver'; import { basicResolvers } from '../../resolvers'; import { Page, preConfiguredJobRedirect } from '../../../jobs/new_job/pages/index_or_search'; import { ANOMALY_DETECTION_BREADCRUMB, ML_BREADCRUMB } from '../../breadcrumbs'; -import { checkBasicLicense } from '../../../license/check_license'; +import { checkBasicLicense } from '../../../license'; import { loadIndexPatterns } from '../../../util/index_utils'; import { checkGetJobsPrivilege } from '../../../privilege/check_privilege'; import { checkMlNodesAvailable } from '../../../ml_nodes_check'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/overview.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/overview.tsx index b1e00158efb94..ccb99985cb70c 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/overview.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/overview.tsx @@ -12,7 +12,7 @@ import { MlRoute, PageLoader, PageProps } from '../router'; import { useResolver } from '../use_resolver'; import { OverviewPage } from '../../overview'; -import { checkFullLicense } from '../../license/check_license'; +import { checkFullLicense } from '../../license'; import { checkGetJobsPrivilege } from '../../privilege/check_privilege'; import { getMlNodeCount } from '../../ml_nodes_check'; import { loadMlServerInfo } from '../../services/ml_server_info'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_list.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_list.tsx index c1bfaa2fe6c1e..9d5c4e9c0b0a0 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_list.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_list.tsx @@ -16,7 +16,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { useTimefilter } from '../../../contexts/kibana'; -import { checkFullLicense } from '../../../license/check_license'; +import { checkFullLicense } from '../../../license'; import { checkGetJobsPrivilege, checkPermission } from '../../../privilege/check_privilege'; import { getMlNodeCount } from '../../../ml_nodes_check/check_ml_nodes'; import { CalendarsList } from '../../../settings/calendars'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_new_edit.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_new_edit.tsx index 7af2e49e3a69e..bf039e3bd2354 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_new_edit.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/calendar_new_edit.tsx @@ -16,7 +16,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { useTimefilter } from '../../../contexts/kibana'; -import { checkFullLicense } from '../../../license/check_license'; +import { checkFullLicense } from '../../../license'; import { checkGetJobsPrivilege, checkPermission } from '../../../privilege/check_privilege'; import { checkMlNodesAvailable } from '../../../ml_nodes_check/check_ml_nodes'; import { NewCalendar } from '../../../settings/calendars'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list.tsx index 9c5c06b76247c..6839ad833cb06 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list.tsx @@ -16,7 +16,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { useTimefilter } from '../../../contexts/kibana'; -import { checkFullLicense } from '../../../license/check_license'; +import { checkFullLicense } from '../../../license'; import { checkGetJobsPrivilege, checkPermission } from '../../../privilege/check_privilege'; import { getMlNodeCount } from '../../../ml_nodes_check/check_ml_nodes'; import { FilterLists } from '../../../settings/filter_lists'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list_new_edit.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list_new_edit.tsx index 752b889490e58..7b8bd6c3c81ac 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list_new_edit.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/filter_list_new_edit.tsx @@ -16,7 +16,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { useTimefilter } from '../../../contexts/kibana'; -import { checkFullLicense } from '../../../license/check_license'; +import { checkFullLicense } from '../../../license'; import { checkGetJobsPrivilege, checkPermission } from '../../../privilege/check_privilege'; import { checkMlNodesAvailable } from '../../../ml_nodes_check/check_ml_nodes'; import { EditFilterList } from '../../../settings/filter_lists'; diff --git a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/settings.tsx b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/settings.tsx index 10efb2dcc60c7..10ccc0987fe5d 100644 --- a/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/settings.tsx +++ b/x-pack/legacy/plugins/ml/public/application/routing/routes/settings/settings.tsx @@ -15,7 +15,7 @@ import { MlRoute, PageLoader, PageProps } from '../../router'; import { useResolver } from '../../use_resolver'; import { useTimefilter } from '../../../contexts/kibana'; -import { checkFullLicense } from '../../../license/check_license'; +import { checkFullLicense } from '../../../license'; import { checkGetJobsPrivilege, checkPermission } from '../../../privilege/check_privilege'; import { getMlNodeCount } from '../../../ml_nodes_check/check_ml_nodes'; import { Settings } from '../../../settings'; diff --git a/x-pack/legacy/plugins/ml/public/application/settings/calendars/edit/new_calendar.test.js b/x-pack/legacy/plugins/ml/public/application/settings/calendars/edit/new_calendar.test.js index 8dc174040f9c8..5f61ccf47e9d7 100644 --- a/x-pack/legacy/plugins/ml/public/application/settings/calendars/edit/new_calendar.test.js +++ b/x-pack/legacy/plugins/ml/public/application/settings/calendars/edit/new_calendar.test.js @@ -10,7 +10,7 @@ jest.mock('../../../components/navigation_menu', () => ({ jest.mock('../../../privilege/check_privilege', () => ({ checkPermission: () => true, })); -jest.mock('../../../license/check_license', () => ({ +jest.mock('../../../license', () => ({ hasLicenseExpired: () => false, isFullLicense: () => false, })); diff --git a/x-pack/legacy/plugins/ml/public/application/settings/calendars/list/calendars_list.test.js b/x-pack/legacy/plugins/ml/public/application/settings/calendars/list/calendars_list.test.js index 677703bceeca7..3ea8e0c39fbb2 100644 --- a/x-pack/legacy/plugins/ml/public/application/settings/calendars/list/calendars_list.test.js +++ b/x-pack/legacy/plugins/ml/public/application/settings/calendars/list/calendars_list.test.js @@ -16,7 +16,7 @@ jest.mock('../../../components/navigation_menu', () => ({ jest.mock('../../../privilege/check_privilege', () => ({ checkPermission: () => true, })); -jest.mock('../../../license/check_license', () => ({ +jest.mock('../../../license', () => ({ hasLicenseExpired: () => false, isFullLicense: () => false, })); diff --git a/x-pack/legacy/plugins/ml/public/application/util/dependency_cache.ts b/x-pack/legacy/plugins/ml/public/application/util/dependency_cache.ts index 6d1dfa96ca03e..c167d7e7c3d42 100644 --- a/x-pack/legacy/plugins/ml/public/application/util/dependency_cache.ts +++ b/x-pack/legacy/plugins/ml/public/application/util/dependency_cache.ts @@ -76,6 +76,7 @@ export function setDependencyCache(deps: Partial) { cache.XSRF = deps.XSRF || null; cache.application = deps.application || null; cache.http = deps.http || null; + cache.security = deps.security || null; } export function getTimefilter() { diff --git a/x-pack/legacy/plugins/ml/public/legacy.ts b/x-pack/legacy/plugins/ml/public/legacy.ts index 7dfcf6a99c213..0c6c0bd8dd29e 100644 --- a/x-pack/legacy/plugins/ml/public/legacy.ts +++ b/x-pack/legacy/plugins/ml/public/legacy.ts @@ -8,14 +8,24 @@ import chrome from 'ui/chrome'; import { npSetup, npStart } from 'ui/new_platform'; import { PluginInitializerContext } from 'src/core/public'; import { SecurityPluginSetup } from '../../../../plugins/security/public'; +import { LicensingPluginSetup } from '../../../../plugins/licensing/public'; import { plugin } from '.'; const pluginInstance = plugin({} as PluginInitializerContext); +type PluginsSetupExtended = typeof npSetup.plugins & { + // adds plugins which aren't in the PluginsSetup interface, but do exist + security: SecurityPluginSetup; + licensing: LicensingPluginSetup; +}; + +const setupDependencies = npSetup.plugins as PluginsSetupExtended; + export const setup = pluginInstance.setup(npSetup.core, { data: npStart.plugins.data, - security: ((npSetup.plugins as unknown) as { security: SecurityPluginSetup }).security, // security isn't in the PluginsSetup interface, but does exist + security: setupDependencies.security, + licensing: setupDependencies.licensing, __LEGACY: { XSRF: chrome.getXsrfToken(), }, diff --git a/x-pack/legacy/plugins/ml/public/plugin.ts b/x-pack/legacy/plugins/ml/public/plugin.ts index 1061bb1b6b62b..c0369a74c070a 100644 --- a/x-pack/legacy/plugins/ml/public/plugin.ts +++ b/x-pack/legacy/plugins/ml/public/plugin.ts @@ -8,7 +8,7 @@ import { Plugin, CoreStart, CoreSetup } from 'src/core/public'; import { MlDependencies } from './application/app'; export class MlPlugin implements Plugin { - setup(core: CoreSetup, { data, security, __LEGACY }: MlDependencies) { + setup(core: CoreSetup, { data, security, licensing, __LEGACY }: MlDependencies) { core.application.register({ id: 'ml', title: 'Machine learning', @@ -23,6 +23,7 @@ export class MlPlugin implements Plugin { data, __LEGACY, security, + licensing, }); }, }); diff --git a/x-pack/plugins/ml/server/lib/check_license/check_license.test.ts b/x-pack/plugins/ml/server/lib/check_license/check_license.test.ts deleted file mode 100644 index 942dbe3722617..0000000000000 --- a/x-pack/plugins/ml/server/lib/check_license/check_license.test.ts +++ /dev/null @@ -1,167 +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 expect from '@kbn/expect'; -import sinon from 'sinon'; -import { set } from 'lodash'; -import { LicenseCheckResult } from '../../types'; -import { checkLicense } from './check_license'; - -describe('check_license', () => { - let mockLicenseInfo: LicenseCheckResult; - beforeEach(() => (mockLicenseInfo = {} as LicenseCheckResult)); - - describe('license information is undefined', () => { - it('should set isAvailable to false', () => { - expect(checkLicense(undefined as any).isAvailable).to.be(false); - }); - - it('should set showLinks to true', () => { - expect(checkLicense(undefined as any).showLinks).to.be(true); - }); - - it('should set enableLinks to false', () => { - expect(checkLicense(undefined as any).enableLinks).to.be(false); - }); - - it('should set a message', () => { - expect(checkLicense(undefined as any).message).to.not.be(undefined); - }); - }); - - describe('license information is not available', () => { - beforeEach(() => { - mockLicenseInfo.isAvailable = false; - }); - - it('should set isAvailable to false', () => { - expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false); - }); - - it('should set showLinks to true', () => { - expect(checkLicense(mockLicenseInfo).showLinks).to.be(true); - }); - - it('should set enableLinks to false', () => { - expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false); - }); - - it('should set a message', () => { - expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined); - }); - }); - - describe('license information is available', () => { - beforeEach(() => { - mockLicenseInfo.isAvailable = true; - mockLicenseInfo.type = 'basic'; - }); - - describe('& ML is disabled in Elasticsearch', () => { - beforeEach(() => { - set( - mockLicenseInfo, - 'feature', - sinon - .stub() - .withArgs('ml') - .returns({ isEnabled: false }) - ); - }); - - it('should set showLinks to false', () => { - expect(checkLicense(mockLicenseInfo).showLinks).to.be(false); - }); - - it('should set isAvailable to false', () => { - expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false); - }); - - it('should set enableLinks to false', () => { - expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false); - }); - - it('should set a message', () => { - expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined); - }); - }); - - describe('& ML is enabled in Elasticsearch', () => { - beforeEach(() => { - mockLicenseInfo.isEnabled = true; - }); - - describe('& license is >= platinum', () => { - beforeEach(() => { - mockLicenseInfo.type = 'platinum'; - }); - describe('& license is active', () => { - beforeEach(() => { - mockLicenseInfo.isActive = true; - }); - - it('should set isAvailable to true', () => { - expect(checkLicense(mockLicenseInfo).isAvailable).to.be(true); - }); - - it('should set showLinks to true', () => { - expect(checkLicense(mockLicenseInfo).showLinks).to.be(true); - }); - - it('should set enableLinks to true', () => { - expect(checkLicense(mockLicenseInfo).enableLinks).to.be(true); - }); - - it('should not set a message', () => { - expect(checkLicense(mockLicenseInfo).message).to.be(undefined); - }); - }); - - describe('& license is expired', () => { - beforeEach(() => { - mockLicenseInfo.isActive = false; - }); - - it('should set isAvailable to true', () => { - expect(checkLicense(mockLicenseInfo).isAvailable).to.be(true); - }); - - it('should set showLinks to true', () => { - expect(checkLicense(mockLicenseInfo).showLinks).to.be(true); - }); - - it('should set enableLinks to true', () => { - expect(checkLicense(mockLicenseInfo).enableLinks).to.be(true); - }); - - it('should set a message', () => { - expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined); - }); - }); - }); - - describe('& license is basic', () => { - beforeEach(() => { - mockLicenseInfo.type = 'basic'; - }); - - describe('& license is active', () => { - beforeEach(() => { - mockLicenseInfo.isActive = true; - }); - - it('should set isAvailable to true', () => { - expect(checkLicense(mockLicenseInfo).isAvailable).to.be(true); - }); - - it('should set showLinks to true', () => { - expect(checkLicense(mockLicenseInfo).showLinks).to.be(true); - }); - }); - }); - }); - }); -}); diff --git a/x-pack/plugins/ml/server/lib/check_license/check_license.ts b/x-pack/plugins/ml/server/lib/check_license/check_license.ts deleted file mode 100644 index 5bf3d590a1912..0000000000000 --- a/x-pack/plugins/ml/server/lib/check_license/check_license.ts +++ /dev/null @@ -1,82 +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 { i18n } from '@kbn/i18n'; -import { - LICENSE_TYPE, - VALID_FULL_LICENSE_MODES, -} from '../../../../../legacy/plugins/ml/common/constants/license'; -import { LicenseCheckResult } from '../../types'; - -interface Response { - isAvailable: boolean; - showLinks: boolean; - enableLinks: boolean; - licenseType?: LICENSE_TYPE; - hasExpired?: boolean; - message?: string; -} - -export function checkLicense(licenseCheckResult: LicenseCheckResult): Response { - // If, for some reason, we cannot get the license information - // from Elasticsearch, assume worst case and disable the Machine Learning UI - if (licenseCheckResult === undefined || !licenseCheckResult.isAvailable) { - return { - isAvailable: false, - showLinks: true, - enableLinks: false, - message: i18n.translate( - 'xpack.ml.checkLicense.licenseInformationNotAvailableThisTimeMessage', - { - defaultMessage: - 'You cannot use Machine Learning because license information is not available at this time.', - } - ), - }; - } - - const featureEnabled = licenseCheckResult.isEnabled; - if (!featureEnabled) { - return { - isAvailable: false, - showLinks: false, - enableLinks: false, - message: i18n.translate('xpack.ml.checkLicense.mlIsUnavailableMessage', { - defaultMessage: 'Machine Learning is unavailable', - }), - }; - } - - const isLicenseModeValid = - licenseCheckResult.type && VALID_FULL_LICENSE_MODES.includes(licenseCheckResult.type); - const licenseType = isLicenseModeValid === true ? LICENSE_TYPE.FULL : LICENSE_TYPE.BASIC; - const isLicenseActive = licenseCheckResult.isActive; - const licenseTypeName = licenseCheckResult.type; - - // Platinum or trial license is valid but not active, i.e. expired - if (licenseType === LICENSE_TYPE.FULL && isLicenseActive === false) { - return { - isAvailable: true, - showLinks: true, - enableLinks: true, - hasExpired: true, - licenseType, - message: i18n.translate('xpack.ml.checkLicense.licenseHasExpiredMessage', { - defaultMessage: 'Your {licenseTypeName} Machine Learning license has expired.', - values: { licenseTypeName }, - }), - }; - } - - // License is valid and active - return { - isAvailable: true, - showLinks: true, - enableLinks: true, - licenseType, - hasExpired: false, - }; -} diff --git a/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.test.ts b/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.test.ts index 0690aa53576a5..4dd9100e1b67a 100644 --- a/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.test.ts +++ b/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.test.ts @@ -7,30 +7,27 @@ import { callWithRequestProvider } from './__mocks__/call_with_request'; import { privilegesProvider } from './check_privileges'; import { mlPrivileges } from './privileges'; +import { MlLicense } from '../../../../../legacy/plugins/ml/common/license'; -const licenseCheckResultWithSecurity = { - isAvailable: true, - isEnabled: true, - isSecurityDisabled: false, - type: 'platinum', - isActive: true, -}; +const mlLicenseWithSecurity = { + isSecurityEnabled: () => true, + isFullLicense: () => true, +} as MlLicense; -const licenseCheckResultWithOutSecurity = { - ...licenseCheckResultWithSecurity, - isSecurityDisabled: true, -}; +const mlLicenseWithOutSecurity = { + isSecurityEnabled: () => false, + isFullLicense: () => true, +} as MlLicense; -const licenseCheckResultWithOutSecurityBasicLicense = { - ...licenseCheckResultWithSecurity, - isSecurityDisabled: true, - type: 'basic', -}; +const mlLicenseWithOutSecurityBasicLicense = { + isSecurityEnabled: () => false, + isFullLicense: () => false, +} as MlLicense; -const licenseCheckResultWithSecurityBasicLicense = { - ...licenseCheckResultWithSecurity, - type: 'basic', -}; +const mlLicenseWithSecurityBasicLicense = { + isSecurityEnabled: () => true, + isFullLicense: () => false, +} as MlLicense; const mlIsEnabled = async () => true; const mlIsNotEnabled = async () => false; @@ -47,7 +44,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('partialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurity, + mlLicenseWithSecurity, mlIsEnabled ); const { capabilities } = await getPrivileges(); @@ -62,7 +59,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('partialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurity, + mlLicenseWithSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -97,7 +94,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('fullPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurity, + mlLicenseWithSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -132,7 +129,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('upgradeWithFullPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurity, + mlLicenseWithSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -167,7 +164,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('upgradeWithPartialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurity, + mlLicenseWithSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -202,7 +199,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('partialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurityBasicLicense, + mlLicenseWithSecurityBasicLicense, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -237,7 +234,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('fullPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurityBasicLicense, + mlLicenseWithSecurityBasicLicense, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -272,7 +269,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('fullPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithSecurity, + mlLicenseWithSecurity, mlIsNotEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -309,7 +306,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('partialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithOutSecurity, + mlLicenseWithOutSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -344,7 +341,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('upgradeWithFullPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithOutSecurity, + mlLicenseWithOutSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -379,7 +376,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('upgradeWithPartialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithOutSecurity, + mlLicenseWithOutSecurity, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -414,7 +411,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('partialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithOutSecurityBasicLicense, + mlLicenseWithOutSecurityBasicLicense, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -449,7 +446,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('fullPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithOutSecurityBasicLicense, + mlLicenseWithOutSecurityBasicLicense, mlIsEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); @@ -484,7 +481,7 @@ describe('check_privileges', () => { const callWithRequest = callWithRequestProvider('partialPrivileges'); const { getPrivileges } = privilegesProvider( callWithRequest, - licenseCheckResultWithOutSecurity, + mlLicenseWithOutSecurity, mlIsNotEnabled ); const { capabilities, upgradeInProgress, mlFeatureEnabledInSpace } = await getPrivileges(); diff --git a/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.ts b/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.ts index a427780d13344..f26040385b9f5 100644 --- a/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.ts +++ b/x-pack/plugins/ml/server/lib/check_privileges/check_privileges.ts @@ -10,9 +10,7 @@ import { getDefaultPrivileges, } from '../../../../../legacy/plugins/ml/common/types/privileges'; import { upgradeCheckProvider } from './upgrade'; -import { checkLicense } from '../check_license'; -import { LICENSE_TYPE } from '../../../../../legacy/plugins/ml/common/constants/license'; -import { LicenseCheckResult } from '../../types'; +import { MlLicense } from '../../../../../legacy/plugins/ml/common/license'; import { mlPrivileges } from './privileges'; @@ -27,7 +25,7 @@ interface Response { export function privilegesProvider( callAsCurrentUser: IScopedClusterClient['callAsCurrentUser'], - licenseCheckResult: LicenseCheckResult, + mlLicense: MlLicense, isMlEnabledInSpace: () => Promise, ignoreSpaces: boolean = false ) { @@ -37,9 +35,9 @@ export function privilegesProvider( const privileges = getDefaultPrivileges(); const upgradeInProgress = await isUpgradeInProgress(); - const securityDisabled = licenseCheckResult.isSecurityDisabled; - const license = checkLicense(licenseCheckResult); - const isPlatinumOrTrialLicense = license.licenseType === LICENSE_TYPE.FULL; + const isSecurityEnabled = mlLicense.isSecurityEnabled(); + + const isPlatinumOrTrialLicense = mlLicense.isFullLicense(); const mlFeatureEnabledInSpace = await isMlEnabledInSpace(); const setGettingPrivileges = isPlatinumOrTrialLicense @@ -61,7 +59,7 @@ export function privilegesProvider( }; } - if (securityDisabled === true) { + if (isSecurityEnabled === false) { if (upgradeInProgress === true) { // if security is disabled and an upgrade in is progress, // force all "getting" privileges to be true diff --git a/x-pack/plugins/ml/server/lib/check_license/index.ts b/x-pack/plugins/ml/server/lib/license/index.ts similarity index 81% rename from x-pack/plugins/ml/server/lib/check_license/index.ts rename to x-pack/plugins/ml/server/lib/license/index.ts index f2c070fd44b6e..9c4271b65b00d 100644 --- a/x-pack/plugins/ml/server/lib/check_license/index.ts +++ b/x-pack/plugins/ml/server/lib/license/index.ts @@ -4,4 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -export { checkLicense } from './check_license'; +export { MlServerLicense } from './ml_server_license'; diff --git a/x-pack/plugins/ml/server/lib/license/ml_server_license.ts b/x-pack/plugins/ml/server/lib/license/ml_server_license.ts new file mode 100644 index 0000000000000..7602ab4919e81 --- /dev/null +++ b/x-pack/plugins/ml/server/lib/license/ml_server_license.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 { + KibanaRequest, + KibanaResponseFactory, + RequestHandler, + RequestHandlerContext, +} from 'src/core/server'; + +import { MlLicense } from '../../../../../legacy/plugins/ml/common/license'; + +export class MlServerLicense extends MlLicense { + public fullLicenseAPIGuard(handler: RequestHandler) { + return guard(() => this.isFullLicense(), handler); + } + public basicLicenseAPIGuard(handler: RequestHandler) { + return guard(() => this.isMinimumLicense(), handler); + } +} + +function guard(check: () => boolean, handler: RequestHandler) { + return ( + context: RequestHandlerContext, + request: KibanaRequest, + response: KibanaResponseFactory + ) => { + if (check() === false) { + return response.forbidden(); + } + return handler(context, request, response); + }; +} diff --git a/x-pack/plugins/ml/server/lib/sample_data_sets/index.ts b/x-pack/plugins/ml/server/lib/sample_data_sets/index.ts index c922c9eb7c029..50553cfa7b889 100644 --- a/x-pack/plugins/ml/server/lib/sample_data_sets/index.ts +++ b/x-pack/plugins/ml/server/lib/sample_data_sets/index.ts @@ -4,4 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -export { addLinksToSampleDatasets } from './sample_data_sets'; +export { initSampleDataSets } from './sample_data_sets'; diff --git a/x-pack/plugins/ml/server/lib/sample_data_sets/sample_data_sets.ts b/x-pack/plugins/ml/server/lib/sample_data_sets/sample_data_sets.ts index 2082538adfed1..3fd99051a2484 100644 --- a/x-pack/plugins/ml/server/lib/sample_data_sets/sample_data_sets.ts +++ b/x-pack/plugins/ml/server/lib/sample_data_sets/sample_data_sets.ts @@ -5,23 +5,32 @@ */ import { i18n } from '@kbn/i18n'; +import { MlLicense } from '../../../../../legacy/plugins/ml/common/license'; +import { PluginsSetup } from '../../types'; -export function addLinksToSampleDatasets(server: any) { - const sampleDataLinkLabel = i18n.translate('xpack.ml.sampleDataLinkLabel', { - defaultMessage: 'ML jobs', - }); +export function initSampleDataSets(mlLicense: MlLicense, plugins: PluginsSetup) { + if (mlLicense.isMlEnabled() && mlLicense.isFullLicense()) { + const sampleDataLinkLabel = i18n.translate('xpack.ml.sampleDataLinkLabel', { + defaultMessage: 'ML jobs', + }); + const { addAppLinksToSampleDataset } = plugins.home.sampleData; - server.addAppLinksToSampleDataset('ecommerce', { - path: - '/app/ml#/modules/check_view_or_create?id=sample_data_ecommerce&index=ff959d40-b880-11e8-a6d9-e546fe2bba5f', - label: sampleDataLinkLabel, - icon: 'machineLearningApp', - }); + addAppLinksToSampleDataset('ecommerce', [ + { + path: + '/app/ml#/modules/check_view_or_create?id=sample_data_ecommerce&index=ff959d40-b880-11e8-a6d9-e546fe2bba5f', + label: sampleDataLinkLabel, + icon: 'machineLearningApp', + }, + ]); - server.addAppLinksToSampleDataset('logs', { - path: - '/app/ml#/modules/check_view_or_create?id=sample_data_weblogs&index=90943e30-9a47-11e8-b64d-95841ca0b247', - label: sampleDataLinkLabel, - icon: 'machineLearningApp', - }); + addAppLinksToSampleDataset('logs', [ + { + path: + '/app/ml#/modules/check_view_or_create?id=sample_data_weblogs&index=90943e30-9a47-11e8-b64d-95841ca0b247', + label: sampleDataLinkLabel, + icon: 'machineLearningApp', + }, + ]); + } } diff --git a/x-pack/plugins/ml/server/plugin.ts b/x-pack/plugins/ml/server/plugin.ts index b5adf1fedec79..a3f5733738432 100644 --- a/x-pack/plugins/ml/server/plugin.ts +++ b/x-pack/plugins/ml/server/plugin.ts @@ -6,15 +6,14 @@ import { i18n } from '@kbn/i18n'; import { CoreSetup, IScopedClusterClient, Logger, PluginInitializerContext } from 'src/core/server'; -import { LicenseCheckResult, PluginsSetup, RouteInitialization } from './types'; +import { PluginsSetup, RouteInitialization } from './types'; import { PLUGIN_ID } from '../../../legacy/plugins/ml/common/constants/app'; -import { VALID_FULL_LICENSE_MODES } from '../../../legacy/plugins/ml/common/constants/license'; // @ts-ignore: could not find declaration file for module import { elasticsearchJsPlugin } from './client/elasticsearch_ml'; import { makeMlUsageCollector } from './lib/ml_telemetry'; import { initMlServerLog } from './client/log'; -import { addLinksToSampleDatasets } from './lib/sample_data_sets'; +import { initSampleDataSets } from './lib/sample_data_sets'; import { annotationRoutes } from './routes/annotations'; import { calendars } from './routes/calendars'; @@ -33,6 +32,8 @@ import { jobValidationRoutes } from './routes/job_validation'; import { notificationRoutes } from './routes/notification_settings'; import { resultsServiceRoutes } from './routes/results_service'; import { systemRoutes } from './routes/system'; +import { MlLicense } from '../../../legacy/plugins/ml/common/license'; +import { MlServerLicense } from './lib/license'; declare module 'kibana/server' { interface RequestHandlerContext { @@ -43,25 +44,17 @@ declare module 'kibana/server' { } export class MlServerPlugin { - private readonly pluginId: string = PLUGIN_ID; private log: Logger; private version: string; - - private licenseCheckResults: LicenseCheckResult = { - isAvailable: false, - isActive: false, - isEnabled: false, - isSecurityDisabled: false, - }; + private mlLicense: MlServerLicense; constructor(ctx: PluginInitializerContext) { this.log = ctx.logger.get(); this.version = ctx.env.packageInfo.branch; + this.mlLicense = new MlServerLicense(); } public setup(coreSetup: CoreSetup, plugins: PluginsSetup) { - let sampleLinksInitialized = false; - plugins.features.registerFeature({ id: PLUGIN_ID, name: i18n.translate('xpack.ml.featureRegistry.mlFeatureName', { @@ -87,6 +80,10 @@ export class MlServerPlugin { }, }); + this.mlLicense.setup(plugins.licensing.license$, [ + (mlLicense: MlLicense) => initSampleDataSets(mlLicense, plugins), + ]); + // Can access via router's handler function 'context' parameter - context.ml.mlClient const mlClient = coreSetup.elasticsearch.createClient(PLUGIN_ID, { plugins: [elasticsearchJsPlugin], @@ -100,7 +97,7 @@ export class MlServerPlugin { const routeInit: RouteInitialization = { router: coreSetup.http.createRouter(), - getLicenseCheckResults: () => this.licenseCheckResults, + mlLicense: this.mlLicense, }; annotationRoutes(routeInit, plugins.security); @@ -127,42 +124,11 @@ export class MlServerPlugin { coreSetup.getStartServices().then(([core]) => { makeMlUsageCollector(plugins.usageCollection, core.savedObjects); }); - - plugins.licensing.license$.subscribe(async license => { - const { isEnabled: securityIsEnabled } = license.getFeature('security'); - // @ts-ignore isAvailable is not read - const { isAvailable, isEnabled } = license.getFeature(this.pluginId); - - this.licenseCheckResults = { - isActive: license.isActive, - // This `isAvailable` check for the ml plugin returns false for a basic license - // ML should be available on basic with reduced functionality (only file data visualizer) - // TODO: This will need to be updated in the second step of this cutover to NP. - isAvailable: isEnabled, - isEnabled, - isSecurityDisabled: securityIsEnabled === false, - type: license.type, - }; - - if (sampleLinksInitialized === false) { - sampleLinksInitialized = true; - // Add links to the Kibana sample data sets if ml is enabled - // and license is trial or platinum. - if (isEnabled === true && plugins.home) { - if ( - this.licenseCheckResults.type && - VALID_FULL_LICENSE_MODES.includes(this.licenseCheckResults.type) - ) { - addLinksToSampleDatasets({ - addAppLinksToSampleDataset: plugins.home.sampleData.addAppLinksToSampleDataset, - }); - } - } - } - }); } public start() {} - public stop() {} + public stop() { + this.mlLicense.unsubscribe(); + } } diff --git a/x-pack/plugins/ml/server/routes/annotations.ts b/x-pack/plugins/ml/server/routes/annotations.ts index bcc0238c366a3..16483bf8b887e 100644 --- a/x-pack/plugins/ml/server/routes/annotations.ts +++ b/x-pack/plugins/ml/server/routes/annotations.ts @@ -13,7 +13,6 @@ import { SecurityPluginSetup } from '../../../security/server'; import { isAnnotationsFeatureAvailable } from '../lib/check_annotations'; import { annotationServiceProvider } from '../models/annotation_service'; import { wrapError } from '../client/error_wrapper'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization } from '../types'; import { deleteAnnotationSchema, @@ -36,7 +35,7 @@ function getAnnotationsFeatureUnavailableErrorMessage() { * Routes for annotations */ export function annotationRoutes( - { router, getLicenseCheckResults }: RouteInitialization, + { router, mlLicense }: RouteInitialization, securityPlugin: SecurityPluginSetup ) { /** @@ -61,7 +60,7 @@ export function annotationRoutes( body: schema.object(getAnnotationsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { getAnnotations } = annotationServiceProvider(context); const resp = await getAnnotations(request.body); @@ -92,7 +91,7 @@ export function annotationRoutes( body: schema.object(indexAnnotationSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const annotationsFeatureAvailable = await isAnnotationsFeatureAvailable( context.ml!.mlClient.callAsCurrentUser @@ -131,7 +130,7 @@ export function annotationRoutes( params: schema.object(deleteAnnotationSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const annotationsFeatureAvailable = await isAnnotationsFeatureAvailable( context.ml!.mlClient.callAsCurrentUser diff --git a/x-pack/plugins/ml/server/routes/anomaly_detectors.ts b/x-pack/plugins/ml/server/routes/anomaly_detectors.ts index 7bf2fb7bc6903..5e1ca72a7200d 100644 --- a/x-pack/plugins/ml/server/routes/anomaly_detectors.ts +++ b/x-pack/plugins/ml/server/routes/anomaly_detectors.ts @@ -6,7 +6,6 @@ import { schema } from '@kbn/config-schema'; import { wrapError } from '../client/error_wrapper'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization } from '../types'; import { anomalyDetectionJobSchema, @@ -16,7 +15,7 @@ import { /** * Routes for the anomaly detectors */ -export function jobRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function jobRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup AnomalyDetectors * @@ -32,7 +31,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio path: '/api/ml/anomaly_detectors', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.jobs'); return response.ok({ @@ -62,7 +61,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.jobs', { jobId }); @@ -90,7 +89,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio path: '/api/ml/anomaly_detectors/_stats', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.jobStats'); return response.ok({ @@ -120,7 +119,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.jobStats', { jobId }); @@ -152,7 +151,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio body: schema.object({ ...anomalyDetectionJobSchema }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.addJob', { @@ -187,7 +186,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio body: schema.object({ ...anomalyDetectionUpdateJobSchema }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.updateJob', { @@ -221,7 +220,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.openJob', { @@ -254,7 +253,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const options: { jobId: string; force?: boolean } = { jobId: request.params.jobId, @@ -291,7 +290,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const options: { jobId: string; force?: boolean } = { jobId: request.params.jobId, @@ -326,7 +325,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio body: schema.any(), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.validateDetector', { body: request.body, @@ -359,7 +358,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio body: schema.object({ duration: schema.any() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const jobId = request.params.jobId; const duration = request.body.duration; @@ -407,7 +406,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.records', { jobId: request.params.jobId, @@ -456,7 +455,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.buckets', { jobId: request.params.jobId, @@ -499,7 +498,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.overallBuckets', { jobId: request.params.jobId, @@ -537,7 +536,7 @@ export function jobRoutes({ router, getLicenseCheckResults }: RouteInitializatio }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const options = { jobId: request.params.jobId, diff --git a/x-pack/plugins/ml/server/routes/calendars.ts b/x-pack/plugins/ml/server/routes/calendars.ts index ae494d3578890..5d1161e928d11 100644 --- a/x-pack/plugins/ml/server/routes/calendars.ts +++ b/x-pack/plugins/ml/server/routes/calendars.ts @@ -6,7 +6,6 @@ import { RequestHandlerContext } from 'src/core/server'; import { schema } from '@kbn/config-schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { calendarSchema } from './schemas/calendars_schema'; @@ -42,13 +41,13 @@ function getCalendarsByIds(context: RequestHandlerContext, calendarIds: string) return cal.getCalendarsByIds(calendarIds); } -export function calendars({ router, getLicenseCheckResults }: RouteInitialization) { +export function calendars({ router, mlLicense }: RouteInitialization) { router.get( { path: '/api/ml/calendars', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getAllCalendars(context); @@ -68,7 +67,7 @@ export function calendars({ router, getLicenseCheckResults }: RouteInitializatio params: schema.object({ calendarIds: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { let returnValue; try { const calendarIds = request.params.calendarIds.split(','); @@ -95,7 +94,7 @@ export function calendars({ router, getLicenseCheckResults }: RouteInitializatio body: schema.object({ ...calendarSchema }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const body = request.body; const resp = await newCalendar(context, body); @@ -117,7 +116,7 @@ export function calendars({ router, getLicenseCheckResults }: RouteInitializatio body: schema.object({ ...calendarSchema }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { calendarId } = request.params; const body = request.body; @@ -139,7 +138,7 @@ export function calendars({ router, getLicenseCheckResults }: RouteInitializatio params: schema.object({ calendarId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { calendarId } = request.params; const resp = await deleteCalendar(context, calendarId); diff --git a/x-pack/plugins/ml/server/routes/data_frame_analytics.ts b/x-pack/plugins/ml/server/routes/data_frame_analytics.ts index 0a93320c05eb5..7ed1aa02b24ab 100644 --- a/x-pack/plugins/ml/server/routes/data_frame_analytics.ts +++ b/x-pack/plugins/ml/server/routes/data_frame_analytics.ts @@ -7,7 +7,6 @@ import { schema } from '@kbn/config-schema'; import { wrapError } from '../client/error_wrapper'; import { analyticsAuditMessagesProvider } from '../models/data_frame_analytics/analytics_audit_messages'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization } from '../types'; import { dataAnalyticsJobConfigSchema, @@ -18,7 +17,7 @@ import { /** * Routes for the data frame analytics */ -export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function dataFrameAnalyticsRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup DataFrameAnalytics * @@ -36,7 +35,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou params: schema.object({ analyticsId: schema.maybe(schema.string()) }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser('ml.getDataFrameAnalytics'); return response.ok({ @@ -64,7 +63,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou params: schema.object({ analyticsId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { analyticsId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.getDataFrameAnalytics', { @@ -91,7 +90,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou path: '/api/ml/data_frame/analytics/_stats', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser( 'ml.getDataFrameAnalyticsStats' @@ -121,7 +120,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou params: schema.object({ analyticsId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { analyticsId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser( @@ -159,7 +158,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou body: schema.object(dataAnalyticsJobConfigSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { analyticsId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser( @@ -192,7 +191,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou body: schema.object({ ...dataAnalyticsEvaluateSchema }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser( 'ml.evaluateDataFrameAnalytics', @@ -232,7 +231,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou body: schema.object({ ...dataAnalyticsExplainSchema }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const results = await context.ml!.mlClient.callAsCurrentUser( 'ml.explainDataFrameAnalytics', @@ -267,7 +266,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { analyticsId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser( @@ -303,7 +302,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { analyticsId } = request.params; const results = await context.ml!.mlClient.callAsCurrentUser('ml.startDataFrameAnalytics', { @@ -337,7 +336,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const options: { analyticsId: string; force?: boolean | undefined } = { analyticsId: request.params.analyticsId, @@ -377,7 +376,7 @@ export function dataFrameAnalyticsRoutes({ router, getLicenseCheckResults }: Rou params: schema.object({ analyticsId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { analyticsId } = request.params; const { getAnalyticsAuditMessages } = analyticsAuditMessagesProvider( diff --git a/x-pack/plugins/ml/server/routes/data_visualizer.ts b/x-pack/plugins/ml/server/routes/data_visualizer.ts index e4d068784def1..b37c80b815e1a 100644 --- a/x-pack/plugins/ml/server/routes/data_visualizer.ts +++ b/x-pack/plugins/ml/server/routes/data_visualizer.ts @@ -12,7 +12,6 @@ import { dataVisualizerFieldStatsSchema, dataVisualizerOverallStatsSchema, } from './schemas/data_visualizer_schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization } from '../types'; function getOverallStats( @@ -68,7 +67,7 @@ function getStatsForFields( /** * Routes for the index data visualizer. */ -export function dataVisualizerRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function dataVisualizerRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup DataVisualizer * @@ -83,7 +82,7 @@ export function dataVisualizerRoutes({ router, getLicenseCheckResults }: RouteIn path: '/api/ml/data_visualizer/get_field_stats/{indexPatternTitle}', validate: dataVisualizerFieldStatsSchema, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const { params: { indexPatternTitle }, @@ -135,7 +134,7 @@ export function dataVisualizerRoutes({ router, getLicenseCheckResults }: RouteIn path: '/api/ml/data_visualizer/get_overall_stats/{indexPatternTitle}', validate: dataVisualizerOverallStatsSchema, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const { params: { indexPatternTitle }, diff --git a/x-pack/plugins/ml/server/routes/datafeeds.ts b/x-pack/plugins/ml/server/routes/datafeeds.ts index e3bce4c1328e4..c1ee839340996 100644 --- a/x-pack/plugins/ml/server/routes/datafeeds.ts +++ b/x-pack/plugins/ml/server/routes/datafeeds.ts @@ -5,7 +5,6 @@ */ import { schema } from '@kbn/config-schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { startDatafeedSchema, datafeedConfigSchema } from './schemas/datafeeds_schema'; @@ -13,7 +12,7 @@ import { startDatafeedSchema, datafeedConfigSchema } from './schemas/datafeeds_s /** * Routes for datafeed service */ -export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function dataFeedRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup DatafeedService * @@ -26,7 +25,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali path: '/api/ml/datafeeds', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await context.ml!.mlClient.callAsCurrentUser('ml.datafeeds'); @@ -53,7 +52,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali params: schema.object({ datafeedId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; const resp = await context.ml!.mlClient.callAsCurrentUser('ml.datafeeds', { datafeedId }); @@ -79,7 +78,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali path: '/api/ml/datafeeds/_stats', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await context.ml!.mlClient.callAsCurrentUser('ml.datafeedStats'); @@ -106,7 +105,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali params: schema.object({ datafeedId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; const resp = await context.ml!.mlClient.callAsCurrentUser('ml.datafeedStats', { @@ -137,7 +136,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali body: datafeedConfigSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; const resp = await context.ml!.mlClient.callAsCurrentUser('ml.addDatafeed', { @@ -169,7 +168,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali body: datafeedConfigSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; const resp = await context.ml!.mlClient.callAsCurrentUser('ml.updateDatafeed', { @@ -201,7 +200,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali query: schema.maybe(schema.object({ force: schema.maybe(schema.any()) })), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const options: { datafeedId: string; force?: boolean } = { datafeedId: request.params.jobId, @@ -237,7 +236,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali body: startDatafeedSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; const { start, end } = request.body; @@ -271,7 +270,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali params: schema.object({ datafeedId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; @@ -302,7 +301,7 @@ export function dataFeedRoutes({ router, getLicenseCheckResults }: RouteInitiali params: schema.object({ datafeedId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const datafeedId = request.params.datafeedId; const resp = await context.ml!.mlClient.callAsCurrentUser('ml.datafeedPreview', { diff --git a/x-pack/plugins/ml/server/routes/fields_service.ts b/x-pack/plugins/ml/server/routes/fields_service.ts index bc092190c2c62..f4d4e5759a105 100644 --- a/x-pack/plugins/ml/server/routes/fields_service.ts +++ b/x-pack/plugins/ml/server/routes/fields_service.ts @@ -5,7 +5,6 @@ */ import { RequestHandlerContext } from 'src/core/server'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { @@ -29,7 +28,7 @@ function getTimeFieldRange(context: RequestHandlerContext, payload: any) { /** * Routes for fields service */ -export function fieldsService({ router, getLicenseCheckResults }: RouteInitialization) { +export function fieldsService({ router, mlLicense }: RouteInitialization) { /** * @apiGroup FieldsService * @@ -44,7 +43,8 @@ export function fieldsService({ router, getLicenseCheckResults }: RouteInitializ body: getCardinalityOfFieldsSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getCardinalityOfFields(context, request.body); @@ -71,7 +71,7 @@ export function fieldsService({ router, getLicenseCheckResults }: RouteInitializ body: getTimeFieldRangeSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const resp = await getTimeFieldRange(context, request.body); diff --git a/x-pack/plugins/ml/server/routes/file_data_visualizer.ts b/x-pack/plugins/ml/server/routes/file_data_visualizer.ts index 1d724a8843350..69ec79704deee 100644 --- a/x-pack/plugins/ml/server/routes/file_data_visualizer.ts +++ b/x-pack/plugins/ml/server/routes/file_data_visualizer.ts @@ -18,7 +18,6 @@ import { Mappings, } from '../models/file_data_visualizer'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization } from '../types'; import { incrementFileDataVisualizerIndexCreationCount } from '../lib/ml_telemetry'; @@ -43,7 +42,7 @@ function importData( /** * Routes for the file data visualizer. */ -export function fileDataVisualizerRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function fileDataVisualizerRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup FileDataVisualizer * @@ -82,7 +81,7 @@ export function fileDataVisualizerRoutes({ router, getLicenseCheckResults }: Rou }, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const result = await analyzeFiles(context, request.body, request.query); return response.ok({ body: result }); @@ -124,7 +123,7 @@ export function fileDataVisualizerRoutes({ router, getLicenseCheckResults }: Rou }, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const { id } = request.query; const { index, data, settings, mappings, ingestPipeline } = request.body; diff --git a/x-pack/plugins/ml/server/routes/filters.ts b/x-pack/plugins/ml/server/routes/filters.ts index d5530668b2606..1f8891c247c67 100644 --- a/x-pack/plugins/ml/server/routes/filters.ts +++ b/x-pack/plugins/ml/server/routes/filters.ts @@ -6,7 +6,6 @@ import { RequestHandlerContext } from 'src/core/server'; import { schema } from '@kbn/config-schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { createFilterSchema, updateFilterSchema } from './schemas/filters_schema'; @@ -44,7 +43,7 @@ function deleteFilter(context: RequestHandlerContext, filterId: string) { return mgr.deleteFilter(filterId); } -export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function filtersRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup Filters * @@ -60,7 +59,7 @@ export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitializ path: '/api/ml/filters', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getAllFilters(context); @@ -90,7 +89,7 @@ export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitializ params: schema.object({ filterId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getFilter(context, request.params.filterId); return response.ok({ @@ -119,7 +118,7 @@ export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitializ body: schema.object(createFilterSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const body = request.body; const resp = await newFilter(context, body); @@ -151,7 +150,7 @@ export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitializ body: schema.object(updateFilterSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { filterId } = request.params; const body = request.body; @@ -182,7 +181,7 @@ export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitializ params: schema.object({ filterId: schema.string() }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { filterId } = request.params; const resp = await deleteFilter(context, filterId); @@ -212,7 +211,7 @@ export function filtersRoutes({ router, getLicenseCheckResults }: RouteInitializ path: '/api/ml/filters/_stats', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getAllFilterStats(context); diff --git a/x-pack/plugins/ml/server/routes/indices.ts b/x-pack/plugins/ml/server/routes/indices.ts index e01a7a0cbad28..fe66cc8b01396 100644 --- a/x-pack/plugins/ml/server/routes/indices.ts +++ b/x-pack/plugins/ml/server/routes/indices.ts @@ -6,13 +6,12 @@ import { schema } from '@kbn/config-schema'; import { wrapError } from '../client/error_wrapper'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization } from '../types'; /** * Indices routes. */ -export function indicesRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function indicesRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup Indices * @@ -30,7 +29,7 @@ export function indicesRoutes({ router, getLicenseCheckResults }: RouteInitializ }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { body: { index, fields: requestFields }, diff --git a/x-pack/plugins/ml/server/routes/job_audit_messages.ts b/x-pack/plugins/ml/server/routes/job_audit_messages.ts index 38df28e17ec0d..5c6d8023cc172 100644 --- a/x-pack/plugins/ml/server/routes/job_audit_messages.ts +++ b/x-pack/plugins/ml/server/routes/job_audit_messages.ts @@ -5,7 +5,6 @@ */ import { schema } from '@kbn/config-schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { jobAuditMessagesProvider } from '../models/job_audit_messages'; @@ -13,7 +12,7 @@ import { jobAuditMessagesProvider } from '../models/job_audit_messages'; /** * Routes for job audit message routes */ -export function jobAuditMessagesRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function jobAuditMessagesRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup JobAuditMessages * @@ -29,7 +28,7 @@ export function jobAuditMessagesRoutes({ router, getLicenseCheckResults }: Route query: schema.maybe(schema.object({ from: schema.maybe(schema.any()) })), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { getJobAuditMessages } = jobAuditMessagesProvider( context.ml!.mlClient.callAsCurrentUser @@ -62,7 +61,7 @@ export function jobAuditMessagesRoutes({ router, getLicenseCheckResults }: Route query: schema.maybe(schema.object({ from: schema.maybe(schema.any()) })), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { getJobAuditMessages } = jobAuditMessagesProvider( context.ml!.mlClient.callAsCurrentUser diff --git a/x-pack/plugins/ml/server/routes/job_service.ts b/x-pack/plugins/ml/server/routes/job_service.ts index e15888088d3a1..9ad2f80a1e66b 100644 --- a/x-pack/plugins/ml/server/routes/job_service.ts +++ b/x-pack/plugins/ml/server/routes/job_service.ts @@ -7,7 +7,6 @@ import Boom from 'boom'; import { schema } from '@kbn/config-schema'; import { IScopedClusterClient } from 'src/core/server'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { @@ -28,12 +27,11 @@ import { categorizationExamplesProvider } from '../models/job_service/new_job'; /** * Routes for job service */ -export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function jobServiceRoutes({ router, mlLicense }: RouteInitialization) { async function hasPermissionToCreateJobs( callAsCurrentUser: IScopedClusterClient['callAsCurrentUser'] ) { - const { isSecurityDisabled } = getLicenseCheckResults(); - if (isSecurityDisabled === true) { + if (mlLicense.isSecurityEnabled() === false) { return true; } @@ -63,7 +61,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(forceStartDatafeedSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { forceStartDatafeeds } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { datafeedIds, start, end } = request.body; @@ -92,7 +90,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(datafeedIdsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { stopDatafeeds } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { datafeedIds } = request.body; @@ -121,7 +119,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(jobIdsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { deleteJobs } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobIds } = request.body; @@ -150,7 +148,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(jobIdsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { closeJobs } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobIds } = request.body; @@ -179,7 +177,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(jobIdsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobsSummary } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobIds } = request.body; @@ -208,7 +206,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(jobsWithTimerangeSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobsWithTimerange } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { dateFormatTz } = request.body; @@ -237,7 +235,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(jobIdsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { createFullJobsList } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobIds } = request.body; @@ -264,7 +262,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia path: '/api/ml/jobs/groups', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { getAllGroups } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const resp = await getAllGroups(); @@ -292,7 +290,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(updateGroupsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { updateGroups } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobs } = request.body; @@ -319,7 +317,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia path: '/api/ml/jobs/deleting_jobs_tasks', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { deletingJobTasks } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const resp = await deletingJobTasks(); @@ -347,7 +345,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(jobIdsSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { jobsExist } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobIds } = request.body; @@ -377,7 +375,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia query: schema.maybe(schema.object({ rollup: schema.maybe(schema.string()) })), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { indexPattern } = request.params; const isRollup = request.query.rollup === 'true'; @@ -408,7 +406,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(chartSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { indexPatternTitle, @@ -461,7 +459,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(chartSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { indexPatternTitle, @@ -509,7 +507,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia path: '/api/ml/jobs/all_jobs_and_group_ids', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { getAllJobAndGroupIds } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const resp = await getAllJobAndGroupIds(); @@ -537,7 +535,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(lookBackProgressSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { getLookBackProgress } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobId, start, end } = request.body; @@ -566,7 +564,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(categorizationFieldExamplesSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { // due to the use of the _analyze endpoint which is called by the kibana user, // basic job creation privileges are required to use this endpoint @@ -625,7 +623,7 @@ export function jobServiceRoutes({ router, getLicenseCheckResults }: RouteInitia body: schema.object(topCategoriesSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { topCategories } = jobServiceProvider(context.ml!.mlClient.callAsCurrentUser); const { jobId, count } = request.body; diff --git a/x-pack/plugins/ml/server/routes/job_validation.ts b/x-pack/plugins/ml/server/routes/job_validation.ts index ae2e6885ba0f3..7d5a7a2285977 100644 --- a/x-pack/plugins/ml/server/routes/job_validation.ts +++ b/x-pack/plugins/ml/server/routes/job_validation.ts @@ -7,7 +7,6 @@ import Boom from 'boom'; import { RequestHandlerContext } from 'src/core/server'; import { schema, TypeOf } from '@kbn/config-schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { @@ -25,10 +24,7 @@ type CalculateModelMemoryLimitPayload = TypeOf; /** * Routes for job validation */ -export function jobValidationRoutes( - { getLicenseCheckResults, router }: RouteInitialization, - version: string -) { +export function jobValidationRoutes({ router, mlLicense }: RouteInitialization, version: string) { function calculateModelMemoryLimit( context: RequestHandlerContext, payload: CalculateModelMemoryLimitPayload @@ -70,13 +66,13 @@ export function jobValidationRoutes( body: estimateBucketSpanSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { let errorResp; const resp = await estimateBucketSpanFactory( context.ml!.mlClient.callAsCurrentUser, context.core.elasticsearch.adminClient.callAsInternalUser, - getLicenseCheckResults().isSecurityDisabled + mlLicense.isSecurityEnabled() === false )(request.body) // this catch gets triggered when the estimation code runs without error // but isn't able to come up with a bucket span estimation. @@ -117,7 +113,7 @@ export function jobValidationRoutes( body: modelMemoryLimitSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await calculateModelMemoryLimit(context, request.body); @@ -144,7 +140,7 @@ export function jobValidationRoutes( body: schema.object(validateCardinalitySchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await validateCardinality( context.ml!.mlClient.callAsCurrentUser, @@ -174,7 +170,7 @@ export function jobValidationRoutes( body: validateJobSchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { // version corresponds to the version used in documentation links. const resp = await validateJob( @@ -182,7 +178,7 @@ export function jobValidationRoutes( request.body, version, context.core.elasticsearch.adminClient.callAsInternalUser, - getLicenseCheckResults().isSecurityDisabled + mlLicense.isSecurityEnabled() === false ); return response.ok({ diff --git a/x-pack/plugins/ml/server/routes/license_check_pre_routing_factory.ts b/x-pack/plugins/ml/server/routes/license_check_pre_routing_factory.ts deleted file mode 100644 index a371af1abf2d1..0000000000000 --- a/x-pack/plugins/ml/server/routes/license_check_pre_routing_factory.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { - KibanaRequest, - KibanaResponseFactory, - RequestHandler, - RequestHandlerContext, -} from 'src/core/server'; -import { LicenseCheckResult } from '../types'; - -export const licensePreRoutingFactory = ( - getLicenseCheckResults: () => LicenseCheckResult, - handler: RequestHandler -): RequestHandler => { - // License checking and enable/disable logic - return function licensePreRouting( - ctx: RequestHandlerContext, - request: KibanaRequest, - response: KibanaResponseFactory - ) { - const licenseCheckResults = getLicenseCheckResults(); - - if (!licenseCheckResults.isAvailable) { - return response.forbidden(); - } - - return handler(ctx, request, response); - }; -}; diff --git a/x-pack/plugins/ml/server/routes/modules.ts b/x-pack/plugins/ml/server/routes/modules.ts index c9b005d4e43f9..a51718acb7425 100644 --- a/x-pack/plugins/ml/server/routes/modules.ts +++ b/x-pack/plugins/ml/server/routes/modules.ts @@ -9,7 +9,6 @@ import { RequestHandlerContext } from 'kibana/server'; import { DatafeedOverride, JobOverride } from '../../../../legacy/plugins/ml/common/types/modules'; import { wrapError } from '../client/error_wrapper'; import { DataRecognizer } from '../models/data_recognizer'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { getModuleIdParamSchema, setupModuleBodySchema } from './schemas/modules'; import { RouteInitialization } from '../types'; @@ -65,7 +64,7 @@ function dataRecognizerJobsExist(context: RequestHandlerContext, moduleId: strin /** * Recognizer routes. */ -export function dataRecognizer({ router, getLicenseCheckResults }: RouteInitialization) { +export function dataRecognizer({ router, mlLicense }: RouteInitialization) { /** * @apiGroup DataRecognizer * @@ -84,7 +83,7 @@ export function dataRecognizer({ router, getLicenseCheckResults }: RouteInitiali }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { indexPatternTitle } = request.params; const results = await recognize(context, indexPatternTitle); @@ -114,7 +113,7 @@ export function dataRecognizer({ router, getLicenseCheckResults }: RouteInitiali }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { let { moduleId } = request.params; if (moduleId === '') { @@ -150,7 +149,7 @@ export function dataRecognizer({ router, getLicenseCheckResults }: RouteInitiali body: setupModuleBodySchema, }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { moduleId } = request.params; @@ -207,7 +206,7 @@ export function dataRecognizer({ router, getLicenseCheckResults }: RouteInitiali }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const { moduleId } = request.params; const result = await dataRecognizerJobsExist(context, moduleId); diff --git a/x-pack/plugins/ml/server/routes/notification_settings.ts b/x-pack/plugins/ml/server/routes/notification_settings.ts index b68d2441333f9..59458b1e486db 100644 --- a/x-pack/plugins/ml/server/routes/notification_settings.ts +++ b/x-pack/plugins/ml/server/routes/notification_settings.ts @@ -4,14 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; /** * Routes for notification settings */ -export function notificationRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function notificationRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup NotificationSettings * @@ -24,7 +23,7 @@ export function notificationRoutes({ router, getLicenseCheckResults }: RouteInit path: '/api/ml/notification_settings', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const params = { includeDefaults: true, diff --git a/x-pack/plugins/ml/server/routes/results_service.ts b/x-pack/plugins/ml/server/routes/results_service.ts index 77c998acc9f27..7a12e5196b9a5 100644 --- a/x-pack/plugins/ml/server/routes/results_service.ts +++ b/x-pack/plugins/ml/server/routes/results_service.ts @@ -6,7 +6,6 @@ import { RequestHandlerContext } from 'src/core/server'; import { schema } from '@kbn/config-schema'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { wrapError } from '../client/error_wrapper'; import { RouteInitialization } from '../types'; import { @@ -74,7 +73,7 @@ function getPartitionFieldsValues(context: RequestHandlerContext, payload: any) /** * Routes for results service */ -export function resultsServiceRoutes({ router, getLicenseCheckResults }: RouteInitialization) { +export function resultsServiceRoutes({ router, mlLicense }: RouteInitialization) { /** * @apiGroup ResultsService * @@ -89,7 +88,7 @@ export function resultsServiceRoutes({ router, getLicenseCheckResults }: RouteIn body: schema.object(anomaliesTableDataSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getAnomaliesTableData(context, request.body); @@ -116,7 +115,7 @@ export function resultsServiceRoutes({ router, getLicenseCheckResults }: RouteIn body: schema.object(categoryDefinitionSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getCategoryDefinition(context, request.body); @@ -143,7 +142,7 @@ export function resultsServiceRoutes({ router, getLicenseCheckResults }: RouteIn body: schema.object(maxAnomalyScoreSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getMaxAnomalyScore(context, request.body); @@ -170,7 +169,7 @@ export function resultsServiceRoutes({ router, getLicenseCheckResults }: RouteIn body: schema.object(categoryExamplesSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getCategoryExamples(context, request.body); @@ -197,7 +196,7 @@ export function resultsServiceRoutes({ router, getLicenseCheckResults }: RouteIn body: schema.object(partitionFieldValuesSchema), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { const resp = await getPartitionFieldsValues(context, request.body); diff --git a/x-pack/plugins/ml/server/routes/system.ts b/x-pack/plugins/ml/server/routes/system.ts index 36a9ea1447f58..a0d7d312c04d4 100644 --- a/x-pack/plugins/ml/server/routes/system.ts +++ b/x-pack/plugins/ml/server/routes/system.ts @@ -12,14 +12,13 @@ import { wrapError } from '../client/error_wrapper'; import { mlLog } from '../client/log'; import { privilegesProvider } from '../lib/check_privileges'; import { spacesUtilsProvider } from '../lib/spaces_utils'; -import { licensePreRoutingFactory } from './license_check_pre_routing_factory'; import { RouteInitialization, SystemRouteDeps } from '../types'; /** * System routes */ export function systemRoutes( - { getLicenseCheckResults, router }: RouteInitialization, + { router, mlLicense }: RouteInitialization, { spacesPlugin, cloud }: SystemRouteDeps ) { async function getNodeCount(context: RequestHandlerContext) { @@ -56,7 +55,7 @@ export function systemRoutes( body: schema.maybe(schema.any()), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { let upgradeInProgress = false; try { @@ -77,7 +76,7 @@ export function systemRoutes( } } - if (getLicenseCheckResults().isSecurityDisabled) { + if (mlLicense.isSecurityEnabled() === false) { // if xpack.security.enabled has been explicitly set to false // return that security is disabled and don't call the privilegeCheck endpoint return response.ok({ @@ -116,7 +115,7 @@ export function systemRoutes( }), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const ignoreSpaces = request.query && request.query.ignoreSpaces === 'true'; // if spaces is disabled force isMlEnabledInSpace to be true @@ -127,7 +126,7 @@ export function systemRoutes( const { getPrivileges } = privilegesProvider( context.ml!.mlClient.callAsCurrentUser, - getLicenseCheckResults(), + mlLicense, isMlEnabledInSpace, ignoreSpaces ); @@ -152,11 +151,11 @@ export function systemRoutes( path: '/api/ml/ml_node_count', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { // check for basic license first for consistency with other // security disabled checks - if (getLicenseCheckResults().isSecurityDisabled) { + if (mlLicense.isSecurityEnabled() === false) { return response.ok({ body: await getNodeCount(context), }); @@ -203,7 +202,7 @@ export function systemRoutes( path: '/api/ml/info', validate: false, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.basicLicenseAPIGuard(async (context, request, response) => { try { const info = await context.ml!.mlClient.callAsCurrentUser('ml.info'); const cloudId = cloud && cloud.cloudId; @@ -231,7 +230,7 @@ export function systemRoutes( body: schema.maybe(schema.any()), }, }, - licensePreRoutingFactory(getLicenseCheckResults, async (context, request, response) => { + mlLicense.fullLicenseAPIGuard(async (context, request, response) => { try { return response.ok({ body: await context.ml!.mlClient.callAsCurrentUser('search', request.body), diff --git a/x-pack/plugins/ml/server/types.ts b/x-pack/plugins/ml/server/types.ts index 550abadb3c06f..aeb4c505ec55e 100644 --- a/x-pack/plugins/ml/server/types.ts +++ b/x-pack/plugins/ml/server/types.ts @@ -12,6 +12,7 @@ import { SecurityPluginSetup } from '../../security/server'; import { PluginSetupContract as FeaturesPluginSetup } from '../../features/server'; import { LicensingPluginSetup } from '../../licensing/server'; import { SpacesPluginSetup } from '../../spaces/server'; +import { MlServerLicense } from './lib/license'; export interface LicenseCheckResult { isAvailable: boolean; @@ -39,5 +40,5 @@ export interface PluginsSetup { export interface RouteInitialization { router: IRouter; - getLicenseCheckResults: () => LicenseCheckResult; + mlLicense: MlServerLicense; } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index dbab88da973a1..84651319775fd 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7533,9 +7533,6 @@ "xpack.ml.calendarsList.table.idColumnName": "ID", "xpack.ml.calendarsList.table.jobsColumnName": "ジョブ", "xpack.ml.calendarsList.table.newButtonLabel": "新規", - "xpack.ml.checkLicense.licenseHasExpiredMessage": "{licenseTypeName} 機械学習ライセンスが期限切れになりました。", - "xpack.ml.checkLicense.licenseInformationNotAvailableThisTimeMessage": "現在ライセンス情報が利用できないため機械学習を使用できません。", - "xpack.ml.checkLicense.mlIsUnavailableMessage": "機械学習が利用できません", "xpack.ml.controls.checkboxShowCharts.showChartsCheckboxLabel": "チャートを表示", "xpack.ml.controls.selectInterval.autoLabel": "自動", "xpack.ml.controls.selectInterval.dayLabel": "1 日", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index afd12dba8ada7..a9dccd20fb916 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7533,9 +7533,6 @@ "xpack.ml.calendarsList.table.idColumnName": "ID", "xpack.ml.calendarsList.table.jobsColumnName": "作业", "xpack.ml.calendarsList.table.newButtonLabel": "新建", - "xpack.ml.checkLicense.licenseHasExpiredMessage": "您的 {licenseTypeName} Machine Learning 许可证已过期。", - "xpack.ml.checkLicense.licenseInformationNotAvailableThisTimeMessage": "您不能使用 Machine Learning,因为许可证信息当前不可用。", - "xpack.ml.checkLicense.mlIsUnavailableMessage": "Machine Learning 不可用", "xpack.ml.controls.checkboxShowCharts.showChartsCheckboxLabel": "显示图表", "xpack.ml.controls.selectInterval.autoLabel": "自动", "xpack.ml.controls.selectInterval.dayLabel": "1 天", From 114c4cb85e118a2777594bee702336d1c3f62536 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Wed, 4 Mar 2020 11:25:39 +0100 Subject: [PATCH 5/9] [APM] Make typescript optimization process compatible with NP (#58984) * [APM] Make typescript optimization process compatible with NP Rather than creating an extra tsconfig.json file in the APM folder, simply change the one in x-pack root, and include APM files from both legacy + NP. * Update dev_docs/typescript.md * Use spread op instead of assign * Use console.error instead of console.log --- .gitignore | 2 - .../legacy/plugins/apm/dev_docs/typescript.md | 2 +- .../plugins/apm/scripts/optimize-tsconfig.js | 5 +- .../apm/scripts/optimize-tsconfig/optimize.js | 54 ++++++++++--------- .../apm/scripts/optimize-tsconfig/paths.js | 4 +- .../scripts/optimize-tsconfig/tsconfig.json | 9 ++-- .../scripts/optimize-tsconfig/unoptimize.js | 21 ++------ .../apm/scripts/unoptimize-tsconfig.js | 5 +- x-pack/plugins/apm/tsconfig.json | 3 -- 9 files changed, 47 insertions(+), 58 deletions(-) delete mode 100644 x-pack/plugins/apm/tsconfig.json diff --git a/.gitignore b/.gitignore index 02b20da297fc6..efb5c57774633 100644 --- a/.gitignore +++ b/.gitignore @@ -44,5 +44,3 @@ package-lock.json *.sublime-* npm-debug.log* .tern-project -x-pack/legacy/plugins/apm/tsconfig.json -apm.tsconfig.json diff --git a/x-pack/legacy/plugins/apm/dev_docs/typescript.md b/x-pack/legacy/plugins/apm/dev_docs/typescript.md index 105c6edabf48f..6858e93ec09e0 100644 --- a/x-pack/legacy/plugins/apm/dev_docs/typescript.md +++ b/x-pack/legacy/plugins/apm/dev_docs/typescript.md @@ -1,6 +1,6 @@ #### Optimizing TypeScript -Kibana and X-Pack are very large TypeScript projects, and it comes at a cost. Editor responsiveness is not great, and the CLI type check for X-Pack takes about a minute. To get faster feedback, we create a smaller APM TypeScript project that only type checks the APM project and the files it uses. This optimization consists of creating a `tsconfig.json` in APM that includes the Kibana/X-Pack typings, and editing the Kibana/X-Pack configurations to not include any files, or removing the configurations altogether. The script configures git to ignore any changes in these files, and has an undo script as well. +Kibana and X-Pack are very large TypeScript projects, and it comes at a cost. Editor responsiveness is not great, and the CLI type check for X-Pack takes about a minute. To get faster feedback, we create a smaller APM TypeScript project that only type checks the APM project and the files it uses. This optimization consists of modifying `tsconfig.json` in the X-Pack folder to only include APM files, and editing the Kibana configuration to not include any files. The script configures git to ignore any changes in these files, and has an undo script as well. To run the optimization: diff --git a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig.js b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig.js index c1f1472dc9024..745f0db45e4fa 100644 --- a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig.js +++ b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig.js @@ -6,4 +6,7 @@ const { optimizeTsConfig } = require('./optimize-tsconfig/optimize'); -optimizeTsConfig(); +optimizeTsConfig().catch(err => { + console.error(err); + process.exit(1); +}); diff --git a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/optimize.js b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/optimize.js index ef9e393db3eca..3a5809e564691 100644 --- a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/optimize.js +++ b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/optimize.js @@ -7,29 +7,26 @@ /* eslint-disable import/no-extraneous-dependencies */ const fs = require('fs'); -const promisify = require('util').promisify; +const { promisify } = require('util'); const path = require('path'); const json5 = require('json5'); const execa = require('execa'); -const copyFile = promisify(fs.copyFile); -const rename = promisify(fs.rename); const readFile = promisify(fs.readFile); const writeFile = promisify(fs.writeFile); const { xpackRoot, kibanaRoot, - apmRoot, tsconfigTpl, filesToIgnore } = require('./paths'); const { unoptimizeTsConfig } = require('./unoptimize'); -function updateParentTsConfigs() { +function prepareParentTsConfigs() { return Promise.all( [ - path.resolve(xpackRoot, 'apm.tsconfig.json'), + path.resolve(xpackRoot, 'tsconfig.json'), path.resolve(kibanaRoot, 'tsconfig.json') ].map(async filename => { const config = json5.parse(await readFile(filename, 'utf-8')); @@ -50,32 +47,37 @@ function updateParentTsConfigs() { ); } +async function addApmFilesToXpackTsConfig() { + const template = json5.parse(await readFile(tsconfigTpl, 'utf-8')); + const xpackTsConfig = path.join(xpackRoot, 'tsconfig.json'); + const config = json5.parse(await readFile(xpackTsConfig, 'utf-8')); + + await writeFile( + xpackTsConfig, + JSON.stringify({ ...config, ...template }, null, 2), + { encoding: 'utf-8' } + ); +} + async function setIgnoreChanges() { for (const filename of filesToIgnore) { await execa('git', ['update-index', '--skip-worktree', filename]); } } -const optimizeTsConfig = () => { - return unoptimizeTsConfig() - .then(() => - Promise.all([ - copyFile(tsconfigTpl, path.resolve(apmRoot, './tsconfig.json')), - rename( - path.resolve(xpackRoot, 'tsconfig.json'), - path.resolve(xpackRoot, 'apm.tsconfig.json') - ) - ]) - ) - .then(() => updateParentTsConfigs()) - .then(() => setIgnoreChanges()) - .then(() => { - // eslint-disable-next-line no-console - console.log( - 'Created an optimized tsconfig.json for APM. To undo these changes, run `./scripts/unoptimize-tsconfig.js`' - ); - }); -}; +async function optimizeTsConfig() { + await unoptimizeTsConfig(); + + await prepareParentTsConfigs(); + + await addApmFilesToXpackTsConfig(); + + await setIgnoreChanges(); + // eslint-disable-next-line no-console + console.log( + 'Created an optimized tsconfig.json for APM. To undo these changes, run `./scripts/unoptimize-tsconfig.js`' + ); +} module.exports = { optimizeTsConfig diff --git a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/paths.js b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/paths.js index cdb8e4d878ea3..cab55a2526202 100644 --- a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/paths.js +++ b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/paths.js @@ -5,8 +5,7 @@ */ const path = require('path'); -const apmRoot = path.resolve(__dirname, '../..'); -const xpackRoot = path.resolve(apmRoot, '../../..'); +const xpackRoot = path.resolve(__dirname, '../../../../..'); const kibanaRoot = path.resolve(xpackRoot, '..'); const tsconfigTpl = path.resolve(__dirname, './tsconfig.json'); @@ -17,7 +16,6 @@ const filesToIgnore = [ ]; module.exports = { - apmRoot, xpackRoot, kibanaRoot, tsconfigTpl, diff --git a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/tsconfig.json b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/tsconfig.json index 5021694ff04ac..8f6b0f35e4b52 100644 --- a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/tsconfig.json +++ b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/tsconfig.json @@ -1,12 +1,11 @@ { - "extends": "../../../apm.tsconfig.json", "include": [ - "./**/*", - "../../../plugins/apm/**/*", - "../../../typings/**/*" + "./plugins/apm/**/*", + "./legacy/plugins/apm/**/*", + "./typings/**/*" ], "exclude": [ "**/__fixtures__/**/*", - "./e2e/cypress/**/*" + "./legacy/plugins/apm/e2e/cypress/**/*" ] } diff --git a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/unoptimize.js b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/unoptimize.js index 3fdf2a97363a8..33def8c2579fa 100644 --- a/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/unoptimize.js +++ b/x-pack/legacy/plugins/apm/scripts/optimize-tsconfig/unoptimize.js @@ -5,32 +5,21 @@ */ /* eslint-disable import/no-extraneous-dependencies */ -const path = require('path'); const execa = require('execa'); -const fs = require('fs'); -const promisify = require('util').promisify; -const removeFile = promisify(fs.unlink); -const exists = promisify(fs.exists); -const { apmRoot, filesToIgnore } = require('./paths'); +const { filesToIgnore } = require('./paths'); async function unoptimizeTsConfig() { for (const filename of filesToIgnore) { await execa('git', ['update-index', '--no-skip-worktree', filename]); await execa('git', ['checkout', filename]); } - - const apmTsConfig = path.join(apmRoot, 'tsconfig.json'); - if (await exists(apmTsConfig)) { - await removeFile(apmTsConfig); - } } module.exports = { - unoptimizeTsConfig: () => { - return unoptimizeTsConfig().then(() => { - // eslint-disable-next-line no-console - console.log('Removed APM TypeScript optimizations'); - }); + unoptimizeTsConfig: async () => { + await unoptimizeTsConfig(); + // eslint-disable-next-line no-console + console.log('Removed APM TypeScript optimizations'); } }; diff --git a/x-pack/legacy/plugins/apm/scripts/unoptimize-tsconfig.js b/x-pack/legacy/plugins/apm/scripts/unoptimize-tsconfig.js index 5362b6a6d52e2..e33dc502a9587 100644 --- a/x-pack/legacy/plugins/apm/scripts/unoptimize-tsconfig.js +++ b/x-pack/legacy/plugins/apm/scripts/unoptimize-tsconfig.js @@ -6,4 +6,7 @@ const { unoptimizeTsConfig } = require('./optimize-tsconfig/unoptimize'); -unoptimizeTsConfig(); +unoptimizeTsConfig().catch(err => { + console.error(err); + process.exit(1); +}); diff --git a/x-pack/plugins/apm/tsconfig.json b/x-pack/plugins/apm/tsconfig.json deleted file mode 100644 index 618c6c3e97b57..0000000000000 --- a/x-pack/plugins/apm/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../../tsconfig.json" -} From be43518ee32a80c9722d21035aef67cff787f986 Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Wed, 4 Mar 2020 11:30:45 +0100 Subject: [PATCH 6/9] visualizations plugin np_ready (#59149) --- .../kibana/public/discover/build_services.ts | 3 +-- .../np_ready/embeddable/search_embeddable.ts | 2 +- .../discover/np_ready/embeddable/types.ts | 2 +- .../public/components/sidebar/sidebar.tsx | 2 +- .../components/sidebar/sidebar_title.tsx | 2 +- .../public/legacy_imports.ts | 2 -- .../public/metrics_type.ts | 2 +- .../vis_type_vega/public/legacy_imports.ts | 2 -- .../vis_type_vega/public/vega_type.ts | 3 +-- .../core_plugins/visualizations/index.ts | 2 +- .../visualizations/public/index.ts | 9 -------- .../visualizations/public/legacy_mocks.ts | 21 ------------------- .../public/np_ready/kibana.json | 2 +- .../public/np_ready/public/index.ts | 1 + .../public/np_ready/public/legacy.ts | 8 ++++++- .../public/legacy/build_pipeline.test.ts | 5 +++-- .../np_ready/public/legacy/build_pipeline.ts | 2 +- .../misc/default_feedback_message.test.ts} | 15 +++++++------ .../public/misc/default_feedback_message.ts} | 2 +- .../public/np_ready/public/mocks.ts | 11 +++++----- .../public/np_ready/public/plugin.ts | 8 ++++++- .../public/np_ready/public/services.ts | 5 +++++ .../public/np_ready/public/types.ts | 2 +- .../public/np_ready/public/vis.ts | 2 +- .../public/np_ready/public/vis_impl.js | 7 +++---- src/plugins/discover/public/index.ts | 1 + .../discover/public/saved_searches/types.ts} | 4 ++-- .../public/app/lib/kibana/kibana_context.tsx | 2 +- .../legacy/plugins/transform/public/shim.ts | 2 +- .../translations/translations/ja-JP.json | 2 +- .../translations/translations/zh-CN.json | 2 +- 31 files changed, 58 insertions(+), 77 deletions(-) delete mode 100644 src/legacy/core_plugins/visualizations/public/legacy_mocks.ts rename src/legacy/core_plugins/visualizations/public/{legacy_imports.ts => np_ready/public/misc/default_feedback_message.test.ts} (68%) rename src/legacy/{ui/public/vis/default_feedback_message.js => core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.ts} (91%) rename src/{legacy/core_plugins/kibana/public/discover/np_ready/types.d.ts => plugins/discover/public/saved_searches/types.ts} (89%) diff --git a/src/legacy/core_plugins/kibana/public/discover/build_services.ts b/src/legacy/core_plugins/kibana/public/discover/build_services.ts index 6b0d2368cc1a2..c58307adaf38c 100644 --- a/src/legacy/core_plugins/kibana/public/discover/build_services.ts +++ b/src/legacy/core_plugins/kibana/public/discover/build_services.ts @@ -33,11 +33,10 @@ import { import { DiscoverStartPlugins } from './plugin'; import { SharePluginStart } from '../../../../../plugins/share/public'; -import { SavedSearch } from './np_ready/types'; import { DocViewsRegistry } from './np_ready/doc_views/doc_views_registry'; import { ChartsPluginStart } from '../../../../../plugins/charts/public'; import { VisualizationsStart } from '../../../visualizations/public'; -import { createSavedSearchesLoader } from '../../../../../plugins/discover/public'; +import { createSavedSearchesLoader, SavedSearch } from '../../../../../plugins/discover/public'; export interface DiscoverServices { addBasePath: (path: string) => string; diff --git a/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/search_embeddable.ts b/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/search_embeddable.ts index 738a74d93449d..0aaf3e7f156c1 100644 --- a/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/search_embeddable.ts +++ b/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/search_embeddable.ts @@ -37,7 +37,6 @@ import { Embeddable, } from '../../../../../embeddable_api/public/np_ready/public'; import * as columnActions from '../angular/doc_table/actions/columns'; -import { SavedSearch } from '../types'; import searchTemplate from './search_template.html'; import { ISearchEmbeddable, SearchInput, SearchOutput } from './types'; import { SortOrder } from '../angular/doc_table/components/table_header/helpers'; @@ -51,6 +50,7 @@ import { ISearchSource, } from '../../kibana_services'; import { SEARCH_EMBEDDABLE_TYPE } from './constants'; +import { SavedSearch } from '../../../../../../../plugins/discover/public'; interface SearchScope extends ng.IScope { columns?: string[]; diff --git a/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/types.ts b/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/types.ts index e7aa390cda858..b20e9b2faf7c4 100644 --- a/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/types.ts +++ b/src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/types.ts @@ -18,9 +18,9 @@ */ import { EmbeddableInput, EmbeddableOutput, IEmbeddable } from 'src/plugins/embeddable/public'; -import { SavedSearch } from '../types'; import { SortOrder } from '../angular/doc_table/components/table_header/helpers'; import { Filter, IIndexPattern, TimeRange, Query } from '../../../../../../../plugins/data/public'; +import { SavedSearch } from '../../../../../../../plugins/discover/public'; export interface SearchInput extends EmbeddableInput { timeRange: TimeRange; diff --git a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx index 425245fe91fed..a70ffd3cd88e1 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx @@ -29,8 +29,8 @@ import { DefaultEditorControls } from './controls'; import { setStateParamValue, useEditorReducer, useEditorFormState, discardChanges } from './state'; import { DefaultEditorAggCommonProps } from '../agg_common_props'; import { SidebarTitle } from './sidebar_title'; -import { SavedSearch } from '../../../../kibana/public/discover/np_ready/types'; import { PersistedState } from '../../../../../../plugins/visualizations/public'; +import { SavedSearch } from '../../../../../../plugins/discover/public'; interface DefaultEditorSideBarProps { isCollapsed: boolean; diff --git a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx index 3fd82f1c4a2b6..876404851aed4 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar_title.tsx @@ -35,7 +35,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { Vis } from 'src/legacy/core_plugins/visualizations/public'; -import { SavedSearch } from '../../../../kibana/public/discover/np_ready/types'; +import { SavedSearch } from '../../../../../../plugins/discover/public'; interface LinkedSearchProps { savedSearch: SavedSearch; diff --git a/src/legacy/core_plugins/vis_type_timeseries/public/legacy_imports.ts b/src/legacy/core_plugins/vis_type_timeseries/public/legacy_imports.ts index a2952b2c83afd..7cf0a12e8567c 100644 --- a/src/legacy/core_plugins/vis_type_timeseries/public/legacy_imports.ts +++ b/src/legacy/core_plugins/vis_type_timeseries/public/legacy_imports.ts @@ -17,7 +17,5 @@ * under the License. */ -// @ts-ignore -export { defaultFeedbackMessage } from 'ui/vis/default_feedback_message'; // @ts-ignore export { timezoneProvider } from 'ui/vis/lib/timezone'; diff --git a/src/legacy/core_plugins/vis_type_timeseries/public/metrics_type.ts b/src/legacy/core_plugins/vis_type_timeseries/public/metrics_type.ts index 01750ee0c448d..135cc1e181432 100644 --- a/src/legacy/core_plugins/vis_type_timeseries/public/metrics_type.ts +++ b/src/legacy/core_plugins/vis_type_timeseries/public/metrics_type.ts @@ -18,7 +18,6 @@ */ import { i18n } from '@kbn/i18n'; -import { defaultFeedbackMessage } from './legacy_imports'; // @ts-ignore import { metricsRequestHandler } from './request_handler'; @@ -26,6 +25,7 @@ import { metricsRequestHandler } from './request_handler'; import { EditorController } from './editor_controller'; // @ts-ignore import { PANEL_TYPES } from '../../../../plugins/vis_type_timeseries/common/panel_types'; +import { defaultFeedbackMessage } from '../../visualizations/public'; export const metricsVisDefinition = { name: 'metrics', diff --git a/src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts b/src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts index 9e1067ed9099a..b868321d6310f 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts +++ b/src/legacy/core_plugins/vis_type_vega/public/legacy_imports.ts @@ -17,8 +17,6 @@ * under the License. */ -// @ts-ignore -export { defaultFeedbackMessage } from 'ui/vis/default_feedback_message'; // @ts-ignore export { KibanaMapLayer } from 'ui/vis/map/kibana_map_layer'; // @ts-ignore diff --git a/src/legacy/core_plugins/vis_type_vega/public/vega_type.ts b/src/legacy/core_plugins/vis_type_vega/public/vega_type.ts index 1d4655b4d525f..a84948f725e0a 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/vega_type.ts +++ b/src/legacy/core_plugins/vis_type_vega/public/vega_type.ts @@ -19,8 +19,7 @@ import { i18n } from '@kbn/i18n'; // @ts-ignore -import { defaultFeedbackMessage } from './legacy_imports'; -import { Status } from '../../visualizations/public'; +import { Status, defaultFeedbackMessage } from '../../visualizations/public'; import { DefaultEditorSize } from '../../vis_default_editor/public'; import { VegaVisualizationDependencies } from './plugin'; import { VegaVisEditor } from './components'; diff --git a/src/legacy/core_plugins/visualizations/index.ts b/src/legacy/core_plugins/visualizations/index.ts index 3c22f22f63682..a2779cfe4346d 100644 --- a/src/legacy/core_plugins/visualizations/index.ts +++ b/src/legacy/core_plugins/visualizations/index.ts @@ -24,7 +24,7 @@ export const visualizations: LegacyPluginInitializer = kibana => new kibana.Plugin({ id: 'visualizations', publicDir: resolve(__dirname, 'public'), - require: ['vis_default_editor'], + require: [], uiExports: { styleSheetPaths: resolve(__dirname, 'public/index.scss'), }, diff --git a/src/legacy/core_plugins/visualizations/public/index.ts b/src/legacy/core_plugins/visualizations/public/index.ts index 4557cf9ab22f1..f5590c745b3f9 100644 --- a/src/legacy/core_plugins/visualizations/public/index.ts +++ b/src/legacy/core_plugins/visualizations/public/index.ts @@ -17,15 +17,6 @@ * under the License. */ -/** - * Static legacy code which hasn't been moved to this plugin yet, but - * should be eventually. - * - * @public - */ -// @ts-ignore Used only by tsvb, vega, input control vis -export { defaultFeedbackMessage } from 'ui/vis/default_feedback_message'; - /** * Static np-ready code, re-exported here so consumers can import from * `src/legacy/core_plugins/visualizations/public` diff --git a/src/legacy/core_plugins/visualizations/public/legacy_mocks.ts b/src/legacy/core_plugins/visualizations/public/legacy_mocks.ts deleted file mode 100644 index 6cd57bb88bc26..0000000000000 --- a/src/legacy/core_plugins/visualizations/public/legacy_mocks.ts +++ /dev/null @@ -1,21 +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 -export { searchSourceMock } from '../../../../plugins/data/public/search/search_source/mocks'; diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/kibana.json b/src/legacy/core_plugins/visualizations/public/np_ready/kibana.json index d4f9bd327d6ac..f8637a71b2d35 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/kibana.json +++ b/src/legacy/core_plugins/visualizations/public/np_ready/kibana.json @@ -3,5 +3,5 @@ "version": "kibana", "server": false, "ui": true, - "requiredPlugins": ["data", "search", "expressions", "uiActions"] + "requiredPlugins": ["data", "expressions", "uiActions", "embeddable", "usageCollection"] } diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/index.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/index.ts index 34ffb698e5f8c..7688a7769cf79 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/index.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/index.ts @@ -59,3 +59,4 @@ export { buildPipeline, buildVislibDimensions, SchemaConfig } from './legacy/bui export { updateOldState } from './legacy/vis_update_state'; export { calculateObjectHash } from './legacy/calculate_object_hash'; export { createSavedVisLoader } from './saved_visualizations/saved_visualizations'; +export { defaultFeedbackMessage } from './misc/default_feedback_message'; diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy.ts index 57c686b6e9cb0..fdbd1d5a61ce7 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy.ts @@ -19,6 +19,7 @@ /* eslint-disable @kbn/eslint/no-restricted-paths */ import { npSetup, npStart } from 'ui/new_platform'; +import { start as legacyDataStart } from '../../../../data/public/legacy'; /* eslint-enable @kbn/eslint/no-restricted-paths */ import { PluginInitializerContext } from '../../../../../../core/public'; @@ -28,4 +29,9 @@ import { plugin } from '.'; const pluginInstance = plugin({} as PluginInitializerContext); export const setup = pluginInstance.setup(npSetup.core, npSetup.plugins); -export const start = pluginInstance.start(npStart.core, npStart.plugins); +export const start = pluginInstance.start(npStart.core, { + ...npStart.plugins, + __LEGACY: { + aggs: legacyDataStart.search.aggs, + }, +}); diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.test.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.test.ts index 1adf6fd23f5a5..09037d445baf5 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.test.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.test.ts @@ -27,8 +27,9 @@ import { Schemas, } from './build_pipeline'; import { Vis } from '..'; -import { IAggConfig } from '../../../legacy_imports'; -import { searchSourceMock } from '../../../legacy_mocks'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { searchSourceMock } from '../../../../../../../plugins/data/public/search/search_source/mocks'; +import { IAggConfig } from '../../../../../data/public'; jest.mock('ui/new_platform'); diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.ts index 155213b4103b0..265ac8f8a84f7 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/legacy/build_pipeline.ts @@ -21,8 +21,8 @@ import { cloneDeep, get } from 'lodash'; import moment from 'moment'; import { SerializedFieldFormat } from '../../../../../../../plugins/expressions/public'; import { fieldFormats, ISearchSource } from '../../../../../../../plugins/data/public'; -import { IAggConfig, setBounds, isDateHistogramBucketAggConfig } from '../../../legacy_imports'; import { Vis, VisParams } from '../types'; +import { IAggConfig, isDateHistogramBucketAggConfig, setBounds } from '../../../../../data/public'; interface SchemaConfigParams { precision?: number; diff --git a/src/legacy/core_plugins/visualizations/public/legacy_imports.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.test.ts similarity index 68% rename from src/legacy/core_plugins/visualizations/public/legacy_imports.ts rename to src/legacy/core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.test.ts index 0a3b1938436c0..5c1afa4634b71 100644 --- a/src/legacy/core_plugins/visualizations/public/legacy_imports.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.test.ts @@ -17,11 +17,10 @@ * under the License. */ -export { - IAggConfig, - IAggConfigs, - isDateHistogramBucketAggConfig, - setBounds, -} from '../../data/public'; -export { createAggConfigs } from 'ui/agg_types'; -export { createSavedSearchesLoader } from '../../../../plugins/discover/public'; +import { defaultFeedbackMessage } from './default_feedback_message'; + +test('default feedback message with link', () => { + expect(defaultFeedbackMessage).toMatchInlineSnapshot( + `"Have feedback? Please create an issue in GitHub."` + ); +}); diff --git a/src/legacy/ui/public/vis/default_feedback_message.js b/src/legacy/core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.ts similarity index 91% rename from src/legacy/ui/public/vis/default_feedback_message.js rename to src/legacy/core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.ts index 8b8491d397aad..2871437614231 100644 --- a/src/legacy/ui/public/vis/default_feedback_message.js +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/misc/default_feedback_message.ts @@ -19,7 +19,7 @@ import { i18n } from '@kbn/i18n'; -export const defaultFeedbackMessage = i18n.translate('common.ui.vis.defaultFeedbackMessage', { +export const defaultFeedbackMessage = i18n.translate('visualizations.defaultFeedbackMessage', { defaultMessage: 'Have feedback? Please create an issue in {link}.', values: { link: diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/mocks.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/mocks.ts index b3dd22f62f81f..8d7407b6191d6 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/mocks.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/mocks.ts @@ -17,12 +17,6 @@ * under the License. */ -jest.mock('ui/vis/vis_filters'); -jest.mock('ui/vis/default_feedback_message'); -jest.mock('ui/vis/vis_factory'); -jest.mock('ui/registry/vis_types'); -jest.mock('./types/vis_type_alias_registry'); - import { PluginInitializerContext } from '../../../../../../core/public'; import { VisualizationsSetup, VisualizationsStart } from './'; import { VisualizationsPlugin } from './plugin'; @@ -67,6 +61,11 @@ const createInstance = async () => { data: dataPluginMock.createStartContract(), expressions: expressionsPluginMock.createStartContract(), uiActions: uiActionsPluginMock.createStartContract(), + __LEGACY: { + aggs: { + createAggConfigs: jest.fn(), + } as any, + }, }); return { diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/plugin.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/plugin.ts index e1d87d414d398..10797a1a04df4 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/plugin.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/plugin.ts @@ -38,6 +38,7 @@ import { setUiActions, setSavedVisualizationsLoader, setTimeFilter, + setAggs, } from './services'; import { VISUALIZE_EMBEDDABLE_TYPE, VisualizeEmbeddableFactory } from './embeddable'; import { ExpressionsSetup, ExpressionsStart } from '../../../../../../plugins/expressions/public'; @@ -53,6 +54,7 @@ import { createSavedVisLoader, SavedVisualizationsLoader } from './saved_visuali import { VisImpl, VisImplConstructor } from './vis_impl'; import { showNewVisModal } from './wizard'; import { UiActionsStart } from '../../../../../../plugins/ui_actions/public'; +import { DataStart as LegacyDataStart } from '../../../../data/public'; /** * Interface for this plugin's returned setup/start contracts. @@ -81,6 +83,9 @@ export interface VisualizationsStartDeps { data: DataPublicPluginStart; expressions: ExpressionsStart; uiActions: UiActionsStart; + __LEGACY: { + aggs: LegacyDataStart['search']['aggs']; + }; } /** @@ -123,7 +128,7 @@ export class VisualizationsPlugin public start( core: CoreStart, - { data, expressions, uiActions }: VisualizationsStartDeps + { data, expressions, uiActions, __LEGACY: { aggs } }: VisualizationsStartDeps ): VisualizationsStart { const types = this.types.start(); setI18n(core.i18n); @@ -136,6 +141,7 @@ export class VisualizationsPlugin setExpressions(expressions); setUiActions(uiActions); setTimeFilter(data.query.timefilter.timefilter); + setAggs(aggs); const savedVisualizationsLoader = createSavedVisLoader({ savedObjectsClient: core.savedObjects.client, indexPatterns: data.indexPatterns, diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/services.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/services.ts index a977a4b452bf7..05fb106bf9940 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/services.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/services.ts @@ -35,6 +35,7 @@ import { UsageCollectionSetup } from '../../../../../../plugins/usage_collection import { ExpressionsStart } from '../../../../../../plugins/expressions/public'; import { UiActionsStart } from '../../../../../../plugins/ui_actions/public'; import { SavedVisualizationsLoader } from './saved_visualizations'; +import { DataStart as LegacyDataStart } from '../../../../data/public'; export const [getUISettings, setUISettings] = createGetterSetter('UISettings'); @@ -71,3 +72,7 @@ export const [getUiActions, setUiActions] = createGetterSetter(' export const [getSavedVisualizationsLoader, setSavedVisualizationsLoader] = createGetterSetter< SavedVisualizationsLoader >('SavedVisualisationsLoader'); + +export const [getAggs, setAggs] = createGetterSetter( + 'AggConfigs' +); diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/types.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/types.ts index d2ca4ffb92eb2..d8e3ccdeb065e 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/types.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/types.ts @@ -20,7 +20,7 @@ import { SavedObject } from '../../../../../../plugins/saved_objects/public'; import { Vis, VisState, VisParams, VisualizationController } from './vis'; import { ISearchSource } from '../../../../../../plugins/data/public/'; -import { SavedSearch } from '../../../../kibana/public/discover/np_ready/types'; +import { SavedSearch } from '../../../../../../plugins/discover/public'; export { Vis, VisState, VisParams, VisualizationController }; diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/vis.ts b/src/legacy/core_plugins/visualizations/public/np_ready/public/vis.ts index 990f27dca7556..f658f6ef52df8 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/vis.ts +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/vis.ts @@ -18,8 +18,8 @@ */ import { VisType } from './vis_types'; -import { IAggConfigs } from '../../legacy_imports'; import { Status } from './legacy/update_status'; +import { IAggConfigs } from '../../../../data/public'; export interface Vis { type: VisType; diff --git a/src/legacy/core_plugins/visualizations/public/np_ready/public/vis_impl.js b/src/legacy/core_plugins/visualizations/public/np_ready/public/vis_impl.js index 15a826cc6ddbe..d5e6412b6bdab 100644 --- a/src/legacy/core_plugins/visualizations/public/np_ready/public/vis_impl.js +++ b/src/legacy/core_plugins/visualizations/public/np_ready/public/vis_impl.js @@ -30,9 +30,8 @@ import { EventEmitter } from 'events'; import _ from 'lodash'; import { PersistedState } from '../../../../../../../src/plugins/visualizations/public'; -import { createAggConfigs } from '../../legacy_imports'; import { updateVisualizationConfig } from './legacy/vis_update'; -import { getTypes } from './services'; +import { getTypes, getAggs } from './services'; class VisImpl extends EventEmitter { constructor(indexPattern, visState) { @@ -83,7 +82,7 @@ class VisImpl extends EventEmitter { updateVisualizationConfig(state.params, this.params); if (state.aggs || !this.aggs) { - this.aggs = createAggConfigs( + this.aggs = getAggs().createAggConfigs( this.indexPattern, state.aggs ? state.aggs.aggs || state.aggs : [], this.type.schemas.all @@ -125,7 +124,7 @@ class VisImpl extends EventEmitter { copyCurrentState(includeDisabled = false) { const state = this.getCurrentState(includeDisabled); - state.aggs = createAggConfigs( + state.aggs = getAggs().createAggConfigs( this.indexPattern, state.aggs.aggs || state.aggs, this.type.schemas.all diff --git a/src/plugins/discover/public/index.ts b/src/plugins/discover/public/index.ts index 2ccfe39748024..c5050147c3d5a 100644 --- a/src/plugins/discover/public/index.ts +++ b/src/plugins/discover/public/index.ts @@ -18,3 +18,4 @@ */ export { createSavedSearchesLoader } from './saved_searches/saved_searches'; +export { SavedSearchLoader, SavedSearch } from './saved_searches/types'; diff --git a/src/legacy/core_plugins/kibana/public/discover/np_ready/types.d.ts b/src/plugins/discover/public/saved_searches/types.ts similarity index 89% rename from src/legacy/core_plugins/kibana/public/discover/np_ready/types.d.ts rename to src/plugins/discover/public/saved_searches/types.ts index d36a6b02e1f7a..d601d087afcee 100644 --- a/src/legacy/core_plugins/kibana/public/discover/np_ready/types.d.ts +++ b/src/plugins/discover/public/saved_searches/types.ts @@ -17,9 +17,9 @@ * under the License. */ -import { ISearchSource } from '../kibana_services'; -import { SortOrder } from './angular/doc_table/components/table_header/helpers'; +import { ISearchSource } from '../../../data/public'; +export type SortOrder = [string, string]; export interface SavedSearch { readonly id: string; title: string; diff --git a/x-pack/legacy/plugins/transform/public/app/lib/kibana/kibana_context.tsx b/x-pack/legacy/plugins/transform/public/app/lib/kibana/kibana_context.tsx index 3acec1ea0e809..7677c491a7a59 100644 --- a/x-pack/legacy/plugins/transform/public/app/lib/kibana/kibana_context.tsx +++ b/x-pack/legacy/plugins/transform/public/app/lib/kibana/kibana_context.tsx @@ -8,11 +8,11 @@ import React, { createContext, useContext, FC } from 'react'; import { IUiSettingsClient } from 'kibana/public'; -import { SavedSearch } from '../../../../../../../../src/legacy/core_plugins/kibana/public/discover/np_ready/types'; import { IndexPattern, IndexPatternsContract, } from '../../../../../../../../src/plugins/data/public'; +import { SavedSearch } from '../../../../../../../../src/plugins/discover/public/'; interface UninitializedKibanaContextValue { initialized: false; diff --git a/x-pack/legacy/plugins/transform/public/shim.ts b/x-pack/legacy/plugins/transform/public/shim.ts index 95f54605377a8..05f7626e25e9d 100644 --- a/x-pack/legacy/plugins/transform/public/shim.ts +++ b/x-pack/legacy/plugins/transform/public/shim.ts @@ -11,9 +11,9 @@ import { docTitle } from 'ui/doc_title/doc_title'; // @ts-ignore: allow traversal to fail on x-pack build import { createUiStatsReporter } from '../../../../../src/legacy/core_plugins/ui_metric/public'; -import { SavedSearchLoader } from '../../../../../src/legacy/core_plugins/kibana/public/discover/np_ready/types'; import { TRANSFORM_DOC_PATHS } from './app/constants'; +import { SavedSearchLoader } from '../../../../../src/plugins/discover/public'; export type NpCore = typeof npStart.core; export type NpPlugins = typeof npStart.plugins; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 84651319775fd..09ee5cd304ac9 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -256,7 +256,6 @@ "common.ui.stateManagement.unableToStoreHistoryInSessionErrorMessage": "セッションがいっぱいで安全に削除できるアイテムが見つからないため、Kibana は履歴アイテムを保存できません。\n\nこれは大抵新規タブに移動することで解決されますが、より大きな問題が原因である可能性もあります。このメッセージが定期的に表示される場合は、{gitHubIssuesUrl} で問題を報告してください。", "common.ui.url.replacementFailedErrorMessage": "置換に失敗、未解決の表現式: {expr}", "common.ui.url.savedObjectIsMissingNotificationMessage": "保存されたオブジェクトがありません", - "common.ui.vis.defaultFeedbackMessage": "フィードバックがありますか?{link} で問題を報告してください。", "common.ui.vis.kibanaMap.leaflet.fitDataBoundsAriaLabel": "データバウンドを合わせる", "common.ui.vis.kibanaMap.zoomWarning": "ズームレベルが最大に達しました。完全にズームインするには、Elasticsearch と Kibana の {defaultDistribution} にアップグレードしてください。{ems} でより多くのズームレベルが利用できます。または、独自のマップサーバーを構成できます。詳細は { wms } または { configSettings} をご覧ください。", "data.search.aggs.aggGroups.bucketsText": "バケット", @@ -2852,6 +2851,7 @@ "timelion.vis.intervalLabel": "間隔", "uiActions.actionPanel.title": "オプション", "uiActions.errors.incompatibleAction": "操作に互換性がありません", + "visualizations.defaultFeedbackMessage": "フィードバックがありますか?{link} で問題を報告してください。", "visualizations.newVisWizard.betaDescription": "このビジュアライゼーションはベータ段階で、変更される可能性があります。デザインとコードはオフィシャル GA 機能よりも完成度が低く、現状のまま保証なしで提供されています。ベータ機能にはオフィシャル GA 機能の SLA が適用されません", "visualizations.newVisWizard.betaTitle": "ベータ", "visualizations.newVisWizard.chooseSourceTitle": "ソースの選択", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index a9dccd20fb916..993beffe5fbf1 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -256,7 +256,6 @@ "common.ui.stateManagement.unableToStoreHistoryInSessionErrorMessage": "Kibana 无法将历史记录项存储在您的会话中,因为其已满,并且似乎没有任何可安全删除的项。\n\n通常可通过移至新的标签页来解决此问题,但这会导致更大的问题。如果您有规律地看到此消息,请在 {gitHubIssuesUrl} 提交问题。", "common.ui.url.replacementFailedErrorMessage": "替换失败,未解析的表达式:{expr}", "common.ui.url.savedObjectIsMissingNotificationMessage": "已保存对象缺失", - "common.ui.vis.defaultFeedbackMessage": "想反馈?请在“{link}中创建问题。", "common.ui.vis.kibanaMap.leaflet.fitDataBoundsAriaLabel": "适应数据边界", "common.ui.vis.kibanaMap.zoomWarning": "已达到缩放级别最大数目。要一直放大,请升级到 Elasticsearch 和 Kibana 的 {defaultDistribution}。您可以通过 {ems} 免费使用其他缩放级别。或者,您可以配置自己的地图服务器。请前往 { wms } 或 { configSettings} 以获取详细信息。", "data.search.aggs.aggGroups.bucketsText": "存储桶", @@ -2853,6 +2852,7 @@ "timelion.vis.intervalLabel": "时间间隔", "uiActions.actionPanel.title": "选项", "uiActions.errors.incompatibleAction": "操作不兼容", + "visualizations.defaultFeedbackMessage": "想反馈?请在“{link}中创建问题。", "visualizations.newVisWizard.betaDescription": "此可视化为公测版,可能会进行更改。设计和代码相对于正式发行版功能还不够成熟,将按原样提供,且不提供任何保证。公测版功能不受正式发行版功能支持 SLA 的约束", "visualizations.newVisWizard.betaTitle": "公测版", "visualizations.newVisWizard.chooseSourceTitle": "选择源", From 01e4b96492446e3dd673c8cde64755ba69af23a7 Mon Sep 17 00:00:00 2001 From: Liza Katz Date: Wed, 4 Mar 2020 10:46:12 +0000 Subject: [PATCH 7/9] Use new search strategy service for search requests (#58990) * Use new search strategy * Update jest test * fix painless error Co-authored-by: Elastic Machine --- .../np_ready/angular/get_painless_error.ts | 4 +-- .../default_search_strategy.test.ts | 3 +-- .../default_search_strategy.ts | 27 +++++++------------ 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/legacy/core_plugins/kibana/public/discover/np_ready/angular/get_painless_error.ts b/src/legacy/core_plugins/kibana/public/discover/np_ready/angular/get_painless_error.ts index 2bbeea9d675c7..100d9cdac133b 100644 --- a/src/legacy/core_plugins/kibana/public/discover/np_ready/angular/get_painless_error.ts +++ b/src/legacy/core_plugins/kibana/public/discover/np_ready/angular/get_painless_error.ts @@ -23,9 +23,9 @@ import { get } from 'lodash'; export function getPainlessError(error: Error) { const rootCause: Array<{ lang: string; script: string }> | undefined = get( error, - 'resp.error.root_cause' + 'body.attributes.error.root_cause' ); - const message: string = get(error, 'message'); + const message: string = get(error, 'body.message'); if (!rootCause) { return; diff --git a/src/plugins/data/public/search/search_strategy/default_search_strategy.test.ts b/src/plugins/data/public/search/search_strategy/default_search_strategy.test.ts index 80ab7ceb8870f..1915645ad2df2 100644 --- a/src/plugins/data/public/search/search_strategy/default_search_strategy.test.ts +++ b/src/plugins/data/public/search/search_strategy/default_search_strategy.test.ts @@ -117,8 +117,7 @@ describe('defaultSearchStrategy', function() { test('should call new search service', () => { const config = getConfigStub(); search({ ...searchArgs, config }); - expect(searchMock).toHaveBeenCalled(); - expect(newSearchMock).toHaveBeenCalledTimes(0); + expect(newSearchMock).toHaveBeenCalledTimes(1); }); test('should properly abort with new search service', async () => { diff --git a/src/plugins/data/public/search/search_strategy/default_search_strategy.ts b/src/plugins/data/public/search/search_strategy/default_search_strategy.ts index 6dde6bfe22e4a..6fcb1e6b3e8d2 100644 --- a/src/plugins/data/public/search/search_strategy/default_search_strategy.ts +++ b/src/plugins/data/public/search/search_strategy/default_search_strategy.ts @@ -74,24 +74,17 @@ function search({ }: SearchStrategySearchParams) { const abortController = new AbortController(); const searchParams = getSearchParams(config, esShardTimeout); - const es = searchService.__LEGACY.esClient; const promises = searchRequests.map(({ index, body }) => { - const searching = es.search({ index: index.title || index, body, ...searchParams }); - abortController.signal.addEventListener('abort', searching.abort); - return searching.catch(({ response }: any) => JSON.parse(response)); - /* - * Once #44302 is resolved, replace the old implementation with this one - - * const params = { - * index: index.title || index, - * body, - * ...searchParams, - * }; - * const { signal } = abortController; - * return searchService - * .search({ params }, { signal }) - * .toPromise() - * .then(({ rawResponse }) => rawResponse); - */ + const params = { + index: index.title || index, + body, + ...searchParams, + }; + const { signal } = abortController; + return searchService + .search({ params }, { signal }) + .toPromise() + .then(({ rawResponse }) => rawResponse); }); return { searching: Promise.all(promises), From 80db96b8230c7056cc4dee4754fdaed9567008ca Mon Sep 17 00:00:00 2001 From: Maryia Lapata Date: Wed, 4 Mar 2020 13:57:16 +0300 Subject: [PATCH 8/9] Fix TS for vis_type_vislib (#58345) * Fix TS for vislib * Fix TS * Revert table changes * Update unit test * Refactor updateAxisTitle Co-authored-by: Elastic Machine --- .eslintrc.js | 6 - .../components/common/validation_wrapper.tsx | 2 +- .../metrics_axes/category_axis_panel.tsx | 4 +- .../options/metrics_axes/index.test.tsx | 7 +- .../components/options/metrics_axes/index.tsx | 141 ++++++++++-------- .../options/metrics_axes/value_axes_panel.tsx | 2 +- .../metrics_axes/value_axis_options.tsx | 3 +- .../options/point_series/grid_panel.tsx | 2 +- 8 files changed, 87 insertions(+), 80 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 087d6276cd33f..a678243e4f07a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -76,12 +76,6 @@ module.exports = { 'react-hooks/exhaustive-deps': 'off', }, }, - { - files: ['src/legacy/core_plugins/vis_type_vislib/**/*.{js,ts,tsx}'], - rules: { - 'react-hooks/exhaustive-deps': 'off', - }, - }, { files: [ 'src/legacy/core_plugins/vis_default_editor/public/components/controls/**/*.{ts,tsx}', diff --git a/src/legacy/core_plugins/vis_type_vislib/public/components/common/validation_wrapper.tsx b/src/legacy/core_plugins/vis_type_vislib/public/components/common/validation_wrapper.tsx index 9e1d5ea5ae38f..c069d4c935669 100644 --- a/src/legacy/core_plugins/vis_type_vislib/public/components/common/validation_wrapper.tsx +++ b/src/legacy/core_plugins/vis_type_vislib/public/components/common/validation_wrapper.tsx @@ -52,7 +52,7 @@ function ValidationWrapper({ useEffect(() => { setValidity(isPanelValid); - }, [isPanelValid]); + }, [isPanelValid, setValidity]); return ; } diff --git a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/category_axis_panel.tsx b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/category_axis_panel.tsx index a19a300960abd..c1da70f5c17c2 100644 --- a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/category_axis_panel.tsx +++ b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/category_axis_panel.tsx @@ -46,7 +46,7 @@ function CategoryAxisPanel(props: CategoryAxisPanelProps) { }; setCategoryAxis(updatedAxis); }, - [setCategoryAxis] + [setCategoryAxis, axis] ); const setPosition = useCallback( @@ -89,7 +89,7 @@ function CategoryAxisPanel(props: CategoryAxisPanelProps) { setValue={setAxis} /> - {axis.show && } + {axis.show && } ); } diff --git a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.test.tsx b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.test.tsx index 944ed7e20d1f7..f172a4344c940 100644 --- a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.test.tsx +++ b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.test.tsx @@ -193,9 +193,10 @@ describe('MetricsAxisOptions component', () => { const updatedSeriesParams = [{ ...chart, data: { ...chart.data, label: agg.makeLabel() } }]; const updatedValues = [{ ...axis, title: { text: agg.makeLabel() } }]; - expect(setValue).toHaveBeenCalledTimes(3); - expect(setValue).toHaveBeenNthCalledWith(2, SERIES_PARAMS, updatedSeriesParams); - expect(setValue).toHaveBeenNthCalledWith(3, VALUE_AXES, updatedValues); + expect(setValue).toHaveBeenCalledTimes(5); + expect(setValue).toHaveBeenNthCalledWith(3, SERIES_PARAMS, updatedSeriesParams); + expect(setValue).toHaveBeenNthCalledWith(5, SERIES_PARAMS, updatedSeriesParams); + expect(setValue).toHaveBeenNthCalledWith(4, VALUE_AXES, updatedValues); }); it('should not set the custom title to match the value axis label when more than one agg exists for that axis', () => { diff --git a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.tsx b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.tsx index cdc8996f3fdeb..32c21008c2a3a 100644 --- a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.tsx +++ b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/index.tsx @@ -89,72 +89,85 @@ function MetricsAxisOptions(props: ValidationVisOptionsProps) } ); - const updateAxisTitle = (seriesParams?: SeriesParam[]) => { - const series = seriesParams || stateParams.seriesParams; - const axes = cloneDeep(stateParams.valueAxes); - let isAxesChanged = false; - let lastValuesChanged = false; - const lastLabels = { ...lastCustomLabels }; - const lastMatchingSeriesAgg = { ...lastSeriesAgg }; - - stateParams.valueAxes.forEach((axis, axisNumber) => { - let newCustomLabel = ''; - const matchingSeries: IAggConfig[] = []; - - series.forEach((serie, seriesIndex) => { - if ((axisNumber === 0 && !serie.valueAxis) || serie.valueAxis === axis.id) { - const aggByIndex = aggs.bySchemaName('metric')[seriesIndex]; - matchingSeries.push(aggByIndex); + const updateAxisTitle = useCallback( + (seriesParams?: SeriesParam[]) => { + const series = seriesParams || stateParams.seriesParams; + let isAxesChanged = false; + let lastValuesChanged = false; + const lastLabels = { ...lastCustomLabels }; + const lastMatchingSeriesAgg = { ...lastSeriesAgg }; + + const axes = stateParams.valueAxes.map((axis, axisNumber) => { + let newCustomLabel = ''; + let updatedAxis; + const matchingSeries: IAggConfig[] = []; + + series.forEach((serie, seriesIndex) => { + if ((axisNumber === 0 && !serie.valueAxis) || serie.valueAxis === axis.id) { + const aggByIndex = aggs.bySchemaName('metric')[seriesIndex]; + matchingSeries.push(aggByIndex); + } + }); + + if (matchingSeries.length === 1) { + // if several series matches to the axis, axis title is set according to the first serie. + newCustomLabel = matchingSeries[0].makeLabel(); } - }); - - if (matchingSeries.length === 1) { - // if several series matches to the axis, axis title is set according to the first serie. - newCustomLabel = matchingSeries[0].makeLabel(); - } - if (lastCustomLabels[axis.id] !== newCustomLabel && newCustomLabel !== '') { - const lastSeriesAggType = get(lastSeriesAgg, `${matchingSeries[0].id}.type`); - const lastSeriesAggField = get(lastSeriesAgg, `${matchingSeries[0].id}.field`); - const matchingSeriesAggType = get(matchingSeries, '[0]type.name', ''); - const matchingSeriesAggField = get(matchingSeries, '[0]params.field.name', ''); + if (lastCustomLabels[axis.id] !== newCustomLabel && newCustomLabel !== '') { + const lastSeriesAggType = get(lastSeriesAgg, `${matchingSeries[0].id}.type`); + const lastSeriesAggField = get(lastSeriesAgg, `${matchingSeries[0].id}.field`); + const matchingSeriesAggType = get(matchingSeries, '[0]type.name', ''); + const matchingSeriesAggField = get(matchingSeries, '[0]params.field.name', ''); - const aggTypeIsChanged = lastSeriesAggType !== matchingSeriesAggType; - const aggFieldIsChanged = lastSeriesAggField !== matchingSeriesAggField; + const aggTypeIsChanged = lastSeriesAggType !== matchingSeriesAggType; + const aggFieldIsChanged = lastSeriesAggField !== matchingSeriesAggField; - lastMatchingSeriesAgg[matchingSeries[0].id] = { - type: matchingSeriesAggType, - field: matchingSeriesAggField, - }; - lastLabels[axis.id] = newCustomLabel; - lastValuesChanged = true; - - if ( - Object.keys(lastCustomLabels).length !== 0 && - (aggTypeIsChanged || - aggFieldIsChanged || - axis.title.text === '' || - lastCustomLabels[axis.id] === axis.title.text) - ) { - // Override axis title with new custom label - axes[axisNumber] = { - ...axis, - title: { ...axis.title, text: newCustomLabel }, + lastMatchingSeriesAgg[matchingSeries[0].id] = { + type: matchingSeriesAggType, + field: matchingSeriesAggField, }; - isAxesChanged = true; + lastLabels[axis.id] = newCustomLabel; + lastValuesChanged = true; + + if ( + Object.keys(lastCustomLabels).length !== 0 && + (aggTypeIsChanged || + aggFieldIsChanged || + axis.title.text === '' || + lastCustomLabels[axis.id] === axis.title.text) && + newCustomLabel !== axis.title.text + ) { + // Override axis title with new custom label + updatedAxis = { + ...axis, + title: { ...axis.title, text: newCustomLabel }, + }; + isAxesChanged = true; + } } - } - }); - if (isAxesChanged) { - setValue('valueAxes', axes); - } + return updatedAxis || axis; + }); - if (lastValuesChanged) { - setLastSeriesAgg(lastMatchingSeriesAgg); - setLastCustomLabels(lastLabels); - } - }; + if (isAxesChanged) { + setValue('valueAxes', axes); + } + + if (lastValuesChanged) { + setLastSeriesAgg(lastMatchingSeriesAgg); + setLastCustomLabels(lastLabels); + } + }, + [ + aggs, + lastCustomLabels, + lastSeriesAgg, + setValue, + stateParams.seriesParams, + stateParams.valueAxes, + ] + ); const onValueAxisPositionChanged = useCallback( (index: number, value: ValueAxis['position']) => { @@ -168,7 +181,7 @@ function MetricsAxisOptions(props: ValidationVisOptionsProps) }; setValue('valueAxes', valueAxes); }, - [stateParams.valueAxes, getUpdatedAxisName, setValue] + [stateParams.valueAxes, setValue] ); const onCategoryAxisPositionChanged = useCallback( @@ -226,7 +239,7 @@ function MetricsAxisOptions(props: ValidationVisOptionsProps) setValue('grid', { ...stateParams.grid, valueAxis: undefined }); } }, - [stateParams.seriesParams, stateParams.valueAxes, setValue] + [stateParams.seriesParams, stateParams.valueAxes, setValue, stateParams.grid] ); const changeValueAxis: ChangeValueAxis = useCallback( @@ -241,13 +254,13 @@ function MetricsAxisOptions(props: ValidationVisOptionsProps) updateAxisTitle(); }, - [addValueAxis, setParamByIndex] + [addValueAxis, setParamByIndex, updateAxisTitle] ); + const schemaName = vis.type.schemas.metrics[0].name; const metrics = useMemo(() => { - const schemaName = vis.type.schemas.metrics[0].name; return aggs.bySchemaName(schemaName); - }, [vis.type.schemas.metrics[0].name, aggs]); + }, [schemaName, aggs]); const firstValueAxesId = stateParams.valueAxes[0].id; @@ -278,7 +291,7 @@ function MetricsAxisOptions(props: ValidationVisOptionsProps) setValue('seriesParams', updatedSeries); updateAxisTitle(updatedSeries); - }, [metrics, firstValueAxesId]); + }, [metrics, firstValueAxesId, setValue, stateParams.seriesParams, updateAxisTitle]); const visType = useMemo(() => { const types = uniq(stateParams.seriesParams.map(({ type }) => type)); diff --git a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axes_panel.tsx b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axes_panel.tsx index b94f5ebbcce44..4aa2aee083a67 100644 --- a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axes_panel.tsx +++ b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axes_panel.tsx @@ -78,7 +78,7 @@ function ValueAxesPanel(props: ValueAxesPanelProps) { /> ), - [removeValueAxis] + [removeValueAxis, removeButtonTooltip] ); const addButtonTooltip = useMemo( diff --git a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axis_options.tsx b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axis_options.tsx index 0ebe62a70a7b1..d094a1d422385 100644 --- a/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axis_options.tsx +++ b/src/legacy/core_plugins/vis_type_vislib/public/components/options/metrics_axes/value_axis_options.tsx @@ -175,7 +175,7 @@ function ValueAxisOptions(props: ValueAxisOptionsParams) { setValue={setValueAxisTitle} /> - + ) : ( @@ -204,7 +204,6 @@ function ValueAxisOptions(props: ValueAxisOptionsParams) { <> From 7130a0405f0279d9ef49b59bb4ce91d46b2eb3a2 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Wed, 4 Mar 2020 12:10:29 +0100 Subject: [PATCH 9/9] Expose savedObject import / export utility methods (#58882) * add getImportExportObjectLimit to so setup * expose static method for so import / export * improve functions naming * fix mocked reference --- ...lugin-server.exportsavedobjectstostream.md | 24 +++++++++++++++++++ ...gin-server.importsavedobjectsfromstream.md | 24 +++++++++++++++++++ .../core/server/kibana-plugin-server.md | 8 +++++++ ...-server.resolvesavedobjectsimporterrors.md | 24 +++++++++++++++++++ ...plugin-server.savedobjectsimportoptions.md | 12 +++++----- ...ver.savedobjectsimportoptions.namespace.md | 2 ++ ...r.savedobjectsimportoptions.objectlimit.md | 2 ++ ...ver.savedobjectsimportoptions.overwrite.md | 2 ++ ...er.savedobjectsimportoptions.readstream.md | 2 ++ ...objectsimportoptions.savedobjectsclient.md | 2 ++ ...avedobjectsimportoptions.supportedtypes.md | 2 ++ ....savedobjectsresolveimporterrorsoptions.md | 12 +++++----- ...ctsresolveimporterrorsoptions.namespace.md | 2 ++ ...sresolveimporterrorsoptions.objectlimit.md | 2 ++ ...tsresolveimporterrorsoptions.readstream.md | 2 ++ ...jectsresolveimporterrorsoptions.retries.md | 2 ++ ...eimporterrorsoptions.savedobjectsclient.md | 2 ++ ...solveimporterrorsoptions.supportedtypes.md | 2 ++ ...servicesetup.getimportexportobjectlimit.md | 13 ++++++++++ ...-plugin-server.savedobjectsservicesetup.md | 1 + src/core/server/index.ts | 3 +++ src/core/server/legacy/legacy_service.ts | 1 + src/core/server/plugins/plugin_context.ts | 1 + .../get_sorted_objects_for_export.test.ts | 24 +++++++++---------- .../export/get_sorted_objects_for_export.ts | 8 ++++++- src/core/server/saved_objects/export/index.ts | 2 +- .../import/import_saved_objects.test.ts | 16 ++++++------- .../import/import_saved_objects.ts | 8 ++++++- src/core/server/saved_objects/import/index.ts | 4 ++-- .../import/resolve_import_errors.test.ts | 18 +++++++------- .../import/resolve_import_errors.ts | 8 ++++++- src/core/server/saved_objects/import/types.ts | 12 ++++++++++ src/core/server/saved_objects/index.ts | 2 +- .../server/saved_objects/routes/export.ts | 4 ++-- .../server/saved_objects/routes/import.ts | 4 ++-- .../routes/integration_tests/export.test.ts | 8 +++---- .../routes/resolve_import_errors.ts | 4 ++-- .../saved_objects_service.mock.ts | 3 +++ .../saved_objects/saved_objects_service.ts | 6 +++++ src/core/server/saved_objects/types.ts | 1 - src/core/server/server.api.md | 22 ++++++++--------- .../saved_objects/saved_objects_mixin.js | 12 +++++----- 42 files changed, 236 insertions(+), 77 deletions(-) create mode 100644 docs/development/core/server/kibana-plugin-server.exportsavedobjectstostream.md create mode 100644 docs/development/core/server/kibana-plugin-server.importsavedobjectsfromstream.md create mode 100644 docs/development/core/server/kibana-plugin-server.resolvesavedobjectsimporterrors.md create mode 100644 docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md diff --git a/docs/development/core/server/kibana-plugin-server.exportsavedobjectstostream.md b/docs/development/core/server/kibana-plugin-server.exportsavedobjectstostream.md new file mode 100644 index 0000000000000..76f0cea20d637 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.exportsavedobjectstostream.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [exportSavedObjectsToStream](./kibana-plugin-server.exportsavedobjectstostream.md) + +## exportSavedObjectsToStream() function + +Generates sorted saved object stream to be used for export. See the [options](./kibana-plugin-server.savedobjectsexportoptions.md) for more detailed information. + +Signature: + +```typescript +export declare function exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, }: SavedObjectsExportOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| { types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, } | SavedObjectsExportOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-server.importsavedobjectsfromstream.md b/docs/development/core/server/kibana-plugin-server.importsavedobjectsfromstream.md new file mode 100644 index 0000000000000..2293e196ae61e --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.importsavedobjectsfromstream.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [importSavedObjectsFromStream](./kibana-plugin-server.importsavedobjectsfromstream.md) + +## importSavedObjectsFromStream() function + +Import saved objects from given stream. See the [options](./kibana-plugin-server.savedobjectsimportoptions.md) for more detailed information. + +Signature: + +```typescript +export declare function importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsImportOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| { readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, } | SavedObjectsImportOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-server.md b/docs/development/core/server/kibana-plugin-server.md index 0e79385d1ca4d..e843ffb265b82 100644 --- a/docs/development/core/server/kibana-plugin-server.md +++ b/docs/development/core/server/kibana-plugin-server.md @@ -37,6 +37,14 @@ The plugin integrates with the core system via lifecycle events: `setup` | [AuthResultType](./kibana-plugin-server.authresulttype.md) | | | [AuthStatus](./kibana-plugin-server.authstatus.md) | Status indicating an outcome of the authentication. | +## Functions + +| Function | Description | +| --- | --- | +| [exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, })](./kibana-plugin-server.exportsavedobjectstostream.md) | Generates sorted saved object stream to be used for export. See the [options](./kibana-plugin-server.savedobjectsexportoptions.md) for more detailed information. | +| [importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, })](./kibana-plugin-server.importsavedobjectsfromstream.md) | Import saved objects from given stream. See the [options](./kibana-plugin-server.savedobjectsimportoptions.md) for more detailed information. | +| [resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, })](./kibana-plugin-server.resolvesavedobjectsimporterrors.md) | Resolve and return saved object import errors. See the [options](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md) for more detailed informations. | + ## Interfaces | Interface | Description | diff --git a/docs/development/core/server/kibana-plugin-server.resolvesavedobjectsimporterrors.md b/docs/development/core/server/kibana-plugin-server.resolvesavedobjectsimporterrors.md new file mode 100644 index 0000000000000..9fcb335aad556 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.resolvesavedobjectsimporterrors.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [resolveSavedObjectsImportErrors](./kibana-plugin-server.resolvesavedobjectsimporterrors.md) + +## resolveSavedObjectsImportErrors() function + +Resolve and return saved object import errors. See the [options](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md) for more detailed informations. + +Signature: + +```typescript +export declare function resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsResolveImportErrorsOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| { readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, } | SavedObjectsResolveImportErrorsOptions | | + +Returns: + +`Promise` + diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.md index 9653fa802a3e8..013773e0789a1 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.md @@ -16,10 +16,10 @@ export interface SavedObjectsImportOptions | Property | Type | Description | | --- | --- | --- | -| [namespace](./kibana-plugin-server.savedobjectsimportoptions.namespace.md) | string | | -| [objectLimit](./kibana-plugin-server.savedobjectsimportoptions.objectlimit.md) | number | | -| [overwrite](./kibana-plugin-server.savedobjectsimportoptions.overwrite.md) | boolean | | -| [readStream](./kibana-plugin-server.savedobjectsimportoptions.readstream.md) | Readable | | -| [savedObjectsClient](./kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md) | SavedObjectsClientContract | | -| [supportedTypes](./kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md) | string[] | | +| [namespace](./kibana-plugin-server.savedobjectsimportoptions.namespace.md) | string | if specified, will import in given namespace, else will import as global object | +| [objectLimit](./kibana-plugin-server.savedobjectsimportoptions.objectlimit.md) | number | The maximum number of object to import | +| [overwrite](./kibana-plugin-server.savedobjectsimportoptions.overwrite.md) | boolean | if true, will override existing object if present | +| [readStream](./kibana-plugin-server.savedobjectsimportoptions.readstream.md) | Readable | The stream of [saved objects](./kibana-plugin-server.savedobject.md) to import | +| [savedObjectsClient](./kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md) | SavedObjectsClientContract | [client](./kibana-plugin-server.savedobjectsclientcontract.md) to use to perform the import operation | +| [supportedTypes](./kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md) | string[] | the list of allowed types to import | diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.namespace.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.namespace.md index 2b15ba2a1b7ec..bf8e56f65607c 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.namespace.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.namespace.md @@ -4,6 +4,8 @@ ## SavedObjectsImportOptions.namespace property +if specified, will import in given namespace, else will import as global object + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.objectlimit.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.objectlimit.md index 89c01a13644b8..526aef96eb8c0 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.objectlimit.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.objectlimit.md @@ -4,6 +4,8 @@ ## SavedObjectsImportOptions.objectLimit property +The maximum number of object to import + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.overwrite.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.overwrite.md index 54728aaa80fed..3a84001bbbad4 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.overwrite.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.overwrite.md @@ -4,6 +4,8 @@ ## SavedObjectsImportOptions.overwrite property +if true, will override existing object if present + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.readstream.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.readstream.md index 7739fdfbc8460..64875d42515aa 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.readstream.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.readstream.md @@ -4,6 +4,8 @@ ## SavedObjectsImportOptions.readStream property +The stream of [saved objects](./kibana-plugin-server.savedobject.md) to import + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md index 23d5aba5fe114..864fe64f53a4e 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.savedobjectsclient.md @@ -4,6 +4,8 @@ ## SavedObjectsImportOptions.savedObjectsClient property +[client](./kibana-plugin-server.savedobjectsclientcontract.md) to use to perform the import operation + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md index 03ee12ab2a0f7..a897551bfcb12 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsimportoptions.supportedtypes.md @@ -4,6 +4,8 @@ ## SavedObjectsImportOptions.supportedTypes property +the list of allowed types to import + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md index 8ed978d4a2639..75c9d77c5bf67 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.md @@ -16,10 +16,10 @@ export interface SavedObjectsResolveImportErrorsOptions | Property | Type | Description | | --- | --- | --- | -| [namespace](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md) | string | | -| [objectLimit](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md) | number | | -| [readStream](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md) | Readable | | -| [retries](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md) | SavedObjectsImportRetry[] | | -| [savedObjectsClient](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md) | SavedObjectsClientContract | | -| [supportedTypes](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md) | string[] | | +| [namespace](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md) | string | if specified, will import in given namespace | +| [objectLimit](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md) | number | The maximum number of object to import | +| [readStream](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md) | Readable | The stream of [saved objects](./kibana-plugin-server.savedobject.md) to resolve errors from | +| [retries](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md) | SavedObjectsImportRetry[] | saved object import references to retry | +| [savedObjectsClient](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md) | SavedObjectsClientContract | client to use to perform the import operation | +| [supportedTypes](./kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md) | string[] | the list of allowed types to import | diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md index b88f124545bd5..87b69c78b33ee 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.namespace.md @@ -4,6 +4,8 @@ ## SavedObjectsResolveImportErrorsOptions.namespace property +if specified, will import in given namespace + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md index a2753ceccc36f..57a3c358406d8 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.objectlimit.md @@ -4,6 +4,8 @@ ## SavedObjectsResolveImportErrorsOptions.objectLimit property +The maximum number of object to import + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md index e7a31deed6faa..f109816c0de54 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.readstream.md @@ -4,6 +4,8 @@ ## SavedObjectsResolveImportErrorsOptions.readStream property +The stream of [saved objects](./kibana-plugin-server.savedobject.md) to resolve errors from + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md index 658aa64cfc33f..265dd21b3728a 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.retries.md @@ -4,6 +4,8 @@ ## SavedObjectsResolveImportErrorsOptions.retries property +saved object import references to retry + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md index 8a8c620b2cf21..9a1864bfbbcd6 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.savedobjectsclient.md @@ -4,6 +4,8 @@ ## SavedObjectsResolveImportErrorsOptions.savedObjectsClient property +client to use to perform the import operation + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md index 9cc97c34669b7..e5db98aec23d9 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsresolveimporterrorsoptions.supportedtypes.md @@ -4,6 +4,8 @@ ## SavedObjectsResolveImportErrorsOptions.supportedTypes property +the list of allowed types to import + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md b/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md new file mode 100644 index 0000000000000..d8ec90d1718dc --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-server.savedobjectsservicesetup.md) > [getImportExportObjectLimit](./kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md) + +## SavedObjectsServiceSetup.getImportExportObjectLimit property + +Returns the maximum number of objects allowed for import or export operations. + +Signature: + +```typescript +getImportExportObjectLimit: () => number; +``` diff --git a/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.md b/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.md index 963c4bbeb5515..2cc070d105d9f 100644 --- a/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.md +++ b/docs/development/core/server/kibana-plugin-server.savedobjectsservicesetup.md @@ -54,6 +54,7 @@ export class Plugin() { | Property | Type | Description | | --- | --- | --- | | [addClientWrapper](./kibana-plugin-server.savedobjectsservicesetup.addclientwrapper.md) | (priority: number, id: string, factory: SavedObjectsClientWrapperFactory) => void | Add a [client wrapper factory](./kibana-plugin-server.savedobjectsclientwrapperfactory.md) with the given priority. | +| [getImportExportObjectLimit](./kibana-plugin-server.savedobjectsservicesetup.getimportexportobjectlimit.md) | () => number | Returns the maximum number of objects allowed for import or export operations. | | [registerType](./kibana-plugin-server.savedobjectsservicesetup.registertype.md) | (type: SavedObjectsType) => void | Register a [savedObjects type](./kibana-plugin-server.savedobjectstype.md) definition.See the [mappings format](./kibana-plugin-server.savedobjectstypemappingdefinition.md) and [migration format](./kibana-plugin-server.savedobjectmigrationmap.md) for more details about these. | | [setClientFactoryProvider](./kibana-plugin-server.savedobjectsservicesetup.setclientfactoryprovider.md) | (clientFactoryProvider: SavedObjectsClientFactoryProvider) => void | Set the default [factory provider](./kibana-plugin-server.savedobjectsclientfactoryprovider.md) for creating Saved Objects clients. Only one provider can be set, subsequent calls to this method will fail. | diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 0c112e3cfb5b2..7d856ae101179 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -231,6 +231,9 @@ export { SavedObjectsType, SavedObjectMigrationMap, SavedObjectMigrationFn, + exportSavedObjectsToStream, + importSavedObjectsFromStream, + resolveSavedObjectsImportErrors, } from './saved_objects'; export { diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts index 44f77b5ad215e..ca83a287c57e6 100644 --- a/src/core/server/legacy/legacy_service.ts +++ b/src/core/server/legacy/legacy_service.ts @@ -300,6 +300,7 @@ export class LegacyService implements CoreService { setClientFactoryProvider: setupDeps.core.savedObjects.setClientFactoryProvider, addClientWrapper: setupDeps.core.savedObjects.addClientWrapper, registerType: setupDeps.core.savedObjects.registerType, + getImportExportObjectLimit: setupDeps.core.savedObjects.getImportExportObjectLimit, }, uiSettings: { register: setupDeps.core.uiSettings.register, diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index a8a16713f69a4..f2a44e9f78d4f 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -170,6 +170,7 @@ export function createPluginSetupContext( setClientFactoryProvider: deps.savedObjects.setClientFactoryProvider, addClientWrapper: deps.savedObjects.addClientWrapper, registerType: deps.savedObjects.registerType, + getImportExportObjectLimit: deps.savedObjects.getImportExportObjectLimit, }, uiSettings: { register: deps.uiSettings.register, diff --git a/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts b/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts index 1088478add137..32485f461f59b 100644 --- a/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts +++ b/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts @@ -17,7 +17,7 @@ * under the License. */ -import { getSortedObjectsForExport } from './get_sorted_objects_for_export'; +import { exportSavedObjectsToStream } from './get_sorted_objects_for_export'; import { savedObjectsClientMock } from '../service/saved_objects_client.mock'; import { Readable } from 'stream'; import { createPromiseFromStreams, createConcatStream } from '../../../../legacy/utils/streams'; @@ -65,7 +65,7 @@ describe('getSortedObjectsForExport()', () => { per_page: 1, page: 0, }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ savedObjectsClient, exportSizeLimit: 500, types: ['index-pattern', 'search'], @@ -151,7 +151,7 @@ describe('getSortedObjectsForExport()', () => { per_page: 1, page: 0, }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ savedObjectsClient, exportSizeLimit: 500, types: ['index-pattern', 'search'], @@ -210,7 +210,7 @@ describe('getSortedObjectsForExport()', () => { per_page: 1, page: 0, }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ savedObjectsClient, exportSizeLimit: 500, types: ['index-pattern', 'search'], @@ -297,7 +297,7 @@ describe('getSortedObjectsForExport()', () => { per_page: 1, page: 0, }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ savedObjectsClient, exportSizeLimit: 500, types: ['index-pattern', 'search'], @@ -385,7 +385,7 @@ describe('getSortedObjectsForExport()', () => { page: 0, }); await expect( - getSortedObjectsForExport({ + exportSavedObjectsToStream({ savedObjectsClient, exportSizeLimit: 1, types: ['index-pattern', 'search'], @@ -425,7 +425,7 @@ describe('getSortedObjectsForExport()', () => { }, ], }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ exportSizeLimit: 10000, savedObjectsClient, types: ['index-pattern'], @@ -489,7 +489,7 @@ describe('getSortedObjectsForExport()', () => { }, ], }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ exportSizeLimit: 10000, savedObjectsClient, objects: [ @@ -587,7 +587,7 @@ describe('getSortedObjectsForExport()', () => { }, ], }); - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ exportSizeLimit: 10000, savedObjectsClient, objects: [ @@ -681,7 +681,7 @@ describe('getSortedObjectsForExport()', () => { }, ], }; - await expect(getSortedObjectsForExport(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot( + await expect(exportSavedObjectsToStream(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot( `"Can't export more than 1 objects"` ); }); @@ -694,7 +694,7 @@ describe('getSortedObjectsForExport()', () => { objects: undefined, }; - expect(getSortedObjectsForExport(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot( + expect(exportSavedObjectsToStream(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot( `"Either \`type\` or \`objects\` are required."` ); }); @@ -707,7 +707,7 @@ describe('getSortedObjectsForExport()', () => { search: 'foo', }; - expect(getSortedObjectsForExport(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot( + expect(exportSavedObjectsToStream(exportOpts)).rejects.toThrowErrorMatchingInlineSnapshot( `"Can't specify both \\"search\\" and \\"objects\\" properties when exporting"` ); }); diff --git a/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts b/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts index 4b4cf1146aca0..a703c9f9fbd96 100644 --- a/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts +++ b/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts @@ -124,7 +124,13 @@ async function fetchObjectsToExport({ } } -export async function getSortedObjectsForExport({ +/** + * Generates sorted saved object stream to be used for export. + * See the {@link SavedObjectsExportOptions | options} for more detailed information. + * + * @public + */ +export async function exportSavedObjectsToStream({ types, objects, search, diff --git a/src/core/server/saved_objects/export/index.ts b/src/core/server/saved_objects/export/index.ts index 7533b8e500039..37824cceb18cb 100644 --- a/src/core/server/saved_objects/export/index.ts +++ b/src/core/server/saved_objects/export/index.ts @@ -18,7 +18,7 @@ */ export { - getSortedObjectsForExport, + exportSavedObjectsToStream, SavedObjectsExportOptions, SavedObjectsExportResultDetails, } from './get_sorted_objects_for_export'; diff --git a/src/core/server/saved_objects/import/import_saved_objects.test.ts b/src/core/server/saved_objects/import/import_saved_objects.test.ts index f0719cbf4c829..b43e5063c13e1 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.test.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.test.ts @@ -19,7 +19,7 @@ import { Readable } from 'stream'; import { SavedObject } from '../types'; -import { importSavedObjects } from './import_saved_objects'; +import { importSavedObjectsFromStream } from './import_saved_objects'; import { savedObjectsClientMock } from '../../mocks'; const emptyResponse = { @@ -76,7 +76,7 @@ describe('importSavedObjects()', () => { this.push(null); }, }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 1, overwrite: false, @@ -103,7 +103,7 @@ describe('importSavedObjects()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects, }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 4, overwrite: false, @@ -186,7 +186,7 @@ describe('importSavedObjects()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects, }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 4, overwrite: false, @@ -270,7 +270,7 @@ describe('importSavedObjects()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects, }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 4, overwrite: true, @@ -362,7 +362,7 @@ describe('importSavedObjects()', () => { references: [], })), }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 4, overwrite: false, @@ -460,7 +460,7 @@ describe('importSavedObjects()', () => { }, ], }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 4, overwrite: false, @@ -536,7 +536,7 @@ describe('importSavedObjects()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects, }); - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ readStream, objectLimit: 5, overwrite: false, diff --git a/src/core/server/saved_objects/import/import_saved_objects.ts b/src/core/server/saved_objects/import/import_saved_objects.ts index ef3b4a214c2c2..cb1d70e5c8dc4 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.ts @@ -26,7 +26,13 @@ import { } from './types'; import { validateReferences } from './validate_references'; -export async function importSavedObjects({ +/** + * Import saved objects from given stream. See the {@link SavedObjectsImportOptions | options} for more + * detailed information. + * + * @public + */ +export async function importSavedObjectsFromStream({ readStream, objectLimit, overwrite, diff --git a/src/core/server/saved_objects/import/index.ts b/src/core/server/saved_objects/import/index.ts index 95fa8aa192f3e..e268e970b94ac 100644 --- a/src/core/server/saved_objects/import/index.ts +++ b/src/core/server/saved_objects/import/index.ts @@ -17,8 +17,8 @@ * under the License. */ -export { importSavedObjects } from './import_saved_objects'; -export { resolveImportErrors } from './resolve_import_errors'; +export { importSavedObjectsFromStream } from './import_saved_objects'; +export { resolveSavedObjectsImportErrors } from './resolve_import_errors'; export { SavedObjectsImportResponse, SavedObjectsImportError, diff --git a/src/core/server/saved_objects/import/resolve_import_errors.test.ts b/src/core/server/saved_objects/import/resolve_import_errors.test.ts index c522d76f1ff04..2c6d89e0a0a47 100644 --- a/src/core/server/saved_objects/import/resolve_import_errors.test.ts +++ b/src/core/server/saved_objects/import/resolve_import_errors.test.ts @@ -19,7 +19,7 @@ import { Readable } from 'stream'; import { SavedObject } from '../types'; -import { resolveImportErrors } from './resolve_import_errors'; +import { resolveSavedObjectsImportErrors } from './resolve_import_errors'; import { savedObjectsClientMock } from '../../mocks'; describe('resolveImportErrors()', () => { @@ -80,7 +80,7 @@ describe('resolveImportErrors()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: [], }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 4, retries: [], @@ -107,7 +107,7 @@ describe('resolveImportErrors()', () => { savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: savedObjects.filter(obj => obj.type === 'visualization' && obj.id === '3'), }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 4, retries: [ @@ -168,7 +168,7 @@ describe('resolveImportErrors()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects.filter(obj => obj.type === 'index-pattern' && obj.id === '1'), }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 4, retries: [ @@ -230,7 +230,7 @@ describe('resolveImportErrors()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects.filter(obj => obj.type === 'dashboard' && obj.id === '4'), }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 4, retries: [ @@ -312,7 +312,7 @@ describe('resolveImportErrors()', () => { references: [], })), }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 4, retries: savedObjects.map(obj => ({ @@ -415,7 +415,7 @@ describe('resolveImportErrors()', () => { }, ], }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 2, retries: [ @@ -503,7 +503,7 @@ describe('resolveImportErrors()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: [], }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 5, retries: [ @@ -547,7 +547,7 @@ describe('resolveImportErrors()', () => { savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: savedObjects.filter(obj => obj.type === 'index-pattern' && obj.id === '1'), }); - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ readStream, objectLimit: 4, retries: [ diff --git a/src/core/server/saved_objects/import/resolve_import_errors.ts b/src/core/server/saved_objects/import/resolve_import_errors.ts index 6f56f283b4aec..d9ac567882573 100644 --- a/src/core/server/saved_objects/import/resolve_import_errors.ts +++ b/src/core/server/saved_objects/import/resolve_import_errors.ts @@ -27,7 +27,13 @@ import { } from './types'; import { validateReferences } from './validate_references'; -export async function resolveImportErrors({ +/** + * Resolve and return saved object import errors. + * See the {@link SavedObjectsResolveImportErrorsOptions | options} for more detailed informations. + * + * @public + */ +export async function resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, diff --git a/src/core/server/saved_objects/import/types.ts b/src/core/server/saved_objects/import/types.ts index 44046378a7b97..067579f54edac 100644 --- a/src/core/server/saved_objects/import/types.ts +++ b/src/core/server/saved_objects/import/types.ts @@ -107,11 +107,17 @@ export interface SavedObjectsImportResponse { * @public */ export interface SavedObjectsImportOptions { + /** The stream of {@link SavedObject | saved objects} to import */ readStream: Readable; + /** The maximum number of object to import */ objectLimit: number; + /** if true, will override existing object if present */ overwrite: boolean; + /** {@link SavedObjectsClientContract | client} to use to perform the import operation */ savedObjectsClient: SavedObjectsClientContract; + /** the list of allowed types to import */ supportedTypes: string[]; + /** if specified, will import in given namespace, else will import as global object */ namespace?: string; } @@ -120,10 +126,16 @@ export interface SavedObjectsImportOptions { * @public */ export interface SavedObjectsResolveImportErrorsOptions { + /** The stream of {@link SavedObject | saved objects} to resolve errors from */ readStream: Readable; + /** The maximum number of object to import */ objectLimit: number; + /** client to use to perform the import operation */ savedObjectsClient: SavedObjectsClientContract; + /** saved object import references to retry */ retries: SavedObjectsImportRetry[]; + /** the list of allowed types to import */ supportedTypes: string[]; + /** if specified, will import in given namespace */ namespace?: string; } diff --git a/src/core/server/saved_objects/index.ts b/src/core/server/saved_objects/index.ts index 9bfe658028258..661c6cbb79e58 100644 --- a/src/core/server/saved_objects/index.ts +++ b/src/core/server/saved_objects/index.ts @@ -26,7 +26,7 @@ export { SavedObjectsManagement } from './management'; export * from './import'; export { - getSortedObjectsForExport, + exportSavedObjectsToStream, SavedObjectsExportOptions, SavedObjectsExportResultDetails, } from './export'; diff --git a/src/core/server/saved_objects/routes/export.ts b/src/core/server/saved_objects/routes/export.ts index ab287332d8a65..04d310681aec5 100644 --- a/src/core/server/saved_objects/routes/export.ts +++ b/src/core/server/saved_objects/routes/export.ts @@ -26,7 +26,7 @@ import { } from '../../../../legacy/utils/streams'; import { IRouter } from '../../http'; import { SavedObjectConfig } from '../saved_objects_config'; -import { getSortedObjectsForExport } from '../export'; +import { exportSavedObjectsToStream } from '../export'; export const registerExportRoute = ( router: IRouter, @@ -67,7 +67,7 @@ export const registerExportRoute = ( router.handleLegacyErrors(async (context, req, res) => { const savedObjectsClient = context.core.savedObjects.client; const { type, objects, search, excludeExportDetails, includeReferencesDeep } = req.body; - const exportStream = await getSortedObjectsForExport({ + const exportStream = await exportSavedObjectsToStream({ savedObjectsClient, types: typeof type === 'string' ? [type] : type, search, diff --git a/src/core/server/saved_objects/routes/import.ts b/src/core/server/saved_objects/routes/import.ts index e3f249dca05f7..313e84c0b301d 100644 --- a/src/core/server/saved_objects/routes/import.ts +++ b/src/core/server/saved_objects/routes/import.ts @@ -21,7 +21,7 @@ import { Readable } from 'stream'; import { extname } from 'path'; import { schema } from '@kbn/config-schema'; import { IRouter } from '../../http'; -import { importSavedObjects } from '../import'; +import { importSavedObjectsFromStream } from '../import'; import { SavedObjectConfig } from '../saved_objects_config'; import { createSavedObjectsStreamFromNdJson } from './utils'; @@ -65,7 +65,7 @@ export const registerImportRoute = ( return res.badRequest({ body: `Invalid file extension ${fileExtension}` }); } - const result = await importSavedObjects({ + const result = await importSavedObjectsFromStream({ supportedTypes, savedObjectsClient: context.core.savedObjects.client, readStream: createSavedObjectsStreamFromNdJson(file), diff --git a/src/core/server/saved_objects/routes/integration_tests/export.test.ts b/src/core/server/saved_objects/routes/integration_tests/export.test.ts index b52a8957176cc..a81079b6825d6 100644 --- a/src/core/server/saved_objects/routes/integration_tests/export.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/export.test.ts @@ -18,7 +18,7 @@ */ jest.mock('../../export', () => ({ - getSortedObjectsForExport: jest.fn(), + exportSavedObjectsToStream: jest.fn(), })); import * as exportMock from '../../export'; @@ -30,7 +30,7 @@ import { registerExportRoute } from '../export'; import { setupServer } from './test_utils'; type setupServerReturn = UnwrapPromise>; -const getSortedObjectsForExport = exportMock.getSortedObjectsForExport as jest.Mock; +const exportSavedObjectsToStream = exportMock.exportSavedObjectsToStream as jest.Mock; const allowedTypes = ['index-pattern', 'search']; const config = { maxImportPayloadBytes: 10485760, @@ -76,7 +76,7 @@ describe('POST /api/saved_objects/_export', () => { ], }, ]; - getSortedObjectsForExport.mockResolvedValueOnce(createListStream(sortedObjects)); + exportSavedObjectsToStream.mockResolvedValueOnce(createListStream(sortedObjects)); const result = await supertest(httpSetup.server.listener) .post('/api/saved_objects/_export') @@ -96,7 +96,7 @@ describe('POST /api/saved_objects/_export', () => { const objects = (result.text as string).split('\n').map(row => JSON.parse(row)); expect(objects).toEqual(sortedObjects); - expect(getSortedObjectsForExport.mock.calls[0][0]).toEqual( + expect(exportSavedObjectsToStream.mock.calls[0][0]).toEqual( expect.objectContaining({ excludeExportDetails: false, exportSizeLimit: 10000, diff --git a/src/core/server/saved_objects/routes/resolve_import_errors.ts b/src/core/server/saved_objects/routes/resolve_import_errors.ts index efa7add7951b0..a10a19ba1d8ff 100644 --- a/src/core/server/saved_objects/routes/resolve_import_errors.ts +++ b/src/core/server/saved_objects/routes/resolve_import_errors.ts @@ -21,7 +21,7 @@ import { extname } from 'path'; import { Readable } from 'stream'; import { schema } from '@kbn/config-schema'; import { IRouter } from '../../http'; -import { resolveImportErrors } from '../import'; +import { resolveSavedObjectsImportErrors } from '../import'; import { SavedObjectConfig } from '../saved_objects_config'; import { createSavedObjectsStreamFromNdJson } from './utils'; @@ -75,7 +75,7 @@ export const registerResolveImportErrorsRoute = ( if (fileExtension !== '.ndjson') { return res.badRequest({ body: `Invalid file extension ${fileExtension}` }); } - const result = await resolveImportErrors({ + const result = await resolveSavedObjectsImportErrors({ supportedTypes, savedObjectsClient: context.core.savedObjects.client, readStream: createSavedObjectsStreamFromNdJson(file), diff --git a/src/core/server/saved_objects/saved_objects_service.mock.ts b/src/core/server/saved_objects/saved_objects_service.mock.ts index cbdff16324536..9fe32b14e6450 100644 --- a/src/core/server/saved_objects/saved_objects_service.mock.ts +++ b/src/core/server/saved_objects/saved_objects_service.mock.ts @@ -64,8 +64,11 @@ const createSetupContractMock = () => { setClientFactoryProvider: jest.fn(), addClientWrapper: jest.fn(), registerType: jest.fn(), + getImportExportObjectLimit: jest.fn(), }; + setupContract.getImportExportObjectLimit.mockReturnValue(100); + return setupContract; }; diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts index 62e25ad5fb458..89f7990c771c8 100644 --- a/src/core/server/saved_objects/saved_objects_service.ts +++ b/src/core/server/saved_objects/saved_objects_service.ts @@ -154,6 +154,11 @@ export interface SavedObjectsServiceSetup { * This API is the single entry point to register saved object types in the new platform. */ registerType: (type: SavedObjectsType) => void; + + /** + * Returns the maximum number of objects allowed for import or export operations. + */ + getImportExportObjectLimit: () => number; } /** @@ -344,6 +349,7 @@ export class SavedObjectsService } this.typeRegistry.registerType(type); }, + getImportExportObjectLimit: () => this.config!.maxImportExportSize, }; } diff --git a/src/core/server/saved_objects/types.ts b/src/core/server/saved_objects/types.ts index 495d896ad12cd..c9c672d0f8b1c 100644 --- a/src/core/server/saved_objects/types.ts +++ b/src/core/server/saved_objects/types.ts @@ -62,7 +62,6 @@ export interface SavedObjectsMigrationVersion { } /** - * * @public */ export interface SavedObject { diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 8c5e84446a0d3..6b0d962aedcd1 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -766,6 +766,9 @@ export interface ErrorHttpResponseOptions { headers?: ResponseHeaders; } +// @public +export function exportSavedObjectsToStream({ types, objects, search, savedObjectsClient, exportSizeLimit, includeReferencesDeep, excludeExportDetails, namespace, }: SavedObjectsExportOptions): Promise; + // @public export interface FakeRequest { headers: Headers; @@ -894,6 +897,9 @@ export interface ImageValidation { }; } +// @public +export function importSavedObjectsFromStream({ readStream, objectLimit, overwrite, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsImportOptions): Promise; + // @public (undocumented) export interface IndexSettingsDeprecationInfo { // (undocumented) @@ -1434,6 +1440,9 @@ export type RequestHandlerContextContainer = IContextContainer = IContextProvider, TContextName>; +// @public +export function resolveSavedObjectsImportErrors({ readStream, objectLimit, retries, savedObjectsClient, supportedTypes, namespace, }: SavedObjectsResolveImportErrorsOptions): Promise; + // @public export type ResponseError = string | Error | { message: string | Error; @@ -1896,17 +1905,11 @@ export interface SavedObjectsImportMissingReferencesError { // @public export interface SavedObjectsImportOptions { - // (undocumented) namespace?: string; - // (undocumented) objectLimit: number; - // (undocumented) overwrite: boolean; - // (undocumented) readStream: Readable; - // (undocumented) savedObjectsClient: SavedObjectsClientContract; - // (undocumented) supportedTypes: string[]; } @@ -2060,17 +2063,11 @@ export interface SavedObjectsRepositoryFactory { // @public export interface SavedObjectsResolveImportErrorsOptions { - // (undocumented) namespace?: string; - // (undocumented) objectLimit: number; - // (undocumented) readStream: Readable; - // (undocumented) retries: SavedObjectsImportRetry[]; - // (undocumented) savedObjectsClient: SavedObjectsClientContract; - // (undocumented) supportedTypes: string[]; } @@ -2101,6 +2098,7 @@ export class SavedObjectsSerializer { // @public export interface SavedObjectsServiceSetup { addClientWrapper: (priority: number, id: string, factory: SavedObjectsClientWrapperFactory) => void; + getImportExportObjectLimit: () => number; registerType: (type: SavedObjectsType) => void; setClientFactoryProvider: (clientFactoryProvider: SavedObjectsClientFactoryProvider) => void; } diff --git a/src/legacy/server/saved_objects/saved_objects_mixin.js b/src/legacy/server/saved_objects/saved_objects_mixin.js index f5140fc8d0ac2..0039fb19bb086 100644 --- a/src/legacy/server/saved_objects/saved_objects_mixin.js +++ b/src/legacy/server/saved_objects/saved_objects_mixin.js @@ -23,9 +23,9 @@ import { SavedObjectsSchema } from '../../../core/server/saved_objects/schema'; import { SavedObjectsClient, SavedObjectsRepository, - getSortedObjectsForExport, - importSavedObjects, - resolveImportErrors, + exportSavedObjectsToStream, + importSavedObjectsFromStream, + resolveSavedObjectsImportErrors, } from '../../../core/server/saved_objects'; import { getRootPropertiesObjects } from '../../../core/server/saved_objects/mappings'; import { convertTypesToLegacySchema } from '../../../core/server/saved_objects/utils'; @@ -95,9 +95,9 @@ export function savedObjectsMixin(kbnServer, server) { provider.addClientWrapperFactory(...args), importExport: { objectLimit: server.config().get('savedObjects.maxImportExportSize'), - importSavedObjects, - resolveImportErrors, - getSortedObjectsForExport, + importSavedObjects: importSavedObjectsFromStream, + resolveImportErrors: resolveSavedObjectsImportErrors, + getSortedObjectsForExport: exportSavedObjectsToStream, }, schema, };

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