Skip to content

Commit

Permalink
[ILM] Fix replicas not showing (elastic#92782)
Browse files Browse the repository at this point in the history
* remove logic that disables SS action in cold if no rollover and always show replicas field

* update test coverage to be consistent with new form behaviour and expand hot phase without rollover test

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
  • Loading branch information
jloleysens and kibanamachine committed Feb 25, 2021
1 parent e98eba2 commit 65ec1f3
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -222,12 +222,10 @@ export const setup = async (arg?: {
const createSearchableSnapshotActions = (phase: Phases) => {
const fieldSelector = `searchableSnapshotField-${phase}`;
const licenseCalloutSelector = `${fieldSelector}.searchableSnapshotDisabledDueToLicense`;
const rolloverCalloutSelector = `${fieldSelector}.searchableSnapshotFieldsNoRolloverCallout`;
const toggleSelector = `${fieldSelector}.searchableSnapshotToggle`;

const toggleSearchableSnapshot = createFormToggleAction(toggleSelector);
return {
searchableSnapshotDisabledDueToRollover: () => exists(rolloverCalloutSelector),
searchableSnapshotDisabled: () =>
exists(licenseCalloutSelector) && find(licenseCalloutSelector).props().disabled === true,
searchableSnapshotsExists: () => exists(fieldSelector),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ describe('<EditPolicy />', () => {
await actions.cold.setMinAgeUnits('s');
await actions.cold.setDataAllocation('node_attrs');
await actions.cold.setSelectedNodeAttribute('test:123');
await actions.cold.setSearchableSnapshot('my-repo');
await actions.cold.setReplicas('123');
await actions.cold.setFreeze(true);
await actions.cold.setIndexPriority('123');
Expand All @@ -426,6 +427,9 @@ describe('<EditPolicy />', () => {
},
},
"freeze": Object {},
"searchable_snapshot": Object {
"snapshot_repository": "my-repo",
},
"set_priority": Object {
"priority": 123,
},
Expand All @@ -445,19 +449,6 @@ describe('<EditPolicy />', () => {
}
`);
});

// Setting searchable snapshot field disables setting replicas so we test this separately
test('setting searchable snapshot', async () => {
const { actions } = testBed;
await actions.cold.enable(true);
await actions.cold.setSearchableSnapshot('my-repo');
await actions.savePolicy();
const latestRequest2 = server.requests[server.requests.length - 1];
const entirePolicy2 = JSON.parse(JSON.parse(latestRequest2.requestBody).body);
expect(entirePolicy2.phases.cold.actions.searchable_snapshot.snapshot_repository).toEqual(
'my-repo'
);
});
});
});

Expand Down Expand Up @@ -844,14 +835,15 @@ describe('<EditPolicy />', () => {
const { component } = testBed;
component.update();
});
test('hiding and disabling searchable snapshot field', async () => {
test('hides fields in hot phase', async () => {
const { actions } = testBed;
await actions.hot.toggleDefaultRollover(false);
await actions.hot.toggleRollover(false);
await actions.cold.enable(true);

expect(actions.hot.forceMergeFieldExists()).toBeFalsy();
expect(actions.hot.shrinkExists()).toBeFalsy();
expect(actions.hot.searchableSnapshotsExists()).toBeFalsy();
expect(actions.cold.searchableSnapshotDisabledDueToRollover()).toBeTruthy();
expect(actions.hot.readonlyExists()).toBeFalsy();
});

test('hiding rollover tip on minimum age', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@
import React, { FunctionComponent } from 'react';
import { FormattedMessage } from '@kbn/i18n/react';
import { i18n } from '@kbn/i18n';
import { get } from 'lodash';

import { EuiTextColor } from '@elastic/eui';

import { useFormData } from '../../../../../../shared_imports';

import { useConfigurationIssues } from '../../../form';

import { LearnMoreLink, ToggleFieldWithDescribedFormRow } from '../../';
Expand All @@ -36,23 +33,12 @@ const i18nTexts = {
},
};

const formFieldPaths = {
enabled: '_meta.cold.enabled',
searchableSnapshot: 'phases.cold.actions.searchable_snapshot.snapshot_repository',
};

export const ColdPhase: FunctionComponent = () => {
const { isUsingSearchableSnapshotInHotPhase } = useConfigurationIssues();

const [formData] = useFormData({
watch: [formFieldPaths.searchableSnapshot],
});

const showReplicasField = get(formData, formFieldPaths.searchableSnapshot) == null;

return (
<Phase phase="cold" topLevelSettings={<SearchableSnapshotField phase="cold" />}>
{showReplicasField && <ReplicasField phase="cold" />}
<ReplicasField phase="cold" />

{/* Freeze section */}
{!isUsingSearchableSnapshotInHotPhase && (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export const SearchableSnapshotField: FunctionComponent<Props> = ({ phase }) =>
services: { cloud },
} = useKibana();
const { getUrlForApp, policy, license, isNewPolicy } = useEditPolicyContext();
const { isUsingSearchableSnapshotInHotPhase, isUsingRollover } = useConfigurationIssues();
const { isUsingSearchableSnapshotInHotPhase } = useConfigurationIssues();

const searchableSnapshotPath = `phases.${phase}.actions.searchable_snapshot.snapshot_repository`;

Expand All @@ -62,10 +62,8 @@ export const SearchableSnapshotField: FunctionComponent<Props> = ({ phase }) =>
const isColdPhase = phase === 'cold';
const isDisabledDueToLicense = !license.canUseSearchableSnapshot();
const isDisabledInColdDueToHotPhase = isColdPhase && isUsingSearchableSnapshotInHotPhase;
const isDisabledInColdDueToRollover = isColdPhase && !isUsingRollover;

const isDisabled =
isDisabledDueToLicense || isDisabledInColdDueToHotPhase || isDisabledInColdDueToRollover;
const isDisabled = isDisabledDueToLicense || isDisabledInColdDueToHotPhase;

const [isFieldToggleChecked, setIsFieldToggleChecked] = useState(() =>
Boolean(
Expand Down Expand Up @@ -294,20 +292,6 @@ export const SearchableSnapshotField: FunctionComponent<Props> = ({ phase }) =>
)}
/>
);
} else if (isDisabledInColdDueToRollover) {
infoCallout = (
<EuiCallOut
size="s"
data-test-subj="searchableSnapshotFieldsNoRolloverCallout"
title={i18n.translate(
'xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotNoRolloverCalloutBody',
{
defaultMessage:
'Cannot create a searchable snapshot when rollover is disabled in the hot phase.',
}
)}
/>
);
}

return infoCallout ? (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,22 @@ export const WarmPhase: FunctionComponent = () => {
const { isUsingSearchableSnapshotInHotPhase } = useConfigurationIssues();

return (
<Phase phase={'warm'}>
<ReplicasField phase={'warm'} />
<Phase phase="warm">
<ReplicasField phase="warm" />

{!isUsingSearchableSnapshotInHotPhase && <ShrinkField phase={'warm'} />}
{!isUsingSearchableSnapshotInHotPhase && <ShrinkField phase="warm" />}

{!isUsingSearchableSnapshotInHotPhase && <ForcemergeField phase={'warm'} />}
{!isUsingSearchableSnapshotInHotPhase && <ForcemergeField phase="warm" />}

<ReadonlyField phase={'warm'} />
<ReadonlyField phase="warm" />

{/* Data tier allocation section */}
<DataTierAllocationField
description={i18nTexts.dataTierAllocation.description}
phase={'warm'}
phase="warm"
/>

<IndexPriorityField phase={'warm'} />
<IndexPriorityField phase="warm" />
</Phase>
);
};
1 change: 0 additions & 1 deletion x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -9466,7 +9466,6 @@
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotFieldTitle": "検索可能スナップショット",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotLicenseCalloutBody": "検索可能なスナップショットを作成するには、エンタープライズライセンスが必要です。",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotLicenseCalloutTitle": "エンタープライズライセンスが必要です",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotNoRolloverCalloutBody": "ロールオーバーがホットフェーズで無効な時には、検索可能なスナップショットを作成できません。",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotRepoRequiredError": "スナップショットリポジトリ名が必要です。",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotsToggleLabel": "検索可能スナップショットを作成",
"xpack.indexLifecycleMgmt.editPolicy.showPolicyJsonButto": "リクエストを表示",
Expand Down
1 change: 0 additions & 1 deletion x-pack/plugins/translations/translations/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -9490,7 +9490,6 @@
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotFieldTitle": "可搜索快照",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotLicenseCalloutBody": "要创建可搜索快照,需要企业许可证。",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotLicenseCalloutTitle": "需要企业许可证",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotNoRolloverCalloutBody": "在热阶段禁用滚动更新后,无法创建可搜索快照。",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotRepoRequiredError": "快照存储库名称必填。",
"xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotsToggleLabel": "创建可搜索快照",
"xpack.indexLifecycleMgmt.editPolicy.showPolicyJsonButto": "显示请求",
Expand Down

0 comments on commit 65ec1f3

Please sign in to comment.