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
};