Skip to content

Commit a006263

Browse files
committed
fix: add worker to default cluster
1 parent febdd38 commit a006263

File tree

6 files changed

+67
-41
lines changed

6 files changed

+67
-41
lines changed

src/pages/cluster-management/clusters.tsx

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,7 @@ import {
3737
K8sStepsFromCluter
3838
} from './components/add-worker/config';
3939
import PoolRows from './components/pool-rows';
40-
import {
41-
ClusterStatusValueMap,
42-
ProviderType,
43-
ProviderValueMap
44-
} from './config';
40+
import { ProviderType, ProviderValueMap } from './config';
4541
import {
4642
ClusterListItem,
4743
CredentialListItem,
@@ -79,7 +75,8 @@ const Clusters: React.FC = () => {
7975
useExpandedRowKeys(expandAtom);
8076
const navigate = useNavigate();
8177
const intl = useIntl();
82-
const { handleAddWorker, AddWorkerModal, setStepList } = useAddWorker({});
78+
const { handleAddWorker, checkDefaultCluster, AddWorkerModal, setStepList } =
79+
useAddWorker({});
8380

8481
const [openAddModal, setOpenAddModal] = useState<{
8582
open: boolean;
@@ -265,12 +262,12 @@ const Clusters: React.FC = () => {
265262
dataSource.loadend &&
266263
dataSource.dataList?.length > 0
267264
) {
268-
const targetCluster = dataSource.dataList.find(
269-
(cluster) =>
270-
cluster.state === ClusterStatusValueMap.Ready &&
271-
!cluster.workers &&
272-
!cluster.worker_pools?.length
273-
);
265+
const list = dataSource.dataList?.map((item) => ({
266+
label: item.name,
267+
value: item.id,
268+
...item
269+
}));
270+
const targetCluster = checkDefaultCluster(list);
274271

275272
if (targetCluster) {
276273
const actionMap = {
@@ -280,7 +277,7 @@ const Clusters: React.FC = () => {
280277
};
281278
handleSelect(
282279
actionMap[targetCluster.provider as string],
283-
targetCluster
280+
targetCluster as ListItem
284281
);
285282
// reset session
286283
setClusterSession(null);

src/pages/cluster-management/components/add-worker/add-worker-context.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ interface AddWorkerContextProps {
1717
token: string;
1818
image: string;
1919
server_url: string;
20-
cluster_id: number;
20+
cluster_id: number | null;
2121
};
2222
registerField: (key: SummaryDataKey) => () => void;
2323
updateField: (key: SummaryDataKey, value: any) => void;

src/pages/cluster-management/components/add-worker/add-worker-step.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ type AddWorkerProps = {
4141
token: string;
4242
image: string;
4343
server_url: string;
44-
cluster_id: number;
44+
cluster_id: number | null;
4545
[key: string]: any;
4646
};
4747
};

src/pages/cluster-management/components/add-worker/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ type AddWorkerProps = {
3232
stepList: StepName[];
3333
onClusterChange?: (value: number, row?: any) => void;
3434
onCancel: () => void;
35-
cluster_id: number;
35+
cluster_id: number | null;
3636
registrationInfo?: {
3737
token: string;
3838
image: string;
3939
server_url: string;
40-
cluster_id: number;
40+
cluster_id: number | null;
4141
};
4242
};
4343

@@ -64,12 +64,12 @@ const AddWorker: React.FC<AddWorkerProps> = (props) => {
6464
token: string;
6565
image: string;
6666
server_url: string;
67-
cluster_id: number;
67+
cluster_id: number | null;
6868
}>({
6969
token: '',
7070
image: '',
7171
server_url: '',
72-
cluster_id: 0
72+
cluster_id: null
7373
});
7474

7575
const handleOnClusterChange = async (value: number, row?: any) => {

src/pages/cluster-management/hooks/use-add-worker.tsx

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ const useAddWorker = (props: {
2121
open: boolean;
2222
provider: ProviderType;
2323
title: string;
24-
cluster_id: number;
24+
cluster_id: number | null;
2525
}>({
2626
open: false,
2727
provider: null,
2828
title: '',
29-
cluster_id: 0
29+
cluster_id: null
3030
});
3131

3232
const handleAddWorker = async (row: ClusterListItem) => {
@@ -43,7 +43,12 @@ const useAddWorker = (props: {
4343
open: true,
4444
title: title,
4545
provider: row.provider as ProviderType,
46-
cluster_id: row.id
46+
cluster_id: [
47+
ProviderValueMap.Docker,
48+
ProviderValueMap.Kubernetes
49+
].includes(row.provider as string)
50+
? row.id
51+
: null
4752
});
4853
} catch (error: any) {
4954
message.error(error?.message || 'Failed to fetch cluster token');
@@ -67,6 +72,38 @@ const useAddWorker = (props: {
6772
.filter((item) => item.state === ClusterStatusValueMap.Ready);
6873
}, [clusterList]);
6974

75+
const checkDefaultCluster = (
76+
clusterList: Global.BaseOption<number, ClusterListItem>[]
77+
) => {
78+
// select default and ready cluster first, digitalocean no READY state
79+
let currentData = clusterList.find(
80+
(item) => item.is_default && item.state === ClusterStatusValueMap.Ready
81+
);
82+
83+
if (!currentData) {
84+
// select docker ready cluster
85+
currentData = clusterList.find(
86+
(item) =>
87+
item.provider === ProviderValueMap.Docker &&
88+
item.state === ClusterStatusValueMap.Ready
89+
);
90+
}
91+
92+
if (!currentData) {
93+
// select any ready cluster
94+
currentData = clusterList.find(
95+
(item) => item.state === ClusterStatusValueMap.Ready
96+
);
97+
}
98+
99+
if (!currentData) {
100+
// maybe no ready a digitalocean cluster
101+
currentData = clusterList[0];
102+
}
103+
104+
return currentData || null;
105+
};
106+
70107
const AddWorkerModal = (
71108
<AddWorker
72109
title={openAddWorker.title}
@@ -82,14 +119,15 @@ const useAddWorker = (props: {
82119
open: false,
83120
provider: null,
84121
title: '',
85-
cluster_id: 0
122+
cluster_id: null
86123
})
87124
}
88125
></AddWorker>
89126
);
90127

91128
return {
92129
handleAddWorker,
130+
checkDefaultCluster,
93131
AddWorkerModal,
94132
setStepList
95133
};

src/pages/resources/components/workers.tsx

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@ import useTableFetch from '@/hooks/use-table-fetch';
55
import PageBox from '@/pages/_components/page-box';
66
import { queryClusterList } from '@/pages/cluster-management/apis';
77
import { DockerStepsFromWorker } from '@/pages/cluster-management/components/add-worker/config';
8-
import {
9-
ClusterStatusValueMap,
10-
ProviderValueMap
11-
} from '@/pages/cluster-management/config';
128
import { ClusterListItem } from '@/pages/cluster-management/config/types';
139
import useAddWorker from '@/pages/cluster-management/hooks/use-add-worker';
1410
import useNoResourceResult from '@/pages/llmodels/hooks/use-no-resource-result';
@@ -82,10 +78,11 @@ const Workers: React.FC = () => {
8278
open: false,
8379
currentData: null
8480
});
85-
const { handleAddWorker, AddWorkerModal, setStepList } = useAddWorker({
86-
clusterList: clusterData.list,
87-
clusterLoading: clusterData.loading
88-
});
81+
const { handleAddWorker, checkDefaultCluster, AddWorkerModal, setStepList } =
82+
useAddWorker({
83+
clusterList: clusterData.list,
84+
clusterLoading: clusterData.loading
85+
});
8986

9087
const getClusterList = async () => {
9188
try {
@@ -105,6 +102,7 @@ const Workers: React.FC = () => {
105102
value: item.id,
106103
id: item.id,
107104
state: item.state,
105+
is_default: item.is_default,
108106
provider: item.provider
109107
}));
110108
setClusterData({
@@ -193,16 +191,9 @@ const Workers: React.FC = () => {
193191
});
194192

195193
const handleOnAddWorker = () => {
196-
let currentData = clusterData.list.find(
197-
(item) =>
198-
item.provider === ProviderValueMap.Docker &&
199-
item.state === ClusterStatusValueMap.Ready
200-
);
201-
if (!currentData) {
202-
currentData = clusterData.list[0];
203-
}
204-
if (currentData) {
205-
handleAddWorker(currentData as ClusterListItem);
194+
const targetCluster = checkDefaultCluster(clusterData.list);
195+
if (targetCluster) {
196+
handleAddWorker(targetCluster as ClusterListItem);
206197
} else {
207198
message.info(intl.formatMessage({ id: 'noresult.resources.cluster' }));
208199
}

0 commit comments

Comments
 (0)