Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6437aea
commit d5fb88c
Showing
125 changed files
with
48,938 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
<b>Kafkawize</b> : A Web application which automates the process of creating and browsing Kafka components, by introducing roles/authorizations to users of various teams of an organization | ||
|
||
<h4>About the Application</h4> | ||
|
||
<h5>Objective :</h5> | ||
Automate the process of creating and browsing Kafka components, by introducing roles, teams and users.<br><br> | ||
|
||
<h5>Technical Architecture:</h5> | ||
|
||
![ImageFig1](https://github.com/muralibasani/kafkawize/blob/master/screenshots/arch.png) | ||
|
||
|
||
User Interface API directly communicates between users and Cluster API.<br><br> | ||
Front end is built with AngularJs, HTML, and Java script.<br> | ||
|
||
Cluster API acts as middle layer between Kafka brokers and UserInterface API.<br> | ||
Cluster API creates Kafka Admin Client and executes the requests for Topic, Acls or Schema registry.<br> | ||
|
||
Apache Cassandra datastore stores all users, teams, topics, request and execution data from all the users., and to maintain source of truth.<br> | ||
|
||
Spring Security, Spring Boot frameworks are used to develop this application.<br> | ||
|
||
<h5>Functionalities:</h5><br> (Broadly divided into two categories based on user roles.)<br> | ||
ROLE : USER can request for creation of kafka components, and browse kafka components.<br> | ||
ROLE : ADMIN can approve and execute the requests of users to create kafka components.<br> | ||
ROLE : SUPERUSER can synchronize topics meta information with Cassandra Datastore from Kafka Brokers (Source of Truth.)<br> | ||
|
||
<b>Browse:</b> (ROLE : USER, ADMIN, SUPERUSER)<br> | ||
All users can Browse Topics<br> | ||
All users can Browse Acls<br> | ||
All users can view the producers and consumers of all topics. <br> | ||
|
||
<b>Requests:</b>(ROLE : USER)<br> | ||
Users can request for Kafka Topics <br> | ||
Users can request for Kafka Acl <br> | ||
Users can request for Schemas to be registered on Confluent Schema registry. <br> | ||
Users can view all the requests from his team. <br> | ||
|
||
<b>Environments:</b>(ROLE : USER)<br> | ||
Users can view the available environments <br> | ||
|
||
<b>Approve - Execute :</b>(ROLE : ADMIN)<br> | ||
Users can appprove requests for creating Kafka Topics <br> | ||
Users can appprove requests for creating Kafka Acls <br> | ||
Users can appprove requests for uploading schemas on topics<br> | ||
|
||
<b>Users :</b>(ROLE : ADMIN)<br> | ||
Users can view all user details <br> | ||
Users can add new users <br> | ||
|
||
<b>Teams :</b>(ROLE : ADMIN, SUPERUSER)<br> | ||
Users can view all team details <br> | ||
Users can add new team <br> | ||
|
||
<b>Environments:</b>(ROLE : SUPERUSER)<br> | ||
Users can add a new environment environments <br> | ||
|
||
<b>Synchronize Metadata :</b>(ROLE : SUPERUSER)<br> | ||
Users can synchronize topic information from Brokers with Cassandra datastore. (Update team info.) <br> | ||
Users can synchronize acls information from Brokers with Cassandra datastore. (Update team info.) <br> | ||
|
||
<b>My Profile :</b>(ROLE : USER, ADMIN)<br> | ||
Users can view their profile. <br> | ||
|
||
<b>Change Password :</b>(ROLE : USER, ADMIN)<br> | ||
Users can change their passwords. <br> | ||
|
||
<b>Logout :</b>(ROLE : USER, ADMIN)<br> | ||
Users can logout. <br> | ||
|
||
<b>How to Run the application</b> | ||
|
||
KafkaWize needs the following applications to be up and running. | ||
1. Spring boot application KafkaWize https://github.com/muralibasani/kafkawize | ||
2. Spring boot application KafkaWize ClusterApi https://github.com/muralibasani/kafkawizeclusterapi | ||
3. Apache Cassandra | ||
|
||
Steps to run: | ||
|
||
1. Install Apache Cassandra | ||
2. Setup project KafkawizeClusterApi and update server.port if necessary in application properties | ||
3. Start KafkaClusterApi | ||
4. Setup project KafkaWize, and configure Cassandra running host, Cluster api host, in application properties | ||
5. Start KafkaWize | ||
6. Cassandra db setup will be done on the startup of the application. We do not have to create manually. | ||
|
||
By default KafkaWize runs on port 9097. Access it by http://localhost:9097 | ||
|
||
Default Teams | ||
Team1 | ||
Team2 | ||
Team3 | ||
|
||
Default Users(with pwds) | ||
|
||
uiuser1/user from Team1 | ||
uiuser2/user from Team2 | ||
uiuser4/user from Team1 Admin | ||
uiuser5/user from Team2 Admin | ||
superuser/user from Team2 Superuser |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> | ||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> | ||
<output url="file://$MODULE_DIR$/target/classes" /> | ||
<output-test url="file://$MODULE_DIR$/target/test-classes" /> | ||
<content url="file://$MODULE_DIR$"> | ||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> | ||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> | ||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> | ||
<excludeFolder url="file://$MODULE_DIR$/target" /> | ||
</content> | ||
<orderEntry type="inheritedJdk" /> | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-security:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" /> | ||
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" /> | ||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.1" level="project" /> | ||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.1" level="project" /> | ||
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" /> | ||
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" /> | ||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.23" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-config:5.1.2.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:5.1.2.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-web:5.1.2.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.7" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.7" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.7" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.7" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.13" level="project" /> | ||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.13" level="project" /> | ||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.13" level="project" /> | ||
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.13.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.attoparser:attoparser:2.0.5.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.6.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.2.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.4" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.1.1.RELEASE" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.11.1" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.23.4" level="project" /> | ||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.9.5" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.5" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.1.3.RELEASE" level="project" /> | ||
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.13" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" /> | ||
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" /> | ||
<orderEntry type="library" name="Maven: com.google.guava:guava:18.0" level="project" /> | ||
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.4.0" level="project" /> | ||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" /> | ||
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.1.0.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.18" level="project" /> | ||
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" /> | ||
<orderEntry type="library" name="Maven: com.datastax.cassandra:cassandra-driver-core:3.6.0" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.31.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.31.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.31.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.31.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.31.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.31.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: io.dropwizard.metrics:metrics-core:4.0.3" level="project" /> | ||
<orderEntry type="library" name="Maven: com.github.jnr:jnr-ffi:2.1.7" level="project" /> | ||
<orderEntry type="library" name="Maven: com.github.jnr:jffi:1.2.16" level="project" /> | ||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.github.jnr:jffi:native:1.2.16" level="project" /> | ||
<orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.3" level="project" /> | ||
<orderEntry type="library" name="Maven: org.ow2.asm:asm-commons:5.0.3" level="project" /> | ||
<orderEntry type="library" name="Maven: org.ow2.asm:asm-analysis:5.0.3" level="project" /> | ||
<orderEntry type="library" name="Maven: org.ow2.asm:asm-tree:5.0.3" level="project" /> | ||
<orderEntry type="library" name="Maven: org.ow2.asm:asm-util:5.0.3" level="project" /> | ||
<orderEntry type="library" name="Maven: com.github.jnr:jnr-x86asm:1.0.2" level="project" /> | ||
<orderEntry type="library" name="Maven: com.github.jnr:jnr-posix:3.0.44" level="project" /> | ||
<orderEntry type="library" name="Maven: com.github.jnr:jnr-constants:0.9.9" level="project" /> | ||
<orderEntry type="library" name="Maven: io.netty:netty-all:4.0.33.Final" level="project" /> | ||
<orderEntry type="library" name="Maven: com.datastax.cassandra:cassandra-driver-extras:3.6.0" level="project" /> | ||
</component> | ||
</module> |
Oops, something went wrong.