Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ILM] Add searchable snapshot field #83783

Merged
merged 59 commits into from
Dec 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
731cd57
Added server-side endpoint for getting list of repos
jloleysens Nov 18, 2020
f7a62aa
part one of client side changes: added searchable snapshot field
jloleysens Nov 18, 2020
cb621a5
make searchable snapshot field toggleable and require value when it i…
jloleysens Nov 18, 2020
f9a13fe
fix typo in file name and remove whitespace
jloleysens Nov 18, 2020
dc03f43
added searchable snapshot state context, wip
jloleysens Nov 19, 2020
5f1eb42
finished updating fields to show and hide based on searchable snapsho…
jloleysens Nov 19, 2020
50f278e
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Nov 20, 2020
e9453a9
hiding fields when searchable snapshots is enabled in hot
jloleysens Nov 20, 2020
7ea9021
added translations and a first hot phase serialization test
jloleysens Nov 20, 2020
6c50e0c
appease type check and i18n
jloleysens Nov 20, 2020
e2b9733
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Nov 23, 2020
f27b66c
added cloud-specific behaviour for searchable snapshot default inlc. …
jloleysens Nov 23, 2020
7c012dd
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Nov 24, 2020
cffee98
refactor snapshot state -> configuration issues as this a can be re-u…
jloleysens Nov 24, 2020
96591fe
added configuration context file
jloleysens Nov 24, 2020
edc0d52
hide replicas in cold if snapshotting
jloleysens Nov 24, 2020
b35ea98
updated new field copy
jloleysens Nov 24, 2020
17001e6
update test coverage, test for hiding certain fields too
jloleysens Nov 24, 2020
9ff9b88
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Nov 25, 2020
18792df
added license check to client side!
jloleysens Nov 25, 2020
34dd4b4
moved warning to below field again and moved hot phase searchable sna…
jloleysens Nov 25, 2020
d6f224e
make described form field lazy if needed
jloleysens Nov 25, 2020
5842dea
render field even when license requirement is not met
jloleysens Nov 25, 2020
f9b96b2
update serializer for removing searchable_snapshot field
jloleysens Nov 25, 2020
fc80f75
handle 404 from ES when looking up * snapshot repos - we return an em…
jloleysens Nov 25, 2020
6af696c
address license TODO
jloleysens Nov 25, 2020
386c5b3
added tests for license check and removed license check HoC
jloleysens Nov 25, 2020
c5a89dc
fix legacy jest tests
jloleysens Nov 25, 2020
1d514ba
added readme about legacy tests
jloleysens Nov 25, 2020
e606f73
updated jest tests and fix type issues
jloleysens Nov 25, 2020
ae0f7de
remove unused import
jloleysens Nov 25, 2020
0276b72
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Nov 26, 2020
4e40d74
refactor component names to have "Field" at the end
jloleysens Nov 26, 2020
ea2a901
refactor searchable snapshot to single interface def and add comment …
jloleysens Nov 26, 2020
22ff2ec
address stakeholder feebdack and pr comments
jloleysens Nov 26, 2020
e18353b
update tests after latest changes
jloleysens Nov 26, 2020
2531807
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Nov 30, 2020
6c714fb
link to force merge
jloleysens Dec 1, 2020
fdf041f
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Dec 2, 2020
fc7af3d
Revert "link to force merge"
jloleysens Dec 2, 2020
1aae61b
introduce advanced section to hot, warm and cold
jloleysens Dec 2, 2020
77520f9
added test for correctly deserializing delete phase, and added fix
jloleysens Dec 2, 2020
9f1d8ac
remove unused variable
jloleysens Dec 2, 2020
3afad41
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Dec 3, 2020
f7d9b7f
moved fields into advanced settings
jloleysens Dec 3, 2020
0c8eb1f
move learn more copy below enable toggle
jloleysens Dec 3, 2020
e40002f
fix warm phase on rollover default
jloleysens Dec 3, 2020
ac58cd9
remove label space above rollover toggle
jloleysens Dec 3, 2020
c1ae8e4
remove unused import
jloleysens Dec 3, 2020
76370a7
update test after fixing warm on rollover default
jloleysens Dec 3, 2020
d2dbed7
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Dec 4, 2020
12de66f
removed icons in callouts in searchable snapshot field, added ability…
jloleysens Dec 4, 2020
39a420f
move callouts to description text
jloleysens Dec 4, 2020
0d1a65b
readd warning callouts to the searchable snapshot field
jloleysens Dec 4, 2020
f6e1474
slight i18n adjustment
jloleysens Dec 4, 2020
d03bfdb
Merge branch 'master' of github.com:elastic/kibana into ilm/snapshot-…
jloleysens Dec 4, 2020
9a50b58
made callout for actions disabled a bit smaller
jloleysens Dec 4, 2020
7ba6be3
fix i18n
jloleysens Dec 4, 2020
c7e94e7
Merge branch 'master' into ilm/snapshot-fields
kibanamachine Dec 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,17 @@
import React from 'react';
import { act } from 'react-dom/test-utils';
import { registerTestBed, TestBed, TestBedConfig } from '@kbn/test/jest';
import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public/context';
import { createBreadcrumbsMock } from '../../../public/application/services/breadcrumbs.mock';
import { licensingMock } from '../../../../licensing/public/mocks';
import { App } from '../../../public/application/app';
import { TestSubjects } from '../helpers';
import { createBreadcrumbsMock } from '../../../public/application/services/breadcrumbs.mock';
import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public/context';

const breadcrumbService = createBreadcrumbsMock();

