mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
* fixing issues with maximum documents and maximum size being set * removing defaults from ES policy load and removing unneeded propTypes * fixing react warnings about controlled -> uncontrolled * fixing tests * more fixes for react controlled -> uncontrolled errors * better fix for react warnings through empty default phases * removing unused translation * removing unnecessary async/awaits in onChange handlers
This commit is contained in:
parent
ee4072be29
commit
4ea8ea373c
16 changed files with 138 additions and 136 deletions
|
@ -29,6 +29,7 @@ import {
|
|||
policyNameContainsSpaceErrorMessage,
|
||||
policyNameMustBeDifferentErrorMessage,
|
||||
policyNameAlreadyUsedErrorMessage,
|
||||
maximumDocumentsRequiredMessage,
|
||||
} from '../../public/store/selectors/lifecycle';
|
||||
|
||||
let server;
|
||||
|
@ -184,7 +185,7 @@ describe('edit policy', () => {
|
|||
maxAgeInput.simulate('change', { target: { value: '' } });
|
||||
rendered.update();
|
||||
save(rendered);
|
||||
expectedErrorMessages(rendered, [maximumSizeRequiredMessage, maximumAgeRequiredMessage]);
|
||||
expectedErrorMessages(rendered, [maximumSizeRequiredMessage, maximumAgeRequiredMessage, maximumDocumentsRequiredMessage]);
|
||||
});
|
||||
test('should show number above 0 required error when trying to save with -1 for max size', () => {
|
||||
const rendered = mountWithIntl(component);
|
||||
|
|
|
@ -20,10 +20,6 @@ import {
|
|||
import {
|
||||
PHASE_COLD,
|
||||
PHASE_ENABLED,
|
||||
PHASE_ROLLOVER_ALIAS,
|
||||
PHASE_ROLLOVER_MINIMUM_AGE,
|
||||
PHASE_ROLLOVER_MINIMUM_AGE_UNITS,
|
||||
PHASE_NODE_ATTRS,
|
||||
PHASE_REPLICA_COUNT,
|
||||
PHASE_FREEZE_ENABLED
|
||||
} from '../../../../store/constants';
|
||||
|
@ -40,15 +36,6 @@ class ColdPhaseUi extends PureComponent {
|
|||
|
||||
isShowingErrors: PropTypes.bool.isRequired,
|
||||
errors: PropTypes.object.isRequired,
|
||||
phaseData: PropTypes.shape({
|
||||
[PHASE_ENABLED]: PropTypes.bool.isRequired,
|
||||
[PHASE_ROLLOVER_ALIAS]: PropTypes.string.isRequired,
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE]: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
||||
.isRequired,
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE_UNITS]: PropTypes.string.isRequired,
|
||||
[PHASE_NODE_ATTRS]: PropTypes.string.isRequired,
|
||||
[PHASE_REPLICA_COUNT]: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
||||
}).isRequired,
|
||||
};
|
||||
render() {
|
||||
const {
|
||||
|
@ -100,8 +87,8 @@ class ColdPhaseUi extends PureComponent {
|
|||
}
|
||||
id={`${PHASE_COLD}-${PHASE_ENABLED}`}
|
||||
checked={phaseData[PHASE_ENABLED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_ENABLED, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_ENABLED, e.target.checked);
|
||||
}}
|
||||
aria-controls="coldPhaseContent"
|
||||
/>
|
||||
|
@ -157,8 +144,8 @@ class ColdPhaseUi extends PureComponent {
|
|||
<EuiFieldNumber
|
||||
id={`${PHASE_COLD}-${PHASE_REPLICA_COUNT}`}
|
||||
value={phaseData[PHASE_REPLICA_COUNT]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_REPLICA_COUNT, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_REPLICA_COUNT, e.target.value);
|
||||
}}
|
||||
min={0}
|
||||
/>
|
||||
|
@ -197,8 +184,8 @@ class ColdPhaseUi extends PureComponent {
|
|||
<EuiSwitch
|
||||
data-test-subj="freezeSwitch"
|
||||
checked={phaseData[PHASE_FREEZE_ENABLED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_FREEZE_ENABLED, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_FREEZE_ENABLED, e.target.checked);
|
||||
}}
|
||||
label={freezeLabel}
|
||||
aria-label={freezeLabel}
|
||||
|
|
|
@ -19,8 +19,6 @@ import {
|
|||
import {
|
||||
PHASE_DELETE,
|
||||
PHASE_ENABLED,
|
||||
PHASE_ROLLOVER_MINIMUM_AGE,
|
||||
PHASE_ROLLOVER_MINIMUM_AGE_UNITS,
|
||||
} from '../../../../store/constants';
|
||||
import { ActiveBadge, PhaseErrorMessage } from '../../../components';
|
||||
|
||||
|
@ -29,14 +27,6 @@ export class DeletePhase extends PureComponent {
|
|||
setPhaseData: PropTypes.func.isRequired,
|
||||
isShowingErrors: PropTypes.bool.isRequired,
|
||||
errors: PropTypes.object.isRequired,
|
||||
phaseData: PropTypes.shape({
|
||||
[PHASE_ENABLED]: PropTypes.bool.isRequired,
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE]: PropTypes.oneOfType([
|
||||
PropTypes.number,
|
||||
PropTypes.string
|
||||
]).isRequired,
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE_UNITS]: PropTypes.string.isRequired
|
||||
}).isRequired
|
||||
};
|
||||
|
||||
render() {
|
||||
|
@ -85,8 +75,8 @@ export class DeletePhase extends PureComponent {
|
|||
}
|
||||
id={`${PHASE_DELETE}-${PHASE_ENABLED}`}
|
||||
checked={phaseData[PHASE_ENABLED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_ENABLED, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_ENABLED, e.target.checked);
|
||||
}}
|
||||
aria-controls="deletePhaseContent"
|
||||
/>
|
||||
|
|
|
@ -21,13 +21,12 @@ import {
|
|||
import { LearnMoreLink, ActiveBadge, PhaseErrorMessage } from '../../../components';
|
||||
import {
|
||||
PHASE_HOT,
|
||||
PHASE_ROLLOVER_ALIAS,
|
||||
PHASE_ROLLOVER_MAX_AGE,
|
||||
PHASE_ROLLOVER_MAX_AGE_UNITS,
|
||||
PHASE_ROLLOVER_MAX_DOCUMENTS,
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED,
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS,
|
||||
PHASE_ROLLOVER_ENABLED,
|
||||
MAX_SIZE_TYPE_DOCUMENT
|
||||
} from '../../../../store/constants';
|
||||
import { SetPriorityInput } from '../set_priority_input';
|
||||
|
||||
|
@ -39,19 +38,6 @@ class HotPhaseUi extends PureComponent {
|
|||
|
||||
isShowingErrors: PropTypes.bool.isRequired,
|
||||
errors: PropTypes.object.isRequired,
|
||||
phaseData: PropTypes.shape({
|
||||
[PHASE_ROLLOVER_ALIAS]: PropTypes.string.isRequired,
|
||||
[PHASE_ROLLOVER_MAX_AGE]: PropTypes.oneOfType([
|
||||
PropTypes.number,
|
||||
PropTypes.string
|
||||
]).isRequired,
|
||||
[PHASE_ROLLOVER_MAX_AGE_UNITS]: PropTypes.string.isRequired,
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED]: PropTypes.oneOfType([
|
||||
PropTypes.number,
|
||||
PropTypes.string
|
||||
]).isRequired,
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS]: PropTypes.string.isRequired
|
||||
}).isRequired
|
||||
};
|
||||
|
||||
render() {
|
||||
|
@ -63,7 +49,6 @@ class HotPhaseUi extends PureComponent {
|
|||
intl,
|
||||
setWarmPhaseOnRollover
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<EuiDescribedFormGroup
|
||||
|
@ -150,8 +135,8 @@ class HotPhaseUi extends PureComponent {
|
|||
<EuiFieldNumber
|
||||
id={`${PHASE_HOT}-${PHASE_ROLLOVER_MAX_SIZE_STORED}`}
|
||||
value={phaseData[PHASE_ROLLOVER_MAX_SIZE_STORED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(
|
||||
onChange={e => {
|
||||
setPhaseData(
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED,
|
||||
e.target.value
|
||||
);
|
||||
|
@ -174,8 +159,8 @@ class HotPhaseUi extends PureComponent {
|
|||
defaultMessage: 'Maximum index size units'
|
||||
})}
|
||||
value={phaseData[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(
|
||||
onChange={e => {
|
||||
setPhaseData(
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS,
|
||||
e.target.value
|
||||
);
|
||||
|
@ -185,9 +170,9 @@ class HotPhaseUi extends PureComponent {
|
|||
id: 'xpack.indexLifecycleMgmt.hotPhase.gigabytesLabel',
|
||||
defaultMessage: 'gigabytes'
|
||||
}) },
|
||||
{ value: MAX_SIZE_TYPE_DOCUMENT, text: intl.formatMessage({
|
||||
id: 'xpack.indexLifecycleMgmt.hotPhase.documentsLabel',
|
||||
defaultMessage: 'documents'
|
||||
{ value: 'mb', text: intl.formatMessage({
|
||||
id: 'xpack.indexLifecycleMgmt.hotPhase.megabytesLabel',
|
||||
defaultMessage: 'megabytes'
|
||||
}) }
|
||||
]}
|
||||
/>
|
||||
|
@ -195,6 +180,33 @@ class HotPhaseUi extends PureComponent {
|
|||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<EuiSpacer />
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem style={{ maxWidth: 188 }}>
|
||||
<ErrableFormRow
|
||||
id={`${PHASE_HOT}-${PHASE_ROLLOVER_MAX_DOCUMENTS}`}
|
||||
label={intl.formatMessage({
|
||||
id: 'xpack.indexLifecycleMgmt.hotPhase.maximumDocumentsLabel',
|
||||
defaultMessage: 'Maximum documents'
|
||||
})}
|
||||
errorKey={PHASE_ROLLOVER_MAX_DOCUMENTS}
|
||||
isShowingErrors={isShowingErrors}
|
||||
errors={errors}
|
||||
>
|
||||
<EuiFieldNumber
|
||||
id={`${PHASE_HOT}-${PHASE_ROLLOVER_MAX_DOCUMENTS}`}
|
||||
value={phaseData[PHASE_ROLLOVER_MAX_DOCUMENTS]}
|
||||
onChange={e => {
|
||||
setPhaseData(
|
||||
PHASE_ROLLOVER_MAX_DOCUMENTS,
|
||||
e.target.value
|
||||
);
|
||||
}}
|
||||
min={1}
|
||||
/>
|
||||
</ErrableFormRow>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<EuiSpacer />
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem style={{ maxWidth: 188 }}>
|
||||
<ErrableFormRow
|
||||
|
@ -210,8 +222,8 @@ class HotPhaseUi extends PureComponent {
|
|||
<EuiFieldNumber
|
||||
id={`${PHASE_HOT}-${PHASE_ROLLOVER_MAX_AGE}`}
|
||||
value={phaseData[PHASE_ROLLOVER_MAX_AGE]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_ROLLOVER_MAX_AGE, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_ROLLOVER_MAX_AGE, e.target.value);
|
||||
}}
|
||||
min={1}
|
||||
/>
|
||||
|
@ -231,8 +243,8 @@ class HotPhaseUi extends PureComponent {
|
|||
defaultMessage: 'Maximum age units'
|
||||
})}
|
||||
value={phaseData[PHASE_ROLLOVER_MAX_AGE_UNITS]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(
|
||||
onChange={e => {
|
||||
setPhaseData(
|
||||
PHASE_ROLLOVER_MAX_AGE_UNITS,
|
||||
e.target.value
|
||||
);
|
||||
|
|
|
@ -88,8 +88,8 @@ class NodeAllocationUi extends Component {
|
|||
id={`${phase}-${PHASE_NODE_ATTRS}`}
|
||||
value={phaseData[PHASE_NODE_ATTRS] || ' '}
|
||||
options={nodeOptions}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_NODE_ATTRS, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_NODE_ATTRS, e.target.value);
|
||||
}}
|
||||
/>
|
||||
|
||||
|
|
|
@ -59,8 +59,8 @@ export const SetPriorityInput = props => {
|
|||
<EuiFieldNumber
|
||||
id={`${phase}-${PHASE_INDEX_PRIORITY}`}
|
||||
value={phaseData[PHASE_INDEX_PRIORITY]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_INDEX_PRIORITY, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_INDEX_PRIORITY, e.target.value);
|
||||
}}
|
||||
min={0}
|
||||
/>
|
||||
|
|
|
@ -21,14 +21,10 @@ import {
|
|||
PHASE_WARM,
|
||||
PHASE_ENABLED,
|
||||
WARM_PHASE_ON_ROLLOVER,
|
||||
PHASE_ROLLOVER_ALIAS,
|
||||
PHASE_FORCE_MERGE_ENABLED,
|
||||
PHASE_FORCE_MERGE_SEGMENTS,
|
||||
PHASE_NODE_ATTRS,
|
||||
PHASE_PRIMARY_SHARD_COUNT,
|
||||
PHASE_REPLICA_COUNT,
|
||||
PHASE_ROLLOVER_MINIMUM_AGE,
|
||||
PHASE_ROLLOVER_MINIMUM_AGE_UNITS,
|
||||
PHASE_SHRINK_ENABLED,
|
||||
} from '../../../../store/constants';
|
||||
import { SetPriorityInput } from '../set_priority_input';
|
||||
|
@ -43,21 +39,6 @@ class WarmPhaseUi extends PureComponent {
|
|||
|
||||
isShowingErrors: PropTypes.bool.isRequired,
|
||||
errors: PropTypes.object.isRequired,
|
||||
phaseData: PropTypes.shape({
|
||||
[PHASE_ENABLED]: PropTypes.bool.isRequired,
|
||||
[WARM_PHASE_ON_ROLLOVER]: PropTypes.bool.isRequired,
|
||||
[PHASE_ROLLOVER_ALIAS]: PropTypes.string.isRequired,
|
||||
[PHASE_FORCE_MERGE_ENABLED]: PropTypes.bool.isRequired,
|
||||
[PHASE_FORCE_MERGE_SEGMENTS]: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
||||
.isRequired,
|
||||
[PHASE_NODE_ATTRS]: PropTypes.string.isRequired,
|
||||
[PHASE_PRIMARY_SHARD_COUNT]: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
||||
.isRequired,
|
||||
[PHASE_REPLICA_COUNT]: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE]: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
||||
.isRequired,
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE_UNITS]: PropTypes.string.isRequired,
|
||||
}).isRequired,
|
||||
};
|
||||
render() {
|
||||
const {
|
||||
|
@ -117,8 +98,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
}
|
||||
id={`${PHASE_WARM}-${PHASE_ENABLED}`}
|
||||
checked={phaseData[PHASE_ENABLED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_ENABLED, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_ENABLED, e.target.checked);
|
||||
}}
|
||||
aria-controls="warmPhaseContent"
|
||||
/>
|
||||
|
@ -138,8 +119,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
label={moveToWarmPhaseOnRolloverLabel}
|
||||
id={`${PHASE_WARM}-${WARM_PHASE_ON_ROLLOVER}`}
|
||||
checked={phaseData[WARM_PHASE_ON_ROLLOVER]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(WARM_PHASE_ON_ROLLOVER, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(WARM_PHASE_ON_ROLLOVER, e.target.checked);
|
||||
}}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
|
@ -192,8 +173,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
<EuiFieldNumber
|
||||
id={`${PHASE_WARM}-${PHASE_REPLICA_COUNT}`}
|
||||
value={phaseData[PHASE_REPLICA_COUNT]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_REPLICA_COUNT, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_REPLICA_COUNT, e.target.value);
|
||||
}}
|
||||
min={0}
|
||||
/>
|
||||
|
@ -233,8 +214,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
<EuiSwitch
|
||||
data-test-subj="shrinkSwitch"
|
||||
checked={phaseData[PHASE_SHRINK_ENABLED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_SHRINK_ENABLED, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_SHRINK_ENABLED, e.target.checked);
|
||||
}}
|
||||
label={shrinkLabel}
|
||||
aria-label={shrinkLabel}
|
||||
|
@ -259,8 +240,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
<EuiFieldNumber
|
||||
id={`${PHASE_WARM}-${PHASE_PRIMARY_SHARD_COUNT}`}
|
||||
value={phaseData[PHASE_PRIMARY_SHARD_COUNT]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_PRIMARY_SHARD_COUNT, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_PRIMARY_SHARD_COUNT, e.target.value);
|
||||
}}
|
||||
min={1}
|
||||
/>
|
||||
|
@ -299,8 +280,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
label={forcemergeLabel}
|
||||
aria-label={forcemergeLabel}
|
||||
checked={phaseData[PHASE_FORCE_MERGE_ENABLED]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_FORCE_MERGE_ENABLED, e.target.checked);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_FORCE_MERGE_ENABLED, e.target.checked);
|
||||
}}
|
||||
aria-controls="forcemergeContent"
|
||||
/>
|
||||
|
@ -321,8 +302,8 @@ class WarmPhaseUi extends PureComponent {
|
|||
<EuiFieldNumber
|
||||
id={`${PHASE_WARM}-${PHASE_FORCE_MERGE_SEGMENTS}`}
|
||||
value={phaseData[PHASE_FORCE_MERGE_SEGMENTS]}
|
||||
onChange={async e => {
|
||||
await setPhaseData(PHASE_FORCE_MERGE_SEGMENTS, e.target.value);
|
||||
onChange={e => {
|
||||
setPhaseData(PHASE_FORCE_MERGE_SEGMENTS, e.target.value);
|
||||
}}
|
||||
min={1}
|
||||
/>
|
||||
|
|
|
@ -13,14 +13,13 @@ export const PHASE_DELETE = 'delete';
|
|||
|
||||
export const PHASE_ENABLED = 'phaseEnabled';
|
||||
|
||||
export const MAX_SIZE_TYPE_DOCUMENT = 'd';
|
||||
|
||||
export const PHASE_ROLLOVER_ENABLED = 'rolloverEnabled';
|
||||
export const WARM_PHASE_ON_ROLLOVER = 'warmPhaseOnRollover';
|
||||
export const PHASE_ROLLOVER_ALIAS = 'selectedAlias';
|
||||
export const PHASE_ROLLOVER_MAX_AGE = 'selectedMaxAge';
|
||||
export const PHASE_ROLLOVER_MAX_AGE_UNITS = 'selectedMaxAgeUnits';
|
||||
export const PHASE_ROLLOVER_MAX_SIZE_STORED = 'selectedMaxSizeStored';
|
||||
export const PHASE_ROLLOVER_MAX_DOCUMENTS = 'selectedMaxDocuments';
|
||||
export const PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS = 'selectedMaxSizeStoredUnits';
|
||||
export const PHASE_ROLLOVER_MINIMUM_AGE = 'selectedMinimumAge';
|
||||
export const PHASE_ROLLOVER_MINIMUM_AGE_UNITS = 'selectedMinimumAgeUnits';
|
||||
|
@ -47,6 +46,7 @@ export const PHASE_ATTRIBUTES_THAT_ARE_NUMBERS = [
|
|||
...PHASE_ATTRIBUTES_THAT_ARE_NUMBERS_VALIDATE,
|
||||
PHASE_ROLLOVER_MAX_AGE,
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED,
|
||||
PHASE_ROLLOVER_MAX_DOCUMENTS
|
||||
];
|
||||
|
||||
export const STRUCTURE_INDEX_TEMPLATE = 'indexTemplate';
|
||||
|
@ -70,6 +70,7 @@ export const ERROR_STRUCTURE = {
|
|||
[PHASE_ROLLOVER_MAX_AGE]: [],
|
||||
[PHASE_ROLLOVER_MAX_AGE_UNITS]: [],
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED]: [],
|
||||
[PHASE_ROLLOVER_MAX_DOCUMENTS]: [],
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS]: [],
|
||||
[PHASE_INDEX_PRIORITY]: []
|
||||
},
|
||||
|
|
|
@ -23,4 +23,8 @@ export const defaultColdPhase = {
|
|||
[PHASE_REPLICA_COUNT]: '',
|
||||
[PHASE_FREEZE_ENABLED]: false,
|
||||
[PHASE_INDEX_PRIORITY]: 0
|
||||
};
|
||||
export const defaultEmptyColdPhase = {
|
||||
...defaultColdPhase,
|
||||
[PHASE_INDEX_PRIORITY]: ''
|
||||
};
|
|
@ -17,4 +17,5 @@ export const defaultDeletePhase = {
|
|||
[PHASE_ROLLOVER_ALIAS]: '',
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE]: '',
|
||||
[PHASE_ROLLOVER_MINIMUM_AGE_UNITS]: 'd'
|
||||
};
|
||||
};
|
||||
export const defaultEmptyDeletePhase = defaultDeletePhase;
|
|
@ -9,18 +9,27 @@ import {
|
|||
PHASE_ROLLOVER_MAX_AGE,
|
||||
PHASE_ROLLOVER_MAX_AGE_UNITS,
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED,
|
||||
PHASE_ROLLOVER_MAX_DOCUMENTS,
|
||||
PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS,
|
||||
PHASE_ROLLOVER_ALIAS,
|
||||
PHASE_INDEX_PRIORITY
|
||||
} from '../constants';
|
||||
|
||||
export const defaultHotPhase = {
|
||||
[PHASE_ENABLED]: true,
|
||||
[PHASE_ROLLOVER_ENABLED]: true,
|
||||
[PHASE_ROLLOVER_ALIAS]: '',
|
||||
[PHASE_ROLLOVER_MAX_AGE]: 30,
|
||||
[PHASE_ROLLOVER_MAX_AGE_UNITS]: 'd',
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED]: 50,
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS]: 'gb',
|
||||
[PHASE_INDEX_PRIORITY]: 100
|
||||
[PHASE_INDEX_PRIORITY]: 100,
|
||||
[PHASE_ROLLOVER_MAX_DOCUMENTS]: ''
|
||||
};
|
||||
export const defaultEmptyHotPhase = {
|
||||
...defaultHotPhase,
|
||||
[PHASE_ENABLED]: false,
|
||||
[PHASE_ROLLOVER_ENABLED]: false,
|
||||
[PHASE_ROLLOVER_MAX_AGE]: '',
|
||||
[PHASE_ROLLOVER_MAX_SIZE_STORED]: '',
|
||||
[PHASE_INDEX_PRIORITY]: '',
|
||||
[PHASE_ROLLOVER_MAX_DOCUMENTS]: ''
|
||||
};
|
|
@ -4,7 +4,7 @@
|
|||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
export { defaultDeletePhase } from './delete_phase';
|
||||
export { defaultColdPhase } from './cold_phase';
|
||||
export { defaultHotPhase } from './hot_phase';
|
||||
export { defaultWarmPhase } from './warm_phase';
|
||||
export * from './delete_phase';
|
||||
export * from './cold_phase';
|
||||
export * from './hot_phase';
|
||||
export * from './warm_phase';
|
|
@ -31,4 +31,9 @@ export const defaultWarmPhase = {
|
|||
[PHASE_REPLICA_COUNT]: '',
|
||||
[WARM_PHASE_ON_ROLLOVER]: true,
|
||||
[PHASE_INDEX_PRIORITY]: 50
|
||||
};
|
||||
export const defaultEmptyWarmPhase = {
|
||||
...defaultWarmPhase,
|
||||
[WARM_PHASE_ON_ROLLOVER]: false,
|
||||
[PHASE_INDEX_PRIORITY]: ''
|
||||
};
|
|
@ -23,7 +23,8 @@ import {
|
|||
PHASE_FORCE_MERGE_SEGMENTS,
|
||||
PHASE_REPLICA_COUNT,
|
||||
WARM_PHASE_ON_ROLLOVER,
|
||||
PHASE_INDEX_PRIORITY
|
||||
PHASE_INDEX_PRIORITY,
|
||||
PHASE_ROLLOVER_MAX_DOCUMENTS
|
||||
} from '../constants';
|
||||
import {
|
||||
getPhase,
|
||||
|
@ -49,6 +50,10 @@ export const maximumSizeRequiredMessage =
|
|||
i18n.translate('xpack.indexLifecycleMgmt.editPolicy.maximumIndexSizeMissingError', {
|
||||
defaultMessage: 'A maximum index size is required.'
|
||||
});
|
||||
export const maximumDocumentsRequiredMessage =
|
||||
i18n.translate('xpack.indexLifecycleMgmt.editPolicy.maximumDocumentsMissingError', {
|
||||
defaultMessage: 'Maximum documents is required.'
|
||||
});
|
||||
export const positiveNumbersAboveZeroErrorMessage =
|
||||
i18n.translate('xpack.indexLifecycleMgmt.editPolicy.positiveNumberAboveZeroRequiredError', {
|
||||
defaultMessage: 'Only numbers above 0 are allowed.'
|
||||
|
@ -97,8 +102,9 @@ export const validatePhase = (type, phase, errors) => {
|
|||
}
|
||||
if (phase[PHASE_ROLLOVER_ENABLED]) {
|
||||
if (
|
||||
!isNumber(phase[PHASE_ROLLOVER_MAX_AGE]) &&
|
||||
!isNumber(phase[PHASE_ROLLOVER_MAX_SIZE_STORED])
|
||||
!isNumber(phase[PHASE_ROLLOVER_MAX_AGE])
|
||||
&& !isNumber(phase[PHASE_ROLLOVER_MAX_SIZE_STORED])
|
||||
&& !isNumber(phase[PHASE_ROLLOVER_MAX_DOCUMENTS])
|
||||
) {
|
||||
phaseErrors[PHASE_ROLLOVER_MAX_AGE] = [
|
||||
maximumAgeRequiredMessage
|
||||
|
@ -106,6 +112,9 @@ export const validatePhase = (type, phase, errors) => {
|
|||
phaseErrors[PHASE_ROLLOVER_MAX_SIZE_STORED] = [
|
||||
maximumSizeRequiredMessage
|
||||
];
|
||||
phaseErrors[PHASE_ROLLOVER_MAX_DOCUMENTS] = [
|
||||
maximumDocumentsRequiredMessage
|
||||
];
|
||||
}
|
||||
if (isNumber(phase[PHASE_ROLLOVER_MAX_AGE]) && phase[PHASE_ROLLOVER_MAX_AGE] < 1) {
|
||||
phaseErrors[PHASE_ROLLOVER_MAX_AGE] = [
|
||||
|
@ -117,6 +126,11 @@ export const validatePhase = (type, phase, errors) => {
|
|||
positiveNumbersAboveZeroErrorMessage
|
||||
];
|
||||
}
|
||||
if (isNumber(phase[PHASE_ROLLOVER_MAX_DOCUMENTS]) && phase[PHASE_ROLLOVER_MAX_DOCUMENTS] < 1) {
|
||||
phaseErrors[PHASE_ROLLOVER_MAX_DOCUMENTS] = [
|
||||
positiveNumbersAboveZeroErrorMessage
|
||||
];
|
||||
}
|
||||
}
|
||||
if (phase[PHASE_SHRINK_ENABLED]) {
|
||||
if (!isNumber(phase[PHASE_PRIMARY_SHARD_COUNT])) {
|
||||
|
|
|
@ -8,12 +8,6 @@
|
|||
|
||||
import { createSelector } from 'reselect';
|
||||
import { Pager } from '@elastic/eui';
|
||||
import {
|
||||
defaultColdPhase,
|
||||
defaultDeletePhase,
|
||||
defaultHotPhase,
|
||||
defaultWarmPhase,
|
||||
} from '../defaults';
|
||||
import {
|
||||
PHASE_HOT,
|
||||
PHASE_WARM,
|
||||
|
@ -33,12 +27,18 @@ import {
|
|||
PHASE_REPLICA_COUNT,
|
||||
PHASE_ENABLED,
|
||||
PHASE_ATTRIBUTES_THAT_ARE_NUMBERS,
|
||||
MAX_SIZE_TYPE_DOCUMENT,
|
||||
WARM_PHASE_ON_ROLLOVER,
|
||||
PHASE_SHRINK_ENABLED,
|
||||
PHASE_FREEZE_ENABLED,
|
||||
PHASE_INDEX_PRIORITY
|
||||
PHASE_INDEX_PRIORITY,
|
||||
PHASE_ROLLOVER_MAX_DOCUMENTS
|
||||
} from '../constants';
|
||||
import {
|
||||
defaultEmptyDeletePhase,
|
||||
defaultEmptyColdPhase,
|
||||
defaultEmptyWarmPhase,
|
||||
defaultEmptyHotPhase
|
||||
} from '../defaults';
|
||||
import { filterItems, sortTable } from '../../services';
|
||||
|
||||
|
||||
|
@ -127,15 +127,14 @@ export const isEmptyObject = (obj) => {
|
|||
return Object.entries(obj).length === 0 && obj.constructor === Object;
|
||||
};
|
||||
|
||||
export const phaseFromES = (phase, phaseName, defaultPolicy) => {
|
||||
const policy = { ...defaultPolicy };
|
||||
|
||||
export const phaseFromES = (phase, phaseName, defaultEmptyPolicy) => {
|
||||
const policy = { ...defaultEmptyPolicy };
|
||||
if (!phase) {
|
||||
return policy;
|
||||
}
|
||||
|
||||
policy[PHASE_ENABLED] = true;
|
||||
policy[PHASE_ROLLOVER_ENABLED] = false;
|
||||
|
||||
|
||||
if (phase.min_age) {
|
||||
if (phaseName === PHASE_WARM && phase.min_age === '0ms') {
|
||||
|
@ -149,7 +148,8 @@ export const phaseFromES = (phase, phaseName, defaultPolicy) => {
|
|||
}
|
||||
}
|
||||
if (phaseName === PHASE_WARM) {
|
||||
policy[PHASE_SHRINK_ENABLED] = !!(phase.actions && phase.actions.shrink);
|
||||
policy[PHASE_SHRINK_ENABLED] = false;
|
||||
policy[PHASE_FORCE_MERGE_ENABLED] = false;
|
||||
}
|
||||
if (phase.actions) {
|
||||
const actions = phase.actions;
|
||||
|
@ -172,8 +172,7 @@ export const phaseFromES = (phase, phaseName, defaultPolicy) => {
|
|||
policy[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS] = maxSizeUnits;
|
||||
}
|
||||
if (rollover.max_docs) {
|
||||
policy[PHASE_ROLLOVER_MAX_SIZE_STORED] = rollover.max_docs;
|
||||
policy[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS] = MAX_SIZE_TYPE_DOCUMENT;
|
||||
policy[PHASE_ROLLOVER_MAX_DOCUMENTS] = rollover.max_docs;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -214,10 +213,10 @@ export const policyFromES = (policy) => {
|
|||
return {
|
||||
name,
|
||||
phases: {
|
||||
[PHASE_HOT]: phaseFromES(phases[PHASE_HOT], PHASE_HOT, defaultHotPhase),
|
||||
[PHASE_WARM]: phaseFromES(phases[PHASE_WARM], PHASE_WARM, defaultWarmPhase),
|
||||
[PHASE_COLD]: phaseFromES(phases[PHASE_COLD], PHASE_COLD, defaultColdPhase),
|
||||
[PHASE_DELETE]: phaseFromES(phases[PHASE_DELETE], PHASE_DELETE, defaultDeletePhase)
|
||||
[PHASE_HOT]: phaseFromES(phases[PHASE_HOT], PHASE_HOT, defaultEmptyHotPhase),
|
||||
[PHASE_WARM]: phaseFromES(phases[PHASE_WARM], PHASE_WARM, defaultEmptyWarmPhase),
|
||||
[PHASE_COLD]: phaseFromES(phases[PHASE_COLD], PHASE_COLD, defaultEmptyColdPhase),
|
||||
[PHASE_DELETE]: phaseFromES(phases[PHASE_DELETE], PHASE_DELETE, defaultEmptyDeletePhase)
|
||||
},
|
||||
isNew: false,
|
||||
saveAsNew: false
|
||||
|
@ -245,13 +244,12 @@ export const phaseToES = (phase, originalEsPhase) => {
|
|||
}`;
|
||||
}
|
||||
if (isNumber(phase[PHASE_ROLLOVER_MAX_SIZE_STORED])) {
|
||||
if (phase[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS] === MAX_SIZE_TYPE_DOCUMENT) {
|
||||
esPhase.actions.rollover.max_docs = phase[PHASE_ROLLOVER_MAX_SIZE_STORED];
|
||||
} else {
|
||||
esPhase.actions.rollover.max_size = `${phase[PHASE_ROLLOVER_MAX_SIZE_STORED]}${
|
||||
phase[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS]
|
||||
}`;
|
||||
}
|
||||
esPhase.actions.rollover.max_size = `${phase[PHASE_ROLLOVER_MAX_SIZE_STORED]}${
|
||||
phase[PHASE_ROLLOVER_MAX_SIZE_STORED_UNITS]
|
||||
}`;
|
||||
}
|
||||
if (isNumber(phase[PHASE_ROLLOVER_MAX_DOCUMENTS])) {
|
||||
esPhase.actions.rollover.max_docs = phase[PHASE_ROLLOVER_MAX_DOCUMENTS];
|
||||
}
|
||||
} else {
|
||||
delete esPhase.actions.rollover;
|
||||
|
|
|
@ -4227,7 +4227,6 @@
|
|||
"xpack.indexLifecycleMgmt.editPolicy.warmPhase.warmPhaseDescriptionMessage": "您仍在查询自己的索引,但其为只读。您可以将分片分配给效率较低的硬件。为了获取更快的搜索,您可以减少分片数目并强制合并段。",
|
||||
"xpack.indexLifecycleMgmt.editPolicy.warmPhase.warmPhaseLabel": "温阶段",
|
||||
"xpack.indexLifecycleMgmt.hotPhase.daysLabel": "天",
|
||||
"xpack.indexLifecycleMgmt.hotPhase.documentsLabel": "文档",
|
||||
"xpack.indexLifecycleMgmt.hotPhase.enableRolloverLabel": "启用滚动更新",
|
||||
"xpack.indexLifecycleMgmt.hotPhase.gigabytesLabel": "千兆字节",
|
||||
"xpack.indexLifecycleMgmt.hotPhase.hoursLabel": "小时",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue