From f87989d32ef0ae02dba0ebc2492e3304904fb095 Mon Sep 17 00:00:00 2001 From: jialin Date: Thu, 4 Dec 2025 10:11:13 +0800 Subject: [PATCH] fix: clear os_image when it's not in new image list --- .../components/version-info-modal.tsx | 2 +- .../components/pool-form.tsx | 29 +++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/pages/backends/components/version-info-modal.tsx b/src/pages/backends/components/version-info-modal.tsx index 0c1b1e0b..5b9ed9c8 100644 --- a/src/pages/backends/components/version-info-modal.tsx +++ b/src/pages/backends/components/version-info-modal.tsx @@ -61,7 +61,7 @@ const VersionInfoModal: React.FC = ({ open={open} title={
- {intl.formatMessage({ id: 'backend.versions' })} + {intl.formatMessage({ id: 'backend.versions' })} diff --git a/src/pages/cluster-management/components/pool-form.tsx b/src/pages/cluster-management/components/pool-form.tsx index 4783b70d..7ffc3127 100644 --- a/src/pages/cluster-management/components/pool-form.tsx +++ b/src/pages/cluster-management/components/pool-form.tsx @@ -17,6 +17,7 @@ import useAppUtils from '@/hooks/use-app-utils'; import { CardContainer } from '@/pages/llmodels/components/gpu-card'; import { DeleteOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; +import { useMemoizedFn } from 'ahooks'; import { Button, Form } from 'antd'; import { useAtom } from 'jotai'; import _ from 'lodash'; @@ -203,7 +204,7 @@ const PoolForm: React.FC = forwardRef((props, ref) => { } }, [currentData, instanceTypeList, osImageList]); - const imageList = useMemo(() => { + const updateImageList = useMemoizedFn((instanceSpec: Record) => { if (instanceSpec.count === 8) { return osImageList.filter((item) => item.os_image === 'gpu-h100x8-base'); } @@ -217,7 +218,11 @@ const PoolForm: React.FC = forwardRef((props, ref) => { } return osImageList; - }, [osImageList, instanceSpec]); + }); + + const imageList = useMemo(() => { + return updateImageList(instanceSpec); + }, [osImageList, instanceSpec, updateImageList]); const instanceLabelRender = (data: { label: React.ReactNode; @@ -252,6 +257,26 @@ const PoolForm: React.FC = forwardRef((props, ref) => { description: option.description, count: option.count }); + + const newImageList = updateImageList({ + ...option.specInfo, + label: option.label, + vendor: option.vendor, + description: option.description, + count: option.count + }); + + // if current os_image is not in new image list, clear the os_image field + const currentOsImage = form.getFieldValue('os_image'); + const isCurrentOsImageValid = newImageList.some( + (item) => item.os_image === currentOsImage + ); + if (!isCurrentOsImageValid) { + form.setFieldsValue({ + os_image: undefined, + image_name: undefined + }); + } form.setFieldsValue({ instance_spec: { ...option.specInfo,