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}

Reply via email to