All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.bb8c8232-8996.efd983b5730d4bbd8989.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"bb8c8232-8996.efd983b5730d4bbd8989.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/indices/IndexMaintenanceStrategiesConfiguration.tsx","webpack://graylog-web-interface/./src/components/indices/IndexMaintenanceStrategiesSummary.tsx","webpack://graylog-web-interface/./src/components/indices/contexts/IndexRetentionContext.tsx","webpack://graylog-web-interface/./src/components/indices/contexts/IndexRetentionProvider.tsx","webpack://graylog-web-interface/./src/components/indices/retention/DeletionRetentionStrategyConfiguration.jsx","webpack://graylog-web-interface/./src/components/indices/retention/DeletionRetentionStrategySummary.jsx","webpack://graylog-web-interface/./src/components/indices/retention/ClosingRetentionStrategyConfiguration.jsx","webpack://graylog-web-interface/./src/components/indices/retention/ClosingRetentionStrategySummary.jsx","webpack://graylog-web-interface/./src/components/indices/retention/NoopRetentionStrategyConfiguration.jsx","webpack://graylog-web-interface/./src/components/indices/retention/NoopRetentionStrategySummary.jsx","webpack://graylog-web-interface/./src/components/indices/retention/index.ts","webpack://graylog-web-interface/./src/components/indices/rotation/MessageCountRotationStrategyConfiguration.jsx","webpack://graylog-web-interface/./src/components/indices/rotation/MessageCountRotationStrategySummary.jsx","webpack://graylog-web-interface/./src/components/indices/rotation/SizeBasedRotationStrategyConfiguration.jsx","webpack://graylog-web-interface/./src/components/indices/rotation/SizeBasedRotationStrategySummary.jsx","webpack://graylog-web-interface/./src/components/indices/rotation/TimeBasedRotationStrategyConfiguration.jsx","webpack://graylog-web-interface/./src/components/indices/rotation/TimeBasedRotationStrategySummary.jsx","webpack://graylog-web-interface/./src/hooks/useMaxIndexRotationLimit.ts","webpack://graylog-web-interface/./node_modules/react-slider/dist/es/prod/components/ReactSlider/ReactSlider.mjs","webpack://graylog-web-interface/./src/components/common/RangeInput.tsx","webpack://graylog-web-interface/./src/hooks/useTimeSizeOptimizingFixedLeeway.ts","webpack://graylog-web-interface/./src/components/indices/rotation/TimeBasedSizeOptimizingStrategyConfiguration.tsx","webpack://graylog-web-interface/./src/components/indices/rotation/TimeBasedSizeOptimizingStrategySummary.tsx","webpack://graylog-web-interface/./src/components/indices/rotation/index.ts","webpack://graylog-web-interface/./src/stores/indices/IndicesConfigurationStore.ts","webpack://graylog-web-interface/./src/stores/indices/IndicesStore.ts"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { useCallback, useState, useEffect } from 'react';\nimport { useFormikContext } from 'formik';\nimport styled from 'styled-components';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport type {\n  RetentionStrategyConfig,\n  RotationStrategy,\n  TimeBasedRotationStrategyConfig,\n  JsonSchema,\n  StrategyConfig,\n  Strategy,\n  Strategies,\n} from 'components/indices/Types';\nimport type { SystemConfigurationComponentProps } from 'views/types';\nimport {\n  ARCHIVE_RETENTION_STRATEGY,\n  NOOP_RETENTION_STRATEGY,\n  RETENTION,\n  TIME_BASED_ROTATION_STRATEGY,\n  TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY,\n  TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY_TYPE,\n} from 'stores/indices/IndicesStore';\nimport { Alert, Col, Input, Row } from 'components/bootstrap';\nimport { Select } from 'components/common';\nimport { useIndexRetention } from 'components/indices/contexts/IndexRetentionContext';\n\ntype IndexMaintenanceStrategiesFormValues = {\n  rotation_strategy?: RotationStrategy,\n  rotation_strategy_class?: string,\n  retention_strategy_class?: string,\n}\n\ninterface ConfigComponentProps extends SystemConfigurationComponentProps {\n  config: StrategyConfig,\n  jsonSchema: JsonSchema,\n  updateConfig: (update: StrategyConfig) => void\n  useMaxNumberOfIndices?: () => [\n    number | undefined,\n    React.Dispatch>\n  ],\n}\n\ntype Props = {\n  title: string,\n  name: string,\n  description?: string,\n  selectPlaceholder: string,\n  pluginExports: Array<{\n    type: string,\n    displayName: string,\n    configComponent: React.ComponentType\n  }>,\n  strategies: Strategies,\n  retentionStrategiesContext: {\n    max_index_retention_period?: string,\n  },\n  activeConfig: {\n    strategy: string,\n    config: StrategyConfig,\n  },\n  getState: (strategy: string, data: StrategyConfig) => {\n    rotation_strategy_config?: StrategyConfig,\n    rotation_strategy_class?: string,\n    retention_strategy_config?: StrategyConfig,\n    retention_strategy_class?: string,\n  },\n}\n\nconst hasRetentionConfigField = (configData: StrategyConfig, field: string): configData is RetentionStrategyConfig => field in configData;\n\nconst StyledH3 = styled.h3`\n  margin-bottom: 10px;\n`;\nconst StyledSelect = styled(Select)`\n  margin-bottom: 10px;\n`;\nconst StyledAlert = styled(Alert)`\n  overflow: auto;\n  margin-right: 15px;\n  margin-left: 15px;\n`;\n\nconst getStrategyJsonSchema = (selectedStrategy: string, strategies: Strategies) : JsonSchema | undefined => {\n  const result = strategies.filter((s) => s.type === selectedStrategy)[0];\n\n  return result ? result.json_schema : undefined;\n};\n\nconst getDefaultStrategyConfig = (selectedStrategy: string, strategies: Strategies) : StrategyConfig | undefined => {\n  const result = strategies.filter((s) => s.type === selectedStrategy)[0];\n\n  return result ? result.default_config : undefined;\n};\n\nconst getTimeBaseStrategyWithElasticLimit = (activeConfig: TimeBasedRotationStrategyConfig, strategies: Strategies) : StrategyConfig => {\n  const timeBasedStrategy = getDefaultStrategyConfig(TIME_BASED_ROTATION_STRATEGY, strategies) as TimeBasedRotationStrategyConfig;\n\n  return { ...activeConfig, max_rotation_period: timeBasedStrategy?.max_rotation_period };\n};\n\nconst getStrategyConfig = (configTypeName: string, selectedStrategy: string, activeStrategy: string, activeConfig: StrategyConfig, strategies: Strategies) : StrategyConfig | undefined => {\n  if (selectedStrategy === TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY && configTypeName === 'retention') {\n    return activeConfig;\n  }\n\n  if (activeStrategy === selectedStrategy) {\n    // If the newly selected strategy is the current active strategy, we use the active configuration.\n    return activeStrategy === TIME_BASED_ROTATION_STRATEGY ? getTimeBaseStrategyWithElasticLimit(activeConfig as TimeBasedRotationStrategyConfig, strategies) : activeConfig;\n  }\n\n  // If the newly selected strategy is not the current active strategy, we use the selected strategy's default config.\n  return getDefaultStrategyConfig(selectedStrategy, strategies);\n};\n\nconst getConfigurationComponent = (\n  configTypeName: string,\n  selectedStrategy: string,\n  pluginExports: Array<{\n    type: string,\n    displayName: string,\n    configComponent: React.ComponentType,\n  }>,\n  strategies: Strategies,\n  strategy: Strategy | string,\n  config: StrategyConfig,\n  onConfigUpdate: (update: StrategyConfig) => void,\n  useMaxNumberOfIndices: () => [\n    number | undefined,\n    React.Dispatch>\n  ]) => {\n  if (!selectedStrategy || selectedStrategy.length < 1) {\n    return null;\n  }\n\n  const strategyPlugin = pluginExports.filter((exportedStrategy) => exportedStrategy.type === selectedStrategy)[0];\n\n  if (!strategyPlugin) {\n    return null;\n  }\n\n  const strategyType = typeof strategy === 'string' ? strategy : strategy.type;\n\n  const strategyConfig = getStrategyConfig(configTypeName, selectedStrategy, strategyType, config, strategies);\n\n  let componentProps : ConfigComponentProps = {\n    config: strategyConfig,\n    jsonSchema: getStrategyJsonSchema(selectedStrategy, strategies),\n    updateConfig: onConfigUpdate,\n  };\n\n  if (selectedStrategy === ARCHIVE_RETENTION_STRATEGY) {\n    componentProps = { ...componentProps, useMaxNumberOfIndices };\n  }\n\n  const element = React.createElement(strategyPlugin.configComponent as React.ComponentType, componentProps);\n\n  return (
{element}
);\n};\n\nconst IndexMaintenanceStrategiesConfiguration = ({\n title,\n name,\n description,\n selectPlaceholder,\n pluginExports,\n strategies,\n retentionStrategiesContext: { max_index_retention_period: maxRetentionPeriod },\n activeConfig: { strategy, config },\n getState,\n} : Props) => {\n const [newStrategy, setNewStrategy] = useState(strategy);\n const {\n setValues,\n values,\n values: {\n rotation_strategy: rotationStrategy,\n rotation_strategy_class: rotationStrategyClass,\n retention_strategy_class: retentionStrategyClass,\n },\n } = useFormikContext();\n\n const [maxNumberOfIndices, setMaxNumberOfIndices] = useIndexRetention().useMaxNumberOfIndices;\n\n useEffect(() => {\n if (config && hasRetentionConfigField(config, 'max_number_of_indices')) {\n setMaxNumberOfIndices(config.max_number_of_indices);\n }\n }, [config, setMaxNumberOfIndices]);\n\n const retentionIsNotNoop = retentionStrategyClass !== NOOP_RETENTION_STRATEGY;\n const isArchiveRetention = retentionStrategyClass !== ARCHIVE_RETENTION_STRATEGY;\n const shouldShowMaxRetentionWarning = maxRetentionPeriod && rotationStrategyClass === TIME_BASED_ROTATION_STRATEGY && retentionIsNotNoop;\n const isTimeBasedSizeOptimizing = rotationStrategyClass === TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY;\n const shouldShowTimeBasedSizeOptimizingForm = isTimeBasedSizeOptimizing && name === 'retention' && retentionIsNotNoop;\n const shouldShowNormalRetentionForm = (!isTimeBasedSizeOptimizing || (name === 'retention' && (!retentionIsNotNoop || !isArchiveRetention)));\n const helpText = isTimeBasedSizeOptimizing && name === 'rotation'\n ? 'The Time Based Size Optimizing Rotation Strategy tries to rotate the index daily.'\n + ' It can however skip the rotation to achieve optimal sized indices by keeping the shard size within an acceptable range.'\n + ' The optimization can delay the rotation within the range of the configured retention min/max lifetime.'\n + ' If an index is older than the range between min/max, it will be rotated regardless of its current size.'\n : null;\n\n const _onSelect = (selectedStrategy) => {\n if (!selectedStrategy || selectedStrategy.length < 1) {\n setNewStrategy(undefined);\n\n return;\n }\n\n const newConfig = getStrategyConfig(name, selectedStrategy, strategy, config, strategies);\n setNewStrategy(selectedStrategy);\n setValues({ ...values, ...getState(selectedStrategy, newConfig) });\n };\n\n const _onConfigUpdate = useCallback((newConfig) => {\n const _addConfigType = (selectedStrategy, data) => {\n // The config object needs to have the \"type\" field set to the \"default_config.type\" to make the REST call work.\n const result = strategies.filter((s) => s.type === selectedStrategy)[0];\n const copy = data;\n\n if (result) {\n copy.type = result.default_config.type;\n }\n\n return copy;\n };\n\n const configuration = _addConfigType(newStrategy, newConfig);\n setValues({ ...values, ...getState(newStrategy, configuration) });\n }, [getState, newStrategy, setValues, strategies, values]);\n\n const _onIndexTimeSizeOptimizingUpdate = useCallback((newConfig) => {\n if (isTimeBasedSizeOptimizing) {\n setValues({ ...values, ...{ rotation_strategy_class: rotationStrategyClass, rotation_strategy: { ...newConfig, type: TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY_TYPE } } });\n }\n }, [isTimeBasedSizeOptimizing, rotationStrategyClass, setValues, values]);\n\n const getAvailableSelectOptions = () => {\n const availableStrategies = pluginExports\n .filter((pluginOptions) => strategies.find(({ type }) => type === pluginOptions.type));\n\n const isSelectedItemInList = availableStrategies.filter((availableStrategy) => availableStrategy.type === newStrategy).length > 0;\n\n if (!isSelectedItemInList) {\n return [...availableStrategies, pluginExports.find((pluginOptions) => pluginOptions.type === newStrategy)].map((pluginOptions) => ({ value: pluginOptions.type, label: pluginOptions.displayName }));\n }\n\n return availableStrategies\n .map((c) => ({ value: c.type, label: c.displayName }));\n };\n\n const getDisplayName = () => pluginExports.find((pluginOptions) => pluginOptions.type === newStrategy).displayName;\n\n const getActiveSelection = () => newStrategy;\n\n const shouldShowInvalidRetentionWarning = () => (\n name === RETENTION && !getStrategyJsonSchema(getActiveSelection(), strategies)\n );\n\n return (\n
\n {title}\n {description && (\n \n {description}\n \n )}\n {helpText && (\n \n {helpText}\n \n )}\n {shouldShowMaxRetentionWarning && (\n \n The effective retention period value calculated from the\n Rotation period and the max number of indices should not be greater than the\n Max retention period of {maxRetentionPeriod} set by the Administrator.\n \n )}\n {shouldShowInvalidRetentionWarning() && (\n \n {getDisplayName()} strategy was deactivated.\n Please configure a valid retention strategy.\n \n )}\n \n \n \n \n \n \n \n \n \n {shouldShowTimeBasedSizeOptimizingForm && getConfigurationComponent(\n name,\n TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY,\n PluginStore.exports('indexRotationConfig'),\n [rotationStrategy],\n rotationStrategy,\n rotationStrategy,\n _onIndexTimeSizeOptimizingUpdate,\n () => [maxNumberOfIndices, setMaxNumberOfIndices],\n )}\n {shouldShowNormalRetentionForm && getConfigurationComponent(\n name,\n getActiveSelection(),\n pluginExports,\n strategies,\n strategy,\n config,\n _onConfigUpdate,\n () => [maxNumberOfIndices, setMaxNumberOfIndices],\n )}\n \n \n
\n );\n};\n\nIndexMaintenanceStrategiesConfiguration.propTypes = {\n title: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string,\n selectPlaceholder: PropTypes.string.isRequired,\n pluginExports: PropTypes.array.isRequired,\n strategies: PropTypes.array.isRequired,\n retentionStrategiesContext: PropTypes.shape({\n max_index_retention_period: PropTypes.string,\n }),\n activeConfig: PropTypes.object.isRequired,\n getState: PropTypes.func.isRequired,\n};\n\nIndexMaintenanceStrategiesConfiguration.defaultProps = {\n description: undefined,\n retentionStrategiesContext: {\n max_index_retention_period: undefined,\n },\n};\n\nexport default IndexMaintenanceStrategiesConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\nimport Spinner from 'components/common/Spinner';\nimport type {\n RotationStrategyConfig,\n RetentionStrategyConfig,\n\n} from 'components/indices/Types';\nimport type { IndexRotationConfig } from 'components/indices/rotation/types';\n\ntype Props = {\n config: {\n strategy: string,\n config: RotationStrategyConfig | RetentionStrategyConfig\n },\n pluginExports: Array,\n rotationStrategyClass?: string\n}\n\nconst IndexMaintenanceStrategiesSummary = ({ config, pluginExports, rotationStrategyClass } : Props) => {\n if (!config) {\n return ();\n }\n\n const activeStrategy = config.strategy;\n const strategy = pluginExports.filter((exportedStrategy) => exportedStrategy.type === activeStrategy)[0];\n\n if (!strategy || !strategy.summaryComponent) {\n return (Summary for strategy {activeStrategy} not found!);\n }\n\n const componentProps = rotationStrategyClass ? { config: config.config, rotationStrategyClass } : { config: config.config };\n\n const element = React.createElement(strategy.summaryComponent, componentProps);\n\n return ({element});\n};\n\nIndexMaintenanceStrategiesSummary.propTypes = {\n config: PropTypes.object.isRequired,\n pluginExports: PropTypes.array.isRequired,\n rotationStrategyClass: PropTypes.string,\n};\n\nIndexMaintenanceStrategiesSummary.defaultProps = {\n rotationStrategyClass: undefined,\n};\n\nexport default IndexMaintenanceStrategiesSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useContext } from 'react';\n\nexport type IndexRetentionContextType = {\n useMaxNumberOfIndices: [\n number | undefined,\n React.Dispatch>\n ]\n}\n\nconst IndexRetentionContext = React.createContext(null);\n\nconst useIndexRetention = (): IndexRetentionContextType => {\n try {\n const context = useContext(IndexRetentionContext);\n\n if (!context) {\n throw new Error('useIndexRetention must be used within a IndexRetentionProvider');\n }\n\n return context;\n } catch {\n return { useMaxNumberOfIndices: [9999, () => {}] };\n }\n};\n\nexport { useIndexRetention };\nexport default IndexRetentionContext;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useMemo, useState } from 'react';\n\nimport IndexRetentionContext from './IndexRetentionContext';\nimport type { IndexRetentionContextType } from './IndexRetentionContext';\n\ntype Props = {\n children: React.ReactNode,\n};\n\nconst IndexRetentionProvider = ({ children }: Props) => {\n const [maxNumberOfIndices, setMaxNumberOfIndices] = useState(undefined);\n\n const value: IndexRetentionContextType = useMemo(() => ({ useMaxNumberOfIndices: [maxNumberOfIndices, setMaxNumberOfIndices] }), [maxNumberOfIndices]);\n\n return (\n \n {children}\n \n );\n};\n\nexport default IndexRetentionProvider;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { Input } from 'components/bootstrap';\nimport { useIndexRetention } from 'components/indices/contexts/IndexRetentionContext';\n\nconst DeletionRetentionStrategyConfiguration = ({ updateConfig }) => {\n const [maxNumberOfIndices, setMaxNumberOfIndices] = useIndexRetention().useMaxNumberOfIndices;\n\n const _onInputUpdate = (field) => (e) => {\n const update = {};\n const value = getValueFromInput(e.target);\n update[field] = value;\n\n setMaxNumberOfIndices(value);\n updateConfig(update);\n };\n\n return (\n
\n Maximum number of indices to keep before deleting the oldest ones}\n required />\n
\n );\n};\n\nDeletionRetentionStrategyConfiguration.propTypes = {\n updateConfig: PropTypes.func.isRequired,\n};\n\nexport default DeletionRetentionStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY } from 'stores/indices/IndicesStore';\n\nconst DeletionRetentionStrategySummary = ({ config, rotationStrategyClass }) => (\n
\n
\n
Index retention strategy:
\n
Delete
\n {rotationStrategyClass !== TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY && (\n <>\n
Max number of indices:
\n
{config.max_number_of_indices}
\n \n )}\n
\n
\n);\n\nDeletionRetentionStrategySummary.propTypes = {\n config: PropTypes.object.isRequired,\n rotationStrategyClass: PropTypes.string,\n};\n\nDeletionRetentionStrategySummary.defaultProps = {\n rotationStrategyClass: undefined,\n};\n\nexport default DeletionRetentionStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { Input } from 'components/bootstrap';\nimport { useIndexRetention } from 'components/indices/contexts/IndexRetentionContext';\n\nconst ClosingRetentionStrategyConfiguration = ({ updateConfig }) => {\n const [maxNumberOfIndices, setMaxNumberOfIndices] = useIndexRetention().useMaxNumberOfIndices;\n\n const _onInputUpdate = (field) => (e) => {\n const update = {};\n const value = getValueFromInput(e.target);\n update[field] = value;\n\n setMaxNumberOfIndices(value);\n updateConfig(update);\n };\n\n return (\n
\n Maximum number of indices to keep before closing the oldest ones}\n required />\n
\n );\n};\n\nClosingRetentionStrategyConfiguration.propTypes = {\n updateConfig: PropTypes.func.isRequired,\n};\n\nexport default ClosingRetentionStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY } from 'stores/indices/IndicesStore';\n\nconst ClosingRetentionStrategySummary = ({ config, rotationStrategyClass }) => (\n
\n
\n
Index retention strategy:
\n
Close
\n {rotationStrategyClass !== TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY && (\n <>\n
Max number of indices:
\n
{config.max_number_of_indices}
\n \n )}\n
\n
\n);\n\nClosingRetentionStrategySummary.propTypes = {\n config: PropTypes.object.isRequired,\n rotationStrategyClass: PropTypes.string,\n};\n\nClosingRetentionStrategySummary.defaultProps = {\n rotationStrategyClass: undefined,\n};\n\nexport default ClosingRetentionStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\n\nconst StyledAlert = styled(Alert)`\n overflow: auto;\n margin-right: 15px;\n margin-left: 15px;\n`;\n\nconst NoopRetentionStrategyConfiguration = () => (\n \n This retention strategy is not configurable because it does not do anything.\n \n);\n\nexport default NoopRetentionStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nconst NoopRetentionStrategySummary = () => (\n
\n
\n
Index retention strategy:
\n
Do nothing
\n
\n
\n);\n\nexport default NoopRetentionStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport DeletionRetentionStrategyConfiguration from './DeletionRetentionStrategyConfiguration';\nimport DeletionRetentionStrategySummary from './DeletionRetentionStrategySummary';\nimport ClosingRetentionStrategyConfiguration from './ClosingRetentionStrategyConfiguration';\nimport ClosingRetentionStrategySummary from './ClosingRetentionStrategySummary';\nimport NoopRetentionStrategyConfiguration from './NoopRetentionStrategyConfiguration';\nimport NoopRetentionStrategySummary from './NoopRetentionStrategySummary';\n\nPluginStore.register(new PluginManifest({}, {\n indexRetentionConfig: [\n {\n type: 'org.graylog2.indexer.retention.strategies.DeletionRetentionStrategy',\n displayName: 'Delete Index',\n configComponent: DeletionRetentionStrategyConfiguration,\n summaryComponent: DeletionRetentionStrategySummary,\n },\n {\n type: 'org.graylog2.indexer.retention.strategies.ClosingRetentionStrategy',\n displayName: 'Close Index',\n configComponent: ClosingRetentionStrategyConfiguration,\n summaryComponent: ClosingRetentionStrategySummary,\n },\n {\n type: 'org.graylog2.indexer.retention.strategies.NoopRetentionStrategy',\n displayName: 'Do nothing',\n configComponent: NoopRetentionStrategyConfiguration,\n summaryComponent: NoopRetentionStrategySummary,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { Input } from 'components/bootstrap';\n\nconst MessageCountRotationStrategyConfiguration = ({ config, updateConfig }) => {\n const { max_docs_per_index } = config;\n const [maxDocsPerIndex, setMaxDocsPerIndex] = useState(max_docs_per_index);\n\n const _onInputUpdate = (field) => (e) => {\n const update = {};\n const value = getValueFromInput(e.target);\n update[field] = value;\n\n setMaxDocsPerIndex(value);\n updateConfig(update);\n };\n\n return (\n
\n \n
\n );\n};\n\nMessageCountRotationStrategyConfiguration.propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n};\n\nexport default MessageCountRotationStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nconst MessageCountRotationStrategySummary = ({ config }) => (\n
\n
\n
Index rotation strategy:
\n
Message Count
\n
Max docs per index:
\n
{config.max_docs_per_index}
\n
\n
\n);\n\nMessageCountRotationStrategySummary.propTypes = {\n config: PropTypes.object.isRequired,\n};\n\nexport default MessageCountRotationStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { Input } from 'components/bootstrap';\nimport NumberUtils from 'util/NumberUtils';\n\nconst SizeBasedRotationStrategyConfiguration = ({ config, updateConfig }) => {\n const { max_size } = config;\n const [maxSize, setMaxSize] = useState(max_size);\n\n const _onInputUpdate = (field) => (e) => {\n const update = {};\n const value = getValueFromInput(e.target);\n update[field] = value;\n\n setMaxSize(value);\n updateConfig(update);\n };\n\n const _formatSize = () => NumberUtils.formatBytes(maxSize);\n\n return (\n
\n \n
\n );\n};\n\nSizeBasedRotationStrategyConfiguration.propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n};\n\nexport default SizeBasedRotationStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport NumberUtils from 'util/NumberUtils';\n\nconst SizeBasedRotationStrategySummary = ({ config }) => {\n const { max_size: maxSize } = config;\n\n return (\n
\n
\n
Index rotation strategy:
\n
Index Size
\n
Max index size:
\n
{maxSize} bytes ({NumberUtils.formatBytes(maxSize)})
\n
\n
\n );\n};\n\nSizeBasedRotationStrategySummary.propTypes = {\n config: PropTypes.object.isRequired,\n};\n\nexport default SizeBasedRotationStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport moment from 'moment';\n\nimport { Input } from 'components/bootstrap';\n\nconst _validationLimit = (durationInMilliseconds, rotationLimit) => durationInMilliseconds <= moment.duration(rotationLimit).asMilliseconds();\n\nclass TimeBasedRotationStrategyConfiguration extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n };\n\n inputs = {};\n\n constructor(props) {\n super(props);\n const {\n config: {\n rotation_period: rotationPeriod,\n max_rotation_period: rotationLimit,\n rotate_empty_index_set: rotateEmptyIndexSet,\n },\n } = this.props;\n\n this.state = {\n rotation_period: rotationPeriod,\n rotationLimit,\n rotate_empty_index_set: rotateEmptyIndexSet,\n };\n }\n\n _onPeriodUpdate = (field) => {\n const { updateConfig } = this.props;\n\n return () => {\n const update = {};\n let period = this.inputs[field].getValue().toUpperCase();\n\n if (!period.startsWith('P')) {\n period = `P${period}`;\n }\n\n update[field] = period;\n\n this.setState(update);\n\n if (this._isValidPeriod(update[field])) {\n // Only propagate state if the config is valid.\n updateConfig({\n rotation_period: period,\n rotate_empty_index_set: this.state.rotate_empty_index_set,\n });\n }\n };\n };\n\n _onRotateEmptyIndexSetUpdate = (field) => {\n const { updateConfig } = this.props;\n\n return () => {\n const update = {};\n const rotateEmptyIndexSet = this.inputs[field].getValue();\n\n update[field] = rotateEmptyIndexSet;\n this.setState(update);\n\n updateConfig({\n rotation_period: this.state.rotation_period,\n rotate_empty_index_set: rotateEmptyIndexSet,\n });\n };\n };\n\n _isValidPeriod = (duration) => {\n const { rotation_period: rotationPeriod, rotationLimit } = this.state;\n const check = duration || rotationPeriod;\n const checkInMilliseconds = moment.duration(check).asMilliseconds();\n\n return checkInMilliseconds >= 3600000 && (\n rotationLimit ? _validationLimit(checkInMilliseconds, rotationLimit) : true\n );\n };\n\n _validationState = () => {\n if (this._isValidPeriod()) {\n return undefined;\n }\n\n return 'error';\n };\n\n _formatDuration = () => {\n const { rotation_period: rotationPeriod, rotationLimit } = this.state;\n const maxRotationPeriodErrorMessage = rotationLimit ? ` and max ${moment.duration(rotationLimit).humanize()}` : '';\n\n return this._isValidPeriod() ? moment.duration(rotationPeriod).humanize() : `invalid (min 1 hour${maxRotationPeriodErrorMessage})`;\n };\n\n render() {\n const {\n rotation_period: rotationPeriod,\n rotate_empty_index_set: rotateEmptyIndexSet,\n rotationLimit,\n } = this.state;\n const maxRotationPeriodHelpText = rotationLimit ? ` The max rotation period is set to ${moment.duration(rotationLimit).humanize()} by Administrator.` : '';\n\n return (\n
\n { this.inputs.rotation_period = rotationPeriodRef; }}\n label=\"Rotation period (ISO8601 Duration)\"\n onChange={this._onPeriodUpdate('rotation_period')}\n value={rotationPeriod}\n help={`How long an index gets written to before it is rotated. (i.e. \"P1D\" for 1 day, \"PT6H\" for 6 hours).${maxRotationPeriodHelpText}`}\n addonAfter={this._formatDuration()}\n bsStyle={this._validationState()}\n required />\n \n { this.inputs.rotate_empty_index_set = rotateEmptyIndexSetRef; }}\n label=\"Rotate empty index set\"\n onChange={this._onRotateEmptyIndexSetUpdate('rotate_empty_index_set')}\n checked={rotateEmptyIndexSet}\n help=\"Apply the rotation strategy even when the index set is empty (not recommended).\" />\n \n
\n );\n }\n}\n\nexport default TimeBasedRotationStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport moment from 'moment';\nimport 'moment-duration-format';\n\nclass TimeBasedRotationStrategySummary extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n };\n\n _humanizedPeriod = () => {\n const duration = moment.duration(this.props.config.rotation_period);\n\n return `${duration.format()}, ${duration.humanize()}`;\n };\n\n render() {\n return (\n
\n
\n
Index rotation strategy:
\n
Index Time
\n
Rotation period:
\n
{this.props.config.rotation_period} ({this._humanizedPeriod()})
\n
Rotate empty index set:
\n
{this.props.config.rotate_empty_index_set ? 'Yes' : 'No'}
\n
\n
\n );\n }\n}\n\nexport default TimeBasedRotationStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useEffect } from 'react';\n\nimport { useStore } from 'stores/connect';\nimport { IndicesConfigurationActions, IndicesConfigurationStore } from 'stores/indices/IndicesConfigurationStore';\n\nconst useMaxIndexRotationLimit = () => {\n const { retentionStrategiesContext } = useStore(IndicesConfigurationStore);\n const maxRetentionPeriod = retentionStrategiesContext?.max_index_retention_period;\n\n useEffect(() => {\n IndicesConfigurationActions.loadRetentionStrategies();\n }, []);\n\n return maxRetentionPeriod;\n};\n\nexport default useMaxIndexRotationLimit;\n","import e from\"@babel/runtime/helpers/inheritsLoose\";import t from\"react\";function s(e){return e&&e.stopPropagation&&e.stopPropagation(),e&&e.preventDefault&&e.preventDefault(),!1}function n(e){return null==e?[]:Array.isArray(e)?e.slice():[e]}function i(e){return null!==e&&1===e.length?e[0]:e.slice()}function o(e){Object.keys(e).forEach((t=>{\"undefined\"!=typeof document&&document.addEventListener(t,e[t],!1)}))}function r(e,t){return a(function(e,t){let s=e;s<=t.min&&(s=t.min);s>=t.max&&(s=t.max);return s}(e,t),t)}function a(e,t){const s=(e-t.min)%t.step;let n=e-s;return 2*Math.abs(s)>=t.step&&(n+=s>0?t.step:-t.step),parseFloat(n.toFixed(5))}let p=function(p){function u(e){var a;(a=p.call(this,e)||this).onKeyUp=()=>{a.onEnd()},a.onMouseUp=()=>{a.onEnd(a.getMouseEventMap())},a.onTouchEnd=e=>{e.preventDefault(),a.onEnd(a.getTouchEventMap())},a.onBlur=()=>{a.setState({index:-1},a.onEnd(a.getKeyDownEventMap()))},a.onMouseMove=e=>{a.setState({pending:!0});const t=a.getMousePosition(e),s=a.getDiffPosition(t[0]),n=a.getValueFromPosition(s);a.move(n)},a.onTouchMove=e=>{if(e.touches.length>1)return;a.setState({pending:!0});const t=a.getTouchPosition(e);if(void 0===a.isScrolling){const e=t[0]-a.startPosition[0],s=t[1]-a.startPosition[1];a.isScrolling=Math.abs(s)>Math.abs(e)}if(a.isScrolling)return void a.setState({index:-1});const s=a.getDiffPosition(t[0]),n=a.getValueFromPosition(s);a.move(n)},a.onKeyDown=e=>{if(!(e.ctrlKey||e.shiftKey||e.altKey||e.metaKey))switch(a.setState({pending:!0}),e.key){case\"ArrowLeft\":case\"ArrowDown\":case\"Left\":case\"Down\":e.preventDefault(),a.moveDownByStep();break;case\"ArrowRight\":case\"ArrowUp\":case\"Right\":case\"Up\":e.preventDefault(),a.moveUpByStep();break;case\"Home\":e.preventDefault(),a.move(a.props.min);break;case\"End\":e.preventDefault(),a.move(a.props.max);break;case\"PageDown\":e.preventDefault(),a.moveDownByStep(a.props.pageFn(a.props.step));break;case\"PageUp\":e.preventDefault(),a.moveUpByStep(a.props.pageFn(a.props.step))}},a.onSliderMouseDown=e=>{if(!a.props.disabled&&2!==e.button){if(a.setState({pending:!0}),!a.props.snapDragDisabled){const t=a.getMousePosition(e);a.forceValueFromPosition(t[0],(e=>{a.start(e,t[0]),o(a.getMouseEventMap())}))}s(e)}},a.onSliderClick=e=>{if(!a.props.disabled&&a.props.onSliderClick&&!a.hasMoved){const t=a.getMousePosition(e),s=r(a.calcValue(a.calcOffsetFromPosition(t[0])),a.props);a.props.onSliderClick(s)}},a.createOnKeyDown=e=>t=>{a.props.disabled||(a.start(e),o(a.getKeyDownEventMap()),s(t))},a.createOnMouseDown=e=>t=>{if(a.props.disabled||2===t.button)return;a.setState({pending:!0});const n=a.getMousePosition(t);a.start(e,n[0]),o(a.getMouseEventMap()),s(t)},a.createOnTouchStart=e=>t=>{if(a.props.disabled||t.touches.length>1)return;a.setState({pending:!0});const s=a.getTouchPosition(t);a.startPosition=s,a.isScrolling=void 0,a.start(e,s[0]),o(a.getTouchEventMap()),function(e){e.stopPropagation&&e.stopPropagation()}(t)},a.handleResize=()=>{const e=window.setTimeout((()=>{a.pendingResizeTimeouts.shift(),a.resize()}),0);a.pendingResizeTimeouts.push(e)},a.renderThumb=(e,t)=>{const s=a.props.thumbClassName+\" \"+a.props.thumbClassName+\"-\"+t+\" \"+(a.state.index===t?a.props.thumbActiveClassName:\"\"),n={ref:e=>{a[\"thumb\"+t]=e},key:a.props.thumbClassName+\"-\"+t,className:s,style:e,onMouseDown:a.createOnMouseDown(t),onTouchStart:a.createOnTouchStart(t),onFocus:a.createOnKeyDown(t),tabIndex:0,role:\"slider\",\"aria-orientation\":a.props.orientation,\"aria-valuenow\":a.state.value[t],\"aria-valuemin\":a.props.min,\"aria-valuemax\":a.props.max,\"aria-label\":Array.isArray(a.props.ariaLabel)?a.props.ariaLabel[t]:a.props.ariaLabel,\"aria-labelledby\":Array.isArray(a.props.ariaLabelledby)?a.props.ariaLabelledby[t]:a.props.ariaLabelledby,\"aria-disabled\":a.props.disabled},o={index:t,value:i(a.state.value),valueNow:a.state.value[t]};return a.props.ariaValuetext&&(n[\"aria-valuetext\"]=\"string\"==typeof a.props.ariaValuetext?a.props.ariaValuetext:a.props.ariaValuetext(o)),a.props.renderThumb(n,o)},a.renderTrack=(e,t,s)=>{const n={key:a.props.trackClassName+\"-\"+e,className:a.props.trackClassName+\" \"+a.props.trackClassName+\"-\"+e,style:a.buildTrackStyle(t,a.state.upperBound-s)},o={index:e,value:i(a.state.value)};return a.props.renderTrack(n,o)};let u=n(e.value);u.length||(u=n(e.defaultValue)),a.pendingResizeTimeouts=[];const h=[];for(let t=0;tr(t,e)))}:null},h.componentDidUpdate=function(){0===this.state.upperBound&&this.resize()},h.componentWillUnmount=function(){this.clearPendingResizeTimeouts(),this.resizeObserver&&this.resizeObserver.disconnect()},h.onEnd=function(e){e&&function(e){Object.keys(e).forEach((t=>{\"undefined\"!=typeof document&&document.removeEventListener(t,e[t],!1)}))}(e),this.hasMoved&&this.fireChangeEvent(\"onAfterChange\"),this.setState({pending:!1}),this.hasMoved=!1},h.getValue=function(){return i(this.state.value)},h.getClosestIndex=function(e){let t=Number.MAX_VALUE,s=-1;const{value:n}=this.state,i=n.length;for(let o=0;o{t(n),this.fireChangeEvent(\"onChange\")}))},h.clearPendingResizeTimeouts=function(){do{const e=this.pendingResizeTimeouts.shift();clearTimeout(e)}while(this.pendingResizeTimeouts.length)},h.start=function(e,t){const s=this[\"thumb\"+e];s&&s.focus();const{zIndices:n}=this.state;n.splice(n.indexOf(e),1),n.push(e),this.setState((s=>({startValue:s.value[e],startPosition:void 0!==t?t:s.startPosition,index:e,zIndices:n})))},h.moveUpByStep=function(e){void 0===e&&(e=this.props.step);const t=this.state.value[this.state.index],s=r(this.props.invert&&\"horizontal\"===this.props.orientation?t-e:t+e,this.props);this.move(Math.min(s,this.props.max))},h.moveDownByStep=function(e){void 0===e&&(e=this.props.step);const t=this.state.value[this.state.index],s=r(this.props.invert&&\"horizontal\"===this.props.orientation?t+e:t-e,this.props);this.move(Math.max(s,this.props.min))},h.move=function(e){const t=this.state.value.slice(),{index:s}=this.state,{length:n}=t,i=t[s];if(e===i)return;this.hasMoved||this.fireChangeEvent(\"onBeforeChange\"),this.hasMoved=!0;const{pearling:o,max:r,min:a,minDistance:p}=this.props;if(!o){if(s>0){const n=t[s-1];en-p&&(e=n-p)}}t[s]=e,o&&n>1&&(e>i?(this.pushSucceeding(t,p,s),function(e,t,s,n){for(let i=0;io&&(t[e-1-i]=o)}}(n,t,p,r)):ee[n+1];n+=1,i=e[n]+t)e[n+1]=a(i,this.props)},h.pushPreceding=function(e,t,s){for(let n=s,i=e[n]-t;null!==e[n-1]&&i=0?this.posMinKey():void 0,zIndex:this.state.zIndices.indexOf(t)+1};return s[this.posMinKey()]=e+\"px\",s},h.buildTrackStyle=function(e,t){const s={position:\"absolute\",willChange:this.state.index>=0?this.posMinKey()+\",\"+this.posMaxKey():void 0};return s[this.posMinKey()]=e,s[this.posMaxKey()]=t,s},h.buildMarkStyle=function(e){var t;return(t={position:\"absolute\"})[this.posMinKey()]=e,t},h.renderThumbs=function(e){const{length:t}=e,s=[];for(let n=0;nt)):\"number\"==typeof e&&(e=Array.from({length:t}).map(((e,t)=>t)).filter((t=>t%e==0))),e.map(parseFloat).sort(((e,t)=>e-t)).map((e=>{const t=this.calcOffset(e),s={key:e,className:this.props.markClassName,style:this.buildMarkStyle(t)};return this.props.renderMark(s)}))},h.render=function(){const e=[],{value:s}=this.state,n=s.length;for(let t=0;t{this.slider=e,this.resizeElementRef.current=e},style:{position:\"relative\"},className:this.props.className+(this.props.disabled?\" disabled\":\"\"),onMouseDown:this.onSliderMouseDown,onClick:this.onSliderClick},i,o,r)},u}(t.Component);p.displayName=\"ReactSlider\",p.defaultProps={min:0,max:100,step:1,pageFn:e=>10*e,minDistance:0,defaultValue:0,orientation:\"horizontal\",className:\"slider\",thumbClassName:\"thumb\",thumbActiveClassName:\"active\",trackClassName:\"track\",markClassName:\"mark\",withTracks:!0,pearling:!1,disabled:!1,snapDragDisabled:!1,invert:!1,marks:[],renderThumb:e=>t.createElement(\"div\",e),renderTrack:e=>t.createElement(\"div\",e),renderMark:e=>t.createElement(\"span\",e)};var u=p;export{u as default};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport ReactSlider from 'react-slider';\nimport type { ReactSliderProps } from 'react-slider';\nimport styled, { css } from 'styled-components';\n\nimport { Input } from 'components/bootstrap';\nimport Tooltip from 'components/common/Tooltip';\n\ntype Props = {\n id: string,\n label?: string,\n help?: string | React.ReactElement,\n error?: string,\n bsStyle?: 'success' | 'warning' | 'error',\n labelClassName?: string\n wrapperClassName?: string,\n} & ReactSliderProps | number>;\n\nconst StyledSlider = styled(ReactSlider)(({ theme }) => css`\n width: 100%;\n height: 10px;\n margin: ${theme.spacings.md} 0;\n`);\n\nconst StyledThumb = styled.div(({ theme }) => css`\n height: auto;\n min-height: 25px;\n line-height: 25px;\n width: auto;\n min-width: 25px;\n text-align: center;\n background-color: #5082bc;\n color: ${theme.colors.input.color};\n border-radius: 50%;\n cursor: grab;\n top: -5px;\n`);\n\nconst Thumb = (props: React.ComponentProps, state: { valueNow: number }) => (\n \n \n {state.valueNow}\n \n \n);\n\nconst StyledTrack = styled.div<{ $index: number }>(({ theme, $index }) => css`\n top: ${theme.spacings.xxs};\n bottom: 0;\n background: ${$index === 1 ? '#5082bc' : theme.colors.variant.default};\n border-radius: 999px;\n`);\n\nconst Track = (props, state) => ;\n\nconst RangeInput = ({\n id,\n label,\n help,\n error,\n bsStyle,\n labelClassName,\n wrapperClassName,\n ...otherProps\n}: Props) => (\n \n \n \n);\n\nRangeInput.defaultProps = {\n label: undefined,\n help: undefined,\n error: undefined,\n bsStyle: undefined,\n labelClassName: undefined,\n wrapperClassName: undefined,\n};\n\nexport default RangeInput;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useEffect } from 'react';\n\nimport { useStore } from 'stores/connect';\nimport { IndicesConfigurationActions, IndicesConfigurationStore } from 'stores/indices/IndicesConfigurationStore';\n\nconst useTimeSizeOptimizingFixedLeeway = () => {\n const { rotationStrategiesContext } = useStore(IndicesConfigurationStore);\n const maxTimeSizeOptimizingFixedLeeway = rotationStrategiesContext?.time_size_optimizing_retention_fixed_leeway;\n\n useEffect(() => {\n IndicesConfigurationActions.loadRotationStrategies();\n }, []);\n\n return maxTimeSizeOptimizingFixedLeeway;\n};\n\nexport default useTimeSizeOptimizingFixedLeeway;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\n\nimport useMaxIndexRotationLimit from 'hooks/useMaxIndexRotationLimit';\nimport RangeInput from 'components/common/RangeInput';\nimport useTimeSizeOptimizingFixedLeeway from 'hooks/useTimeSizeOptimizingFixedLeeway';\n\nexport type TimeBasedSizeOptimizingStrategyConfig = {\n index_lifetime_max: string,\n index_lifetime_min: string,\n type: string,\n}\n\ntype Props = {\n config: TimeBasedSizeOptimizingStrategyConfig,\n updateConfig: (config: Omit) => void,\n}\n\nexport const durationToRoundedDays = (duration: string) => Math.round(moment.duration(duration).asDays());\n\nconst getInitialRangeInDays = (indexLifeTimeMin, IndexLifeTimeMax, timeSizeOptimizingFixedLeeway) => (\n timeSizeOptimizingFixedLeeway\n ? [durationToRoundedDays(indexLifeTimeMin), durationToRoundedDays(indexLifeTimeMin) + durationToRoundedDays(timeSizeOptimizingFixedLeeway)]\n : [durationToRoundedDays(indexLifeTimeMin), durationToRoundedDays(IndexLifeTimeMax)]\n);\n\nconst YEAR_IN_DAYS = 365;\n\nconst getMaxRange = (maxRotationPeriod: number, maxLifetime: number, timeSizeOptimizingFixedLeeway: number | null) => {\n if (maxRotationPeriod) {\n return timeSizeOptimizingFixedLeeway ? maxRotationPeriod - timeSizeOptimizingFixedLeeway : maxRotationPeriod;\n }\n\n return maxLifetime >= YEAR_IN_DAYS ? maxLifetime + YEAR_IN_DAYS : YEAR_IN_DAYS;\n};\n\nconst durationToISOString = (days: number) => moment.duration(days, 'days').toISOString();\n\nconst TimeBasedSizeOptimizingStrategyConfiguration = ({\n config: { index_lifetime_max, index_lifetime_min },\n updateConfig,\n}: Props) => {\n const timeSizeOptimizingFixedLeeway = useTimeSizeOptimizingFixedLeeway();\n const [indexLifetimeRange, setIndexLifetimeRange] = useState(getInitialRangeInDays(index_lifetime_min, index_lifetime_max, timeSizeOptimizingFixedLeeway));\n const maxRotationPeriod = useMaxIndexRotationLimit();\n const [maxRange, setMaxRange] = useState(getMaxRange(durationToRoundedDays(maxRotationPeriod), indexLifetimeRange[1], durationToRoundedDays(timeSizeOptimizingFixedLeeway)));\n\n const isValidRange = useCallback((range: Array) => range[0] < range[1] && range[1] <= maxRange, [maxRange]);\n\n const validationState = (range: Array): null | 'error' => {\n if (isValidRange(range)) {\n return null;\n }\n\n return 'error';\n };\n\n const errorMessage = 'There needs to be at least 1 day between the minimum and maximum lifetime.';\n\n const addYearToMaxRange = (currentMax: number, currentSelectedMax: number) => {\n if (!maxRotationPeriod && currentMax <= currentSelectedMax) {\n setMaxRange(currentMax + YEAR_IN_DAYS);\n }\n };\n\n const onRangeChange = (range: Array | number) => {\n const currentRange = Array.isArray(range) ? range : [range, range + durationToRoundedDays(timeSizeOptimizingFixedLeeway)];\n setIndexLifetimeRange(currentRange);\n addYearToMaxRange(maxRange, currentRange[1]);\n\n if (isValidRange(currentRange)) {\n updateConfig({\n index_lifetime_min: durationToISOString(currentRange[0]),\n index_lifetime_max: durationToISOString(currentRange[1]),\n });\n }\n };\n\n const maxRotationPeriodHelpText = maxRotationPeriod ? ` The max rotation period is set to ${durationToRoundedDays(maxRotationPeriod)} days by the Administrator.` : '';\n const rangeHelpTitle = timeSizeOptimizingFixedLeeway ? 'minimum' : 'minimum / maximum';\n const fixedLeewayHint = timeSizeOptimizingFixedLeeway ? ` The maximum number of days is ${durationToISOString(indexLifetimeRange[1])} because the fixed number of days between min and max is set to ${timeSizeOptimizingFixedLeeway}.` : '';\n\n return (\n
\n onRangeChange(value)} />\n
\n );\n};\n\nTimeBasedSizeOptimizingStrategyConfiguration.propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n};\n\nexport default TimeBasedSizeOptimizingStrategyConfiguration;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Pluralize } from 'components/common';\n\nimport type { TimeBasedSizeOptimizingStrategyConfig } from './TimeBasedSizeOptimizingStrategyConfiguration';\nimport { durationToRoundedDays } from './TimeBasedSizeOptimizingStrategyConfiguration';\n\nconst TimeBasedSizeOptimizingStrategySummary = ({ config: { index_lifetime_max, index_lifetime_min } }: {config: TimeBasedSizeOptimizingStrategyConfig}) => {\n const minLifetimeAsDays = durationToRoundedDays(index_lifetime_min);\n const maxLifetimeAsDays = durationToRoundedDays(index_lifetime_max);\n\n return (\n
\n
\n
Index rotation strategy:
\n
Index Time Size Optimizing
\n
Minimum lifetime:
\n
{index_lifetime_min} ({minLifetimeAsDays} )
\n
Maximum lifetime:
\n
{index_lifetime_max} ({maxLifetimeAsDays} )
\n
\n
\n );\n};\n\nTimeBasedSizeOptimizingStrategySummary.propTypes = {\n config: PropTypes.object.isRequired,\n};\n\nexport default TimeBasedSizeOptimizingStrategySummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport MessageCountRotationStrategyConfiguration from './MessageCountRotationStrategyConfiguration';\nimport MessageCountRotationStrategySummary from './MessageCountRotationStrategySummary';\nimport SizeBasedRotationStrategyConfiguration from './SizeBasedRotationStrategyConfiguration';\nimport SizeBasedRotationStrategySummary from './SizeBasedRotationStrategySummary';\nimport TimeBasedRotationStrategyConfiguration from './TimeBasedRotationStrategyConfiguration';\nimport TimeBasedRotationStrategySummary from './TimeBasedRotationStrategySummary';\nimport TimeBasedSizeOptimizingStrategyConfiguration from './TimeBasedSizeOptimizingStrategyConfiguration';\nimport TimeBasedSizeOptimizingStrategySummary from './TimeBasedSizeOptimizingStrategySummary';\n\nPluginStore.register(new PluginManifest({}, {\n indexRotationConfig: [\n {\n type: 'org.graylog2.indexer.rotation.strategies.MessageCountRotationStrategy',\n displayName: 'Index Message Count',\n configComponent: MessageCountRotationStrategyConfiguration,\n summaryComponent: MessageCountRotationStrategySummary,\n },\n {\n type: 'org.graylog2.indexer.rotation.strategies.SizeBasedRotationStrategy',\n displayName: 'Index Size',\n configComponent: SizeBasedRotationStrategyConfiguration,\n summaryComponent: SizeBasedRotationStrategySummary,\n },\n {\n type: 'org.graylog2.indexer.rotation.strategies.TimeBasedRotationStrategy',\n displayName: 'Index Time',\n configComponent: TimeBasedRotationStrategyConfiguration,\n summaryComponent: TimeBasedRotationStrategySummary,\n },\n {\n type: 'org.graylog2.indexer.rotation.strategies.TimeBasedSizeOptimizingStrategy',\n displayName: 'Index Time Size Optimizing',\n configComponent: TimeBasedSizeOptimizingStrategyConfiguration,\n summaryComponent: TimeBasedSizeOptimizingStrategySummary,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport type {\n IndicesConfigurationActionsType,\n IndicesConfigurationStoreState,\n RetentionStrategyResponse,\n RotationStrategyResponse,\n} from 'components/indices/Types';\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const IndicesConfigurationActions = singletonActions(\n 'core.IndicesConfiguration',\n () => Reflux.createActions({\n loadRotationStrategies: { asyncResult: true },\n loadRetentionStrategies: { asyncResult: true },\n }),\n);\n\nconst urlPrefix = '/system/indices';\n\nexport const IndicesConfigurationStore = singletonStore(\n 'core.IndicesConfiguration',\n () => Reflux.createStore({\n listenables: [IndicesConfigurationActions],\n\n rotationStrategies: undefined,\n retentionStrategies: undefined,\n retentionStrategiesContext: undefined,\n rotationStrategiesContext: undefined,\n\n getInitialState() {\n return {\n activeRotationConfig: undefined,\n rotationStrategies: undefined,\n activeRetentionConfig: undefined,\n retentionStrategies: undefined,\n retentionStrategiesContext: undefined,\n };\n },\n getState() {\n return {\n activeRotationConfig: this.activeRotationConfig,\n rotationStrategies: this.rotationStrategies,\n activeRetentionConfig: this.activeRetentionConfig,\n retentionStrategies: this.retentionStrategies,\n retentionStrategiesContext: this.retentionStrategiesContext,\n rotationStrategiesContext: this.rotationStrategiesContext,\n };\n },\n _url(path) {\n return URLUtils.qualifyUrl(urlPrefix + path);\n },\n\n loadRotationStrategies() {\n const promise = fetch('GET', this._url('/rotation/strategies'));\n\n promise.then(\n (response: RotationStrategyResponse) => {\n this.rotationStrategies = response.strategies;\n\n this.rotationStrategiesContext = response.context;\n this.trigger(this.getState());\n },\n (error) => {\n UserNotification.error(`Fetching rotation strategies failed: ${error}`, 'Could not retrieve rotation strategies');\n },\n );\n\n IndicesConfigurationActions.loadRotationStrategies.promise(promise);\n },\n\n loadRetentionStrategies() {\n const promise = fetch('GET', this._url('/retention/strategies'));\n\n promise.then(\n (response: RetentionStrategyResponse) => {\n this.retentionStrategiesContext = response.context;\n this.retentionStrategies = response.strategies;\n this.trigger(this.getState());\n },\n (error) => {\n UserNotification.error(`Fetching retention strategies failed: ${error}`, 'Could not retrieve retention strategies');\n },\n );\n\n IndicesConfigurationActions.loadRetentionStrategies.promise(promise);\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const TIME_BASED_ROTATION_STRATEGY = 'org.graylog2.indexer.rotation.strategies.TimeBasedRotationStrategy';\nexport const NOOP_RETENTION_STRATEGY = 'org.graylog2.indexer.retention.strategies.NoopRetentionStrategy';\nexport const TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY = 'org.graylog2.indexer.rotation.strategies.TimeBasedSizeOptimizingStrategy';\nexport const ARCHIVE_RETENTION_STRATEGY = 'org.graylog.plugins.archive.indexer.retention.strategies.ArchiveRetentionStrategy';\nexport const TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY_TYPE = 'org.graylog2.indexer.rotation.strategies.TimeBasedSizeOptimizingStrategyConfig';\nexport const RETENTION = 'retention';\n\nexport type IndexTimeAndTotalStats = {\n total: number,\n time_seconds: number,\n};\n\nexport type IndexShardRouting = {\n id: number,\n state: string,\n active: boolean,\n primary: boolean,\n node_id: string,\n node_name: string,\n node_hostname: string,\n relocating_to: string | null,\n};\n\nexport type IndexInfo = {\n index_name: string,\n primary_shards: {\n flush: IndexTimeAndTotalStats,\n get: IndexTimeAndTotalStats,\n index: IndexTimeAndTotalStats,\n merge: IndexTimeAndTotalStats,\n refresh: IndexTimeAndTotalStats,\n search_query: IndexTimeAndTotalStats,\n search_fetch: IndexTimeAndTotalStats,\n open_search_contexts: number,\n store_size_bytes: number,\n segments: number,\n documents: {\n count: number,\n deleted: number,\n },\n },\n all_shards: {\n flush: IndexTimeAndTotalStats,\n get: IndexTimeAndTotalStats,\n index: IndexTimeAndTotalStats,\n merge: IndexTimeAndTotalStats,\n refresh: IndexTimeAndTotalStats,\n search_query: IndexTimeAndTotalStats,\n search_fetch: IndexTimeAndTotalStats,\n open_search_contexts: number,\n store_size_bytes: number,\n segments: number,\n documents: {\n count: number,\n deleted: number,\n },\n },\n routing: Array,\n reopened: boolean,\n};\n\nexport type Indices = Array\n\ntype IndicesListResponse = {\n all: {\n indices: Indices,\n },\n closed: {\n indices: Indices,\n },\n};\n\ntype IndicesActionsType = {\n list: (indexSetId: string) => Promise,\n listAll: () => Promise,\n close: (indexName: string) => Promise,\n delete: (indexName: string) => Promise,\n multiple: () => Promise,\n reopen: () => Promise,\n subscribe: (indexName: string) => Promise,\n unsubscribe: (indexName: string) => Promise,\n}\nexport const IndicesActions = singletonActions(\n 'core.Indices',\n () => Reflux.createActions({\n list: { asyncResult: true },\n listAll: { asyncResult: true },\n close: { asyncResult: true },\n delete: { asyncResult: true },\n multiple: { asyncResult: true },\n reopen: { asyncResult: true },\n subscribe: { asyncResult: false },\n unsubscribe: { asyncResult: false },\n }),\n);\nexport const IndicesStore = singletonStore(\n 'core.Indices',\n () => Reflux.createStore({\n listenables: [IndicesActions],\n indices: undefined,\n closedIndices: undefined,\n registrations: {},\n\n getInitialState() {\n return { indices: this.indices, closedIndices: this.closedIndices };\n },\n\n list(indexSetId: string) {\n const urlList = qualifyUrl(ApiRoutes.IndicesApiController.list(indexSetId).url);\n const promise = fetch('GET', urlList).then((response: IndicesListResponse) => {\n this.indices = response.all.indices;\n this.closedIndices = response.closed.indices;\n this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n\n return { indices: this.indices, closedIndices: this.closedIndices };\n });\n\n IndicesActions.list.promise(promise);\n },\n\n listAll() {\n const urlList = qualifyUrl(ApiRoutes.IndicesApiController.listAll().url);\n const promise = fetch('GET', urlList).then((response: IndicesListResponse) => {\n this.indices = response.all.indices;\n this.closedIndices = response.closed.indices;\n this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n\n return { indices: this.indices, closedIndices: this.closedIndices };\n });\n\n IndicesActions.listAll.promise(promise);\n },\n\n multiple() {\n const indexNames = Object.keys(this.registrations);\n\n if (!indexNames.length) {\n return;\n }\n\n const urlList = qualifyUrl(ApiRoutes.IndicesApiController.multiple().url);\n const request = { indices: indexNames };\n const promise = fetchPeriodically('POST', urlList, request).then((response: Indices) => {\n this.indices = [...this.indices, ...response];\n this.trigger({ indices: this.indices, closedIndices: this.closedIndices });\n\n return { indices: this.indices, closedIndices: this.closedIndices };\n });\n\n IndicesActions.multiple.promise(promise);\n },\n close(indexName: string) {\n const url = qualifyUrl(ApiRoutes.IndicesApiController.close(indexName).url);\n const promise = fetch('POST', url);\n\n IndicesActions.close.promise(promise);\n },\n delete(indexName: string) {\n const url = qualifyUrl(ApiRoutes.IndicesApiController.delete(indexName).url);\n const promise = fetch('DELETE', url);\n\n IndicesActions.delete.promise(promise);\n },\n reopen(indexName: string) {\n const url = qualifyUrl(ApiRoutes.IndicesApiController.reopen(indexName).url);\n const promise = fetch('POST', url);\n\n IndicesActions.reopen.promise(promise);\n },\n subscribe(indexName: string) {\n this.registrations[indexName] = this.registrations[indexName] ? this.registrations[indexName] + 1 : 1;\n },\n unsubscribe(indexName: string) {\n this.registrations[indexName] = this.registrations[indexName] > 0 ? this.registrations[indexName] - 1 : 0;\n\n if (this.registrations[indexName] === 0) {\n delete this.registrations[indexName];\n }\n },\n }),\n);\n"],"names":["hasRetentionConfigField","configData","field","StyledH3","StyledSelect","StyledAlert","getStrategyJsonSchema","selectedStrategy","strategies","result","s","getDefaultStrategyConfig","getTimeBaseStrategyWithElasticLimit","activeConfig","timeBasedStrategy","getStrategyConfig","configTypeName","activeStrategy","getConfigurationComponent","pluginExports","strategy","config","onConfigUpdate","useMaxNumberOfIndices","strategyPlugin","exportedStrategy","strategyType","componentProps","element","IndexMaintenanceStrategiesConfiguration","title","name","description","selectPlaceholder","maxRetentionPeriod","getState","newStrategy","setNewStrategy","setValues","values","rotationStrategy","rotationStrategyClass","retentionStrategyClass","maxNumberOfIndices","setMaxNumberOfIndices","retentionIsNotNoop","isArchiveRetention","shouldShowMaxRetentionWarning","isTimeBasedSizeOptimizing","shouldShowTimeBasedSizeOptimizingForm","shouldShowNormalRetentionForm","helpText","_onSelect","newConfig","_onConfigUpdate","configuration","data","copy","_onIndexTimeSizeOptimizingUpdate","getAvailableSelectOptions","availableStrategies","pluginOptions","type","availableStrategy","c","getDisplayName","getActiveSelection","shouldShowInvalidRetentionWarning","IndexMaintenanceStrategiesSummary","IndexRetentionContext","useIndexRetention","context","children","value","DeletionRetentionStrategyConfiguration","updateConfig","_onInputUpdate","e","update","DeletionRetentionStrategySummary","ClosingRetentionStrategyConfiguration","ClosingRetentionStrategySummary","MessageCountRotationStrategyConfiguration","max_docs_per_index","maxDocsPerIndex","setMaxDocsPerIndex","MessageCountRotationStrategySummary","SizeBasedRotationStrategyConfiguration","max_size","maxSize","setMaxSize","_formatSize","NumberUtils","SizeBasedRotationStrategySummary","_validationLimit","durationInMilliseconds","rotationLimit","TimeBasedRotationStrategyConfiguration","props","period","rotateEmptyIndexSet","duration","rotationPeriod","check","checkInMilliseconds","maxRotationPeriodErrorMessage","maxRotationPeriodHelpText","rotationPeriodRef","rotateEmptyIndexSetRef","TimeBasedRotationStrategySummary","retentionStrategiesContext","IndicesConfigurationStore","n","i","o","t","r","a","p","u","h","StyledSlider","theme","StyledThumb","Thumb","state","Tooltip","StyledTrack","$index","Track","RangeInput","id","label","help","error","bsStyle","labelClassName","wrapperClassName","otherProps","rotationStrategiesContext","maxTimeSizeOptimizingFixedLeeway","durationToRoundedDays","getInitialRangeInDays","indexLifeTimeMin","IndexLifeTimeMax","timeSizeOptimizingFixedLeeway","YEAR_IN_DAYS","getMaxRange","maxRotationPeriod","maxLifetime","durationToISOString","days","TimeBasedSizeOptimizingStrategyConfiguration","index_lifetime_max","index_lifetime_min","indexLifetimeRange","setIndexLifetimeRange","maxRange","setMaxRange","isValidRange","range","validationState","errorMessage","addYearToMaxRange","currentMax","currentSelectedMax","onRangeChange","currentRange","rangeHelpTitle","fixedLeewayHint","TimeBasedSizeOptimizingStrategySummary","minLifetimeAsDays","maxLifetimeAsDays","IndicesConfigurationActions","urlPrefix","path","promise","response","TIME_BASED_ROTATION_STRATEGY","NOOP_RETENTION_STRATEGY","TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY","ARCHIVE_RETENTION_STRATEGY","TIME_BASED_SIZE_OPTIMIZING_ROTATION_STRATEGY_TYPE","RETENTION","IndicesActions","IndicesStore","indexSetId","urlList","indexNames","request","indexName","url"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy