1. RecordEmitter logic refactored - all polling logic moved RangePollingEmitter. Backward/Forward implementations just chouse how range is calculated for next step.
2. Using consumer.position() method to define that range is fully polled (not empty polls counting deleted)
3. AnalysisTask: calculating progress based on processed offsets, not polled messages (more accurate for compacted topics)
4. Sorting polled messages by ts before sending to frontend
Implemented a Protobuf Raw deserialiser that works like protoc --decode_raw. This is a no config alternative to the existing ProtobufFileSerde.
Co-authored-by: Ilya Kuramshin <iliax@proton.me>
1. Not setting default key serde to SR/Proto if it is not explicitly set.
2. enabling searching connector by connect name
3. switch using serializedKeySize/serializedValueSize methods instead using byte array len check
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: David <58771979+David-DB88@users.noreply.github.com>
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* Important @Value annotated properties moved to typed classes
---------
Co-authored-by: iliax <ikuramshin@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* Marked serde-failed messages with red
* added styles on icon position
* added icon for the Key and Value
* changed warning icon position
* changed warning icon and data cell style
* added Ellipsis component
* refactor Ellipsis.tsx
* resolved conflicts
---------
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* new properties are added on a new line
* added test cases for key and Value Preview filters
* upd produceMessageCheck
---------
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* ISSUE-3144: Spring boot version bump to 3.0.5, snakeyaml upd
* explicit spring security dependency removed
* openapi plugin updated to 6.5
* Some javax.annotation imports migrated to jakarta.annotation
* base container sha specified
* Update CognitoAuthorityExtractor
* Add devcontainer configuration file
* Allow development using github codespace with pre-configuration of the needed dependencies
Signed-off-by: Nisan Ohana <78907315+nisanohana3@users.noreply.github.com>
* Add pull request extention
---------
Signed-off-by: Nisan Ohana <78907315+nisanohana3@users.noreply.github.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Redirect the user to the wizard page if no clusters
* added test case
* changed test case for redirect to new cluster config page
* replaced mockedUsedNavigate with mockedNavigate
* added ability to show dashboard if clicking on it
---------
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Update Editor.tsx
reassigning the background
* Update EditorViewer.styled.ts
* Update EditorViewer.styled.ts
changed the code to meet the requirements of the owner
Closes#3576
* Allow sorting consumer groups by messages behind
* Added an additional value through the enum of ConsumerGroupOrdering
* Enabled sorting in the react consumer groups page (by messages behind)
* Moved the message behind calculation logic to InternalConsumerGroup as part of its creation
* Added the messages behind case - sorting internalConsumerGroup according to comparator with messages behind logic
Co-authored-by: Yarden Shoham <hrsi88@gmail.com>
Signed-off-by: nisanohana3 <nisana230@gmail.com>
* bugfix/topics-selection remove selection reset useEffect, reseting only on pageChange
* bugfix/topics-selection implement rowId getter
* bugfix/topics-selection remove quotes from row name property for id generation
* added key format and value format
* comented some test cases
* comented some test cases
* changed test cases
* changed test cases
* swapped key Serde and Value Serde
* in a function clearTopicMessagesHandler added invalidateQueries
* changed redux Topic messages clear with react query call
* changed redux Topic messages clear with react query call on Overview/ActionCell.tsx
* show on alert deleted item
* added s on variable clearMessage
* removed clearTopicMessages action from redux and replace functionality with hook useClearTopicMessages
---------
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* change Consumers Topic lable position
* changed conditional padding row with typeScript
* removed table title style from theme, changed TableHeaderConsumerCell style
* changed consumers Table Header Cell and test cases
* refactor ListItem.spec.tsx
* removed data test id
---------
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Now if this chart is used as a subchart, the image registry will be taken from `global.imageRegistry` (if it exists).
Signed-off-by: Yarden Shoham <hrsi88@gmail.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Feature: Support more complex Protobuf files
The changes in https://github.com/provectus/kafka-ui/pull/2874 added
initial support for using more than 1 Protobuf file in Kafka UI in
absence of a proper schema registry.
This change is building upon that functionality to support more complex
scenarios in which there are multiple Protobuf files being used and not
all of them are explicitly listed (for example imports).
It's using the already present Wire library from Square to do the heavy
lifting and create a comprehensive schema from all Protobuf files and
directories listed in the Kafka UI configuration.
* Refactor schema loading logic and reuse in tests
* Add support for reading Protobufs from ZIP archives
* Remove unused ProtobufFileSerde#toLocation(Path)
* wip
* wip
* wip
* wip
* wip
* wip
* wip
---------
Co-authored-by: Jochen Schalanda <jochen.schalanda@personio.de>
Co-authored-by: iliax <ikuramshin@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* [e2e]Checking the URL redirections for kafka-ui pages
* [e2e]Checking the URL redirections for kafka-ui pages
* [e2e]Checking the URL redirections for kafka-ui pages
* [e2e]Checking the URL redirections for kafka-ui pages
* rmv ignore from copyMessageFromTopicProfile
* move @QaseId(21) to manualSuite
---------
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* set a warning message on copyToClipboard if user use http
* Update kafka-ui-react-app/src/lib/hooks/useDataSaver.ts
* changed custom type whit warning
* added warning title
* added test case for warning message
---------
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Now user can only input valid digits, and '-' is not allowed in positive-only inputs.
* Fix ISSUE#3319
Now user can only input valid digits, and '-' is not allowed in positive-only inputs.
* Revert "Fix ISSUE#3319"
This reverts commit a4e34f5af3.
* Fix ISSUE#3319
Created a helper function, and added a unit test to cover it.
* Fix ISSUE#3319
Located the helper function outside the component, and renamed some unit tests to make their meaning more clear.
* Fix ISSUE#3319
- Added an attribute 'integerOnly' to component 'Input', to represent whether this input component instance will accept decimal.
- Improved input-check function and paste-check function, to avoid invalid number format (like '3-3', '3.3.3').
- Added new unit tests to test new input-check and paste-check functions.
- Added attribute 'integerOnly' to Input instances in the TopicForm component.
* [e2e]Checking available custom parameters with Topic editing
* [e2e]Checking Messages count per page within Topic
* [e2e]Checking Messages count per page within Topic.First Fix
* [e2e]Checking Messages count per page within Topic.Issue added
* [e2e]Checking Messages count per page within Topic.Second Fix
* [e2e]Checking Messages count per page within Topic.Second Fix
* [e2e]Checking Messages count per page within Topic.Third Fix
* [e2e]Checking Messages count per page within Topic.Third Fix
* Fix the Preview Modal , Dom Nesting issue inside a Table
* minor modifications to the PreviewModal and rhe row data to get rid of errorsin the console
* add JSONPATH library to implement the parsing with it instead of loadash get
* Display In Sync Replicas (ISR) by Partition on Topic overview (#2703)
* add unit test
---------
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* [e2e] Create common method for produce message in TopicMessagesTests
* [e2e]TopicTests.purgeMessagesOfTopics : Purge messages of topics. First fix
* [e2e]TopicTests.purgeMessagesOfTopics : Purge messages of topics. First fix
Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
Failover clients for SchemaRegistry, Kafka-connect, KSQL:
1. SchemeRegistry openapi client generation
2. WebClient configuration logic moved to WebClientConfigurator class
3. ReactiveFailover utility implemented
4. Connect, Ksql moved to ReactiveFailover usage
1. Add support for predefined (well-known) protobuf types.
2. `preservingProtoFieldNames` mode is enabled for proto messages formatting to fit proto file's message's field names
3. Invalid oneof-processing logic removed
4. Protobuf -> JsonSchema self-reference issue fixed
5. format added to Timestamp protobuf type
* [e2e] Create common method for produce message in TopicMessagesTests
* [e2e] Create common method for produce message in TopicMessagesTests
* [e2e] Create common method for produce message in TopicMessagesTests
* test commit
* fix BaseTest
* upd global
* upd global
* upd global
* add local browser VM option
* fix TopicsList column header locator
* fix withStartupTimeout()
* Update bug_report.md
Added:
1. Actual result,
2. Suggestions on naming convention
3. CAPSed the system info partially and moved to top. Alternative: use the warning emoji and move outside the commented block
4. Specified few examples of additional context, that might help collecting more info n the bug.
* Update bug_report.md
replaced severity and priority suggestion.
* Update .github/ISSUE_TEMPLATE/bug_report.md
done
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Update bug_report.md
- Moved actual and expected result together at the top
- Changed to "Alternative scenarios"
- Changed number 4 in additional context as well
-removed duplication of "Steps to reproduce"
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Vite Custom Plugin code initialization , ( not building on js file )
* Fix the lazy loading functionality in vite
* add lazy loading in the Cluster page
* minor comment code cleanup
* Remove un-necessary files for configuration of the vite
* minor naming modifications
* minor code modification to encode a variable in the root
* Upgarde to Vite v4
* Fix warnings
* resolved validateDOMNesting(...) warning also remove act from PreviewModal.spec.tsx
* Revert "resolved validateDOMNesting(...) warning also remove act from PreviewModal.spec.tsx"
This reverts commit f24660918f.
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* [e2e] Checking Topics settings to make sure retention.bytes is right according to Max size on disk in GB selected value. Created new class - SettingsPanel and inner class in SettingsPanel. Add new test to Topicstests.
* First Update. Checking Topics settings to make sure retention.bytes is right according to Max size on disk in GB selected value
* Second Update. Checking Topics settings to make sure retention.bytes is right according to Max size on disk in GB selected value
* Second Update. Checking Topics settings to make sure retention.bytes is right according to Max size on disk in GB selected value
* [e2e] Final Fix. add topicSettingsTab.waitUntilScreenReady();
(cherry picked from commit a9d7d6c515)
* [e2e] Update case "Checking the information of used Broker in a cluster"
* [e2e] Update case "Checking the information of used Broker in a cluster"
* [e2e] Update case "Checking the information of used Broker in a cluster"
* [e2e]First Fix Update case "Checking the information of used Broker in a cluster"
* [e2e]Second Fix Update case "Checking the information of used Broker in a cluster"
* [e2e]Third Fix Update case "Checking the information of used Broker in a cluster"
* [e2e]Third Fix Update case "Checking the information of used Broker in a cluster"
Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
(cherry picked from commit ca3916aae0)
* Checking messages filtering by Offset within Topic/Messages
* Fix test checkTimeToRetainDataCustomValueWithEditingTopic(), refactored assertions on topicCreateEditForm from "604800000" to ""
* Fix test checkTimeToRetainDataCustomValueWithEditingTopic(),added setNumberOfPartitions as mandatory field
* resolve conversations
* resolve conversations
* resolve conversations
(cherry picked from commit de7f7db269)
* [e2e] Create method with common steps inside test classes. Connectors, Schema, Brokers are done.
* [e2e] Create method with common steps inside test classes. Topics are done.
* [e2e] First Fix. Create method with common steps inside test classes.
* [e2e]TopicName in redirectToConsumerFromTopic changed.
* [e2e]TopicName in redirectToConsumerFromTopic returned.
* [e2e]Broker tests fix.
* [e2e]Topic tests fix. .setNumberOfPartitions(1) and setTimeToRetainDataInMs("604800000") added.
* [e2e]Topic tests fix. verifyVisibleElements() and verifyEnabledElements added.
* [e2e]Topic tests fix. verifyVisibleElements() and verifyEnabledElements added.
* [e2e]Fix with verifyElementsCondition()
* [e2e]Fix SmokeTests.
* [e2e]Fix2 SmokeTests.
(cherry picked from commit c13440b65d)
* [e2e]Checking 'Time to retain data (in ms)' custom value with editing Topic's settings
* resolve conversations
* resolve conversation and refactored test addingNewFilterWithinTopic() with randomAlphabetic()
* resolve conversation and refactored test checkFilterSavingWithinSavedFilters() with randomAlphabetic()
(cherry picked from commit d2d039e36c)
* Drop experimental endpoints
* [FE] Change message timestamp format (#3119)
* remove dayjs from the code base
* remove dayjs library and clean up the hook codes
* minor obsolete fixtures deletion
* minor provider code modifications
* minor provider code modifications
* minor linter code modifications
* minor date local and language code modifications
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* removing timestamp api from the generated sources
Co-authored-by: Mgrdich <46796009+Mgrdich@users.noreply.github.com>
Co-authored-by: Mgrdich <mgotm13@gmail.com>
* initial messages pagination , modification in v2
add minor test in messages table component
Add Messages pagination
add next feature in the Advanced Filters
Messages Table add Back button navigation
remove un-necessary code from the messages table
minor code refactors to remove unnecessary codes
page parameter fix in the query of the advanced Filters
minor change in the test file to keep uniformity of the project
set default table limit for first request messages v1
* pagination fix the initial disable
* TopicForm CleanupPolicy default value clash in the edit page
* minor code import modification in topicsParamsTransformer
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Role based access control
* Fix build + checkstyle
* Refactoring, some bug fixes, review fixes
* Compile permission value patterns
* Make the resource a enum instead of a string
* Refactoring
* Make clusters required
* Fix formatting
* switch the switch case to a smart switch case
* Get rid of topic analysis actions
* Rename endpoints, fix an issue
* Return a flag indicating if rbac is on and a username
* Fix yaml indent in editorconfig
* Fix github & cognito role name fetching
* Fix case matching for actions
* Update readme
* Add an endpoint to determine if a user can create a resource
* Fix tests (I hope so)
* Fix tests
* Use spring configs instead of a separate file, rename endpoints
* Add "ALL" action
Get rid of unnecessary cache, save groups into spring auth
Review fixes
* Make "all" action case-insensitive
* Role based access control / FrontEnd (#2933)
* Initial modifications and mocking the For the RoleAccess
* fix the Suspense issue in the components , comment the Tests to implement later
* minor test comment
* Roles and configuration and santization of data
* initialize RoleCheck hook
* make the App test file visible + minor modification in the permission hook
* Structure the data so the Burger header toggle does not rerender the whole application
* add tests to the NavBar and the Page container , add tests
* NavBar and PageContainer bug fixes
* Roles Testing code modification
* covering Topics create button Actions, and Schema create button Actions
* minor typescript code modifications for the cluster required parameter in the rolesHelper
* minor typescript code modifications for the cluster required parameter in the rolesHelper
* minor code modification to describe the Permission tests more clearly
* Produce message Permissions with Tests Suites for Topic
* Add Schema Edit Permission with tests
* Minor role changes
* Add ActionButton Component to handle the Button with tooltip
* Add ActionButton Component to handle the Button with tooltip
* Add Action Button to every Button create Action
* ActionButton add test suites
* usePermission code modification to include regular expressions
* Abstract Actions Component for code repetition, add Configs Edit button Permission + add the tests suites to it.
* Schema Remove functionality Permission and Test Suites + creation of the ActionDropdownItem for Actions
* Topic Edit Clear and delete Topic , Permissions with test suites
* ActionsCell For Topic Message Overview for permissions with tests suites
* Connector Delete , Consumer Groups Permission + writing test suites
* Add Permissions to the Topics ActionCell
* Topic Table Permissions Tests Suites
* Headless Logic for the Permission Part
* add documentation for the headless Part of the permission + add modification of the data version 2 for efficient algorithmic lookup
* replace modify data logic and isPermitted function to have faster access to the data
* Add Permission helpers tests suites
* usePermission hook test suites
* BatchActionsBar add Permissions + minor modification in TopicTable tests suites
* Statistics and Metrics code Permission + add test suites
* Recreate Topic Permissions in the Topic page, add tests suites
* Actions for the Connector components
* Messages NavLink View Permission
* Test suites messages code modifications
* Permissions comment code modifications
* Replacing the Mock Data With the actual code
* Add ActionNavLink test suites
* BatchActionsBar code smell modifications
* maximizing the permissions tests suites
* maximizing the permissions tests suites
* maximizing the permissions tests suites
* Tooltip code refactoring and fix the positions issue
* permissions increase the tests coverage
* add user info at the navigation header and tests suites
* Add Global Schema Selector Permissions with test suites
* Roles minor code removal
* Change the Action Component form hook mixin approach to declarative props approach
* add isPermitted function for multiple Actions , adding tests suites for this particular case
* remove redundant Permissions test blocks from the components
* remove redundant Permissions test blocks from the components
* Action Buttons test suites' coverage + generalizing the code of the Actions
* add invalid Permission check in Action Components tests suites
* Modularization of Actions Components
* Modularization of Actions Components by adding DropDownAction to it.
* Reflect the BE Changes to the UI , by changing the default behavior or the testing of roles.
* Reflect the BE Changes to the UI , by changing the default behavior or the testing of roles.
* Get rid of not necessary usePermission mocks
* Modifications in the UserInfo data , to consider the UI without any login functionality
* minor code modifications in the BatchActionBar component
* change the Query key for the user info
* change the default message for the tooltip
* Fix the Create Role Access for Topics and Schemas
* ListPage Connector create permissions
* add Headless logic for Create Permission with test suites. + add react hook render-er
* Create Button ActionButton logic implementation
* Remove Code smells , by removing the duplications
* increase the test suites for isPermittedToCreate logic
* increase the test suites for isPermittedToCreate logic
* Change the UserResourceType Enum with the new value
* Apply New Resource Creation validation, for Topic, Schema, Connector
* Apply New Resource Creation validation, for Topic, Schema, Connector
* minor code refactor modifications
* minor code modification in the topics useCreate hook
* Async Validation for all the Create Pages
* caching test for optimal performance in async validation schemas
* Reverting the Front End Validation
* Reverting the Front End Validation
* Authorization API minor syntax modifications
* fix SmokeTests
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
Co-authored-by: Mgrdich <46796009+Mgrdich@users.noreply.github.com>
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* SeekType fix the value during the offset and timestamp fields
* BE: thread interruption logging added to Emitters
Co-authored-by: iliax <ikuramshin@provectus.com>
* Brokers API improvements:
1. broker io rates stats added
2. active controller property set to node id
3. minor refactoring
4. FE: Add an indicator for an active broker controller
Co-authored-by: Mgrdich <mgotm13@gmail.com>
Co-authored-by: iliax <ikuramshin@provectus.com>
Co-authored-by: Hrant Abrahamyan <113341474+habrahamyanpro@users.noreply.github.com>
Co-authored-by: Mgrdich <mgotm13@gmail.com>
* UI support for MSK
* fixed test changes
* fixed pull request comments
* Use the opposite operator (!==) instead.
* fixed update topic
* Minor code modifications in the Edit Submission logic
* minor typescript code change, in the TopicFormData
* minor CustomParamField short circuit code efficiency improveral
* Topic Form Edit , sanitization of Default non-dirty fields, while sending the dynamic ones
* fix checkTopicCreatePossibility()
* fix checkTopicCreatePossibility()
Co-authored-by: Mgrdich <46796009+Mgrdich@users.noreply.github.com>
Co-authored-by: Mgrdich <mgotm13@gmail.com>
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* Add SuspenseQueryComponent for the ErrorBoundary delegation , implement this component in all those pages where the issue was happening
* Add Comment to the SuspenseQueryComponent
* Create the Error page
* Error page styling modifications
* Error Page redirections
* Redux Request handle error case and Navigation
* SuspenseQueryComponent test suites
* minor ErrorPage component modifications
* Add error page test suites
* SuspenseQueryComponent Error handling modification
* UI now showing broker list when DISABLELOGDIRSCOLLECTION=true
* specs fix
* code review fixes
* fix the diskUsage check in the empty array case
* fix the diskUsage check in the empty array case minor segment size fix
Co-authored-by: Kamila Alekbaeva <kalekbaeva@provectus.com>
Co-authored-by: Ilya Kuramshin <iliax@proton.me>
Co-authored-by: Mgrdich <mgotm13@gmail.com>
* chore: changed `dateFormat` for Timestamp value
- in Topic/Messages
- closes#2858
* consider case-sensitivity in `dateFormat`
:)
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* ISSUE-3024: kui not working when controller not found
1. ReactiveAdminClient::getClusterVersion now takes into account that controller can not be visible
2. Uniq clientId generation added for consumers and adminClients
3. ReactiveAdminClient::toMonoWithExceptionFilter implementation simplified
* uniq adminclient clientId generation
Co-authored-by: iliax <ikuramshin@provectus.com>
* Polling throttling:
1. PollingThrottler class for per-cluster throttle managing
2. UI-publishing throttle for TailingEmitter
3. Elastic scheduler assigned for places where Serde interfaces are used
* int cast fix
* compilation fix
* test threshold fix
Co-authored-by: iliax <ikuramshin@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
ReactiveAdminClient::listOffsetsUnsafe now skipping non-initialized partitions. This prevents UnknownTopicOrPartitionException to be leaked to high-level logic levels (preventing TopicService::loadTopicAfterCreation to do retries)
* "Select filter" button is active without selecting any saved filter within Topic/Messages/Saved filters (#2870)
* Add minor tests
* Fix prettier
* Fix unit test
* Fix unit test
* fixed unchecking the already checked Topics from main checkbox is not available
* remove commented part
* added checked on header
* changed getToggleAllPageRowsSelectedHandler function to getToggleAllRowsSelectedHandler
* changed getIsSomePageRowsSelected function to getIsSomeRowsSelected
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* fixed All warnings whit Act function in testing library
* added act functions as described in the testing library documentation
* removed 'return' from renderComponents
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* Allow Skip Certificates Verification in readiness and liveness probe
* Fixed chart version
* Allow Skip Certificates Verification in readiness and liveness probe
* Fixed chart version
* Rename of the variable use in values
* Allow Skip Certificates Verification in readiness and liveness probe
* Fixed chart version
* Rename of the variable use in values
* Fixed HTTPS scheme
Co-authored-by: Jose Antonio Cortes Lopez <jacortes@theworkshop.com>
* Seek type field became empty with refreshing the page (#2857)
* Seek type field became empty with refreshing the page (#2857)
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Commit
* Moved and renamed classes from Tests
* Added new methods and refactored getRandomMessage()
* Moved SmokeTests from tests to com.provectus.kafka.ui
* Moved SmokeTests from com.provectus.kafka.ui to Suite
* resolve conversation
* resolve conversation
* fixed non-serializable values in selectors.spec.ts, navigation warning in Table.spec.tsx,
* added await for userEvent in Table.spec.tsx,
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* test fix
* test fix2
* locator fix
* test fix
* test fix2
* test fix2
* test fix3
* fix clearMessage test
add MessageGridItem class
* fix clearMessage test
add MessageGridItem class
* disabled copyMessageFromTopicProfile
added link to issue
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
* [e2e] Checking requiredness of Custom parameters within 'Create new Topic' #2889
* [e2e] Checking requiredness of Custom parameters within 'Create new Topic' #2889
* [e2e] Checking requiredness of Custom parameters within 'Create new Topic' #2889
* [e2e] Fix1
* [e2e] Fix1
* Fix NullPointerException in QaseExtension if token is unavailable
The `QaseExtension` JUnit extension fails with a `NullPointerException` if `QASE_API_TOKEN` is unset.
Ideally, the extension would skip execution if the token was unavailable instead of failing.
* Emit warning if Qase is disabled locally
* Add space to formatted sizes + modification in the test components
* Bytes-format component to be treated as a single word
* fix TopicTests()
* Merge branch 'master' into issues/2676
Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* Bump Maven wrapper to Maven 3.8.6
Using the official [Maven Wrapper](https://maven.apache.org/wrapper/) which was forked from the 3rd party Maven Wrapper plugin.
* Use Maven wrapper in GitHub workflows
* Reduce Maven-related noise in build jobs
```
-B,--batch-mode Run in non-interactive (batch)
mode (disables output color)
-ntp,--no-transfer-progress Do not display transfer progress
```
* Broker configs: Display a tooltip about the source of the property #2679
* changed tooltip library to @tippyjs/react
* updated styled component import as S
* created separate object in root for theme
* moved tooltip component to Common
* Renamed TooltipComponent to Tooltip
* changed Configs Source Tooltip
* add pnpm lock version
* add @floating-ui/react-dom-interaction ti implement the tooltip , initial
* finalize the tooltip component and add test tio the component
* remove tippy library
* Styling modification in the Tooltip , in the Source pages
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Co-authored-by: Mgrdich <mgotm13@gmail.com>
* Feature: Upgrade to Java 17 (Azul Zulu)
Java/OpenJDK 13 has reached end of life (and end of security support)
more than 2.5 years ago: https://endoflife.date/java
This change set updates the build, CI pipeline, and Docker image of Kafka UI to Java 17 (LTS).
* Add back maven-compile-plugin to kafka-ui-e2e-checks
* [e2e] Checking Topic creation possibility in case of empty Topic Name
* [e2e] Fix1. createTopicButtonIsEnabled() changed to isCreateTopicButtonEnabled()
* [e2e] review tests to use more object details while creating and updating#2699
* [e2e] review tests to use more object details while creating and updating#2699
* [e2e] review tests to use more object details while creating and updating#2699
* [e2e] review tests to use more object details while creating and updating#2699
* [e2e] review tests to use more object details while creating and updating#2699
* [e2e]Fix review tests to use more object details while creating and updating#2699
* [e2e]Fix2 review tests to use more object details while creating and updating#2699
* [e2e]Fix3 review tests to use more object details while creating and updating#2699
* [e2e]Fix3 review tests to use more object details while creating and updating#2699
* [e2e]Fix3 review tests to use more object details while creating and updating#2699
* [e2e]Fix3 review tests to use more object details while creating and updating#2699
* [e2e]Fix3 review tests to use more object details while creating and updating#2699
* [e2e]Fix without loadingSpinner.
* [e2e]Fix without loadingSpinner.
* [e2e]Fix without configTab.
* fix KafkaConnectList()
* [e2e]Fix with refresh.
* fix ConnectorsTests()
Co-authored-by: VladSenyuta <vlad.senyuta@gmail.com>
* redirectToConsumerFromTopic init test created
* test execution clarification
* fix
* test brushing up
* test brushing up
* test brushing up
* test brushing up
* test brushing up
* test brushing up
ISSUE-2680: Smart filters stats propagation to UI :
1. DONE event type implemented to flag polling end
2. MessageFilterStats added to emitters context to count filter apply errors
ISSUE-2103: Fixing AdminClient timeout on listOffsets when partition's leader in not available:
1. ReactiveAdminClient.listOffsets methods now check if partitions have leader before executing
2. In all places where ReactiveAdminClient.listOffsets methods are used, we specify what to do if partition leader is not available - fail or skip such partitions
3. AdminClient.listOffsets calls splitted with partitionCalls
* Emitters logic refactoring:
1. consumers seeking moved to SeekOperations class
2. offsets info gathering moved to OffsetsInfo class
* wip
* checkstyle fix
* checkstyle fix
* minor improvements
Co-authored-by: iliax <ikuramshin@provectus.com>
* Migrate Dashboard table to the new version on table components #2682
* Added universal component to the column section and added part of test #2682
* Added universal component for the all new tables in project #2682
* deleted color argument on LinkCell component
* deleted link on topic count
* Migrate Topic Consumers page to new version of table component #2681
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Migrate Topic Overview to the new version of table #2684
* changed Dropdown Toggle visibility to disabled and fixed test
* changed drop down button disabled rule
* deleted cleanUpPolicy form the some tests
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Migrate Dashboard table to the new version on table components #2682
* Added universal component to the column section and added part of test #2682
* Added universal component for the all new tables in project #2682
* deleted color argument on LinkCell component
* deleted link on topic count
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
* [e2e] create navigation thru the app using web driver #2642
* [e2e]Fix create navigation thru the app using web driver #2642
* [e2e]Fix create navigation thru the app using web driver #2642
* [e2e]Fix2 create navigation thru the app using web driver #2642
* [e2e]Fix3 create navigation thru the app using web driver #2642
* [e2e]Fix4 create navigation thru the app using web driver #2642
* [e2e]Fix5 create navigation thru the app using web driver #2642
* [e2e]Fix6 create navigation thru the app using web driver #2642
* [e2e]Fix7 create navigation thru the app using web driver #2642
Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
* add "Total size" of Partition within Topic's statistics #2536
* Used Bytes Formatted on total size of Partition within Topic's #2536
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Renamed classes for same name with UI
* Facade refactored
* Deleted SchemaCreateView.java
* accompanying changes
* deleted SchemaCreateView.java
* delete ConnectorDetails.java outdated
* add new ConnectorDetails class
* refactored of ConnectorCreateForm
* Added spaces between methods
Minor backend fixes:
1. InternalTopic.leader fiels filling fix
2. bytesIn/OutPerSec fields set to TopicDTO
3. "subject" property added to SR SchemaDescription
* Add warning message for Danger zone in case of editing the Topic #2534
* Used existing palette color on warning message for Danger zone in case of editing the Topic #2534
* Update kafka-ui-react-app/src/components/Topics/Topic/Edit/DangerZone/DangerZone.tsx
Co-authored-by: davitbejanyan <dbejanyan@provectus.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Deleted classes Pages.java, Helpers.java
* Refactored BaseTest.java, added extension of Facade
* Deleted ExtensionMethod(WaitUtils.class) from ConnectorCreateView
* Refactored of TestClasses, added new TestInstance(TestInstance.Lifecycle.PER_CLASS) annotation for using nonstatic BeforeAll/AfterAll annotation
* Deleted ExtensionMethod(WaitUtils.class) annotation in ConnectorsView
* Refactored SmokeTests
* Added new abstract class Facade
* ConnectorsTests upd
* BaseTest resolved
* Initial new object classes in Facade
* Fix and refactored test classes
* Revert "Fix and refactored test classes"
This reverts commit b0890b32ca.
* rename apiHelpers / apiHelper
* refactored "new Objects classes"
* [e2e] create Setup class and refactoring of BaseTest #2438
* [e2e] create Setup class and refactoring of BaseTest #2438
Co-authored-by: Vlad Senyuta <66071557+VladSenyuta@users.noreply.github.com>
* New documentation for building and running without docker and some doc fixes and additions.
* Improvements in docs
* spell fix
* improvements in docs
* minor modification
* improvements
* Update docs to help Apple Mac M1 Users
* Update missing information about
* building react app
* Update prerequisites docs
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* [2163] Make message timestamp format configurable
* [2163] Make message timestamp format configurable - PR comments update
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Fix subject encoding frontend (#1995)
* Add tests for schemas with non ascii chars #1995
* Backend: Fix URL encoding while getting schemas (#2471)
Add Test for subject name with non ascii chars
Closes#1995
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* upgrading alpine to fix CVE-2022-28391 vulnerabilities
* bumping spring-boot-version which includes vulnerabilities fixes
* Bumping one more version to clean high vulnerabilities up u
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Allow not specify image.registry in the values of the helm chart
* Allow not specify image.registry in the values of the helm chart
* Allow not specify image.registry in the values of the helm chart
* Add an ability to run app from subfolder
* linting
* Fix all the static resources URLs and manifest.json
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* qase.io integration
moved all helpers/util to main/java
* fix for locator (message/content)
* fix for locator (message/content) v2
* refactoring due to review
* refactoring, added verification by @CaseId
* small fix with NullPointer
* TEST FAILED RUN
* TEST FAILED RUN2
* TEST FAILED RUN3
* removed token, set correct @CaseId
* added status SKIPED for manual tests or not automated
changed getting token .getenv
* fix for token
* changed cases limit to 100
* fix for getting token
* refactoring due review
* changed name of variable
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Kafka Connect hooks
* Migrate connectors list page to RQ
* Migrate connector details page overview to RQ
* Migrate connector config page to RQ
* Migrate connector tasks page to RQ
* Get rid of some deadcode
* Migrate connector Actions page to RQ
* Get rid of some deadcode
* Migrate connector create page to RQ
* Migrate connector Edit page to RQ
* move fixtures to lib folder
* refactoring
* Added key-value form for stream parameters
* Removed unused variable
* fixing some test cases and fixing width of stream props
* adding key value validation and tests
* fixing placeholder padding and font size
* remove unnecessary code
Co-authored-by: rAzizbekyan <razizbekyan@provectus.com>
Co-authored-by: Robert Azizbekyan <103438454+rAzizbekyan@users.noreply.github.com>
* add quickstart readme for helm chart
* add link to root README.md
* fix configurationfile example stored in configmap
* change order of possible deployment configuration
Co-authored-by: Azat Safin <azsafin@provectus.com>
* #825 add methods for creating Schema Registry
* #825 Produced message added and Schema Registry added
* add test for produced message
* update topic test
* fix test 'produce message', added tag for docker selenium image
* added schema registry rests
* changed schema value
* changed locator for schema selector
* added verification container running, need to close before new test class
* fix for timeout exception, removed deletion of cookies
* small fix for remote driver
* small fix for remote driver v2
* fix for api deletion if not exist
Co-authored-by: kshpilchyna <kshpilchyna@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* Burger fixed
* Used function 'closeSidebar'
* Removed unused import
* Added whitespace before return
* Added useCallBack wrapper for closeSidebar function
* Added useCallBack wrapper for closeSidebar function
* Delete backend.yml
* backend.yml restored
* Extra spaces removed
* partitioning getTopicsConfig & describeTopics calls for cases where topics count is big
* comments added
Co-authored-by: iliax <ikuramshin@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* support yamlConfigMap
* add support of external config map
* remove test config
* update helm version and readme
* pass kafka-ui.yaml directly as helm chart value
* fix configmap metadata name
* update readme
Co-authored-by: Azat Safin <azsafin@provectus.com>
Co-authored-by: Roman Zabaluev <rzabaluev@provectus.com>
* remove withRouter HOC from FiltersContainer
* remove withRouter HOC from Topics DetailsContainer
* remove withRouter HOC from Topics TopicsConsumerGroupsContainer
* withRouter HOC from Topics TopicsConsumerGroupsContainer
* minor code refactor in the Details spec
* Routes code modifications to refactor strings representation to functions
* Settings and TopicsConsumer removal of HOC with Router
* Remove withRouter HOC from Overview file
* Remove withRouter HOC from Edit file
* replace Router path with functions instead of strings
* delete CustomParamsContainer and use the simple component in the TopicForm
* remove HOC from DangerZone container
* Remove withRouter HOC from Connect pages like Config , Overview , Tasks
* Remove withRouter HOC from Connect pages like Actions, Details, Edit, New
* Refactor Kafka Connect Codes
* Refactor Topics pages
* Remove HOC from Diff component and minor code refactor
* Route component migration into children instead of renderProps or component param in App Component
* Route component migration into children instead of renderProps or component param in Cluster Component
* Route component migration into children instead of renderProps or component param in Topics Component
* Route component migration into children instead of renderProps or component param in Topic Component
* Route component migration into children instead of renderProps or component param in Topic Component
* minor bug fix in the Overview selector spread
* change Router from component Render to child render
in ConsumerGroups page
* change Router from component Render to child render
in Schemas page
* change Router from component Render to child render
in KsqlDb page
* change Router from component Render to child render
in Connect page
* change Router from component Render to child render
in Connect Details page
* Overview Details styling code modifications
* All written path to paths with functions
* Route Parameters code fix with functions and params with variables
* Updating BreadCrumb Route
* Refactor Redirects
* WIP React Router v6 migration
* Remove unused imports from the file
* Make KsqlDb pages work with relative Routes
* WIP Make Connect pages work and fix the Schema page testing problem
* transforming consumer groups into relative path router
* Transform Topics pages into relative routes
* Transform Topic pages into relative routes
* Minor changes in Connect and KsqlDb test suites relative routes
* Minor changes in Connect and KsqlDb test suites relative routes
* change the Details into relative Routes
* Topics List naviagtion and caching issue fixed in tests suites
* Topic New Naviagation issue fix + tests suites
* Details navigate migrating into relative paths
* Send Message Submit Naviagttion with tests suites
* Topic Edit pages with working routes navigation
* Topic Details and ResetOffsets Pages tests suites and navigations
* Messages Table Tests suites
* BreadCrumbs Routes fixes
* ClusterMenu and Links styling minor code modifications
* ClusterMenu and Links styling minor code modifications
* Minor Code modifications
* Fix Lintter Problems
* fix Code Smells
* create custom useParams hook
* Adding Path tests
* minor code refactors
* Fix the Button Component redundant Props + transforming routes to relative
* Fix linter issues
* WIP: creating topicSlice
* reformating reducer into toolkit slice and fixed tests
* removing unnecessary lines
* removing dismiss alert action and tests for actions
* removing unnecessary code
* adding tests for selectors
* adding test case for new topics
* adding test cases for topic reducer when fulfilled
* removing unnecessary code
* adding test cases for asyncthunks to increase coverage
* adding new test cases to cover topicSlice
* adding clear messsages fulfilled test case
* removing unnecessary code
* Added replicas data to topic overview page
* Added tests
* Tests improved
* Some logic moved to css plus some refactoring
* Index removed
* Tests improved
* Added QuestionIcon
* Added Info button functionality and tests
* Styled component renamed
* Info button testing moved to AddFilter spec
* Styled paragraph renamed
* Info text fixed
* Refactor TopicMessages's store to redux/toolkit
* adding test cases to improve coverage
* fixing eslint error
* removing extra code
* Transform redux connect reducer and actions into toolkit slice. (#1883)
* integrate redux toolkit for connects
* uncomment test case
* remove unnecessary comment
* reduce duplication
* Implement code highlighting for smart filters (#1868)
* Implement code highlighting for smart filters
* delete unnecessary code
* fixing eslint problem
* fixing sonar code smells (#1826)
* fixing sonar code smells
* removing unnecessary change
* fixing some sonar code smell issues
* making requested changes
* Fix sonar badges in readme (#1906)
* fixing merge conflicts
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Add positive notifications after some successful actions. (#1830)
* add some positive notifications after successful actions
* some improvements
* improve alerts reducer tests
* Fix test warnings (#1908)
* fix fetch mock warnings in brokers.spec.tsx
* use separate waitFor-s for fetch-mock call expects
* Persist show internal topics switch state (#1832)
* persist show internal topics switch state
* minor improvements in topics list tests
* prevent duplication in topic list test file
* fix seek type select border-radius and user-select (#1904)
* Refetch topics list to display the updated data (#1900)
* refetch topics list to display the updated data
* fixing sonar code smells (#1826)
* fixing sonar code smells
* removing unnecessary change
* fixing some sonar code smell issues
* making requested changes
* Fix sonar badges in readme (#1906)
Co-authored-by: Robert Azizbekyan <103438454+rAzizbekyan@users.noreply.github.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Show confirmation modal when clear messages is clicked in topics list (#1899)
* show confirmation modal when clear messages is clicked in topics list
* change variable name
* add missing dependencies
* use useModal hook for topics list modals
* display a human-readable error message for topic custom parameers value field (#1896)
* modify dependencies to fix partitions filter bug (#1901)
Co-authored-by: Arsen Simonyan <103444767+simonyandev@users.noreply.github.com>
Co-authored-by: Oleg Shur <workshur@gmail.com>
* Add Tests to Topics Lists Page for TopicsTableCells
* Delete obsolete ListItems and its test suites from topics.
* Add tests suites for the new Topic creation
* Add tests suites for TopicForm styled components
* Minor code modifications in the CustomParamField test file
* Minor code modifications in the CustomParams test file
* Minor code modifications in the Topic folder
* Add test suites for Topic Edit Page + minor modifications in the DangerZone test suite
* Add tests suites for Topic Edit page
* Add tests suites for Topic Edit page
* Add tests suites for Topic Edit page
* Add tests suites for DangerZone and validation
* Add tests suites for DangerZone
* Add tests suites for DangerZone
* Add tests suites to SendMessage
* increase the tests coverage for validateMessage
* minor changes in the SendMessage and validateMessage function
* add alert message suggestion in the SendMessage
* add alert message suggestion in the SendMessage
* Total Coverage of Overview test suites
* increase tests suite coverage in the Filters styles
* increase tests suite coverage in the Filters styles + Messages Page
* improve the test coverage of the Message Component
* improve the test coverage of the Message Component
* improve the test coverage of the MessagesTable Component
* improve the test coverage of the MessagesTable Component
* improve the test coverage of the MessagesTable Component
* Add Tests for Topic Page
* Change to react testing library from enzyme Topics list
* optimizing List elements Tests suites
* delete necessary file
* minor bug fix in messages due to the rebase
* minor semantic changes in the Test suites
* Removed two enzyme test with testing-library tests
* Got rid of enzyme and wrapper in List.spec.tsx
* Got rid of enzyme and wrapper in ListItem.spec.tsx
* Got rid of enzyme and wrapper in BytesFormatted.spec.tsx
* Got rid of enzyme and wrapper in ConfirmationModal.spec.tsx
* Got rid of enzyme and wrapper in Tabs.spec.tsx
* Got rid of enzyme and wrapper in Actions.spec.tsx
* Got rid of enzyme and wrapper in ListItem.spec.tsx
* Got rid of enzyme and wrapper in FiltersContainer.spec.tsx
* Got rid of enzyme and wrapper in ListItem.spec.tsx
* Got rid of Enzyme in a two more files
* Got rid of Enzyme in testHelpers.tsx
* Got rid of snapshots
* Three wrappers replaced with render from testHelpers
* Testing id replaced
* Fixed linter warnings
* Got rid of testIds
* Got rid of unnecessary containers and ...queryBy functions
* Got rid of dublicated ...getByRole functions
* Got rid of dublicated more than two times ...getByText functions
* Got rid of unused imports
* Got rid of unused import
* Desciptions fixed
* Got rid of providers
* Got rid of unused imports
* package-lock.json reverted
* Refactor Actions component specs
* Get rid of TestRouterWrapper
* Refactor specs
* Refactor specs
* linting
Co-authored-by: k.morozov <k.morozov@ffin.ru>
Co-authored-by: lazzy-panda <grifx.design@gmail.com>
<!--(A clear and concise description of what the bug is.)-->
**Set up**
<!--
(How do you run the app?
Which version of the app are you running? Provide either docker image version or check commit hash at the top left corner. We won't be able to help you without this information.)
-->
**Steps to Reproduce**
Steps to reproduce the behavior:
1.
**Expected behavior**
<!--
(A clear and concise description of what you expected to happen)
-->
**Screenshots**
<!--
(If applicable, add screenshots to help explain your problem)
Hi, thanks for raising the issue(-s), all contributions really matter!
Please, note that we'll close the issue without further explanation if you don't follow
this template and don't provide the information requested within this template.
- type:checkboxes
id:terms
attributes:
label:Issue submitter TODO list
description:By you checking these checkboxes we can be sure you've done the essential things.
options:
- label:I've searched for an already existing issues [here](https://github.com/provectus/kafka-ui/issues)
required:true
- label:I'm running a supported version of the application which is listed [here](https://github.com/provectus/kafka-ui/blob/master/SECURITY.md) and the feature is not present there
required:true
- type:textarea
attributes:
label:Is your proposal related to a problem?
description:|
Provide a clear and concise description of what the problem is.
For example, "I'm always frustrated when..."
validations:
required:false
- type:textarea
attributes:
label:Describe the feature you're interested in
description:|
Provide a clear and concise description of what you want to happen.
validations:
required:true
- type:textarea
attributes:
label:Describe alternatives you've considered
description:|
Let us know about other solutions you've tried or researched.
validations:
required:false
- type:input
attributes:
label:Version you're running
description:|
Please provide the app version you're currently running:
1. App version (commit hash in the top left corner of the UI)
validations:
required:true
- type:textarea
attributes:
label:Additional context
description:|
Is there anything else you can add about the proposal?
You might want to link to related issues here, if you haven't already.
<!--(A clear and concise description of what the bug is.)-->
**Set up**
<!--
(How do you run the app?
Which version of the app are you running? Provide either docker image version or check commit hash at the top left corner. We won't be able to help you without this information.)
-->
**Steps to Reproduce**
Steps to reproduce the behavior:
1.
**Expected behavior**
<!--
(A clear and concise description of what you expected to happen)
-->
**Screenshots**
<!--
(If applicable, add screenshots to help explain your problem)
branch_name=$(hub branch | grep "*" | sed -e 's/^\*//')
echo $branch_name
echo ::set-output name=branch::${branch_name}
tag=$(echo $branch_name | sed 's/\//-/g' | sed 's/\./-/g' | sed 's/\_/-/g' | sed -e 's/\(.*\)/\L\1/' | cut -c1-32 | sed -E 's/(^[^a-z0-9])*([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)([^a-z0-9]*)/\2/')
This guide is an exact copy of the same documented located [in our official docs](https://docs.kafka-ui.provectus.io/development/contributing). If there are any differences between the documents, the one located in our official docs should prevail.
This guide aims to walk you through the process of working on issues and Pull Requests (PRs).
Bear in mind that you will not be able to complete some steps on your own if you do not have a “write” permission. Feel free to reach out to the maintainers to help you unlock these activities.
@ -20,7 +22,7 @@ You also need to consider labels. You can sort the issues by scope labels, such
## Grabbing the issue
There is a bunch of criteria that make an issue feasible for development. <br/>
The implementation of any features and/or their enhancements should be reasonable, must be backed by justified requirements (demanded by the community, [roadmap](documentation/project/ROADMAP.md) plans, etc.). The final decision is left for the maintainers' discretion.
The implementation of any features and/or their enhancements should be reasonable, must be backed by justified requirements (demanded by the community, [roadmap](https://docs.kafka-ui.provectus.io/project/roadmap) plans, etc.). The final decision is left for the maintainers' discretion.
All bugs should be confirmed as such (i.e. the behavior is unintended).
@ -39,7 +41,7 @@ To keep the status of the issue clear to everyone, please keep the card's status
## Setting up a local development environment
Please refer to [this guide](documentation/project/contributing/README.md).
Please refer to [this guide](https://docs.kafka-ui.provectus.io/development/contributing).
# Pull Requests
@ -78,6 +80,7 @@ When creating a PR please do the following:
4. If the PR does not close any of the issues, the PR itself might need to have a milestone set. Reach out to the maintainers to consult.
5. Assign the PR to yourself. A PR assignee is someone whose goal is to get the PR merged.
6. Add reviewers. As a rule, reviewers' suggestions are pretty good; please use them.
7. Upon merging the PR, please use a meaningful commit message, task name should be fine in this case.
#### UI for Apache Kafka is a free, open-source web UI to monitor and manage Apache Kafka clusters.
UI for Apache Kafka is a simple tool that makes your data flows observable, helps find and troubleshoot issues faster and deliver optimal performance. Its lightweight dashboard makes it easy to track key metrics of your Kafka clusters - Brokers, Topics, Partitions, Production, and Consumption.
### DISCLAIMER
<em>UI for Apache Kafka is a free, open-source tool that is curated by Provectus, and is built and supported by the open-source community. The tool will remain free and open-source in the future. Provectus does not plan to add any paid features or subscription plans so that everyone can have a better experience observing their data. UI for Apache Kafka is a part of the [Provectus NextGen Data Platform](https://provectus.com/nextgen-data-platform/). Check it out for more details! </em>
<em>UI for Apache Kafka is a free tool built and supported by the open-source community. Curated by Provectus, it will remain free and open-source, without any paid features or subscription plans to be added in the future.
Looking for the help of Kafka experts? Provectus can help you design, build, deploy, and manage Apache Kafka clusters and streaming applications. Discover [Professional Services for Apache Kafka](https://provectus.com/professional-services-apache-kafka/), to unlock the full potential of Kafka in your enterprise! </em>
#### UI for Apache Kafka is a free, open-source web UI to monitor and manage Apache Kafka clusters.
UI for Apache Kafka is a simple tool that makes your data flows observable, helps find and troubleshoot issues faster and deliver optimal performance. Its lightweight dashboard makes it easy to track key metrics of your Kafka clusters - Brokers, Topics, Partitions, Production, and Consumption.
Set up UI for Apache Kafka with just a couple of easy commands to visualize your Kafka data in a comprehensible way. You can run the tool locally or in
the cloud.
Set up UI for Apache Kafka with just a couple of easy commands to visualize your Kafka data in a comprehensible way. You can run the tool locally or in
the cloud.

@ -27,21 +43,24 @@ the cloud.
* **View Consumer Groups** — view per-partition parked offsets, combined and per-partition lag
* **Browse Messages** — browse messages with JSON, plain text, and Avro encoding
* **Dynamic Topic Configuration** — create and configure new topics with dynamic configuration
* **Configurable Authentification** — secure your installation with optional Github/Gitlab/Google OAuth 2.0
* **Configurable Authentification** — [secure](https://docs.kafka-ui.provectus.io/configuration/authentication) your installation with optional Github/Gitlab/Google OAuth 2.0
* **Custom serialization/deserialization plugins** - [use](https://docs.kafka-ui.provectus.io/configuration/serialization-serde) a ready-to-go serde for your data like AWS Glue or Smile, or code your own!
* **Role based access control** - [manage permissions](https://docs.kafka-ui.provectus.io/configuration/rbac-role-based-access-control) to access the UI with granular precision
* **Data masking** - [obfuscate](https://docs.kafka-ui.provectus.io/configuration/data-masking) sensitive data in topic messages
# The Interface
UI for Apache Kafka wraps major functions of Apache Kafka with an intuitive user interface.

## Topics
UI for Apache Kafka makes it easy for you to create topics in your browser by several clicks,
UI for Apache Kafka makes it easy for you to create topics in your browser by several clicks,
pasting your own parameters, and viewing topics in the list.
- [Connection to a secure broker](documentation/compose/SECURE_BROKER.md)
### Configuration File
Example of how to configure clusters in the [application-local.yml](https://github.com/provectus/kafka-ui/blob/master/kafka-ui-api/src/main/resources/application-local.yml) configuration file:
* `schemaNameTemplate`: how keys are saved to schemaRegistry
* `jmxPort`: open jmxPosrts of a broker
* `readOnly`: enable read only mode
Configure as many clusters as you need by adding their configs below separated with `-`.
## Running a Docker Image
The official Docker image for UI for Apache Kafka is hosted here: [hub.docker.com/r/provectuslabs/kafka-ui](https://hub.docker.com/r/provectuslabs/kafka-ui).
Launch Docker container in the background:
```sh
docker run -p 8080:8080 \
-e KAFKA_CLUSTERS_0_NAME=local \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092 \
-d provectuslabs/kafka-ui:latest
## Quick start (Demo run)
```
Then access the web UI at [http://localhost:8080](http://localhost:8080).
Further configuration with environment variables - [see environment variables](#env_variables)
### Docker Compose
docker run -it -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui
```
If you prefer to use `docker-compose` please refer to the [documentation](docker-compose.md).
Then access the web UI at [http://localhost:8080](http://localhost:8080)
The command is sufficient to try things out. When you're done trying things out, you can proceed with a [persistent installation](https://docs.kafka-ui.provectus.io/quick-start/persistent-start)
Alternatively, each variable of the .yml file can be set with an environment variable.
For example, if you want to use an environment variable to set the `name` parameter, you can write it like this: `KAFKA_CLUSTERS_2_NAME`
All of the environment variables/config properties could be found [here](https://docs.kafka-ui.provectus.io/configuration/misc-configuration-properties).
|`SERVER_PORT` |Port for the embedded server. Default: `8080`
|`KAFKA_ADMIN-CLIENT-TIMEOUT` | Kafka API timeout in ms. Default: `30000`
|`KAFKA_CLUSTERS_0_NAME` | Cluster name
|`KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS` |Address where to connect
|`KAFKA_CLUSTERS_0_KSQLDBSERVER` | KSQL DB server address
|`KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL` |Security protocol to connect to the brokers. For SSL connection use "SSL", for plaintext connection don't set this environment variable
# Descriptions of docker-compose configurations (*.yaml)
1. [kafka-ui.yaml](./kafka-ui.yaml) - Default configuration with 2 kafka clusters with two nodes of Schema Registry, one kafka-connect and a few dummy topics.
2. [kafka-clusters-only.yaml](./kafka-clusters-only.yaml) - A configuration for development purposes, everything besides `kafka-ui` itself (to be run locally).
3. [kafka-ui-ssl.yml](./kafka-ssl.yml) - Connect to Kafka via TLS/SSL
4. [kafka-cluster-sr-auth.yaml](./kafka-cluster-sr-auth.yaml) - Schema registry with authentication.
6. [kafka-ui-connectors.yaml](./kafka-ui-connectors.yaml) - Configuration with different connectors (github-source, s3, sink-activities, source-activities) and Ksql functionality.
7. [kafka-ui-jmx-secured.yml](./kafka-ui-jmx-secured.yml) - Kafka’s JMX with SSL and authentication.
8. [kafka-ui-reverse-proxy.yaml](./kafka-ui-reverse-proxy.yaml) - An example for using the app behind a proxy (like nginx).
9. [kafka-ui-sasl.yaml](./kafka-ui-sasl.yaml) - SASL auth for Kafka.
10. [kafka-ui-traefik-proxy.yaml](./kafka-ui-traefik-proxy.yaml) - Traefik specific proxy configuration.
2. [kafka-ui-arm64.yaml](./kafka-ui-arm64.yaml) - Default configuration for ARM64(Mac M1) architecture with 1 kafka cluster without zookeeper with one node of Schema Registry, one kafka-connect and a few dummy topics.
3. [kafka-clusters-only.yaml](./kafka-clusters-only.yaml) - A configuration for development purposes, everything besides `kafka-ui` itself (to be run locally).
4. [kafka-ui-ssl.yml](./kafka-ssl.yml) - Connect to Kafka via TLS/SSL
5. [kafka-cluster-sr-auth.yaml](./kafka-cluster-sr-auth.yaml) - Schema registry with authentication.
7. [e2e-tests.yaml](./e2e-tests.yaml) - Configuration with different connectors (github-source, s3, sink-activities, source-activities) and Ksql functionality.
8. [kafka-ui-jmx-secured.yml](./kafka-ui-jmx-secured.yml) - Kafka’s JMX with SSL and authentication.
9. [kafka-ui-reverse-proxy.yaml](./nginx-proxy.yaml) - An example for using the app behind a proxy (like nginx).
10. [kafka-ui-sasl.yaml](./kafka-ui-sasl.yaml) - SASL auth for Kafka.
11. [kafka-ui-traefik-proxy.yaml](./traefik-proxy.yaml) - Traefik specific proxy configuration.
12. [oauth-cognito.yaml](./oauth-cognito.yaml) - OAuth2 with Cognito
13. [kafka-ui-with-jmx-exporter.yaml](./kafka-ui-with-jmx-exporter.yaml) - A configuration with 2 kafka clusters with enabled prometheus jmx exporters instead of jmx.
14. [kafka-with-zookeeper.yaml](./kafka-with-zookeeper.yaml) - An example for using kafka with zookeeper
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:'bash -c ''if [ ! -f /tmp/update_run.sh ]; then echo "ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'''
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /usr/share/jmx_exporter/kafka-prepare-and-run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"
command:"bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"