95 lines
2.3 KiB
TypeScript
95 lines
2.3 KiB
TypeScript
import { clusterListAtom, workerListAtom } from '@/atoms/models';
|
|
import { queryClusterList } from '@/pages/cluster-management/apis';
|
|
import { queryWorkersList } from '@/pages/resources/apis';
|
|
import { useAtom } from 'jotai';
|
|
import { useState } from 'react';
|
|
|
|
/**
|
|
* Currently fetch the cluster list and worker list for checking resource existence.
|
|
* If there is no cluster or no worker, introduct the use to create/add them.
|
|
* @returns
|
|
*/
|
|
export default function useClusterList() {
|
|
const [clusterList, setClusterList] = useState<
|
|
{
|
|
label: string;
|
|
value: number;
|
|
id: number;
|
|
state: string;
|
|
provider: string;
|
|
}[]
|
|
>([]);
|
|
const [workerList, setWorkerList] = useState<
|
|
{
|
|
cluster_id: number;
|
|
state: string;
|
|
label: string;
|
|
value: number;
|
|
id: number;
|
|
labels: { [key: string]: string };
|
|
name: string;
|
|
}[]
|
|
>([]);
|
|
const [clustersAtom, setClusterListAtom] = useAtom(clusterListAtom);
|
|
const [workersAtom, setWorkerListAtom] = useAtom(workerListAtom);
|
|
|
|
const fetchClusterList = async () => {
|
|
try {
|
|
const res = await queryClusterList({ page: -1 });
|
|
const list = res?.items?.map((item: any) => ({
|
|
label: item.name,
|
|
value: item.id,
|
|
id: item.id,
|
|
state: item.state,
|
|
provider: item.provider
|
|
}));
|
|
return list;
|
|
} catch (error) {
|
|
return [];
|
|
}
|
|
};
|
|
|
|
const fetchWorkerList = async () => {
|
|
try {
|
|
const res = await queryWorkersList({ page: -1 });
|
|
const list = res?.items?.map((item: any) => ({
|
|
cluster_id: item.cluster_id,
|
|
state: item.state,
|
|
label: item.name,
|
|
value: item.id,
|
|
id: item.id,
|
|
labels: item.labels || {},
|
|
name: item.name
|
|
}));
|
|
return list;
|
|
} catch (error) {
|
|
return [];
|
|
}
|
|
};
|
|
|
|
const fetchAll = async () => {
|
|
const [clusters, workers] = await Promise.all([
|
|
fetchClusterList(),
|
|
fetchWorkerList()
|
|
]);
|
|
setClusterList(clusters);
|
|
setWorkerList(workers);
|
|
setClusterListAtom(clusters);
|
|
setWorkerListAtom(workers);
|
|
return {
|
|
hasClusters: clusters.length > 0,
|
|
hasWorkers: workers.length > 0
|
|
};
|
|
};
|
|
|
|
return {
|
|
clusterList,
|
|
workerList,
|
|
clustersAtom,
|
|
workersAtom,
|
|
fetchAll,
|
|
fetchWorkerList,
|
|
fetchClusterList
|
|
};
|
|
}
|