Files
gpustack-ui/src/pages/cluster-management/components/add-worker/select-vendor.tsx
T
2025-12-11 18:14:25 +08:00

73 lines
1.9 KiB
TypeScript

import {
AddWorkerDockerNotes,
GPUDriverMap
} from '@/pages/resources/config/gpu-driver';
import { useIntl } from '@umijs/max';
import React, { useEffect } from 'react';
import SupportedGPUs from '../support-gpus';
import { useAddWorkerContext } from './add-worker-context';
import { StepNamesMap } from './config';
import { Title } from './constainers';
import StepCollapse from './step-collapse';
const SelectVendor = () => {
const { stepList, registerField, updateField } = useAddWorkerContext();
const intl = useIntl();
const stepIndex = stepList.indexOf(StepNamesMap.SelectGPU) + 1;
const [currentGPU, setCurrentGPU] = React.useState<string>(
GPUDriverMap.NVIDIA
);
const handleSelectProvider = (value: string, item: any) => {
console.log('selected gpu driver:', value, item);
setCurrentGPU(value);
updateField('currentGPU', value);
updateField('workerCommand', item);
};
useEffect(() => {
const unregisterField = registerField('currentGPU');
return () => {
unregisterField();
};
}, []);
useEffect(() => {
const unregisterField = registerField('workerCommand');
return () => {
unregisterField();
};
}, []);
useEffect(() => {
updateField('currentGPU', GPUDriverMap.NVIDIA);
updateField('workerCommand', {
label: 'NVIDIA',
link: 'https://docs.gpustack.ai/latest/installation/requirements/#nvidia-gpu',
notes: AddWorkerDockerNotes[GPUDriverMap.NVIDIA]
});
}, []);
return (
<StepCollapse
name={StepNamesMap.SelectGPU}
title={
<Title>
{stepIndex}.{' '}
{intl.formatMessage({ id: 'clusters.addworker.selectGPU' })}
</Title>
}
>
<SupportedGPUs
onSelect={handleSelectProvider}
current={currentGPU}
clickable={true}
/>
</StepCollapse>
);
};
export default SelectVendor;