From b7106e48fa2b03fdf838f693293fa271ed675602 Mon Sep 17 00:00:00 2001 From: githublaohu <2372554140@qq.com> Date: Mon, 8 Jan 2024 15:50:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(*)1.=20=E5=AE=8C=E6=88=90=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=202.=20=E5=AE=8C=E6=88=90=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=B8=8E=E6=A8=A1=E5=9D=97=E6=90=AD=E5=BB=BA=20(#14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: jie@apache.org <2732554140@qq.com> --- .dockerignore | 2 - .gitignore | 120 +- README.md | 36 +- build.gradle | 76 - docker/Dockerfile | 22 - docs/UserGuide_CN.md | 1 - docs/UserGuide_EN.md | 1 - eventmesh-dashboard-common/pom.xml | 21 + .../eventmesh/dashboard/common/Main.java | 7 + eventmesh-dashboard-console/pom.xml | 21 + .../eventmesh/dashboard/console/Main.java | 7 + eventmesh-dashboard-core/pom.xml | 21 + .../apache/eventmesh/dashboard/core/Main.java | 7 + eventmesh-dashboard-observe/pom.xml | 21 + .../eventmesh/dashboard/observe/Main.java | 7 + eventmesh-dashboard-service/pom.xml | 21 + .../eventmesh/dashboard/service/Main.java | 7 + eventmesh-dashboard-view/.gitignore | 36 + frontend/.dockerignore | 2 - frontend/.gitignore | 131 - frontend/README.md | 54 - .../components/client/GrpcClientTable.tsx | 217 - .../components/client/HTTPClientTable.tsx | 217 - frontend/components/client/TCPClientTable.tsx | 223 - frontend/components/event/EventTable.tsx | 371 - frontend/components/eventCatalogs/Create.tsx | 137 - frontend/components/eventCatalogs/Details.tsx | 121 - frontend/components/eventCatalogs/constant.ts | 27 - frontend/components/eventCatalogs/types.ts | 40 - frontend/components/index/Configuration.tsx | 249 - frontend/components/index/Endpoint.tsx | 105 - frontend/components/metrics/MetricsTable.tsx | 313 - frontend/components/navigation/MenuItem.tsx | 115 - frontend/components/navigation/Menus.tsx | 179 - .../components/navigation/MenusMobile.tsx | 58 - frontend/components/navigation/Sidebar.tsx | 63 - .../components/registry/RegistryTable.tsx | 170 - frontend/components/topic/TopicTable.tsx | 275 - frontend/components/workflow/Create.tsx | 136 - .../components/workflow/Details/Details.tsx | 285 - .../components/workflow/Details/Instances.tsx | 164 - frontend/components/workflow/Details/index.ts | 22 - frontend/components/workflow/constant.ts | 41 - frontend/components/workflow/types.ts | 54 - frontend/context/context.tsx | 87 - frontend/context/reducer.ts | 40 - frontend/context/type.ts | 40 - frontend/docker/Dockerfile | 10 - frontend/docker/default.conf | 13 - frontend/next-env.d.ts | 5 - frontend/next.config.js | 29 - frontend/package-lock.json | 5975 ----------------- frontend/package.json | 46 - frontend/pages/_app.tsx | 46 - frontend/pages/_document.tsx | 38 - frontend/pages/event.tsx | 33 - frontend/pages/eventCatalogs.tsx | 223 - frontend/pages/grpc.tsx | 33 - frontend/pages/http.tsx | 33 - frontend/pages/index.tsx | 35 - frontend/pages/metrics.tsx | 33 - frontend/pages/registry.tsx | 33 - frontend/pages/tcp.tsx | 33 - frontend/pages/topic.tsx | 33 - frontend/pages/workflows.tsx | 375 -- frontend/public/favicon.ico | Bin 25931 -> 0 bytes frontend/static/images/logo.png | Bin 58522 -> 0 bytes frontend/tsconfig.json | 20 - gradle/wrapper/gradle-wrapper.jar | Bin 63375 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 24 - gradlew | 248 - gradlew.bat | 92 - pom.xml | 96 + settings.gradle | 18 - .../EventMeshDashboardApplication.java | 30 - .../dashboard/config/AdminProperties.java | 83 - .../dashboard/config/BeanTypeConfig.java | 83 - .../dashboard/constant/ConfigConst.java | 40 - .../dashboard/constant/NacosConst.java | 43 - .../controller/ConnectionController.java | 51 - .../controller/SubscriptionController.java | 72 - .../dashboard/controller/TopicController.java | 82 - .../dashboard/dto/CreateTopicRequest.java | 35 - .../dashboard/dto/DeleteTopicRequest.java | 35 - .../eventmesh/dashboard/dto/Result.java | 144 - .../eventmesh/dashboard/enums/Status.java | 91 - .../dashboard/exception/BaseException.java | 54 - .../exception/EventMeshAdminException.java | 40 - .../exception/EventMeshException.java | 31 - .../exception/GlobalExceptionHandler.java | 62 - .../dashboard/exception/MetaException.java | 44 - .../dashboard/model/ConnectionInfo.java | 22 - .../dashboard/model/SubscriptionInfo.java | 35 - .../dashboard/model/TopicProperties.java | 40 - .../dashboard/service/ConnectionService.java | 28 - .../service/SubscriptionService.java | 36 - .../dashboard/service/TopicService.java | 38 - .../service/meta/EtcdConnectionService.java | 30 - .../service/meta/EtcdSubscriptionService.java | 43 - .../service/meta/NacosConnectionService.java | 34 - .../meta/NacosSubscriptionService.java | 196 - .../service/store/RocketmqTopicService.java | 58 - .../dashboard/util/ExceptionUtil.java | 35 - src/main/resources/application.yml | 64 - src/main/resources/logback.xml | 50 - .../EventMeshDashboardApplicationTests.java | 30 - 106 files changed, 393 insertions(+), 13260 deletions(-) delete mode 100644 .dockerignore delete mode 100644 build.gradle delete mode 100644 docker/Dockerfile delete mode 100644 docs/UserGuide_CN.md delete mode 100644 docs/UserGuide_EN.md create mode 100644 eventmesh-dashboard-common/pom.xml create mode 100644 eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/Main.java create mode 100644 eventmesh-dashboard-console/pom.xml create mode 100644 eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/Main.java create mode 100644 eventmesh-dashboard-core/pom.xml create mode 100644 eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/Main.java create mode 100644 eventmesh-dashboard-observe/pom.xml create mode 100644 eventmesh-dashboard-observe/src/main/java/org/apache/eventmesh/dashboard/observe/Main.java create mode 100644 eventmesh-dashboard-service/pom.xml create mode 100644 eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java create mode 100644 eventmesh-dashboard-view/.gitignore delete mode 100644 frontend/.dockerignore delete mode 100644 frontend/.gitignore delete mode 100644 frontend/README.md delete mode 100644 frontend/components/client/GrpcClientTable.tsx delete mode 100644 frontend/components/client/HTTPClientTable.tsx delete mode 100644 frontend/components/client/TCPClientTable.tsx delete mode 100644 frontend/components/event/EventTable.tsx delete mode 100644 frontend/components/eventCatalogs/Create.tsx delete mode 100644 frontend/components/eventCatalogs/Details.tsx delete mode 100644 frontend/components/eventCatalogs/constant.ts delete mode 100644 frontend/components/eventCatalogs/types.ts delete mode 100644 frontend/components/index/Configuration.tsx delete mode 100644 frontend/components/index/Endpoint.tsx delete mode 100644 frontend/components/metrics/MetricsTable.tsx delete mode 100644 frontend/components/navigation/MenuItem.tsx delete mode 100644 frontend/components/navigation/Menus.tsx delete mode 100644 frontend/components/navigation/MenusMobile.tsx delete mode 100644 frontend/components/navigation/Sidebar.tsx delete mode 100644 frontend/components/registry/RegistryTable.tsx delete mode 100644 frontend/components/topic/TopicTable.tsx delete mode 100644 frontend/components/workflow/Create.tsx delete mode 100644 frontend/components/workflow/Details/Details.tsx delete mode 100644 frontend/components/workflow/Details/Instances.tsx delete mode 100644 frontend/components/workflow/Details/index.ts delete mode 100644 frontend/components/workflow/constant.ts delete mode 100644 frontend/components/workflow/types.ts delete mode 100644 frontend/context/context.tsx delete mode 100644 frontend/context/reducer.ts delete mode 100644 frontend/context/type.ts delete mode 100644 frontend/docker/Dockerfile delete mode 100644 frontend/docker/default.conf delete mode 100644 frontend/next-env.d.ts delete mode 100644 frontend/next.config.js delete mode 100644 frontend/package-lock.json delete mode 100644 frontend/package.json delete mode 100644 frontend/pages/_app.tsx delete mode 100644 frontend/pages/_document.tsx delete mode 100644 frontend/pages/event.tsx delete mode 100644 frontend/pages/eventCatalogs.tsx delete mode 100644 frontend/pages/grpc.tsx delete mode 100644 frontend/pages/http.tsx delete mode 100644 frontend/pages/index.tsx delete mode 100644 frontend/pages/metrics.tsx delete mode 100644 frontend/pages/registry.tsx delete mode 100644 frontend/pages/tcp.tsx delete mode 100644 frontend/pages/topic.tsx delete mode 100644 frontend/pages/workflows.tsx delete mode 100644 frontend/public/favicon.ico delete mode 100644 frontend/static/images/logo.png delete mode 100644 frontend/tsconfig.json delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties delete mode 100644 gradlew delete mode 100644 gradlew.bat create mode 100644 pom.xml delete mode 100644 settings.gradle delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/EventMeshDashboardApplication.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/config/AdminProperties.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/config/BeanTypeConfig.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/constant/ConfigConst.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/constant/NacosConst.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/controller/ConnectionController.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/controller/SubscriptionController.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/controller/TopicController.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/dto/CreateTopicRequest.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/dto/DeleteTopicRequest.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/dto/Result.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/enums/Status.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/exception/BaseException.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/exception/EventMeshAdminException.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/exception/EventMeshException.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/exception/GlobalExceptionHandler.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/exception/MetaException.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/model/ConnectionInfo.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/model/SubscriptionInfo.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/model/TopicProperties.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/ConnectionService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/SubscriptionService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/TopicService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/meta/EtcdConnectionService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/meta/EtcdSubscriptionService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/meta/NacosConnectionService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/meta/NacosSubscriptionService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/service/store/RocketmqTopicService.java delete mode 100644 src/main/java/org/apache/eventmesh/dashboard/util/ExceptionUtil.java delete mode 100644 src/main/resources/application.yml delete mode 100644 src/main/resources/logback.xml delete mode 100644 src/test/java/org/apache/eventmesh/dashboard/EventMeshDashboardApplicationTests.java diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index c0f64a83..00000000 --- a/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/ -build/ diff --git a/.gitignore b/.gitignore index 63d2f1a0..b1f31d2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,29 +1,109 @@ -.gradle -build/ -!gradle/wrapper/gradle-wrapper.jar -!**/src/main/**/build/ -!**/src/test/**/build/ - -### STS ### -.apt_generated +.settings/ +.project .classpath +.target +./**/.settings/ +./**/.project +./**/.classpath +./**/target/ + + +#gitignore文件的内容 .factorypath +.DS_Store .project -.settings -.springBeans -.sts4-cache +*.prefs +.classpath +.setting/h +.settings/ +.idea/ +*.iml +*.ipr +*.iws +logs/ + +#忽略eclipse相关 +org.eclipse.core.resources.prefs +org.eclipse.jdt.core.prefs +org.eclipse.m2e.core.prefs +org.eclipse.wst.common.component +org.eclipse.wst.common.project.facet.core.xml + +#忽略java相关的文件 +*.class +*.trc +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +#忽略maven相关的文件 +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + +# Built application files +*.apk +*.ap_ + + +#忽略andriod相关的文件 +# Files for the Dalvik VM +*.dex +# Generated files bin/ -!**/src/main/**/bin/ -!**/src/test/**/bin/ +gen/ +# Gradle files +.gradle/ +build/ +*/build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ +# Log Files +*.log +# Android Studio Navigation editor temp files +.navigation/ +# Android Studio captures folder +captures/ + +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ ### IntelliJ IDEA ### -.idea +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ *.iws *.iml *.ipr -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache ### NetBeans ### /nbproject/private/ @@ -31,6 +111,12 @@ out/ /dist/ /nbdist/ /.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ ### VS Code ### .vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md index c937ce4c..1d3574c3 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,24 @@ -# Getting Started -## Build on source code -``` -cd eventmesh-dashboard -./gradlew clean bootJar -``` +## 介绍 -``` -java -jar build/libs/eventmesh-dashboard-0.0.1-SNAPSHOT.jar -``` -## Build and Run with Docker +## 业务架构 -``` -cd eventmesh-dashboard -./gradlew clean bootJar -docker build -t yourname/eventmesh-dashboard -f docker/Dockerfile . -``` -``` -docker run -d --name eventmesh-dashboard -p 8080:8080 yourname/eventmesh-dashboard -``` \ No newline at end of file +## 技术架构 + + +### 模块依赖图 + +### 模块介绍 + +1. eventmesh-dashboard-console 业务模块的代码 +2. eventmesh-dashboard-observe 监控模块的代码 +3. eventmesh-dashboard-core 对eventmesh以及相关组件的代码 +4. eventmesh-dashboard-service 公用接口 +5. eventmesh-dashboard-common 公共模块的代码 +6. eventmesh-dashboard-view 前端代码 + + +### eventmesh-dashboard-core 介绍 diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 5b676ab6..00000000 --- a/build.gradle +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -plugins { - id 'java' - id 'idea' - id 'org.springframework.boot' version '2.7.15' - id 'io.spring.dependency-management' version '1.0.15.RELEASE' -} - -group = 'org.apache.eventmesh' -version = '0.0.1-SNAPSHOT' - -java { - sourceCompatibility = '1.8' -} - -configurations { - compileOnly { - extendsFrom annotationProcessor - } -} - -repositories { - mavenCentral() - maven { url 'https://maven.aliyun.com/repository/public/' } -} - -ext { - // utility - commonsLang3Version = '3.13.0' - guavaVersion = '32.1.2-jre' // not used for now - fastjsonVersion = '2.0.40' - // swagger - springdocVersion = '1.7.0' - // unit test - mockitoVersion = '5.5.0' - // meta - nacosVersion = '2.2.4' -} - -dependencies { - // versions managed by spring.dependency-management - implementation 'org.springframework.boot:spring-boot-starter-web' - compileOnly 'org.projectlombok:lombok' - developmentOnly 'org.springframework.boot:spring-boot-devtools' - annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' - annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - - // utility - implementation "org.apache.commons:commons-lang3:${commonsLang3Version}" - implementation("com.alibaba.fastjson2:fastjson2:${fastjsonVersion}") - // swagger - implementation "org.springdoc:springdoc-openapi-ui:${springdocVersion}" - implementation "org.springdoc:springdoc-openapi-javadoc:${springdocVersion}" - annotationProcessor 'com.github.therapi:therapi-runtime-javadoc-scribe:0.15.0' - // unit test - testImplementation("org.mockito:mockito-core:${mockitoVersion}") - // meta - implementation("com.alibaba.nacos:nacos-client:${nacosVersion}") -} diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 625bdac2..00000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -FROM openjdk:8-jre-alpine -VOLUME /tmp -COPY build/libs/eventmesh-dashboard-*.jar eventmesh-dashboard.jar -ENV JAVA_OPTS="" -ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /eventmesh-dashboard.jar"] diff --git a/docs/UserGuide_CN.md b/docs/UserGuide_CN.md deleted file mode 100644 index 0ffdd02f..00000000 --- a/docs/UserGuide_CN.md +++ /dev/null @@ -1 +0,0 @@ -// TODO \ No newline at end of file diff --git a/docs/UserGuide_EN.md b/docs/UserGuide_EN.md deleted file mode 100644 index 0ffdd02f..00000000 --- a/docs/UserGuide_EN.md +++ /dev/null @@ -1 +0,0 @@ -// TODO \ No newline at end of file diff --git a/eventmesh-dashboard-common/pom.xml b/eventmesh-dashboard-common/pom.xml new file mode 100644 index 00000000..35e0ee65 --- /dev/null +++ b/eventmesh-dashboard-common/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.apache.eventmesh.dashboard + eventmesh-dashboard + 0.0.1 + + + org.apache.eventmesh.dashboard.common + eventmesh-dashboard-common + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/Main.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/Main.java new file mode 100644 index 00000000..a8b0ff7c --- /dev/null +++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/Main.java @@ -0,0 +1,7 @@ +package org.apache.eventmesh.dashboard.common; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/eventmesh-dashboard-console/pom.xml b/eventmesh-dashboard-console/pom.xml new file mode 100644 index 00000000..465db413 --- /dev/null +++ b/eventmesh-dashboard-console/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.apache.eventmesh.dashboard + eventmesh-dashboard + 0.0.1 + + + org.apache.eventmesh.dashboard.console + eventmesh-dashboard-console + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/Main.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/Main.java new file mode 100644 index 00000000..7e966a20 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/Main.java @@ -0,0 +1,7 @@ +package org.apache.eventmesh.dashboard.console; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/eventmesh-dashboard-core/pom.xml b/eventmesh-dashboard-core/pom.xml new file mode 100644 index 00000000..7192775b --- /dev/null +++ b/eventmesh-dashboard-core/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.apache.eventmesh.dashboard + eventmesh-dashboard + 0.0.1 + + + org.apache.eventmesh.dashboard.core + eventmesh-dashboard-core + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/Main.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/Main.java new file mode 100644 index 00000000..e32e92ab --- /dev/null +++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/Main.java @@ -0,0 +1,7 @@ +package org.apache.eventmesh.dashboard.core; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/eventmesh-dashboard-observe/pom.xml b/eventmesh-dashboard-observe/pom.xml new file mode 100644 index 00000000..e8c3442b --- /dev/null +++ b/eventmesh-dashboard-observe/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.apache.eventmesh.dashboard + eventmesh-dashboard + 0.0.1 + + + org.apache.eventmesh.dashboard.observe + eventmesh-dashboard-observe + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/eventmesh-dashboard-observe/src/main/java/org/apache/eventmesh/dashboard/observe/Main.java b/eventmesh-dashboard-observe/src/main/java/org/apache/eventmesh/dashboard/observe/Main.java new file mode 100644 index 00000000..1a8fac32 --- /dev/null +++ b/eventmesh-dashboard-observe/src/main/java/org/apache/eventmesh/dashboard/observe/Main.java @@ -0,0 +1,7 @@ +package org.apache.eventmesh.dashboard.observe; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/eventmesh-dashboard-service/pom.xml b/eventmesh-dashboard-service/pom.xml new file mode 100644 index 00000000..6a599d77 --- /dev/null +++ b/eventmesh-dashboard-service/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.apache.eventmesh.dashboard + eventmesh-dashboard + 0.0.1 + + + org.apache.eventmesh.dashboard.service + eventmesh-dashboard-service + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java new file mode 100644 index 00000000..0927abf9 --- /dev/null +++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/Main.java @@ -0,0 +1,7 @@ +package org.apache.eventmesh.dashboard.service; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/eventmesh-dashboard-view/.gitignore b/eventmesh-dashboard-view/.gitignore new file mode 100644 index 00000000..63d2f1a0 --- /dev/null +++ b/eventmesh-dashboard-view/.gitignore @@ -0,0 +1,36 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/frontend/.dockerignore b/frontend/.dockerignore deleted file mode 100644 index 252089de..00000000 --- a/frontend/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -out/ \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore deleted file mode 100644 index 7415ebb1..00000000 --- a/frontend/.gitignore +++ /dev/null @@ -1,131 +0,0 @@ -# https://github.com/github/gitignore/blob/main/Node.gitignore -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md deleted file mode 100644 index c6d90a59..00000000 --- a/frontend/README.md +++ /dev/null @@ -1,54 +0,0 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). - -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. - -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. - -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. - -## Getting Started with Docker - -Pull the image and run the container by following commands: - -``` -docker pull apache/eventmesh-dashboard:latest -``` - -``` -docker run -d --name eventmesh-dashboard -p 8080:80 -t apache/eventmesh-dashboard:latest -``` - -Open [http://localhost:8080](http://localhost:8080) in your browser to see the result. - -You can also build a mirror of your own by executing the following command in the root of your git repository: - -``` -docker build -t /eventmesh-dashboard:latest -f docker/Dockerfile . -``` - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/frontend/components/client/GrpcClientTable.tsx b/frontend/components/client/GrpcClientTable.tsx deleted file mode 100644 index 1ffdfeaa..00000000 --- a/frontend/components/client/GrpcClientTable.tsx +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - HStack, - Select, - Input, - Table, - Thead, - Tbody, - Tr, - Th, - Td, - TableContainer, - useToast, - Box, - Button, -} from '@chakra-ui/react'; -import axios from 'axios'; -import { useContext, useEffect, useState } from 'react'; -import { AppContext } from '../../context/context'; - -interface GrpcClient { - env: string, - subsystem: string, - url: string, - pid: number, - host: string, - port: number, - version: string, - idc: string, - group: string, - purpose: string, - protocol: string, -} - -interface GrpcClientProps { - url: string, - group: string, -} - -interface RemoveGrpcClientRequest { - url: string, -} - -const GrpcClientRow = ({ - url, group, -}: GrpcClientProps) => { - const { state } = useContext(AppContext); - - const toast = useToast(); - const [loading, setLoading] = useState(false); - const onRemoveClick = async () => { - try { - setLoading(true); - await axios.delete(`${state.endpoint}/client/grpc`, { - data: { - url, - }, - }); - setLoading(false); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to remove the gRPC Client', - description: error.message, - status: 'error', - duration: 3000, - isClosable: true, - }); - } - } - }; - - return ( - - {url} - {group} - - - - - - - ); -}; - -const GrpcClientTable = () => { - const { state } = useContext(AppContext); - - const [searchInput, setSearchInput] = useState(''); - const handleSearchInputChange = (event: React.FormEvent) => { - setSearchInput(event.currentTarget.value); - }; - - const [groupSet, setGroupSet] = useState>(new Set()); - const [groupFilter, setGroupFilter] = useState(''); - const handleGroupSelectChange = (event: React.FormEvent) => { - setGroupFilter(event.currentTarget.value); - }; - - const [GrpcClientList, setGrpcClientList] = useState([]); - const toast = useToast(); - useEffect(() => { - const fetch = async () => { - try { - const { data } = await axios.get(`${state.endpoint}/client/grpc`); - setGrpcClientList(data); - - const nextGroupSet = new Set(); - data.forEach(({ group }) => { - nextGroupSet.add(group); - }); - setGroupSet(nextGroupSet); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to fetch the list of gRPC Clients', - description: 'Unable to connect to the EventMesh daemon', - status: 'error', - duration: 3000, - isClosable: true, - }); - setGrpcClientList([]); - } - } - }; - - fetch(); - }, []); - - return ( - - - - - - - - - - - - - - - - - {GrpcClientList && GrpcClientList.filter(({ - url, group, - }) => { - if (searchInput && !url.includes(searchInput)) { - return false; - } - if (groupFilter && groupFilter !== group) { - return false; - } - return true; - }).map(({ - url, group, - }) => ( - - ))} - -
URLGroupAction
-
-
- ); -}; - -export default GrpcClientTable; diff --git a/frontend/components/client/HTTPClientTable.tsx b/frontend/components/client/HTTPClientTable.tsx deleted file mode 100644 index 832ea91b..00000000 --- a/frontend/components/client/HTTPClientTable.tsx +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - HStack, - Select, - Input, - Table, - Thead, - Tbody, - Tr, - Th, - Td, - TableContainer, - useToast, - Box, - Button, -} from '@chakra-ui/react'; -import axios from 'axios'; -import { useContext, useEffect, useState } from 'react'; -import { AppContext } from '../../context/context'; - -interface HTTPClient { - env: string, - subsystem: string, - url: string, - pid: number, - host: string, - port: number, - version: string, - idc: string, - group: string, - purpose: string, - protocol: string, -} - -interface HTTPClientProps { - url: string, - group: string, -} - -interface RemoveHTTPClientRequest { - url: string, -} - -const HTTPClientRow = ({ - url, group, -}: HTTPClientProps) => { - const { state } = useContext(AppContext); - - const toast = useToast(); - const [loading, setLoading] = useState(false); - const onRemoveClick = async () => { - try { - setLoading(true); - await axios.delete(`${state.endpoint}/client/http`, { - data: { - url, - }, - }); - setLoading(false); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to remove the HTTP Client', - description: error.message, - status: 'error', - duration: 3000, - isClosable: true, - }); - } - } - }; - - return ( - - {url} - {group} - - - - - - - ); -}; - -const HTTPClientTable = () => { - const { state } = useContext(AppContext); - - const [searchInput, setSearchInput] = useState(''); - const handleSearchInputChange = (event: React.FormEvent) => { - setSearchInput(event.currentTarget.value); - }; - - const [groupSet, setGroupSet] = useState>(new Set()); - const [groupFilter, setGroupFilter] = useState(''); - const handleGroupSelectChange = (event: React.FormEvent) => { - setGroupFilter(event.currentTarget.value); - }; - - const [HTTPClientList, setHTTPClientList] = useState([]); - const toast = useToast(); - useEffect(() => { - const fetch = async () => { - try { - const { data } = await axios.get(`${state.endpoint}/client/http`); - setHTTPClientList(data); - - const nextGroupSet = new Set(); - data.forEach(({ group }) => { - nextGroupSet.add(group); - }); - setGroupSet(nextGroupSet); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to fetch the list of HTTP Clients', - description: 'Unable to connect to the EventMesh daemon', - status: 'error', - duration: 3000, - isClosable: true, - }); - setHTTPClientList([]); - } - } - }; - - fetch(); - }, []); - - return ( - - - - - - - - - - - - - - - - - {HTTPClientList && HTTPClientList.filter(({ - url, group, - }) => { - if (searchInput && !url.includes(searchInput)) { - return false; - } - if (groupFilter && groupFilter !== group) { - return false; - } - return true; - }).map(({ - url, group, - }) => ( - - ))} - -
URLGroupAction
-
-
- ); -}; - -export default HTTPClientTable; diff --git a/frontend/components/client/TCPClientTable.tsx b/frontend/components/client/TCPClientTable.tsx deleted file mode 100644 index dc245890..00000000 --- a/frontend/components/client/TCPClientTable.tsx +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - HStack, - Select, - Input, - Table, - Thead, - Tbody, - Tr, - Th, - Td, - TableContainer, - useToast, - Box, - Button, -} from '@chakra-ui/react'; -import axios from 'axios'; -import { useContext, useEffect, useState } from 'react'; -import { AppContext } from '../../context/context'; - -interface TCPClient { - env: string, - subsystem: string, - url: string, - pid: number, - host: string, - port: number, - version: string, - idc: string, - group: string, - purpose: string, - protocol: string, -} - -interface TCPClientProps { - host: string, - port: number, - group: string, -} - -interface RemoveTCPClientRequest { - host: string, - port: number, -} - -const TCPClientRow = ({ - host, port, group, -}: TCPClientProps) => { - const { state } = useContext(AppContext); - - const toast = useToast(); - const [loading, setLoading] = useState(false); - const onRemoveClick = async () => { - try { - setLoading(true); - await axios.delete(`${state.endpoint}/client/tcp`, { - data: { - host, - port, - }, - }); - setLoading(false); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to remove the TCP Client', - description: error.message, - status: 'error', - duration: 3000, - isClosable: true, - }); - } - } - }; - - return ( - - {`${host}:${port}`} - {group} - - - - - - - ); -}; - -const TCPClientTable = () => { - const { state } = useContext(AppContext); - - const [searchInput, setSearchInput] = useState(''); - const handleSearchInputChange = (event: React.FormEvent) => { - setSearchInput(event.currentTarget.value); - }; - - const [groupSet, setGroupSet] = useState>(new Set()); - const [groupFilter, setGroupFilter] = useState(''); - const handleGroupSelectChange = (event: React.FormEvent) => { - setGroupFilter(event.currentTarget.value); - }; - - const [TCPClientList, setTCPClientList] = useState([]); - const toast = useToast(); - useEffect(() => { - const fetch = async () => { - try { - const { data } = await axios.get(`${state.endpoint}/client/tcp`); - setTCPClientList(data); - - const nextGroupSet = new Set(); - data.forEach(({ group }) => { - nextGroupSet.add(group); - }); - setGroupSet(nextGroupSet); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to fetch the list of TCP Clients', - description: 'Unable to connect to the EventMesh daemon', - status: 'error', - duration: 3000, - isClosable: true, - }); - setTCPClientList([]); - } - } - }; - - fetch(); - }, []); - - return ( - - - - - - - - - - - - - - - - - - {TCPClientList && TCPClientList.filter(({ - host, port, group, - }) => { - const address = `${host}:${port}`; - if (searchInput && !address.includes(searchInput)) { - return false; - } - if (groupFilter && groupFilter !== group) { - return false; - } - return true; - }).map(({ - host, port, group, - }) => ( - - ))} - -
HostHostGroupAction
-
-
- ); -}; - -export default TCPClientTable; diff --git a/frontend/components/event/EventTable.tsx b/frontend/components/event/EventTable.tsx deleted file mode 100644 index b0d0a13d..00000000 --- a/frontend/components/event/EventTable.tsx +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - HStack, - Input, - Table, - Thead, - Tbody, - Tr, - Th, - Td, - TableContainer, - useToast, - Box, - Button, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - useDisclosure, - Select, - VStack, - Textarea, -} from '@chakra-ui/react'; -import axios from 'axios'; -import { useContext, useEffect, useState } from 'react'; -import { CloudEvent } from 'cloudevents'; -import { AppContext } from '../../context/context'; - -interface Topic { - name: string, - messageCount: number, -} - -interface EventProps { - event: CloudEvent, -} - -interface CreateEventRequest { - event: CloudEvent, -} - -const CreateEventModal = () => { - const { state } = useContext(AppContext); - - const { isOpen, onOpen, onClose } = useDisclosure(); - - const [id, setId] = useState(''); - const handleIdChange = (event: React.FormEvent) => { - setId(event.currentTarget.value); - }; - - const [source, setSource] = useState(''); - const handleSourceChange = (event: React.FormEvent) => { - setSource(event.currentTarget.value); - }; - - const [subject, setSubject] = useState(''); - const handleSubjectChange = (event: React.FormEvent) => { - setSubject(event.currentTarget.value); - }; - - const [type, setType] = useState(''); - const handleTypeChange = (event: React.FormEvent) => { - setType(event.currentTarget.value); - }; - - const [data, setData] = useState(''); - const handleDataChange = (event: React.FormEvent) => { - setData(event.currentTarget.value); - }; - - const toast = useToast(); - const [loading, setLoading] = useState(false); - const onCreateClick = async () => { - try { - setLoading(true); - await axios.post(`${state.endpoint}/event`, new CloudEvent({ - source, - subject, - type, - data, - specversion: '1.0', - })); - onClose(); - } catch (error) { - if (axios.isAxiosError(error)) { - toast({ - title: 'Failed to publish the event', - description: error.message, - status: 'error', - duration: 3000, - isClosable: true, - }); - } - } finally { - setLoading(false); - } - }; - - return ( - <> - - - - - Create Event - - - - - - - - - - - - - - - - - - - ); -}; - -const EventRow = ({ - event, -}: EventProps) => { - const { isOpen, onOpen, onClose } = useDisclosure(); - const eventDataBase64 = event.data_base64 || ''; - const eventData = Buffer.from(eventDataBase64, 'base64').toString('utf-8'); - - return ( - <> - - - - Event Data - - - -