@ytsaurus/ui 1.18.0 → 1.19.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 (136) hide show
  1. package/build/cjs/@types/types.d.ts +14 -0
  2. package/build/cjs/ui/components/QuotaEditor/QuotaEditor.js +3 -0
  3. package/build/cjs/ui/components/QuotaEditor/QuotaEditor.js.map +1 -1
  4. package/build/cjs/ui/hocs/components/Modal/withScope.d.ts +4 -55
  5. package/build/cjs/ui/hocs/components/Modal/withScope.js +8 -55
  6. package/build/cjs/ui/hocs/components/Modal/withScope.js.map +1 -1
  7. package/build/cjs/ui/hooks/use-hotkeysjs-scope.d.ts +1 -0
  8. package/build/cjs/ui/hooks/use-hotkeysjs-scope.js +22 -0
  9. package/build/cjs/ui/hooks/use-hotkeysjs-scope.js.map +1 -0
  10. package/build/cjs/ui/pages/navigation/Navigation/PathEditorModal/PathEditorModal.d.ts +1 -55
  11. package/build/cjs/ui/pages/system/Masters/Masters.css +3 -0
  12. package/build/cjs/ui/pages/system/Masters/Masters.css.map +1 -1
  13. package/build/cjs/ui/pages/system/Masters/Masters.d.ts +4 -1
  14. package/build/cjs/ui/pages/system/Masters/Masters.js +22 -3
  15. package/build/cjs/ui/pages/system/Masters/Masters.js.map +1 -1
  16. package/build/cjs/ui/pages/system/Masters/SystemAlert.d.ts +4 -0
  17. package/build/cjs/ui/pages/system/Masters/SystemAlert.js +26 -0
  18. package/build/cjs/ui/pages/system/Masters/SystemAlert.js.map +1 -0
  19. package/build/cjs/ui/pages/system/SystemStateOverview/SystemStateLabels.d.ts +9 -0
  20. package/build/cjs/ui/pages/system/SystemStateOverview/SystemStateLabels.js +27 -0
  21. package/build/cjs/ui/pages/system/SystemStateOverview/SystemStateLabels.js.map +1 -0
  22. package/build/cjs/ui/pages/system/SystemStateOverview/SystemStateOverview.d.ts +2 -1
  23. package/build/cjs/ui/pages/system/SystemStateOverview/SystemStateOverview.js +8 -4
  24. package/build/cjs/ui/pages/system/SystemStateOverview/SystemStateOverview.js.map +1 -1
  25. package/build/cjs/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.css +5 -0
  26. package/build/cjs/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.css.map +1 -1
  27. package/build/cjs/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.js +13 -6
  28. package/build/cjs/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.js.map +1 -1
  29. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.css +0 -3
  30. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.css.map +1 -1
  31. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.d.ts +0 -1
  32. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +42 -47
  33. package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
  34. package/build/cjs/ui/store/actions/operations/detail.js +2 -2
  35. package/build/cjs/ui/store/actions/operations/detail.js.map +1 -1
  36. package/build/cjs/ui/store/actions/scheduling/create-pool-dialog.js +1 -1
  37. package/build/cjs/ui/store/actions/scheduling/create-pool-dialog.js.map +1 -1
  38. package/build/cjs/ui/store/actions/scheduling/expanded-pools.js +2 -2
  39. package/build/cjs/ui/store/actions/scheduling/expanded-pools.js.map +1 -1
  40. package/build/cjs/ui/store/actions/scheduling/scheduling-ts.js +1 -1
  41. package/build/cjs/ui/store/actions/scheduling/scheduling-ts.js.map +1 -1
  42. package/build/cjs/ui/store/actions/system/masters.d.ts +2 -1
  43. package/build/cjs/ui/store/actions/system/masters.js +54 -42
  44. package/build/cjs/ui/store/actions/system/masters.js.map +1 -1
  45. package/build/cjs/ui/store/reducers/system/masters.d.ts +12 -3
  46. package/build/cjs/ui/store/reducers/system/masters.js +9 -4
  47. package/build/cjs/ui/store/reducers/system/masters.js.map +1 -1
  48. package/build/cjs/ui/store/selectors/scheduling/scheduling-pools.d.ts +27 -0
  49. package/build/cjs/ui/store/selectors/scheduling/scheduling-pools.js.map +1 -1
  50. package/build/cjs/ui/store/selectors/system/index.d.ts +2 -1
  51. package/build/cjs/ui/store/selectors/system/index.js.map +1 -1
  52. package/build/cjs/ui/store/selectors/system/masters.d.ts +3 -0
  53. package/build/cjs/ui/store/selectors/system/masters.js +4 -1
  54. package/build/cjs/ui/store/selectors/system/masters.js.map +1 -1
  55. package/build/cjs/ui/utils/scheduling/detailsTable.d.ts +387 -326
  56. package/build/cjs/ui/utils/scheduling/detailsTable.js +12 -6
  57. package/build/cjs/ui/utils/scheduling/detailsTable.js.map +1 -1
  58. package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js +0 -3
  59. package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js.map +1 -1
  60. package/build/cjs/ui/utils/utils.js +2 -1
  61. package/build/cjs/ui/utils/utils.js.map +1 -1
  62. package/build/esm/@types/types.d.ts +14 -0
  63. package/build/esm/ui/components/QuotaEditor/QuotaEditor.js +3 -0
  64. package/build/esm/ui/components/QuotaEditor/QuotaEditor.js.map +1 -1
  65. package/build/esm/ui/hocs/components/Modal/withScope.d.ts +4 -55
  66. package/build/esm/ui/hocs/components/Modal/withScope.js +8 -55
  67. package/build/esm/ui/hocs/components/Modal/withScope.js.map +1 -1
  68. package/build/esm/ui/hooks/use-hotkeysjs-scope.d.ts +1 -0
  69. package/build/esm/ui/hooks/use-hotkeysjs-scope.js +15 -0
  70. package/build/esm/ui/hooks/use-hotkeysjs-scope.js.map +1 -0
  71. package/build/esm/ui/pages/navigation/Navigation/PathEditorModal/PathEditorModal.d.ts +1 -55
  72. package/build/esm/ui/pages/system/Masters/Masters.css +3 -0
  73. package/build/esm/ui/pages/system/Masters/Masters.css.map +1 -1
  74. package/build/esm/ui/pages/system/Masters/Masters.d.ts +4 -1
  75. package/build/esm/ui/pages/system/Masters/Masters.js +22 -3
  76. package/build/esm/ui/pages/system/Masters/Masters.js.map +1 -1
  77. package/build/esm/ui/pages/system/Masters/Masters.scss +4 -0
  78. package/build/esm/ui/pages/system/Masters/SystemAlert.d.ts +4 -0
  79. package/build/esm/ui/pages/system/Masters/SystemAlert.js +19 -0
  80. package/build/esm/ui/pages/system/Masters/SystemAlert.js.map +1 -0
  81. package/build/esm/ui/pages/system/SystemStateOverview/SystemStateLabels.d.ts +9 -0
  82. package/build/esm/ui/pages/system/SystemStateOverview/SystemStateLabels.js +20 -0
  83. package/build/esm/ui/pages/system/SystemStateOverview/SystemStateLabels.js.map +1 -0
  84. package/build/esm/ui/pages/system/SystemStateOverview/SystemStateOverview.d.ts +2 -1
  85. package/build/esm/ui/pages/system/SystemStateOverview/SystemStateOverview.js +7 -3
  86. package/build/esm/ui/pages/system/SystemStateOverview/SystemStateOverview.js.map +1 -1
  87. package/build/esm/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.css +5 -0
  88. package/build/esm/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.css.map +1 -1
  89. package/build/esm/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.js +13 -6
  90. package/build/esm/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.js.map +1 -1
  91. package/build/esm/ui/pages/tablet_cell_bundles/bundle/BundleConfigurationMeta.scss +6 -0
  92. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.css +0 -3
  93. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.css.map +1 -1
  94. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.d.ts +0 -1
  95. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +42 -47
  96. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
  97. package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.scss +0 -4
  98. package/build/esm/ui/store/actions/operations/detail.js +2 -2
  99. package/build/esm/ui/store/actions/operations/detail.js.map +1 -1
  100. package/build/esm/ui/store/actions/scheduling/create-pool-dialog.js +1 -1
  101. package/build/esm/ui/store/actions/scheduling/create-pool-dialog.js.map +1 -1
  102. package/build/esm/ui/store/actions/scheduling/expanded-pools.js +2 -2
  103. package/build/esm/ui/store/actions/scheduling/expanded-pools.js.map +1 -1
  104. package/build/esm/ui/store/actions/scheduling/scheduling-ts.js +1 -1
  105. package/build/esm/ui/store/actions/scheduling/scheduling-ts.js.map +1 -1
  106. package/build/esm/ui/store/actions/system/masters.d.ts +2 -1
  107. package/build/esm/ui/store/actions/system/masters.js +47 -35
  108. package/build/esm/ui/store/actions/system/masters.js.map +1 -1
  109. package/build/esm/ui/store/reducers/system/masters.d.ts +12 -3
  110. package/build/esm/ui/store/reducers/system/masters.js +9 -4
  111. package/build/esm/ui/store/reducers/system/masters.js.map +1 -1
  112. package/build/esm/ui/store/selectors/scheduling/scheduling-pools.d.ts +27 -0
  113. package/build/esm/ui/store/selectors/scheduling/scheduling-pools.js.map +1 -1
  114. package/build/esm/ui/store/selectors/system/index.d.ts +2 -1
  115. package/build/esm/ui/store/selectors/system/index.js.map +1 -1
  116. package/build/esm/ui/store/selectors/system/masters.d.ts +3 -0
  117. package/build/esm/ui/store/selectors/system/masters.js +3 -0
  118. package/build/esm/ui/store/selectors/system/masters.js.map +1 -1
  119. package/build/esm/ui/utils/scheduling/detailsTable.d.ts +387 -326
  120. package/build/esm/ui/utils/scheduling/detailsTable.js +12 -6
  121. package/build/esm/ui/utils/scheduling/detailsTable.js.map +1 -1
  122. package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js +0 -3
  123. package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js.map +1 -1
  124. package/build/esm/ui/utils/utils.js +2 -1
  125. package/build/esm/ui/utils/utils.js.map +1 -1
  126. package/dist/public/build/assets-manifest.json +7 -7
  127. package/dist/public/build/css/{main.f7818774.css → main.4c657a42.css} +2 -2
  128. package/dist/public/build/css/main.4c657a42.css.map +1 -0
  129. package/dist/public/build/js/main.38e77012.js +3 -0
  130. package/dist/public/build/js/{main.1b374ad6.js.map → main.38e77012.js.map} +1 -1
  131. package/dist/public/build/manifest.json +4 -4
  132. package/package.json +8 -6
  133. package/scripts/sync-peer-dependencies.js +54 -0
  134. package/dist/public/build/css/main.f7818774.css.map +0 -1
  135. package/dist/public/build/js/main.1b374ad6.js +0 -3
  136. /package/dist/public/build/js/{main.1b374ad6.js.LICENSE.txt → main.38e77012.js.LICENSE.txt} +0 -0
