in frontend/src/old-pages/Configure/Queues/SlurmMemorySettings.tsx [67:157]
function SlurmMemorySettings() {
const {t} = useTranslation()
const memoryBasedSchedulingEnabled = useState(
memoryBasedSchedulingEnabledPath,
)
const isMemoryBasedSchedulingWithMultipleInstanceTypesActive = useFeatureFlag(
'memory_based_scheduling_with_multiple_instance_types',
)
const queues = useState(queuesPath)
const multipleInstancesTypesSelected = useFeatureFlag(
'queues_multiple_instance_types',
)
? hasMultipleInstanceTypes(queues)
: false
const cannotEnableMemoryBasedScheduling =
multipleInstancesTypesSelected &&
!isMemoryBasedSchedulingWithMultipleInstanceTypesActive
const clearMemoryBasedSettingsState = React.useCallback(() => {
clearState(memoryBasedSchedulingEnabledPath)
if (Object.keys(getState(slurmSettingsPath)).length === 0)
clearState(slurmSettingsPath)
}, [])
React.useEffect(() => {
if (cannotEnableMemoryBasedScheduling) {
clearMemoryBasedSettingsState()
}
}, [clearMemoryBasedSettingsState, cannotEnableMemoryBasedScheduling])
const toggleMemoryBasedSchedulingEnabled = () => {
!memoryBasedSchedulingEnabled
? setState(memoryBasedSchedulingEnabledPath, true)
: clearMemoryBasedSettingsState()
}
const scaledownIdleTime = useState(scaledownIdleTimePath)
const queueUpdateStrategy = useState(queueUpdateStrategyPath)
const onScaledownIdleTimeChange = React.useCallback(
(value: number | null) => {
if (!value) {
clearState(scaledownIdleTimePath)
} else {
setState(scaledownIdleTimePath, value)
}
},
[],
)
const onQueueUpdateStrategyChange = React.useCallback((value: string) => {
setState(queueUpdateStrategyPath, value)
}, [])
return (
<Container
header={
<Header
variant="h2"
info={<InfoLink helpPanel={<SlurmMemorySettingsHelpPanel />} />}
>
{t('wizard.queues.slurmMemorySettings.container.title')}
</Header>
}
>
<SpaceBetween size={'s'} direction={'vertical'}>
<Checkbox
checked={memoryBasedSchedulingEnabled}
disabled={cannotEnableMemoryBasedScheduling}
onChange={toggleMemoryBasedSchedulingEnabled}
>
<Trans i18nKey="wizard.queues.slurmMemorySettings.toggle.label" />
</Checkbox>
{cannotEnableMemoryBasedScheduling ? (
<Alert header={t('wizard.queues.slurmMemorySettings.info.header')}>
{t('wizard.queues.slurmMemorySettings.info.body')}
</Alert>
) : null}
<ColumnLayout columns={2}>
<ScaledownIdleTimeForm
value={scaledownIdleTime}
onChange={onScaledownIdleTimeChange}
/>
<QueueUpdateStrategyForm
value={queueUpdateStrategy}
onChange={onQueueUpdateStrategyChange}
/>
</ColumnLayout>
</SpaceBetween>
</Container>
)
}