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