{intl.formatMessage({ id: 'clusters.create.execCommand' })}
-
+ {provider === ProviderValueMap.Kubernetes ? (
+
+ ) : (
+
+ )}
{intl.formatMessage({ id: 'clusters.create.supportedGpu' })}
diff --git a/src/pages/cluster-management/components/cloud-provider-form.tsx b/src/pages/cluster-management/components/cloud-provider-form.tsx
index 4eb6de29..65103fc5 100644
--- a/src/pages/cluster-management/components/cloud-provider-form.tsx
+++ b/src/pages/cluster-management/components/cloud-provider-form.tsx
@@ -55,6 +55,7 @@ interface CloudProviderProps {
}
const NotFoundContent: React.FC<{ loading: boolean }> = ({ loading }) => {
+ const intl = useIntl();
if (loading) {
return (
@@ -62,7 +63,11 @@ const NotFoundContent: React.FC<{ loading: boolean }> = ({ loading }) => {
);
}
- return
No regions available;
+ return (
+
+ {intl.formatMessage({ id: 'clusters.create.noRegions' })}
+
+ );
};
const optionRender = (
@@ -159,6 +164,7 @@ const CloudProvider: React.FC
= (props) => {
]}
>
= (props) => {
>
{
- return No instance type available;
+ const intl = useIntl();
+ return (
+
+ {intl.formatMessage({ id: 'clusters.create.noInstanceTypes' })}
+
+ );
+};
+
+const NotFoundImageContent = () => {
+ const intl = useIntl();
+ return (
+
+ {intl.formatMessage({ id: 'clusters.create.noImages' })}
+
+ );
};
export const RenderInstanceOption = (option: any) => {
@@ -171,7 +186,8 @@ const PoolForm: React.FC = forwardRef((props, ref) => {
}
}, [currentData]);
- const labelRender = (data: { label: string; value: string }) => {
+ const imageLabelRender = (data: { label: string; value: string }) => {
+ console.log('imageLabelRender========', data);
if (action === PageAction.EDIT) {
return currentData?.image_name || currentData?.os_image;
}
@@ -187,7 +203,8 @@ const PoolForm: React.FC = forwardRef((props, ref) => {
const handleOsImageChange = (value: string) => {
form.setFieldsValue({
- image_name: osImageList.find((item) => item.value === value)?.label
+ image_name:
+ osImageList.find((item) => item.value === value)?.label || value
});
};
@@ -215,6 +232,14 @@ const PoolForm: React.FC = forwardRef((props, ref) => {
);
};
+ const filterImageOption = (inputValue: string, option: any) => {
+ return (
+ option.label.toLowerCase().includes(inputValue.toLowerCase()) ||
+ option.value.toLowerCase().includes(inputValue.toLowerCase()) ||
+ option.description.toLowerCase().includes(inputValue.toLowerCase())
+ );
+ };
+
useImperativeHandle(ref, () => ({
resetFields: () => {
form.resetFields();
@@ -337,6 +362,9 @@ const PoolForm: React.FC = forwardRef((props, ref) => {
]}
>
= forwardRef((props, ref) => {
}
]}
>
- }
onChange={handleOsImageChange}
+ filterOption={filterImageOption}
optionRender={RenderInstanceOption}
- labelRender={labelRender}
+ labelRender={imageLabelRender}
options={osImageList}
disabled={action === PageAction.EDIT}
label={intl.formatMessage({
id: 'clusters.workerpool.osImage'
})}
required
- >
+ >
diff --git a/src/pages/cluster-management/credentials.tsx b/src/pages/cluster-management/credentials.tsx
index c4610b1f..958b12e2 100644
--- a/src/pages/cluster-management/credentials.tsx
+++ b/src/pages/cluster-management/credentials.tsx
@@ -16,7 +16,7 @@ import {
updateCredential
} from './apis';
import AddModal from './components/add-credential';
-import { ProviderLabelMap, ProviderValueMap } from './config';
+import { ProviderLabelMap, ProviderType, ProviderValueMap } from './config';
import {
CredentialFormData as FormData,
CredentialListItem as ListItem
@@ -55,13 +55,13 @@ const Credentials: React.FC = () => {
const intl = useIntl();
const [openModalStatus, setOpenModalStatus] = useState<{
- provider: string;
+ provider: ProviderType;
open: boolean;
action: PageActionType;
title: string;
currentData: ListItem | undefined;
}>({
- provider: '',
+ provider: null,
open: false,
action: PageAction.CREATE,
title: '',
@@ -70,7 +70,7 @@ const Credentials: React.FC = () => {
const handleAddCredential = (item: { key: string; label: string }) => {
setOpenModalStatus({
- provider: item.key,
+ provider: item.key as ProviderType,
open: true,
action: PageAction.CREATE,
title: intl.formatMessage(
diff --git a/src/pages/cluster-management/hooks/use-cluster-columns.tsx b/src/pages/cluster-management/hooks/use-cluster-columns.tsx
index 0c6c2fe1..cc8537e6 100644
--- a/src/pages/cluster-management/hooks/use-cluster-columns.tsx
+++ b/src/pages/cluster-management/hooks/use-cluster-columns.tsx
@@ -1,9 +1,9 @@
// columns.ts
import AutoTooltip from '@/components/auto-tooltip';
import DropdownButtons from '@/components/drop-down-buttons';
+import { SealColumnProps } from '@/components/seal-table/types';
import StatusTag from '@/components/status-tag';
import { Link, useIntl } from '@umijs/max';
-import { ColumnsType } from 'antd/es/table';
import dayjs from 'dayjs';
import { useMemo } from 'react';
import {
@@ -25,7 +25,7 @@ const setActionsItems = (row: ClusterListItem) => {
const useClusterColumns = (
handleSelect: (val: string, record: ClusterListItem) => void
-): ColumnsType => {
+): SealColumnProps[] => {
const intl = useIntl();
return useMemo(() => {
diff --git a/src/pages/cluster-management/hooks/use-provider-regions.ts b/src/pages/cluster-management/hooks/use-provider-regions.ts
index 5b815af8..cd202066 100644
--- a/src/pages/cluster-management/hooks/use-provider-regions.ts
+++ b/src/pages/cluster-management/hooks/use-provider-regions.ts
@@ -130,6 +130,7 @@ export const useProviderRegions = () => {
};
});
setAllInstanceTypes(list);
+ return list;
} catch (error) {
setAllInstanceTypes([]);
}
@@ -155,18 +156,21 @@ export const useProviderRegions = () => {
};
});
setAllOSImageList(list);
+ return list;
} catch (error) {}
};
- const updateInstanceTypes = (region: string) => {
- const sizes = allInstanceTypes.filter((item) =>
+ const updateInstanceTypes = (region: string, allTypes?: any[]) => {
+ const sizes = (allTypes || allInstanceTypes).filter((item) =>
item.regions.includes(region)
);
setInstanceTypes(sizes);
};
- const updateOSImages = (region: string) => {
- const list = allOSImageList.filter((item) => item.regions.includes(region));
+ const updateOSImages = (region: string, allImages?: any[]) => {
+ const list = (allImages || allOSImageList).filter((item) =>
+ item.regions.includes(region)
+ );
setOSImageList(list);
};
diff --git a/src/pages/cluster-management/step-forms/worker-pools-form.tsx b/src/pages/cluster-management/step-forms/worker-pools-form.tsx
index 7e110f17..b0eb6062 100644
--- a/src/pages/cluster-management/step-forms/worker-pools-form.tsx
+++ b/src/pages/cluster-management/step-forms/worker-pools-form.tsx
@@ -100,7 +100,6 @@ const WorkerPoolsForm = forwardRef((props: WorkerPoolsFormProps, ref) => {
const gatherFormValues = (results: PromiseSettledResult[]) => {
const resultList = results.map((result: PromiseSettledResult) => {
- console.log('gatherFormValues========', results);
if (result.status === 'fulfilled') {
return result.value;
}
@@ -109,8 +108,8 @@ const WorkerPoolsForm = forwardRef((props: WorkerPoolsFormProps, ref) => {
}
return {};
});
-
- return resultList;
+ console.log('gatherFormValues========', resultList);
+ return resultList.filter((item) => item);
};
const validateFields = async () => {
diff --git a/src/pages/resources/config/index.ts b/src/pages/resources/config/index.ts
index ddbb03a2..5a4b6d50 100644
--- a/src/pages/resources/config/index.ts
+++ b/src/pages/resources/config/index.ts
@@ -17,7 +17,9 @@ export const WorkerStatusMapValue = {
[WorkerStatusMap.unreachable]: 'Unreachable',
[WorkerStatusMap.provisioning]: 'Provisioning',
[WorkerStatusMap.deleting]: 'Deleting',
- [WorkerStatusMap.error]: 'Error'
+ [WorkerStatusMap.error]: 'Error',
+ [WorkerStatusMap.provisioned]: 'Provisioned',
+ [WorkerStatusMap.pending]: 'Pending'
};
export const status: any = {