feat: new deployment provider: proxmoxve

This commit is contained in:
Fu Diwei
2025-05-09 20:53:25 +08:00
parent 26359b9d16
commit f63ee41405
27 changed files with 465 additions and 51 deletions

View File

@@ -57,6 +57,7 @@ import DeployNodeConfigFormJDCloudLiveConfig from "./DeployNodeConfigFormJDCloud
import DeployNodeConfigFormJDCloudVODConfig from "./DeployNodeConfigFormJDCloudVODConfig";
import DeployNodeConfigFormKubernetesSecretConfig from "./DeployNodeConfigFormKubernetesSecretConfig";
import DeployNodeConfigFormLocalConfig from "./DeployNodeConfigFormLocalConfig";
import DeployNodeConfigFormProxmoxVEConfig from "./DeployNodeConfigFormProxmoxVEConfig";
import DeployNodeConfigFormQiniuCDNConfig from "./DeployNodeConfigFormQiniuCDNConfig";
import DeployNodeConfigFormQiniuKodoConfig from "./DeployNodeConfigFormQiniuKodoConfig";
import DeployNodeConfigFormQiniuPiliConfig from "./DeployNodeConfigFormQiniuPiliConfig";
@@ -259,6 +260,8 @@ const DeployNodeConfigForm = forwardRef<DeployNodeConfigFormInstance, DeployNode
return <DeployNodeConfigFormKubernetesSecretConfig {...nestedFormProps} />;
case DEPLOYMENT_PROVIDERS.LOCAL:
return <DeployNodeConfigFormLocalConfig {...nestedFormProps} />;
case DEPLOYMENT_PROVIDERS.PROXMOXVE:
return <DeployNodeConfigFormProxmoxVEConfig {...nestedFormProps} />;
case DEPLOYMENT_PROVIDERS.QINIU_CDN:
return <DeployNodeConfigFormQiniuCDNConfig {...nestedFormProps} />;
case DEPLOYMENT_PROVIDERS.QINIU_KODO:

View File

@@ -0,0 +1,66 @@
import { useTranslation } from "react-i18next";
import { Form, type FormInstance, Input, Switch } from "antd";
import { createSchemaFieldRule } from "antd-zod";
import { z } from "zod";
type DeployNodeConfigFormProxmoxVEConfigFieldValues = Nullish<{
nodeName: string;
autoRestart?: boolean;
}>;
export type DeployNodeConfigFormProxmoxVEConfigProps = {
form: FormInstance;
formName: string;
disabled?: boolean;
initialValues?: DeployNodeConfigFormProxmoxVEConfigFieldValues;
onValuesChange?: (values: DeployNodeConfigFormProxmoxVEConfigFieldValues) => void;
};
const initFormModel = (): DeployNodeConfigFormProxmoxVEConfigFieldValues => {
return {
autoRestart: true,
};
};
const DeployNodeConfigFormProxmoxVEConfig = ({
form: formInst,
formName,
disabled,
initialValues,
onValuesChange,
}: DeployNodeConfigFormProxmoxVEConfigProps) => {
const { t } = useTranslation();
const formSchema = z.object({
nodeName: z
.string({ message: t("workflow_node.deploy.form.proxmoxve_node_name.placeholder") })
.nonempty(t("workflow_node.deploy.form.proxmoxve_node_name.placeholder")),
autoRestart: z.boolean().nullish(),
});
const formRule = createSchemaFieldRule(formSchema);
const handleFormChange = (_: unknown, values: z.infer<typeof formSchema>) => {
onValuesChange?.(values);
};
return (
<Form
form={formInst}
disabled={disabled}
initialValues={initialValues ?? initFormModel()}
layout="vertical"
name={formName}
onValuesChange={handleFormChange}
>
<Form.Item name="nodeName" label={t("workflow_node.deploy.form.proxmoxve_node_name.label")} rules={[formRule]}>
<Input placeholder={t("workflow_node.deploy.form.proxmoxve_node_name.placeholder")} />
</Form.Item>
<Form.Item name="autoRestart" label={t("workflow_node.deploy.form.proxmoxve_auto_restart.label")} rules={[formRule]}>
<Switch />
</Form.Item>
</Form>
);
};
export default DeployNodeConfigFormProxmoxVEConfig;