fix: add worker to default cluster

This commit is contained in:
jialin
2025-12-26 12:08:30 +08:00
parent febdd38f7c
commit a006263e51
6 changed files with 67 additions and 41 deletions
+10 -13
View File
@@ -37,11 +37,7 @@ import {
K8sStepsFromCluter K8sStepsFromCluter
} from './components/add-worker/config'; } from './components/add-worker/config';
import PoolRows from './components/pool-rows'; import PoolRows from './components/pool-rows';
import { import { ProviderType, ProviderValueMap } from './config';
ClusterStatusValueMap,
ProviderType,
ProviderValueMap
} from './config';
import { import {
ClusterListItem, ClusterListItem,
CredentialListItem, CredentialListItem,
@@ -79,7 +75,8 @@ const Clusters: React.FC = () => {
useExpandedRowKeys(expandAtom); useExpandedRowKeys(expandAtom);
const navigate = useNavigate(); const navigate = useNavigate();
const intl = useIntl(); const intl = useIntl();
const { handleAddWorker, AddWorkerModal, setStepList } = useAddWorker({}); const { handleAddWorker, checkDefaultCluster, AddWorkerModal, setStepList } =
useAddWorker({});
const [openAddModal, setOpenAddModal] = useState<{ const [openAddModal, setOpenAddModal] = useState<{
open: boolean; open: boolean;
@@ -265,12 +262,12 @@ const Clusters: React.FC = () => {
dataSource.loadend && dataSource.loadend &&
dataSource.dataList?.length > 0 dataSource.dataList?.length > 0
) { ) {
const targetCluster = dataSource.dataList.find( const list = dataSource.dataList?.map((item) => ({
(cluster) => label: item.name,
cluster.state === ClusterStatusValueMap.Ready && value: item.id,
!cluster.workers && ...item
!cluster.worker_pools?.length }));
); const targetCluster = checkDefaultCluster(list);
if (targetCluster) { if (targetCluster) {
const actionMap = { const actionMap = {
@@ -280,7 +277,7 @@ const Clusters: React.FC = () => {
}; };
handleSelect( handleSelect(
actionMap[targetCluster.provider as string], actionMap[targetCluster.provider as string],
targetCluster targetCluster as ListItem
); );
// reset session // reset session
setClusterSession(null); setClusterSession(null);
@@ -17,7 +17,7 @@ interface AddWorkerContextProps {
token: string; token: string;
image: string; image: string;
server_url: string; server_url: string;
cluster_id: number; cluster_id: number | null;
}; };
registerField: (key: SummaryDataKey) => () => void; registerField: (key: SummaryDataKey) => () => void;
updateField: (key: SummaryDataKey, value: any) => void; updateField: (key: SummaryDataKey, value: any) => void;
@@ -41,7 +41,7 @@ type AddWorkerProps = {
token: string; token: string;
image: string; image: string;
server_url: string; server_url: string;
cluster_id: number; cluster_id: number | null;
[key: string]: any; [key: string]: any;
}; };
}; };
@@ -32,12 +32,12 @@ type AddWorkerProps = {
stepList: StepName[]; stepList: StepName[];
onClusterChange?: (value: number, row?: any) => void; onClusterChange?: (value: number, row?: any) => void;
onCancel: () => void; onCancel: () => void;
cluster_id: number; cluster_id: number | null;
registrationInfo?: { registrationInfo?: {
token: string; token: string;
image: string; image: string;
server_url: string; server_url: string;
cluster_id: number; cluster_id: number | null;
}; };
}; };
@@ -64,12 +64,12 @@ const AddWorker: React.FC<AddWorkerProps> = (props) => {
token: string; token: string;
image: string; image: string;
server_url: string; server_url: string;
cluster_id: number; cluster_id: number | null;
}>({ }>({
token: '', token: '',
image: '', image: '',
server_url: '', server_url: '',
cluster_id: 0 cluster_id: null
}); });
const handleOnClusterChange = async (value: number, row?: any) => { const handleOnClusterChange = async (value: number, row?: any) => {
@@ -21,12 +21,12 @@ const useAddWorker = (props: {
open: boolean; open: boolean;
provider: ProviderType; provider: ProviderType;
title: string; title: string;
cluster_id: number; cluster_id: number | null;
}>({ }>({
open: false, open: false,
provider: null, provider: null,
title: '', title: '',
cluster_id: 0 cluster_id: null
}); });
const handleAddWorker = async (row: ClusterListItem) => { const handleAddWorker = async (row: ClusterListItem) => {
@@ -43,7 +43,12 @@ const useAddWorker = (props: {
open: true, open: true,
title: title, title: title,
provider: row.provider as ProviderType, provider: row.provider as ProviderType,
cluster_id: row.id cluster_id: [
ProviderValueMap.Docker,
ProviderValueMap.Kubernetes
].includes(row.provider as string)
? row.id
: null
}); });
} catch (error: any) { } catch (error: any) {
message.error(error?.message || 'Failed to fetch cluster token'); message.error(error?.message || 'Failed to fetch cluster token');
@@ -67,6 +72,38 @@ const useAddWorker = (props: {
.filter((item) => item.state === ClusterStatusValueMap.Ready); .filter((item) => item.state === ClusterStatusValueMap.Ready);
}, [clusterList]); }, [clusterList]);
const checkDefaultCluster = (
clusterList: Global.BaseOption<number, ClusterListItem>[]
) => {
// select default and ready cluster first, digitalocean no READY state
let currentData = clusterList.find(
(item) => item.is_default && item.state === ClusterStatusValueMap.Ready
);
if (!currentData) {
// select docker ready cluster
currentData = clusterList.find(
(item) =>
item.provider === ProviderValueMap.Docker &&
item.state === ClusterStatusValueMap.Ready
);
}
if (!currentData) {
// select any ready cluster
currentData = clusterList.find(
(item) => item.state === ClusterStatusValueMap.Ready
);
}
if (!currentData) {
// maybe no ready a digitalocean cluster
currentData = clusterList[0];
}
return currentData || null;
};
const AddWorkerModal = ( const AddWorkerModal = (
<AddWorker <AddWorker
title={openAddWorker.title} title={openAddWorker.title}
@@ -82,7 +119,7 @@ const useAddWorker = (props: {
open: false, open: false,
provider: null, provider: null,
title: '', title: '',
cluster_id: 0 cluster_id: null
}) })
} }
></AddWorker> ></AddWorker>
@@ -90,6 +127,7 @@ const useAddWorker = (props: {
return { return {
handleAddWorker, handleAddWorker,
checkDefaultCluster,
AddWorkerModal, AddWorkerModal,
setStepList setStepList
}; };
+9 -18
View File
@@ -5,10 +5,6 @@ import useTableFetch from '@/hooks/use-table-fetch';
import PageBox from '@/pages/_components/page-box'; import PageBox from '@/pages/_components/page-box';
import { queryClusterList } from '@/pages/cluster-management/apis'; import { queryClusterList } from '@/pages/cluster-management/apis';
import { DockerStepsFromWorker } from '@/pages/cluster-management/components/add-worker/config'; import { DockerStepsFromWorker } from '@/pages/cluster-management/components/add-worker/config';
import {
ClusterStatusValueMap,
ProviderValueMap
} from '@/pages/cluster-management/config';
import { ClusterListItem } from '@/pages/cluster-management/config/types'; import { ClusterListItem } from '@/pages/cluster-management/config/types';
import useAddWorker from '@/pages/cluster-management/hooks/use-add-worker'; import useAddWorker from '@/pages/cluster-management/hooks/use-add-worker';
import useNoResourceResult from '@/pages/llmodels/hooks/use-no-resource-result'; import useNoResourceResult from '@/pages/llmodels/hooks/use-no-resource-result';
@@ -82,10 +78,11 @@ const Workers: React.FC = () => {
open: false, open: false,
currentData: null currentData: null
}); });
const { handleAddWorker, AddWorkerModal, setStepList } = useAddWorker({ const { handleAddWorker, checkDefaultCluster, AddWorkerModal, setStepList } =
clusterList: clusterData.list, useAddWorker({
clusterLoading: clusterData.loading clusterList: clusterData.list,
}); clusterLoading: clusterData.loading
});
const getClusterList = async () => { const getClusterList = async () => {
try { try {
@@ -105,6 +102,7 @@ const Workers: React.FC = () => {
value: item.id, value: item.id,
id: item.id, id: item.id,
state: item.state, state: item.state,
is_default: item.is_default,
provider: item.provider provider: item.provider
})); }));
setClusterData({ setClusterData({
@@ -193,16 +191,9 @@ const Workers: React.FC = () => {
}); });
const handleOnAddWorker = () => { const handleOnAddWorker = () => {
let currentData = clusterData.list.find( const targetCluster = checkDefaultCluster(clusterData.list);
(item) => if (targetCluster) {
item.provider === ProviderValueMap.Docker && handleAddWorker(targetCluster as ClusterListItem);
item.state === ClusterStatusValueMap.Ready
);
if (!currentData) {
currentData = clusterData.list[0];
}
if (currentData) {
handleAddWorker(currentData as ClusterListItem);
} else { } else {
message.info(intl.formatMessage({ id: 'noresult.resources.cluster' })); message.info(intl.formatMessage({ id: 'noresult.resources.cluster' }));
} }