@ytsaurus/ui 1.62.0 → 1.63.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +69 -69
- package/dist/public/build/css/7540.b48a154e.chunk.css +2 -0
- package/dist/public/build/css/7540.b48a154e.chunk.css.map +1 -0
- package/dist/public/build/css/{cluster-page-wrapper.0b62c90f.chunk.css → cluster-page-wrapper.0b6a786f.chunk.css} +2 -2
- package/dist/public/build/css/cluster-page-wrapper.0b6a786f.chunk.css.map +1 -0
- package/dist/public/build/css/{main.a99b07c5.css → main.070fd473.css} +2 -2
- package/dist/public/build/css/main.070fd473.css.map +1 -0
- package/dist/public/build/css/navigation.0a141599.chunk.css +2 -0
- package/dist/public/build/css/navigation.0a141599.chunk.css.map +1 -0
- package/dist/public/build/css/{system.17b114fc.chunk.css → system.221e5d53.chunk.css} +2 -2
- package/dist/public/build/css/{system.17b114fc.chunk.css.map → system.221e5d53.chunk.css.map} +1 -1
- package/dist/public/build/js/1110.a7382226.chunk.js +2 -0
- package/dist/public/build/js/1110.a7382226.chunk.js.map +1 -0
- package/dist/public/build/js/1394.011da2d1.chunk.js +2 -0
- package/dist/public/build/js/1394.011da2d1.chunk.js.map +1 -0
- package/dist/public/build/js/2447.35b478a9.chunk.js +2 -0
- package/dist/public/build/js/2447.35b478a9.chunk.js.map +1 -0
- package/dist/public/build/js/4364.aa1ab5fb.chunk.js +2 -0
- package/dist/public/build/js/4364.aa1ab5fb.chunk.js.map +1 -0
- package/dist/public/build/js/5451.50d8f2b2.chunk.js +3 -0
- package/dist/public/build/js/5451.50d8f2b2.chunk.js.LICENSE.txt +5 -0
- package/dist/public/build/js/5451.50d8f2b2.chunk.js.map +1 -0
- package/dist/public/build/js/5770.0d8fda01.chunk.js +2 -0
- package/dist/public/build/js/5770.0d8fda01.chunk.js.map +1 -0
- package/dist/public/build/js/{7077.b11a392b.chunk.js → 7077.7dab612c.chunk.js} +2 -2
- package/dist/public/build/js/{7077.b11a392b.chunk.js.map → 7077.7dab612c.chunk.js.map} +1 -1
- package/dist/public/build/js/7959.e0d47dec.chunk.js +2 -0
- package/dist/public/build/js/7959.e0d47dec.chunk.js.map +1 -0
- package/dist/public/build/js/{8460.b18e700b.chunk.js → 8460.2b27e2b7.chunk.js} +2 -2
- package/dist/public/build/js/{8460.b18e700b.chunk.js.map → 8460.2b27e2b7.chunk.js.map} +1 -1
- package/dist/public/build/js/{8778.8d098a1f.chunk.js → 8778.d97acdd6.chunk.js} +2 -2
- package/dist/public/build/js/8778.d97acdd6.chunk.js.map +1 -0
- package/dist/public/build/js/accounts.badfc837.chunk.js +2 -0
- package/dist/public/build/js/{accounts.63268a11.chunk.js.map → accounts.badfc837.chunk.js.map} +1 -1
- package/dist/public/build/js/{acl.aa7a9df7.chunk.js → acl.cd1fe761.chunk.js} +2 -2
- package/dist/public/build/js/acl.cd1fe761.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-menu.bf57160d.chunk.js +2 -0
- package/dist/public/build/js/cluster-menu.bf57160d.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.c9e6c27c.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.c9e6c27c.chunk.js.map +1 -0
- package/dist/public/build/js/job.31c91355.chunk.js +2 -0
- package/dist/public/build/js/job.31c91355.chunk.js.map +1 -0
- package/dist/public/build/js/main.61fc9935.js +3 -0
- package/dist/public/build/js/main.61fc9935.js.map +1 -0
- package/dist/public/build/js/{manage-tokens.c996037c.chunk.js → manage-tokens.e9106aad.chunk.js} +2 -2
- package/dist/public/build/js/{manage-tokens.c996037c.chunk.js.map → manage-tokens.e9106aad.chunk.js.map} +1 -1
- package/dist/public/build/js/navigation.22bd542f.chunk.js +2 -0
- package/dist/public/build/js/navigation.22bd542f.chunk.js.map +1 -0
- package/dist/public/build/js/{odin.ddcd41de.chunk.js → odin.7eefabce.chunk.js} +2 -2
- package/dist/public/build/js/{odin.ddcd41de.chunk.js.map → odin.7eefabce.chunk.js.map} +1 -1
- package/dist/public/build/js/operations.3feb2deb.chunk.js +2 -0
- package/dist/public/build/js/operations.3feb2deb.chunk.js.map +1 -0
- package/dist/public/build/js/{query-results.99804b61.chunk.js → query-results.4c207fef.chunk.js} +2 -2
- package/dist/public/build/js/{query-results.99804b61.chunk.js.map → query-results.4c207fef.chunk.js.map} +1 -1
- package/dist/public/build/js/query-tracker.badbc586.chunk.js +2 -0
- package/dist/public/build/js/query-tracker.badbc586.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.8be0e5c6.js → runtime.f98c3e55.js} +2 -2
- package/dist/public/build/js/{runtime.8be0e5c6.js.map → runtime.f98c3e55.js.map} +1 -1
- package/dist/public/build/js/scheduling.73b1257c.chunk.js +2 -0
- package/dist/public/build/js/scheduling.73b1257c.chunk.js.map +1 -0
- package/dist/public/build/js/{system.6843a1a3.chunk.js → system.25e9136a.chunk.js} +2 -2
- package/dist/public/build/js/system.25e9136a.chunk.js.map +1 -0
- package/dist/public/build/js/tablet.7401a5ec.chunk.js +2 -0
- package/dist/public/build/js/tablet.7401a5ec.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.6b4604c0.chunk.js → yt-df-dialog.69fc013a.chunk.js} +2 -2
- package/dist/public/build/js/{yt-df-dialog.6b4604c0.chunk.js.map → yt-df-dialog.69fc013a.chunk.js.map} +1 -1
- package/dist/public/build/manifest.json +64 -64
- package/dist/shared/ui-settings.d.ts +0 -1
- package/package.json +3 -3
- package/dist/public/build/css/7540.56f97199.chunk.css +0 -2
- package/dist/public/build/css/7540.56f97199.chunk.css.map +0 -1
- package/dist/public/build/css/cluster-page-wrapper.0b62c90f.chunk.css.map +0 -1
- package/dist/public/build/css/main.a99b07c5.css.map +0 -1
- package/dist/public/build/css/navigation.adb62abd.chunk.css +0 -2
- package/dist/public/build/css/navigation.adb62abd.chunk.css.map +0 -1
- package/dist/public/build/js/1110.d02f593c.chunk.js +0 -2
- package/dist/public/build/js/1110.d02f593c.chunk.js.map +0 -1
- package/dist/public/build/js/1394.f5423b9c.chunk.js +0 -2
- package/dist/public/build/js/1394.f5423b9c.chunk.js.map +0 -1
- package/dist/public/build/js/2447.d0a0e8ad.chunk.js +0 -2
- package/dist/public/build/js/2447.d0a0e8ad.chunk.js.map +0 -1
- package/dist/public/build/js/4364.277e1cfa.chunk.js +0 -2
- package/dist/public/build/js/4364.277e1cfa.chunk.js.map +0 -1
- package/dist/public/build/js/5770.c5499ce7.chunk.js +0 -2
- package/dist/public/build/js/5770.c5499ce7.chunk.js.map +0 -1
- package/dist/public/build/js/7891.2ce56be7.chunk.js +0 -3
- package/dist/public/build/js/7891.2ce56be7.chunk.js.LICENSE.txt +0 -14
- package/dist/public/build/js/7891.2ce56be7.chunk.js.map +0 -1
- package/dist/public/build/js/7959.eb292cbd.chunk.js +0 -2
- package/dist/public/build/js/7959.eb292cbd.chunk.js.map +0 -1
- package/dist/public/build/js/8778.8d098a1f.chunk.js.map +0 -1
- package/dist/public/build/js/accounts.63268a11.chunk.js +0 -2
- package/dist/public/build/js/acl.aa7a9df7.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-menu.e484a2ca.chunk.js +0 -2
- package/dist/public/build/js/cluster-menu.e484a2ca.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.8c8aa8a1.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.8c8aa8a1.chunk.js.map +0 -1
- package/dist/public/build/js/job.5ed7166b.chunk.js +0 -2
- package/dist/public/build/js/job.5ed7166b.chunk.js.map +0 -1
- package/dist/public/build/js/main.00809a7d.js +0 -3
- package/dist/public/build/js/main.00809a7d.js.map +0 -1
- package/dist/public/build/js/navigation.c3108a21.chunk.js +0 -2
- package/dist/public/build/js/navigation.c3108a21.chunk.js.map +0 -1
- package/dist/public/build/js/operations.b353981f.chunk.js +0 -2
- package/dist/public/build/js/operations.b353981f.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.fba0ec95.chunk.js +0 -2
- package/dist/public/build/js/query-tracker.fba0ec95.chunk.js.map +0 -1
- package/dist/public/build/js/scheduling.115669fe.chunk.js +0 -2
- package/dist/public/build/js/scheduling.115669fe.chunk.js.map +0 -1
- package/dist/public/build/js/system.6843a1a3.chunk.js.map +0 -1
- package/dist/public/build/js/tablet.40ad9054.chunk.js +0 -2
- package/dist/public/build/js/tablet.40ad9054.chunk.js.map +0 -1
- /package/dist/public/build/js/{main.00809a7d.js.LICENSE.txt → main.61fc9935.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"js/4364.277e1cfa.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/ChartLink/ChartLink.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/NodeColumns.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/MemoryProgress/MemoryProgress.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Version.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeActions/NodeActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/NodesColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/tables.tsx","webpack://@ytsaurus/ui/./src/ui/pages/system/Nodes/NodeTypeSelector.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/system/nodes-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/nodes/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/reducers/components/proxies/proxies/proxy.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/data.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/predicates.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/system/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/support.ts","webpack://@ytsaurus/ui/./src/ui/store/thunkDispatch.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/setup.ts"],"sourcesContent":["import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nexport interface AttributesButtonProps extends ButtonProps {}\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React from 'react';\nimport Link, {LinkProps} from '../../components/Link/Link';\n\nimport Icon, {IconProps} from '../Icon/Icon';\n\ninterface Props {\n className?: string;\n theme?: LinkProps['theme'];\n face?: IconProps['face'];\n url?: string;\n title?: string;\n children?: React.ReactNode;\n hideIcon?: boolean;\n wrapContent?: (node: React.ReactNode) => React.ReactNode;\n}\n\nfunction ChartLink(props: Props) {\n const {className, url, title, theme, children, hideIcon, face, wrapContent} = props;\n\n if (!url) {\n return null;\n }\n\n const icon = hideIcon ? null : <Icon awesome=\"chart-bar\" face={face} />;\n const content = children ? (\n <React.Fragment>\n {icon}\n {children}\n </React.Fragment>\n ) : (\n icon\n );\n\n return (\n <Link className={className} target=\"_blank\" theme={theme} url={url} title={title ?? 'View'}>\n {wrapContent ? wrapContent(content) : content}\n </Link>\n );\n}\n\nexport default React.memo(ChartLink);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static propTypes = {\n name: PropTypes.node.isRequired,\n collapsed: PropTypes.bool,\n onToggle: PropTypes.func.isRequired,\n size: PropTypes.oneOf(['s', 'ss', 'xs', 'm', 'l', 'xl', 'ns']),\n children: PropTypes.node,\n overview: PropTypes.node,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {name, children, size, overview, className, collapsed, marginDirection} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'})}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler')}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Icon from '../../components/Icon/Icon';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <span className={block('icon')}>\n <Icon awesome={icon} face=\"solid\" />\n </span>\n </span>\n );\n }\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../common/hammer/format';\nimport Label, {LabelTheme} from '../../../components/Label/Label';\nimport StatusBlock from '../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\nimport './NodeColumns.scss';\n\nconst block = cn('yt-node-columns');\n\nconst ROLE_THEME = {\n default: 'default',\n control: 'default',\n data: 'default',\n} as const;\n\nconst STATE_THEME: Record<string, LabelTheme> = {\n online: 'success',\n offline: 'danger',\n} as const;\n\nexport function NodeColumnState({state}: {state: 'online' | 'offline' | string}) {\n const text = format.FirstUppercase(state);\n const theme = STATE_THEME[state] ?? 'default';\n\n return <Label theme={theme} className={block('state')} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnBanned({banned}: {banned: boolean}) {\n return banned ? <StatusBlock text=\"B\" theme=\"banned\" /> : format.NO_VALUE;\n}\n\nexport function NodeColumnRole({role}: {role: 'default' | 'control' | 'data'}) {\n const theme = ROLE_THEME[role] || 'info';\n const text = format.Address(role);\n\n return <Label theme={theme} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnText({text}: {text: string}) {\n return (\n <div className={block('text', 'elements-column_with-hover-button')}>\n <div className={block('text-content')} title={text}>\n {text}\n </div>\n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n\nexport function ClickableId({\n text,\n onClick,\n allowTooltip,\n format = (v) => v,\n}: {\n text: string;\n onClick?: () => void;\n allowTooltip?: boolean;\n format?: (v: string) => string;\n}) {\n return (\n <div className=\"elements-column_type_id elements-column_with-hover-button\">\n <ClickableText\n color=\"primary\"\n onClick={() => onClick?.()}\n className={'elements-monospace elements-ellipsis'}\n >\n <Tooltip\n className={block('clickable-column-tooltip')}\n content={allowTooltip ? format(text) : null}\n >\n {format(text)}\n </Tooltip>\n </ClickableText>\n \n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport withVisible from '../../../../../hocs/withVisible';\nimport hammer from '../../../../../common/hammer';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport './MemoryProgress.scss';\n\nconst block = cn('nodes-memory');\n\nclass MemoryProgress extends Component {\n static propTypes = {\n // from parent\n memoryText: PropTypes.string.isRequired,\n memoryData: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n rawData: PropTypes.shape({\n limit: PropTypes.number,\n used: PropTypes.number,\n }),\n }),\n ).isRequired,\n };\n\n progress = React.createRef();\n\n renderProgress() {\n const {memoryText, memoryData} = this.props;\n\n return <Progress stack={memoryData} text={memoryText} />;\n }\n\n renderItem(category) {\n const rawDataUsed = category.rawData?.used;\n const rawDataLimit = category.rawData?.limit;\n const rawDataLimitIsNumber = typeof rawDataLimit === 'number';\n\n return (\n <li key={category.name} className={block('category')}>\n <div className={block('category-legend')}>\n <div\n className={block('category-legend-color')}\n style={{backgroundColor: category.color}}\n />\n <strong className={block('category-legend-title')}>\n {hammer.format['ReadableField'](category.name)}\n </strong>\n </div>\n <div className={block('category-data')}>\n <span>{hammer.format['Bytes'](rawDataUsed)}</span>\n {rawDataLimitIsNumber && ' / '}\n {rawDataLimitIsNumber && <span>{hammer.format['Bytes'](rawDataLimit)}</span>}\n </div>\n </li>\n );\n }\n\n renderPopupContent() {\n const {memoryData} = this.props;\n\n return (\n memoryData.length > 0 && (\n <div className={block('popup')}>\n <ul className={block('content')}>\n {map_(memoryData, (category) => this.renderItem(category))}\n </ul>\n </div>\n )\n );\n }\n\n render() {\n return (\n <Tooltip className={block()} content={this.renderPopupContent()} disableInline>\n <div>{this.renderProgress()}</div>\n </Tooltip>\n );\n }\n}\n\nexport default withVisible(MemoryProgress);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport SimpleModal from '../../../../components/Modal/SimpleModal';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport withVisible from '../../../../hocs/withVisible';\n\nconst block = cn('elements-column');\n\nclass Version extends Component {\n static propTypes = {\n // from parent component\n version: PropTypes.string.isRequired,\n error: PropTypes.object,\n\n // from hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n };\n\n renderVersion() {\n const {version} = this.props;\n\n return (\n <div className={block({type: 'id', 'with-hover-button': true})} title={version}>\n <span className=\"elements-monospace elements-ellipsis\">{version}</span>\n \n <ClipboardButton\n text={version}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + version}\n />\n </div>\n );\n }\n\n renderErrorVersion() {\n const {handleShow, error, handleClose, visible} = this.props;\n\n return (\n <div className=\"elements-monospace elements-ellipsis\">\n <Icon awesome=\"exclamation-triangle\" /> Error  \n <Link theme=\"ghost\" onClick={handleShow}>\n View\n </Link>\n <SimpleModal visible={visible} onCancel={handleClose} onOutsideClick={handleClose}>\n <Error error={error} />\n </SimpleModal>\n </div>\n );\n }\n\n render() {\n const {error} = this.props;\n\n return error ? this.renderErrorVersion() : this.renderVersion();\n }\n}\n\nexport default withVisible(Version);\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\nimport ChartLink from '../../../../../components/ChartLink/ChartLink';\n\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\nimport UIFactory from '../../../../../UIFactory';\nimport {RootState} from '../../../../../store/reducers';\n\nexport type NodeActionsProps = {node: {host: string}} & ConnectedProps<typeof connector>;\n\nclass NodeActions extends React.Component<NodeActionsProps> {\n handleEditClick = () => {\n const {node, showNodeMaintenance} = this.props;\n\n showNodeMaintenance({\n address: node.host,\n component: 'cluster_node',\n });\n };\n\n render() {\n const {node, cluster} = this.props;\n const {url, title} = UIFactory.getComponentsNodeDashboardUrl({cluster, host: node.host});\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={node.host}\n path={`//sys/cluster_nodes/${node.host}`}\n withTooltip\n />\n\n <ChartLink\n url={url}\n wrapContent={(node) => (\n <Button\n tooltipProps={{\n placement: 'bottom',\n content: title,\n }}\n target=\"_blank\"\n view=\"flat-secondary\"\n size=\"m\"\n withTooltip\n >\n {node}\n </Button>\n )}\n />\n <Button onClick={this.handleEditClick} view=\"flat-secondary\" size=\"m\" withTooltip>\n <Icon face=\"regular\" awesome=\"pencil\" />\n </Button>\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(NodeActions);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport ColumnHeader, {\n ColumnHeaderProps,\n HasSortColumn,\n} from '../../../../../components/ColumnHeader/ColumnHeader';\nimport {toggleColumnSortOrder} from '../../../../../store/actions/tables';\nimport {getTables} from '../../../../../store/selectors/tables';\nimport {NodesTableColumnNames} from '../../../../../pages/components/tabs/nodes/tables';\nimport {oldSortStateToOrderType} from '../../../../../utils/sort-helpers';\n\nexport function NodesColumnHeader(\n props: HasSortColumn<NodesTableColumnNames> & Pick<ColumnHeaderProps, 'align'>,\n) {\n const dispatch = useDispatch();\n const sortState = useSelector(getTables)[COMPONENTS_NODES_TABLE_ID];\n const order = oldSortStateToOrderType(sortState);\n\n const column = props.options?.find(({column}) => sortState.field === column);\n\n return (\n <ColumnHeader\n {...props}\n column={props.options ? column?.column ?? props.column : props.column}\n order={column ? order : undefined}\n onSort={(columnName) => {\n const colInfo = props.options?.find(({column}) => columnName === column);\n dispatch(\n toggleColumnSortOrder({\n columnName,\n withUndefined: colInfo?.withUndefined,\n tableId: COMPONENTS_NODES_TABLE_ID,\n }),\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\nimport merge_ from 'lodash/merge';\nimport reduce_ from 'lodash/reduce';\nimport sortBy_ from 'lodash/sortBy';\n\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport {DESC_ASC_UNORDERED, compareArraysBySizeThenByItems} from '../../../../utils/sort-helpers';\n\nimport Version from '../../../../pages/components/tabs/nodes/Version';\nimport StatusBlock, {StatusBlockTheme} from '../../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport NodeActions from '../../../../pages/components/tabs/nodes/NodeActions/NodeActions';\nimport MemoryProgress from '../../../../pages/components/tabs/nodes/MemoryProgress/MemoryProgress';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport hammer from '../../../../common/hammer';\nimport {TABLET_SLOTS, renderLabel} from '../../../../components/templates/components/nodes/nodes';\nimport type {Node, TabletSlotState} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {FIX_MY_TYPE} from '../../../../types';\nimport {NodeColumnBanned, NodeColumnState} from '../../../../pages/components/tabs/NodeColumns';\nimport {NodesColumnHeader} from '../../../../pages/components/tabs/nodes/Nodes/NodesColumnHeader';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport {progressText} from '../../../../utils/progress';\n\nimport './tables.scss';\n\nconst block = cn('components-nodes-templates');\n\nexport const PropertiesByColumn = {\n __default__: ['IOWeight'],\n actions: ['host'],\n alert_count: ['alertCount'],\n banned: ['banned'],\n chunks: ['chunks'],\n cpu: ['cpuProgress', 'cpuText'],\n cpu_limit: ['cpu'],\n cpu_usage: ['cpu'],\n data_center: ['dataCenter'],\n decommissioned: ['decommissioned'],\n elections: ['tabletSlots'],\n elections_chaos: ['chaosSlots'],\n follower_recovery: ['tabletSlots'],\n follower_recovery_chaos: ['chaosSlots'],\n following: ['tabletSlots'],\n following_chaos: ['chaosSlots'],\n full: ['full'],\n gpu: ['gpu'],\n gpu_usage: ['gpu'],\n gpu_limit: ['gpu'],\n host: ['cluster', 'host'],\n io_weight: ['IOWeight'],\n last_seen: ['lastSeenTime'],\n leader_recovery: ['tabletSlots'],\n leader_recovery_chaos: ['chaosSlots'],\n leading: ['tabletSlots'],\n leading_chaos: ['chaosSlots'],\n locations: ['locations', 'enabledLocations'],\n memory_total: ['memoryProgress', 'memoryTotalText'],\n memory: ['memoryData', 'memoryProgress', 'memoryText'],\n memory_limit: ['memoryTotal'],\n memory_usage: ['memoryTotal'],\n network: ['networkProgress', 'networkText'],\n network_usage: ['network'],\n network_limit: ['network'],\n none: ['tabletSlots'],\n none_chaos: ['chaosSlots'],\n physical_host: ['physicalHost'],\n flavors: ['flavors'],\n rack: ['rack'],\n removal_slots: ['removalSlots', 'removalSlotsProgress'],\n removal_slots_usage: ['removalSlots'],\n removal_slots_limit: ['removalSlots'],\n repair_slots: ['repairSlots', 'repairSlotsProgress'],\n repair_slots_usage: ['repairSlots'],\n repair_slots_limit: ['repairSlots'],\n replication_slots: ['replicationSlots', 'replicationSlotsProgress'],\n replication_slots_usage: ['replicationSlots'],\n replication_slots_limit: ['replicationSlots'],\n scheduler_jobs: ['disableJobs'],\n seal_slots: ['sealSlots', 'sealSlotsProgress'],\n seal_slots_usage: ['sealSlots'],\n seal_slots_limit: ['sealSlots'],\n sessions: ['sessions'],\n space_limit: ['spaceTotal'],\n space_usage: ['spaceUsed'],\n space: ['spaceProgress', 'spaceText'],\n state: ['state'],\n stopped: ['tabletSlots'],\n stopped_chaos: ['chaosSlots'],\n system_tags: ['systemTags'],\n tablet_cells: ['disableTabletCells'],\n tablet_memory_dynamic: ['tabletDynamicMemory'],\n tablet_memory_dynamic_usage: ['tabletDynamicMemory'],\n tablet_memory_dynamic_limit: ['tabletDynamicMemory'],\n tablet_memory_static: ['tabletStaticMemory'],\n tablet_memory_static_usage: ['tabletStaticMemory'],\n tablet_memory_static_limit: ['tabletStaticMemory'],\n tablet_memory: ['tabletStaticMemory', 'tabletDynamicMemory'],\n tablet_slots: ['tabletSlots'],\n user_slots: ['userSlots', 'userSlotsProgress'],\n user_slots_usage: ['userSlots'],\n user_slots_limit: ['userSlots'],\n user_tags: ['userTags'],\n version: ['version'],\n write_sessions: ['disableWriteSession'],\n} as const;\n\nexport type NodesTableColumnNames = keyof typeof PropertiesByColumn;\n\nexport type NodeWithProps<T extends keyof typeof PropertiesByColumn> = Pick<\n Node & {cluster: string},\n (typeof PropertiesByColumn)[T][number]\n>;\n\ntype ItemDef<P extends keyof typeof PropertiesByColumn> = {\n align?: 'left' | 'center' | 'right';\n get?: (node: NodeWithProps<P>) => void;\n sort?: ((node: NodeWithProps<P>) => void) | boolean;\n};\n\ntype Items = {\n [P in keyof typeof PropertiesByColumn]?: ItemDef<P> & {\n group?: boolean;\n items?: Record<string, ItemDef<P>>;\n set?: string[];\n };\n};\n\nconst ioWeight: NonNullable<Items['io_weight']> = {\n group: true,\n items: {\n default: {\n get(node) {\n return node.IOWeight.default;\n },\n sort: true,\n align: 'center',\n },\n cache: {\n get(node) {\n return node.IOWeight.cache;\n },\n sort: true,\n align: 'center',\n },\n ssd_blobs: {\n get(node) {\n return node.IOWeight.ssd_blobs;\n },\n sort: true,\n align: 'center',\n },\n ssd_journals: {\n get(node) {\n return node.IOWeight.ssd_journals;\n },\n sort: true,\n align: 'center',\n },\n },\n set: ['default', 'ssd_blobs', 'ssd_journals'],\n};\n\nconst nodesTableProps = {\n size: 's',\n virtual: true,\n virtualType: 'simple',\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_TABLE_ID,\n computeKey(node: NodeWithProps<'host'>) {\n return node.host;\n },\n columns: {\n items: {\n host: {\n get(node) {\n return node.host;\n },\n sort: true,\n align: 'left',\n },\n physical_host: {\n get(node) {\n return node.physicalHost;\n },\n sort: true,\n align: 'left',\n },\n flavors: {\n get(node) {\n return node.flavors;\n },\n sort: true,\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n state: {\n get(node) {\n return node.state;\n },\n sort: true,\n align: 'center',\n },\n data_center: {\n get(node) {\n return node.dataCenter;\n },\n sort: true,\n caption: 'DC',\n align: 'left',\n tooltipProps: {placement: 'bottom', content: 'Data Center'},\n },\n rack: {\n get(node) {\n return hammer.format['RackToVector'](node.rack);\n },\n sort: true,\n align: 'left',\n },\n user_tags: {\n get(node) {\n return node.userTags || -1;\n },\n sort(node) {\n return !node.userTags?.length ? undefined : node.userTags;\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n system_tags: {\n get(node) {\n return node.systemTags || -1;\n },\n sort(node) {\n return node.systemTags || [];\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n banned: {\n get(item) {\n return item.banned;\n },\n align: 'center',\n sort: true,\n caption: 'B',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n decommissioned: {\n get(item) {\n return item.decommissioned;\n },\n align: 'center',\n sort: true,\n caption: 'D',\n tooltipProps: {\n placement: 'bottom',\n content: 'Decommissioned',\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n full: {\n get(item) {\n return item.full;\n },\n align: 'center',\n sort: true,\n caption: 'F',\n tooltipProps: {placement: 'bottom', content: 'Full'},\n },\n alert_count: {\n get(item) {\n return item.alertCount;\n },\n sort(item) {\n return item.alertCount;\n },\n align: 'center',\n caption: 'A',\n tooltipProps: {placement: 'bottom', content: 'Alerts'},\n },\n scheduler_jobs: {\n get(node) {\n return node.disableJobs;\n },\n sort: true,\n align: 'left',\n },\n write_sessions: {\n get(node) {\n return node.disableWriteSession;\n },\n sort: true,\n align: 'left',\n },\n tablet_cells: {\n get(node) {\n return node.disableTabletCells;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(node) {\n return node.version;\n },\n sort: true,\n align: 'left',\n },\n last_seen: {\n get(node) {\n return node.lastSeenTime;\n },\n sort: true,\n align: 'left',\n },\n space: {\n get(node) {\n return node.spaceProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"space\"\n title=\"Space\"\n options={[\n {column: 'space', title: 'Progress', withUndefined: true},\n {column: 'space_usage', title: 'Usage', withUndefined: true},\n {column: 'space_limit', title: 'Limit', withUndefined: true},\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n space_limit: {\n get(node) {\n return node.spaceTotal;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n space_usage: {\n get(node) {\n return node.spaceUsed;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n locations: {\n get(node) {\n return [\n node.locations && node.locations.length,\n node.locations && node.enabledLocations.length,\n ];\n },\n sort: true,\n align: 'center',\n },\n chunks: {\n get(node) {\n return node.chunks;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n sessions: {\n get(node) {\n return node.sessions;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n cpu: {\n get(node) {\n return node.cpuProgress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"cpu\"\n options={[\n {column: 'cpu', title: 'Progress', withUndefined: true},\n {column: 'cpu_usage', title: 'Usage', withUndefined: true},\n {column: 'cpu_limit', title: 'Limit', withUndefined: true},\n ]}\n title=\"CPU\"\n />\n );\n },\n },\n cpu_limit: {\n get(node) {\n return node.cpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n cpu_usage: {\n get(node) {\n return node.cpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu: {\n get(node) {\n return node.gpu?.progress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"gpu\"\n options={[\n {column: 'gpu', title: 'Progress', withUndefined: true},\n {column: 'gpu_usage', title: 'Usage', withUndefined: true},\n {column: 'gpu_limit', title: 'Limit', withUndefined: true},\n ]}\n title=\"GPU\"\n />\n );\n },\n },\n gpu_limit: {\n get(node) {\n return node.gpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu_usage: {\n get(node) {\n return node.gpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory: {\n get(node) {\n return node.memoryProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"memory\"\n title=\"Memory\"\n options={[\n {column: 'memory', title: 'Progress', withUndefined: true},\n {column: 'memory_usage', title: 'Usage', withUndefined: true},\n {column: 'memory_limit', title: 'Limit', withUndefined: true},\n ]}\n />\n );\n },\n align: 'center',\n },\n memory_usage: {\n get(node) {\n return node.memoryTotal.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_limit: {\n get(node) {\n return node.memoryTotal.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_total: {\n get(node) {\n return node.memoryProgress;\n },\n sort: true,\n align: 'center',\n },\n network: {\n get(node) {\n return node.networkProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"network\"\n title=\"Network\"\n options={[\n {column: 'network', title: 'Progress', withUndefined: true},\n {column: 'network_usage', title: 'Usage', withUndefined: true},\n {column: 'network_limit', title: 'Limit', withUndefined: true},\n ]}\n />\n );\n },\n align: 'center',\n },\n network_usage: {\n get(node) {\n return node.network.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n network_limit: {\n get(node) {\n return node.network.limit;\n },\n sortWithUndefined: true,\n hiddne: true,\n },\n repair_slots: {\n get(node) {\n return node.repairSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"repair_slots\"\n title=\"Repair slots\"\n options={[\n {column: 'repair_slots', title: 'Progress', withUndefined: true},\n {column: 'repair_slots_usage', title: 'Usage', withUndefined: true},\n {column: 'repair_slots_limit', title: 'Limit', withUndefined: true},\n ]}\n />\n );\n },\n align: 'center',\n },\n repair_slots_usage: {\n get(node) {\n return node.repairSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n repair_slots_limit: {\n get(node) {\n return node.repairSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots: {\n get(node) {\n return node.removalSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"removal_slots\"\n title=\"Removal slots\"\n options={[\n {column: 'removal_slots', title: 'Progress', withUndefined: true},\n {\n column: 'removal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'removal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n removal_slots_usage: {\n get(node) {\n return node.removalSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots_limit: {\n get(node) {\n return node.removalSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots: {\n get(node) {\n return node.replicationSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"replication_slots\"\n title=\"Replication slots\"\n options={[\n {\n column: 'replication_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'replication_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'replication_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n replication_slots_usage: {\n get(node) {\n return node.replicationSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots_limit: {\n get(node) {\n return node.replicationSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots: {\n get(node) {\n return node.sealSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"seal_slots\"\n title=\"Seal slots\"\n options={[\n {\n column: 'seal_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'seal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'seal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n seal_slots_usage: {\n get(node) {\n return node.sealSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots_limit: {\n get(node) {\n return node.sealSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots: {\n get(node) {\n return node.userSlotsProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"user_slots\"\n title=\"User slots\"\n options={[\n {\n column: 'user_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'user_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'user_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n user_slots_usage: {\n get(node) {\n return node.userSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots_limit: {\n get(node) {\n return node.userSlots.limits;\n },\n align: 'center',\n sortWithUndefined: true,\n hidden: true,\n },\n tablet_slots: {\n get(node) {\n if (node.tabletSlots && node.tabletSlots.raw && node.tabletSlots.raw.length) {\n return reduce_(\n node.tabletSlots.raw,\n (sum, slot) => (slot.state === 'none' ? sum : sum + 1),\n 0,\n );\n }\n\n return -1;\n },\n sort: true,\n align: 'left',\n },\n none: {\n get(node) {\n return node.tabletSlots?.byState.none;\n },\n sort(node) {\n return node.tabletSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('TS None', 'Tablet Slots None'),\n },\n none_chaos: {\n get(node) {\n return node.chaosSlots?.byState.none;\n },\n sort(node) {\n return node.chaosSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('CS None', 'Chaos Slots None'),\n },\n leading: {\n get(node) {\n return node.tabletSlots?.byState.leading;\n },\n sort(node) {\n return node.tabletSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Leading', 'Tablet Slots Leading'),\n },\n leading_chaos: {\n get(node) {\n return node.chaosSlots?.byState.leading;\n },\n sort(node) {\n return node.chaosSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Leading', 'Chaos Slots Leading'),\n },\n following: {\n get(node) {\n return node.tabletSlots?.byState.following;\n },\n sort(node) {\n return node.tabletSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Following', 'Tablet Slots Following'),\n },\n following_chaos: {\n get(node) {\n return node.chaosSlots?.byState.following;\n },\n sort(node) {\n return node.chaosSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Following', 'Chaos Slots Following'),\n },\n follower_recovery: {\n get(node) {\n return node.tabletSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.tabletSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS FR', 'Tablet Slots Follower Recovery'),\n },\n follower_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.chaosSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS FR', 'Chaos Slots Follower Recovery'),\n },\n leader_recovery: {\n get(node) {\n return node.tabletSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('TS LR', 'Tablet Slots Leader Recovery'),\n },\n leader_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('CS LR', 'Chaos Slots Leader Recovery'),\n },\n stopped: {\n get(node) {\n return node.tabletSlots?.byState.stopped;\n },\n sort(node) {\n return node.tabletSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Stopped', 'Tablet Slots Stopped'),\n },\n stopped_chaos: {\n get(node) {\n return node.chaosSlots?.byState.stopped;\n },\n sort(node) {\n return node.chaosSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Stopped', 'Chaos Slots Stopped'),\n },\n elections: {\n get(node) {\n return node.tabletSlots?.byState.elections;\n },\n sort(node) {\n return node.tabletSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Elections', 'Tablet Slots Elections'),\n },\n elections_chaos: {\n get(node) {\n return node.chaosSlots?.byState.elections;\n },\n sort(node) {\n return node.chaosSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Elections', 'Chaos Slots Elections'),\n },\n tablet_memory: {\n group: true,\n items: {\n static: {\n get(node) {\n return node.tabletStaticMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_static\"\n align={column.align}\n title=\"Static memory\"\n options={[\n {\n column: 'tablet_memory_static',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n static_usage: {\n get(node) {\n return node.tabletStaticMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n static_limit: {\n get(node) {\n return node.tabletStaticMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic: {\n get(node) {\n return node.tabletDynamicMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_dynamic\"\n align={column.align}\n title=\"Static memory\"\n options={[\n {\n column: 'tablet_memory_dynamic',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n dynamic_usage: {\n get(node) {\n return node.tabletDynamicMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic_limit: {\n get(node) {\n return node.tabletDynamicMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n },\n set: ['static', 'dynamic'],\n },\n io_weight: ioWeight,\n actions: {\n get(node) {\n return node.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n } as Items,\n sets: {\n default: {\n items: [\n 'host',\n 'physical_host',\n 'user_tags',\n 'system_tags',\n 'state',\n 'data_center',\n 'rack',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'version',\n 'last_seen',\n 'actions',\n ],\n },\n storage: {\n items: ['host', 'space', 'sessions', 'chunks', 'io_weight', 'actions'],\n },\n cpu_and_memory: {\n items: ['host', 'cpu', 'memory', 'network', 'actions'],\n },\n resources: {\n items: [\n 'host',\n 'user_slots',\n 'seal_slots',\n 'repair_slots',\n 'removal_slots',\n 'replication_slots',\n 'actions',\n ],\n },\n tablets: {\n items: ['host', 'tablet_slots', 'tablet_memory', 'actions'],\n },\n tablet_slots: {\n items: [\n 'host',\n 'none',\n 'leading',\n 'following',\n 'follower_recovery',\n 'leader_recovery',\n 'stopped',\n 'elections',\n ],\n },\n chaos_slots: {\n items: [\n 'host',\n 'none_chaos',\n 'leading_chaos',\n 'following_chaos',\n 'follower_recovery_chaos',\n 'leader_recovery_chaos',\n 'stopped_chaos',\n 'elections_chaos',\n ],\n },\n custom: {\n items: [\n 'host',\n 'user_tags',\n 'state',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'last_seen',\n 'actions',\n ],\n },\n },\n },\n templates: {\n data: {\n onMemoryProgressMouseEnter() {},\n onMemoryProgressMouseLeave() {},\n },\n },\n};\n\nexport const defaultColumns = nodesTableProps.columns.sets.custom.items;\n\nfunction renderTags(tags?: Array<string | number>, themes?: StatusBlockTheme[], flexType?: 'flex') {\n return tags?.length ? (\n <TagsContainer flexType={flexType}>\n {map_(tags, (tag, index) => (\n <StatusBlock key={tag} theme={themes?.[index]} text={tag} />\n ))}\n </TagsContainer>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\nfunction TagsContainer({\n children,\n flexType = 'inline-flex',\n}: {\n children: React.ReactNode;\n flexType?: 'flex' | 'inline-flex';\n}) {\n return (\n <div className={block('tags-container', {inline: 'inline-flex' === flexType})}>\n {children}\n </div>\n );\n}\n\nconst IO_WEIGHT_PREFIX = 'io_weight_';\n\ntype Templates = {\n [P in keyof typeof PropertiesByColumn]?: (\n item: NodeWithProps<P>,\n columnName: string,\n ) => React.ReactNode;\n};\n\nexport const NODES_TABLE_TEMPLATES: Templates = {\n __default__(item, columnName) {\n if (typeof item.IOWeight === 'object' && columnName.startsWith(IO_WEIGHT_PREFIX)) {\n const mediumName = columnName.slice(IO_WEIGHT_PREFIX.length);\n\n return hammer.format['Number'](item.IOWeight[mediumName]);\n }\n },\n host(item) {\n return <Host address={item.host} />;\n },\n state(item) {\n return <NodeColumnState state={item.state} />;\n },\n banned(item) {\n return (\n <TagsContainer>\n <NodeColumnBanned banned={item.banned} />\n </TagsContainer>\n );\n },\n decommissioned(item) {\n return item.decommissioned ? renderTags(['D'], ['decommissioned']) : hammer.format.NO_VALUE;\n },\n flavors(item) {\n return renderTags(item.flavors);\n },\n full(item) {\n return item.full ? renderTags(['F'], ['full']) : hammer.format.NO_VALUE;\n },\n\n alert_count(item) {\n return item.alertCount! > 0\n ? renderTags([String(item.alertCount)], ['alerts'])\n : hammer.format.NO_VALUE;\n },\n\n physical_host(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.physicalHost}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.physicalHost)}\n </span>\n \n <ClipboardButton\n text={item.physicalHost}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n },\n\n user_tags(item) {\n return renderTags(item.userTags, [], 'flex');\n },\n\n system_tags(item) {\n return renderTags(item.systemTags, [], 'flex');\n },\n\n scheduler_jobs(item) {\n return renderLabel(item.disableJobs);\n },\n write_sessions(item) {\n return renderLabel(item.disableWriteSession);\n },\n tablet_cells(item) {\n return renderLabel(item.disableTabletCells);\n },\n\n data_center(item) {\n return item.dataCenter?.toUpperCase() || hammer.format.NO_VALUE;\n },\n\n rack(item) {\n return <span className=\"elements-monospace\">{hammer.format['Address'](item.rack)}</span>;\n },\n\n version(item) {\n const {version} = item;\n\n return <Version version={version} />;\n },\n\n last_seen(item) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](item.lastSeenTime, {\n format: 'full',\n })}\n </span>\n );\n },\n\n actions(item) {\n return <NodeActions node={item} />;\n },\n\n space(item) {\n return <Progress value={item.spaceProgress || 0} text={item.spaceText} theme=\"success\" />;\n },\n\n space_limit(item) {\n return hammer.format['Bytes'](item.spaceTotal);\n },\n\n locations(item) {\n return item.locations\n ? progressText(item.enabledLocations.length, item.locations.length)\n : null;\n },\n\n sessions(item) {\n return hammer.format['Number'](item.sessions);\n },\n\n chunks(item) {\n return hammer.format['Number'](item.chunks);\n },\n\n io_weight(item) {\n return hammer.format['Number'](item.IOWeight);\n },\n\n cpu(item) {\n return <Progress value={item.cpuProgress || 0} text={item.cpuText} theme=\"success\" />;\n },\n\n gpu(item) {\n return (\n <Progress\n value={item.gpu?.progress || 0}\n text={item.gpu?.progressText}\n theme=\"success\"\n />\n );\n },\n\n memory(item) {\n return (\n <MemoryProgress\n memoryData={item.memoryData}\n memoryText={item.memoryText}\n memoryProgress={item.memoryProgress || 0}\n />\n );\n },\n\n memory_total(item) {\n return (\n <Progress\n value={item.memoryProgress || 0}\n text={item.memoryTotalText}\n theme=\"success\"\n />\n );\n },\n\n network(item) {\n return (\n <Progress value={item.networkProgress || 0} text={item.networkText} theme=\"success\" />\n );\n },\n\n repair_slots(item) {\n const text = progressText(item.repairSlots.usage, item.repairSlots.limits);\n\n return <Progress value={item.repairSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n removal_slots(item) {\n const text = progressText(item.removalSlots.usage, item.removalSlots.limits);\n\n return <Progress value={item.removalSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n replication_slots(item) {\n const text = progressText(item.replicationSlots.usage, item.replicationSlots.limits);\n\n return <Progress value={item.replicationSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n seal_slots(item) {\n const text = progressText(item.sealSlots.usage, item.sealSlots.limits);\n\n return <Progress value={item.sealSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n user_slots(item) {\n const text = progressText(item.userSlots.usage, item.userSlots.limits);\n\n return <Progress value={item.userSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n tablet_slots(item) {\n if (item.tabletSlots) {\n const statuses = sortBy_(keys_(item.tabletSlots.byState));\n\n return (\n <TagsContainer>\n {map_(statuses, (state: TabletSlotState) => {\n const tabletSlots = item.tabletSlots.byState[state]!;\n const {text, theme} = TABLET_SLOTS[state];\n const label = `${text}: ${tabletSlots.length}`;\n\n return <StatusBlock theme={theme} text={label} key={state} />;\n })}\n </TagsContainer>\n );\n }\n\n return null;\n },\n\n none(item) {\n const data = item.tabletSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n none_chaos(item) {\n const data = item.chaosSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n leading(item) {\n const data = item.tabletSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n leading_chaos(item) {\n const data = item.chaosSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n following(item) {\n const data = item.tabletSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n following_chaos(item) {\n const data = item.chaosSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery(item) {\n const data = item.tabletSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery(item) {\n const data = item.tabletSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n stopped(item) {\n const data = item.tabletSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n stopped_chaos(item) {\n const data = item.chaosSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n elections(item) {\n const data = item.tabletSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n elections_chaos(item) {\n const data = item.chaosSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n tablet_memory_static(item) {\n const text = progressText(item.tabletStaticMemory.used, item.tabletStaticMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletStaticMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n\n tablet_memory_dynamic(item) {\n const text = progressText(item.tabletDynamicMemory.used, item.tabletDynamicMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletDynamicMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n};\n\nexport function getNodeTablesProps(mediumList: string[] = []) {\n if (!mediumList?.length) {\n return nodesTableProps;\n }\n const actions = nodesTableProps.columns.items.actions;\n const allMediums = reduce_(\n mediumList,\n (acc, key) => {\n acc[key] = {\n get(node: Node) {\n return node.IOWeight[key];\n },\n sort: true,\n align: 'center',\n };\n return acc;\n },\n {actions} as {actions: typeof actions} & Record<string, FIX_MY_TYPE>,\n );\n const res = merge_({}, nodesTableProps, {\n columns: {\n items: {\n io_weight: {\n items: {\n ...allMediums,\n },\n groupHeaderStyle: mediumList.length\n ? {width: 100 * mediumList.length}\n : undefined,\n },\n },\n },\n templates: NODES_TABLE_TEMPLATES,\n });\n res.columns!.items!.io_weight!.set = mediumList;\n return res;\n}\n\nfunction makeCaptionProps(columnName: string, title: string) {\n return {\n caption: columnName,\n tooltipProps: {\n placement: 'bottom',\n content: title,\n },\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Select} from '@gravity-ui/uikit';\n\nimport {NODE_TYPE_ITEMS} from '../../../constants/components/nodes/nodes';\nimport {getSystemNodesNodeTypesToLoad} from '../../../store/selectors/system/nodes';\nimport {setSysmetNodesNodeType} from '../../../store/actions/system/nodes-ts';\nimport {NODE_TYPE, NodeType} from '../../../../shared/constants/system';\nimport {getComponentsNodesNodeTypes} from '../../../store/selectors/components/nodes/nodes';\nimport {componentsNodesSetNodeTypes} from '../../../store/actions/components/nodes/nodes';\nimport {updateListWithAll} from '../../../utils';\n\ntype NodeTypeSelectorProps = {\n className?: string;\n value: Array<NodeType>;\n onUpdate: (value: NodeTypeSelectorProps['value']) => void;\n};\n\nexport function NodeTypeSelector(props: NodeTypeSelectorProps) {\n const {className, value, onUpdate} = props;\n return (\n <Select\n className={className}\n value={value}\n multiple\n options={NODE_TYPE_ITEMS}\n onUpdate={(newVal) => {\n const newValue = updateListWithAll(\n {value, newValue: newVal as NodeType[]},\n NODE_TYPE.ALL_NODES,\n );\n onUpdate(newValue);\n }}\n label={'Node type:'}\n />\n );\n}\n\nexport function SystemNodeTypeSelector() {\n const dispatch = useDispatch();\n const value = useSelector(getSystemNodesNodeTypesToLoad);\n return (\n <NodeTypeSelector\n value={value}\n onUpdate={(newValue) => {\n dispatch(setSysmetNodesNodeType(newValue));\n }}\n />\n );\n}\n\nexport function ComponentsNodeTypeSelector({className}: {className?: string}) {\n const dispatch = useDispatch();\n\n const value = useSelector(getComponentsNodesNodeTypes);\n return (\n <NodeTypeSelector\n className={className}\n value={value}\n onUpdate={(newValue) => dispatch(componentsNodesSetNodeTypes(newValue))}\n />\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {NodeType} from '../../../../shared/constants/system';\nimport {setSettingSystemNodesNodeType} from '../settings/settings';\nimport {RootState} from '../../../store/reducers';\n\nexport function setSysmetNodesNodeType(\n value: Array<NodeType>,\n): ThunkAction<void, RootState, unknown, any> {\n return (dispatch) => {\n dispatch(setSettingSystemNodesNodeType(value));\n };\n}\n","import type {ThunkAction} from 'redux-thunk';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n NODE_MAINTENANCE_PARTIAL,\n NODE_MAINTENANCE_RESET,\n} from '../../../constants/components/node-maintenance-modal';\nimport {\n NodeMaintenanceAction,\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n isAllowedMaintenanceApiNodes,\n isAllowedMaintenanceApiProxies,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {AddMaintenanceParams, BatchSubRequest} from '../../../../shared/yt-types';\nimport {updateComponentsNode} from './nodes/nodes';\nimport {getCurrentUserName} from '../../../store/selectors/global';\nimport {prepareSetCommandForBatch} from '../../../utils/cypress-attributes';\nimport {getProxies} from './proxies/proxies';\n\ntype NodeMaintenanceThunkAction<T = Promise<unknown>> = ThunkAction<\n T,\n RootState,\n unknown,\n NodeMaintenanceAction\n>;\n\nfunction makeNodePath(address: string, component: AddMaintenanceParams['component']) {\n switch (component) {\n case 'cluster_node':\n return `//sys/cluster_nodes/${address}`;\n case 'http_proxy':\n return `//sys/http_proxies/${address}`;\n case 'rpc_proxy':\n return `//sys/rpc_proxies/${address}`;\n default:\n throw new Error(`Unexpected component type: ${component}`);\n }\n}\n\nfunction makeObsoleteMaintenanceRequests(\n command: 'add_maintenance' | 'remove_maintenance',\n {\n address,\n type,\n comment: c,\n component,\n }: Pick<AddMaintenanceParams, 'address' | 'type' | 'comment' | 'component'>,\n): Array<BatchSubRequest> {\n const path = makeNodePath(address, component);\n const isAdd = command === 'add_maintenance';\n const comment = isAdd ? c : '';\n switch (type) {\n case 'ban': {\n const banned = command === 'add_maintenance';\n return [\n {command: 'set', parameters: {path: `${path}/@banned`}, input: banned},\n {command: 'set', parameters: {path: `${path}/@ban_message`}, input: comment},\n ];\n }\n case 'disable_scheduler_jobs':\n case 'disable_tablet_cells':\n case 'disable_write_sessions':\n return [{command: 'set', parameters: {path: `${path}/@${type}`}, input: isAdd}];\n case 'decommission':\n return [\n {command: 'set', parameters: {path: `${path}/@decommissioned`}, input: isAdd},\n {\n command: 'set',\n parameters: {path: `${path}/@decommission_message`},\n input: isAdd ? comment : '',\n },\n ];\n default:\n return [];\n }\n}\n\nexport function applyMaintenance(\n address: string,\n component: NodeMaintenanceState['component'],\n data: NodeMaintenanceState['maintenance'],\n resourceLimitsOverrides?: Partial<NodeResourceLimits>,\n role?: string,\n): NodeMaintenanceThunkAction {\n return (dispatch, getState) => {\n const requests: Array<BatchSubRequest> = [];\n\n const path = makeNodePath(address, component);\n\n if (role && (component === 'http_proxy' || component === 'rpc_proxy')) {\n requests.push(prepareSetCommandForBatch(`${path}/@role`, role));\n }\n\n forEach_(resourceLimitsOverrides, (value, key) => {\n requests.push(\n prepareSetCommandForBatch(\n `${path}/@resource_limits_overrides/${key}`,\n isNaN(value!)\n ? undefined\n : {$value: value, $type: key === 'cpu' ? 'double' : 'int64'},\n {\n input_format: {\n $value: 'json',\n $attributes: {annotate_with_types: true},\n },\n },\n ),\n );\n });\n\n forEach_(data, (item, t) => {\n const type = t as AddMaintenanceParams['type'];\n const command = item?.state ? 'add_maintenance' : 'remove_maintenance';\n const comment = item?.comment;\n\n if (!isMaintenanceApiAllowedForComponent(component, getState())) {\n requests.push(\n ...makeObsoleteMaintenanceRequests(command, {\n address,\n component,\n comment,\n type,\n }),\n );\n } else {\n requests.push({\n command,\n parameters: {\n component,\n address,\n type,\n mine: true,\n comment,\n },\n });\n }\n });\n\n const reloadNodeData = () => {\n switch (component) {\n case 'cluster_node':\n return dispatch(updateComponentsNode(address));\n case 'http_proxy':\n return dispatch(getProxies('http'));\n case 'rpc_proxy':\n return dispatch(getProxies('rpc'));\n }\n };\n\n return wrapApiPromiseByToaster(ytApiV3Id.executeBatch(YTApiId.addMaintenance, {requests}), {\n toasterName: 'edit_node_' + address,\n isBatch: true,\n skipSuccessToast: true,\n errorTitle: `Failed to modify ${address}`,\n })\n .then(reloadNodeData)\n .catch(reloadNodeData);\n };\n}\n\nexport function showNodeMaintenance(\n params: Pick<NodeMaintenanceState, 'address' | 'component'>,\n): NodeMaintenanceThunkAction {\n return async (dispatch) => {\n const data = await dispatch(loadNodeMaintenanceData(params));\n\n return dispatch({\n type: NODE_MAINTENANCE_PARTIAL,\n data: {...params, ...data},\n });\n };\n}\n\nexport type MaintenanceRequestInfo = {\n user: string;\n comment: string;\n timestamp: string;\n type: AddMaintenanceParams['type'];\n};\n\ntype MaintenanceDataResponse = {\n banned?: boolean;\n ban?: boolean;\n ban_message?: string;\n decommissioned?: boolean;\n decommission_message?: string;\n disable_scheduler_jobs?: boolean;\n disable_tablet_cells?: boolean;\n disable_write_sessions?: boolean;\n\n resource_limits?: NodeResourceLimits;\n resource_limits_overrides?: Partial<NodeResourceLimits>;\n\n maintenance_requests?: Record<string, MaintenanceRequestInfo>;\n\n role?: string;\n};\n\nexport function loadNodeMaintenanceData({\n address,\n component,\n}: Pick<NodeMaintenanceState, 'address' | 'component'>): NodeMaintenanceThunkAction<\n Promise<{\n maintenance: NodeMaintenanceState['maintenance'];\n resourceLimits?: NodeResourceLimits;\n resourceLimitsOverrides?: Partial<NodeResourceLimits>;\n }>\n> {\n return (_dispatch, getState) => {\n const state = getState();\n const user = getCurrentUserName(state);\n const path = makeNodePath(address, component) + '/@';\n\n const allowMaintenanceRequests = isMaintenanceApiAllowedForComponent(component, state);\n\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.maintenanceRequests, {\n path,\n attributes: [\n 'resource_limits',\n 'resource_limits_overrides',\n ...(allowMaintenanceRequests\n ? ['maintenance_requests']\n : [\n 'ban_message',\n 'decommissioned',\n 'decommission_message',\n 'disable_scheduler_jobs',\n 'disable_tablet_cells',\n 'disable_write_sessions',\n ]),\n ...(component === 'http_proxy' || component === 'rpc_proxy'\n ? ['banned', 'role']\n : ['banned']),\n ],\n }),\n {\n toasterName: 'maintenance_attributes_request_' + path,\n skipSuccessToast: true,\n errorContent: `Cannot load node attributes for ${path}`,\n },\n ).then((data: MaintenanceDataResponse) => {\n const maintenance: NodeMaintenanceState['maintenance'] = {};\n if (allowMaintenanceRequests) {\n forEach_(data.maintenance_requests, (item) => {\n const dst =\n maintenance[item.type] ??\n (maintenance[item.type] = {comment: '', othersComment: '', state: ''});\n\n if (item.user === user) {\n dst.state = 'maintenance';\n if (dst.comment?.length) {\n dst.comment += '\\n';\n }\n dst.comment += item.comment;\n } else {\n dst.othersComment += `${item.timestamp} ${item.user}\\t${item.comment}`;\n }\n });\n } else {\n Object.assign(maintenance, {\n ban: {\n state: data.banned ? 'maintenance' : '',\n comment: data.ban_message,\n },\n decommission: {\n state: data.decommissioned ? 'maintenance' : '',\n comment: data.decommission_message,\n },\n disable_scheduler_jobs: {\n state: data.disable_scheduler_jobs ? 'maintenance' : '',\n },\n disable_tablet_cells: {state: data.disable_tablet_cells ? 'maintenance' : ''},\n disable_write_sessions: {\n state: data.disable_write_sessions ? 'maintenance' : '',\n },\n } as typeof maintenance);\n }\n return {\n maintenance,\n resourceLimits: data.resource_limits,\n resourceLimitsOverrides: data.resource_limits_overrides,\n role: data.role,\n };\n });\n };\n}\n\nexport function closeNodeMaintenanceModal(): NodeMaintenanceAction {\n return {type: NODE_MAINTENANCE_RESET};\n}\n\nfunction isMaintenanceApiAllowedForComponent(\n component: AddMaintenanceParams['component'],\n state: RootState,\n) {\n switch (component) {\n case 'cluster_node':\n return isAllowedMaintenanceApiNodes(state);\n case 'http_proxy':\n case 'rpc_proxy':\n return isAllowedMaintenanceApiProxies(state);\n default:\n return false;\n }\n}\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport omit_ from 'lodash/omit';\nimport forEach_ from 'lodash/forEach';\nimport compact_ from 'lodash/compact';\nimport type {ThunkAction} from 'redux-thunk';\n\nimport ypath from '../../../../common/thor/ypath';\n\nimport {setSetting} from '../../../../store/actions/settings';\nimport {NAMESPACES, SettingName} from '../../../../../shared/constants/settings';\nimport {\n getRequiredAttributes,\n useRacksFromAttributes,\n useTagsFromAttributes,\n} from '../../../../store/selectors/components/nodes/nodes';\nimport {getTemplates} from '../../../../store/selectors/settings';\nimport type {RootState} from '../../../../store/reducers';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodesAction,\n NodesState,\n} from '../../../../store/reducers/components/nodes/nodes/nodes';\nimport type {NodesSetupState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {\n APPLY_SETUP,\n CHANGE_CONTENT_MODE,\n CHANGE_HOST_FILTER,\n CHANGE_NODE_TYPE,\n COMPONENTS_NODES_UPDATE_NODE,\n GET_NODES,\n GET_NODES_FILTER_OPTIONS,\n} from '../../../../constants/components/nodes/nodes';\nimport {USE_CACHE, USE_MAX_SIZE} from '../../../../../shared/constants/yt-api';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport type {ActionD, FIX_MY_TYPE, PartialDeep} from '../../../../types';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\nimport {splitBatchResults, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {NodeType} from '../../../../../shared/constants/system';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\n\nconst {COMPONENTS} = NAMESPACES;\nconst {TEMPLATES} = SettingName.COMPONENTS;\n\nexport type NodesThunkAction = ThunkAction<void, RootState, unknown, NodesAction>;\n\nexport function changeContentMode(\n contentMode: NodesState['contentMode'],\n): ActionD<typeof CHANGE_CONTENT_MODE, Pick<NodesState, 'contentMode'>> {\n return {\n type: CHANGE_CONTENT_MODE,\n data: {contentMode},\n };\n}\n\nconst updateNodeCanceler = new CancelHelper();\n\nexport function getNodes({\n attributes,\n nodeTypes,\n}: {\n attributes: ReturnType<typeof getRequiredAttributes>;\n nodeTypes: Array<NodeType>;\n}): NodesThunkAction {\n return (dispatch) => {\n dispatch({type: GET_NODES.REQUEST});\n\n const preparedAttrs = prepareAttributes(attributes);\n const requests: Array<BatchSubRequest> = nodeTypes.map((type) => {\n return {\n command: 'list',\n parameters: {\n path: `//sys/${type}`,\n attributes: preparedAttrs,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.componentsClusterNodes, {\n parameters: {requests},\n cancellation: updateNodeCanceler.removeAllAndSave,\n })\n .then((data) => {\n const {results, error} = splitBatchResults(data, 'Failed to get nodes');\n\n const outputs = results.map((output) => {\n return ypath.getValue(output) || [];\n });\n\n const nodes = [];\n\n const collectedItems = new Set<string>();\n\n for (const output of outputs) {\n for (const item of output) {\n const {$value: name} = item;\n if (!collectedItems.has(name)) {\n nodes.push(item);\n collectedItems.add(name);\n }\n }\n }\n\n dispatch({type: GET_NODES.SUCCESS, data: {nodes}});\n\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_NODES.CANCELLED});\n return;\n }\n dispatch({\n type: GET_NODES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function updateComponentsNode(host: string): NodesThunkAction {\n return (dispatch) => {\n return ytApiV3Id\n .get(YTApiId.componentsUpdateNodeData, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: COMPONENTS_NODES_UPDATE_NODE,\n data: {node: {...node, $value: host}},\n });\n });\n };\n}\n\nexport function changeHostFilter(\n hostFilter: string,\n): ActionD<typeof CHANGE_HOST_FILTER, Pick<NodesState, 'hostFilter'>> {\n return {\n type: CHANGE_HOST_FILTER,\n data: {hostFilter: hostFilter.trim()},\n };\n}\n\nexport function componentsNodesSetNodeTypes(nodeTypes: Array<NodeType>): NodesThunkAction {\n return (dispatch) => {\n dispatch({\n type: CHANGE_NODE_TYPE,\n data: {nodeTypes},\n });\n };\n}\n\nexport function applyPreset(\n setup: PartialDeep<NodesSetupState>,\n): ActionD<typeof APPLY_SETUP, PartialDeep<NodesSetupState>> {\n return {\n type: APPLY_SETUP,\n data: setup,\n };\n}\n\nexport function savePreset(name: string, data: FIX_MY_TYPE): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const prevTemplates = getTemplates(state) || {};\n const templates = {\n ...prevTemplates,\n [name]: data,\n };\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function removePreset(name: string): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const templates = omit_(getTemplates(state), name);\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function handleColumnsChange(selectedColumns: string[]): NodesThunkAction {\n return async (dispatch) => {\n await dispatch(\n setSetting(\n SettingName.COMPONENTS.SELECTED_COLUMNS,\n NAMESPACES.COMPONENTS,\n selectedColumns,\n ),\n );\n };\n}\n\nexport function getComponentsNodesFilterOptions(): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = compact_([\n !useTagsFromAttributes(state) && 'tags',\n !useRacksFromAttributes(state) && 'rack',\n ]);\n\n if (0 === attributes.length) {\n return;\n }\n\n dispatch({type: GET_NODES_FILTER_OPTIONS.REQUEST});\n\n wrapApiPromiseByToaster(\n ytApiV3Id.list(YTApiId.componentsClusterNodes, {\n path: '//sys/cluster_nodes',\n attributes,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n }),\n {\n toasterName: 'node filter options',\n errorTitle: `Failed to load node ${attributes.join(',')}`,\n skipSuccessToast: true,\n },\n )\n .then((nodes) => {\n const tags = new Set<string>();\n const racks = new Set<string>();\n forEach_(nodes, (item) => {\n const node = new Node(item);\n forEach_(node.tags, (tag) => {\n if (tag) {\n tags.add(tag);\n }\n });\n if (node.rack) {\n racks.add(node.rack);\n }\n });\n\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.SUCCESS,\n data: {\n filterOptionsTags: [...tags].sort(),\n filterOptionsRacks: [...racks].sort(),\n },\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.FAILURE,\n data: {error},\n });\n });\n };\n}\n","import ypath from '../../../../../common/thor/ypath';\n\nexport default class Proxy {\n constructor(data) {\n // data comes in format like in /hosts/all, not like //sys/http_proxies\n this.name = data.name;\n this.host = data.name;\n this.state = data.dead ? 'offline' : 'online';\n this.effectiveState = this.banned ? 'banned' : this.state;\n\n this.banned = ypath.getBoolean(data, '/banned') || false;\n this.banMessage = ypath.getValue(data, '/ban_message') || '';\n this.role = ypath.getValue(data, '/role');\n this.version = ypath.getValue(data, '/version');\n this.physicalHost = ypath.getValue(data, '/annotations/physical_host');\n this.liveness = ypath.getValue(data, '/liveness');\n\n this.loadAverage = ypath.getValue(this.liveness, '/load_average');\n this.updatedAt = ypath.getValue(this.liveness, '/updated_at');\n this.networkLoad = ypath.getValue(this.liveness, '/network_coef');\n }\n\n static ATTRIBUTES = ['ban_message', 'banned', 'liveness', 'role', 'version', 'annotations'];\n}\n","import map_ from 'lodash/map';\n\nimport axios from 'axios';\nimport ypath from '../../../../common/thor/ypath';\n\nimport Proxy from '../../../../store/reducers/components/proxies/proxies/proxy';\nimport {\n GET_PROXIES,\n PROXIES_CHANGE_FILTERS,\n PROXY_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nfunction getRpcProxies() {\n return (dispatch) => {\n return Promise.all([\n ytApiV3Id.list(YTApiId.componentsRpcProxies, {\n path: '//sys/rpc_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ytApiV3Id.get(YTApiId.componentGetRpcProxies, {path: '//sys/rpc_proxies'}),\n ])\n .then(([data, proxiesMap]) => {\n const proxies = map_(data, (proxyData) => {\n const name = ypath.getValue(proxyData);\n const role = ypath.getValue(proxyData, '/role') || 'default';\n const alive = Boolean(ypath.getValue(proxiesMap, `/${name}`).alive);\n const attributes = ypath.getAttributes(proxyData);\n const meta = {name, role, dead: !alive};\n\n return new Proxy({...meta, ...attributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nfunction getHttpProxies() {\n return (dispatch, getState) => {\n const cluster = getCluster(getState());\n return Promise.all([\n axios.get(`/api/yt-proxy/${cluster}/hosts-all`),\n ytApiV3Id.get(YTApiId.systemProxies, {\n path: '//sys/http_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ])\n .then(([{data}, cypressData]) => {\n const proxies = map_(data, (proxyData) => {\n const cypressAttributes = ypath.getAttributes(\n ypath.getValue(cypressData)[proxyData.name],\n );\n\n return new Proxy({...proxyData, ...cypressAttributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\n/**\n *\n * @param {'http' | 'rpc'} type\n * @returns\n */\nexport function getProxies(type) {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.REQUEST});\n\n return dispatch(type === PROXY_TYPE.HTTP ? getHttpProxies() : getRpcProxies());\n };\n}\n\nexport function changeHostFilter(hostFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {hostFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {stateFilter},\n };\n}\n\nexport function changeRoleFilter(roleFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {roleFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter) {\n return {type: PROXIES_CHANGE_FILTERS, data: {bannedFilter}};\n}\n\nexport function resetProxyState() {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.CANCELLED});\n };\n}\n","import reduce_ from 'lodash/reduce';\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\nimport {getClusterUiConfig} from '../global';\nimport {isSupportedNodeMaintenanceApi} from '../thor/support';\nimport {NodeResourceLimits} from '../../../store/reducers/components/node-maintenance-modal';\n\nexport const getNodeMaintenanceModalState = (state: RootState) =>\n state.components.nodeMaintenanceModal;\n\nexport const getNodeMaintenanceModalInitialValues = createSelector(\n [getNodeMaintenanceModalState],\n ({maintenance, resourceLimitsOverrides, role}) => {\n return {\n ...maintenance,\n role: {role},\n limits: reduce_(\n resourceLimitsOverrides,\n (acc, value, k) => {\n const key = k as keyof typeof acc;\n acc[key] = {value};\n return acc;\n },\n {} as Partial<Record<keyof NodeResourceLimits, {value?: number}>>,\n ),\n };\n },\n);\n\nexport const isAllowedMaintenanceApiNodes = createSelector(\n [isSupportedNodeMaintenanceApi, getClusterUiConfig],\n (isSupported, uiConfig) => {\n return isSupported && Boolean(uiConfig.enable_maintenance_api_nodes);\n },\n);\n\nexport const isAllowedMaintenanceApiProxies = createSelector(\n [isSupportedNodeMaintenanceApi, getClusterUiConfig],\n (isSupported, uiConfig) => {\n return isSupported && Boolean(uiConfig.enable_maintenance_api_proxies);\n },\n);\n","import filter_ from 'lodash/filter';\nimport some_ from 'lodash/some';\nimport union_ from 'lodash/union';\n\nimport hammer from '../../../../../common/hammer';\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../../../common/hammer/predicate';\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\nimport {AttributesByProperty} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {createMediumsPredicates} from '../../../../../utils/components/nodes/setup';\nimport {\n PropertiesByColumn,\n defaultColumns,\n getNodeTablesProps,\n} from '../../../../../pages/components/tabs/nodes/tables';\nimport {\n getComponentNodesFilterPredicates,\n getComponentNodesFilterStatePredicate,\n getComponentNodesFiltersSetup,\n getComponentNodesIndexByRack,\n getComponentNodesIndexByTag,\n getNodes,\n getPropertiesRequiredForFilters,\n} from './predicates';\nimport {NODE_TYPE, NodeType} from '../../../../../../shared/constants/system';\n\nconst getContentMode = (state: RootState) => state.components.nodes.nodes.contentMode;\nconst getHostFilter = (state: RootState) => state.components.nodes.nodes.hostFilter.toLowerCase();\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_TABLE_ID];\nconst getComponentsNodesNodeTypeRaw = (state: RootState) => state.components.nodes.nodes.nodeTypes;\n\nconst getCustomColumns = (state: RootState) => getSelectedColumns(state) || defaultColumns;\n\nconst getMediumsPredicates = createSelector(\n [getComponentNodesFiltersSetup, getMediumListNoCache],\n createMediumsPredicates,\n);\n\nconst getPropertiesRequiredForMediums = createSelector(\n [getMediumsPredicates],\n (mediumsPredicates) => (mediumsPredicates.length > 0 ? (['IOWeight'] as const) : []),\n);\n\nconst getFilteredByHost = createSelector([getNodes, getHostFilter], (nodes, hostFilter) => {\n const hostFilters = hostFilter.split(/\\s+/);\n return filter_(nodes, (node) => {\n return some_(hostFilters, (hostFilter) => node?.host?.toLowerCase().startsWith(hostFilter));\n });\n});\n\nconst getFilteredNodes = createSelector(\n [getFilteredByHost, getComponentNodesFilterPredicates, getMediumsPredicates],\n (nodes, predicates, mediumsPredicates) => {\n const predicatesArray = predicates.concat(mediumsPredicates);\n if (!predicatesArray.length) {\n return nodes;\n }\n\n const predicate = concatByAnd(...predicatesArray);\n return filter_(nodes, (node) => {\n return predicate(node);\n });\n },\n);\n\nexport const getVisibleNodes = createSelector(\n [getFilteredNodes, getSortState, getMediumListNoCache, getCluster],\n (nodes, sortState, mediumList, cluster) => {\n return hammer.utils.sort(\n nodes.map((n) => ({...n, cluster})),\n sortState,\n getNodeTablesProps(mediumList).columns.items,\n ) as typeof nodes;\n },\n);\n\nexport const getComponentNodesTableProps = createSelector(\n [getMediumListNoCache],\n getNodeTablesProps,\n);\n\nconst getVisibleColumns = createSelector(\n [getComponentNodesTableProps, getContentMode, getCustomColumns],\n (nodesTableProps, contentMode, customColumns) =>\n contentMode === 'custom' ? customColumns : nodesTableProps.columns.sets[contentMode].items,\n);\n\nconst getPropertiesRequiredForRender = createSelector(\n [getVisibleColumns],\n (visibleColumns /* : Array<keyof typeof PropertiesByColumn> */) => {\n const requiredProperties = union_(\n ...visibleColumns.map(\n (x) => (PropertiesByColumn as any)[x] as ValueOf<typeof PropertiesByColumn>,\n ),\n );\n\n return requiredProperties;\n },\n);\n\nexport const getRequiredAttributes = createSelector(\n [\n getPropertiesRequiredForRender,\n getPropertiesRequiredForFilters,\n getPropertiesRequiredForMediums,\n ],\n (propertiesRequiredForRender, propertiesRequiredForFilters, propertiesRequiredForMediums) => {\n const allRequiredProperties = [\n ...propertiesRequiredForRender,\n ...propertiesRequiredForFilters,\n ...propertiesRequiredForMediums,\n ];\n\n const requiredAttributes = union_(\n ...allRequiredProperties.map(\n (x) => (AttributesByProperty as any)[x] as ValueOf<typeof AttributesByProperty>,\n ),\n );\n\n return requiredAttributes;\n },\n);\n\nexport const useTagsFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('tags') >= 0;\n});\n\nexport const useRacksFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('rack') >= 0;\n});\n\nconst getFetchedTags = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsTags;\nconst getFetchedRacks = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsRacks;\n\nexport const getComponentNodesTags = createSelector(\n [useTagsFromAttributes, getFetchedTags, getComponentNodesIndexByTag],\n (useFromAttrs, fetchedTags, nodesByTag) => {\n if (!useFromAttrs) {\n return fetchedTags;\n }\n\n return [...nodesByTag.keys()].sort();\n },\n);\n\nexport const getComponentNodesRacks = createSelector(\n [useRacksFromAttributes, getFetchedRacks, getComponentNodesIndexByRack],\n (useFromAttrs, fetchedRacks, nodesByRack) => {\n if (!useFromAttrs) {\n return fetchedRacks;\n }\n\n return [...nodesByRack.keys()].sort();\n },\n);\n\nexport const getComponentsNodesNodeTypes = createSelector(\n [getComponentsNodesNodeTypeRaw],\n (types) => {\n const res: Array<NodeType> = [...types];\n if (res.length === 0) {\n return [NODE_TYPE.ALL_NODES];\n }\n return res;\n },\n);\n\nexport const COMPONENTS_AVAILABLE_STATES = [\n 'all',\n 'being_disposed',\n 'online',\n 'offline',\n 'mixed',\n 'registered',\n 'unregistered',\n 'unknown',\n];\n\nexport const getComponentNodesFilterSetupStateValue = createSelector(\n [getComponentNodesFilterStatePredicate],\n (predicate) => {\n if (!predicate) {\n return ['all'];\n }\n\n return COMPONENTS_AVAILABLE_STATES.map((state) => ({state}))\n .filter(predicate)\n .map(({state}) => state);\n },\n);\n","import cloneDeep_ from 'lodash/cloneDeep';\nimport every_ from 'lodash/every';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport merge_ from 'lodash/merge';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\nimport union_ from 'lodash/union';\n\nimport {createSelector} from 'reselect';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {UNAWARE} from '../../../../../constants';\nimport {\n FlagState,\n NodeRange,\n TagFilter,\n groupFilterInitialState,\n} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {Node} from '../../../../reducers/components/nodes/nodes/node';\nimport {isRangeFilterDefined} from '../../../../../utils/components/nodes/setup';\n\nimport {RootState} from '../../../../reducers';\n\nexport const getSetupFiltersRaw = (state: RootState) => state.components.nodes.setup;\n\nexport const getNodes = (state: RootState): Array<Node> => state.components.nodes.nodes.nodes;\n\nexport const getComponentNodesFilterStatePredicate = createSelector(\n [getSetupFiltersRaw],\n ({default: {state}}) => {\n if (!state.length || (state.length === 1 && state[0] === 'all')) {\n return undefined;\n }\n const excludes = reduce_(\n state,\n (acc, item) => {\n if (item[0] === '!') {\n acc.add(item.substring(1));\n }\n return acc;\n },\n new Set<string>(),\n );\n\n if (excludes.size) {\n if (excludes.size !== state.length) {\n new Toaster().add({\n name: 'component-nodes-excludes',\n theme: 'danger',\n autoHiding: false,\n title: 'Unexpected behavior',\n content:\n 'Components/Nodes: It is not allowed to have excludes and includes for \"state\" filter at the same time',\n });\n }\n\n excludes.add('all');\n\n return (node: {state: string}) => {\n return !excludes.has(node.state);\n };\n } else {\n const includes = new Set(state);\n return (node: {state: string}) => {\n return includes.has(node.state);\n };\n }\n },\n);\n\nexport const getComponentNodesFiltersSetup = createSelector(\n [getSetupFiltersRaw, getMediumListNoCache],\n (setup, mediumList) => {\n const mediumDefaults = reduce_(\n mediumList,\n (acc, medium) => {\n acc[MEDIUM_COLS_PREFIX + medium] = cloneDeep_(groupFilterInitialState);\n return acc;\n },\n {} as Record<string, NodeRange>,\n );\n return merge_({}, {storage: mediumDefaults}, setup);\n },\n);\n\nexport const getComponentNodesIndexByTag = createSelector([getNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, node) => {\n const {tags} = node;\n forEach_(tags, (tag) => {\n if (acc.has(tag)) {\n acc.get(tag)?.add(node);\n } else {\n acc.set(tag, new Set([node]));\n }\n });\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n return res;\n});\n\nexport const getComponentNodesIndexByRack = createSelector([getNodes], (nodes) => {\n return reduce_(\n nodes,\n (acc, node) => {\n const rack = node.rack ?? UNAWARE;\n if (!acc.has(rack)) {\n acc.set(rack, new Set([node]));\n } else {\n acc.get(rack)?.add(node);\n }\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n});\n\nconst PropertiesByPredicate = {\n physicalHost: ['physicalHost'],\n tags: ['tags'],\n state: ['state'],\n rack: ['rack'],\n banned: ['banned'],\n decommissioned: ['decommissioned'],\n full: ['full'],\n alertCount: ['alertCount'],\n disableJobs: ['disableJobs'],\n disableWriteSession: ['disableWriteSession'],\n disableTabletCells: ['disableTabletCells'],\n sessions: ['sessions'],\n chunks: ['chunks'],\n spaceUsed: ['spaceUsed'],\n spaceTotal: ['spaceTotal'],\n blobSession: ['memory'],\n blockCache: ['memory'],\n chunkBlockMeta: ['memory'],\n chunkMeta: ['memory'],\n footprint: ['memory'],\n query: ['memory'],\n systemJobs: ['memory'],\n versionedChunkMeta: ['memory'],\n tabletDynamicUsed: ['memory'],\n tabletDynamicTotal: ['memory'],\n tabletStaticUsed: ['memory'],\n tabletStaticTotal: ['memory'],\n userJobsUsed: ['memory'],\n userJobsTotal: ['memory'],\n userSlotsUsed: ['userSlots'],\n userSlotsTotal: ['userSlots'],\n sealSlotsUsed: ['sealSlots'],\n sealSlotsTotal: ['sealSlots'],\n repairSlotsUsed: ['repairSlots'],\n repairSlotsTotal: ['repairSlots'],\n removalSlotsUsed: ['removalSlots'],\n removalSlotsTotal: ['removalSlots'],\n replicationSlotsUsed: ['replicationSlots'],\n replicationSlotsTotal: ['replicationSlots'],\n all: ['tabletSlots'],\n none: ['tabletSlots'],\n leading: ['tabletSlots'],\n following: ['tabletSlots'],\n followerRecovery: ['tabletSlots'],\n leaderRecovery: ['tabletSlots'],\n stopped: ['tabletSlots'],\n elections: ['tabletSlots'],\n staticUsed: ['tabletStaticMemory'],\n staticTotal: ['tabletStaticMemory'],\n dynamicUsed: ['tabletDynamicMemory'],\n dynamicTotal: ['tabletDynamicMemory'],\n} as const;\n\ntype NodeWithProps<T extends keyof typeof PropertiesByPredicate> = Pick<\n Node,\n (typeof PropertiesByPredicate)[T][number]\n>;\n\ntype Predicates = {\n [P in keyof typeof PropertiesByPredicate]:\n | false\n | undefined\n | ((node: NodeWithProps<P>) => boolean);\n};\n\nconst getRackPredicate = createSelector(\n [getSetupFiltersRaw, getComponentNodesIndexByRack],\n (setupFilters, nodesByRack) => {\n const {rack} = setupFilters.default;\n if ('string' !== typeof rack && rack.selected?.[0] === UNAWARE) {\n return ({rack}: {rack?: string}) => rack === undefined;\n }\n return createNodeTagPredicate<'rack'>(setupFilters.default.rack, nodesByRack, (node) => [\n node.rack,\n ]);\n },\n);\n\nconst getFilterPredicatesObject = createSelector(\n [\n getSetupFiltersRaw,\n getComponentNodesIndexByTag,\n getRackPredicate,\n getComponentNodesFilterStatePredicate,\n ],\n (setupFilters, nodesByTags, rackPredicate, statePredicate) => {\n const predicates: Predicates = {\n // filter by default\n physicalHost:\n Boolean(setupFilters.default.physicalHost) &&\n ((node) => {\n return -1 !== node.physicalHost?.indexOf(setupFilters.default.physicalHost);\n }),\n tags: createNodeTagPredicate<'tags'>(\n setupFilters.default.tag,\n nodesByTags,\n (node) => node.tags,\n ),\n state: statePredicate,\n rack: rackPredicate,\n\n banned: createFlagPredicate('banned', setupFilters.default.banned),\n decommissioned: createFlagPredicate(\n 'decommissioned',\n setupFilters.default.decommissioned,\n ),\n full: createFlagPredicate('full', setupFilters.default.full),\n alertCount: createAlertsFlagPredicate(setupFilters.default.alertCount),\n\n disableJobs: createAttributeStatePredicate(\n 'disableJobs',\n setupFilters.default.schedulerJobs,\n ),\n disableWriteSession: createAttributeStatePredicate(\n 'disableWriteSession',\n setupFilters.default.writeSessions,\n ),\n disableTabletCells: createAttributeStatePredicate(\n 'disableTabletCells',\n setupFilters.default.tabletCells,\n ),\n\n // filter by storage\n sessions: createRangePredicate(\n setupFilters.storage.sessions,\n 'sessions',\n (node) => node,\n ),\n chunks: createRangePredicate(setupFilters.storage.chunks, 'chunks', (node) => node),\n spaceUsed: createRangePredicate(\n setupFilters.storage.spaceUsed,\n 'spaceUsed',\n (node) => node,\n ),\n spaceTotal: createRangePredicate(\n setupFilters.storage.spaceTotal,\n 'spaceTotal',\n (node) => node,\n ),\n\n // filter by cpu\n blobSession: createRangePredicate(\n setupFilters.cpu.blobSession,\n 'used',\n (node) => node.memory.blob_session,\n ),\n blockCache: createRangePredicate(\n setupFilters.cpu.blockCache,\n 'used',\n (node) => node.memory.block_cache,\n ),\n chunkBlockMeta: createRangePredicate(\n setupFilters.cpu.chunkBlockMeta,\n 'used',\n (node) => node.memory.chunk_block_meta,\n ),\n chunkMeta: createRangePredicate(\n setupFilters.cpu.chunkMeta,\n 'used',\n (node) => node.memory.chunk_meta,\n ),\n footprint: createRangePredicate(\n setupFilters.cpu.footprint,\n 'used',\n (node) => node.memory.footprint,\n ),\n query: createRangePredicate(\n setupFilters.cpu.query,\n 'used',\n (node) => node.memory.query,\n ),\n systemJobs: createRangePredicate(\n setupFilters.cpu.systemJobs,\n 'used',\n (node) => node.memory.system_jobs,\n ),\n versionedChunkMeta: createRangePredicate(\n setupFilters.cpu.versionedChunkMeta,\n 'used',\n (node) => node.memory.versioned_chunk_meta,\n ),\n\n tabletDynamicUsed: createRangePredicate(\n setupFilters.cpu.tabletDynamicUsed,\n 'used',\n (node) => node.memory.tablet_dynamic,\n ),\n tabletDynamicTotal: createRangePredicate(\n setupFilters.cpu.tabletDynamicTotal,\n 'limit',\n (node) => node.memory.tablet_dynamic,\n ),\n\n tabletStaticUsed: createRangePredicate(\n setupFilters.cpu.tabletStaticUsed,\n 'used',\n (node) => node.memory.tablet_static,\n ),\n tabletStaticTotal: createRangePredicate(\n setupFilters.cpu.tabletStaticTotal,\n 'limit',\n (node) => node.memory.tablet_static,\n ),\n\n userJobsUsed: createRangePredicate(\n setupFilters.cpu.userJobsUsed,\n 'used',\n (node) => node.memory.user_jobs,\n ),\n userJobsTotal: createRangePredicate(\n setupFilters.cpu.userJobsTotal,\n 'limit',\n (node) => node.memory.user_jobs,\n ),\n\n // filter by resources\n userSlotsUsed: createRangePredicate(\n setupFilters.resources.userSlotsUsed,\n 'usage',\n (node) => node.userSlots,\n ),\n userSlotsTotal: createRangePredicate(\n setupFilters.resources.userSlotsTotal,\n 'limits',\n (node) => node.userSlots,\n ),\n sealSlotsUsed: createRangePredicate(\n setupFilters.resources.sealSlotsUsed,\n 'usage',\n (node) => node.sealSlots,\n ),\n sealSlotsTotal: createRangePredicate(\n setupFilters.resources.sealSlotsTotal,\n 'limits',\n (node) => node.sealSlots,\n ),\n repairSlotsUsed: createRangePredicate(\n setupFilters.resources.repairSlotsUsed,\n 'usage',\n (node) => node.repairSlots,\n ),\n repairSlotsTotal: createRangePredicate(\n setupFilters.resources.repairSlotsTotal,\n 'limits',\n (node) => node.repairSlots,\n ),\n removalSlotsUsed: createRangePredicate(\n setupFilters.resources.removalSlotsUsed,\n 'usage',\n (node) => node.removalSlots,\n ),\n removalSlotsTotal: createRangePredicate(\n setupFilters.resources.removalSlotsTotal,\n 'limits',\n (node) => node.removalSlots,\n ),\n replicationSlotsUsed: createRangePredicate(\n setupFilters.resources.replicationSlotsUsed,\n 'usage',\n (node) => node.replicationSlots,\n ),\n replicationSlotsTotal: createRangePredicate(\n setupFilters.resources.replicationSlotsTotal,\n 'limits',\n (node) => node.replicationSlots,\n ),\n\n // filter by tablets\n all: createRangePredicate(\n setupFilters.tablets.all,\n 'all',\n (node) => node.tabletSlots,\n true,\n ),\n none: createRangePredicate(\n setupFilters.tablets.none,\n 'none',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leading: createRangePredicate(\n setupFilters.tablets.leading,\n 'leading',\n (node) => node.tabletSlots.byState,\n true,\n ),\n following: createRangePredicate(\n setupFilters.tablets.following,\n 'following',\n (node) => node.tabletSlots.byState,\n true,\n ),\n followerRecovery: createRangePredicate(\n setupFilters.tablets.followerRecovery,\n 'follower_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leaderRecovery: createRangePredicate(\n setupFilters.tablets.leaderRecovery,\n 'leader_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n stopped: createRangePredicate(\n setupFilters.tablets.stopped,\n 'stopped',\n (node) => node.tabletSlots.byState,\n true,\n ),\n elections: createRangePredicate(\n setupFilters.tablets.elections,\n 'elections',\n (node) => node.tabletSlots.byState,\n true,\n ),\n\n staticUsed: createRangePredicate(\n setupFilters.tablets.staticUsed,\n 'used',\n (node) => node.tabletStaticMemory,\n ),\n staticTotal: createRangePredicate(\n setupFilters.tablets.staticTotal,\n 'limit',\n (node) => node.tabletStaticMemory,\n ),\n dynamicUsed: createRangePredicate(\n setupFilters.tablets.dynamicUsed,\n 'used',\n (node) => node.tabletDynamicMemory,\n ),\n dynamicTotal: createRangePredicate(\n setupFilters.tablets.dynamicTotal,\n 'limit',\n (node) => node.tabletDynamicMemory,\n ),\n };\n return predicates;\n },\n);\n\nexport const getComponentNodesFiltersCount = createSelector(\n [getFilterPredicatesObject],\n (filters) => {\n return reduce_(\n filters,\n (acc, predicate) => {\n return predicate ? acc + 1 : acc;\n },\n 0,\n );\n },\n);\n\nexport const getComponentNodesFilterPredicates = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n return filter_(filterPredicatesObject, (p) => p) as Array<(node: Node) => boolean>;\n },\n);\n\nexport const getPropertiesRequiredForFilters = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n const picked = values_(\n pickBy_(\n PropertiesByPredicate,\n (_value, key) => filterPredicatesObject[key as keyof typeof PropertiesByPredicate],\n ),\n ) as any;\n\n return union_(...picked) as Array<ValueOf<typeof PropertiesByPredicate>[number]>;\n },\n);\n\nfunction createNodeTagPredicate<K extends keyof typeof PropertiesByPredicate>(\n tagFilter: string | TagFilter,\n nodesByTags: Map<string, Set<NodeWithProps<K>>>,\n getTags: (node: NodeWithProps<K>) => Array<string>,\n): undefined | ((node: NodeWithProps<K>) => boolean) {\n if (!tagFilter) {\n return undefined;\n }\n\n if (typeof tagFilter === 'string') {\n return (node) => {\n return some_(\n getTags(node),\n (item) => -1 !== item?.toLowerCase().indexOf(tagFilter.toLowerCase()),\n );\n };\n }\n\n const {mode, useRegexp, filter, selected} = tagFilter;\n\n const selectedItems = selected || [];\n\n switch (mode) {\n case 'union': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return some_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n case 'intersection': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return every_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n default: {\n if (!filter) {\n return undefined;\n }\n if (!useRegexp) {\n return createNodeTagPredicate(filter, new Map(), getTags);\n }\n try {\n const re = new RegExp(filter);\n return (node) => {\n return some_(getTags(node), (tag) => re.test(tag));\n };\n } catch (e) {\n return () => false;\n }\n }\n }\n}\n\nfunction createFlagPredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n flag: FlagState,\n) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return flag === 'disabled' ? !node[key] : Boolean(node[key]);\n };\n}\n\nfunction createAttributeStatePredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n value: FlagState,\n) {\n if (value === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return value === 'disabled' ? Boolean(node[key]) : !node[key];\n };\n}\n\nfunction createAlertsFlagPredicate(flag: FlagState) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: Pick<Node, 'alertCount'>) => {\n if (flag === 'disabled') {\n return node.alertCount === 0;\n }\n\n return node.alertCount! > 0;\n };\n}\n\nfunction createRangePredicate<T extends keyof typeof PropertiesByPredicate, U>(\n range: NodeRange,\n key: keyof U,\n get: (node: NodeWithProps<T>) => U,\n asArray?: boolean,\n) {\n if (!isRangeFilterDefined(range)) {\n return undefined;\n }\n\n const {from, to} = range;\n\n return (node: NodeWithProps<T>) => {\n const value: any = get(node)[key];\n\n const nodeValue = asArray ? value.length : value;\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n };\n}\n","import {createSelector} from 'reselect';\n\nimport {getSettingSystemNodesNodeType} from '../../../store/selectors/settings-ts';\nimport {NODE_TYPE} from '../../../../shared/constants/system';\n\nexport const getSystemNodesNodeTypesToLoad = createSelector(\n [getSettingSystemNodesNodeType],\n (nodeTypes) => {\n const valueSet = new Set(nodeTypes);\n if (valueSet.has(NODE_TYPE.ALL_NODES)) {\n return [NODE_TYPE.ALL_NODES];\n }\n\n return [...valueSet.values()];\n },\n);\n","import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\nexport {isSupportedSelector} from './support';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import {createSelector} from 'reselect';\nimport map_ from 'lodash/map';\nimport isEmpty_ from 'lodash/isEmpty';\nimport every_ from 'lodash/every';\n\n// @ts-ignore\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nimport {RootState} from '../../../store/reducers';\n\nexport const _LOCAL_ARCADIA_VERSION = '(development)';\n\nfunction versionToArray(version: string, build?: string) {\n const VERSION_DELIMITER = '.';\n const VERSION_CHUNK_COUNT = 3;\n const VERSION_CHUNK_PLACEHOLDER = 0;\n\n const versionArray: Array<string | number> = map_(\n version.split(VERSION_DELIMITER),\n (subversion) => {\n return parseInt(subversion, 10);\n },\n );\n\n while (versionArray.length < VERSION_CHUNK_COUNT) {\n versionArray.push(VERSION_CHUNK_PLACEHOLDER);\n }\n\n if (build) {\n versionArray.push(build);\n }\n\n return versionArray;\n}\n\n/**\n * Returns true if versionA >= versionB and comparator === 'greater'\n * Returns true if versionA < versionB and comparator === 'smaller'\n * @param {String} comparator - 'greater', 'smaller'\n * @param {String} versionA\n * @param {String} versionB\n * @returns {boolean}\n */\nexport function _compareVersions(\n comparator: 'greater' | 'smaller',\n versionA: string,\n versionB: string,\n) {\n if (versionA === versionB) {\n return comparator === 'greater';\n }\n\n return comparator === 'greater'\n ? hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) >= 0\n : hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) < 0;\n}\n\n/**\n * Determines wheter a given version belongs to a versionInterval [a, b)\n * Left end included, right end excluded (intuitive limitations - features are supported starting from a specific build)\n * @param {String} version\n * @param {String|Object} versionInterval\n * @returns {boolean}\n */\nexport function _versionInInterval(\n version: string,\n versionInterval: MajorMinorPatch | MajorMinorPatchRange | typeof _LOCAL_ARCADIA_VERSION,\n) {\n let supported;\n\n if (typeof versionInterval === 'object') {\n supported = Object.keys(versionInterval).every((comparator) => {\n if (!(comparator === 'greater' || comparator === 'smaller')) {\n throw new Error(\n 'thor.support: feature description has unknown comparator \"' +\n comparator +\n '\",' +\n ' cannot check support.',\n );\n }\n const key = comparator as keyof typeof versionInterval;\n return _compareVersions(comparator, version, versionInterval[key]!);\n });\n } else {\n supported = _compareVersions('greater', version, versionInterval);\n }\n\n return supported;\n}\n\nfunction getVersionAndBuild(version?: string): [string, string | undefined] | undefined {\n const parsedVersion = version?.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n let parsedBuild;\n\n if (parsedVersion) {\n const majorMinorPatch = parsedVersion[0];\n parsedBuild = version?.substring(parsedVersion.length);\n\n return [majorMinorPatch, parsedBuild];\n }\n return undefined;\n}\n\nconst getRawProxyVersion = (state: RootState) => state.global.version;\nconst getRawSchedulerVersion = (state: RootState) => state.global.schedulerVersion;\nconst getRawMasterVersion = (state: RootState) => state.global.masterVersion;\n\ntype MajorMinorPatch = `${number}.${number}.${number}`;\ntype MajorMinorPatchRange = {greater?: MajorMinorPatch; smaller?: MajorMinorPatch};\n\nexport type RawVersion = `${MajorMinorPatch}-${string}`;\n\nexport type Versions<T> = {proxy?: T | typeof _LOCAL_ARCADIA_VERSION; scheduler?: T; master?: T};\n\ntype FeatureVersions = Versions<MajorMinorPatch | Array<MajorMinorPatchRange>>;\ntype RawFeatureVersions = Versions<RawVersion>;\n\nconst FEATURES = {\n fieldsFilter: {\n scheduler: '22.1.9091155',\n } as FeatureVersions,\n effectiveExpiration: {\n master: '23.1.11146445',\n } as FeatureVersions,\n clusterNodeVersion: {\n proxy: '23.2.0',\n } as FeatureVersions,\n nodeMaintenanceApi: {\n proxy: '23.1.11106567',\n } as FeatureVersions,\n schedulingChildrenByPool: {\n scheduler: '23.1.11146742',\n } as FeatureVersions,\n};\n\nexport function _isFeatureSupported<T extends Record<string, FeatureVersions>>(\n rawVersions: RawFeatureVersions,\n features: T,\n) {\n return (featureName: keyof T) => {\n function failFeature(message: string) {\n console.warn(`thor.support \"${featureName as string}\" ${message}`);\n return false;\n }\n\n const featureVersions: FeatureVersions = features[featureName];\n\n if (!featureVersions) {\n return failFeature(`${featureName as string} is unknown, cannot check support.`);\n }\n\n if (isEmpty_(featureVersions)) {\n return failFeature('feature component version is unknown, cannot check support.');\n }\n\n return every_(featureVersions, (value, k) => {\n const key = k as keyof typeof rawVersions;\n const rawVersion = rawVersions[key];\n\n // yt-local in arcadia is meant to be of the freshest version\n if (rawVersion === _LOCAL_ARCADIA_VERSION) {\n return true;\n }\n\n if (!value) {\n return failFeature(`feature version of '${key}' is unknown, connot check support`);\n }\n\n const buildVersion = getVersionAndBuild(rawVersion);\n if (!buildVersion) {\n return failFeature(\n `version of '${key}' component is unknown, cannot check support.`,\n );\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => _versionInInterval(buildVersion[0], item));\n } else {\n return _versionInInterval(buildVersion[0], value);\n }\n });\n };\n}\n\nexport const isSupportedSelector = createSelector(\n [getRawProxyVersion, getRawSchedulerVersion, getRawMasterVersion],\n (proxy, scheduler, master) => _isFeatureSupported({proxy, scheduler, master}, FEATURES),\n);\n\nexport const isSupportedEffectiveExpiration = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('effectiveExpiration');\n },\n);\n\nexport const isSupportedClusterNodeForVersions = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('clusterNodeVersion');\n },\n);\n\nexport const isSupportedNodeMaintenanceApi = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('nodeMaintenanceApi');\n },\n);\n\nexport const isSupportedSchedulingChildrenByPool = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('schedulingChildrenByPool');\n },\n);\n","import {AnyAction} from 'redux';\nimport {ThunkDispatch} from 'redux-thunk';\nimport {RootState} from './reducers';\nimport {useDispatch} from 'react-redux';\n\nexport type AppThunkDispatch<T extends AnyAction> = ThunkDispatch<RootState, any, T>;\n\nexport const useThunkDispatch = () => useDispatch<AppThunkDispatch<AnyAction>>();\n","import {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../constants/components/nodes/nodes';\n\ninterface Node {\n cell_id: string;\n peer_id: string;\n state: string;\n}\n\nexport const nodeTableProps = {\n size: 's',\n virtual: false,\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_NODE_TABLE_ID,\n columns: {\n items: {\n cell_id: {\n get(node: Node) {\n return node.cell_id;\n },\n sort: true,\n align: 'left',\n caption: 'Cell ID',\n },\n peer_id: {\n sort: true,\n get(node: Node) {\n return node.peer_id;\n },\n align: 'right',\n caption: 'Peer ID',\n },\n state: {\n sort: true,\n get(node: Node) {\n return node.state;\n },\n align: 'right',\n },\n },\n sets: {\n default: {\n items: ['cell_id', 'peer_id', 'state'],\n },\n },\n mode: 'default',\n },\n templates: {\n key: 'components/nodes/node',\n },\n};\n\nexport type ComponentsNodesLinkParams = {\n cluster?: string;\n rackFilter?: string;\n rackSelected?: Array<string>;\n banned?: 'enabled';\n decommissioned?: 'enabled';\n alerts?: 'enabled';\n full?: 'enabled';\n state?: 'online' | 'offline' | string;\n nodeTypes?: Array<string>;\n};\n\nexport function makeComponentsNodesLink({\n cluster,\n state,\n rackFilter,\n rackSelected,\n banned,\n decommissioned,\n full,\n alerts,\n nodeTypes,\n}: ComponentsNodesLinkParams) {\n if (!cluster) {\n return '';\n }\n let search = '';\n if (rackFilter) {\n search += `rack=filter-${rackFilter}&`;\n } else if (rackSelected?.length) {\n search += `rack=mode-union,selected-${rackSelected.join('|')}&`;\n }\n if (banned) {\n search += `banned=${banned}&`;\n }\n if (state) {\n search += `state=${state}&`;\n }\n if (decommissioned) {\n search += `decommissioned=${decommissioned}&`;\n }\n if (alerts) {\n search += `alerts=${alerts}&`;\n }\n if (full) {\n search += `full=${full}&`;\n }\n if (nodeTypes?.length) {\n search += `nodeType=${nodeTypes?.join(',')}&`;\n }\n return `/${cluster}/components/nodes?${search}`;\n}\n","import {MEDIUM_COLS_PREFIX} from '../../../constants/components/nodes/nodes';\n\nimport forEach_ from 'lodash/forEach';\n\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodeRange,\n NodesSetupState,\n} from '../../../store/reducers/components/nodes/setup/setup';\nimport type {FIX_MY_TYPE} from '../../../types';\n\nconst isCorrectRange = (\n node: Node['IOWeight'] = {},\n {from, to}: NodeRange,\n key: FIX_MY_TYPE,\n isArray = false,\n) => {\n if (!node[key]) {\n return from.value === null && to.value === null;\n }\n\n const nodeValue = isArray ? (node[key] as FIX_MY_TYPE).length : node[key];\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n};\n\nexport function createMediumsPredicates(setupFilters: NodesSetupState, mediumList: FIX_MY_TYPE) {\n const {storage} = setupFilters;\n const predicates = [] as Array<(node: Pick<Node, 'IOWeight'>) => boolean>;\n forEach_(mediumList, (medium) => {\n const fromTo =\n storage[(MEDIUM_COLS_PREFIX + medium) as FIX_MY_TYPE as keyof typeof storage];\n if (isRangeFilterDefined(fromTo)) {\n predicates.push((node: Pick<Node, 'IOWeight'>) =>\n isCorrectRange(node.IOWeight, fromTo, medium),\n );\n }\n });\n return predicates;\n}\n\nexport function isRangeFilterDefined({from, to}: NodeRange) {\n return from.value !== null || to.value !== null;\n}\n"],"names":["AttributesButton","_ref","_ref$view","view","_ref$size","size","rest","_objectWithoutProperties","_excluded","_jsx","Button","_objectSpread","children","Icon","awesome","ChartLink","props","className","url","title","theme","hideIcon","face","wrapContent","icon","content","_jsxs","React","Link","target","b","block","headingCN","CollapsibleSectionStateLess","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","toggle","onToggle","collapsed","_createClass","key","value","_this$props","this","name","overview","marginDirection","ErrorBoundary","margin","clickable","onClick","Component","CollapsibleSection","_React$useState","_React$useState2","_slicedToArray","setCollapsed","onChange","defaultProps","cn","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","order","allowUnordered","withUndefined","nextSortOrderValue","_this$props2","label","hidden","renderText","text","settings","undefined","mix","elem","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","printColumnAsTimeDurationWithMs","item","columnName","column","getColumn","hammer","format","get","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","error","_typeof","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","wrapRenderMethods","ROLE_THEME","default","control","data","STATE_THEME","online","offline","NodeColumnState","_STATE_THEME$state","state","FirstUppercase","Label","type","NodeColumnBanned","_ref2","banned","StatusBlock","NodeColumnRole","_ref3","role","Address","NodeColumnText","_ref4","ClipboardButton","ClickableId","_ref5","allowTooltip","_ref5$format","v","ClickableText","color","Tooltip","MemoryProgress","progress","memoryText","memoryData","Progress","stack","category","_category$rawData","_category$rawData2","rawDataUsed","rawData","used","rawDataLimit","limit","rawDataLimitIsNumber","style","backgroundColor","_this2","map_","renderItem","renderPopupContent","disableInline","renderProgress","withVisible","Version","version","handleShow","handleClose","visible","SimpleModal","onCancel","onOutsideClick","Error","renderErrorVersion","renderVersion","NodeActions","handleEditClick","node","showNodeMaintenance","address","host","component","cluster","_UIFactory$getCompone","UIFactory","getComponentsNodeDashboardUrl","ClickableAttributesButton","path","withTooltip","tooltipProps","placement","mapDispatchToProps","connect","getCluster","NodesColumnHeader","_props$options","_column$column","dispatch","useDispatch","sortState","useSelector","getTables","COMPONENTS_NODES_TABLE_ID","oldSortStateToOrderType","options","find","field","ColumnHeader","onSort","_props$options2","colInfo","toggleColumnSortOrder","tableId","PropertiesByColumn","actions","alert_count","chunks","cpu","cpu_limit","cpu_usage","data_center","decommissioned","elections","elections_chaos","follower_recovery","follower_recovery_chaos","following","following_chaos","full","gpu","gpu_usage","gpu_limit","io_weight","last_seen","leader_recovery","leader_recovery_chaos","leading","leading_chaos","locations","memory_total","memory","memory_limit","memory_usage","network","network_usage","network_limit","none","none_chaos","physical_host","flavors","rack","removal_slots","removal_slots_usage","removal_slots_limit","repair_slots","repair_slots_usage","repair_slots_limit","replication_slots","replication_slots_usage","replication_slots_limit","scheduler_jobs","seal_slots","seal_slots_usage","seal_slots_limit","sessions","space_limit","space_usage","space","stopped","stopped_chaos","system_tags","tablet_cells","tablet_memory_dynamic","tablet_memory_dynamic_usage","tablet_memory_dynamic_limit","tablet_memory_static","tablet_memory_static_usage","tablet_memory_static_limit","tablet_memory","tablet_slots","user_slots","user_slots_usage","user_slots_limit","user_tags","write_sessions","nodesTableProps","virtual","virtualType","cssHover","striped","computeKey","columns","items","sort","align","physicalHost","compareFn","compareArraysBySizeThenByItems","dataCenter","caption","userTags","_node$userTags","systemTags","allowedOrderTypes","DESC_ASC_UNORDERED","alertCount","disableJobs","disableWriteSession","disableTabletCells","lastSeenTime","spaceProgress","renderHeader","sortWithUndefined","spaceTotal","spaceUsed","enabledLocations","cpuProgress","_node$cpu","_node$cpu2","usage","_node$gpu","_node$gpu2","_node$gpu3","memoryProgress","memoryTotal","networkProgress","hiddne","repairSlotsProgress","_ref6","repairSlots","limits","removalSlotsProgress","_ref7","removalSlots","replicationSlotsProgress","_ref8","replicationSlots","sealSlotsProgress","_ref9","sealSlots","userSlotsProgress","_ref10","userSlots","tabletSlots","raw","reduce_","sum","slot","_node$tabletSlots","byState","_node$tabletSlots2","makeCaptionProps","_node$chaosSlots","chaosSlots","_node$chaosSlots2","_node$tabletSlots3","_node$tabletSlots4","_node$chaosSlots3","_node$chaosSlots4","_node$tabletSlots5","_node$tabletSlots6","_node$chaosSlots5","_node$chaosSlots6","_node$tabletSlots7","_node$tabletSlots8","_node$chaosSlots7","_node$chaosSlots8","_node$tabletSlots9","_node$chaosSlots9","_node$tabletSlots10","_node$tabletSlots11","_node$chaosSlots10","_node$chaosSlots11","_node$tabletSlots12","_node$tabletSlots13","_node$chaosSlots12","_node$chaosSlots13","group","static","tabletStaticMemory","static_usage","static_limit","dynamic","tabletDynamicMemory","dynamic_usage","dynamic_limit","set","IOWeight","cache","ssd_blobs","ssd_journals","sets","storage","cpu_and_memory","resources","tablets","chaos_slots","custom","onMemoryProgressMouseEnter","onMemoryProgressMouseLeave","defaultColumns","renderTags","tags","themes","flexType","TagsContainer","tag","index","_ref11","_ref11$flexType","inline","NODES_TABLE_TEMPLATES","startsWith","mediumName","slice","IO_WEIGHT_PREFIX","Host","renderLabel","_item$dataCenter","toUpperCase","spaceText","progressText","cpuText","_item$gpu","_item$gpu2","memoryTotalText","networkText","statuses","sortBy_","keys_","_TABLET_SLOTS$state","TABLET_SLOTS","_item$tabletSlots","_item$chaosSlots","_item$tabletSlots2","_item$chaosSlots2","_item$tabletSlots3","_item$chaosSlots3","_item$tabletSlots4","_item$chaosSlots4","_item$tabletSlots5","_item$chaosSlots5","_item$tabletSlots6","_item$chaosSlots6","_item$tabletSlots7","_item$chaosSlots7","getNodeTablesProps","mediumList","allMediums","acc","res","merge_","groupHeaderStyle","width","NodeTypeSelector","onUpdate","Select","multiple","NODE_TYPE_ITEMS","newVal","newValue","updateListWithAll","NODE_TYPE","ALL_NODES","SystemNodeTypeSelector","getSystemNodesNodeTypesToLoad","setSettingSystemNodesNodeType","setSysmetNodesNodeType","ComponentsNodeTypeSelector","getComponentsNodesNodeTypes","componentsNodesSetNodeTypes","makeNodePath","applyMaintenance","resourceLimitsOverrides","getState","requests","push","prepareSetCommandForBatch","forEach_","isNaN","$value","$type","input_format","$attributes","annotate_with_types","t","command","comment","isMaintenanceApiAllowedForComponent","parameters","mine","_toConsumableArray","c","isAdd","input","makeObsoleteMaintenanceRequests","reloadNodeData","updateComponentsNode","getProxies","wrapApiPromiseByToaster","ytApiV3Id","executeBatch","YTApiId","addMaintenance","toasterName","isBatch","skipSuccessToast","errorTitle","then","params","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","loadNodeMaintenanceData","sent","abrupt","NODE_MAINTENANCE_PARTIAL","stop","_x","_dispatch","user","getCurrentUserName","allowMaintenanceRequests","maintenanceRequests","attributes","errorContent","maintenance","maintenance_requests","_maintenance$item$typ","_dst$comment","dst","othersComment","timestamp","assign","ban","ban_message","decommission","decommission_message","disable_scheduler_jobs","disable_tablet_cells","disable_write_sessions","resourceLimits","resource_limits","resource_limits_overrides","closeNodeMaintenanceModal","NODE_MAINTENANCE_RESET","isAllowedMaintenanceApiNodes","isAllowedMaintenanceApiProxies","COMPONENTS","NAMESPACES","TEMPLATES","SettingName","changeContentMode","contentMode","CHANGE_CONTENT_MODE","updateNodeCanceler","CancelHelper","getNodes","nodeTypes","GET_NODES","REQUEST","preparedAttrs","prepareAttributes","map","USE_CACHE","USE_MAX_SIZE","componentsClusterNodes","cancellation","removeAllAndSave","_step","_splitBatchResults","splitBatchResults","results","outputs","output","ypath","getValue","nodes","collectedItems","Set","_iterator","_createForOfIteratorHelper","s","n","done","_step2","_iterator2","has","err","e","f","SUCCESS","code","yt","CANCELLED","FAILURE","componentsUpdateNodeData","Node","ATTRIBUTES","COMPONENTS_NODES_UPDATE_NODE","changeHostFilter","hostFilter","CHANGE_HOST_FILTER","trim","CHANGE_NODE_TYPE","applyPreset","setup","APPLY_SETUP","savePreset","prevTemplates","getTemplates","setSetting","removePreset","omit_","handleColumnsChange","selectedColumns","SELECTED_COLUMNS","getComponentsNodesFilterOptions","compact_","useTagsFromAttributes","useRacksFromAttributes","GET_NODES_FILTER_OPTIONS","list","join","racks","filterOptionsTags","filterOptionsRacks","Proxy","dead","effectiveState","getBoolean","banMessage","liveness","loadAverage","updatedAt","networkLoad","GET_PROXIES","PROXY_TYPE","HTTP","Promise","all","axios","systemProxies","cypressData","proxies","proxyData","cypressAttributes","getAttributes","componentsRpcProxies","componentGetRpcProxies","proxiesMap","alive","Boolean","meta","PROXIES_CHANGE_FILTERS","changeStateFilter","stateFilter","changeRoleFilter","roleFilter","changeBannedFilter","bannedFilter","resetProxyState","getNodeMaintenanceModalState","components","nodeMaintenanceModal","getNodeMaintenanceModalInitialValues","createSelector","k","isSupportedNodeMaintenanceApi","getClusterUiConfig","isSupported","uiConfig","enable_maintenance_api_nodes","enable_maintenance_api_proxies","getMediumsPredicates","getComponentNodesFiltersSetup","getMediumListNoCache","createMediumsPredicates","getPropertiesRequiredForMediums","mediumsPredicates","getFilteredByHost","toLowerCase","hostFilters","split","filter_","some_","_node$host","getFilteredNodes","getComponentNodesFilterPredicates","predicates","predicatesArray","predicate","concatByAnd","getVisibleNodes","tables","utils","getComponentNodesTableProps","getVisibleColumns","getSelectedColumns","customColumns","getPropertiesRequiredForRender","visibleColumns","union_","x","getRequiredAttributes","getPropertiesRequiredForFilters","propertiesRequiredForRender","propertiesRequiredForFilters","propertiesRequiredForMediums","allRequiredProperties","AttributesByProperty","indexOf","getComponentNodesTags","getComponentNodesIndexByTag","useFromAttrs","fetchedTags","nodesByTag","getComponentNodesRacks","getComponentNodesIndexByRack","fetchedRacks","nodesByRack","types","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getComponentNodesFilterStatePredicate","filter","getSetupFiltersRaw","excludes","substring","Toaster","autoHiding","includes","mediumDefaults","medium","MEDIUM_COLS_PREFIX","cloneDeep_","groupFilterInitialState","_acc$get","Map","_node$rack","_acc$get2","UNAWARE","PropertiesByPredicate","blobSession","blockCache","chunkBlockMeta","chunkMeta","footprint","query","systemJobs","versionedChunkMeta","tabletDynamicUsed","tabletDynamicTotal","tabletStaticUsed","tabletStaticTotal","userJobsUsed","userJobsTotal","userSlotsUsed","userSlotsTotal","sealSlotsUsed","sealSlotsTotal","repairSlotsUsed","repairSlotsTotal","removalSlotsUsed","removalSlotsTotal","replicationSlotsUsed","replicationSlotsTotal","followerRecovery","leaderRecovery","staticUsed","staticTotal","dynamicUsed","dynamicTotal","getRackPredicate","setupFilters","_rack$selected","selected","createNodeTagPredicate","getFilterPredicatesObject","nodesByTags","rackPredicate","statePredicate","_node$physicalHost","createFlagPredicate","createAlertsFlagPredicate","createAttributeStatePredicate","schedulerJobs","writeSessions","tabletCells","createRangePredicate","blob_session","block_cache","chunk_block_meta","chunk_meta","system_jobs","versioned_chunk_meta","tablet_dynamic","tablet_static","user_jobs","getComponentNodesFiltersCount","filters","filterPredicatesObject","p","picked","values_","pickBy_","_value","tagFilter","getTags","mode","useRegexp","selectedItems","tagName","_nodesByTags$get","every_","_nodesByTags$get2","re","RegExp","test","flag","range","asArray","isRangeFilterDefined","from","to","nodeValue","Infinity","getSettingSystemNodesNodeType","valueSet","values","initialState","getMediumList","global","sortInPredefinedOrder","MediumType","DEFAULT","mediums","getCurrentCluster","versionToArray","build","versionArray","subversion","parseInt","_compareVersions","comparator","versionA","versionB","compareVectors","_versionInInterval","versionInterval","every","FEATURES","fieldsFilter","scheduler","effectiveExpiration","master","clusterNodeVersion","proxy","nodeMaintenanceApi","schedulingChildrenByPool","isSupportedSelector","schedulerVersion","masterVersion","rawVersions","features","featureName","failFeature","message","console","warn","featureVersions","isEmpty_","rawVersion","buildVersion","parsedVersion","match","getVersionAndBuild","isArray","some","isSupportedEffectiveExpiration","isSupportedClusterNodeForVersions","isSupportedSchedulingChildrenByPool","useThunkDispatch","nodeTableProps","COMPONENTS_NODES_NODE_TABLE_ID","cell_id","peer_id","makeComponentsNodesLink","rackFilter","rackSelected","alerts","search","isCorrectRange","fromTo"],"sourceRoot":""}
|