@@ -21,4 +21,9 @@
21
21
  .bundle-configuration-meta__tooltip-list_alerts {
22
22
  padding-left: var(--yc-popover-padding);
23
23
  }
24
+ .bundle-configuration-meta__state-with-icon {
25
+ display: flex;
26
+ align-items: center;
27
+ color: var(--g-color-text-secondary);
28
+ }
24
29
  /*# sourceMappingURL=BundleConfigurationMeta.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["BundleConfigurationMeta.scss"],"names":[],"mappings":"AAAA;EACI,cAAA;AACJ;AACI;EACI,kBAAA;AACR;AAEI;EACI,gBAAA;EAEA,oCAAA;AADR;AAMY;EACI,wBAAA;AAJhB;AASI;EACI,SAAA;EACA,UAAA;AAPR;AASQ;EACI,gBAAA;AAPZ;AAUQ;EACI,uCAAA;AARZ","file":"BundleConfigurationMeta.css","sourcesContent":[".bundle-configuration-meta {\n flex-shrink: 0;\n\n .meta-table__group {\n grid-gap: 6px 27px;\n }\n\n &__percentage {\n margin-left: 6px;\n\n color: var(--g-color-text-secondary);\n }\n\n &__health {\n &_value {\n &_changing {\n color: var(--info-color);\n }\n }\n }\n\n &__tooltip-list {\n margin: 0;\n padding: 0;\n\n &:not(&_alerts) {\n list-style: none;\n }\n\n &_alerts {\n padding-left: var(--yc-popover-padding);\n }\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["BundleConfigurationMeta.scss"],"names":[],"mappings":"AAAA;EACI,cAAA;AACJ;AACI;EACI,kBAAA;AACR;AAEI;EACI,gBAAA;EAEA,oCAAA;AADR;AAMY;EACI,wBAAA;AAJhB;AASI;EACI,SAAA;EACA,UAAA;AAPR;AASQ;EACI,gBAAA;AAPZ;AAUQ;EACI,uCAAA;AARZ;AAYI;EACI,aAAA;EACA,mBAAA;EACA,oCAAA;AAVR","file":"BundleConfigurationMeta.css","sourcesContent":[".bundle-configuration-meta {\n flex-shrink: 0;\n\n .meta-table__group {\n grid-gap: 6px 27px;\n }\n\n &__percentage {\n margin-left: 6px;\n\n color: var(--g-color-text-secondary);\n }\n\n &__health {\n &_value {\n &_changing {\n color: var(--info-color);\n }\n }\n }\n\n &__tooltip-list {\n margin: 0;\n padding: 0;\n\n &:not(&_alerts) {\n list-style: none;\n }\n\n &_alerts {\n padding-left: var(--yc-popover-padding);\n }\n }\n\n &__state-with-icon {\n display: flex;\n align-items: center;\n color: var(--g-color-text-secondary);\n }\n}\n"],"sourceRoot":""}
@@ -13,6 +13,7 @@ import { useDispatch, useSelector } from 'react-redux';
13
13
  import hammer from '../../../common/hammer';
14
14
  import { getActiveBundleControllerData, getTabletsActiveBundleData } from '../../../store/selectors/tablet_cell_bundles';
15
15
  import { fetchTabletCellBundleEditor } from '../../../store/actions/tablet_cell_bundles/tablet-cell-bundle-editor';
16
+ import Icon from '../../../components/Icon/Icon';
16
17
  import MetaTable from '../../../components/MetaTable/MetaTable';
17
18
  import { BundleMetaResourceProgress } from '../../../components/BundleMetaResourceProgress/BundleMetaResourceProgress';
18
19
  import { Health } from './BundleGeneralMeta';
@@ -226,29 +227,35 @@ function getBundleStateField(orchidData) {
226
227
  if (value === 'changing') {
227
228
  return {
228
229
  key: 'State',
229
- value: /*#__PURE__*/_jsx(Tooltip, {
230
+ value: /*#__PURE__*/_jsxs(Tooltip, {
230
231
  content: renderDetails(detailsEntries),
231
232
  placement: 'bottom',
232
- children: /*#__PURE__*/_jsx(Health, {
233
+ className: block('state-with-icon'),
234
+ children: [/*#__PURE__*/_jsx(Health, {
233
235
  className: block('health', {
234
236
  value: value
235
237
  }),
236
238
  value: value
237
- })
239
+ }), "\xA0", /*#__PURE__*/_jsx(Icon, {
240
+ awesome: "question-circle"
241
+ })]
238
242
  })
239
243
  };
240
244
  }