const AppWithContext = (props: any) => {
return (
<KibanaContextProvider services={{ breadcrumbService }}>
<KibanaContextProvider services={{ breadcrumbService, license: licensingMock.createLicense() }}>
<App {...props} />
</KibanaContextProvider>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,15 @@ import { act } from 'react-dom/test-utils';

import { registerTestBed, TestBedConfig } from '@kbn/test/jest';

import { licensingMock } from '../../../../licensing/public/mocks';

import { EditPolicy } from '../../../public/application/sections/edit_policy';
import { DataTierAllocationType } from '../../../public/application/sections/edit_policy/types';

import { Phases as PolicyPhases } from '../../../common/types';

import { KibanaContextProvider } from '../../../public/shared_imports';
import { AppServicesContext } from '../../../public/types';
import { createBreadcrumbsMock } from '../../../public/application/services/breadcrumbs.mock';

type Phases = keyof PolicyPhases;
Expand Down Expand Up @@ -53,10 +56,16 @@ const testBedConfig: TestBedConfig = {

const breadcrumbService = createBreadcrumbsMock();

const MyComponent = (props: any) => {
const MyComponent = ({ appServicesContext, ...rest }: any) => {
return (
<KibanaContextProvider services={{ breadcrumbService }}>
<EditPolicy {...props} />
<KibanaContextProvider
services={{
breadcrumbService,
license: licensingMock.createLicense({ license: { type: 'enterprise' } }),
...appServicesContext,
}}
>
<EditPolicy {...rest} />
</KibanaContextProvider>
);
};
Expand All @@ -67,10 +76,10 @@ type SetupReturn = ReturnType<typeof setup>;

export type EditPolicyTestBed = SetupReturn extends Promise<infer U> ? U : SetupReturn;

export const setup = async () => {
const testBed = await initTestBed();
export const setup = async (arg?: { appServicesContext: Partial<AppServicesContext> }) => {
const testBed = await initTestBed(arg);

const { find, component, form } = testBed;
const { find, component, form, exists } = testBed;

const createFormToggleAction = (dataTestSubject: string) => async (checked: boolean) => {
await act(async () => {
Expand Down Expand Up @@ -128,12 +137,15 @@ export const setup = async () => {
component.update();
};

const toggleForceMerge = (phase: Phases) => createFormToggleAction(`${phase}-forceMergeSwitch`);

const setForcemergeSegmentsCount = (phase: Phases) =>
createFormSetValueAction(`${phase}-selectedForceMergeSegments`);

const setBestCompression = (phase: Phases) => createFormToggleAction(`${phase}-bestCompression`);
const createForceMergeActions = (phase: Phases) => {
const toggleSelector = `${phase}-forceMergeSwitch`;
return {
forceMergeFieldExists: () => exists(toggleSelector),
toggleForceMerge: createFormToggleAction(toggleSelector),
setForcemergeSegmentsCount: createFormSetValueAction(`${phase}-selectedForceMergeSegments`),
setBestCompression: createFormToggleAction(`${phase}-bestCompression`),
};
};

const setIndexPriority = (phase: Phases) =>
createFormSetValueAction(`${phase}-phaseIndexPriority`);
Expand Down Expand Up @@ -180,7 +192,35 @@ export const setup = async () => {
await createFormSetValueAction('warm-selectedPrimaryShardCount')(value);
};

const shrinkExists = () => exists('shrinkSwitch');

const setFreeze = createFormToggleAction('freezeSwitch');
const freezeExists = () => exists('freezeSwitch');

const createSearchableSnapshotActions = (phase: Phases) => {
const fieldSelector = `searchableSnapshotField-${phase}`;
const licenseCalloutSelector = `${fieldSelector}.searchableSnapshotDisabledDueToLicense`;
const toggleSelector = `${fieldSelector}.searchableSnapshotToggle`;

const toggleSearchableSnapshot = createFormToggleAction(toggleSelector);
return {
searchableSnapshotDisabled: () => exists(licenseCalloutSelector),
searchableSnapshotsExists: () => exists(fieldSelector),
findSearchableSnapshotToggle: () => find(toggleSelector),
searchableSnapshotDisabledDueToLicense: () =>
exists(`${fieldSelector}.searchableSnapshotDisabledDueToLicense`),
toggleSearchableSnapshot,
setSearchableSnapshot: async (value: string) => {
await toggleSearchableSnapshot(true);
act(() => {
find(`searchableSnapshotField-${phase}.searchableSnapshotCombobox`).simulate('change', [
{ label: value },
]);
});
component.update();
},
};
};

return {
...testBed,
Expand All @@ -192,10 +232,9 @@ export const setup = async () => {
setMaxDocs,
setMaxAge,
toggleRollover,
toggleForceMerge: toggleForceMerge('hot'),
setForcemergeSegments: setForcemergeSegmentsCount('hot'),
setBestCompression: setBestCompression('hot'),
...createForceMergeActions('hot'),
setIndexPriority: setIndexPriority('hot'),
...createSearchableSnapshotActions('hot'),
},
warm: {
enable: enable('warm'),
Expand All @@ -206,9 +245,8 @@ export const setup = async () => {
setSelectedNodeAttribute: setSelectedNodeAttribute('warm'),
setReplicas: setReplicas('warm'),
setShrink,
toggleForceMerge: toggleForceMerge('warm'),
setForcemergeSegments: setForcemergeSegmentsCount('warm'),
setBestCompression: setBestCompression('warm'),
shrinkExists,
...createForceMergeActions('warm'),
setIndexPriority: setIndexPriority('warm'),
},
cold: {
Expand All @@ -219,7 +257,9 @@ export const setup = async () => {
setSelectedNodeAttribute: setSelectedNodeAttribute('cold'),
setReplicas: setReplicas('cold'),
setFreeze,
freezeExists,
setIndexPriority: setIndexPriority('cold'),
...createSearchableSnapshotActions('cold'),
},
delete: {
enable: enable('delete'),
Expand Down
Loading