This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 27d577702c [INLONG-10008][Dashboard][Manager] Supplement fields of
MongoDB data source for Dashboard (#10009)
27d577702c is described below
commit 27d577702cdebff218d24f4e16a23a9947b029be
Author: haifxu <[email protected]>
AuthorDate: Fri Apr 19 12:33:55 2024 +0800
[INLONG-10008][Dashboard][Manager] Supplement fields of MongoDB data source
for Dashboard (#10009)
---
.../src/plugins/sources/defaults/Mongodb.ts | 126 ++++++++++++++++++++-
inlong-dashboard/src/ui/locales/cn.json | 3 +
inlong-dashboard/src/ui/locales/en.json | 3 +
.../manager/pojo/source/mongodb/MongoDBSource.java | 3 +
.../pojo/source/mongodb/MongoDBSourceDTO.java | 3 +
.../pojo/source/mongodb/MongoDBSourceRequest.java | 3 +
6 files changed, 135 insertions(+), 6 deletions(-)
diff --git a/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
index 2c3a8ba33d..3f2b614ad2 100644
--- a/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
+++ b/inlong-dashboard/src/plugins/sources/defaults/Mongodb.ts
@@ -21,6 +21,8 @@ import { DataWithBackend } from '@/plugins/DataWithBackend';
import { RenderRow } from '@/plugins/RenderRow';
import { RenderList } from '@/plugins/RenderList';
import { SourceInfo } from '../common/SourceInfo';
+import rulesPattern from '@/core/utils/pattern';
+import i18n from '@/i18n';
const { I18n } = DataWithBackend;
const { FieldDecorator, SyncField, IngestionField } = RenderRow;
@@ -30,11 +32,102 @@ export default class MongodbSource
extends SourceInfo
implements DataWithBackend, RenderRow, RenderList
{
+ @FieldDecorator({
+ type: 'select',
+ rules: [{ required: true }],
+ props: values => ({
+ disabled: Boolean(values.id),
+ showSearch: true,
+ allowClear: true,
+ filterOption: false,
+ options: {
+ requestTrigger: ['onOpen', 'onSearch'],
+ requestService: keyword => ({
+ url: '/cluster/list',
+ method: 'POST',
+ data: {
+ keyword,
+ type: 'AGENT',
+ pageNum: 1,
+ pageSize: 10,
+ },
+ }),
+ requestParams: {
+ formatResult: result =>
+ result?.list?.map(item => ({
+ ...item,
+ label: item.displayName,
+ value: item.name,
+ })),
+ },
+ },
+ onChange: (value, option) => {
+ return {
+ clusterId: option.id,
+ };
+ },
+ }),
+ })
+ @ColumnDecorator()
+ @IngestionField()
+ @I18n('meta.Sources.File.ClusterName')
+ inlongClusterName: string;
+
+ @FieldDecorator({
+ type: 'text',
+ hidden: true,
+ })
+ @I18n('clusterId')
+ @IngestionField()
+ clusterId: number;
+
+ @FieldDecorator({
+ type: 'select',
+ rules: [
+ {
+ pattern: rulesPattern.ip,
+ message: i18n.t('meta.Sources.File.IpRule'),
+ required: true,
+ },
+ ],
+ props: values => ({
+ disabled: Boolean(values.id),
+ showSearch: true,
+ allowClear: true,
+ filterOption: false,
+ options: {
+ requestTrigger: ['onOpen', 'onSearch'],
+ requestService: keyword => ({
+ url: '/cluster/node/list',
+ method: 'POST',
+ data: {
+ keyword,
+ parentId: values.clusterId,
+ pageNum: 1,
+ pageSize: 10,
+ },
+ }),
+ requestParams: {
+ formatResult: result =>
+ result?.list?.map(item => ({
+ ...item,
+ label: item.ip,
+ value: item.ip,
+ })),
+ },
+ },
+ }),
+ })
+ @ColumnDecorator()
+ @IngestionField()
+ @I18n('meta.Sources.File.DataSourceIP')
+ agentIp: string;
+
@FieldDecorator({
type: 'input',
rules: [{ required: true }],
props: values => ({
- disabled: values?.status === 101,
+ disabled: Boolean(values.id),
placeholder: 'localhost:27017,localhost:27018',
}),
})
@@ -48,7 +141,7 @@ export default class MongodbSource
type: 'input',
rules: [{ required: true }],
props: values => ({
- disabled: values?.status === 101,
+ disabled: Boolean(values.id),
}),
})
@ColumnDecorator()
@@ -61,7 +154,7 @@ export default class MongodbSource
type: 'password',
rules: [{ required: true }],
props: values => ({
- disabled: values?.status === 101,
+ disabled: Boolean(values.id),
}),
})
@SyncField()
@@ -73,7 +166,7 @@ export default class MongodbSource
type: 'input',
rules: [{ required: true }],
props: values => ({
- disabled: values?.status === 101,
+ disabled: Boolean(values.id),
}),
})
@SyncField()
@@ -85,7 +178,7 @@ export default class MongodbSource
type: 'input',
rules: [{ required: true }],
props: values => ({
- disabled: values?.status === 101,
+ disabled: Boolean(values.id),
}),
})
@SyncField()
@@ -93,10 +186,31 @@ export default class MongodbSource
@I18n('meta.Sources.Mongodb.Collection')
collection: string;
+ @FieldDecorator({
+ type: 'radio',
+ props: values => ({
+ disabled: Boolean(values.id),
+ initialValue: 'initial',
+ options: [
+ {
+ label: i18n.t('meta.Sources.Mongodb.SnapshotMode.Initial'),
+ value: 'initial',
+ },
+ {
+ label: i18n.t('meta.Sources.Mongodb.SnapshotMode.Never'),
+ value: 'never',
+ },
+ ],
+ }),
+ })
+ @IngestionField()
+ @I18n('meta.Sources.Mongodb.SnapshotMode')
+ snapshotMode: string;
+
@FieldDecorator({
type: 'input',
props: values => ({
- disabled: values?.status === 101,
+ disabled: Boolean(values.id),
}),
})
@SyncField()
diff --git a/inlong-dashboard/src/ui/locales/cn.json
b/inlong-dashboard/src/ui/locales/cn.json
index 614a2e73cd..e11a79fb27 100644
--- a/inlong-dashboard/src/ui/locales/cn.json
+++ b/inlong-dashboard/src/ui/locales/cn.json
@@ -61,6 +61,9 @@
"meta.Sources.Mongodb.Password": "密码",
"meta.Sources.Mongodb.Database": "数据库名",
"meta.Sources.Mongodb.Collection": "集合名称",
+ "meta.Sources.Mongodb.SnapshotMode": "读取模式",
+ "meta.Sources.Mongodb.SnapshotMode.Initial": "全量 + 增量",
+ "meta.Sources.Mongodb.SnapshotMode.Never": "增量",
"meta.Sources.Mongodb.PrimaryKey": "主键",
"meta.Sources.Oracle.Hostname": "服务器主机",
"meta.Sources.Oracle.Port": "端口",
diff --git a/inlong-dashboard/src/ui/locales/en.json
b/inlong-dashboard/src/ui/locales/en.json
index 57bae06cb5..90e438b3ff 100644
--- a/inlong-dashboard/src/ui/locales/en.json
+++ b/inlong-dashboard/src/ui/locales/en.json
@@ -61,6 +61,9 @@
"meta.Sources.Mongodb.Password": "Password",
"meta.Sources.Mongodb.Database": "Database",
"meta.Sources.Mongodb.Collection": "Collection",
+ "meta.Sources.Mongodb.SnapshotMode": "Snapshot Mode",
+ "meta.Sources.Mongodb.SnapshotMode.Initial": "Initial",
+ "meta.Sources.Mongodb.SnapshotMode.Never": "Never",
"meta.Sources.Mongodb.PrimaryKey": "Primary key",
"meta.Sources.Oracle.Hostname": "Hostname",
"meta.Sources.Oracle.Port": "Port",
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
index 1e6389d429..dc77de9737 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSource.java
@@ -58,6 +58,9 @@ public class MongoDBSource extends StreamSource {
@ApiModelProperty("MongoDB collection name")
private String collection;
+ @ApiModelProperty("Debezium snapshot mode. Available options are initial
and never, default is initial")
+ private String snapshotMode;
+
@ApiModelProperty("Primary key must be shared by all tables")
private String primaryKey;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
index 97e702180d..9e83f8dfea 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceDTO.java
@@ -57,6 +57,9 @@ public class MongoDBSourceDTO {
@ApiModelProperty("MongoDB collection name")
private String collection;
+ @ApiModelProperty("Debezium snapshot mode. Available options are initial
and never, default is initial")
+ private String snapshotMode;
+
@ApiModelProperty("Primary key must be shared by all tables")
private String primaryKey;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
index 8959052f80..5221e59b4c 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/source/mongodb/MongoDBSourceRequest.java
@@ -53,6 +53,9 @@ public class MongoDBSourceRequest extends SourceRequest {
@ApiModelProperty("MongoDB collection name")
private String collection;
+ @ApiModelProperty("Debezium snapshot mode. Available options are initial
and never, default is initial")
+ private String snapshotMode = "initial";
+
@ApiModelProperty("Primary key must be shared by all tables")
private String primaryKey;