This is an automated email from the ASF dual-hosted git repository. dockerzhang pushed a commit to branch branch-1.5 in repository https://gitbox.apache.org/repos/asf/inlong.git
commit 9e678266313b3025bfd5416b6adb413a4754a548 Author: Lizhen <88174078+bluew...@users.noreply.github.com> AuthorDate: Thu Jan 5 14:21:15 2023 +0800 [INLONG-7139][Dashboard] Cluster and node support for connectivity testing (#7145) --- inlong-dashboard/src/locales/cn.json | 5 +++- inlong-dashboard/src/locales/en.json | 5 +++- .../src/pages/Clusters/CreateModal.tsx | 29 +++++++++++++++++++-- inlong-dashboard/src/pages/Nodes/DetailModal.tsx | 30 ++++++++++++++++++++-- 4 files changed, 63 insertions(+), 6 deletions(-) diff --git a/inlong-dashboard/src/locales/cn.json b/inlong-dashboard/src/locales/cn.json index 31a32a43f..bbb003abe 100644 --- a/inlong-dashboard/src/locales/cn.json +++ b/inlong-dashboard/src/locales/cn.json @@ -3,6 +3,7 @@ "basic.Detail": "详情", "basic.Operating": "操作", "basic.OperatingSuccess": "操作成功", + "basic.ConnectionSuccess": "连接成功", "basic.Save": "保存", "basic.Cancel": "取消", "basic.Create": "新建", @@ -587,6 +588,7 @@ "pages.Clusters.Tag": "集群标签", "pages.Clusters.InCharges": "责任人", "pages.Clusters.Description": "集群描述", + "pages.Clusters.TestConnection": "测试连接", "pages.Clusters.Node.Name": "节点", "pages.Clusters.Node.Port": "端口", "pages.Clusters.Node.ProtocolType": "协议类型", @@ -636,5 +638,6 @@ "pages.ApprovalManagement.Approvers": "审批者", "pages.ApprovalManagement.Creator": "创建人", "pages.ApprovalManagement.Modifier": "修改人", - "pages.ApprovalManagement.CreateProcess": "新建流程" + "pages.ApprovalManagement.CreateProcess": "新建流程", + "pages.Nodes.TestConnection": "测试连接" } diff --git a/inlong-dashboard/src/locales/en.json b/inlong-dashboard/src/locales/en.json index 20eac2c6d..1b8551a20 100644 --- a/inlong-dashboard/src/locales/en.json +++ b/inlong-dashboard/src/locales/en.json @@ -3,6 +3,7 @@ "basic.Detail": "Detail", "basic.Operating": "Operate", "basic.OperatingSuccess": "Operating Success", + "basic.ConnectionSuccess": "Connection Success", "basic.Save": "Save", "basic.Cancel": "Cancel", "basic.Create": "Create", @@ -587,6 +588,7 @@ "pages.Clusters.Tag": "Cluster Tag", "pages.Clusters.InCharges": "Owners", "pages.Clusters.Description": "Description", + "pages.Clusters.TestConnection": "Test Connection", "pages.Clusters.Node.Name": "Node", "pages.Clusters.Node.Port": "Port", "pages.Clusters.Node.ProtocolType": "Protocol Type", @@ -636,5 +638,6 @@ "pages.ApprovalManagement.Approvers": "Approvers", "pages.ApprovalManagement.Creator": "Creator Name", "pages.ApprovalManagement.Modifier": "Modifier Name", - "pages.ApprovalManagement.CreateProcess": "Create Process" + "pages.ApprovalManagement.CreateProcess": "Create Process", + "pages.Nodes.TestConnection": "Test Connection" } diff --git a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx b/inlong-dashboard/src/pages/Clusters/CreateModal.tsx index 1c442ae82..252c99445 100644 --- a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx +++ b/inlong-dashboard/src/pages/Clusters/CreateModal.tsx @@ -18,7 +18,7 @@ */ import React, { useState, useMemo } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message, Button } from 'antd'; import { ModalProps } from 'antd/es/modal'; import FormGenerator, { useForm } from '@/components/FormGenerator'; import { useRequest, useUpdateEffect } from '@/hooks'; @@ -78,6 +78,21 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => { message.success(i18n.t('basic.OperatingSuccess')); }; + const testConnection = async () => { + const values = await form.validateFields(); + const submitData = { + ...values, + inCharges: values.inCharges?.join(','), + clusterTags: values.clusterTags?.join(','), + }; + await request({ + url: '/cluster/testConnection', + method: 'POST', + data: submitData, + }); + message.success(i18n.t('basic.ConnectionSuccess')); + }; + useUpdateEffect(() => { if (modalProps.visible) { if (id) { @@ -101,7 +116,17 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => { <Modal {...modalProps} title={id ? i18n.t('pages.Clusters.Edit') : i18n.t('pages.Clusters.Create')} - onOk={onOk} + footer={[ + <Button key="cancel" onClick={modalProps.onCancel}> + {i18n.t('basic.Cancel')} + </Button>, + <Button key="save" type="primary" onClick={onOk}> + {i18n.t('basic.Save')} + </Button>, + <Button key="run" type="primary" onClick={testConnection}> + {i18n.t('pages.Clusters.TestConnection')} + </Button>, + ]} > <FormGenerator content={content} diff --git a/inlong-dashboard/src/pages/Nodes/DetailModal.tsx b/inlong-dashboard/src/pages/Nodes/DetailModal.tsx index 621157118..4afdc4371 100644 --- a/inlong-dashboard/src/pages/Nodes/DetailModal.tsx +++ b/inlong-dashboard/src/pages/Nodes/DetailModal.tsx @@ -18,13 +18,14 @@ */ import React, { useState, useMemo } from 'react'; -import { Modal, message } from 'antd'; +import { Modal, message, Button } from 'antd'; import { ModalProps } from 'antd/es/modal'; import FormGenerator, { useForm } from '@/components/FormGenerator'; import { useUpdateEffect } from '@/hooks'; import { dao } from '@/metas/nodes'; import { useDefaultMeta, useLoadMeta, NodeMetaType } from '@/metas'; import i18n from '@/i18n'; +import request from '@/utils/request'; const { useFindNodeDao, useSaveNodeDao } = dao; @@ -63,6 +64,21 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => { message.success(i18n.t('basic.OperatingSuccess')); }; + const testConnection = async () => { + const values = await form.validateFields(); + const submitData = { + ...values, + inCharges: values.inCharges?.join(','), + clusterTags: values.clusterTags?.join(','), + }; + await request({ + url: '/node/testConnection', + method: 'POST', + data: submitData, + }); + message.success(i18n.t('basic.ConnectionSuccess')); + }; + useUpdateEffect(() => { if (modalProps.visible) { // open @@ -88,7 +104,17 @@ const Comp: React.FC<Props> = ({ id, defaultType, ...modalProps }) => { {...modalProps} width={720} title={id ? i18n.t('basic.Detail') : i18n.t('basic.Create')} - onOk={onOk} + footer={[ + <Button key="cancel" onClick={modalProps.onCancel}> + {i18n.t('basic.Cancel')} + </Button>, + <Button key="save" type="primary" onClick={onOk}> + {i18n.t('basic.Save')} + </Button>, + <Button key="run" type="primary" onClick={testConnection}> + {i18n.t('pages.Nodes.TestConnection')} + </Button>, + ]} > <FormGenerator content={content}