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