241
245
  return {
242
246
  key: 'State',
243
- value: /*#__PURE__*/_jsx(Tooltip, {
247
+ value: /*#__PURE__*/_jsxs(Tooltip, {
244
248
  content: renderErrors(alerts),
245
249
  placement: 'bottom',
246
- children: /*#__PURE__*/_jsx(Health, {
250
+ className: block('state-with-icon'),
251
+ children: [/*#__PURE__*/_jsx(Health, {
247
252
  className: block('health', {
248
253
  value: value
249
254
  }),
250
255
  value: value
251
- })
256
+ }), "\xA0", /*#__PURE__*/_jsx(Icon, {
257
+ awesome: "exclamation-triangle"
258
+ })]
252
259
  })
253
260
  };
254
261
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","cn","useDispatch","useSelector","hammer","getActiveBundleControllerData","getTabletsActiveBundleData","fetchTabletCellBundleEditor","MetaTable","BundleMetaResourceProgress","Health","Tooltip","printUsageLimit","useUpdater","YTApiId","ytApiV3Id","wrapApiPromiseByToaster","jsx","_jsx","jsxs","_jsxs","block","DETAILS_KEYS","ActiveAccountBundleControllerUpdater","dispatch","_ref","activeBundle","bundle","enable_bundle_controller","fetchFn","useCallback","prevBundleControllerState","useRef","checkBundleControllerState","_asyncToGenerator","_regeneratorRuntime","mark","_callee","requests","_yield$wrapApiPromise","_yield$wrapApiPromise2","_yield$wrapApiPromise3","_yield$wrapApiPromise4","alerts","rest","inProgressCount","state","wrap","_callee$","_context","prev","next","abrupt","command","parameters","path","concat","_toConsumableArray","_map","attr","executeBatch","tabletBundleControllerState","toasterName","skipSuccessToast","errorContent","sent","_toArray","output","slice","_reduce","acc","_ref3","getState","current","stop","timeout","BundleConfigurationMeta","_ref4","bundleControllerConfig","bundle_controller_target_config","orchidData","bundleGroup","resource_quota","resource_allocated","allMemory","memory","allVCPU","vcpu","allocMemory","allocVCPU","push","getBundleStateField","getLimitAllocatedField","rpc_proxy_count","count","_bundleControllerConf","rpc_proxy_resource_guarantee","getRpcNodeField","tablet_node_count","_bundleControllerConf2","tablet_node_resource_guarantee","memory_limits","_ref5","data","resourceType","limit","cpu_limits","postfix","className","subTitles","items","title","allocated","all","type","allStr","format","allocatedStr","percentage","key","value","children","printMemory","printVCPU","totalCounts","arguments","length","undefined","getBundleStateData","detailsEntries","_entries","_pick","_ref6","_ref7","_slicedToArray","_k","v","_getBundleStateData","content","renderDetails","placement","renderErrors","details","list","map","_ref8","_ref9","k","text","i","alert","id","description"],"sources":["BundleConfigurationMeta.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useDispatch, useSelector} from 'react-redux';\nimport _ from 'lodash';\n\nimport hammer from '../../../common/hammer';\n\nimport {\n getActiveBundleControllerData,\n getTabletsActiveBundleData,\n} from '../../../store/selectors/tablet_cell_bundles';\nimport {fetchTabletCellBundleEditor} from '../../../store/actions/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport {OrchidBundlesData} from '../../../store/reducers/tablet_cell_bundles';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {BundleMetaResourceProgress} from '../../../components/BundleMetaResourceProgress/BundleMetaResourceProgress';\nimport {Health} from './BundleGeneralMeta';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\nimport {printUsageLimit} from '../../../utils';\nimport {useUpdater} from '../../../hooks/use-updater';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {BatchSubRequest} from '../../../../shared/yt-types';\n\nimport './BundleConfigurationMeta.scss';\n\nconst block = cn('bundle-configuration-meta');\n\nconst DETAILS_KEYS = [\n 'allocating_rpc_proxy_count',\n 'allocating_tablet_node_count',\n 'deallocating_rpc_proxy_count',\n 'deallocating_tablet_node_count',\n 'removing_cell_count',\n] as const;\n\nexport function ActiveAccountBundleControllerUpdater() {\n const dispatch = useDispatch();\n const {bundle: activeBundle, enable_bundle_controller} =\n useSelector(getTabletsActiveBundleData) || {};\n const fetchFn = React.useCallback(() => {\n if (activeBundle) {\n dispatch(fetchTabletCellBundleEditor(activeBundle));\n }\n }, [dispatch, activeBundle]);\n useUpdater(fetchFn);\n\n const prevBundleControllerState = React.useRef<null | 'failed' | 'changing' | 'good'>(null);\n const checkBundleControllerState = React.useCallback(async () => {\n if (!activeBundle || !enable_bundle_controller) {\n return;\n }\n\n const requests: Array<BatchSubRequest> = [\n {\n command: 'get',\n parameters: {\n path: `//sys/bundle_controller/orchid/bundle_controller/state/bundles/${activeBundle}/alerts`,\n },\n },\n ..._.map(DETAILS_KEYS, (attr) => {\n return {\n command: 'get' as const,\n parameters: {\n path: `//sys/bundle_controller/orchid/bundle_controller/state/bundles/${activeBundle}/${attr}`,\n },\n };\n }),\n ];\n\n const [{output: alerts} = {output: []}, ...rest] = await wrapApiPromiseByToaster(\n ytApiV3Id.executeBatch(YTApiId.tabletBundleControllerState, {requests}),\n {\n toasterName: 'active-bundle-controller-status',\n skipSuccessToast: true,\n errorContent: `Cannot load bundle controller details for \"${activeBundle}\".`,\n },\n ).catch(() => []);\n\n const inProgressCount = _.reduce(\n rest,\n (acc, {output}) => {\n return acc + (output ?? 0);\n },\n 0,\n );\n\n const state = getState(alerts, inProgressCount);\n if (prevBundleControllerState.current === null) {\n prevBundleControllerState.current = state;\n return;\n }\n\n if (prevBundleControllerState.current !== state) {\n prevBundleControllerState.current = state;\n fetchFn();\n }\n }, [fetchFn, activeBundle, enable_bundle_controller]);\n useUpdater(checkBundleControllerState, {timeout: 3000});\n\n return null;\n}\n\nexport default function BundleConfigurationMeta() {\n const {bundle_controller_target_config: bundleControllerConfig} =\n useSelector(getTabletsActiveBundleData) || {};\n const orchidData = useSelector(getActiveBundleControllerData);\n\n if (!bundleControllerConfig || !orchidData) {\n return null;\n }\n\n const bundleGroup: Array<MetaTableItem> = [];\n\n if (orchidData) {\n const {resource_quota, resource_allocated} = orchidData;\n const {memory: allMemory, vcpu: allVCPU} = resource_quota;\n const {memory: allocMemory, vcpu: allocVCPU} = resource_allocated;\n\n bundleGroup.push(\n getBundleStateField(orchidData),\n getLimitAllocatedField('Memory allocated/limit', allocMemory, allMemory, 'Bytes'),\n getLimitAllocatedField('vCPU allocated/limit', allocVCPU, allVCPU, 'vCores'),\n );\n }\n\n if (typeof bundleControllerConfig.rpc_proxy_count !== 'undefined') {\n const {\n rpc_proxy_count: count,\n rpc_proxy_resource_guarantee: {memory, vcpu},\n } = bundleControllerConfig;\n\n bundleGroup.push(getRpcNodeField('RPC proxies', count, memory, vcpu));\n }\n\n if (typeof bundleControllerConfig.tablet_node_count !== 'undefined') {\n const {\n tablet_node_count: count,\n tablet_node_resource_guarantee: {memory, vcpu},\n } = bundleControllerConfig;\n bundleGroup.push(getRpcNodeField('Tablet nodes', count, memory, vcpu));\n }\n\n if (bundleControllerConfig.memory_limits) {\n const {memory} = bundleControllerConfig?.tablet_node_resource_guarantee || {};\n bundleGroup.push(\n BundleMetaResourceProgress('Memory allocation', {\n data: bundleControllerConfig.memory_limits,\n resourceType: 'Bytes',\n limit: memory,\n }),\n );\n }\n\n if (bundleControllerConfig.cpu_limits) {\n bundleGroup.push(\n BundleMetaResourceProgress('vCPU allocation', {\n data: bundleControllerConfig.cpu_limits,\n resourceType: 'Number',\n postfix: 'threads',\n }),\n );\n }\n\n return (\n <MetaTable className={block()} subTitles={['Bundle configuration']} items={[bundleGroup]} />\n );\n}\n\nfunction getLimitAllocatedField(\n title: string,\n allocated: number,\n all: number,\n type: 'Bytes' | 'vCores',\n) {\n const allStr = hammer.format[type](all);\n const allocatedStr = hammer.format[type](allocated);\n const percentage = hammer.format['Number']((allocated / all) * 100 || 0);\n\n return {\n key: title,\n value: (\n <span>\n {printUsageLimit(allocatedStr, allStr)}\n <span className={block('percentage')}>{percentage}%</span>\n </span>\n ),\n };\n}\n\nfunction getRpcNodeField(title: string, count: number, memory: number, vcpu: number) {\n const printMemory = hammer.format['Bytes'](memory);\n const printVCPU = hammer.format['vCores'](vcpu);\n return {\n key: title,\n value: count ? `${count} x (${printMemory}, ${printVCPU})` : 0,\n };\n}\n\nfunction getState(alerts?: OrchidBundlesData['alerts'], totalCounts = 0) {\n if (!alerts?.length && totalCounts === 0) {\n return 'good' as const;\n } else if (!alerts?.length && totalCounts > 0) {\n return 'changing' as const;\n }\n return 'failed' as const;\n}\n\nexport function getBundleStateData(orchidData: OrchidBundlesData) {\n const alerts = orchidData.alerts;\n const detailsEntries = _.entries(_.pick(orchidData, DETAILS_KEYS));\n const totalCounts = _.reduce(detailsEntries, (acc, [_k, v]) => acc + v, 0);\n const state = getState(alerts, totalCounts);\n return {state, detailsEntries};\n}\n\nfunction getBundleStateField(orchidData: OrchidBundlesData) {\n const {alerts} = orchidData;\n\n const {state: value, detailsEntries} = getBundleStateData(orchidData);\n if (value === 'good') {\n return {\n key: 'State',\n value: <Health className={block('health', {value})} value={value} />,\n };\n }\n\n if (value === 'changing') {\n return {\n key: 'State',\n value: (\n <Tooltip content={renderDetails(detailsEntries)} placement={'bottom'}>\n <Health className={block('health', {value})} value={value} />\n </Tooltip>\n ),\n };\n }\n\n return {\n key: 'State',\n value: (\n <Tooltip content={renderErrors(alerts)} placement={'bottom'}>\n <Health className={block('health', {value})} value={value} />\n </Tooltip>\n ),\n };\n}\n\nfunction renderDetails(details: Array<[string, number]>) {\n const list = details.map(([k, v]) => `${k} - ${v}`);\n return (\n <ul className={block('tooltip-list')}>\n {list.map((text, i) => {\n return (\n <li key={i} className={block('tooltip-item')}>\n {text}\n </li>\n );\n })}\n </ul>\n );\n}\n\nfunction renderErrors(alerts: OrchidBundlesData['alerts']) {\n return (\n <ol className={block('tooltip-list', {alerts: true})}>\n {alerts.map((alert) => {\n return (\n <li key={alert.id} className={block('tooltip-item')}>\n {alert.id} - {alert.description}\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","cn","useDispatch","useSelector","hammer","getActiveBundleControllerData","getTabletsActiveBundleData","fetchTabletCellBundleEditor","Icon","MetaTable","BundleMetaResourceProgress","Health","Tooltip","printUsageLimit","useUpdater","YTApiId","ytApiV3Id","wrapApiPromiseByToaster","jsx","_jsx","jsxs","_jsxs","block","DETAILS_KEYS","ActiveAccountBundleControllerUpdater","dispatch","_ref","activeBundle","bundle","enable_bundle_controller","fetchFn","useCallback","prevBundleControllerState","useRef","checkBundleControllerState","_asyncToGenerator","_regeneratorRuntime","mark","_callee","requests","_yield$wrapApiPromise","_yield$wrapApiPromise2","_yield$wrapApiPromise3","_yield$wrapApiPromise4","alerts","rest","inProgressCount","state","wrap","_callee$","_context","prev","next","abrupt","command","parameters","path","concat","_toConsumableArray","_map","attr","executeBatch","tabletBundleControllerState","toasterName","skipSuccessToast","errorContent","sent","_toArray","output","slice","_reduce","acc","_ref3","getState","current","stop","timeout","BundleConfigurationMeta","_ref4","bundleControllerConfig","bundle_controller_target_config","orchidData","bundleGroup","resource_quota","resource_allocated","allMemory","memory","allVCPU","vcpu","allocMemory","allocVCPU","push","getBundleStateField","getLimitAllocatedField","rpc_proxy_count","count","_bundleControllerConf","rpc_proxy_resource_guarantee","getRpcNodeField","tablet_node_count","_bundleControllerConf2","tablet_node_resource_guarantee","memory_limits","_ref5","data","resourceType","limit","cpu_limits","postfix","className","subTitles","items","title","allocated","all","type","allStr","format","allocatedStr","percentage","key","value","children","printMemory","printVCPU","totalCounts","arguments","length","undefined","getBundleStateData","detailsEntries","_entries","_pick","_ref6","_ref7","_slicedToArray","_k","v","_getBundleStateData","content","renderDetails","placement","awesome","renderErrors","details","list","map","_ref8","_ref9","k","text","i","alert","id","description"],"sources":["BundleConfigurationMeta.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useDispatch, useSelector} from 'react-redux';\nimport _ from 'lodash';\n\nimport hammer from '../../../common/hammer';\n\nimport {\n getActiveBundleControllerData,\n getTabletsActiveBundleData,\n} from '../../../store/selectors/tablet_cell_bundles';\nimport {fetchTabletCellBundleEditor} from '../../../store/actions/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport {OrchidBundlesData} from '../../../store/reducers/tablet_cell_bundles';\nimport Icon from '../../../components/Icon/Icon';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {BundleMetaResourceProgress} from '../../../components/BundleMetaResourceProgress/BundleMetaResourceProgress';\nimport {Health} from './BundleGeneralMeta';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\nimport {printUsageLimit} from '../../../utils';\nimport {useUpdater} from '../../../hooks/use-updater';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {BatchSubRequest} from '../../../../shared/yt-types';\n\nimport './BundleConfigurationMeta.scss';\n\nconst block = cn('bundle-configuration-meta');\n\nconst DETAILS_KEYS = [\n 'allocating_rpc_proxy_count',\n 'allocating_tablet_node_count',\n 'deallocating_rpc_proxy_count',\n 'deallocating_tablet_node_count',\n 'removing_cell_count',\n] as const;\n\nexport function ActiveAccountBundleControllerUpdater() {\n const dispatch = useDispatch();\n const {bundle: activeBundle, enable_bundle_controller} =\n useSelector(getTabletsActiveBundleData) || {};\n const fetchFn = React.useCallback(() => {\n if (activeBundle) {\n dispatch(fetchTabletCellBundleEditor(activeBundle));\n }\n }, [dispatch, activeBundle]);\n useUpdater(fetchFn);\n\n const prevBundleControllerState = React.useRef<null | 'failed' | 'changing' | 'good'>(null);\n const checkBundleControllerState = React.useCallback(async () => {\n if (!activeBundle || !enable_bundle_controller) {\n return;\n }\n\n const requests: Array<BatchSubRequest> = [\n {\n command: 'get',\n parameters: {\n path: `//sys/bundle_controller/orchid/bundle_controller/state/bundles/${activeBundle}/alerts`,\n },\n },\n ..._.map(DETAILS_KEYS, (attr) => {\n return {\n command: 'get' as const,\n parameters: {\n path: `//sys/bundle_controller/orchid/bundle_controller/state/bundles/${activeBundle}/${attr}`,\n },\n };\n }),\n ];\n\n const [{output: alerts} = {output: []}, ...rest] = await wrapApiPromiseByToaster(\n ytApiV3Id.executeBatch(YTApiId.tabletBundleControllerState, {requests}),\n {\n toasterName: 'active-bundle-controller-status',\n skipSuccessToast: true,\n errorContent: `Cannot load bundle controller details for \"${activeBundle}\".`,\n },\n ).catch(() => []);\n\n const inProgressCount = _.reduce(\n rest,\n (acc, {output}) => {\n return acc + (output ?? 0);\n },\n 0,\n );\n\n const state = getState(alerts, inProgressCount);\n if (prevBundleControllerState.current === null) {\n prevBundleControllerState.current = state;\n return;\n }\n\n if (prevBundleControllerState.current !== state) {\n prevBundleControllerState.current = state;\n fetchFn();\n }\n }, [fetchFn, activeBundle, enable_bundle_controller]);\n useUpdater(checkBundleControllerState, {timeout: 3000});\n\n return null;\n}\n\nexport default function BundleConfigurationMeta() {\n const {bundle_controller_target_config: bundleControllerConfig} =\n useSelector(getTabletsActiveBundleData) || {};\n const orchidData = useSelector(getActiveBundleControllerData);\n\n if (!bundleControllerConfig || !orchidData) {\n return null;\n }\n\n const bundleGroup: Array<MetaTableItem> = [];\n\n if (orchidData) {\n const {resource_quota, resource_allocated} = orchidData;\n const {memory: allMemory, vcpu: allVCPU} = resource_quota;\n const {memory: allocMemory, vcpu: allocVCPU} = resource_allocated;\n\n bundleGroup.push(\n getBundleStateField(orchidData),\n getLimitAllocatedField('Memory allocated/limit', allocMemory, allMemory, 'Bytes'),\n getLimitAllocatedField('vCPU allocated/limit', allocVCPU, allVCPU, 'vCores'),\n );\n }\n\n if (typeof bundleControllerConfig.rpc_proxy_count !== 'undefined') {\n const {\n rpc_proxy_count: count,\n rpc_proxy_resource_guarantee: {memory, vcpu},\n } = bundleControllerConfig;\n\n bundleGroup.push(getRpcNodeField('RPC proxies', count, memory, vcpu));\n }\n\n if (typeof bundleControllerConfig.tablet_node_count !== 'undefined') {\n const {\n tablet_node_count: count,\n tablet_node_resource_guarantee: {memory, vcpu},\n } = bundleControllerConfig;\n bundleGroup.push(getRpcNodeField('Tablet nodes', count, memory, vcpu));\n }\n\n if (bundleControllerConfig.memory_limits) {\n const {memory} = bundleControllerConfig?.tablet_node_resource_guarantee || {};\n bundleGroup.push(\n BundleMetaResourceProgress('Memory allocation', {\n data: bundleControllerConfig.memory_limits,\n resourceType: 'Bytes',\n limit: memory,\n }),\n );\n }\n\n if (bundleControllerConfig.cpu_limits) {\n bundleGroup.push(\n BundleMetaResourceProgress('vCPU allocation', {\n data: bundleControllerConfig.cpu_limits,\n resourceType: 'Number',\n postfix: 'threads',\n }),\n );\n }\n\n return (\n <MetaTable className={block()} subTitles={['Bundle configuration']} items={[bundleGroup]} />\n );\n}\n\nfunction getLimitAllocatedField(\n title: string,\n allocated: number,\n all: number,\n type: 'Bytes' | 'vCores',\n) {\n const allStr = hammer.format[type](all);\n const allocatedStr = hammer.format[type](allocated);\n const percentage = hammer.format['Number']((allocated / all) * 100 || 0);\n\n return {\n key: title,\n value: (\n <span>\n {printUsageLimit(allocatedStr, allStr)}\n <span className={block('percentage')}>{percentage}%</span>\n </span>\n ),\n };\n}\n\nfunction getRpcNodeField(title: string, count: number, memory: number, vcpu: number) {\n const printMemory = hammer.format['Bytes'](memory);\n const printVCPU = hammer.format['vCores'](vcpu);\n return {\n key: title,\n value: count ? `${count} x (${printMemory}, ${printVCPU})` : 0,\n };\n}\n\nfunction getState(alerts?: OrchidBundlesData['alerts'], totalCounts = 0) {\n if (!alerts?.length && totalCounts === 0) {\n return 'good' as const;\n } else if (!alerts?.length && totalCounts > 0) {\n return 'changing' as const;\n }\n return 'failed' as const;\n}\n\nexport function getBundleStateData(orchidData: OrchidBundlesData) {\n const alerts = orchidData.alerts;\n const detailsEntries = _.entries(_.pick(orchidData, DETAILS_KEYS));\n const totalCounts = _.reduce(detailsEntries, (acc, [_k, v]) => acc + v, 0);\n const state = getState(alerts, totalCounts);\n return {state, detailsEntries};\n}\n\nfunction getBundleStateField(orchidData: OrchidBundlesData) {\n const {alerts} = orchidData;\n\n const {state: value, detailsEntries} = getBundleStateData(orchidData);\n if (value === 'good') {\n return {\n key: 'State',\n value: <Health className={block('health', {value})} value={value} />,\n };\n }\n\n if (value === 'changing') {\n return {\n key: 'State',\n value: (\n <Tooltip\n content={renderDetails(detailsEntries)}\n placement={'bottom'}\n className={block('state-with-icon')}\n >\n <Health className={block('health', {value})} value={value} />\n &nbsp;\n <Icon awesome=\"question-circle\" />\n </Tooltip>\n ),\n };\n }\n\n return {\n key: 'State',\n value: (\n <Tooltip\n content={renderErrors(alerts)}\n placement={'bottom'}\n className={block('state-with-icon')}\n >\n <Health className={block('health', {value})} value={value} />\n &nbsp;\n <Icon awesome=\"exclamation-triangle\" />\n </Tooltip>\n ),\n };\n}\n\nfunction renderDetails(details: Array<[string, number]>) {\n const list = details.map(([k, v]) => `${k} - ${v}`);\n return (\n <ul className={block('tooltip-list')}>\n {list.map((text, i) => {\n return (\n <li key={i} className={block('tooltip-item')}>\n {text}\n </li>\n );\n })}\n </ul>\n );\n}\n\nfunction renderErrors(alerts: OrchidBundlesData['alerts']) {\n return (\n <ol className={block('tooltip-list', {alerts: true})}>\n {alerts.map((alert) => {\n return (\n <li key={alert.id} className={block('tooltip-item')}>\n {alert.id} - {alert.description}\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":"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"}
@@ -31,4 +31,10 @@
31
31
  padding-left: var(--yc-popover-padding);
32
32
  }
33
33
  }
34
+
35
+ &__state-with-icon {
36
+ display: flex;
37
+ align-items: center;
38
+ color: var(--g-color-text-secondary);
39
+ }
34
40
  }
@@ -17,7 +17,4 @@
17
17
  .bundle-editor__dialog .df-dialog__field-group_type_bundle-title .df-dialog__label-text {
18
18
  font-weight: 700;
19
19
  }
20
- .bundle-editor__info {
21
- margin-bottom: var(--g-text-subheader-3-line-height);
22
- }
23
20
  /*# sourceMappingURL=BundleEditorDialog.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["BundleEditorDialog.scss"],"names":[],"mappings":"AAEQ;EACI,YAAA;AADZ;AAIQ;EACI,gBAAA;AAFZ;AAKQ;EACI,gBAAA;EACA,kBAAA;AAHZ;AAMQ;EACI,SAAA;AAJZ;AAOQ;EACI,gBAAA;AALZ;AASY;EACI,gBAAA;AAPhB;AAYI;EACI,oDAAA;AAVR","file":"BundleEditorDialog.css","sourcesContent":[".bundle-editor {\n &__dialog {\n .df-dialog_with_vertical_tabs {\n height: 60vh;\n }\n\n .yc-list__item_selected {\n background: none;\n }\n\n .df-dialog__tabs-content {\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .yc-dialog-divider {\n margin: 0;\n }\n\n .df-dialog__error-message {\n white-space: pre;\n }\n\n .df-dialog__field-group_type_bundle-title {\n .df-dialog__label-text {\n font-weight: 700;\n }\n }\n }\n\n &__info {\n margin-bottom: var(--g-text-subheader-3-line-height);\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["BundleEditorDialog.scss"],"names":[],"mappings":"AAEQ;EACI,YAAA;AADZ;AAIQ;EACI,gBAAA;AAFZ;AAKQ;EACI,gBAAA;EACA,kBAAA;AAHZ;AAMQ;EACI,SAAA;AAJZ;AAOQ;EACI,gBAAA;AALZ;AASY;EACI,gBAAA;AAPhB","file":"BundleEditorDialog.css","sourcesContent":[".bundle-editor {\n &__dialog {\n .df-dialog_with_vertical_tabs {\n height: 60vh;\n }\n\n .yc-list__item_selected {\n background: none;\n }\n\n .df-dialog__tabs-content {\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .yc-dialog-divider {\n margin: 0;\n }\n\n .df-dialog__error-message {\n white-space: pre;\n }\n\n .df-dialog__field-group_type_bundle-title {\n .df-dialog__label-text {\n font-weight: 700;\n }\n }\n }\n}\n"],"sourceRoot":""}
@@ -20,7 +20,6 @@ export interface BundleEditorDialogFormValues {
20
20
  tablet_static_memory?: number;
21
21
  };
22
22
  memory_limits: {
23
- error?: boolean;
24
23
  memory_reset: boolean;
25
24
  reserved?: number;
26
25
  tablet_static?: number;
@@ -1,7 +1,5 @@
1
- import _isEmpty from "lodash/isEmpty";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
4
- import _get from "lodash/get";
5
3
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
6
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
7
5
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
@@ -9,6 +7,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
9
7
  import React from 'react';
10
8
  import { useDispatch, useSelector } from 'react-redux';
11
9
  import cn from 'bem-cn-lite';
10
+ import isEmpty_ from 'lodash/isEmpty';
12
11
  import { Info } from '../../../../components/Info/Info';
13
12
  import { BundleParamsList } from './components/BundleParamsList/BundleParamsList';
14
13
  import { DialogError, FORM_ERROR, YTDFDialog } from '../../../../components/Dialog/Dialog';
@@ -107,6 +106,7 @@ export function BundleEditorDialog() {
107
106
  name: 'info',
108
107
  type: 'block',
109
108
  fullWidth: true,
109
+ touched: true,
110
110
  extras: {
111
111
  children: /*#__PURE__*/_jsxs(Info, {
112
112
  className: block('info'),
@@ -245,6 +245,7 @@ export function BundleEditorDialog() {
245
245
  name: 'memory_reset',
246
246
  type: 'bundle-title',
247
247
  caption: 'Memory',
248
+ touched: true,
248
249
  extras: function extras(allValues, _ref4) {
249
250
  var _allValues$resources;
250
251
  var form = _ref4.form;
@@ -347,31 +348,6 @@ export function BundleEditorDialog() {
347
348
  hasClear: true
348
349
  },
349
350
  validator: simpleBundleValidate
350
- }, {
351
- type: 'block',
352
- name: 'error',
353
- validator: function validator(v) {
354
- return v ? v : undefined;
355
- },
356
- fullWidth: true,
357
- extras: function extras(allValues, _ref5) {
358
- var form = _ref5.form;
359
- var hasError = _get(allValues, 'memory_limits.error');
360
- var errorText = validateMemoryLimits(allValues);
361
- if (errorText && !hasError) {
362
- form.change('memory_limits.error', true);
363
- } else if (!errorText && hasError) {
364
- form.change('memory_limits.error', false);
365
- }
366
- return {
367
- children: !errorText ? null : /*#__PURE__*/_jsx(DialogError, {
368
- header: 'Error',
369
- message: /*#__PURE__*/_jsx("span", {
370
- children: errorText
371
- })
372
- })
373
- };
374
- }
375
351
  }]
376
352
  };
377
353
  var renderThreadPoolTab = {
@@ -389,9 +365,9 @@ export function BundleEditorDialog() {
389
365
  name: 'threadPool_reset',
390
366
  type: 'bundle-title',
391
367
  caption: 'vCPU',
392
- extras: function extras(allValues, _ref6) {
368
+ extras: function extras(allValues, _ref5) {
393
369
  var _allValues$resources2;
394
- var form = _ref6.form;
370
+ var form = _ref5.form;
395
371
  var tablet_node_resource_guarantee = (_allValues$resources2 = allValues.resources) === null || _allValues$resources2 === void 0 ? void 0 : _allValues$resources2.tablet_node_resource_guarantee;
396
372
  if (!tablet_node_resource_guarantee || !tablet_node_resource_guarantee.type || !bundleDefaultConfig) {
397
373
  return {
@@ -457,7 +433,7 @@ export function BundleEditorDialog() {
457
433
  dispatch(hideTabletCellBundleEditor());
458
434
  };
459
435
  var onSubmit = /*#__PURE__*/function () {
460
- var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(form) {
436
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(form) {
461
437
  var preparedData;
462
438
  return _regeneratorRuntime.wrap(function _callee$(_context) {
463
439
  while (1) switch (_context.prev = _context.next) {
@@ -492,10 +468,10 @@ export function BundleEditorDialog() {
492
468
  }, _callee, null, [[3, 9]]);
493
469
  }));
494
470
  return function onSubmit(_x) {
495
- return _ref7.apply(this, arguments);
471
+ return _ref6.apply(this, arguments);
496
472
  };
497
473
  }();
498
- if (_isEmpty(data)) {
474
+ if (isEmpty_(data)) {
499
475
  return null;
500
476
  }
501
477
  return /*#__PURE__*/_jsx(YTDFDialog, {
@@ -508,24 +484,43 @@ export function BundleEditorDialog() {
508
484
  visible: visibleEditor,
509
485
  onAdd: onSubmit,
510
486
  onClose: onClose,
511
- fields: fields
487
+ fields: fields,
488
+ validate: validateFormValues.bind(null, orchidData === null || orchidData === void 0 ? void 0 : orchidData.resource_quota)
512
489
  });
513
490
  }
514
- function validateMemoryLimits(values) {
515
- var _values$resources;
516
- if ((_values$resources = values.resources) !== null && _values$resources !== void 0 && _values$resources.tablet_node_resource_guarantee) {
517
- var _values$resources$tab;
518
- var memoryLimits = ((_values$resources$tab = values.resources.tablet_node_resource_guarantee) === null || _values$resources$tab === void 0 ? void 0 : _values$resources$tab.memory) || 0;
519
- var currentAccLimit = Object.values(values.memory_limits || {}).reduce(function (acc, v) {
520
- if (typeof v !== 'number') {
521
- return acc;
522
- }
523
- return acc + v;
524
- }, 0) || 0;
525
- if (currentAccLimit > memoryLimits) {
526
- return 'The sum of the memory limits exceeds the allowed values';
491
+ function validateFormValues(quota, values) {
492
+ var _tabletNode$memory, _tabletNode$vcpu, _resources$rpc_proxy_2, _resources$rpc_proxy_3, _tabletNode$memory2, _resources$rpc_proxy_4, _resources$rpc_proxy_5;
493
+ var res = {
494
+ resources: {
495
+ info: ''
496
+ },
497
+ memory_limits: {
498
+ memory_reset: ''
499
+ }
500
+ };
501
+ var resources = values.resources;
502
+ var currentAccLimit = Object.values(values.memory_limits || {}).reduce(function (acc, v) {
503
+ if (typeof v !== 'number') {
504
+ return acc;
527
505
  }
506
+ return acc + v;
507
+ }, 0);
508
+ var tabletNode = resources.tablet_node_resource_guarantee;
509
+ res.memory_limits.memory_reset = currentAccLimit > ((_tabletNode$memory = tabletNode === null || tabletNode === void 0 ? void 0 : tabletNode.memory) !== null && _tabletNode$memory !== void 0 ? _tabletNode$memory : 0) ? 'The sum of the memory limits exceeds the allowed values' : '';
510
+ var _resources$rpc_proxy_ = resources.rpc_proxy_count,
511
+ rpc_proxy_count = _resources$rpc_proxy_ === void 0 ? 0 : _resources$rpc_proxy_,
512
+ _resources$tablet_nod = resources.tablet_node_count,
513
+ tablet_node_count = _resources$tablet_nod === void 0 ? 0 : _resources$tablet_nod;
514
+ var requiredCpu = ((_tabletNode$vcpu = tabletNode === null || tabletNode === void 0 ? void 0 : tabletNode.vcpu) !== null && _tabletNode$vcpu !== void 0 ? _tabletNode$vcpu : 0) * tablet_node_count + ((_resources$rpc_proxy_2 = (_resources$rpc_proxy_3 = resources.rpc_proxy_resource_guarantee) === null || _resources$rpc_proxy_3 === void 0 ? void 0 : _resources$rpc_proxy_3.vcpu) !== null && _resources$rpc_proxy_2 !== void 0 ? _resources$rpc_proxy_2 : 0) * rpc_proxy_count;
515
+ var violatedResources = [];
516
+ if (requiredCpu > (quota === null || quota === void 0 ? void 0 : quota.vcpu)) {
517
+ violatedResources.push("".concat(hammer.format.Number(requiredCpu / 1000), " cpu required"));
518
+ }
519
+ var requiredMemory = ((_tabletNode$memory2 = tabletNode === null || tabletNode === void 0 ? void 0 : tabletNode.memory) !== null && _tabletNode$memory2 !== void 0 ? _tabletNode$memory2 : 0) * tablet_node_count + ((_resources$rpc_proxy_4 = (_resources$rpc_proxy_5 = resources.rpc_proxy_resource_guarantee) === null || _resources$rpc_proxy_5 === void 0 ? void 0 : _resources$rpc_proxy_5.memory) !== null && _resources$rpc_proxy_4 !== void 0 ? _resources$rpc_proxy_4 : 0) * rpc_proxy_count;
520
+ if (requiredMemory > (quota === null || quota === void 0 ? void 0 : quota.memory)) {
521
+ violatedResources.push("".concat(hammer.format.Bytes(requiredMemory), " memory requried"));
528
522
  }
529
- return '';
523
+ res.resources.info = violatedResources.length ? violatedResources.join(', ') : '';
524
+ return res;
530
525
  }
531
526
  // #sourceMappingURL=BundleEditorDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useDispatch","useSelector","cn","Info","BundleParamsList","DialogError","FORM_ERROR","YTDFDialog","hammer","getClusterUiConfig","isDeveloper","hideTabletCellBundleEditor","setBundleEditorController","getBundleEditorData","getTabletBundlesWriteableByName","getTabletCellBundleEditorState","bundleEditorDict","createConfigurationList","createParams","getBundleControllerResource","getInitialFormValues","getResourceData","instanceCountValidate","prepareSubmitBundle","simpleBundleValidate","UIFactory","isAbcAllowed","makeLink","docsUrl","jsx","_jsx","jsxs","_jsxs","block","BundleEditorDialog","_initialValues$resour","_useSelector","visibleEditor","bundleName","bundleData","data","orchidData","bundleControllerData","clusterUiConfig","_useSelector2","bundleDefaultConfig","defaultConfig","bundleControllerConfig","bundle_controller_target_config","enableBundleController","enable_bundle_controller","_getResourceData","tabletCountUsage","usage","_getResourceData2","tabletStaticMemoryUsage","writeableByName","allowTabletCount","get","allowEdit","initialValues","_ref","rpc_proxy_sizes","tablet_node_sizes","data_centers","_toConsumableArray","Object","values","_ref2","_slicedToArray","rpcConfigurations","nodeConfigurations","dcConfigurations","renderGeneralTabs","name","title","type","size","fields","concat","caption","extras","placeholder","disabled","allowRootAccount","renderResourceTab","fullWidth","children","className","renderTableCellBundleEditorNotice","params","value","format","resource_quota","memory","vcpu","Number","resources","tablet_count","withoutDetailedBar","progress","validator","section","hasClear","tooltip","docsUrls","_ref3","form","onRadioClick","nodeConfigurationType","defaultMemory","default_config","memory_limits","defaultThreadPool","cpu_limits","resultMemory","resultThreadPool","change","_objectSpread","defaults","renderSimpleResourceTab","renderMemoryTab","visibilityCondition","when","isActive","v","allValues","_ref4","_allValues$resources","tablet_node_resource_guarantee","onReset","used","keys","reduce","sum","k","_allValues$memory_lim","isNaN","undefined","_ref5","hasError","_get","errorText","validateMemoryLimits","header","message","renderThreadPoolTab","_ref6","_allValues$resources2","postfix","push","dispatch","onClose","onSubmit","_ref7","_asyncToGenerator","_regeneratorRuntime","mark","_callee","preparedData","wrap","_callee$","_context","prev","next","abrupt","t0","validationErrors","_defineProperty","error","stop","_x","apply","arguments","_isEmpty","headerProps","visible","onAdd","_values$resources","_values$resources$tab","memoryLimits","currentAccLimit","acc"],"sources":["BundleEditorDialog.tsx"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport _ from 'lodash';\n\nimport {Info} from '../../../../components/Info/Info';\nimport {BundleParamsList} from './components/BundleParamsList/BundleParamsList';\nimport {\n DialogError,\n DialogField,\n DialogTabField,\n FORM_ERROR,\n FormApi,\n YTDFDialog,\n} from '../../../../components/Dialog/Dialog';\nimport hammer from '../../../../common/hammer';\n\nimport {getClusterUiConfig, isDeveloper} from '../../../../store/selectors/global';\nimport {\n hideTabletCellBundleEditor,\n setBundleEditorController,\n} from '../../../../store/actions/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport {\n getBundleEditorData,\n getTabletBundlesWriteableByName,\n} from '../../../../store/selectors/tablet_cell_bundles';\nimport {BundleResourceGuarantee} from '../../../../store/reducers/tablet_cell_bundles';\nimport {getTabletCellBundleEditorState} from '../../../../store/selectors/tablet_cell_bundles/tablet-cell-bundle-editor';\n\nimport {\n bundleEditorDict,\n createConfigurationList,\n createParams,\n getBundleControllerResource,\n getInitialFormValues,\n getResourceData,\n instanceCountValidate,\n prepareSubmitBundle,\n simpleBundleValidate,\n} from '../../../../utils/tablet_cell_bundles/bundles/bundle-editor-dialog';\nimport UIFactory, {isAbcAllowed} from '../../../../UIFactory';\nimport {makeLink} from '../../../../utils/utils';\nimport {docsUrl} from '../../../../config';\n\nimport './BundleEditorDialog.scss';\n\nconst block = cn('bundle-editor');\n\nexport interface BundleEditorDialogFormValues {\n general: {\n abc?: {slug: string; id?: number};\n changelog_account?: string;\n snapshot_account?: string;\n };\n resources: {\n info?: string; // system\n rpc_proxy_count?: number; // todo\n rpc_proxy_resource_guarantee?: BundleResourceGuarantee;\n tablet_node_count?: number;\n tablet_node_resource_guarantee?: BundleResourceGuarantee;\n tablet_count?: number; // old\n tablet_static_memory?: number; // pld\n };\n memory_limits: {\n error?: boolean; // system\n memory_reset: boolean; // system\n reserved?: number;\n tablet_static?: number;\n tablet_dynamic?: number;\n compressed_block_cache?: number;\n uncompressed_block_cache?: number;\n versioned_chunk_meta?: number;\n lookup_row_cache?: number;\n key_filter_block_cache?: number;\n };\n cpu_limits: {\n threadPool_reset?: boolean; //system\n lookup_thread_pool_size?: number;\n query_thread_pool_size?: number;\n write_thread_pool_size?: number;\n };\n}\n\nexport function BundleEditorDialog() {\n const {\n visibleEditor,\n bundleName,\n bundleData,\n data,\n bundleControllerData: orchidData,\n } = useSelector(getTabletCellBundleEditorState);\n\n const clusterUiConfig = useSelector(getClusterUiConfig);\n\n const {defaultConfig: bundleDefaultConfig} = useSelector(getBundleEditorData);\n\n const bundleControllerConfig = bundleData?.bundle_controller_target_config;\n const enableBundleController = bundleData?.enable_bundle_controller || false;\n\n const {usage: tabletCountUsage} = getResourceData(data, 'tablet_count');\n const {usage: tabletStaticMemoryUsage} = getResourceData(data, 'tablet_static_memory');\n\n const writeableByName = useSelector(getTabletBundlesWriteableByName);\n const allowTabletCount = writeableByName.get(bundleName ?? '');\n const allowEdit = useSelector(isDeveloper);\n\n const initialValues: Partial<BundleEditorDialogFormValues> = (() => {\n if (!enableBundleController) {\n return getInitialFormValues(data);\n }\n if (!bundleControllerConfig) {\n return {};\n }\n return getInitialFormValues(data, bundleControllerConfig);\n })();\n\n const [rpcConfigurations, nodeConfigurations, dcConfigurations] = (() => {\n if (!bundleDefaultConfig) {\n return [[], [], []];\n }\n const {rpc_proxy_sizes, tablet_node_sizes, data_centers} = bundleDefaultConfig;\n\n return [\n createConfigurationList(rpc_proxy_sizes),\n createConfigurationList(tablet_node_sizes),\n data_centers ? [...Object.values(data_centers)] : [],\n ];\n })();\n\n const renderGeneralTabs: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'general',\n title: 'General',\n type: 'tab-vertical',\n size: 's',\n fields: [\n ...(!isAbcAllowed()\n ? []\n : [\n {\n name: 'abc',\n type: 'abc-control' as const,\n caption: 'ABC Service',\n extras: {\n placeholder: 'Select ABC service...',\n disabled: !allowEdit,\n },\n },\n ]),\n {\n name: 'changelog_account',\n type: 'accounts-suggest-with-loading',\n caption: 'Changelog account',\n extras: {\n allowRootAccount: true,\n disabled: !allowEdit,\n },\n },\n {\n name: 'snapshot_account',\n type: 'accounts-suggest-with-loading',\n caption: 'Snapshot account',\n extras: {\n allowRootAccount: true,\n disabled: !allowEdit,\n },\n },\n ],\n };\n\n const renderResourceTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'resources',\n title: 'Resources',\n type: 'tab-vertical',\n size: 's',\n fields: [\n {\n name: 'info',\n type: 'block',\n fullWidth: true,\n extras: {\n children: (\n <Info className={block('info')}>\n {UIFactory.renderTableCellBundleEditorNotice({\n bundleData,\n clusterUiConfig,\n })}\n <BundleParamsList\n className={block('params')}\n params={[\n {\n title: 'Memory',\n value: hammer.format['Bytes'](\n orchidData?.resource_quota.memory || '0',\n ),\n },\n {\n title: 'vCPU',\n value: hammer.format['vCores'](\n orchidData?.resource_quota.vcpu || '0',\n ),\n },\n {\n title: 'Tablet count',\n value: hammer.format.Number(\n initialValues.resources?.tablet_count,\n ),\n },\n ]}\n />\n </Info>\n ),\n },\n },\n ...(!allowTabletCount\n ? []\n : [\n {\n name: 'tablet_count',\n type: 'bundle-input',\n caption: 'Tablet count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n progress: {\n usage: tabletCountUsage,\n },\n },\n validator: simpleBundleValidate,\n } as const,\n ]),\n {section: 'RPC proxy'},\n {\n type: 'bundle-input',\n name: 'rpc_proxy_count',\n caption: 'RPC proxy count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n hasClear: true,\n },\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['dynamic-tables:cross-dc'], 'Help')),\n validator: instanceCountValidate(dcConfigurations),\n },\n {\n type: 'bundle-table-field',\n name: 'rpc_proxy_resource_guarantee',\n caption: 'Instance configuration',\n fullWidth: true,\n extras: {\n data: rpcConfigurations,\n },\n },\n {section: 'Tablet node'},\n {\n type: 'bundle-input',\n name: 'tablet_node_count',\n caption: 'Tablet node count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n hasClear: true,\n },\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['dynamic-tables:cross-dc'], 'Help')),\n validator: instanceCountValidate(dcConfigurations),\n },\n {\n type: 'bundle-table-field',\n name: 'tablet_node_resource_guarantee',\n caption: 'Instance configuration',\n fullWidth: true,\n extras: function (values, {form}) {\n const onRadioClick = (value: BundleResourceGuarantee) => {\n const nodeConfigurationType = value.type || '';\n\n const defaultMemory =\n bundleDefaultConfig?.tablet_node_sizes[nodeConfigurationType]\n .default_config.memory_limits || {};\n const defaultThreadPool =\n bundleDefaultConfig?.tablet_node_sizes[nodeConfigurationType]\n .default_config.cpu_limits || {};\n\n const resultMemory = getBundleControllerResource(\n values.memory_limits,\n defaultMemory,\n 'memory_limits',\n );\n const resultThreadPool = getBundleControllerResource(\n values.cpu_limits,\n defaultThreadPool,\n 'cpu_limits',\n );\n\n form.change('memory_limits', {\n ...bundleEditorDict.defaults.memory_limits,\n ...resultMemory,\n });\n form.change('cpu_limits', {\n ...bundleEditorDict.defaults.cpu_limits,\n ...resultThreadPool,\n });\n };\n\n return {\n data: nodeConfigurations,\n onRadioClick,\n };\n },\n },\n ],\n };\n\n const renderSimpleResourceTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'resources',\n title: 'Resources',\n type: 'tab-vertical',\n size: 's',\n fields: [\n {\n name: 'tablet_count',\n type: 'bundle-input',\n caption: 'Tablet count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n progress: {\n usage: tabletCountUsage,\n },\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'tablet_static_memory',\n type: 'bundle-input',\n caption: 'Tablet static memory',\n extras: {\n format: 'Bytes',\n progress: {\n usage: tabletStaticMemoryUsage,\n },\n },\n validator: simpleBundleValidate,\n tooltip: (\n <span>\n Tablet static memory limit is based on hardware resources. Do not increase\n it unless you fully understand what you are doing. In case of emergency\n consider adding new tablet cells to the bundle, consulting with\n Components/Nodes page and increasing the limit only when new nodes are added\n to the bundle.\n </span>\n ),\n },\n ],\n };\n\n const renderMemoryTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'memory_limits',\n title: 'Memory',\n type: 'tab-vertical',\n size: 's',\n visibilityCondition: {\n when: 'resources.tablet_node_resource_guarantee',\n isActive: (v) => typeof v !== 'undefined',\n },\n fields: [\n {\n name: 'memory_reset',\n type: 'bundle-title',\n caption: 'Memory',\n extras: (allValues, {form}) => {\n const tablet_node_resource_guarantee =\n allValues.resources?.tablet_node_resource_guarantee;\n\n const onReset = () => {\n if (\n !tablet_node_resource_guarantee ||\n !tablet_node_resource_guarantee.type ||\n !bundleDefaultConfig\n ) {\n return;\n }\n const type = tablet_node_resource_guarantee.type;\n const {tablet_node_sizes} = bundleDefaultConfig;\n const {memory_limits} = tablet_node_sizes[type].default_config;\n\n form.change('memory_limits', {\n ...bundleEditorDict.defaults.memory_limits,\n ...memory_limits,\n });\n };\n\n if (!tablet_node_resource_guarantee) {\n return {\n params: [],\n onReset,\n };\n }\n const {memory} = tablet_node_resource_guarantee;\n\n const used = bundleEditorDict.keys.memory_limits.reduce((sum, k) => {\n const v = allValues?.memory_limits?.[k];\n return typeof v !== 'number' || isNaN(v) ? sum : sum + v;\n }, 0);\n\n return {\n params: createParams('Bytes', memory, used),\n onReset,\n };\n },\n },\n {\n name: 'reserved',\n type: 'bundle-input',\n caption: 'Reserved',\n extras: {\n format: 'Bytes',\n disabled: true,\n },\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['bundle-controller:reserved-memory'], 'Help'),\n ),\n },\n {\n name: 'tablet_static',\n type: 'bundle-input',\n caption: 'Tablet static',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'tablet_dynamic',\n type: 'bundle-input',\n caption: 'Tablet dynamic',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'compressed_block_cache',\n type: 'bundle-input',\n caption: 'Compressed block cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'uncompressed_block_cache',\n type: 'bundle-input',\n caption: 'Uncompressed block cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'versioned_chunk_meta',\n type: 'bundle-input',\n caption: 'Versioned chunk meta',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'lookup_row_cache',\n type: 'bundle-input',\n caption: 'Lookup row cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'key_filter_block_cache',\n type: 'bundle-input',\n caption: 'Key filter block cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n type: 'block',\n name: 'error',\n validator: (v: any) => (v ? v : undefined),\n fullWidth: true,\n extras(allValues, {form}) {\n const hasError = _.get(allValues, 'memory_limits.error');\n const errorText = validateMemoryLimits(allValues);\n\n if (errorText && !hasError) {\n form.change('memory_limits.error', true);\n } else if (!errorText && hasError) {\n form.change('memory_limits.error', false);\n }\n\n return {\n children: !errorText ? null : (\n <DialogError header={'Error'} message={<span>{errorText}</span>} />\n ),\n };\n },\n },\n ],\n };\n\n const renderThreadPoolTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'cpu_limits',\n title: 'Thread pools',\n type: 'tab-vertical',\n size: 's',\n visibilityCondition: {\n when: 'resources.tablet_node_resource_guarantee',\n isActive: (v) => typeof v !== 'undefined',\n },\n fields: [\n {\n name: 'threadPool_reset',\n type: 'bundle-title',\n caption: 'vCPU',\n extras: (allValues, {form}) => {\n const tablet_node_resource_guarantee =\n allValues.resources?.tablet_node_resource_guarantee;\n\n if (\n !tablet_node_resource_guarantee ||\n !tablet_node_resource_guarantee.type ||\n !bundleDefaultConfig\n ) {\n return {\n params: [],\n onReset: () => {},\n };\n }\n\n const onReset = () => {\n const type = tablet_node_resource_guarantee.type;\n if (!type) {\n return;\n }\n\n const {tablet_node_sizes} = bundleDefaultConfig;\n const {cpu_limits} = tablet_node_sizes[type].default_config;\n\n form.change('cpu_limits', {\n ...bundleEditorDict.defaults.cpu_limits,\n ...cpu_limits,\n });\n };\n\n const {vcpu} = tablet_node_resource_guarantee;\n\n return {\n params: createParams('vCores', vcpu),\n onReset,\n };\n },\n },\n {\n name: 'lookup_thread_pool_size',\n type: 'bundle-input',\n caption: 'Lookup thread pool size',\n extras: {\n postfix: 'threads',\n format: 'Number',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'query_thread_pool_size',\n type: 'bundle-input',\n caption: 'Query thread pool size',\n extras: {\n postfix: 'threads',\n format: 'Number',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'write_thread_pool_size',\n type: 'bundle-input',\n caption: 'Write thread pool size',\n extras: {\n postfix: 'threads',\n format: 'Number',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n ],\n };\n\n const fields = [renderGeneralTabs];\n if (enableBundleController) {\n fields.push(renderResourceTab, renderMemoryTab, renderThreadPoolTab);\n } else {\n fields.push(renderSimpleResourceTab);\n }\n\n const dispatch = useDispatch();\n const onClose = () => {\n dispatch(hideTabletCellBundleEditor());\n };\n\n const onSubmit = async (form: FormApi<BundleEditorDialogFormValues>) => {\n if (!bundleName) {\n return {};\n }\n\n const preparedData = prepareSubmitBundle(form);\n\n try {\n await dispatch(\n setBundleEditorController({\n bundleName,\n data: preparedData,\n }),\n );\n return undefined;\n } catch (error) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n }\n };\n\n if (_.isEmpty(data)) {\n return null;\n }\n\n return (\n <YTDFDialog<BundleEditorDialogFormValues>\n className={block('dialog')}\n headerProps={{\n title: bundleName,\n }}\n size=\"l\"\n initialValues={initialValues}\n visible={visibleEditor}\n onAdd={onSubmit}\n onClose={onClose}\n fields={fields}\n />\n );\n}\n\nfunction validateMemoryLimits(values: BundleEditorDialogFormValues) {\n if (values.resources?.tablet_node_resource_guarantee) {\n const memoryLimits = values.resources.tablet_node_resource_guarantee?.memory || 0;\n const currentAccLimit =\n Object.values(values.memory_limits || {}).reduce((acc: number, v: number | boolean) => {\n if (typeof v !== 'number') {\n return acc;\n }\n return acc + v;\n }, 0) || 0;\n\n if (currentAccLimit > memoryLimits) {\n return 'The sum of the memory limits exceeds the allowed values';\n }\n }\n\n return '';\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useDispatch","useSelector","cn","isEmpty_","Info","BundleParamsList","DialogError","FORM_ERROR","YTDFDialog","hammer","getClusterUiConfig","isDeveloper","hideTabletCellBundleEditor","setBundleEditorController","getBundleEditorData","getTabletBundlesWriteableByName","getTabletCellBundleEditorState","bundleEditorDict","createConfigurationList","createParams","getBundleControllerResource","getInitialFormValues","getResourceData","instanceCountValidate","prepareSubmitBundle","simpleBundleValidate","UIFactory","isAbcAllowed","makeLink","docsUrl","jsx","_jsx","jsxs","_jsxs","block","BundleEditorDialog","_initialValues$resour","_useSelector","visibleEditor","bundleName","bundleData","data","orchidData","bundleControllerData","clusterUiConfig","_useSelector2","bundleDefaultConfig","defaultConfig","bundleControllerConfig","bundle_controller_target_config","enableBundleController","enable_bundle_controller","_getResourceData","tabletCountUsage","usage","_getResourceData2","tabletStaticMemoryUsage","writeableByName","allowTabletCount","get","allowEdit","initialValues","_ref","rpc_proxy_sizes","tablet_node_sizes","data_centers","_toConsumableArray","Object","values","_ref2","_slicedToArray","rpcConfigurations","nodeConfigurations","dcConfigurations","renderGeneralTabs","name","title","type","size","fields","concat","caption","extras","placeholder","disabled","allowRootAccount","renderResourceTab","fullWidth","touched","children","className","renderTableCellBundleEditorNotice","params","value","format","resource_quota","memory","vcpu","Number","resources","tablet_count","withoutDetailedBar","progress","validator","section","hasClear","tooltip","docsUrls","_ref3","form","onRadioClick","nodeConfigurationType","defaultMemory","default_config","memory_limits","defaultThreadPool","cpu_limits","resultMemory","resultThreadPool","change","_objectSpread","defaults","renderSimpleResourceTab","renderMemoryTab","visibilityCondition","when","isActive","v","allValues","_ref4","_allValues$resources","tablet_node_resource_guarantee","onReset","used","keys","reduce","sum","k","_allValues$memory_lim","isNaN","renderThreadPoolTab","_ref5","_allValues$resources2","postfix","push","dispatch","onClose","onSubmit","_ref6","_asyncToGenerator","_regeneratorRuntime","mark","_callee","preparedData","wrap","_callee$","_context","prev","next","abrupt","undefined","t0","validationErrors","_defineProperty","error","stop","_x","apply","arguments","headerProps","visible","onAdd","validate","validateFormValues","bind","quota","_tabletNode$memory","_tabletNode$vcpu","_resources$rpc_proxy_2","_resources$rpc_proxy_3","_tabletNode$memory2","_resources$rpc_proxy_4","_resources$rpc_proxy_5","res","info","memory_reset","currentAccLimit","acc","tabletNode","_resources$rpc_proxy_","rpc_proxy_count","_resources$tablet_nod","tablet_node_count","requiredCpu","rpc_proxy_resource_guarantee","violatedResources","requiredMemory","Bytes","length","join"],"sources":["BundleEditorDialog.tsx"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport {Info} from '../../../../components/Info/Info';\nimport {BundleParamsList} from './components/BundleParamsList/BundleParamsList';\nimport {\n DialogError,\n DialogField,\n DialogTabField,\n FORM_ERROR,\n FormApi,\n YTDFDialog,\n} from '../../../../components/Dialog/Dialog';\nimport hammer from '../../../../common/hammer';\n\nimport {getClusterUiConfig, isDeveloper} from '../../../../store/selectors/global';\nimport {\n hideTabletCellBundleEditor,\n setBundleEditorController,\n} from '../../../../store/actions/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport {\n getBundleEditorData,\n getTabletBundlesWriteableByName,\n} from '../../../../store/selectors/tablet_cell_bundles';\nimport {\n BundleResourceGuarantee,\n OrchidBundleResource,\n} from '../../../../store/reducers/tablet_cell_bundles';\nimport {getTabletCellBundleEditorState} from '../../../../store/selectors/tablet_cell_bundles/tablet-cell-bundle-editor';\n\nimport {\n bundleEditorDict,\n createConfigurationList,\n createParams,\n getBundleControllerResource,\n getInitialFormValues,\n getResourceData,\n instanceCountValidate,\n prepareSubmitBundle,\n simpleBundleValidate,\n} from '../../../../utils/tablet_cell_bundles/bundles/bundle-editor-dialog';\nimport UIFactory, {isAbcAllowed} from '../../../../UIFactory';\nimport {makeLink} from '../../../../utils/utils';\nimport {docsUrl} from '../../../../config';\n\nimport './BundleEditorDialog.scss';\nimport {Pick2} from '../../../../../@types/types';\n\nconst block = cn('bundle-editor');\n\nexport interface BundleEditorDialogFormValues {\n general: {\n abc?: {slug: string; id?: number};\n changelog_account?: string;\n snapshot_account?: string;\n };\n resources: {\n info?: string; // system\n rpc_proxy_count?: number; // todo\n rpc_proxy_resource_guarantee?: BundleResourceGuarantee;\n tablet_node_count?: number;\n tablet_node_resource_guarantee?: BundleResourceGuarantee;\n tablet_count?: number; // old\n tablet_static_memory?: number; // pld\n };\n memory_limits: {\n memory_reset: boolean; // system\n reserved?: number;\n tablet_static?: number;\n tablet_dynamic?: number;\n compressed_block_cache?: number;\n uncompressed_block_cache?: number;\n versioned_chunk_meta?: number;\n lookup_row_cache?: number;\n key_filter_block_cache?: number;\n };\n cpu_limits: {\n threadPool_reset?: boolean; //system\n lookup_thread_pool_size?: number;\n query_thread_pool_size?: number;\n write_thread_pool_size?: number;\n };\n}\n\nexport function BundleEditorDialog() {\n const {\n visibleEditor,\n bundleName,\n bundleData,\n data,\n bundleControllerData: orchidData,\n } = useSelector(getTabletCellBundleEditorState);\n\n const clusterUiConfig = useSelector(getClusterUiConfig);\n\n const {defaultConfig: bundleDefaultConfig} = useSelector(getBundleEditorData);\n\n const bundleControllerConfig = bundleData?.bundle_controller_target_config;\n const enableBundleController = bundleData?.enable_bundle_controller || false;\n\n const {usage: tabletCountUsage} = getResourceData(data, 'tablet_count');\n const {usage: tabletStaticMemoryUsage} = getResourceData(data, 'tablet_static_memory');\n\n const writeableByName = useSelector(getTabletBundlesWriteableByName);\n const allowTabletCount = writeableByName.get(bundleName ?? '');\n const allowEdit = useSelector(isDeveloper);\n\n const initialValues: Partial<BundleEditorDialogFormValues> = (() => {\n if (!enableBundleController) {\n return getInitialFormValues(data);\n }\n if (!bundleControllerConfig) {\n return {};\n }\n return getInitialFormValues(data, bundleControllerConfig);\n })();\n\n const [rpcConfigurations, nodeConfigurations, dcConfigurations] = (() => {\n if (!bundleDefaultConfig) {\n return [[], [], []];\n }\n const {rpc_proxy_sizes, tablet_node_sizes, data_centers} = bundleDefaultConfig;\n\n return [\n createConfigurationList(rpc_proxy_sizes),\n createConfigurationList(tablet_node_sizes),\n data_centers ? [...Object.values(data_centers)] : [],\n ];\n })();\n\n const renderGeneralTabs: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'general',\n title: 'General',\n type: 'tab-vertical',\n size: 's',\n fields: [\n ...(!isAbcAllowed()\n ? []\n : [\n {\n name: 'abc',\n type: 'abc-control' as const,\n caption: 'ABC Service',\n extras: {\n placeholder: 'Select ABC service...',\n disabled: !allowEdit,\n },\n },\n ]),\n {\n name: 'changelog_account',\n type: 'accounts-suggest-with-loading',\n caption: 'Changelog account',\n extras: {\n allowRootAccount: true,\n disabled: !allowEdit,\n },\n },\n {\n name: 'snapshot_account',\n type: 'accounts-suggest-with-loading',\n caption: 'Snapshot account',\n extras: {\n allowRootAccount: true,\n disabled: !allowEdit,\n },\n },\n ],\n };\n\n const renderResourceTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'resources',\n title: 'Resources',\n type: 'tab-vertical',\n size: 's',\n fields: [\n {\n name: 'info',\n type: 'block',\n fullWidth: true,\n touched: true,\n extras: {\n children: (\n <Info className={block('info')}>\n {UIFactory.renderTableCellBundleEditorNotice({\n bundleData,\n clusterUiConfig,\n })}\n <BundleParamsList\n className={block('params')}\n params={[\n {\n title: 'Memory',\n value: hammer.format['Bytes'](\n orchidData?.resource_quota.memory || '0',\n ),\n },\n {\n title: 'vCPU',\n value: hammer.format['vCores'](\n orchidData?.resource_quota.vcpu || '0',\n ),\n },\n {\n title: 'Tablet count',\n value: hammer.format.Number(\n initialValues.resources?.tablet_count,\n ),\n },\n ]}\n />\n </Info>\n ),\n },\n },\n ...(!allowTabletCount\n ? []\n : [\n {\n name: 'tablet_count',\n type: 'bundle-input',\n caption: 'Tablet count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n progress: {\n usage: tabletCountUsage,\n },\n },\n validator: simpleBundleValidate,\n } as const,\n ]),\n {section: 'RPC proxy'},\n {\n type: 'bundle-input',\n name: 'rpc_proxy_count',\n caption: 'RPC proxy count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n hasClear: true,\n },\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['dynamic-tables:cross-dc'], 'Help')),\n validator: instanceCountValidate(dcConfigurations),\n },\n {\n type: 'bundle-table-field',\n name: 'rpc_proxy_resource_guarantee',\n caption: 'Instance configuration',\n fullWidth: true,\n extras: {\n data: rpcConfigurations,\n },\n },\n {section: 'Tablet node'},\n {\n type: 'bundle-input',\n name: 'tablet_node_count',\n caption: 'Tablet node count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n hasClear: true,\n },\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['dynamic-tables:cross-dc'], 'Help')),\n validator: instanceCountValidate(dcConfigurations),\n },\n {\n type: 'bundle-table-field',\n name: 'tablet_node_resource_guarantee',\n caption: 'Instance configuration',\n fullWidth: true,\n extras: function (values, {form}) {\n const onRadioClick = (value: BundleResourceGuarantee) => {\n const nodeConfigurationType = value.type || '';\n\n const defaultMemory =\n bundleDefaultConfig?.tablet_node_sizes[nodeConfigurationType]\n .default_config.memory_limits || {};\n const defaultThreadPool =\n bundleDefaultConfig?.tablet_node_sizes[nodeConfigurationType]\n .default_config.cpu_limits || {};\n\n const resultMemory = getBundleControllerResource(\n values.memory_limits,\n defaultMemory,\n 'memory_limits',\n );\n const resultThreadPool = getBundleControllerResource(\n values.cpu_limits,\n defaultThreadPool,\n 'cpu_limits',\n );\n\n form.change('memory_limits', {\n ...bundleEditorDict.defaults.memory_limits,\n ...resultMemory,\n });\n form.change('cpu_limits', {\n ...bundleEditorDict.defaults.cpu_limits,\n ...resultThreadPool,\n });\n };\n\n return {\n data: nodeConfigurations,\n onRadioClick,\n };\n },\n },\n ],\n };\n\n const renderSimpleResourceTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'resources',\n title: 'Resources',\n type: 'tab-vertical',\n size: 's',\n fields: [\n {\n name: 'tablet_count',\n type: 'bundle-input',\n caption: 'Tablet count',\n extras: {\n format: 'Number',\n withoutDetailedBar: true,\n progress: {\n usage: tabletCountUsage,\n },\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'tablet_static_memory',\n type: 'bundle-input',\n caption: 'Tablet static memory',\n extras: {\n format: 'Bytes',\n progress: {\n usage: tabletStaticMemoryUsage,\n },\n },\n validator: simpleBundleValidate,\n tooltip: (\n <span>\n Tablet static memory limit is based on hardware resources. Do not increase\n it unless you fully understand what you are doing. In case of emergency\n consider adding new tablet cells to the bundle, consulting with\n Components/Nodes page and increasing the limit only when new nodes are added\n to the bundle.\n </span>\n ),\n },\n ],\n };\n\n const renderMemoryTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'memory_limits',\n title: 'Memory',\n type: 'tab-vertical',\n size: 's',\n visibilityCondition: {\n when: 'resources.tablet_node_resource_guarantee',\n isActive: (v) => typeof v !== 'undefined',\n },\n fields: [\n {\n name: 'memory_reset',\n type: 'bundle-title',\n caption: 'Memory',\n touched: true,\n extras: (allValues, {form}) => {\n const tablet_node_resource_guarantee =\n allValues.resources?.tablet_node_resource_guarantee;\n\n const onReset = () => {\n if (\n !tablet_node_resource_guarantee ||\n !tablet_node_resource_guarantee.type ||\n !bundleDefaultConfig\n ) {\n return;\n }\n const type = tablet_node_resource_guarantee.type;\n const {tablet_node_sizes} = bundleDefaultConfig;\n const {memory_limits} = tablet_node_sizes[type].default_config;\n\n form.change('memory_limits', {\n ...bundleEditorDict.defaults.memory_limits,\n ...memory_limits,\n });\n };\n\n if (!tablet_node_resource_guarantee) {\n return {\n params: [],\n onReset,\n };\n }\n const {memory} = tablet_node_resource_guarantee;\n\n const used = bundleEditorDict.keys.memory_limits.reduce((sum, k) => {\n const v = allValues?.memory_limits?.[k];\n return typeof v !== 'number' || isNaN(v) ? sum : sum + v;\n }, 0);\n\n return {\n params: createParams('Bytes', memory, used),\n onReset,\n };\n },\n },\n {\n name: 'reserved',\n type: 'bundle-input',\n caption: 'Reserved',\n extras: {\n format: 'Bytes',\n disabled: true,\n },\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['bundle-controller:reserved-memory'], 'Help'),\n ),\n },\n {\n name: 'tablet_static',\n type: 'bundle-input',\n caption: 'Tablet static',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'tablet_dynamic',\n type: 'bundle-input',\n caption: 'Tablet dynamic',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'compressed_block_cache',\n type: 'bundle-input',\n caption: 'Compressed block cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'uncompressed_block_cache',\n type: 'bundle-input',\n caption: 'Uncompressed block cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'versioned_chunk_meta',\n type: 'bundle-input',\n caption: 'Versioned chunk meta',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'lookup_row_cache',\n type: 'bundle-input',\n caption: 'Lookup row cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'key_filter_block_cache',\n type: 'bundle-input',\n caption: 'Key filter block cache',\n extras: {\n format: 'Bytes',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n ],\n };\n\n const renderThreadPoolTab: DialogTabField<DialogField<BundleEditorDialogFormValues>> = {\n name: 'cpu_limits',\n title: 'Thread pools',\n type: 'tab-vertical',\n size: 's',\n visibilityCondition: {\n when: 'resources.tablet_node_resource_guarantee',\n isActive: (v) => typeof v !== 'undefined',\n },\n fields: [\n {\n name: 'threadPool_reset',\n type: 'bundle-title',\n caption: 'vCPU',\n extras: (allValues, {form}) => {\n const tablet_node_resource_guarantee =\n allValues.resources?.tablet_node_resource_guarantee;\n\n if (\n !tablet_node_resource_guarantee ||\n !tablet_node_resource_guarantee.type ||\n !bundleDefaultConfig\n ) {\n return {\n params: [],\n onReset: () => {},\n };\n }\n\n const onReset = () => {\n const type = tablet_node_resource_guarantee.type;\n if (!type) {\n return;\n }\n\n const {tablet_node_sizes} = bundleDefaultConfig;\n const {cpu_limits} = tablet_node_sizes[type].default_config;\n\n form.change('cpu_limits', {\n ...bundleEditorDict.defaults.cpu_limits,\n ...cpu_limits,\n });\n };\n\n const {vcpu} = tablet_node_resource_guarantee;\n\n return {\n params: createParams('vCores', vcpu),\n onReset,\n };\n },\n },\n {\n name: 'lookup_thread_pool_size',\n type: 'bundle-input',\n caption: 'Lookup thread pool size',\n extras: {\n postfix: 'threads',\n format: 'Number',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'query_thread_pool_size',\n type: 'bundle-input',\n caption: 'Query thread pool size',\n extras: {\n postfix: 'threads',\n format: 'Number',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n {\n name: 'write_thread_pool_size',\n type: 'bundle-input',\n caption: 'Write thread pool size',\n extras: {\n postfix: 'threads',\n format: 'Number',\n hasClear: true,\n },\n validator: simpleBundleValidate,\n },\n ],\n };\n\n const fields = [renderGeneralTabs];\n if (enableBundleController) {\n fields.push(renderResourceTab, renderMemoryTab, renderThreadPoolTab);\n } else {\n fields.push(renderSimpleResourceTab);\n }\n\n const dispatch = useDispatch();\n const onClose = () => {\n dispatch(hideTabletCellBundleEditor());\n };\n\n const onSubmit = async (form: FormApi<BundleEditorDialogFormValues>) => {\n if (!bundleName) {\n return {};\n }\n\n const preparedData = prepareSubmitBundle(form);\n\n try {\n await dispatch(\n setBundleEditorController({\n bundleName,\n data: preparedData,\n }),\n );\n return undefined;\n } catch (error) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n }\n };\n\n if (isEmpty_(data)) {\n return null;\n }\n\n return (\n <YTDFDialog<BundleEditorDialogFormValues>\n className={block('dialog')}\n headerProps={{\n title: bundleName,\n }}\n size=\"l\"\n initialValues={initialValues}\n visible={visibleEditor}\n onAdd={onSubmit}\n onClose={onClose}\n fields={fields}\n validate={validateFormValues.bind(null, orchidData?.resource_quota)}\n />\n );\n}\n\nfunction validateFormValues(\n quota: OrchidBundleResource | undefined,\n values: BundleEditorDialogFormValues,\n) {\n const res: Pick2<typeof values, 'resources', 'info', string> &\n Pick2<typeof values, 'memory_limits', 'memory_reset', string> = {\n resources: {info: ''},\n memory_limits: {memory_reset: ''},\n };\n\n const {resources} = values;\n\n const currentAccLimit = Object.values(values.memory_limits || {}).reduce(\n (acc: number, v: number | boolean) => {\n if (typeof v !== 'number') {\n return acc;\n }\n return acc + v;\n },\n 0,\n );\n\n const tabletNode = resources.tablet_node_resource_guarantee;\n res.memory_limits.memory_reset =\n currentAccLimit > (tabletNode?.memory ?? 0)\n ? 'The sum of the memory limits exceeds the allowed values'\n : '';\n\n const {rpc_proxy_count = 0, tablet_node_count = 0} = resources;\n\n const requiredCpu =\n (tabletNode?.vcpu ?? 0) * tablet_node_count +\n (resources.rpc_proxy_resource_guarantee?.vcpu ?? 0) * rpc_proxy_count;\n\n const violatedResources = [];\n\n if (requiredCpu > quota?.vcpu!) {\n violatedResources.push(`${hammer.format.Number(requiredCpu / 1000)} cpu required`);\n }\n\n const requiredMemory =\n (tabletNode?.memory ?? 0) * tablet_node_count +\n (resources.rpc_proxy_resource_guarantee?.memory ?? 0) * rpc_proxy_count;\n\n if (requiredMemory > quota?.memory!) {\n violatedResources.push(`${hammer.format.Bytes(requiredMemory)} memory requried`);\n }\n\n res.resources.info = violatedResources.length ? violatedResources.join(', ') : '';\n\n return res;\n}\n"],"mappings":"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"}
@@ -27,8 +27,4 @@
27
27
  }
28
28
  }
29
29
  }
30
-
31
- &__info {
32
- margin-bottom: var(--g-text-subheader-3-line-height);
33
- }
34
30
  }