@ytsaurus/ui 1.83.0 → 1.84.0

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.
Files changed (94) hide show
  1. package/dist/public/build/assets-manifest.json +61 -61
  2. package/dist/public/build/css/{2209.ee64dbab.chunk.css → 2209.b618d964.chunk.css} +2 -2
  3. package/dist/public/build/css/2209.b618d964.chunk.css.map +1 -0
  4. package/dist/public/build/css/components.6375c10d.chunk.css +2 -0
  5. package/dist/public/build/css/components.6375c10d.chunk.css.map +1 -0
  6. package/dist/public/build/css/{navigation.d170ba80.chunk.css → navigation.b6f988cd.chunk.css} +2 -2
  7. package/dist/public/build/css/navigation.b6f988cd.chunk.css.map +1 -0
  8. package/dist/public/build/css/{query-tracker.94d91868.chunk.css → query-tracker.7c9d0851.chunk.css} +2 -2
  9. package/dist/public/build/css/{query-tracker.94d91868.chunk.css.map → query-tracker.7c9d0851.chunk.css.map} +1 -1
  10. package/dist/public/build/js/{1604.72f6d465.chunk.js → 1604.7b5c7976.chunk.js} +3 -3
  11. package/dist/public/build/js/1604.7b5c7976.chunk.js.map +1 -0
  12. package/dist/public/build/js/{1983.e3e6d5e8.chunk.js → 1983.034a4de9.chunk.js} +2 -2
  13. package/dist/public/build/js/1983.034a4de9.chunk.js.map +1 -0
  14. package/dist/public/build/js/{3724.f72a2691.chunk.js → 3724.1674ced1.chunk.js} +2 -2
  15. package/dist/public/build/js/3724.1674ced1.chunk.js.map +1 -0
  16. package/dist/public/build/js/3751.147f6dd9.chunk.js +2 -0
  17. package/dist/public/build/js/3751.147f6dd9.chunk.js.map +1 -0
  18. package/dist/public/build/js/4319.3407fde8.chunk.js +3 -0
  19. package/dist/public/build/js/4319.3407fde8.chunk.js.map +1 -0
  20. package/dist/public/build/js/5088.bee0a42a.chunk.js +2 -0
  21. package/dist/public/build/js/5088.bee0a42a.chunk.js.map +1 -0
  22. package/dist/public/build/js/{5653.45eec4e2.chunk.js → 5653.cff8909f.chunk.js} +2 -2
  23. package/dist/public/build/js/5653.cff8909f.chunk.js.map +1 -0
  24. package/dist/public/build/js/{acl.614f12c4.chunk.js → acl.f6256b52.chunk.js} +2 -2
  25. package/dist/public/build/js/{acl.614f12c4.chunk.js.map → acl.f6256b52.chunk.js.map} +1 -1
  26. package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js → app-navigation.e7dd869b.chunk.js} +2 -2
  27. package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js.map → app-navigation.e7dd869b.chunk.js.map} +1 -1
  28. package/dist/public/build/js/cluster-menu.68f5e677.chunk.js +2 -0
  29. package/dist/public/build/js/{cluster-menu.381d4a48.chunk.js.map → cluster-menu.68f5e677.chunk.js.map} +1 -1
  30. package/dist/public/build/js/cluster-page-wrapper.e42322f0.chunk.js +2 -0
  31. package/dist/public/build/js/{cluster-page-wrapper.b70c30d4.chunk.js.map → cluster-page-wrapper.e42322f0.chunk.js.map} +1 -1
  32. package/dist/public/build/js/components.1ea8e03b.chunk.js +2 -0
  33. package/dist/public/build/js/components.1ea8e03b.chunk.js.map +1 -0
  34. package/dist/public/build/js/{dashboard.a63eef8c.chunk.js → dashboard.303faf7e.chunk.js} +2 -2
  35. package/dist/public/build/js/{dashboard.a63eef8c.chunk.js.map → dashboard.303faf7e.chunk.js.map} +1 -1
  36. package/dist/public/build/js/default-subject-link.f30c100a.chunk.js +2 -0
  37. package/dist/public/build/js/default-subject-link.f30c100a.chunk.js.map +1 -0
  38. package/dist/public/build/js/job.47f7b4c0.chunk.js +2 -0
  39. package/dist/public/build/js/job.47f7b4c0.chunk.js.map +1 -0
  40. package/dist/public/build/js/main.4f383c25.js +3 -0
  41. package/dist/public/build/js/main.4f383c25.js.map +1 -0
  42. package/dist/public/build/js/navigation.5512d9c6.chunk.js +2 -0
  43. package/dist/public/build/js/navigation.5512d9c6.chunk.js.map +1 -0
  44. package/dist/public/build/js/odin.96cec50a.chunk.js +2 -0
  45. package/dist/public/build/js/odin.96cec50a.chunk.js.map +1 -0
  46. package/dist/public/build/js/{operations.3535a692.chunk.js → operations.1a486c6e.chunk.js} +2 -2
  47. package/dist/public/build/js/operations.1a486c6e.chunk.js.map +1 -0
  48. package/dist/public/build/js/{query-tracker.d266354f.chunk.js → query-tracker.028a8ccf.chunk.js} +2 -2
  49. package/dist/public/build/js/query-tracker.028a8ccf.chunk.js.map +1 -0
  50. package/dist/public/build/js/{runtime.948c8e30.js → runtime.ad8a9439.js} +2 -2
  51. package/dist/public/build/js/{runtime.948c8e30.js.map → runtime.ad8a9439.js.map} +1 -1
  52. package/dist/public/build/js/{tablet.4e3852cc.chunk.js → tablet.68f185b6.chunk.js} +2 -2
  53. package/dist/public/build/js/{tablet.4e3852cc.chunk.js.map → tablet.68f185b6.chunk.js.map} +1 -1
  54. package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js → yt-df-dialog.bbf72b55.chunk.js} +2 -2
  55. package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js.map → yt-df-dialog.bbf72b55.chunk.js.map} +1 -1
  56. package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js +2 -0
  57. package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js.map +1 -0
  58. package/dist/public/build/manifest.json +56 -56
  59. package/package.json +2 -2
  60. package/dist/public/build/css/2209.ee64dbab.chunk.css.map +0 -1
  61. package/dist/public/build/css/components.fd2fa23a.chunk.css +0 -2
  62. package/dist/public/build/css/components.fd2fa23a.chunk.css.map +0 -1
  63. package/dist/public/build/css/navigation.d170ba80.chunk.css.map +0 -1
  64. package/dist/public/build/js/1604.72f6d465.chunk.js.map +0 -1
  65. package/dist/public/build/js/1983.e3e6d5e8.chunk.js.map +0 -1
  66. package/dist/public/build/js/3724.f72a2691.chunk.js.map +0 -1
  67. package/dist/public/build/js/3745.aa320ee5.chunk.js +0 -2
  68. package/dist/public/build/js/3745.aa320ee5.chunk.js.map +0 -1
  69. package/dist/public/build/js/4319.20f80209.chunk.js +0 -3
  70. package/dist/public/build/js/4319.20f80209.chunk.js.map +0 -1
  71. package/dist/public/build/js/5088.91897d9a.chunk.js +0 -2
  72. package/dist/public/build/js/5088.91897d9a.chunk.js.map +0 -1
  73. package/dist/public/build/js/5653.45eec4e2.chunk.js.map +0 -1
  74. package/dist/public/build/js/cluster-menu.381d4a48.chunk.js +0 -2
  75. package/dist/public/build/js/cluster-page-wrapper.b70c30d4.chunk.js +0 -2
  76. package/dist/public/build/js/components.4b381a1a.chunk.js +0 -2
  77. package/dist/public/build/js/components.4b381a1a.chunk.js.map +0 -1
  78. package/dist/public/build/js/default-subject-link.17448a19.chunk.js +0 -2
  79. package/dist/public/build/js/default-subject-link.17448a19.chunk.js.map +0 -1
  80. package/dist/public/build/js/job.c5cdc8c6.chunk.js +0 -2
  81. package/dist/public/build/js/job.c5cdc8c6.chunk.js.map +0 -1
  82. package/dist/public/build/js/main.03147e02.js +0 -3
  83. package/dist/public/build/js/main.03147e02.js.map +0 -1
  84. package/dist/public/build/js/navigation.1f7a0ea4.chunk.js +0 -2
  85. package/dist/public/build/js/navigation.1f7a0ea4.chunk.js.map +0 -1
  86. package/dist/public/build/js/odin.45cc399f.chunk.js +0 -2
  87. package/dist/public/build/js/odin.45cc399f.chunk.js.map +0 -1
  88. package/dist/public/build/js/operations.3535a692.chunk.js.map +0 -1
  89. package/dist/public/build/js/query-tracker.d266354f.chunk.js.map +0 -1
  90. package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js +0 -2
  91. package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js.map +0 -1
  92. /package/dist/public/build/js/{1604.72f6d465.chunk.js.LICENSE.txt → 1604.7b5c7976.chunk.js.LICENSE.txt} +0 -0
  93. /package/dist/public/build/js/{4319.20f80209.chunk.js.LICENSE.txt → 4319.3407fde8.chunk.js.LICENSE.txt} +0 -0
  94. /package/dist/public/build/js/{main.03147e02.js.LICENSE.txt → main.4f383c25.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/1983.034a4de9.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/ChartLink/ChartLink.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.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.tsx","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/utils/components/nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/setup.ts"],"sourcesContent":["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 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 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 {\n name,\n children,\n size,\n overview,\n className,\n headingClassName,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'}, headingClassName)}>\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', {'right-padding': togglerRightPadding})}\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 headingClassName?: 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 togglerRightPadding?: 'small';\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 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 &nbsp;\n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {getSettingsData} from '../../../../../store/selectors/settings/settings-base';\nimport {RootState} from '../../../../../store/reducers';\n\nimport './MemoryProgress.scss';\n\nconst block = cn('nodes-memory');\n\ntype MemoryProgressProps = {\n // from parent\n memoryText: string;\n memoryData?: Array<MemoryData>;\n};\n\ntype MemoryData = {\n color: string;\n name: string;\n value: number;\n rawData?: {used?: number; limit?: number};\n};\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass MemoryProgress extends React.Component<MemoryProgressProps & ReduxProps> {\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(item: MemoryData) {\n const {showAll} = this.props;\n const rawDataUsed = item.rawData?.used;\n const rawDataLimit = item.rawData?.limit;\n const rawDataLimitIsNumber = typeof rawDataLimit === 'number';\n\n return !showAll && !rawDataUsed ? null : (\n <li key={item.name} className={block('category')}>\n <div className={block('category-legend')}>\n <div\n className={block('category-legend-color')}\n style={{backgroundColor: item.color}}\n />\n <strong className={block('category-legend-title')}>\n {hammer.format['ReadableField'](item.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, (item) => this.renderItem(item))}\n </ul>\n </div>\n )\n );\n }\n\n render() {\n return (\n <Tooltip\n className={block()}\n tooltipContentClassName={block('tooltip-content')}\n content={this.renderPopupContent()}\n placement={'auto'}\n >\n <div>{this.renderProgress()}</div>\n </Tooltip>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n showAll: getSettingsData(state)['global::components::memoryPopupShowAll'],\n };\n};\n\nconst connector = connect(mapStateToProps);\n\nexport default connector(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 &nbsp;\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 &emsp;\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 allowUnordered: colInfo?.allowUnordered,\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 {\n column: 'space',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\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 {\n column: 'cpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\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 {\n column: 'gpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\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 {\n column: 'memory',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\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 {\n column: 'network',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\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 {\n column: 'repair_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\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 {\n column: 'removal_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\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=\"Dynamic 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 &nbsp;\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 <MemoryProgress memoryData={item.memoryData} memoryText={item.memoryText} />;\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, ytApiV4Id} 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 const parameters = {\n component,\n address,\n type,\n comment,\n };\n requests.push(\n command === 'add_maintenance'\n ? {command, parameters}\n : {\n command,\n parameters: {...parameters, mine: true},\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(ytApiV4Id.executeBatch(YTApiId.addMaintenance, {requests}), {\n toasterName: 'edit_node_' + address,\n batchType: 'v4',\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: '', otherComments: '', 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.otherComments += `${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 name = ypath.getValue(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 this.maintenanceRequests = ypath.getValue(data, '/maintenance_requests');\n }\n\n static ATTRIBUTES = [\n 'ban_message',\n 'banned',\n 'liveness',\n 'role',\n 'version',\n 'annotations',\n 'maintenance_requests',\n ];\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().includes(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/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 {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":["ChartLink","props","className","url","title","theme","children","hideIcon","face","wrapContent","icon","_jsx","Icon","awesome","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","size","overview","headingClassName","marginDirection","togglerRightPadding","ErrorBoundary","margin","clickable","onClick","Component","CollapsibleSection","_React$useState","_React$useState2","_slicedToArray","setCollapsed","onChange","_objectSpread","defaultProps","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","_ref","printColumnAsError","error","_typeof","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","wrapRenderMethods","cn","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","view","ClickableId","_ref5","allowTooltip","_ref5$format","v","ClickableText","color","Tooltip","MemoryProgress","_React$Component","progress","memoryText","_this$props$memoryDat","memoryData","Progress","stack","_item$rawData","_item$rawData2","showAll","rawDataUsed","rawData","used","rawDataLimit","limit","rawDataLimitIsNumber","style","backgroundColor","_this2","map_","renderItem","tooltipContentClassName","renderPopupContent","placement","renderProgress","connect","getSettingsData","Version","version","handleShow","handleClose","visible","SimpleModal","onCancel","onOutsideClick","Error","renderErrorVersion","renderVersion","withVisible","NodeActions","handleEditClick","node","showNodeMaintenance","address","host","component","_this$props2","cluster","_UIFactory$getCompone","UIFactory","getComponentsNodeDashboardUrl","ClickableAttributesButton","path","withTooltip","Button","tooltipProps","mapDispatchToProps","getCluster","NodesColumnHeader","_props$options","_column$column","dispatch","useDispatch","sortState","useSelector","getTables","COMPONENTS_NODES_TABLE_ID","order","oldSortStateToOrderType","options","find","field","ColumnHeader","onSort","_props$options2","colInfo","toggleColumnSortOrder","withUndefined","allowUnordered","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","hidden","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","label","_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","ytApiV4Id","executeBatch","YTApiId","addMaintenance","toasterName","batchType","skipSuccessToast","errorTitle","then","params","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","loadNodeMaintenanceData","sent","abrupt","NODE_MAINTENANCE_PARTIAL","stop","_x","_dispatch","user","getCurrentUserName","allowMaintenanceRequests","ytApiV3Id","maintenanceRequests","attributes","errorContent","maintenance","maintenance_requests","_maintenance$item$typ","_dst$comment","dst","otherComments","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","_defineProperty","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","includes","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","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","isSupportedSchedulingChildrenByPool","nodeTableProps","COMPONENTS_NODES_NODE_TABLE_ID","cell_id","peer_id","makeComponentsNodesLink","rackFilter","rackSelected","alerts","search","isCorrectRange","fromTo"],"sourceRoot":""}