fix: add worker to default cluster
This commit is contained in:
@@ -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
|
||||
};
|
||||
|
||||
@@ -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' }));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user