Showing preview only (3,336K chars total). Download the full file or copy to clipboard to get everything.
Repository: provectus/kafka-ui
Branch: master
Commit: 83b5a60cc085
Files: 1068
Total size: 2.9 MB
Directory structure:
gitextract_kz4bsw12/
├── .devcontainer/
│ └── devcontainer.json
├── .editorconfig
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yml
│ │ ├── config.yml
│ │ └── feature.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── dependabot.yml
│ ├── release_drafter.yaml
│ └── workflows/
│ ├── aws_publisher.yaml
│ ├── backend.yml
│ ├── block_merge.yml
│ ├── branch-deploy.yml
│ ├── branch-remove.yml
│ ├── build-public-image.yml
│ ├── codeql-analysis.yml
│ ├── cve.yaml
│ ├── delete-public-image.yml
│ ├── documentation.yaml
│ ├── e2e-automation.yml
│ ├── e2e-checks.yaml
│ ├── e2e-manual.yml
│ ├── e2e-weekly.yml
│ ├── frontend.yaml
│ ├── master.yaml
│ ├── pr-checks.yaml
│ ├── release-serde-api.yaml
│ ├── release.yaml
│ ├── release_drafter.yml
│ ├── separate_env_public_create.yml
│ ├── separate_env_public_remove.yml
│ ├── stale.yaml
│ ├── terraform-deploy.yml
│ ├── triage_issues.yml
│ ├── triage_prs.yml
│ ├── welcome-first-time-contributors.yml
│ └── workflow_linter.yaml
├── .gitignore
├── .mvn/
│ └── wrapper/
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── documentation/
│ └── compose/
│ ├── DOCKER_COMPOSE.md
│ ├── connectors/
│ │ ├── github-source.json
│ │ ├── s3-sink.json
│ │ ├── sink-activities.json
│ │ ├── source-activities.json
│ │ └── start.sh
│ ├── data/
│ │ ├── message.json
│ │ └── proxy.conf
│ ├── e2e-tests.yaml
│ ├── jaas/
│ │ ├── client.properties
│ │ ├── kafka_connect.jaas
│ │ ├── kafka_connect.password
│ │ ├── kafka_server.conf
│ │ ├── schema_registry.jaas
│ │ ├── schema_registry.password
│ │ └── zookeeper_jaas.conf
│ ├── jmx/
│ │ ├── clientkeystore
│ │ ├── clienttruststore
│ │ ├── jmxremote.access
│ │ ├── jmxremote.password
│ │ ├── serverkeystore
│ │ └── servertruststore
│ ├── jmx-exporter/
│ │ ├── kafka-broker.yml
│ │ └── kafka-prepare-and-run
│ ├── kafka-cluster-sr-auth.yaml
│ ├── kafka-connect/
│ │ └── Dockerfile
│ ├── kafka-ssl-components.yaml
│ ├── kafka-ssl.yml
│ ├── kafka-ui-acl-with-zk.yaml
│ ├── kafka-ui-arm64.yaml
│ ├── kafka-ui-auth-context.yaml
│ ├── kafka-ui-connectors-auth.yaml
│ ├── kafka-ui-jmx-secured.yml
│ ├── kafka-ui-sasl.yaml
│ ├── kafka-ui-serdes.yaml
│ ├── kafka-ui-with-jmx-exporter.yaml
│ ├── kafka-ui.yaml
│ ├── kafka-with-zookeeper.yaml
│ ├── ldap.yaml
│ ├── nginx-proxy.yaml
│ ├── postgres/
│ │ ├── Dockerfile
│ │ └── data.sql
│ ├── proto/
│ │ ├── key-types.proto
│ │ └── values.proto
│ ├── scripts/
│ │ ├── clusterID
│ │ ├── create_cluster_id.sh
│ │ ├── update_run.sh
│ │ └── update_run_cluster.sh
│ ├── ssl/
│ │ ├── creds
│ │ ├── generate_certs.sh
│ │ ├── kafka.keystore.jks
│ │ ├── kafka.truststore.jks
│ │ └── san.cnf
│ ├── traefik/
│ │ └── kafkaui.yaml
│ └── traefik-proxy.yaml
├── etc/
│ └── checkstyle/
│ ├── apache-header.txt
│ ├── checkstyle-e2e.xml
│ └── checkstyle.xml
├── kafka-ui-api/
│ ├── Dockerfile
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── antlr4/
│ │ │ └── ksql/
│ │ │ └── KsqlGrammar.g4
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── provectus/
│ │ │ └── kafka/
│ │ │ └── ui/
│ │ │ ├── KafkaUiApplication.java
│ │ │ ├── client/
│ │ │ │ └── RetryingKafkaConnectClient.java
│ │ │ ├── config/
│ │ │ │ ├── ClustersProperties.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── CorsGlobalConfiguration.java
│ │ │ │ ├── CustomWebFilter.java
│ │ │ │ ├── ReadOnlyModeFilter.java
│ │ │ │ ├── WebclientProperties.java
│ │ │ │ └── auth/
│ │ │ │ ├── AbstractAuthSecurityConfig.java
│ │ │ │ ├── AuthenticatedUser.java
│ │ │ │ ├── BasicAuthSecurityConfig.java
│ │ │ │ ├── DisabledAuthSecurityConfig.java
│ │ │ │ ├── LdapProperties.java
│ │ │ │ ├── LdapSecurityConfig.java
│ │ │ │ ├── OAuthProperties.java
│ │ │ │ ├── OAuthPropertiesConverter.java
│ │ │ │ ├── OAuthSecurityConfig.java
│ │ │ │ ├── RbacLdapUser.java
│ │ │ │ ├── RbacOAuth2User.java
│ │ │ │ ├── RbacOidcUser.java
│ │ │ │ ├── RbacUser.java
│ │ │ │ ├── RoleBasedAccessControlProperties.java
│ │ │ │ ├── condition/
│ │ │ │ │ ├── ActiveDirectoryCondition.java
│ │ │ │ │ └── CognitoCondition.java
│ │ │ │ └── logout/
│ │ │ │ ├── CognitoLogoutSuccessHandler.java
│ │ │ │ ├── LogoutSuccessHandler.java
│ │ │ │ └── OAuthLogoutSuccessHandler.java
│ │ │ ├── controller/
│ │ │ │ ├── AbstractController.java
│ │ │ │ ├── AccessController.java
│ │ │ │ ├── AclsController.java
│ │ │ │ ├── ApplicationConfigController.java
│ │ │ │ ├── AuthController.java
│ │ │ │ ├── BrokersController.java
│ │ │ │ ├── ClustersController.java
│ │ │ │ ├── ConsumerGroupsController.java
│ │ │ │ ├── KafkaConnectController.java
│ │ │ │ ├── KsqlController.java
│ │ │ │ ├── MessagesController.java
│ │ │ │ ├── SchemasController.java
│ │ │ │ ├── StaticController.java
│ │ │ │ └── TopicsController.java
│ │ │ ├── emitter/
│ │ │ │ ├── AbstractEmitter.java
│ │ │ │ ├── BackwardEmitter.java
│ │ │ │ ├── ConsumingStats.java
│ │ │ │ ├── EnhancedConsumer.java
│ │ │ │ ├── ForwardEmitter.java
│ │ │ │ ├── MessageFilters.java
│ │ │ │ ├── MessagesProcessing.java
│ │ │ │ ├── OffsetsInfo.java
│ │ │ │ ├── PolledRecords.java
│ │ │ │ ├── PollingSettings.java
│ │ │ │ ├── PollingThrottler.java
│ │ │ │ ├── RangePollingEmitter.java
│ │ │ │ ├── ResultSizeLimiter.java
│ │ │ │ ├── SeekOperations.java
│ │ │ │ └── TailingEmitter.java
│ │ │ ├── exception/
│ │ │ │ ├── ClusterNotFoundException.java
│ │ │ │ ├── ConnectNotFoundException.java
│ │ │ │ ├── CustomBaseException.java
│ │ │ │ ├── DuplicateEntityException.java
│ │ │ │ ├── ErrorCode.java
│ │ │ │ ├── FileUploadException.java
│ │ │ │ ├── GlobalErrorWebExceptionHandler.java
│ │ │ │ ├── IllegalEntityStateException.java
│ │ │ │ ├── InvalidRequestApiException.java
│ │ │ │ ├── JsonAvroConversionException.java
│ │ │ │ ├── KafkaConnectConflictReponseException.java
│ │ │ │ ├── KsqlApiException.java
│ │ │ │ ├── KsqlDbNotFoundException.java
│ │ │ │ ├── LogDirNotFoundApiException.java
│ │ │ │ ├── NotFoundException.java
│ │ │ │ ├── ReadOnlyModeException.java
│ │ │ │ ├── SchemaCompatibilityException.java
│ │ │ │ ├── SchemaFailedToDeleteException.java
│ │ │ │ ├── SchemaNotFoundException.java
│ │ │ │ ├── TopicAnalysisException.java
│ │ │ │ ├── TopicMetadataException.java
│ │ │ │ ├── TopicNotFoundException.java
│ │ │ │ ├── TopicOrPartitionNotFoundException.java
│ │ │ │ ├── TopicRecreationException.java
│ │ │ │ ├── UnprocessableEntityException.java
│ │ │ │ └── ValidationException.java
│ │ │ ├── mapper/
│ │ │ │ ├── ClusterMapper.java
│ │ │ │ ├── ConsumerGroupMapper.java
│ │ │ │ ├── DescribeLogDirsMapper.java
│ │ │ │ ├── KafkaConnectMapper.java
│ │ │ │ └── KafkaSrMapper.java
│ │ │ ├── model/
│ │ │ │ ├── BrokerMetrics.java
│ │ │ │ ├── CleanupPolicy.java
│ │ │ │ ├── ClusterFeature.java
│ │ │ │ ├── ConsumerPosition.java
│ │ │ │ ├── InternalBroker.java
│ │ │ │ ├── InternalBrokerConfig.java
│ │ │ │ ├── InternalBrokerDiskUsage.java
│ │ │ │ ├── InternalClusterMetrics.java
│ │ │ │ ├── InternalClusterState.java
│ │ │ │ ├── InternalConsumerGroup.java
│ │ │ │ ├── InternalLogDirStats.java
│ │ │ │ ├── InternalPartition.java
│ │ │ │ ├── InternalPartitionsOffsets.java
│ │ │ │ ├── InternalReplica.java
│ │ │ │ ├── InternalSegmentSizeDto.java
│ │ │ │ ├── InternalTopic.java
│ │ │ │ ├── InternalTopicConfig.java
│ │ │ │ ├── InternalTopicConsumerGroup.java
│ │ │ │ ├── KafkaCluster.java
│ │ │ │ ├── Metrics.java
│ │ │ │ ├── MetricsConfig.java
│ │ │ │ ├── PartitionDistributionStats.java
│ │ │ │ ├── PartitionsStats.java
│ │ │ │ ├── Statistics.java
│ │ │ │ ├── connect/
│ │ │ │ │ └── InternalConnectInfo.java
│ │ │ │ ├── rbac/
│ │ │ │ │ ├── AccessContext.java
│ │ │ │ │ ├── Permission.java
│ │ │ │ │ ├── Resource.java
│ │ │ │ │ ├── Role.java
│ │ │ │ │ ├── Subject.java
│ │ │ │ │ ├── permission/
│ │ │ │ │ │ ├── AclAction.java
│ │ │ │ │ │ ├── ApplicationConfigAction.java
│ │ │ │ │ │ ├── AuditAction.java
│ │ │ │ │ │ ├── ClusterConfigAction.java
│ │ │ │ │ │ ├── ConnectAction.java
│ │ │ │ │ │ ├── ConsumerGroupAction.java
│ │ │ │ │ │ ├── KsqlAction.java
│ │ │ │ │ │ ├── PermissibleAction.java
│ │ │ │ │ │ ├── SchemaAction.java
│ │ │ │ │ │ └── TopicAction.java
│ │ │ │ │ └── provider/
│ │ │ │ │ └── Provider.java
│ │ │ │ └── schemaregistry/
│ │ │ │ ├── ErrorResponse.java
│ │ │ │ ├── InternalCompatibilityCheck.java
│ │ │ │ ├── InternalCompatibilityLevel.java
│ │ │ │ ├── InternalNewSchema.java
│ │ │ │ └── SubjectIdResponse.java
│ │ │ ├── serdes/
│ │ │ │ ├── BuiltInSerde.java
│ │ │ │ ├── ClassloaderUtil.java
│ │ │ │ ├── ClusterSerdes.java
│ │ │ │ ├── ConsumerRecordDeserializer.java
│ │ │ │ ├── CustomSerdeLoader.java
│ │ │ │ ├── ProducerRecordCreator.java
│ │ │ │ ├── PropertyResolverImpl.java
│ │ │ │ ├── RecordHeaderImpl.java
│ │ │ │ ├── RecordHeadersImpl.java
│ │ │ │ ├── SerdeInstance.java
│ │ │ │ ├── SerdesInitializer.java
│ │ │ │ └── builtin/
│ │ │ │ ├── AvroEmbeddedSerde.java
│ │ │ │ ├── Base64Serde.java
│ │ │ │ ├── ConsumerOffsetsSerde.java
│ │ │ │ ├── HexSerde.java
│ │ │ │ ├── Int32Serde.java
│ │ │ │ ├── Int64Serde.java
│ │ │ │ ├── ProtobufFileSerde.java
│ │ │ │ ├── ProtobufRawSerde.java
│ │ │ │ ├── StringSerde.java
│ │ │ │ ├── UInt32Serde.java
│ │ │ │ ├── UInt64Serde.java
│ │ │ │ ├── UuidBinarySerde.java
│ │ │ │ └── sr/
│ │ │ │ ├── MessageFormatter.java
│ │ │ │ ├── SchemaRegistrySerde.java
│ │ │ │ ├── SchemaType.java
│ │ │ │ └── Serialize.java
│ │ │ ├── service/
│ │ │ │ ├── AdminClientService.java
│ │ │ │ ├── AdminClientServiceImpl.java
│ │ │ │ ├── ApplicationInfoService.java
│ │ │ │ ├── BrokerService.java
│ │ │ │ ├── ClusterService.java
│ │ │ │ ├── ClustersStatisticsScheduler.java
│ │ │ │ ├── ClustersStorage.java
│ │ │ │ ├── ConsumerGroupService.java
│ │ │ │ ├── DeserializationService.java
│ │ │ │ ├── FeatureService.java
│ │ │ │ ├── KafkaClusterFactory.java
│ │ │ │ ├── KafkaConfigSanitizer.java
│ │ │ │ ├── KafkaConnectService.java
│ │ │ │ ├── MessagesService.java
│ │ │ │ ├── OffsetsResetService.java
│ │ │ │ ├── ReactiveAdminClient.java
│ │ │ │ ├── SchemaRegistryService.java
│ │ │ │ ├── StatisticsCache.java
│ │ │ │ ├── StatisticsService.java
│ │ │ │ ├── TopicsService.java
│ │ │ │ ├── acl/
│ │ │ │ │ ├── AclCsv.java
│ │ │ │ │ └── AclsService.java
│ │ │ │ ├── analyze/
│ │ │ │ │ ├── AnalysisTasksStore.java
│ │ │ │ │ ├── TopicAnalysisService.java
│ │ │ │ │ ├── TopicAnalysisStats.java
│ │ │ │ │ └── TopicIdentity.java
│ │ │ │ ├── audit/
│ │ │ │ │ ├── AuditRecord.java
│ │ │ │ │ ├── AuditService.java
│ │ │ │ │ └── AuditWriter.java
│ │ │ │ ├── integration/
│ │ │ │ │ └── odd/
│ │ │ │ │ ├── ConnectorInfo.java
│ │ │ │ │ ├── ConnectorsExporter.java
│ │ │ │ │ ├── OddExporter.java
│ │ │ │ │ ├── OddExporterScheduler.java
│ │ │ │ │ ├── OddIntegrationConfig.java
│ │ │ │ │ ├── OddIntegrationProperties.java
│ │ │ │ │ ├── Oddrn.java
│ │ │ │ │ ├── SchemaReferencesResolver.java
│ │ │ │ │ ├── TopicsExporter.java
│ │ │ │ │ └── schema/
│ │ │ │ │ ├── AvroExtractor.java
│ │ │ │ │ ├── DataSetFieldsExtractors.java
│ │ │ │ │ ├── JsonSchemaExtractor.java
│ │ │ │ │ └── ProtoExtractor.java
│ │ │ │ ├── ksql/
│ │ │ │ │ ├── KsqlApiClient.java
│ │ │ │ │ ├── KsqlGrammar.java
│ │ │ │ │ ├── KsqlServiceV2.java
│ │ │ │ │ └── response/
│ │ │ │ │ ├── DynamicParser.java
│ │ │ │ │ └── ResponseParser.java
│ │ │ │ ├── masking/
│ │ │ │ │ ├── DataMasking.java
│ │ │ │ │ └── policies/
│ │ │ │ │ ├── FieldsSelector.java
│ │ │ │ │ ├── Mask.java
│ │ │ │ │ ├── MaskingPolicy.java
│ │ │ │ │ ├── Remove.java
│ │ │ │ │ └── Replace.java
│ │ │ │ ├── metrics/
│ │ │ │ │ ├── JmxMetricsFormatter.java
│ │ │ │ │ ├── JmxMetricsRetriever.java
│ │ │ │ │ ├── JmxSslSocketFactory.java
│ │ │ │ │ ├── MetricsCollector.java
│ │ │ │ │ ├── MetricsRetriever.java
│ │ │ │ │ ├── PrometheusEndpointMetricsParser.java
│ │ │ │ │ ├── PrometheusMetricsRetriever.java
│ │ │ │ │ ├── RawMetric.java
│ │ │ │ │ └── WellKnownMetrics.java
│ │ │ │ └── rbac/
│ │ │ │ ├── AbstractProviderCondition.java
│ │ │ │ ├── AccessControlService.java
│ │ │ │ └── extractor/
│ │ │ │ ├── CognitoAuthorityExtractor.java
│ │ │ │ ├── GithubAuthorityExtractor.java
│ │ │ │ ├── GoogleAuthorityExtractor.java
│ │ │ │ ├── OauthAuthorityExtractor.java
│ │ │ │ ├── ProviderAuthorityExtractor.java
│ │ │ │ └── RbacLdapAuthoritiesExtractor.java
│ │ │ └── util/
│ │ │ ├── ApplicationMetrics.java
│ │ │ ├── ApplicationRestarter.java
│ │ │ ├── DynamicConfigOperations.java
│ │ │ ├── EmptyRedirectStrategy.java
│ │ │ ├── GithubReleaseInfo.java
│ │ │ ├── KafkaServicesValidation.java
│ │ │ ├── KafkaVersion.java
│ │ │ ├── ReactiveFailover.java
│ │ │ ├── ResourceUtil.java
│ │ │ ├── SslPropertiesUtil.java
│ │ │ ├── WebClientConfigurator.java
│ │ │ ├── annotation/
│ │ │ │ └── KafkaClientInternalsDependant.java
│ │ │ └── jsonschema/
│ │ │ ├── AnyFieldSchema.java
│ │ │ ├── ArrayFieldSchema.java
│ │ │ ├── AvroJsonSchemaConverter.java
│ │ │ ├── EnumJsonType.java
│ │ │ ├── FieldSchema.java
│ │ │ ├── JsonAvroConversion.java
│ │ │ ├── JsonSchema.java
│ │ │ ├── JsonSchemaConverter.java
│ │ │ ├── JsonType.java
│ │ │ ├── MapFieldSchema.java
│ │ │ ├── ObjectFieldSchema.java
│ │ │ ├── OneOfFieldSchema.java
│ │ │ ├── ProtobufSchemaConverter.java
│ │ │ ├── RefFieldSchema.java
│ │ │ ├── SimpleFieldSchema.java
│ │ │ └── SimpleJsonType.java
│ │ └── resources/
│ │ ├── application-local.yml
│ │ ├── application.yml
│ │ ├── banner.txt
│ │ ├── logback-spring.xml
│ │ └── static/
│ │ └── static/
│ │ └── css/
│ │ ├── bootstrap.min.css
│ │ └── signin.css
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── provectus/
│ │ └── kafka/
│ │ └── ui/
│ │ ├── AbstractIntegrationTest.java
│ │ ├── KafkaConnectServiceTests.java
│ │ ├── KafkaConsumerGroupTests.java
│ │ ├── KafkaConsumerTests.java
│ │ ├── KafkaTopicCreateTests.java
│ │ ├── ReadOnlyModeTests.java
│ │ ├── SchemaRegistryServiceTests.java
│ │ ├── config/
│ │ │ └── ClustersPropertiesTest.java
│ │ ├── container/
│ │ │ ├── KafkaConnectContainer.java
│ │ │ ├── KsqlDbContainer.java
│ │ │ └── SchemaRegistryContainer.java
│ │ ├── controller/
│ │ │ └── ApplicationConfigControllerTest.java
│ │ ├── emitter/
│ │ │ ├── MessageFiltersTest.java
│ │ │ ├── MessagesProcessingTest.java
│ │ │ ├── OffsetsInfoTest.java
│ │ │ ├── SeekOperationsTest.java
│ │ │ └── TailingEmitterTest.java
│ │ ├── model/
│ │ │ └── PartitionDistributionStatsTest.java
│ │ ├── producer/
│ │ │ └── KafkaTestProducer.java
│ │ ├── serdes/
│ │ │ ├── ConsumerRecordDeserializerTest.java
│ │ │ ├── PropertyResolverImplTest.java
│ │ │ ├── SerdesInitializerTest.java
│ │ │ └── builtin/
│ │ │ ├── AvroEmbeddedSerdeTest.java
│ │ │ ├── Base64SerdeTest.java
│ │ │ ├── ConsumerOffsetsSerdeTest.java
│ │ │ ├── HexSerdeTest.java
│ │ │ ├── Int32SerdeTest.java
│ │ │ ├── Int64SerdeTest.java
│ │ │ ├── ProtobufFileSerdeTest.java
│ │ │ ├── ProtobufRawSerdeTest.java
│ │ │ ├── UInt32SerdeTest.java
│ │ │ ├── UInt64SerdeTest.java
│ │ │ ├── UuidBinarySerdeTest.java
│ │ │ └── sr/
│ │ │ └── SchemaRegistrySerdeTest.java
│ │ ├── service/
│ │ │ ├── BrokerServiceTest.java
│ │ │ ├── ConfigTest.java
│ │ │ ├── KafkaConfigSanitizerTest.java
│ │ │ ├── LogDirsTest.java
│ │ │ ├── MessagesServiceTest.java
│ │ │ ├── OffsetsResetServiceTest.java
│ │ │ ├── ReactiveAdminClientTest.java
│ │ │ ├── RecordEmitterTest.java
│ │ │ ├── SchemaRegistryPaginationTest.java
│ │ │ ├── SendAndReadTests.java
│ │ │ ├── TopicsServicePaginationTest.java
│ │ │ ├── acl/
│ │ │ │ ├── AclCsvTest.java
│ │ │ │ └── AclsServiceTest.java
│ │ │ ├── analyze/
│ │ │ │ └── TopicAnalysisServiceTest.java
│ │ │ ├── audit/
│ │ │ │ ├── AuditIntegrationTest.java
│ │ │ │ ├── AuditServiceTest.java
│ │ │ │ └── AuditWriterTest.java
│ │ │ ├── integration/
│ │ │ │ └── odd/
│ │ │ │ ├── ConnectorsExporterTest.java
│ │ │ │ ├── SchemaReferencesResolverTest.java
│ │ │ │ ├── TopicsExporterTest.java
│ │ │ │ └── schema/
│ │ │ │ ├── AvroExtractorTest.java
│ │ │ │ ├── JsonSchemaExtractorTest.java
│ │ │ │ └── ProtoExtractorTest.java
│ │ │ ├── ksql/
│ │ │ │ ├── KsqlApiClientTest.java
│ │ │ │ ├── KsqlServiceV2Test.java
│ │ │ │ └── response/
│ │ │ │ └── ResponseParserTest.java
│ │ │ ├── masking/
│ │ │ │ ├── DataMaskingTest.java
│ │ │ │ └── policies/
│ │ │ │ ├── FieldsSelectorTest.java
│ │ │ │ ├── MaskTest.java
│ │ │ │ ├── RemoveTest.java
│ │ │ │ └── ReplaceTest.java
│ │ │ └── metrics/
│ │ │ ├── JmxMetricsFormatterTest.java
│ │ │ ├── PrometheusEndpointMetricsParserTest.java
│ │ │ ├── PrometheusMetricsRetrieverTest.java
│ │ │ └── WellKnownMetricsTest.java
│ │ └── util/
│ │ ├── AccessControlServiceMock.java
│ │ ├── DynamicConfigOperationsTest.java
│ │ ├── GithubReleaseInfoTest.java
│ │ ├── PollingThrottlerTest.java
│ │ ├── ReactiveFailoverTest.java
│ │ └── jsonschema/
│ │ ├── AvroJsonSchemaConverterTest.java
│ │ ├── JsonAvroConversionTest.java
│ │ └── ProtobufSchemaConverterTest.java
│ └── resources/
│ ├── application-test.yml
│ ├── fileForUploadTest.txt
│ └── protobuf-serde/
│ ├── address-book.proto
│ ├── lang-description.proto
│ ├── language/
│ │ └── language.proto
│ └── sensor.proto
├── kafka-ui-contract/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── resources/
│ └── swagger/
│ ├── kafka-connect-api.yaml
│ ├── kafka-sr-api.yaml
│ └── kafka-ui-api.yaml
├── kafka-ui-e2e-checks/
│ ├── .gitignore
│ ├── QASE.md
│ ├── README.md
│ ├── docker/
│ │ ├── selenoid-git.yaml
│ │ └── selenoid-local.yaml
│ ├── pom.xml
│ ├── selenoid/
│ │ └── config/
│ │ ├── browsersGit.json
│ │ └── browsersLocal.json
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── provectus/
│ │ │ └── kafka/
│ │ │ └── ui/
│ │ │ ├── models/
│ │ │ │ ├── Connector.java
│ │ │ │ ├── Schema.java
│ │ │ │ └── Topic.java
│ │ │ ├── pages/
│ │ │ │ ├── BasePage.java
│ │ │ │ ├── brokers/
│ │ │ │ │ ├── BrokersConfigTab.java
│ │ │ │ │ ├── BrokersDetails.java
│ │ │ │ │ └── BrokersList.java
│ │ │ │ ├── connectors/
│ │ │ │ │ ├── ConnectorCreateForm.java
│ │ │ │ │ ├── ConnectorDetails.java
│ │ │ │ │ └── KafkaConnectList.java
│ │ │ │ ├── consumers/
│ │ │ │ │ ├── ConsumersDetails.java
│ │ │ │ │ └── ConsumersList.java
│ │ │ │ ├── ksqldb/
│ │ │ │ │ ├── KsqlDbList.java
│ │ │ │ │ ├── KsqlQueryForm.java
│ │ │ │ │ ├── enums/
│ │ │ │ │ │ ├── KsqlMenuTabs.java
│ │ │ │ │ │ └── KsqlQueryConfig.java
│ │ │ │ │ └── models/
│ │ │ │ │ ├── Stream.java
│ │ │ │ │ └── Table.java
│ │ │ │ ├── panels/
│ │ │ │ │ ├── NaviSideBar.java
│ │ │ │ │ ├── TopPanel.java
│ │ │ │ │ └── enums/
│ │ │ │ │ └── MenuItem.java
│ │ │ │ ├── schemas/
│ │ │ │ │ ├── SchemaCreateForm.java
│ │ │ │ │ ├── SchemaDetails.java
│ │ │ │ │ └── SchemaRegistryList.java
│ │ │ │ └── topics/
│ │ │ │ ├── ProduceMessagePanel.java
│ │ │ │ ├── TopicCreateEditForm.java
│ │ │ │ ├── TopicDetails.java
│ │ │ │ ├── TopicSettingsTab.java
│ │ │ │ ├── TopicsList.java
│ │ │ │ └── enums/
│ │ │ │ ├── CleanupPolicyValue.java
│ │ │ │ ├── CustomParameterType.java
│ │ │ │ ├── MaxSizeOnDisk.java
│ │ │ │ └── TimeToRetain.java
│ │ │ ├── services/
│ │ │ │ └── ApiService.java
│ │ │ ├── settings/
│ │ │ │ ├── BaseSource.java
│ │ │ │ ├── configs/
│ │ │ │ │ ├── Config.java
│ │ │ │ │ └── Profiles.java
│ │ │ │ ├── drivers/
│ │ │ │ │ └── WebDriver.java
│ │ │ │ └── listeners/
│ │ │ │ ├── AllureListener.java
│ │ │ │ ├── LoggerListener.java
│ │ │ │ ├── QaseCreateListener.java
│ │ │ │ └── QaseResultListener.java
│ │ │ ├── utilities/
│ │ │ │ ├── FileUtils.java
│ │ │ │ ├── StringUtils.java
│ │ │ │ ├── TimeUtils.java
│ │ │ │ ├── WebUtils.java
│ │ │ │ └── qase/
│ │ │ │ ├── QaseSetup.java
│ │ │ │ ├── annotations/
│ │ │ │ │ ├── Automation.java
│ │ │ │ │ ├── Status.java
│ │ │ │ │ └── Suite.java
│ │ │ │ └── enums/
│ │ │ │ ├── State.java
│ │ │ │ └── Status.java
│ │ │ └── variables/
│ │ │ ├── Browser.java
│ │ │ ├── Expected.java
│ │ │ ├── Suite.java
│ │ │ └── Url.java
│ │ └── resources/
│ │ ├── allure.properties
│ │ └── testData/
│ │ ├── connectors/
│ │ │ ├── config_for_create_connector.json
│ │ │ ├── config_for_create_connector_via_api.json
│ │ │ ├── config_for_update_connector.json
│ │ │ └── delete_connector_config.json
│ │ ├── schemas/
│ │ │ ├── schema_avro_for_update.json
│ │ │ ├── schema_avro_value.json
│ │ │ ├── schema_json_Value.json
│ │ │ └── schema_protobuf_value.txt
│ │ └── topics/
│ │ └── message_content_create_topic.json
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── provectus/
│ │ └── kafka/
│ │ └── ui/
│ │ ├── BaseTest.java
│ │ ├── Facade.java
│ │ ├── manualsuite/
│ │ │ ├── BaseManualTest.java
│ │ │ ├── backlog/
│ │ │ │ ├── SanityBacklog.java
│ │ │ │ └── SmokeBacklog.java
│ │ │ └── suite/
│ │ │ ├── DataMaskingTest.java
│ │ │ ├── RbacTest.java
│ │ │ ├── TopicsTest.java
│ │ │ └── WizardTest.java
│ │ ├── qasesuite/
│ │ │ ├── BaseQaseTest.java
│ │ │ └── Template.java
│ │ ├── sanitysuite/
│ │ │ └── TopicsTest.java
│ │ └── smokesuite/
│ │ ├── SmokeTest.java
│ │ ├── brokers/
│ │ │ └── BrokersTest.java
│ │ ├── connectors/
│ │ │ └── ConnectorsTest.java
│ │ ├── ksqldb/
│ │ │ └── KsqlDbTest.java
│ │ ├── schemas/
│ │ │ └── SchemasTest.java
│ │ └── topics/
│ │ ├── MessagesTest.java
│ │ └── TopicsTest.java
│ └── resources/
│ ├── manual.xml
│ ├── qase.xml
│ ├── regression.xml
│ ├── sanity.xml
│ └── smoke.xml
├── kafka-ui-react-app/
│ ├── .editorconfig
│ ├── .eslintignore
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── .jest/
│ │ ├── cssTransform.js
│ │ └── resolver.js
│ ├── .nvmrc
│ ├── .prettierrc
│ ├── README.md
│ ├── index.html
│ ├── jest.config.ts
│ ├── openapitools.json
│ ├── package.json
│ ├── public/
│ │ ├── manifest.json
│ │ └── robots.txt
│ ├── sonar-project.properties
│ ├── src/
│ │ ├── components/
│ │ │ ├── ACLPage/
│ │ │ │ ├── ACLPage.tsx
│ │ │ │ └── List/
│ │ │ │ ├── List.styled.ts
│ │ │ │ ├── List.tsx
│ │ │ │ └── __test__/
│ │ │ │ └── List.spec.tsx
│ │ │ ├── App.styled.ts
│ │ │ ├── App.tsx
│ │ │ ├── Brokers/
│ │ │ │ ├── Broker/
│ │ │ │ │ ├── Broker.tsx
│ │ │ │ │ ├── BrokerLogdir/
│ │ │ │ │ │ ├── BrokerLogdir.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── BrokerLogdir.spec.tsx
│ │ │ │ │ ├── BrokerMetrics/
│ │ │ │ │ │ ├── BrokerMetrics.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── BrokerMetrics.spec.tsx
│ │ │ │ │ ├── Configs/
│ │ │ │ │ │ ├── Configs.styled.ts
│ │ │ │ │ │ ├── Configs.tsx
│ │ │ │ │ │ ├── InputCell.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── Configs.spec.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── Broker.spec.tsx
│ │ │ │ ├── Brokers.tsx
│ │ │ │ ├── BrokersList/
│ │ │ │ │ ├── BrokersList.styled.ts
│ │ │ │ │ ├── BrokersList.tsx
│ │ │ │ │ ├── SkewHeader/
│ │ │ │ │ │ ├── SkewHeader.styled.ts
│ │ │ │ │ │ └── SkewHeader.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── BrokersList.spec.tsx
│ │ │ │ ├── __test__/
│ │ │ │ │ └── Brokers.spec.tsx
│ │ │ │ └── utils/
│ │ │ │ ├── __test__/
│ │ │ │ │ ├── fixtures.ts
│ │ │ │ │ └── getEditorText.spec.tsx
│ │ │ │ └── getEditorText.ts
│ │ │ ├── ClusterPage/
│ │ │ │ ├── ClusterConfigPage.tsx
│ │ │ │ ├── ClusterPage.tsx
│ │ │ │ └── __tests__/
│ │ │ │ └── ClusterPage.spec.tsx
│ │ │ ├── Connect/
│ │ │ │ ├── Connect.tsx
│ │ │ │ ├── Details/
│ │ │ │ │ ├── Actions/
│ │ │ │ │ │ ├── Action.styled.ts
│ │ │ │ │ │ ├── Actions.tsx
│ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ └── Actions.spec.tsx
│ │ │ │ │ ├── Config/
│ │ │ │ │ │ ├── Config.styled.ts
│ │ │ │ │ │ ├── Config.tsx
│ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ └── Config.spec.tsx
│ │ │ │ │ ├── DetailsPage.tsx
│ │ │ │ │ ├── Overview/
│ │ │ │ │ │ ├── Overview.tsx
│ │ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ │ ├── Overview.spec.tsx
│ │ │ │ │ │ │ └── getTaskMetrics.spec.ts
│ │ │ │ │ │ └── getTaskMetrics.ts
│ │ │ │ │ ├── Tasks/
│ │ │ │ │ │ ├── ActionsCellTasks.tsx
│ │ │ │ │ │ ├── Tasks.tsx
│ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ └── Tasks.spec.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── DetailsPage.spec.tsx
│ │ │ │ ├── List/
│ │ │ │ │ ├── ActionsCell.tsx
│ │ │ │ │ ├── List.styled.ts
│ │ │ │ │ ├── List.tsx
│ │ │ │ │ ├── ListPage.tsx
│ │ │ │ │ ├── RunningTasksCell.tsx
│ │ │ │ │ ├── TopicsCell.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── List.spec.tsx
│ │ │ │ │ └── ListPage.spec.tsx
│ │ │ │ ├── New/
│ │ │ │ │ ├── New.styled.ts
│ │ │ │ │ ├── New.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── New.spec.tsx
│ │ │ │ └── __tests__/
│ │ │ │ └── Connect.spec.tsx
│ │ │ ├── ConsumerGroups/
│ │ │ │ ├── ConsumerGroups.tsx
│ │ │ │ ├── Details/
│ │ │ │ │ ├── Details.tsx
│ │ │ │ │ ├── ListItem.styled.ts
│ │ │ │ │ ├── ListItem.tsx
│ │ │ │ │ ├── ResetOffsets/
│ │ │ │ │ │ ├── Form.tsx
│ │ │ │ │ │ ├── ResetOffsets.styled.ts
│ │ │ │ │ │ └── ResetOffsets.tsx
│ │ │ │ │ └── TopicContents/
│ │ │ │ │ ├── TopicContent.styled.ts
│ │ │ │ │ ├── TopicContents.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── TopicContents.spec.tsx
│ │ │ │ ├── List.tsx
│ │ │ │ └── __test__/
│ │ │ │ └── ConsumerGroups.spec.tsx
│ │ │ ├── Dashboard/
│ │ │ │ ├── ClusterName.tsx
│ │ │ │ ├── ClusterTableActionsCell.tsx
│ │ │ │ ├── Dashboard.styled.ts
│ │ │ │ └── Dashboard.tsx
│ │ │ ├── ErrorPage/
│ │ │ │ ├── ErrorPage.styled.ts
│ │ │ │ ├── ErrorPage.tsx
│ │ │ │ └── __tests__/
│ │ │ │ └── ErrorPage.spec.tsx
│ │ │ ├── KsqlDb/
│ │ │ │ ├── KsqlDb.tsx
│ │ │ │ ├── Query/
│ │ │ │ │ ├── Query.tsx
│ │ │ │ │ ├── QueryForm/
│ │ │ │ │ │ ├── QueryForm.styled.ts
│ │ │ │ │ │ └── QueryForm.tsx
│ │ │ │ │ └── renderer/
│ │ │ │ │ └── TableRenderer/
│ │ │ │ │ ├── TableRenderer.styled.tsx
│ │ │ │ │ └── TableRenderer.tsx
│ │ │ │ └── TableView.tsx
│ │ │ ├── Nav/
│ │ │ │ ├── ClusterMenu.tsx
│ │ │ │ ├── ClusterMenuItem.tsx
│ │ │ │ ├── ClusterTab/
│ │ │ │ │ ├── ClusterTab.styled.ts
│ │ │ │ │ ├── ClusterTab.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── ClusterTab.spec.tsx
│ │ │ │ │ └── ClusterTab.styled.spec.tsx
│ │ │ │ ├── Nav.styled.ts
│ │ │ │ ├── Nav.tsx
│ │ │ │ └── __tests__/
│ │ │ │ ├── ClusterMenu.spec.tsx
│ │ │ │ ├── ClusterMenuItem.spec.tsx
│ │ │ │ └── Nav.spec.tsx
│ │ │ ├── NavBar/
│ │ │ │ ├── NavBar.styled.ts
│ │ │ │ ├── NavBar.tsx
│ │ │ │ ├── UserInfo/
│ │ │ │ │ ├── UserInfo.styled.ts
│ │ │ │ │ ├── UserInfo.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── UserInfo.spec.tsx
│ │ │ │ └── __tests__/
│ │ │ │ └── NavBar.spec.tsx
│ │ │ ├── PageContainer/
│ │ │ │ ├── PageContainer.styled.ts
│ │ │ │ ├── PageContainer.tsx
│ │ │ │ └── __tests__/
│ │ │ │ └── PageContainer.spec.tsx
│ │ │ ├── Schemas/
│ │ │ │ ├── Details/
│ │ │ │ │ ├── Details.tsx
│ │ │ │ │ ├── LatestVersion/
│ │ │ │ │ │ ├── LatestVersionItem.styled.tsx
│ │ │ │ │ │ └── LatestVersionItem.tsx
│ │ │ │ │ ├── SchemaVersion/
│ │ │ │ │ │ └── SchemaVersion.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ ├── Details.spec.tsx
│ │ │ │ │ ├── LatestVersionItem.spec.tsx
│ │ │ │ │ ├── SchemaVersion.spec.tsx
│ │ │ │ │ └── fixtures.ts
│ │ │ │ ├── Diff/
│ │ │ │ │ ├── Diff.styled.ts
│ │ │ │ │ ├── Diff.tsx
│ │ │ │ │ ├── DiffContainer.ts
│ │ │ │ │ └── __test__/
│ │ │ │ │ ├── Diff.spec.tsx
│ │ │ │ │ └── fixtures.ts
│ │ │ │ ├── Edit/
│ │ │ │ │ ├── Edit.styled.ts
│ │ │ │ │ ├── Edit.tsx
│ │ │ │ │ ├── Form.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Edit.spec.tsx
│ │ │ │ ├── List/
│ │ │ │ │ ├── GlobalSchemaSelector/
│ │ │ │ │ │ ├── GlobalSchemaSelector.styled.ts
│ │ │ │ │ │ ├── GlobalSchemaSelector.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── GlobalSchemaSelector.spec.tsx
│ │ │ │ │ ├── List.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ ├── List.spec.tsx
│ │ │ │ │ └── fixtures.ts
│ │ │ │ ├── New/
│ │ │ │ │ ├── New.styled.ts
│ │ │ │ │ ├── New.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── New.spec.tsx
│ │ │ │ ├── Schemas.tsx
│ │ │ │ └── __test__/
│ │ │ │ └── Schemas.spec.tsx
│ │ │ ├── Topics/
│ │ │ │ ├── List/
│ │ │ │ │ ├── ActionsCell.tsx
│ │ │ │ │ ├── BatchActionsBar.tsx
│ │ │ │ │ ├── ListPage.tsx
│ │ │ │ │ ├── TopicTable.tsx
│ │ │ │ │ ├── TopicTitleCell.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── ListPage.spec.tsx
│ │ │ │ │ └── TopicTable.spec.tsx
│ │ │ │ ├── New/
│ │ │ │ │ ├── New.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── New.spec.tsx
│ │ │ │ ├── Topic/
│ │ │ │ │ ├── ConsumerGroups/
│ │ │ │ │ │ ├── TopicConsumerGroups.styled.ts
│ │ │ │ │ │ ├── TopicConsumerGroups.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── TopicConsumerGroups.spec.tsx
│ │ │ │ │ ├── Edit/
│ │ │ │ │ │ ├── DangerZone/
│ │ │ │ │ │ │ ├── DangerZone.styled.tsx
│ │ │ │ │ │ │ ├── DangerZone.tsx
│ │ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ │ └── DangerZone.spec.tsx
│ │ │ │ │ │ ├── Edit.tsx
│ │ │ │ │ │ ├── __test__/
│ │ │ │ │ │ │ ├── Edit.spec.tsx
│ │ │ │ │ │ │ └── topicParamsTransformer.spec.ts
│ │ │ │ │ │ └── topicParamsTransformer.ts
│ │ │ │ │ ├── Messages/
│ │ │ │ │ │ ├── Filters/
│ │ │ │ │ │ │ ├── AddEditFilterContainer.tsx
│ │ │ │ │ │ │ ├── AddFilter.tsx
│ │ │ │ │ │ │ ├── EditFilter.tsx
│ │ │ │ │ │ │ ├── FilterModal.tsx
│ │ │ │ │ │ │ ├── Filters.styled.ts
│ │ │ │ │ │ │ ├── Filters.tsx
│ │ │ │ │ │ │ ├── FiltersContainer.ts
│ │ │ │ │ │ │ ├── InfoModal.tsx
│ │ │ │ │ │ │ ├── SavedFilters.tsx
│ │ │ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ │ │ ├── AddEditFilterContainer.spec.tsx
│ │ │ │ │ │ │ │ ├── AddFilter.spec.tsx
│ │ │ │ │ │ │ │ ├── EditFilter.spec.tsx
│ │ │ │ │ │ │ │ ├── FilterModal.spec.tsx
│ │ │ │ │ │ │ │ ├── Filters.spec.tsx
│ │ │ │ │ │ │ │ ├── Filters.styled.spec.tsx
│ │ │ │ │ │ │ │ ├── InfoModal.spec.tsx
│ │ │ │ │ │ │ │ └── SavedFilters.spec.tsx
│ │ │ │ │ │ │ └── utils.ts
│ │ │ │ │ │ ├── Message.tsx
│ │ │ │ │ │ ├── MessageContent/
│ │ │ │ │ │ │ ├── MessageContent.styled.ts
│ │ │ │ │ │ │ ├── MessageContent.tsx
│ │ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ │ └── MessageContent.spec.tsx
│ │ │ │ │ │ ├── Messages.styled.ts
│ │ │ │ │ │ ├── Messages.tsx
│ │ │ │ │ │ ├── MessagesTable.tsx
│ │ │ │ │ │ ├── PreviewModal.styled.ts
│ │ │ │ │ │ ├── PreviewModal.tsx
│ │ │ │ │ │ ├── __test__/
│ │ │ │ │ │ │ ├── FiltersContainer.spec.tsx
│ │ │ │ │ │ │ ├── Message.spec.tsx
│ │ │ │ │ │ │ ├── Messages.spec.tsx
│ │ │ │ │ │ │ ├── MessagesTable.spec.tsx
│ │ │ │ │ │ │ ├── PreviewModal.spec.tsx
│ │ │ │ │ │ │ └── utils.spec.ts
│ │ │ │ │ │ └── getDefaultSerdeName.ts
│ │ │ │ │ ├── Overview/
│ │ │ │ │ │ ├── ActionsCell.tsx
│ │ │ │ │ │ ├── Overview.styled.ts
│ │ │ │ │ │ ├── Overview.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── Overview.spec.tsx
│ │ │ │ │ ├── SendMessage/
│ │ │ │ │ │ ├── SendMessage.styled.tsx
│ │ │ │ │ │ ├── SendMessage.tsx
│ │ │ │ │ │ ├── __test__/
│ │ │ │ │ │ │ ├── SendMessage.spec.tsx
│ │ │ │ │ │ │ └── utils.spec.ts
│ │ │ │ │ │ └── utils.ts
│ │ │ │ │ ├── Settings/
│ │ │ │ │ │ ├── Settings.styled.ts
│ │ │ │ │ │ ├── Settings.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ └── Settings.spec.tsx
│ │ │ │ │ ├── Statistics/
│ │ │ │ │ │ ├── Indicators/
│ │ │ │ │ │ │ ├── SizeStats.tsx
│ │ │ │ │ │ │ └── Total.tsx
│ │ │ │ │ │ ├── Metrics.tsx
│ │ │ │ │ │ ├── PartitionInfoRow.tsx
│ │ │ │ │ │ ├── PartitionTable.tsx
│ │ │ │ │ │ ├── Statistics.styles.ts
│ │ │ │ │ │ ├── Statistics.tsx
│ │ │ │ │ │ └── __test__/
│ │ │ │ │ │ ├── Metrics.spec.tsx
│ │ │ │ │ │ └── Statistics.spec.tsx
│ │ │ │ │ ├── Topic.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── Topic.spec.tsx
│ │ │ │ ├── Topics.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ └── Topics.spec.tsx
│ │ │ │ └── shared/
│ │ │ │ └── Form/
│ │ │ │ ├── CustomParams/
│ │ │ │ │ ├── CustomParamField.tsx
│ │ │ │ │ ├── CustomParams.styled.ts
│ │ │ │ │ ├── CustomParams.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ ├── CustomParamField.spec.tsx
│ │ │ │ │ ├── CustomParams.spec.tsx
│ │ │ │ │ └── fixtures.ts
│ │ │ │ ├── TimeToRetain.tsx
│ │ │ │ ├── TimeToRetainBtn.tsx
│ │ │ │ ├── TimeToRetainBtns.tsx
│ │ │ │ ├── TopicForm.styled.ts
│ │ │ │ ├── TopicForm.tsx
│ │ │ │ └── __tests__/
│ │ │ │ ├── TimeToRetainBtn.spec.tsx
│ │ │ │ ├── TimeToRetainBtns.spec.tsx
│ │ │ │ ├── TopicForm.spec.tsx
│ │ │ │ └── TopicForm.styled.spec.tsx
│ │ │ ├── Version/
│ │ │ │ ├── Version.styled.ts
│ │ │ │ ├── Version.tsx
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── Version.spec.tsx
│ │ │ │ │ └── compareVersions.spec.ts
│ │ │ │ └── compareVersions.ts
│ │ │ ├── __tests__/
│ │ │ │ └── App.spec.tsx
│ │ │ ├── common/
│ │ │ │ ├── ActionComponent/
│ │ │ │ │ ├── ActionButton/
│ │ │ │ │ │ ├── ActionButton.tsx
│ │ │ │ │ │ ├── ActionCanButton/
│ │ │ │ │ │ │ ├── ActionCanButton.tsx
│ │ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ │ └── ActionCanButton.spec.tsx
│ │ │ │ │ │ ├── ActionCreateButton/
│ │ │ │ │ │ │ ├── ActionCreateButton.tsx
│ │ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ │ └── ActionCreateButton.spec.tsx
│ │ │ │ │ │ ├── ActionPermissionButton/
│ │ │ │ │ │ │ ├── ActionPermissionButton.tsx
│ │ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ │ └── ActionPermissionButton.spec.tsx
│ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ └── ActionButton.spec.tsx
│ │ │ │ │ ├── ActionComponent.styled.ts
│ │ │ │ │ ├── ActionComponent.ts
│ │ │ │ │ ├── ActionDropDownItem/
│ │ │ │ │ │ └── ActionDropdownItem.tsx
│ │ │ │ │ ├── ActionNavLink/
│ │ │ │ │ │ ├── ActionNavLink.tsx
│ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ └── ActionNavLink.spec.tsx
│ │ │ │ │ ├── ActionSelect/
│ │ │ │ │ │ ├── ActionSelect.tsx
│ │ │ │ │ │ └── __tests__/
│ │ │ │ │ │ └── ActionSelect.spec.tsx
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ └── fixtures.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Alert/
│ │ │ │ │ ├── Alert.styled.ts
│ │ │ │ │ ├── Alert.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Alert.spec.tsx
│ │ │ │ ├── Button/
│ │ │ │ │ ├── Button.styled.ts
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Button.spec.tsx
│ │ │ │ ├── BytesFormatted/
│ │ │ │ │ ├── BytesFormatted.styled.ts
│ │ │ │ │ ├── BytesFormatted.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── BytesFormatted.spec.tsx
│ │ │ │ ├── Checkbox/
│ │ │ │ │ └── Checkbox.tsx
│ │ │ │ ├── ConfirmationModal/
│ │ │ │ │ ├── ConfirmationModal.styled.tsx
│ │ │ │ │ └── ConfirmationModal.tsx
│ │ │ │ ├── ControlPanel/
│ │ │ │ │ └── ControlPanel.styled.ts
│ │ │ │ ├── DiffViewer/
│ │ │ │ │ ├── DiffViewer.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── DiffViewer.spec.tsx
│ │ │ │ ├── Dropdown/
│ │ │ │ │ ├── Dropdown.styled.ts
│ │ │ │ │ ├── Dropdown.tsx
│ │ │ │ │ ├── DropdownItem.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Editor/
│ │ │ │ │ └── Editor.tsx
│ │ │ │ ├── EditorViewer/
│ │ │ │ │ ├── EditorViewer.styled.ts
│ │ │ │ │ ├── EditorViewer.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── EditorViewer.spec.tsx
│ │ │ │ ├── Ellipsis/
│ │ │ │ │ ├── Ellipsis.styled.ts
│ │ │ │ │ └── Ellipsis.tsx
│ │ │ │ ├── Form/
│ │ │ │ │ └── Form.styled.ts
│ │ │ │ ├── Icons/
│ │ │ │ │ ├── ArrowDownIcon.tsx
│ │ │ │ │ ├── AutoIcon.tsx
│ │ │ │ │ ├── CancelIcon.tsx
│ │ │ │ │ ├── CheckMarkRoundIcon.tsx
│ │ │ │ │ ├── CheckmarkIcon.tsx
│ │ │ │ │ ├── ChevronDownIcon.tsx
│ │ │ │ │ ├── ClockIcon.tsx
│ │ │ │ │ ├── CloseCircleIcon.tsx
│ │ │ │ │ ├── CloseIcon.tsx
│ │ │ │ │ ├── DeleteIcon.tsx
│ │ │ │ │ ├── DiscordIcon.tsx
│ │ │ │ │ ├── DropdownArrowIcon.tsx
│ │ │ │ │ ├── EditIcon.tsx
│ │ │ │ │ ├── FileIcon.tsx
│ │ │ │ │ ├── GitIcon.tsx
│ │ │ │ │ ├── IconButtonWrapper.ts
│ │ │ │ │ ├── InfoIcon.tsx
│ │ │ │ │ ├── MessageToggleIcon.styled.ts
│ │ │ │ │ ├── MessageToggleIcon.tsx
│ │ │ │ │ ├── MoonIcon.tsx
│ │ │ │ │ ├── PlusIcon.tsx
│ │ │ │ │ ├── QuestionIcon.tsx
│ │ │ │ │ ├── SavedIcon.tsx
│ │ │ │ │ ├── SearchIcon.tsx
│ │ │ │ │ ├── SpinnerIcon.tsx
│ │ │ │ │ ├── StarIcon.tsx
│ │ │ │ │ ├── SunIcon.tsx
│ │ │ │ │ ├── UserIcon.tsx
│ │ │ │ │ ├── VerticalElipsisIcon.tsx
│ │ │ │ │ ├── WarningIcon.tsx
│ │ │ │ │ └── WarningRedIcon.tsx
│ │ │ │ ├── IndeterminateCheckbox/
│ │ │ │ │ └── IndeterminateCheckbox.tsx
│ │ │ │ ├── Input/
│ │ │ │ │ ├── Input.styled.ts
│ │ │ │ │ ├── Input.tsx
│ │ │ │ │ ├── InputLabel.styled.ts
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Input.spec.tsx
│ │ │ │ ├── Logo/
│ │ │ │ │ └── Logo.tsx
│ │ │ │ ├── Metrics/
│ │ │ │ │ ├── Indicator.tsx
│ │ │ │ │ ├── Metrics.styled.tsx
│ │ │ │ │ ├── Section.tsx
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── Indicator.spec.tsx
│ │ │ │ │ │ └── Section.spec.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── MultiSelect/
│ │ │ │ │ └── MultiSelect.styled.ts
│ │ │ │ ├── Navigation/
│ │ │ │ │ └── Navbar.styled.ts
│ │ │ │ ├── NewTable/
│ │ │ │ │ ├── ColoredCell.tsx
│ │ │ │ │ ├── ExpanderCell.tsx
│ │ │ │ │ ├── LinkCell.tsx
│ │ │ │ │ ├── SelectRowCell.tsx
│ │ │ │ │ ├── SelectRowHeader.tsx
│ │ │ │ │ ├── SizeCell.tsx
│ │ │ │ │ ├── Table.styled.ts
│ │ │ │ │ ├── Table.tsx
│ │ │ │ │ ├── TagCell.tsx
│ │ │ │ │ ├── TimestampCell.tsx
│ │ │ │ │ ├── __test__/
│ │ │ │ │ │ └── Table.spec.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── __test__/
│ │ │ │ │ │ └── updateSortingState.spec.ts
│ │ │ │ │ ├── updatePaginationState.ts
│ │ │ │ │ └── updateSortingState.ts
│ │ │ │ ├── PageHeading/
│ │ │ │ │ ├── PageHeading.styled.ts
│ │ │ │ │ └── PageHeading.tsx
│ │ │ │ ├── PageLoader/
│ │ │ │ │ ├── PageLoader.styled.ts
│ │ │ │ │ ├── PageLoader.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── PageLoader.spec.tsx
│ │ │ │ ├── ProgressBar/
│ │ │ │ │ ├── ProgressBar.styled.ts
│ │ │ │ │ ├── ProgressBar.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── ProgressBar.spec.tsx
│ │ │ │ ├── PropertiesList/
│ │ │ │ │ └── PropertiesList.styled.tsx
│ │ │ │ ├── SQLEditor/
│ │ │ │ │ ├── SQLEditor.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── SQLEditor.spec.tsx
│ │ │ │ ├── Search/
│ │ │ │ │ ├── Search.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Search.spec.tsx
│ │ │ │ ├── Select/
│ │ │ │ │ ├── ControlledSelect.tsx
│ │ │ │ │ ├── LiveIcon.styled.tsx
│ │ │ │ │ ├── Select.styled.ts
│ │ │ │ │ ├── Select.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Select.spec.tsx
│ │ │ │ ├── SlidingSidebar/
│ │ │ │ │ ├── SlidingSidebar.styled.ts
│ │ │ │ │ ├── SlidingSidebar.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Spinner/
│ │ │ │ │ ├── Spinner.styled.ts
│ │ │ │ │ ├── Spinner.tsx
│ │ │ │ │ └── types.ts
│ │ │ │ ├── SuspenseQueryComponent/
│ │ │ │ │ ├── SuspenseQueryComponent.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── SuspenseQueryComponent.spec.tsx
│ │ │ │ ├── Switch/
│ │ │ │ │ ├── Switch.styled.ts
│ │ │ │ │ └── Switch.tsx
│ │ │ │ ├── Tag/
│ │ │ │ │ ├── Tag.styled.tsx
│ │ │ │ │ └── getTagColor.ts
│ │ │ │ ├── Textbox/
│ │ │ │ │ └── Textarea.styled.ts
│ │ │ │ ├── Tooltip/
│ │ │ │ │ ├── Tooltip.styled.ts
│ │ │ │ │ ├── Tooltip.tsx
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Tooltip.spec.tsx
│ │ │ │ ├── heading/
│ │ │ │ │ └── Heading.styled.tsx
│ │ │ │ └── table/
│ │ │ │ ├── Table/
│ │ │ │ │ ├── Table.styled.ts
│ │ │ │ │ └── TableKeyLink.styled.ts
│ │ │ │ ├── TableHeaderCell/
│ │ │ │ │ ├── TableHeaderCell.styled.ts
│ │ │ │ │ ├── TableHeaderCell.tsx
│ │ │ │ │ └── __test__/
│ │ │ │ │ └── TableHeaderCell.styled.spec.tsx
│ │ │ │ ├── TableTitle/
│ │ │ │ │ └── TableTitle.styled.tsx
│ │ │ │ └── __tests__/
│ │ │ │ └── TableHeaderCell.spec.tsx
│ │ │ ├── contexts/
│ │ │ │ ├── ClusterContext.ts
│ │ │ │ ├── ConfirmContext.tsx
│ │ │ │ ├── GlobalSettingsContext.tsx
│ │ │ │ ├── ThemeModeContext.tsx
│ │ │ │ ├── TopicMessagesContext.ts
│ │ │ │ └── UserInfoRolesAccessContext.tsx
│ │ │ └── globalCss.ts
│ │ ├── index.tsx
│ │ ├── lib/
│ │ │ ├── __test__/
│ │ │ │ ├── dateTimeHelpers.spec.ts
│ │ │ │ ├── paths.spec.ts
│ │ │ │ ├── permission.spec.ts
│ │ │ │ └── yupExtended.spec.ts
│ │ │ ├── api.ts
│ │ │ ├── constants.ts
│ │ │ ├── dateTimeHelpers.ts
│ │ │ ├── errorHandling.tsx
│ │ │ ├── fixtures/
│ │ │ │ ├── acls.ts
│ │ │ │ ├── brokers.ts
│ │ │ │ ├── clusters.ts
│ │ │ │ ├── consumerGroups.ts
│ │ │ │ ├── kafkaConnect.ts
│ │ │ │ ├── latestVersion.ts
│ │ │ │ ├── topicMessages.ts
│ │ │ │ └── topics.ts
│ │ │ ├── hooks/
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── dateTimeHelpers.spec.ts
│ │ │ │ │ ├── fixtures.ts
│ │ │ │ │ ├── useBoolean.spec.ts
│ │ │ │ │ ├── useCreatePermission.spec.tsx
│ │ │ │ │ ├── useDataSaver.spec.tsx
│ │ │ │ │ └── usePermission.spec.tsx
│ │ │ │ ├── api/
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── brokers.spec.ts
│ │ │ │ │ │ ├── clusters.spec.ts
│ │ │ │ │ │ ├── kafkaConnect.spec.ts
│ │ │ │ │ │ ├── latestVersion.spec.ts
│ │ │ │ │ │ ├── topicMessages.spec.ts
│ │ │ │ │ │ └── topics.spec.ts
│ │ │ │ │ ├── acl.ts
│ │ │ │ │ ├── appConfig.ts
│ │ │ │ │ ├── brokers.ts
│ │ │ │ │ ├── clusters.ts
│ │ │ │ │ ├── consumers.ts
│ │ │ │ │ ├── kafkaConnect.ts
│ │ │ │ │ ├── ksqlDb.tsx
│ │ │ │ │ ├── latestVersion.ts
│ │ │ │ │ ├── roles.ts
│ │ │ │ │ ├── topicMessages.tsx
│ │ │ │ │ └── topics.ts
│ │ │ │ ├── redux.ts
│ │ │ │ ├── useActionTooltip.ts
│ │ │ │ ├── useAppParams.tsx
│ │ │ │ ├── useBoolean.ts
│ │ │ │ ├── useClickOutside.ts
│ │ │ │ ├── useConfirm.ts
│ │ │ │ ├── useCreatePermisson.ts
│ │ │ │ ├── useDataSaver.ts
│ │ │ │ ├── useLocalStorage.ts
│ │ │ │ ├── useMessageFiltersStore.ts
│ │ │ │ ├── usePermission.ts
│ │ │ │ └── useUserInfo.ts
│ │ │ ├── paths.ts
│ │ │ ├── permissions.ts
│ │ │ ├── testHelpers.tsx
│ │ │ └── yupExtended.ts
│ │ ├── react-app-env.d.ts
│ │ ├── redux/
│ │ │ ├── interfaces/
│ │ │ │ ├── cluster.ts
│ │ │ │ ├── consumerGroup.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── loader.ts
│ │ │ │ ├── schema.ts
│ │ │ │ └── topic.ts
│ │ │ ├── reducers/
│ │ │ │ ├── index.ts
│ │ │ │ ├── loader/
│ │ │ │ │ ├── loaderSlice.ts
│ │ │ │ │ └── selectors.ts
│ │ │ │ ├── schemas/
│ │ │ │ │ ├── __test__/
│ │ │ │ │ │ └── fixtures.ts
│ │ │ │ │ └── schemasSlice.ts
│ │ │ │ └── topicMessages/
│ │ │ │ ├── __test__/
│ │ │ │ │ ├── fixtures.ts
│ │ │ │ │ ├── reducer.spec.ts
│ │ │ │ │ └── selectors.spec.ts
│ │ │ │ ├── selectors.ts
│ │ │ │ └── topicMessagesSlice.ts
│ │ │ └── store/
│ │ │ └── index.ts
│ │ ├── setupTests.ts
│ │ ├── styled.d.ts
│ │ ├── theme/
│ │ │ ├── index.scss
│ │ │ ├── minireset.css
│ │ │ └── theme.ts
│ │ └── widgets/
│ │ └── ClusterConfigForm/
│ │ ├── ClusterConfigForm.styled.ts
│ │ ├── Sections/
│ │ │ ├── Authentication/
│ │ │ │ ├── Authentication.tsx
│ │ │ │ └── AuthenticationMethods.tsx
│ │ │ ├── CustomAuthentication.tsx
│ │ │ ├── KSQL.tsx
│ │ │ ├── KafkaCluster.tsx
│ │ │ ├── KafkaConnect.tsx
│ │ │ ├── Metrics.tsx
│ │ │ └── SchemaRegistry.tsx
│ │ ├── common/
│ │ │ ├── Credentials.tsx
│ │ │ ├── Fileupload.tsx
│ │ │ ├── SSLForm.tsx
│ │ │ └── SectionHeader.tsx
│ │ ├── index.tsx
│ │ ├── schema.ts
│ │ ├── types.ts
│ │ └── utils/
│ │ ├── convertFormKeyToPropsKey.ts
│ │ ├── convertPropsKeyToFormKey.ts
│ │ ├── getInitialFormData.ts
│ │ ├── getIsValidConfig.ts
│ │ ├── getJaasConfig.ts
│ │ └── transformFormDataToPayload.ts
│ ├── tsconfig.dev.json
│ ├── tsconfig.json
│ └── vite.config.ts
├── kafka-ui-serde-api/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── provectus/
│ └── kafka/
│ └── ui/
│ └── serde/
│ └── api/
│ ├── DeserializeResult.java
│ ├── PropertyResolver.java
│ ├── RecordHeader.java
│ ├── RecordHeaders.java
│ ├── SchemaDescription.java
│ └── Serde.java
├── mvnw
├── mvnw.cmd
├── pom.xml
└── settings.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "Java",
"image": "mcr.microsoft.com/devcontainers/java:0-17",
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "none",
"installMaven": "true",
"installGradle": "false"
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "java -version",
"customizations": {
"vscode": {
"extensions" : [
"vscjava.vscode-java-pack",
"vscjava.vscode-maven",
"vscjava.vscode-java-debug",
"EditorConfig.EditorConfig",
"ms-azuretools.vscode-docker",
"antfu.vite",
"ms-kubernetes-tools.vscode-kubernetes-tools",
"github.vscode-pull-request-github"
]
}
}
}
================================================
FILE: .editorconfig
================================================
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = true
ij_smart_tabs = false
ij_visual_guides = none
ij_wrap_on_typing = false
trim_trailing_whitespace = true
[*.java]
indent_size = 2
ij_continuation_indent_size = 4
ij_java_align_consecutive_assignments = false
ij_java_align_consecutive_variable_declarations = false
ij_java_align_group_field_declarations = false
ij_java_align_multiline_annotation_parameters = false
ij_java_align_multiline_array_initializer_expression = false
ij_java_align_multiline_assignment = false
ij_java_align_multiline_binary_operation = false
ij_java_align_multiline_chained_methods = false
ij_java_align_multiline_extends_list = false
ij_java_align_multiline_for = true
ij_java_align_multiline_method_parentheses = false
ij_java_align_multiline_parameters = true
ij_java_align_multiline_parameters_in_calls = false
ij_java_align_multiline_parenthesized_expression = false
ij_java_align_multiline_records = true
ij_java_align_multiline_resources = true
ij_java_align_multiline_ternary_operation = false
ij_java_align_multiline_text_blocks = false
ij_java_align_multiline_throws_list = false
ij_java_align_subsequent_simple_methods = false
ij_java_align_throws_keyword = false
ij_java_align_types_in_multi_catch = true
ij_java_annotation_parameter_wrap = off
ij_java_array_initializer_new_line_after_left_brace = false
ij_java_array_initializer_right_brace_on_new_line = false
ij_java_array_initializer_wrap = normal
ij_java_assert_statement_colon_on_next_line = false
ij_java_assert_statement_wrap = normal
ij_java_assignment_wrap = normal
ij_java_binary_operation_sign_on_next_line = false
ij_java_binary_operation_wrap = normal
ij_java_blank_lines_after_anonymous_class_header = 0
ij_java_blank_lines_after_class_header = 0
ij_java_blank_lines_after_imports = 1
ij_java_blank_lines_after_package = 1
ij_java_blank_lines_around_class = 1
ij_java_blank_lines_around_field = 0
ij_java_blank_lines_around_field_in_interface = 0
ij_java_blank_lines_around_initializer = 1
ij_java_blank_lines_around_method = 1
ij_java_blank_lines_around_method_in_interface = 1
ij_java_blank_lines_before_class_end = 0
ij_java_blank_lines_before_imports = 1
ij_java_blank_lines_before_method_body = 0
ij_java_blank_lines_before_package = 1
ij_java_block_brace_style = end_of_line
ij_java_block_comment_add_space = false
ij_java_block_comment_at_first_column = true
ij_java_builder_methods = none
ij_java_call_parameters_new_line_after_left_paren = false
ij_java_call_parameters_right_paren_on_new_line = false
ij_java_call_parameters_wrap = normal
ij_java_case_statement_on_separate_line = true
ij_java_catch_on_new_line = false
ij_java_class_annotation_wrap = split_into_lines
ij_java_class_brace_style = end_of_line
ij_java_class_count_to_use_import_on_demand = 999
ij_java_class_names_in_javadoc = 1
ij_java_do_not_indent_top_level_class_members = false
ij_java_do_not_wrap_after_single_annotation = false
ij_java_do_not_wrap_after_single_annotation_in_parameter = false
ij_java_do_while_brace_force = always
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = true
ij_java_doc_align_exception_comments = true
ij_java_doc_align_param_comments = true
ij_java_doc_do_not_wrap_if_one_line = false
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = false
ij_java_doc_keep_empty_lines = true
ij_java_doc_keep_empty_parameter_tag = true
ij_java_doc_keep_empty_return_tag = true
ij_java_doc_keep_empty_throws_tag = true
ij_java_doc_keep_invalid_tags = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_preserve_line_breaks = false
ij_java_doc_use_throws_not_exception_tag = true
ij_java_else_on_new_line = false
ij_java_entity_dd_suffix = EJB
ij_java_entity_eb_suffix = Bean
ij_java_entity_hi_suffix = Home
ij_java_entity_lhi_prefix = Local
ij_java_entity_lhi_suffix = Home
ij_java_entity_li_prefix = Local
ij_java_entity_pk_class = java.lang.String
ij_java_entity_vo_suffix = VO
ij_java_enum_constants_wrap = normal
ij_java_extends_keyword_wrap = normal
ij_java_extends_list_wrap = normal
ij_java_field_annotation_wrap = split_into_lines
ij_java_finally_on_new_line = false
ij_java_for_brace_force = always
ij_java_for_statement_new_line_after_left_paren = false
ij_java_for_statement_right_paren_on_new_line = false
ij_java_for_statement_wrap = normal
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false
ij_java_if_brace_force = always
ij_java_imports_layout = $*,|,*
ij_java_indent_case_from_switch = true
ij_java_insert_inner_class_imports = false
ij_java_insert_override_annotation = true
ij_java_keep_blank_lines_before_right_brace = 2
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
ij_java_keep_blank_lines_in_code = 2
ij_java_keep_blank_lines_in_declarations = 2
ij_java_keep_builder_methods_indents = false
ij_java_keep_control_statement_in_one_line = true
ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = false
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_classes_in_one_line = false
ij_java_keep_simple_lambdas_in_one_line = false
ij_java_keep_simple_methods_in_one_line = false
ij_java_label_indent_absolute = false
ij_java_label_indent_size = 0
ij_java_lambda_brace_style = end_of_line
ij_java_layout_static_imports_separately = true
ij_java_line_comment_add_space = false
ij_java_line_comment_add_space_on_reformat = false
ij_java_line_comment_at_first_column = true
ij_java_message_dd_suffix = EJB
ij_java_message_eb_suffix = Bean
ij_java_method_annotation_wrap = split_into_lines
ij_java_method_brace_style = end_of_line
ij_java_method_call_chain_wrap = normal
ij_java_method_parameters_new_line_after_left_paren = false
ij_java_method_parameters_right_paren_on_new_line = false
ij_java_method_parameters_wrap = normal
ij_java_modifier_list_wrap = false
ij_java_multi_catch_types_wrap = normal
ij_java_names_count_to_use_import_on_demand = 999
ij_java_new_line_after_lparen_in_annotation = false
ij_java_new_line_after_lparen_in_record_header = false
ij_java_parameter_annotation_wrap = normal
ij_java_parentheses_expression_new_line_after_left_paren = false
ij_java_parentheses_expression_right_paren_on_new_line = false
ij_java_place_assignment_sign_on_next_line = false
ij_java_prefer_longer_names = true
ij_java_prefer_parameters_wrap = false
ij_java_record_components_wrap = normal
ij_java_repeat_synchronized = true
ij_java_replace_instanceof_and_cast = false
ij_java_replace_null_check = true
ij_java_replace_sum_lambda_with_method_ref = true
ij_java_resource_list_new_line_after_left_paren = false
ij_java_resource_list_right_paren_on_new_line = false
ij_java_resource_list_wrap = normal
ij_java_rparen_on_new_line_in_annotation = false
ij_java_rparen_on_new_line_in_record_header = false
ij_java_session_dd_suffix = EJB
ij_java_session_eb_suffix = Bean
ij_java_session_hi_suffix = Home
ij_java_session_lhi_prefix = Local
ij_java_session_lhi_suffix = Home
ij_java_session_li_prefix = Local
ij_java_session_si_suffix = Service
ij_java_space_after_closing_angle_bracket_in_type_argument = false
ij_java_space_after_colon = true
ij_java_space_after_comma = true
ij_java_space_after_comma_in_type_arguments = true
ij_java_space_after_for_semicolon = true
ij_java_space_after_quest = true
ij_java_space_after_type_cast = true
ij_java_space_before_annotation_array_initializer_left_brace = false
ij_java_space_before_annotation_parameter_list = false
ij_java_space_before_array_initializer_left_brace = true
ij_java_space_before_catch_keyword = true
ij_java_space_before_catch_left_brace = true
ij_java_space_before_catch_parentheses = true
ij_java_space_before_class_left_brace = true
ij_java_space_before_colon = true
ij_java_space_before_colon_in_foreach = true
ij_java_space_before_comma = false
ij_java_space_before_do_left_brace = true
ij_java_space_before_else_keyword = true
ij_java_space_before_else_left_brace = true
ij_java_space_before_finally_keyword = true
ij_java_space_before_finally_left_brace = true
ij_java_space_before_for_left_brace = true
ij_java_space_before_for_parentheses = true
ij_java_space_before_for_semicolon = false
ij_java_space_before_if_left_brace = true
ij_java_space_before_if_parentheses = true
ij_java_space_before_method_call_parentheses = false
ij_java_space_before_method_left_brace = true
ij_java_space_before_method_parentheses = false
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
ij_java_space_before_quest = true
ij_java_space_before_switch_left_brace = true
ij_java_space_before_switch_parentheses = true
ij_java_space_before_synchronized_left_brace = true
ij_java_space_before_synchronized_parentheses = true
ij_java_space_before_try_left_brace = true
ij_java_space_before_try_parentheses = true
ij_java_space_before_type_parameter_list = false
ij_java_space_before_while_keyword = true
ij_java_space_before_while_left_brace = true
ij_java_space_before_while_parentheses = true
ij_java_space_inside_one_line_enum_braces = false
ij_java_space_within_empty_array_initializer_braces = false
ij_java_space_within_empty_method_call_parentheses = false
ij_java_space_within_empty_method_parentheses = false
ij_java_spaces_around_additive_operators = true
ij_java_spaces_around_annotation_eq = true
ij_java_spaces_around_assignment_operators = true
ij_java_spaces_around_bitwise_operators = true
ij_java_spaces_around_equality_operators = true
ij_java_spaces_around_lambda_arrow = true
ij_java_spaces_around_logical_operators = true
ij_java_spaces_around_method_ref_dbl_colon = false
ij_java_spaces_around_multiplicative_operators = true
ij_java_spaces_around_relational_operators = true
ij_java_spaces_around_shift_operators = true
ij_java_spaces_around_type_bounds_in_type_parameters = true
ij_java_spaces_around_unary_operator = false
ij_java_spaces_within_angle_brackets = false
ij_java_spaces_within_annotation_parentheses = false
ij_java_spaces_within_array_initializer_braces = false
ij_java_spaces_within_braces = false
ij_java_spaces_within_brackets = false
ij_java_spaces_within_cast_parentheses = false
ij_java_spaces_within_catch_parentheses = false
ij_java_spaces_within_for_parentheses = false
ij_java_spaces_within_if_parentheses = false
ij_java_spaces_within_method_call_parentheses = false
ij_java_spaces_within_method_parentheses = false
ij_java_spaces_within_parentheses = false
ij_java_spaces_within_record_header = false
ij_java_spaces_within_switch_parentheses = false
ij_java_spaces_within_synchronized_parentheses = false
ij_java_spaces_within_try_parentheses = false
ij_java_spaces_within_while_parentheses = false
ij_java_special_else_if_treatment = true
ij_java_subclass_name_suffix = Impl
ij_java_ternary_operation_signs_on_next_line = false
ij_java_ternary_operation_wrap = normal
ij_java_test_name_suffix = Test
ij_java_throws_keyword_wrap = normal
ij_java_throws_list_wrap = normal
ij_java_use_external_annotations = false
ij_java_use_fq_class_names = false
ij_java_use_relative_indents = false
ij_java_use_single_class_imports = true
ij_java_variable_annotation_wrap = normal
ij_java_visibility = public
ij_java_while_brace_force = always
ij_java_while_on_new_line = false
ij_java_wrap_comments = false
ij_java_wrap_first_method_in_call_chain = false
ij_java_wrap_long_lines = false
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
[*.yaml]
indent_size = 2
[*.yml]
indent_size = 2
================================================
FILE: .github/CODEOWNERS
================================================
* @Haarolean
# BACKEND
/pom.xml @provectus/kafka-backend
/kafka-ui-contract/ @provectus/kafka-backend
/kafka-ui-api/ @provectus/kafka-backend
# FRONTEND
/kafka-ui-react-app/ @provectus/kafka-frontend
# TESTS
/kafka-ui-e2e-checks/ @provectus/kafka-qa
# INFRA
/.github/workflows/ @provectus/kafka-devops
================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: "\U0001F41E Bug report"
description: File a bug report
labels: ["status/triage", "type/bug"]
assignees: []
body:
- type: markdown
attributes:
value: |
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 looked up my issue in [FAQ](https://docs.kafka-ui.provectus.io/faq/common-problems)
required: true
- label: I've searched for an already existing issues [here](https://github.com/provectus/kafka-ui/issues)
required: true
- label: I've tried running `master`-labeled docker image and the issue still persists there
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)
required: true
- type: textarea
attributes:
label: Describe the bug (actual behavior)
description: A clear and concise description of what the bug is. Use a list, if there is more than one problem
validations:
required: true
- type: textarea
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen
validations:
required: false
- type: textarea
attributes:
label: Your installation details
description: |
How do you run the app? Please provide as much info as possible:
1. App version (commit hash in the top left corner of the UI)
2. Helm chart version, if you use one
3. Your application config. Please remove the sensitive info like passwords or API keys.
4. Any IAAC configs
validations:
required: true
- type: textarea
attributes:
label: Steps to reproduce
description: |
Please write down the order of the actions required to reproduce the issue.
For the advanced setups/complicated issue, we might need you to provide
a minimal [reproducible example](https://stackoverflow.com/help/minimal-reproducible-example).
validations:
required: true
- type: textarea
attributes:
label: Screenshots
description: |
If applicable, add screenshots to help explain your problem
validations:
required: false
- type: textarea
attributes:
label: Logs
description: |
If applicable, *upload* screenshots to help explain your problem
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: |
Add any other context about the problem here. E.G.:
1. Are there any alternative scenarios (different data/methods/configuration/setup) you have tried?
Were they successful or the same issue occurred? Please provide steps as well.
2. Related issues (if there are any).
3. Logs (if available)
4. Is there any serious impact or behaviour on the end-user because of this issue, that can be overlooked?
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Report helm issue
url: https://github.com/provectus/kafka-ui-charts
about: Our helm charts are located in another repo. Please raise issues/PRs regarding charts in that repo.
- name: Official documentation
url: https://docs.kafka-ui.provectus.io/
about: Before reaching out for support, please refer to our documentation. Read "FAQ" and "Common problems", also try using search there.
- name: Community Discord
url: https://discord.gg/4DWzD7pGE5
about: Chat with other users, get some support or ask questions.
- name: GitHub Discussions
url: https://github.com/provectus/kafka-ui/discussions
about: An alternative place to ask questions or to get some support.
================================================
FILE: .github/ISSUE_TEMPLATE/feature.yml
================================================
name: "\U0001F680 Feature request"
description: Propose a new feature
labels: ["status/triage", "type/feature"]
assignees: []
body:
- type: markdown
attributes:
value: |
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.
validations:
required: false
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- ignore-task-list-start -->
- [ ] **Breaking change?** (if so, please describe the impact and migration path for existing application instances)
<!-- ignore-task-list-end -->
**What changes did you make?** (Give an overview)
**Is there anything you'd like reviewers to focus on?**
**How Has This Been Tested?** (put an "x" (case-sensitive!) next to an item)
<!-- ignore-task-list-start -->
- [ ] No need to
- [ ] Manually (please, describe, if necessary)
- [ ] Unit checks
- [ ] Integration checks
- [ ] Covered by existing automation
<!-- ignore-task-list-end -->
**Checklist** (put an "x" (case-sensitive!) next to all the items, otherwise the build will fail)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation (e.g. **ENVIRONMENT VARIABLES**)
- [ ] My changes generate no new warnings (e.g. Sonar is happy)
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged
Check out [Contributing](https://github.com/provectus/kafka-ui/blob/master/CONTRIBUTING.md) and [Code of Conduct](https://github.com/provectus/kafka-ui/blob/master/CODE-OF-CONDUCT.md)
**A picture of a cute animal (not mandatory but encouraged)**
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: maven
directory: "/"
schedule:
interval: daily
time: "10:00"
timezone: Europe/Moscow
reviewers:
- "Haarolean"
labels:
- "scope/backend"
- "type/dependencies"
- package-ecosystem: npm
directory: "/kafka-ui-react-app"
schedule:
interval: weekly
time: "10:00"
timezone: Europe/Moscow
open-pull-requests-limit: 10
versioning-strategy: increase-if-necessary
labels:
- "scope/frontend"
- "type/dependencies"
ignore:
- dependency-name: react-hook-form
versions:
- 6.15.5
- 7.0.0
- 7.0.6
- dependency-name: "@hookform/error-message"
versions:
- 1.1.0
- dependency-name: use-debounce
versions:
- 6.0.0
- 6.0.1
- dependency-name: "@rooks/use-outside-click-ref"
versions:
- 4.10.1
- dependency-name: react-multi-select-component
versions:
- 3.1.6
- 4.0.0
- dependency-name: husky
versions:
- 5.1.3
- 5.2.0
- 6.0.0
- dependency-name: "@types/node-fetch"
versions:
- 2.5.9
- dependency-name: "@testing-library/jest-dom"
versions:
- 5.11.10
- dependency-name: "@typescript-eslint/eslint-plugin"
versions:
- 4.20.0
- dependency-name: "@openapitools/openapi-generator-cli"
versions:
- 2.2.5
- dependency-name: "@typescript-eslint/parser"
versions:
- 4.20.0
- dependency-name: react-datepicker
versions:
- 3.7.0
- dependency-name: eslint
versions:
- 7.23.0
- dependency-name: "@testing-library/user-event"
versions:
- 13.0.6
- dependency-name: immer
versions:
- 9.0.1
- dependency-name: react-scripts
versions:
- 4.0.3
- dependency-name: eslint-config-prettier
versions:
- 8.1.0
- dependency-name: "@testing-library/react"
versions:
- 11.2.5
- dependency-name: lodash
versions:
- 4.17.21
- dependency-name: react-json-tree
versions:
- 0.15.0
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: weekly
time: "10:00"
timezone: Europe/Moscow
reviewers:
- "Haarolean"
labels:
- "scope/infrastructure"
- "type/dependencies"
================================================
FILE: .github/release_drafter.yaml
================================================
name-template: '$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
template: |
## Changes
$CHANGES
## Contributors
$CONTRIBUTORS
exclude-labels:
- 'scope/infrastructure'
- 'scope/QA'
- 'scope/AQA'
- 'type/dependencies'
- 'type/chore'
- 'type/documentation'
- 'type/refactoring'
categories:
- title: '🚩 Breaking Changes'
labels:
- 'impact/changelog'
- title: '⚙️Features'
labels:
- 'type/feature'
- title: '🪛Enhancements'
labels:
- 'type/enhancement'
- title: '🔨Bug Fixes'
labels:
- 'type/bug'
- title: 'Security'
labels:
- 'type/security'
- title: '⎈ Helm/K8S Changes'
labels:
- 'scope/k8s'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
version-resolver:
major:
labels:
- 'major'
minor:
labels:
- 'minor'
patch:
labels:
- 'patch'
default: patch
================================================
FILE: .github/workflows/aws_publisher.yaml
================================================
name: "Infra: Release: AWS Marketplace Publisher"
on:
workflow_dispatch:
inputs:
KafkaUIInfraBranch:
description: 'Branch name of Kafka-UI-Infra repo, build commands will be executed from this branch'
required: true
default: 'master'
KafkaUIReleaseVersion:
description: 'Version of KafkaUI'
required: true
default: '0.3.2'
PublishOnMarketplace:
description: 'If set to true, the request to update AWS Server product version will be raised'
required: true
default: false
type: boolean
jobs:
build-ami:
name: Build AMI
runs-on: ubuntu-latest
steps:
- name: Clone infra repo
run: |
echo "Cloning repo..."
git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch ${{ github.event.inputs.KafkaUIInfraBranch }}
echo "Cd to packer DIR..."
cd kafka-ui-infra/ami
echo "WORK_DIR=$(pwd)" >> $GITHUB_ENV
echo "Packer will be triggered in this dir $WORK_DIR"
- name: Configure AWS credentials for Kafka-UI account
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_AMI_PUBLISH_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_AMI_PUBLISH_KEY_SECRET }}
aws-region: us-east-1
# validate templates
- name: Validate Template
uses: hashicorp/packer-github-actions@master
with:
command: validate
arguments: -syntax-only
target: kafka-ui-infra/ami/kafka-ui.pkr.hcl
# build artifact
- name: Build Artifact
uses: hashicorp/packer-github-actions@master
with:
command: build
arguments: "-color=false -on-error=abort -var=kafka_ui_release_version=${{ github.event.inputs.KafkaUIReleaseVersion }}"
target: kafka-ui.pkr.hcl
working_directory: ${{ env.WORK_DIR }}
env:
PACKER_LOG: 1
# add fresh AMI to AWS Marketplace
- name: Publish Artifact at Marketplace
if: ${{ github.event.inputs.PublishOnMarketplace == 'true' }}
env:
PRODUCT_ID: ${{ secrets.AWS_SERVER_PRODUCT_ID }}
RELEASE_VERSION: "${{ github.event.inputs.KafkaUIReleaseVersion }}"
RELEASE_NOTES: "https://github.com/provectus/kafka-ui/releases/tag/v${{ github.event.inputs.KafkaUIReleaseVersion }}"
MP_ROLE_ARN: ${{ secrets.AWS_MARKETPLACE_AMI_ACCESS_ROLE }} # https://docs.aws.amazon.com/marketplace/latest/userguide/ami-single-ami-products.html#single-ami-marketplace-ami-access
AMI_OS_VERSION: "amzn2-ami-kernel-5.10-hvm-*-x86_64-gp2"
run: |
set -x
pwd
ls -la kafka-ui-infra/ami
echo $WORK_DIR/manifest.json
export AMI_ID=$(jq -r '.builds[-1].artifact_id' kafka-ui-infra/ami/manifest.json | cut -d ":" -f2)
/bin/bash kafka-ui-infra/aws-marketplace/prepare_changeset.sh > changeset.json
aws marketplace-catalog start-change-set \
--catalog "AWSMarketplace" \
--change-set "$(cat changeset.json)"
================================================
FILE: .github/workflows/backend.yml
================================================
name: "Backend: PR/master build & test"
on:
push:
branches:
- master
pull_request_target:
types: ["opened", "edited", "reopened", "synchronize"]
paths:
- "kafka-ui-api/**"
- "pom.xml"
permissions:
checks: write
pull-requests: write
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Build and analyze pull request target
if: ${{ github.event_name == 'pull_request' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_BACKEND }}
HEAD_REF: ${{ github.head_ref }}
BASE_REF: ${{ github.base_ref }}
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.pull_request.head.sha }}
./mvnw -B -V -ntp verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
-Dsonar.projectKey=com.provectus:kafka-ui_backend \
-Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \
-Dsonar.pullrequest.branch=$HEAD_REF \
-Dsonar.pullrequest.base=$BASE_REF
- name: Build and analyze push master
if: ${{ github.event_name == 'push' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_BACKEND }}
run: |
./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
./mvnw -B -V -ntp verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
-Dsonar.projectKey=com.provectus:kafka-ui_backend
================================================
FILE: .github/workflows/block_merge.yml
================================================
name: "Infra: PR block merge"
on:
pull_request:
types: [opened, labeled, unlabeled, synchronize]
jobs:
block_merge:
runs-on: ubuntu-latest
steps:
- uses: mheap/github-action-required-labels@v5
with:
mode: exactly
count: 0
labels: "status/blocked, status/needs-attention, status/on-hold, status/pending, status/triage, status/pending-backend, status/pending-frontend, status/pending-QA"
================================================
FILE: .github/workflows/branch-deploy.yml
================================================
name: "Infra: Feature Testing: Init env"
on:
workflow_dispatch:
pull_request:
types: ['labeled']
jobs:
build:
if: ${{ github.event.label.name == 'status/feature_testing' || github.event.label.name == 'status/feature_testing_public' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: get branch name
id: extract_branch
run: |
tag='pr${{ github.event.pull_request.number }}'
echo "tag=${tag}" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build
id: build
run: |
./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
./mvnw -B -V -ntp clean package -Pprod -DskipTests
export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Configure AWS credentials for Kafka-UI account
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build and push
id: docker_build_and_push
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: kafka-ui-api
push: true
tags: 297478128798.dkr.ecr.eu-central-1.amazonaws.com/kafka-ui:${{ steps.extract_branch.outputs.tag }}
build-args: |
JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
outputs:
tag: ${{ steps.extract_branch.outputs.tag }}
make-branch-env:
needs: build
runs-on: ubuntu-latest
steps:
- name: clone
run: |
git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
- name: create deployment
run: |
cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
echo "Branch:${{ needs.build.outputs.tag }}"
./kafka-ui-deployment-from-branch.sh ${{ needs.build.outputs.tag }} ${{ github.event.label.name }} ${{ secrets.FEATURE_TESTING_UI_PASSWORD }}
git config --global user.email "infra-tech@provectus.com"
git config --global user.name "infra-tech"
git add ../kafka-ui-from-branch/
git commit -m "added env:${{ needs.build.outputs.deploy }}" && git push || true
- name: update status check for private deployment
if: ${{ github.event.label.name == 'status/feature_testing' }}
uses: Sibz/github-status-action@v1.1.6
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Click Details button to open custom deployment page"
state: "success"
sha: ${{ github.event.pull_request.head.sha || github.sha }}
target_url: "http://${{ needs.build.outputs.tag }}.internal.kafka-ui.provectus.io"
- name: update status check for public deployment
if: ${{ github.event.label.name == 'status/feature_testing_public' }}
uses: Sibz/github-status-action@v1.1.6
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Click Details button to open custom deployment page"
state: "success"
sha: ${{ github.event.pull_request.head.sha || github.sha }}
target_url: "http://${{ needs.build.outputs.tag }}.internal.kafka-ui.provectus.io"
================================================
FILE: .github/workflows/branch-remove.yml
================================================
name: "Infra: Feature Testing: Destroy env"
on:
workflow_dispatch:
pull_request:
types: ['unlabeled', 'closed']
jobs:
remove:
runs-on: ubuntu-latest
if: ${{ (github.event.label.name == 'status/feature_testing' || github.event.label.name == 'status/feature_testing_public') || (github.event.action == 'closed' && (contains(github.event.pull_request.labels.*.name, 'status/feature_testing') || contains(github.event.pull_request.labels.*.name, 'status/feature_testing_public'))) }}
steps:
- uses: actions/checkout@v3
- name: clone
run: |
git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
- name: remove env
run: |
cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
./delete-env.sh pr${{ github.event.pull_request.number }} || true
git config --global user.email "infra-tech@provectus.com"
git config --global user.name "infra-tech"
git add ../kafka-ui-from-branch/
git commit -m "removed env:${{ needs.build.outputs.deploy }}" && git push || true
================================================
FILE: .github/workflows/build-public-image.yml
================================================
name: "Infra: Image Testing: Deploy"
on:
workflow_dispatch:
pull_request:
types: ['labeled']
jobs:
build:
if: ${{ github.event.label.name == 'status/image_testing' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: get branch name
id: extract_branch
run: |
tag='${{ github.event.pull_request.number }}'
echo "tag=${tag}" >> $GITHUB_OUTPUT
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build
id: build
run: |
./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
./mvnw -B -V -ntp clean package -Pprod -DskipTests
export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Configure AWS credentials for Kafka-UI account
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
with:
registry-type: 'public'
- name: Build and push
id: docker_build_and_push
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: kafka-ui-api
push: true
tags: public.ecr.aws/provectus/kafka-ui-custom-build:${{ steps.extract_branch.outputs.tag }}
build-args: |
JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: make comment with private deployment link
uses: peter-evans/create-or-update-comment@v3
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
Image published at public.ecr.aws/provectus/kafka-ui-custom-build:${{ steps.extract_branch.outputs.tag }}
outputs:
tag: ${{ steps.extract_branch.outputs.tag }}
================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
paths:
- 'kafka-ui-contract/**'
- 'kafka-ui-react-app/**'
- 'kafka-ui-api/**'
- 'kafka-ui-serde-api/**'
schedule:
- cron: '39 15 * * 6'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript', 'java' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
================================================
FILE: .github/workflows/cve.yaml
================================================
name: CVE checks docker master
on:
workflow_dispatch:
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '0 8 15 * *'
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build project
id: build
run: |
./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
./mvnw -B -V -ntp clean package -DskipTests
export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build docker image
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: kafka-ui-api
platforms: linux/amd64
push: false
load: true
tags: |
provectuslabs/kafka-ui:${{ steps.build.outputs.version }}
build-args: |
JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Run CVE checks
uses: aquasecurity/trivy-action@0.12.0
with:
image-ref: "provectuslabs/kafka-ui:${{ steps.build.outputs.version }}"
format: "table"
exit-code: "1"
================================================
FILE: .github/workflows/delete-public-image.yml
================================================
name: "Infra: Image Testing: Delete"
on:
workflow_dispatch:
pull_request:
types: ['unlabeled', 'closed']
jobs:
remove:
if: ${{ github.event.label.name == 'status/image_testing' || ( github.event.action == 'closed' && (contains(github.event.pull_request.labels, 'status/image_testing'))) }}
runs-on: ubuntu-latest
steps:
- name: get branch name
id: extract_branch
run: |
echo
tag='${{ github.event.pull_request.number }}'
echo "tag=${tag}" >> $GITHUB_OUTPUT
- name: Configure AWS credentials for Kafka-UI account
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
with:
registry-type: 'public'
- name: Remove from ECR
id: remove_from_ecr
run: |
aws ecr-public batch-delete-image \
--repository-name kafka-ui-custom-build \
--image-ids imageTag=${{ steps.extract_branch.outputs.tag }} \
--region us-east-1
================================================
FILE: .github/workflows/documentation.yaml
================================================
name: "Infra: Docs: URL linter"
on:
pull_request:
types:
- opened
- labeled
- reopened
- synchronize
paths:
- 'documentation/**'
- '**.md'
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check URLs in files
uses: urlstechie/urlchecker-action@0.0.34
with:
exclude_patterns: localhost,127.0.,192.168.
exclude_urls: https://api.server,https://graph.microsoft.com/User.Read,https://dev-a63ggcut.auth0.com/,http://main-schema-registry:8081,http://schema-registry:8081,http://another-yet-schema-registry:8081,http://another-schema-registry:8081
print_all: false
file_types: .md
================================================
FILE: .github/workflows/e2e-automation.yml
================================================
name: "E2E: Automation suite"
on:
workflow_dispatch:
inputs:
test_suite:
description: 'Select test suite to run'
default: 'regression'
required: true
type: choice
options:
- regression
- sanity
- smoke
qase_token:
description: 'Set Qase token to enable integration'
required: false
type: string
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.sha }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Set up environment
id: set_env_values
run: |
cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
- name: Pull with Docker
id: pull_chrome
run: |
docker pull selenoid/vnc_chrome:103.0
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build with Maven
id: build_app
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
- name: Compose with Docker
id: compose_app
# use the following command until #819 will be fixed
run: |
docker-compose -f kafka-ui-e2e-checks/docker/selenoid-git.yaml up -d
docker-compose -f ./documentation/compose/e2e-tests.yaml up -d
- name: Run test suite
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
./mvnw -B -V -ntp -DQASEIO_API_TOKEN=${{ github.event.inputs.qase_token }} -Dsurefire.suiteXmlFiles='src/test/resources/${{ github.event.inputs.test_suite }}.xml' -Dsuite=${{ github.event.inputs.test_suite }} -f 'kafka-ui-e2e-checks' test -Pprod
- name: Generate Allure report
uses: simple-elf/allure-report-action@master
if: always()
id: allure-report
with:
allure_results: ./kafka-ui-e2e-checks/allure-results
gh_pages: allure-results
allure_report: allure-report
subfolder: allure-results
report_url: "http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com"
- uses: jakejarvis/s3-sync-action@master
if: always()
env:
AWS_S3_BUCKET: 'kafkaui-allure-reports'
AWS_REGION: 'eu-central-1'
SOURCE_DIR: 'allure-history/allure-results'
- name: Deploy report to Amazon S3
if: always()
uses: Sibz/github-status-action@v1.1.6
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Click Details button to open Allure report"
state: "success"
sha: ${{ github.sha }}
target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }}
- name: Dump Docker logs on failure
if: failure()
uses: jwalton/gh-docker-logs@v2.2.1
================================================
FILE: .github/workflows/e2e-checks.yaml
================================================
name: "E2E: PR healthcheck"
on:
pull_request_target:
types: [ "opened", "edited", "reopened", "synchronize" ]
paths:
- "kafka-ui-api/**"
- "kafka-ui-contract/**"
- "kafka-ui-react-app/**"
- "kafka-ui-e2e-checks/**"
- "pom.xml"
permissions:
statuses: write
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.S3_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.S3_AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Set up environment
id: set_env_values
run: |
cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
- name: Pull with Docker
id: pull_chrome
run: |
docker pull selenoid/vnc_chrome:103.0
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build with Maven
id: build_app
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.pull_request.head.sha }}
./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
- name: Compose with Docker
id: compose_app
# use the following command until #819 will be fixed
run: |
docker-compose -f kafka-ui-e2e-checks/docker/selenoid-git.yaml up -d
docker-compose -f ./documentation/compose/e2e-tests.yaml up -d && until [ "$(docker exec kafka-ui wget --spider --server-response http://localhost:8080/actuator/health 2>&1 | grep -c 'HTTP/1.1 200 OK')" == "1" ]; do echo "Waiting for kafka-ui ..." && sleep 1; done
- name: Run test suite
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.pull_request.head.sha }}
./mvnw -B -V -ntp -Dsurefire.suiteXmlFiles='src/test/resources/smoke.xml' -f 'kafka-ui-e2e-checks' test -Pprod
- name: Generate allure report
uses: simple-elf/allure-report-action@master
if: always()
id: allure-report
with:
allure_results: ./kafka-ui-e2e-checks/allure-results
gh_pages: allure-results
allure_report: allure-report
subfolder: allure-results
report_url: "http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com"
- uses: jakejarvis/s3-sync-action@master
if: always()
env:
AWS_S3_BUCKET: 'kafkaui-allure-reports'
AWS_REGION: 'eu-central-1'
SOURCE_DIR: 'allure-history/allure-results'
- name: Deploy report to Amazon S3
if: always()
uses: Sibz/github-status-action@v1.1.6
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Click Details button to open Allure report"
state: "success"
sha: ${{ github.event.pull_request.head.sha || github.sha }}
target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }}
- name: Dump docker logs on failure
if: failure()
uses: jwalton/gh-docker-logs@v2.2.1
================================================
FILE: .github/workflows/e2e-manual.yml
================================================
name: "E2E: Manual suite"
on:
workflow_dispatch:
inputs:
test_suite:
description: 'Select test suite to run'
default: 'manual'
required: true
type: choice
options:
- manual
- qase
qase_token:
description: 'Set Qase token to enable integration'
required: true
type: string
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.sha }}
- name: Set up environment
id: set_env_values
run: |
cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build with Maven
id: build_app
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
- name: Run test suite
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
./mvnw -B -V -ntp -DQASEIO_API_TOKEN=${{ github.event.inputs.qase_token }} -Dsurefire.suiteXmlFiles='src/test/resources/${{ github.event.inputs.test_suite }}.xml' -Dsuite=${{ github.event.inputs.test_suite }} -f 'kafka-ui-e2e-checks' test -Pprod
================================================
FILE: .github/workflows/e2e-weekly.yml
================================================
name: "E2E: Weekly suite"
on:
schedule:
- cron: '0 1 * * 1'
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.sha }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Set up environment
id: set_env_values
run: |
cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
- name: Pull with Docker
id: pull_chrome
run: |
docker pull selenoid/vnc_chrome:103.0
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build with Maven
id: build_app
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
- name: Compose with Docker
id: compose_app
# use the following command until #819 will be fixed
run: |
docker-compose -f kafka-ui-e2e-checks/docker/selenoid-git.yaml up -d
docker-compose -f ./documentation/compose/e2e-tests.yaml up -d
- name: Run test suite
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
./mvnw -B -V -ntp -DQASEIO_API_TOKEN=${{ secrets.QASEIO_API_TOKEN }} -Dsurefire.suiteXmlFiles='src/test/resources/sanity.xml' -Dsuite=weekly -f 'kafka-ui-e2e-checks' test -Pprod
- name: Generate Allure report
uses: simple-elf/allure-report-action@master
if: always()
id: allure-report
with:
allure_results: ./kafka-ui-e2e-checks/allure-results
gh_pages: allure-results
allure_report: allure-report
subfolder: allure-results
report_url: "http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com"
- uses: jakejarvis/s3-sync-action@master
if: always()
env:
AWS_S3_BUCKET: 'kafkaui-allure-reports'
AWS_REGION: 'eu-central-1'
SOURCE_DIR: 'allure-history/allure-results'
- name: Deploy report to Amazon S3
if: always()
uses: Sibz/github-status-action@v1.1.6
with:
authToken: ${{secrets.GITHUB_TOKEN}}
context: "Click Details button to open Allure report"
state: "success"
sha: ${{ github.sha }}
target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }}
- name: Dump Docker logs on failure
if: failure()
uses: jwalton/gh-docker-logs@v2.2.1
================================================
FILE: .github/workflows/frontend.yaml
================================================
name: "Frontend: PR/master build & test"
on:
push:
branches:
- master
pull_request_target:
types: ["opened", "edited", "reopened", "synchronize"]
paths:
- "kafka-ui-contract/**"
- "kafka-ui-react-app/**"
permissions:
checks: write
pull-requests: write
jobs:
build-and-test:
env:
CI: true
NODE_ENV: dev
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- uses: pnpm/action-setup@v2.4.0
with:
version: 8.6.12
- name: Install node
uses: actions/setup-node@v3.8.1
with:
node-version: "18.17.1"
cache: "pnpm"
cache-dependency-path: "./kafka-ui-react-app/pnpm-lock.yaml"
- name: Install Node dependencies
run: |
cd kafka-ui-react-app/
pnpm install --frozen-lockfile
- name: Generate sources
run: |
cd kafka-ui-react-app/
pnpm gen:sources
- name: Linter
run: |
cd kafka-ui-react-app/
pnpm lint:CI
- name: Tests
run: |
cd kafka-ui-react-app/
pnpm test:CI
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
with:
projectBaseDir: ./kafka-ui-react-app
args: -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} -Dsonar.pullrequest.branch=${{ github.head_ref }} -Dsonar.pullrequest.base=${{ github.base_ref }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_FRONTEND }}
================================================
FILE: .github/workflows/master.yaml
================================================
name: "Master: Build & deploy"
on:
workflow_dispatch:
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build
id: build
run: |
./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
./mvnw -V -B -ntp clean package -Pprod -DskipTests
export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
#################
# #
# Docker images #
# #
#################
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build_and_push
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: kafka-ui-api
platforms: linux/amd64,linux/arm64
provenance: false
push: true
tags: |
provectuslabs/kafka-ui:${{ steps.build.outputs.version }}
provectuslabs/kafka-ui:master
build-args: |
JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
#################################
# #
# Master image digest update #
# #
#################################
- name: update-master-deployment
run: |
git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch master
cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
echo "Image digest is:${{ steps.docker_build_and_push.outputs.digest }}"
./kafka-ui-update-master-digest.sh ${{ steps.docker_build_and_push.outputs.digest }}
git config --global user.email "infra-tech@provectus.com"
git config --global user.name "infra-tech"
git add ../kafka-ui/*
git commit -m "updated master image digest: ${{ steps.docker_build_and_push.outputs.digest }}" && git push
================================================
FILE: .github/workflows/pr-checks.yaml
================================================
name: "PR: Checklist linter"
on:
pull_request_target:
types: [opened, edited, synchronize, reopened]
permissions:
checks: write
jobs:
task-check:
runs-on: ubuntu-latest
steps:
- uses: kentaro-m/task-completed-checker-action@v0.1.2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
- uses: dekinderfiets/pr-description-enforcer@0.0.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
================================================
FILE: .github/workflows/release-serde-api.yaml
================================================
name: "Infra: Release: Serde API"
on: workflow_dispatch
jobs:
release-serde-api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- run: |
git config user.name github-actions
git config user.email github-actions@github.com
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "zulu"
cache: "maven"
- id: install-secret-key
name: Install GPG secret key
run: |
cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import
- name: Publish to Maven Central
run: |
mvn source:jar javadoc:jar package gpg:sign -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -Dserver.username=${{ secrets.NEXUS_USERNAME }} -Dserver.password=${{ secrets.NEXUS_PASSWORD }} nexus-staging:deploy -pl kafka-ui-serde-api -s settings.xml
================================================
FILE: .github/workflows/release.yaml
================================================
name: "Infra: Release"
on:
release:
types: [published]
jobs:
release:
runs-on: ubuntu-latest
outputs:
version: ${{steps.build.outputs.version}}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- run: |
git config user.name github-actions
git config user.email github-actions@github.com
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build with Maven
id: build
run: |
./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.release.tag_name }}
./mvnw -B -V -ntp clean package -Pprod -DskipTests
export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
- name: Upload files to a GitHub release
uses: svenstaro/upload-release-action@2.7.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: kafka-ui-api/target/kafka-ui-api-${{ steps.build.outputs.version }}.jar
tag: ${{ github.event.release.tag_name }}
- name: Archive JAR
uses: actions/upload-artifact@v3
with:
name: kafka-ui-${{ steps.build.outputs.version }}
path: kafka-ui-api/target/kafka-ui-api-${{ steps.build.outputs.version }}.jar
#################
# #
# Docker images #
# #
#################
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build_and_push
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: kafka-ui-api
platforms: linux/amd64,linux/arm64
provenance: false
push: true
tags: |
provectuslabs/kafka-ui:${{ steps.build.outputs.version }}
provectuslabs/kafka-ui:latest
build-args: |
JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
charts:
runs-on: ubuntu-latest
needs: release
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.CHARTS_ACTIONS_TOKEN }}
repository: provectus/kafka-ui-charts
event-type: prepare-helm-release
client-payload: '{"appversion": "${{ needs.release.outputs.version }}"}'
================================================
FILE: .github/workflows/release_drafter.yml
================================================
name: "Infra: Release Drafter run"
on:
push:
branches:
- master
workflow_dispatch:
inputs:
version:
description: 'Release version'
required: false
branch:
description: 'Target branch'
required: false
default: 'master'
permissions:
contents: read
jobs:
update_release_draft:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: release-drafter/release-drafter@v5
with:
config-name: release_drafter.yaml
disable-autolabeler: true
version: ${{ github.event.inputs.version }}
commitish: ${{ github.event.inputs.branch }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/separate_env_public_create.yml
================================================
name: "Infra: Feature Testing Public: Init env"
on:
workflow_dispatch:
inputs:
ENV_NAME:
description: 'Will be used as subdomain in the public URL.'
required: true
default: 'demo'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: get branch name
id: extract_branch
run: |
tag="${{ github.event.inputs.ENV_NAME }}-$(date '+%F-%H-%M-%S')"
echo "tag=${tag}" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
cache: 'maven'
- name: Build
id: build
run: |
./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
./mvnw -B -V -ntp clean package -Pprod -DskipTests
export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Configure AWS credentials for Kafka-UI account
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build and push
id: docker_build_and_push
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: kafka-ui-api
push: true
tags: 297478128798.dkr.ecr.eu-central-1.amazonaws.com/kafka-ui:${{ steps.extract_branch.outputs.tag }}
build-args: |
JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
outputs:
tag: ${{ steps.extract_branch.outputs.tag }}
separate-env-create:
runs-on: ubuntu-latest
needs: build
steps:
- name: clone
run: |
git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
- name: separate env create
run: |
cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
bash separate_env_create.sh ${{ github.event.inputs.ENV_NAME }} ${{ secrets.FEATURE_TESTING_UI_PASSWORD }} ${{ needs.build.outputs.tag }}
git config --global user.email "infra-tech@provectus.com"
git config --global user.name "infra-tech"
git add -A
git commit -m "separate env added: ${{ github.event.inputs.ENV_NAME }}" && git push || true
- name: echo separate environment public link
run: |
echo "Please note, separate environment creation takes up to 5-10 minutes."
echo "Separate environment will be available at http://${{ github.event.inputs.ENV_NAME }}.kafka-ui.provectus.io"
echo "Username: admin"
================================================
FILE: .github/workflows/separate_env_public_remove.yml
================================================
name: "Infra: Feature Testing Public: Destroy env"
on:
workflow_dispatch:
inputs:
ENV_NAME:
description: 'Will be used to remove previously deployed separate environment.'
required: true
default: 'demo'
jobs:
separate-env-remove:
runs-on: ubuntu-latest
steps:
- name: clone
run: |
git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
- name: separate environment remove
run: |
cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
bash separate_env_remove.sh ${{ github.event.inputs.ENV_NAME }}
git config --global user.email "infra-tech@provectus.com"
git config --global user.name "infra-tech"
git add -A
git commit -m "separate env removed: ${{ github.event.inputs.ENV_NAME }}" && git push || true
================================================
FILE: .github/workflows/stale.yaml
================================================
name: 'Infra: Close stale issues'
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
with:
days-before-issue-stale: 7
days-before-issue-close: 3
days-before-pr-stale: 7
days-before-pr-close: 7
stale-issue-message: 'This issue has been automatically marked as stale because no requested feedback has been provided. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-pr-message: 'This PR has been automatically marked as stale because no requested changes have been applied. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-issue-label: 'status/stale'
stale-pr-label: 'status/stale'
only-labels: 'status/pending'
remove-issue-stale-when-updated: true
labels-to-remove-when-unstale: 'status/pending'
================================================
FILE: .github/workflows/terraform-deploy.yml
================================================
name: "Infra: Terraform deploy"
on:
workflow_dispatch:
inputs:
applyTerraform:
description: 'Do you want to apply the infra-repo terraform? Possible values [plan/apply].'
required: true
default: 'plan'
KafkaUIInfraBranch:
description: 'Branch name of Kafka-UI-Infra repo, tf will be executed from this branch'
required: true
default: 'master'
jobs:
terraform:
name: Terraform
runs-on: ubuntu-latest
steps:
- name: Clone infra repo
run: |
echo "Cloning repo..."
git clone https://kafka-ui-infra:${{ secrets.KAFKA_UI_INFRA_TOKEN }}@gitlab.provectus.com/provectus-internals/kafka-ui-infra.git --branch ${{ github.event.inputs.KafkaUIInfraBranch }}
echo "Cd to deployment..."
cd kafka-ui-infra/aws-infrastructure4eks/deployment
echo "TF_DIR=$(pwd)" >> $GITHUB_ENV
echo "Terraform will be triggered in this dir $TF_DIR"
- name: Configure AWS credentials for Kafka-UI account
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Terraform Install
uses: hashicorp/setup-terraform@v2
- name: Terraform init
id: init
run: cd $TF_DIR && terraform init --backend-config="../envs/pro/terraform-backend.tfvars"
- name: Terraform validate
id: validate
run: cd $TF_DIR && terraform validate -no-color
- name: Terraform plan
id: plan
run: |
cd $TF_DIR
export TF_VAR_github_connector_access_token=${{ secrets.SOURCE_CONNECTOR_GITHUB_TOKEN }}
export TF_VAR_repo_secret=${{ secrets.KAFKA_UI_INFRA_TOKEN }}
terraform plan --var-file="../envs/pro/eks.tfvars"
- name: Terraform apply
id: apply
if: ${{ github.event.inputs.applyTerraform == 'apply' }}
run: |
cd $TF_DIR
export TF_VAR_github_connector_access_token=${{ secrets.SOURCE_CONNECTOR_GITHUB_TOKEN }}
export TF_VAR_repo_secret=${{ secrets.KAFKA_UI_INFRA_TOKEN }}
terraform apply --var-file="../envs/pro/eks.tfvars" -auto-approve
================================================
FILE: .github/workflows/triage_issues.yml
================================================
name: "Infra: Triage: Apply triage label for issues"
on:
issues:
types:
- opened
jobs:
triage_issues:
runs-on: ubuntu-latest
steps:
- name: Label issue
uses: andymckay/labeler@master
with:
add-labels: "status/triage"
ignore-if-assigned: true
================================================
FILE: .github/workflows/triage_prs.yml
================================================
name: "Infra: Triage: Apply triage label for PRs"
on:
pull_request:
types:
- opened
jobs:
triage_prs:
runs-on: ubuntu-latest
steps:
- name: Label PR
uses: andymckay/labeler@master
with:
add-labels: "status/triage"
ignore-if-labeled: true
================================================
FILE: .github/workflows/welcome-first-time-contributors.yml
================================================
name: Welcome first time contributors
on:
pull_request_target:
types:
- opened
issues:
types:
- opened
permissions:
issues: write
pull-requests: write
jobs:
welcome:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: |
Hello there ${{ github.actor }}! 👋
Thank you and congratulations 🎉 for opening your very first issue in this project! 💖
In case you want to claim this issue, please comment down below! We will try to get back to you as soon as we can. 👀
pr-message: |
Hello there ${{ github.actor }}! 👋
Thank you and congrats 🎉 for opening your first PR on this project! ✨ 💖
We will try to review it soon!
================================================
FILE: .github/workflows/workflow_linter.yaml
================================================
name: "Infra: Workflow linter"
on:
pull_request:
types:
- "opened"
- "reopened"
- "synchronize"
- "edited"
paths:
- ".github/workflows/**"
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Install yamllint
run: sudo apt install -y yamllint
- name: Validate workflow yaml files
run: yamllint .github/workflows/. -d relaxed -f github --no-warnings
================================================
FILE: .gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
/kafka-ui-api/app/node
### SDKMAN ###
.sdkmanrc
.DS_Store
*.code-workspace
*.tar.gz
*.tgz
/docker/*.override.yaml
================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# 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
#
# https://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.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar
================================================
FILE: CODE-OF-CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at email kafkaui@provectus.com.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
at [https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
================================================
FILE: CONTRIBUTING.md
================================================
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.
# General recommendations
Please note that we have a code of conduct (`CODE-OF-CONDUCT.md`). Make sure that you follow it in all of your interactions with the project.
# Issues
## Choosing an issue
There are two options to look for the issues to contribute to. <br/>
The first is our ["Up for grabs"](https://github.com/provectus/kafka-ui/projects/11) board. There the issues are sorted by a required experience level (beginner, intermediate, expert).
The second option is to search for ["good first issue"](https://github.com/provectus/kafka-ui/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)-labeled issues. Some of them might not be displayed on the aforementioned board, or vice versa.
You also need to consider labels. You can sort the issues by scope labels, such as `scope/backend`, `scope/frontend` or even `scope/k8s`. If any issue covers several specific areas, and you do not have a required expertise for one of them, just do your part of work — others will do the rest.
## 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](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).
Any issue should be properly triaged by the maintainers beforehand, which includes:
1. Having a proper milestone set
2. Having required labels assigned: accepted label, scope labels, etc.
Formally, if these triage conditions are met, you can start to work on the issue.
With all these requirements met, feel free to pick the issue you want. Reach out to the maintainers if you have any questions.
## Working on the issue
Every issue “in-progress” needs to be assigned to a corresponding person.
To keep the status of the issue clear to everyone, please keep the card's status updated ("project" card to the right of the issue should match the milestone’s name).
## Setting up a local development environment
Please refer to [this guide](https://docs.kafka-ui.provectus.io/development/contributing).
# Pull Requests
## Branch naming
In order to keep branch names uniform and easy-to-understand, please use the following conventions for branch naming.
Generally speaking, it is a good idea to add a group/type prefix to a branch; e.g.,
if you are working on a specific branch, you could name it `issues/xxx`.
Here is a list of good examples:<br/>
`issues/123`<br/>
`feature/feature_name`<br/>
`bugfix/fix_thing`<br/>
## Code style
Java: There is a file called `checkstyle.xml` in project root under `etc` directory.<br/>
You can import it into IntelliJ IDEA via Checkstyle plugin.
## Naming conventions
REST paths should be written in **lowercase** and consist of **plural** nouns only.<br/>
Also, multiple words that are placed in a single path segment should be divided by a hyphen (`-`).<br/>
Query variable names should be formatted in `camelCase`.
Model names should consist of **plural** nouns only and should be formatted in `camelCase` as well.
## Creating a PR
When creating a PR please do the following:
1. In commit messages use these [closing keywords](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword).
2. Link an issue(-s) via "linked issues" block.
3. Set the PR labels. Ensure that you set only the same set of labels that is present in the issue, and ignore yellow `status/` labels.
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.
### Pull Request checklist
1. When composing a build, ensure that any install or build dependencies have been removed before the end of the layer.
2. Update the `README.md` with the details of changes made to the interface. This includes new environment variables,
exposed ports, useful file locations, and container parameters.
## Reviewing a PR
WIP
### Pull Request reviewer checklist
WIP
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2020 CloudHut
Licensed 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.
================================================
FILE: README.md
================================================
 UI for Apache Kafka
------------------
#### Versatile, fast and lightweight web UI for managing Apache Kafka® clusters. Built by developers, for developers.
<br/>
[](https://github.com/provectus/kafka-ui/blob/master/LICENSE)

[](https://github.com/provectus/kafka-ui/releases)
[](https://discord.gg/4DWzD7pGE5)
[](https://hub.docker.com/r/provectuslabs/kafka-ui)
<p align="center">
<a href="https://docs.kafka-ui.provectus.io/">DOCS</a> •
<a href="https://docs.kafka-ui.provectus.io/configuration/quick-start">QUICK START</a> •
<a href="https://discord.gg/4DWzD7pGE5">COMMUNITY DISCORD</a>
<br/>
<a href="https://aws.amazon.com/marketplace/pp/prodview-ogtt5hfhzkq6a">AWS Marketplace</a> •
<a href="https://www.producthunt.com/products/ui-for-apache-kafka/reviews/new">ProductHunt</a>
</p>
<p align="center">
<img src="https://repobeats.axiom.co/api/embed/2e8a7c2d711af9daddd34f9791143e7554c35d0f.svg" />
</p>
#### 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 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>
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.

# Features
* **Multi-Cluster Management** — monitor and manage all your clusters in one place
* **Performance Monitoring with Metrics Dashboard** — track key Kafka metrics with a lightweight dashboard
* **View Kafka Brokers** — view topic and partition assignments, controller status
* **View Kafka Topics** — view partition count, replication status, and custom configuration
* **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](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,
pasting your own parameters, and viewing topics in the list.

It's possible to jump from connectors view to corresponding topics and from a topic to consumers (back and forth) for more convenient navigation.
connectors, overview topic settings.

### Messages
Let's say we want to produce messages for our topic. With the UI for Apache Kafka we can send or write data/messages to the Kafka topics without effort by specifying parameters, and viewing messages in the list.

## Schema registry
There are 3 supported types of schemas: Avro®, JSON Schema, and Protobuf schemas.

Before producing avro/protobuf encoded messages, you have to add a schema for the topic in Schema Registry. Now all these steps are easy to do
with a few clicks in a user-friendly interface.

# Getting Started
To run UI for Apache Kafka, you can use either a pre-built Docker image or build it (or a jar file) yourself.
## Quick start (Demo run)
```
docker run -it -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui
```
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)
## Persistent installation
```
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
environment:
DYNAMIC_CONFIG_ENABLED: 'true'
volumes:
- ~/kui/config.yml:/etc/kafkaui/dynamic_config.yaml
```
Please refer to our [configuration](https://docs.kafka-ui.provectus.io/configuration/quick-start) page to proceed with further app configuration.
## Some useful configuration related links
[Web UI Cluster Configuration Wizard](https://docs.kafka-ui.provectus.io/configuration/configuration-wizard)
[Configuration file explanation](https://docs.kafka-ui.provectus.io/configuration/configuration-file)
[Docker Compose examples](https://docs.kafka-ui.provectus.io/configuration/compose-examples)
[Misc configuration properties](https://docs.kafka-ui.provectus.io/configuration/misc-configuration-properties)
## Helm charts
[Quick start](https://docs.kafka-ui.provectus.io/configuration/helm-charts/quick-start)
## Building from sources
[Quick start](https://docs.kafka-ui.provectus.io/development/building/prerequisites) with building
## Liveliness and readiness probes
Liveliness and readiness endpoint is at `/actuator/health`.<br/>
Info endpoint (build info) is located at `/actuator/info`.
# Configuration options
All of the environment variables/config properties could be found [here](https://docs.kafka-ui.provectus.io/configuration/misc-configuration-properties).
# Contributing
Please refer to [contributing guide](https://docs.kafka-ui.provectus.io/development/contributing), we'll guide you from there.
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
Following versions of the project are currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 0.7.x | :white_check_mark: |
| 0.6.x | :x: |
| 0.5.x | :x: |
| 0.4.x | :x: |
| 0.3.x | :x: |
| 0.2.x | :x: |
| 0.1.x | :x: |
## Reporting a Vulnerability
Please **DO NOT** file a publicly available github issues regarding security vulnerabilities.
Send us details via email (maintainers.kafka-ui "at" provectus.com).
Consider adding something like "security vulnerability report" in the title of an email.
================================================
FILE: documentation/compose/DOCKER_COMPOSE.md
================================================
# 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-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.
6. [kafka-ui-auth-context.yaml](./kafka-ui-auth-context.yaml) - Basic (username/password) authentication with custom path (URL) (issue 861).
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
================================================
FILE: documentation/compose/connectors/github-source.json
================================================
{
"name": "github-source",
"config":
{
"connector.class": "io.confluent.connect.github.GithubSourceConnector",
"confluent.topic.bootstrap.servers": "kafka0:29092, kafka1:29092",
"confluent.topic.replication.factor": "1",
"tasks.max": "1",
"github.service.url": "https://api.github.com",
"github.access.token": "",
"github.repositories": "provectus/kafka-ui",
"github.resources": "issues,commits,pull_requests",
"github.since": "2019-01-01",
"topic.name.pattern": "github-${resourceName}",
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
"key.converter.schema.registry.url": "http://schemaregistry0:8085",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"value.converter.schema.registry.url": "http://schemaregistry0:8085"
}
}
================================================
FILE: documentation/compose/connectors/s3-sink.json
================================================
{
"name": "s3-sink",
"config":
{
"connector.class": "io.confluent.connect.s3.S3SinkConnector",
"topics": "github-issues, github-pull_requests, github-commits",
"tasks.max": "1",
"s3.region": "eu-central-1",
"s3.bucket.name": "kafka-ui-s3-sink-connector",
"s3.part.size": "5242880",
"flush.size": "3",
"storage.class": "io.confluent.connect.s3.storage.S3Storage",
"format.class": "io.confluent.connect.s3.format.json.JsonFormat",
"schema.generator.class": "io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator",
"partitioner.class": "io.confluent.connect.storage.partitioner.DefaultPartitioner",
"schema.compatibility": "BACKWARD"
}
}
================================================
FILE: documentation/compose/connectors/sink-activities.json
================================================
{
"name": "sink_postgres_activities",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url": "jdbc:postgresql://postgres-db:5432/test",
"connection.user": "dev_user",
"connection.password": "12345",
"topics": "source-activities",
"table.name.format": "sink_activities",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"key.converter.schema.registry.url": "http://schemaregistry0:8085",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://schemaregistry0:8085",
"auto.create": "true",
"pk.mode": "record_value",
"pk.fields": "id",
"insert.mode": "upsert"
}
}
================================================
FILE: documentation/compose/connectors/source-activities.json
================================================
{
"name": "source_postgres_activities",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url": "jdbc:postgresql://postgres-db:5432/test",
"connection.user": "dev_user",
"connection.password": "12345",
"topic.prefix": "source-",
"poll.interval.ms": 3600000,
"table.whitelist": "public.activities",
"mode": "bulk",
"transforms": "extractkey",
"transforms.extractkey.type": "org.apache.kafka.connect.transforms.ExtractField$Key",
"transforms.extractkey.field": "id",
"key.converter": "org.apache.kafka.connect.storage.StringConverter",
"key.converter.schema.registry.url": "http://schemaregistry0:8085",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://schemaregistry0:8085"
}
}
================================================
FILE: documentation/compose/connectors/start.sh
================================================
#! /bin/bash
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' kafka-connect0:8083)" != "200" ]]
do sleep 5
done
echo "\n --------------Creating connectors..."
for filename in /connectors/*.json; do
curl -X POST -H "Content-Type: application/json" -d @$filename http://kafka-connect0:8083/connectors
done
================================================
FILE: documentation/compose/data/message.json
================================================
{}
================================================
FILE: documentation/compose/data/proxy.conf
================================================
server {
listen 80;
server_name localhost;
location /kafka-ui {
# rewrite /kafka-ui/(.*) /$1 break;
proxy_pass http://kafka-ui:8080;
}
}
================================================
FILE: documentation/compose/e2e-tests.yaml
================================================
---
version: '3.5'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8080/actuator/health
interval: 30s
timeout: 10s
retries: 10
depends_on:
kafka0:
condition: service_healthy
schemaregistry0:
condition: service_healthy
kafka-connect0:
condition: service_healthy
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
KAFKA_CLUSTERS_0_KSQLDBSERVER: http://ksqldb:8088
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
healthcheck:
test: unset JMX_PORT && KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9999" && kafka-broker-api-versions --bootstrap-server=localhost:9092
interval: 30s
timeout: 10s
retries: 10
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
schemaregistry0:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 8085:8085
depends_on:
kafka0:
condition: service_healthy
healthcheck:
test: [ "CMD", "timeout", "1", "curl", "--silent", "--fail", "http://schemaregistry0:8085/subjects" ]
interval: 30s
timeout: 10s
retries: 10
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
kafka-connect0:
build:
context: ./kafka-connect
args:
image: confluentinc/cp-kafka-connect:6.0.1
ports:
- 8083:8083
depends_on:
kafka0:
condition: service_healthy
schemaregistry0:
condition: service_healthy
healthcheck:
test: [ "CMD", "nc", "127.0.0.1", "8083" ]
interval: 30s
timeout: 10s
retries: 10
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
CONNECT_GROUP_ID: compose-connect-group
CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: _connect_status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
# AWS_ACCESS_KEY_ID: ""
# AWS_SECRET_ACCESS_KEY: ""
kafka-init-topics:
image: confluentinc/cp-kafka:7.2.1
volumes:
- ./data/message.json:/data/message.json
depends_on:
kafka0:
condition: service_healthy
command: "bash -c 'echo Waiting for Kafka to be ready... && \
cub kafka-ready -b kafka0:29092 1 30 && \
kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-console-producer --bootstrap-server kafka0:29092 --topic users < /data/message.json'"
postgres-db:
build:
context: ./postgres
args:
image: postgres:9.6.22
ports:
- 5432:5432
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U dev_user" ]
interval: 10s
timeout: 5s
retries: 5
environment:
POSTGRES_USER: 'dev_user'
POSTGRES_PASSWORD: '12345'
create-connectors:
image: ellerbrock/alpine-bash-curl-ssl
depends_on:
postgres-db:
condition: service_healthy
kafka-connect0:
condition: service_healthy
volumes:
- ./connectors:/connectors
command: bash -c '/connectors/start.sh'
ksqldb:
image: confluentinc/ksqldb-server:0.18.0
healthcheck:
test: [ "CMD", "timeout", "1", "curl", "--silent", "--fail", "http://localhost:8088/info" ]
interval: 30s
timeout: 10s
retries: 10
depends_on:
kafka0:
condition: service_healthy
kafka-connect0:
condition: service_healthy
schemaregistry0:
condition: service_healthy
ports:
- 8088:8088
environment:
KSQL_CUB_KAFKA_TIMEOUT: 120
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
KSQL_KSQL_CONNECT_URL: http://kafka-connect0:8083
KSQL_KSQL_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
KSQL_KSQL_SERVICE_ID: my_ksql_1
KSQL_KSQL_HIDDEN_TOPICS: '^_.*'
KSQL_CACHE_MAX_BYTES_BUFFERING: 0
================================================
FILE: documentation/compose/jaas/client.properties
================================================
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
================================================
FILE: documentation/compose/jaas/kafka_connect.jaas
================================================
KafkaConnect {
org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required
file="/conf/kafka_connect.password";
};
================================================
FILE: documentation/compose/jaas/kafka_connect.password
================================================
admin: admin-secret
================================================
FILE: documentation/compose/jaas/kafka_server.conf
================================================
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_enzo="cisternino";
};
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
user_admin="admin-secret";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="zkuser"
password="zkuserpassword";
};
================================================
FILE: documentation/compose/jaas/schema_registry.jaas
================================================
SchemaRegistryProps {
org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required
file="/conf/schema_registry.password"
debug="false";
};
================================================
FILE: documentation/compose/jaas/schema_registry.password
================================================
admin: OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x,admin
================================================
FILE: documentation/compose/jaas/zookeeper_jaas.conf
================================================
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_zkuser="zkuserpassword";
};
================================================
FILE: documentation/compose/jmx/jmxremote.access
================================================
root readwrite
================================================
FILE: documentation/compose/jmx/jmxremote.password
================================================
root password
================================================
FILE: documentation/compose/jmx-exporter/kafka-broker.yml
================================================
rules:
- pattern: ".*"
================================================
FILE: documentation/compose/jmx-exporter/kafka-prepare-and-run
================================================
#!/usr/bin/env bash
JAVA_AGENT_FILE="/usr/share/jmx_exporter/jmx_prometheus_javaagent.jar"
if [ ! -f "$JAVA_AGENT_FILE" ]
then
echo "Downloading jmx_exporter javaagent"
curl -o $JAVA_AGENT_FILE https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar
fi
exec /etc/confluent/docker/run
================================================
FILE: documentation/compose/kafka-cluster-sr-auth.yaml
================================================
---
version: '2'
services:
kafka1:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka1
container_name: kafka1
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka1:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka1:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka1:29092,CONTROLLER://kafka1:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
schemaregistry1:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 18085:8085
depends_on:
- kafka1
volumes:
- ./jaas:/conf
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry1
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry1:8085
# Default credentials: admin/letmein
SCHEMA_REGISTRY_AUTHENTICATION_METHOD: BASIC
SCHEMA_REGISTRY_AUTHENTICATION_REALM: SchemaRegistryProps
SCHEMA_REGISTRY_AUTHENTICATION_ROLES: admin
SCHEMA_REGISTRY_OPTS: -Djava.security.auth.login.config=/conf/schema_registry.jaas
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
kafka-init-topics:
image: confluentinc/cp-kafka:7.2.1
volumes:
- ./data/message.json:/data/message.json
depends_on:
- kafka1
command: "bash -c 'echo Waiting for Kafka to be ready... && \
cub kafka-ready -b kafka1:29092 1 30 && \
kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
kafka-console-producer --bootstrap-server kafka1:29092 --topic users < /data/message.json'"
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka1
- schemaregistry1
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka1:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry1:8085
KAFKA_CLUSTERS_0_SCHEMAREGISTRYAUTH_USERNAME: admin
KAFKA_CLUSTERS_0_SCHEMAREGISTRYAUTH_PASSWORD: letmein
================================================
FILE: documentation/compose/kafka-connect/Dockerfile
================================================
ARG image
FROM ${image}
## Install connectors
RUN echo "\nInstalling all required connectors...\n" && \
confluent-hub install --no-prompt confluentinc/kafka-connect-jdbc:latest && \
confluent-hub install --no-prompt confluentinc/kafka-connect-github:latest && \
confluent-hub install --no-prompt confluentinc/kafka-connect-s3:latest
================================================
FILE: documentation/compose/kafka-ssl-components.yaml
================================================
---
version: '3.4'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
- schemaregistry0
- kafka-connect0
- ksqldb0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SSL
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092 # SSL LISTENER!
KAFKA_CLUSTERS_0_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # DISABLE COMMON NAME VERIFICATION
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: https://schemaregistry0:8085
KAFKA_CLUSTERS_0_SCHEMAREGISTRYSSL_KEYSTORELOCATION: /kafka.keystore.jks
KAFKA_CLUSTERS_0_SCHEMAREGISTRYSSL_KEYSTOREPASSWORD: "secret"
KAFKA_CLUSTERS_0_KSQLDBSERVER: https://ksqldb0:8088
KAFKA_CLUSTERS_0_KSQLDBSERVERSSL_KEYSTORELOCATION: /kafka.keystore.jks
KAFKA_CLUSTERS_0_KSQLDBSERVERSSL_KEYSTOREPASSWORD: "secret"
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: local
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: https://kafka-connect0:8083
KAFKA_CLUSTERS_0_KAFKACONNECT_0_KEYSTORELOCATION: /kafka.keystore.jks
KAFKA_CLUSTERS_0_KAFKACONNECT_0_KEYSTOREPASSWORD: "secret"
KAFKA_CLUSTERS_0_SSL_TRUSTSTORELOCATION: /kafka.truststore.jks
KAFKA_CLUSTERS_0_SSL_TRUSTSTOREPASSWORD: "secret"
DYNAMIC_CONFIG_ENABLED: 'true' # not necessary for ssl, added for tests
volumes:
- ./ssl/kafka.truststore.jks:/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/kafka.keystore.jks
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SSL:SSL,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'SSL://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'SSL'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
KAFKA_SECURITY_PROTOCOL: SSL
KAFKA_SSL_ENABLED_MECHANISMS: PLAIN,SSL
KAFKA_SSL_KEYSTORE_FILENAME: kafka.keystore.jks
KAFKA_SSL_KEYSTORE_CREDENTIALS: creds
KAFKA_SSL_KEY_CREDENTIALS: creds
KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.truststore.jks
KAFKA_SSL_TRUSTSTORE_CREDENTIALS: creds
#KAFKA_SSL_CLIENT_AUTH: 'required'
KAFKA_SSL_CLIENT_AUTH: 'requested'
KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # COMMON NAME VERIFICATION IS DISABLED SERVER-SIDE
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
- ./ssl/creds:/etc/kafka/secrets/creds
- ./ssl/kafka.truststore.jks:/etc/kafka/secrets/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/etc/kafka/secrets/kafka.keystore.jks
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'"
schemaregistry0:
image: confluentinc/cp-schema-registry:7.2.1
depends_on:
- kafka0
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: SSL://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: SSL
SCHEMA_REGISTRY_KAFKASTORE_SSL_TRUSTSTORE_LOCATION: /kafka.truststore.jks
SCHEMA_REGISTRY_KAFKASTORE_SSL_TRUSTSTORE_PASSWORD: secret
SCHEMA_REGISTRY_KAFKASTORE_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
SCHEMA_REGISTRY_KAFKASTORE_SSL_KEYSTORE_PASSWORD: secret
SCHEMA_REGISTRY_KAFKASTORE_SSL_KEY_PASSWORD: secret
SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
SCHEMA_REGISTRY_LISTENERS: https://schemaregistry0:8085
SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: https
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "https"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
SCHEMA_REGISTRY_SSL_CLIENT_AUTHENTICATION: "REQUIRED"
SCHEMA_REGISTRY_SSL_TRUSTSTORE_LOCATION: /kafka.truststore.jks
SCHEMA_REGISTRY_SSL_TRUSTSTORE_PASSWORD: secret
SCHEMA_REGISTRY_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
SCHEMA_REGISTRY_SSL_KEYSTORE_PASSWORD: secret
SCHEMA_REGISTRY_SSL_KEY_PASSWORD: secret
ports:
- 8085:8085
volumes:
- ./ssl/kafka.truststore.jks:/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/kafka.keystore.jks
kafka-connect0:
image: confluentinc/cp-kafka-connect:7.2.1
ports:
- 8083:8083
depends_on:
- kafka0
- schemaregistry0
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
CONNECT_GROUP_ID: compose-connect-group
CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: _connect_status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: https://schemaregistry0:8085
CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: https://schemaregistry0:8085
CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
CONNECT_SECURITY_PROTOCOL: "SSL"
CONNECT_SSL_KEYSTORE_LOCATION: "/kafka.keystore.jks"
CONNECT_SSL_KEY_PASSWORD: "secret"
CONNECT_SSL_KEYSTORE_PASSWORD: "secret"
CONNECT_SSL_TRUSTSTORE_LOCATION: "/kafka.truststore.jks"
CONNECT_SSL_TRUSTSTORE_PASSWORD: "secret"
CONNECT_SSL_CLIENT_AUTH: "requested"
CONNECT_REST_ADVERTISED_LISTENER: "https"
CONNECT_LISTENERS: "https://kafka-connect0:8083"
volumes:
- ./ssl/kafka.truststore.jks:/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/kafka.keystore.jks
ksqldb0:
image: confluentinc/ksqldb-server:0.18.0
depends_on:
- kafka0
- kafka-connect0
- schemaregistry0
ports:
- 8088:8088
environment:
KSQL_CUB_KAFKA_TIMEOUT: 120
KSQL_LISTENERS: https://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: SSL://kafka0:29092
KSQL_SECURITY_PROTOCOL: SSL
KSQL_SSL_TRUSTSTORE_LOCATION: /kafka.truststore.jks
KSQL_SSL_TRUSTSTORE_PASSWORD: secret
KSQL_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
KSQL_SSL_KEYSTORE_PASSWORD: secret
KSQL_SSL_KEY_PASSWORD: secret
KSQL_SSL_CLIENT_AUTHENTICATION: REQUIRED
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
KSQL_KSQL_CONNECT_URL: https://kafka-connect0:8083
KSQL_KSQL_SCHEMA_REGISTRY_URL: https://schemaregistry0:8085
KSQL_KSQL_SERVICE_ID: my_ksql_1
KSQL_KSQL_HIDDEN_TOPICS: '^_.*'
KSQL_CACHE_MAX_BYTES_BUFFERING: 0
volumes:
- ./ssl/kafka.truststore.jks:/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/kafka.keystore.jks
================================================
FILE: documentation/compose/kafka-ssl.yml
================================================
---
version: '3.4'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SSL
KAFKA_CLUSTERS_0_PROPERTIES_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
KAFKA_CLUSTERS_0_PROPERTIES_SSL_KEYSTORE_PASSWORD: "secret"
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 # SSL LISTENER!
KAFKA_CLUSTERS_0_SSL_TRUSTSTORELOCATION: /kafka.truststore.jks
KAFKA_CLUSTERS_0_SSL_TRUSTSTOREPASSWORD: "secret"
KAFKA_CLUSTERS_0_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # DISABLE COMMON NAME VERIFICATION
volumes:
- ./ssl/kafka.truststore.jks:/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/kafka.keystore.jks
kafka:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka
container_name: kafka
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SSL:SSL,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
KAFKA_LISTENERS: 'SSL://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'SSL'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
KAFKA_SECURITY_PROTOCOL: SSL
KAFKA_SSL_ENABLED_MECHANISMS: PLAIN,SSL
KAFKA_SSL_KEYSTORE_FILENAME: kafka.keystore.jks
KAFKA_SSL_KEYSTORE_CREDENTIALS: creds
KAFKA_SSL_KEY_CREDENTIALS: creds
KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.truststore.jks
KAFKA_SSL_TRUSTSTORE_CREDENTIALS: creds
#KAFKA_SSL_CLIENT_AUTH: 'required'
KAFKA_SSL_CLIENT_AUTH: 'requested'
KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # COMMON NAME VERIFICATION IS DISABLED SERVER-SIDE
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
- ./ssl/creds:/etc/kafka/secrets/creds
- ./ssl/kafka.truststore.jks:/etc/kafka/secrets/kafka.truststore.jks
- ./ssl/kafka.keystore.jks:/etc/kafka/secrets/kafka.keystore.jks
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'"
================================================
FILE: documentation/compose/kafka-ui-acl-with-zk.yaml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- zookeeper
- kafka
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SASL_PLAINTEXT
KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM: PLAIN
KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";'
zookeeper:
image: wurstmeister/zookeeper:3.4.6
environment:
JVMFLAGS: "-Djava.security.auth.login.config=/etc/zookeeper/zookeeper_jaas.conf"
volumes:
- ./jaas/zookeeper_jaas.conf:/etc/zookeeper/zookeeper_jaas.conf
ports:
- 2181:2181
kafka:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka
container_name: kafka
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/jaas/kafka_server.conf"
KAFKA_AUTHORIZER_CLASS_NAME: "kafka.security.authorizer.AclAuthorizer"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
KAFKA_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'SASL_PLAINTEXT'
KAFKA_SASL_ENABLED_MECHANISMS: 'PLAIN'
KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: 'PLAIN'
KAFKA_SECURITY_PROTOCOL: 'SASL_PLAINTEXT'
KAFKA_SUPER_USERS: 'User:admin'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
- ./jaas:/etc/kafka/jaas
================================================
FILE: documentation/compose/kafka-ui-arm64.yaml
================================================
# ARM64 supported images for kafka can be found here
# https://hub.docker.com/r/confluentinc/cp-kafka/tags?page=1&name=arm64
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
- schema-registry0
- kafka-connect0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry0:8085
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
DYNAMIC_CONFIG_ENABLED: 'true' # not necessary, added for tests
KAFKA_CLUSTERS_0_AUDIT_TOPICAUDITENABLED: 'true'
KAFKA_CLUSTERS_0_AUDIT_CONSOLEAUDITENABLED: 'true'
kafka0:
image: confluentinc/cp-kafka:7.2.1.arm64
hostname: kafka0
container_name: kafka0
ports:
- 9092:9092
- 9997:9997
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
KAFKA_JMX_PORT: 9997
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
schema-registry0:
image: confluentinc/cp-schema-registry:7.2.1.arm64
ports:
- 8085:8085
depends_on:
- kafka0
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schema-registry0
SCHEMA_REGISTRY_LISTENERS: http://schema-registry0:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
kafka-connect0:
image: confluentinc/cp-kafka-connect:7.2.1.arm64
ports:
- 8083:8083
depends_on:
- kafka0
- schema-registry0
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
CONNECT_GROUP_ID: compose-connect-group
CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: _connect_status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry0:8085
CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry0:8085
CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
kafka-init-topics:
image: confluentinc/cp-kafka:7.2.1.arm64
volumes:
- ./data/message.json:/data/message.json
depends_on:
- kafka0
command: "bash -c 'echo Waiting for Kafka to be ready... && \
cub kafka-ready -b kafka0:29092 1 30 && \
kafka-topics --create --topic second.users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-topics --create --topic second.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-topics --create --topic first.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-console-producer --bootstrap-server kafka0:29092 --topic second.users < /data/message.json'"
================================================
FILE: documentation/compose/kafka-ui-auth-context.yaml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
SERVER_SERVLET_CONTEXT_PATH: /kafkaui
AUTH_TYPE: "LOGIN_FORM"
SPRING_SECURITY_USER_NAME: admin
SPRING_SECURITY_USER_PASSWORD: pass
kafka:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka
container_name: kafka
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
================================================
FILE: documentation/compose/kafka-ui-connectors-auth.yaml
================================================
---
version: "2"
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
- schemaregistry0
- kafka-connect0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
KAFKA_CLUSTERS_0_KAFKACONNECT_0_USERNAME: admin
KAFKA_CLUSTERS_0_KAFKACONNECT_0_PASSWORD: admin-secret
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka0:29093"
KAFKA_LISTENERS: "PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092"
KAFKA_INTER_BROKER_LISTENER_NAME: "PLAINTEXT"
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_LOG_DIRS: "/tmp/kraft-combined-logs"
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'''
schemaregistry0:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 8085:8085
depends_on:
- kafka0
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
kafka-connect0:
build:
context: ./kafka-connect
args:
image: confluentinc/cp-kafka-connect:7.2.1
ports:
- 8083:8083
depends_on:
- kafka0
- schemaregistry0
volumes:
- ./jaas:/conf
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
CONNECT_GROUP_ID: compose-connect-group
CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: _connect_status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
CONNECT_REST_PORT: 8083
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
CONNECT_REST_EXTENSION_CLASSES: "org.apache.kafka.connect.rest.basic.auth.extension.BasicAuthSecurityRestExtension"
KAFKA_OPTS: "-Djava.security.auth.login.config=/conf/kafka_connect.jaas"
# AWS_ACCESS_KEY_ID: ""
# AWS_SECRET_ACCESS_KEY: ""
kafka-init-topics:
image: confluentinc/cp-kafka:7.2.1
volumes:
- ./data/message.json:/data/message.json
depends_on:
- kafka0
command: "bash -c 'echo Waiting for Kafka to be ready... && \
cub kafka-ready -b kafka0:29092 1 30 && \
kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-console-producer --bootstrap-server kafka0:29092 --topic users < /data/message.json'"
================================================
FILE: documentation/compose/kafka-ui-jmx-secured.yml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_METRICS_USERNAME: root
KAFKA_CLUSTERS_0_METRICS_PASSWORD: password
KAFKA_CLUSTERS_0_METRICS_KEYSTORE_LOCATION: /jmx/clientkeystore
KAFKA_CLUSTERS_0_METRICS_KEYSTORE_PASSWORD: '12345678'
KAFKA_CLUSTERS_0_SSL_TRUSTSTORE_LOCATION: /jmx/clienttruststore
KAFKA_CLUSTERS_0_SSL_TRUSTSTORE_PASSWORD: '12345678'
volumes:
- ./jmx/clienttruststore:/jmx/clienttruststore
- ./jmx/clientkeystore:/jmx/clientkeystore
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- 9092:9092
- 9997:9997
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
# CHMOD 700 FOR JMXREMOTE.* FILES
KAFKA_JMX_OPTS: >-
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=true
-Dcom.sun.management.jmxremote.registry.ssl=true
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true
-Djavax.net.ssl.keyStore=/jmx/serverkeystore
-Djavax.net.ssl.keyStorePassword=12345678
-Djavax.net.ssl.trustStore=/jmx/servertruststore
-Djavax.net.ssl.trustStorePassword=12345678
-Dcom.sun.management.jmxremote.password.file=/jmx/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/jmx/jmxremote.access
-Dcom.sun.management.jmxremote.rmi.port=9997
-Djava.rmi.server.hostname=kafka0
volumes:
- ./jmx/serverkeystore:/jmx/serverkeystore
- ./jmx/servertruststore:/jmx/servertruststore
- ./jmx/jmxremote.password:/jmx/jmxremote.password
- ./jmx/jmxremote.access:/jmx/jmxremote.access
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
================================================
FILE: documentation/compose/kafka-ui-sasl.yaml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SASL_PLAINTEXT
KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM: PLAIN
KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";'
DYNAMIC_CONFIG_ENABLED: true # not necessary for sasl auth, added for tests
kafka:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka
container_name: kafka
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/jaas/kafka_server.conf"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
KAFKA_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'SASL_PLAINTEXT'
KAFKA_SASL_ENABLED_MECHANISMS: 'PLAIN'
KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: 'PLAIN'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
KAFKA_SECURITY_PROTOCOL: 'SASL_PLAINTEXT'
KAFKA_SUPER_USERS: 'User:admin,User:enzo'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
- ./jaas:/etc/kafka/jaas
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'"
================================================
FILE: documentation/compose/kafka-ui-serdes.yaml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
- schemaregistry0
environment:
kafka.clusters.0.name: SerdeExampleCluster
kafka.clusters.0.bootstrapServers: kafka0:29092
kafka.clusters.0.schemaRegistry: http://schemaregistry0:8085
# optional SSL settings for cluster (will be used by SchemaRegistry serde, if set)
#kafka.clusters.0.ssl.keystoreLocation: /kafka.keystore.jks
#kafka.clusters.0.ssl.keystorePassword: "secret"
#kafka.clusters.0.ssl.truststoreLocation: /kafka.truststore.jks
#kafka.clusters.0.ssl.truststorePassword: "secret"
# optional auth properties for SR
#kafka.clusters.0.schemaRegistryAuth.username: "use"
#kafka.clusters.0.schemaRegistryAuth.password: "pswrd"
kafka.clusters.0.defaultKeySerde: Int32 #optional
kafka.clusters.0.defaultValueSerde: String #optional
kafka.clusters.0.serde.0.name: ProtobufFile
kafka.clusters.0.serde.0.topicKeysPattern: "topic1"
kafka.clusters.0.serde.0.topicValuesPattern: "topic1"
kafka.clusters.0.serde.0.properties.protobufFilesDir: /protofiles/
kafka.clusters.0.serde.0.properties.protobufMessageNameForKey: test.MyKey # default type for keys
kafka.clusters.0.serde.0.properties.protobufMessageName: test.MyValue # default type for values
kafka.clusters.0.serde.0.properties.protobufMessageNameForKeyByTopic.topic1: test.MySpecificTopicKey # keys type for topic "topic1"
kafka.clusters.0.serde.0.properties.protobufMessageNameByTopic.topic1: test.MySpecificTopicValue # values type for topic "topic1"
kafka.clusters.0.serde.1.name: String
#kafka.clusters.0.serde.1.properties.encoding: "UTF-16" #optional, default is UTF-8
kafka.clusters.0.serde.1.topicValuesPattern: "json-events|text-events"
kafka.clusters.0.serde.2.name: AsciiString
kafka.clusters.0.serde.2.className: com.provectus.kafka.ui.serdes.builtin.StringSerde
kafka.clusters.0.serde.2.properties.encoding: "ASCII"
kafka.clusters.0.serde.3.name: SchemaRegistry # will be configured automatically using cluster SR
kafka.clusters.0.serde.3.topicValuesPattern: "sr-topic.*"
kafka.clusters.0.serde.4.name: AnotherSchemaRegistry
kafka.clusters.0.serde.4.className: com.provectus.kafka.ui.serdes.builtin.sr.SchemaRegistrySerde
kafka.clusters.0.serde.4.properties.url: http://schemaregistry0:8085
kafka.clusters.0.serde.4.properties.keySchemaNameTemplate: "%s-key"
kafka.clusters.0.serde.4.properties.schemaNameTemplate: "%s-value"
#kafka.clusters.0.serde.4.topicValuesPattern: "sr2-topic.*"
# optional auth and ssl properties for SR (overrides cluster-level):
#kafka.clusters.0.serde.4.properties.username: "user"
#kafka.clusters.0.serde.4.properties.password: "passw"
#kafka.clusters.0.serde.4.properties.keystoreLocation: /kafka.keystore.jks
#kafka.clusters.0.serde.4.properties.keystorePassword: "secret"
#kafka.clusters.0.serde.4.properties.truststoreLocation: /kafka.truststore.jks
#kafka.clusters.0.serde.4.properties.truststorePassword: "secret"
kafka.clusters.0.serde.5.name: UInt64
kafka.clusters.0.serde.5.topicKeysPattern: "topic-with-uint64keys"
volumes:
- ./proto:/protofiles
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
schemaregistry0:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 8085:8085
depends_on:
- kafka0
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
================================================
FILE: documentation/compose/kafka-ui-with-jmx-exporter.yaml
================================================
---
version: '2'
services:
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- "9092:9092"
- "11001:11001"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
KAFKA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent.jar=11001:/usr/share/jmx_exporter/kafka-broker.yml
volumes:
- ./jmx-exporter:/usr/share/jmx_exporter/
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 11001
KAFKA_CLUSTERS_0_METRICS_TYPE: PROMETHEUS
================================================
FILE: documentation/compose/kafka-ui.yaml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
- kafka1
- schemaregistry0
- schemaregistry1
- kafka-connect0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
KAFKA_CLUSTERS_1_NAME: secondLocal
KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS: kafka1:29092
KAFKA_CLUSTERS_1_METRICS_PORT: 9998
KAFKA_CLUSTERS_1_SCHEMAREGISTRY: http://schemaregistry1:8085
DYNAMIC_CONFIG_ENABLED: 'true'
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
kafka1:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka1
container_name: kafka1
ports:
- "9093:9092"
- "9998:9998"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka1:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9998
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9998
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka1:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka1:29092,CONTROLLER://kafka1:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
schemaregistry0:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 8085:8085
depends_on:
- kafka0
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
schemaregistry1:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 18085:8085
depends_on:
- kafka1
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry1
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry1:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
kafka-connect0:
image: confluentinc/cp-kafka-connect:7.2.1
ports:
- 8083:8083
depends_on:
- kafka0
- schemaregistry0
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
CONNECT_GROUP_ID: compose-connect-group
CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
CONNECT_STATUS_STORAGE_TOPIC: _connect_status
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
kafka-init-topics:
image: confluentinc/cp-kafka:7.2.1
volumes:
- ./data/message.json:/data/message.json
depends_on:
- kafka1
command: "bash -c 'echo Waiting for Kafka to be ready... && \
cub kafka-ready -b kafka1:29092 1 30 && \
kafka-topics --create --topic second.users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
kafka-topics --create --topic second.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
kafka-topics --create --topic first.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
kafka-console-producer --bootstrap-server kafka1:29092 -topic second.users < /data/message.json'"
================================================
FILE: documentation/compose/kafka-with-zookeeper.yaml
================================================
---
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.2.1
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-server:7.2.1
hostname: kafka
container_name: kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: kafka
kafka-init-topics:
image: confluentinc/cp-kafka:7.2.1
volumes:
- ./data/message.json:/data/message.json
depends_on:
- kafka
command: "bash -c 'echo Waiting for Kafka to be ready... && \
cub kafka-ready -b kafka:29092 1 30 && \
kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka:29092 && \
kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka:29092 && \
kafka-console-producer --bootstrap-server kafka:29092 --topic users < /data/message.json'"
================================================
FILE: documentation/compose/ldap.yaml
================================================
---
version: '2'
services:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka0
- schemaregistry0
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
KAFKA_CLUSTERS_0_METRICS_PORT: 9997
KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
AUTH_TYPE: "LDAP"
SPRING_LDAP_URLS: "ldap://ldap:10389"
SPRING_LDAP_BASE: "cn={0},ou=people,dc=planetexpress,dc=com"
SPRING_LDAP_ADMIN_USER: "cn=admin,dc=planetexpress,dc=com"
SPRING_LDAP_ADMIN_PASSWORD: "GoodNewsEveryone"
SPRING_LDAP_USER_FILTER_SEARCH_BASE: "dc=planetexpress,dc=com"
SPRING_LDAP_USER_FILTER_SEARCH_FILTER: "(&(uid={0})(objectClass=inetOrgPerson))"
SPRING_LDAP_GROUP_FILTER_SEARCH_BASE: "ou=people,dc=planetexpress,dc=com"
# OAUTH2.LDAP.ACTIVEDIRECTORY: true
# OAUTH2.LDAP.AСTIVEDIRECTORY.DOMAIN: "memelord.lol"
ldap:
image: rroemhild/test-openldap:latest
hostname: "ldap"
ports:
- 10389:10389
kafka0:
image: confluentinc/cp-kafka:7.2.1
hostname: kafka0
container_name: kafka0
ports:
- "9092:9092"
- "9997:9997"
environment:
KAFKA_BROKER_ID: 1
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9997
KAFKA_JMX_HOSTNAME: localhost
KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
KAFKA_PROCESS_ROLES: 'broker,controller'
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
volumes:
- ./scripts/update_run.sh:/tmp/update_run.sh
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'"
schemaregistry0:
image: confluentinc/cp-schema-registry:7.2.1
ports:
- 8085:8085
depends_on:
- kafka0
environment:
SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085
SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
================================================
FILE: documentation/compose/nginx-proxy.yaml
================================================
---
version: '2'
services:
nginx:
image: nginx:latest
volumes:
- ./data/proxy.conf:/etc/nginx/conf.d/default.conf
ports:
- 8080:80
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8082:8080
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
SERVER_SERVLET_CONTEXT_PATH: /kafka-ui
================================================
FILE: documentation/compose/postgres/Dockerfile
================================================
ARG image
FROM ${image}
MAINTAINER Provectus Team
ADD data.sql /docker-entrypoint-initdb.d
EXPOSE 5432
================================================
FILE: documentation/compose/postgres/data.sql
================================================
CREATE DATABASE test WITH OWNER = dev_user;
\connect test
CREATE TABLE activities
(
id INTEGER PRIMARY KEY,
msg varchar(24),
action varchar(128),
browser varchar(24),
device json,
createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
insert into activities(id, action, msg, browser, device)
values (1, 'LOGIN', 'Success', 'Chrome', '{
"name": "Chrome",
"major": "67",
"version": "67.0.3396.99"
}'),
(2, 'LOGIN', 'Failed', 'Apple WebKit', '{
"name": "WebKit",
"major": "605",
"version": "605.1.15"
}');
================================================
FILE: documentation/compose/proto/key-types.proto
================================================
syntax = "proto3";
package test;
import "google/protobuf/wrappers.proto";
message MyKey {
string myKeyF1 = 1;
google.protobuf.UInt64Value uint_64_wrapper = 2;
}
message MySpecificTopicKey {
string special_field1 = 1;
string special_field2 = 2;
google.protobuf.FloatValue float_wrapper = 3;
}
================================================
FILE: documentation/compose/proto/values.proto
================================================
syntax = "proto3";
package test;
message MySpecificTopicValue {
string f1 = 1;
string f2 = 2;
}
message MyValue {
int32 version = 1;
string payload = 2;
map<int32, string> intToStringMap = 3;
map<string, MyValue> strToObjMap = 4;
}
================================================
FILE: documentation/compose/scripts/clusterID
================================================
zlFiTJelTOuhnklFwLWixw
================================================
FILE: documentation/compose/scripts/create_cluster_id.sh
================================================
kafka-storage random-uuid > /workspace/kafka-ui/documentation/compose/clusterID
================================================
FILE: documentation/compose/scripts/update_run.sh
================================================
# This script is required to run kafka cluster (without zookeeper)
#!/bin/sh
# Docker workaround: Remove check for KAFKA_ZOOKEEPER_CONNECT parameter
sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure
# Docker workaround: Ignore cub zk-ready
sed -i 's/cub zk-ready/echo ignore zk-ready/' /etc/confluent/docker/ensure
# KRaft required step: Format the storage directory with a new cluster ID
echo "kafka-storage format --ignore-formatted -t $(kafka-storage random-uuid) -c /etc/kafka/kafka.properties" >> /etc/confluent/docker/ensure
================================================
FILE: documentation/compose/scripts/update_run_cluster.sh
================================================
# This script is required to run kafka cluster (without zookeeper)
#!/bin/sh
# Docker workaround: Remove check for KAFKA_ZOOKEEPER_CONNECT parameter
sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure
# Docker workaround: Ignore cub zk-ready
sed -i 's/cub zk-ready/echo ignore zk-ready/' /etc/confluent/docker/ensure
# KRaft required step: Format the storage directory with a new cluster ID
echo "kafka-storage format --ignore-formatted -t $(cat /tmp/clusterID) -c /etc/kafka/kafka.properties" >> /etc/confluent/docker/ensure
================================================
FILE: documentation/compose/ssl/creds
================================================
secret
================================================
FILE: documentation/compose/ssl/generate_certs.sh
================================================
#!/usr/bin/env bash
set -eu
KEYSTORE_FILENAME="kafka.keystore.jks"
VALIDITY_IN_DAYS=3650
DEFAULT_TRUSTSTORE_FILENAME="kafka.truststore.jks"
TRUSTSTORE_WORKING_DIRECTORY="truststore"
KEYSTORE_WORKING_DIRECTORY="keystore"
CA_CERT_FILE="ca-cert"
KEYSTORE_SIGN_REQUEST="cert-file"
KEYSTORE_SIGN_REQUEST_SRL="ca-cert.srl"
KEYSTORE_SIGNED_CERT="cert-signed"
export COUNTRY=US
export STATE=IL
export ORGANIZATION_UNIT=SE
export CITY=Chicago
export PASSWORD=secret
COUNTRY=$COUNTRY
STATE=$STATE
OU=$ORGANIZATION_UNIT
CN=kafka0 # COMMON NAME VERIFICATION GOES BRR
LOCATION=$CITY
PASS=$PASSWORD
function file_exists_and_exit() {
echo "'$1' cannot exist. Move or delete it before"
echo "re-running this script."
exit 1
}
if [ -e "$KEYSTORE_WORKING_DIRECTORY" ]; then
file_exists_and_exit $KEYSTORE_WORKING_DIRECTORY
fi
if [ -e "$CA_CERT_FILE" ]; then
file_exists_and_exit $CA_CERT_FILE
fi
if [ -e "$KEYSTORE_SIGN_REQUEST" ]; then
file_exists_and_exit $KEYSTORE_SIGN_REQUEST
fi
if [ -e "$KEYSTORE_SIGN_REQUEST_SRL" ]; then
file_exists_and_exit $KEYSTORE_SIGN_REQUEST_SRL
fi
if [ -e "$KEYSTORE_SIGNED_CERT" ]; then
file_exists_and_exit $KEYSTORE_SIGNED_CERT
fi
echo "Welcome to the Kafka SSL keystore and trust store generator script."
trust_store_file=""
trust_store_private_key_file=""
if [ -e "$TRUSTSTORE_WORKING_DIRECTORY" ]; then
file_exists_and_exit $TRUSTSTORE_WORKING_DIRECTORY
fi
mkdir $TRUSTSTORE_WORKING_DIRECTORY
echo
echo "OK, we'll generate a trust store and associated private key."
echo
echo "First, the private key."
echo
openssl req -new -x509 -keyout $TRUSTSTORE_WORKING_DIRECTORY/ca-key \
-out $TRUSTSTORE_WORKING_DIRECTORY/ca-cert -days $VALIDITY_IN_DAYS -nodes \
-subj "/C=$COUNTRY/ST=$STATE/L=$LOCATION/O=$OU/CN=$CN"
trust_store_private_key_file="$TRUSTSTORE_WORKING_DIRECTORY/ca-key"
echo
echo "Two files were created:"
echo " - $TRUSTSTORE_WORKING_DIRECTORY/ca-key -- the private key used later to"
echo " sign certificates"
echo " - $TRUSTSTORE_WORKING_DIRECTORY/ca-cert -- the certificate that will be"
echo " stored in the trust store in a moment and serve as the certificate"
echo " authority (CA). Once this certificate has been stored in the trust"
echo " store, it will be deleted. It can be retrieved from the trust store via:"
echo " $ keytool -keystore <trust-store-file> -export -alias CARoot -rfc"
echo
echo "Now the trust store will be generated from the certificate."
echo
keytool -keystore $TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME \
-alias CARoot -import -file $TRUSTSTORE_WORKING_DIRECTORY/ca-cert \
-noprompt -dname "C=$COUNTRY, ST=$STATE, L=$LOCATION, O=$OU, CN=$CN" -keypass $PASS -storepass $PASS -storetype JKS
trust_store_file="$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME"
echo
echo "$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME was created."
# don't need the cert because it's in the trust store.
rm $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE
echo
echo "Continuing with:"
echo " - trust store file: $trust_store_file"
echo " - trust store private key: $trust_store_private_key_file"
mkdir $KEYSTORE_WORKING_DIRECTORY
echo
echo "Now, a keystore will be generated. Each broker and logical client needs its own"
echo "keystore. This script will create only one keystore. Run this script multiple"
echo "times for multiple keystores."
echo
echo " NOTE: currently in Kafka, the Common Name (CN) does not need to be the FQDN of"
echo " this host. However, at some point, this may change. As such, make the CN"
echo " the FQDN. Some operating systems call the CN prompt 'first / last name'"
# To learn more about CNs and FQDNs, read:
# https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/X509ExtendedTrustManager.html
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME \
-alias localhost -validity $VALIDITY_IN_DAYS -genkey -keyalg RSA \
-noprompt -dname "C=$COUNTRY, ST=$STATE, L=$LOCATION, O=$OU, CN=$CN" -keypass $PASS -storepass $PASS -storetype JKS
echo
echo "'$KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME' now contains a key pair and a"
echo "self-signed certificate. Again, this keystore can only be used for one broker or"
echo "one logical client. Other brokers or clients need to generate their own keystores."
echo
echo "Fetching the certificate from the trust store and storing in $CA_CERT_FILE."
echo
keytool -keystore $trust_store_file -export -alias CARoot -rfc -file $CA_CERT_FILE -keypass $PASS -storepass $PASS
echo
echo "Now a certificate signing request will be made to the keystore."
echo
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost \
-certreq -file $KEYSTORE_SIGN_REQUEST -keypass $PASS -storepass $PASS
echo
echo "Now the trust store's private key (CA) will sign the keystore's certificate."
echo
openssl x509 -req -CA $CA_CERT_FILE -CAkey $trust_store_private_key_file \
-in $KEYSTORE_SIGN_REQUEST -out $KEYSTORE_SIGNED_CERT \
-days $VALIDITY_IN_DAYS -CAcreateserial \
-extensions kafka -extfile san.cnf
# creates $KEYSTORE_SIGN_REQUEST_SRL which is never used or needed.
echo
echo "Now the CA will be imported into the keystore."
echo
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias CARoot \
-import -file $CA_CERT_FILE -keypass $PASS -storepass $PASS -noprompt
rm $CA_CERT_FILE # delete the trust store cert because it's stored in the trust store.
echo
echo "Now the keystore's signed certificate will be imported back into the keystore."
echo
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost -import \
-file $KEYSTORE_SIGNED_CERT -keypass $PASS -storepass $PASS
echo
echo "All done!"
echo
echo "Deleting intermediate files. They are:"
echo " - '$KEYSTORE_SIGN_REQUEST_SRL': CA serial number"
echo " - '$KEYSTORE_SIGN_REQUEST': the keystore's certificate signing request"
echo " (that was fulfilled)"
echo " - '$KEYSTORE_SIGNED_CERT': the keystore's certificate, signed by the CA, and stored back"
echo " into the keystore"
rm $KEYSTORE_SIGN_REQUEST_SRL
rm $KEYSTORE_SIGN_REQUEST
rm $KEYSTORE_SIGNED_CERT
================================================
FILE: documentation/compose/ssl/san.cnf
================================================
[kafka]
subjectAltName = DNS:kafka0,DNS:schemaregistry0,DNS:kafka-connect0,DNS:ksqldb0
================================================
FILE: documentation/compose/traefik/kafkaui.yaml
================================================
http:
routers:
kafkaui:
rule: "PathPrefix(`/kafka-ui/`)"
entrypoints: web
service: kafkaui
services:
kafkaui:
loadBalancer:
servers:
- url: http://kafka-ui:8080
================================================
FILE: documentation/compose/traefik-proxy.yaml
================================================
---
version: '3.8'
services:
traefik:
restart: always
image: traefik:v2.4
container_name: traefik
command:
- --api.insecure=true
- --providers.file.directory=/etc/traefik
- --providers.file.watch=true
- --entrypoints.web.address=:80
- --log.level=debug
ports:
- 80:80
volumes:
- ./traefik:/etc/traefik
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8082:8080
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
SERVER_SERVLET_CONTEXT_PATH: /kafka-ui
================================================
FILE: etc/checkstyle/apache-header.txt
================================================
Licensed 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.
================================================
FILE: etc/checkstyle/checkstyle-e2e.xml
================================================
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<!--
Checkstyle configuration that checks the Google coding conventions from Google Java Style
that can be found at https://google.github.io/styleguide/javaguide.html
Checkstyle is very configurable. Be sure to read the documentation at
http://checkstyle.org (or in your downlo
gitextract_kz4bsw12/ ├── .devcontainer/ │ └── devcontainer.json ├── .editorconfig ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ ├── config.yml │ │ └── feature.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── release_drafter.yaml │ └── workflows/ │ ├── aws_publisher.yaml │ ├── backend.yml │ ├── block_merge.yml │ ├── branch-deploy.yml │ ├── branch-remove.yml │ ├── build-public-image.yml │ ├── codeql-analysis.yml │ ├── cve.yaml │ ├── delete-public-image.yml │ ├── documentation.yaml │ ├── e2e-automation.yml │ ├── e2e-checks.yaml │ ├── e2e-manual.yml │ ├── e2e-weekly.yml │ ├── frontend.yaml │ ├── master.yaml │ ├── pr-checks.yaml │ ├── release-serde-api.yaml │ ├── release.yaml │ ├── release_drafter.yml │ ├── separate_env_public_create.yml │ ├── separate_env_public_remove.yml │ ├── stale.yaml │ ├── terraform-deploy.yml │ ├── triage_issues.yml │ ├── triage_prs.yml │ ├── welcome-first-time-contributors.yml │ └── workflow_linter.yaml ├── .gitignore ├── .mvn/ │ └── wrapper/ │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── CODE-OF-CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── documentation/ │ └── compose/ │ ├── DOCKER_COMPOSE.md │ ├── connectors/ │ │ ├── github-source.json │ │ ├── s3-sink.json │ │ ├── sink-activities.json │ │ ├── source-activities.json │ │ └── start.sh │ ├── data/ │ │ ├── message.json │ │ └── proxy.conf │ ├── e2e-tests.yaml │ ├── jaas/ │ │ ├── client.properties │ │ ├── kafka_connect.jaas │ │ ├── kafka_connect.password │ │ ├── kafka_server.conf │ │ ├── schema_registry.jaas │ │ ├── schema_registry.password │ │ └── zookeeper_jaas.conf │ ├── jmx/ │ │ ├── clientkeystore │ │ ├── clienttruststore │ │ ├── jmxremote.access │ │ ├── jmxremote.password │ │ ├── serverkeystore │ │ └── servertruststore │ ├── jmx-exporter/ │ │ ├── kafka-broker.yml │ │ └── kafka-prepare-and-run │ ├── kafka-cluster-sr-auth.yaml │ ├── kafka-connect/ │ │ └── Dockerfile │ ├── kafka-ssl-components.yaml │ ├── kafka-ssl.yml │ ├── kafka-ui-acl-with-zk.yaml │ ├── kafka-ui-arm64.yaml │ ├── kafka-ui-auth-context.yaml │ ├── kafka-ui-connectors-auth.yaml │ ├── kafka-ui-jmx-secured.yml │ ├── kafka-ui-sasl.yaml │ ├── kafka-ui-serdes.yaml │ ├── kafka-ui-with-jmx-exporter.yaml │ ├── kafka-ui.yaml │ ├── kafka-with-zookeeper.yaml │ ├── ldap.yaml │ ├── nginx-proxy.yaml │ ├── postgres/ │ │ ├── Dockerfile │ │ └── data.sql │ ├── proto/ │ │ ├── key-types.proto │ │ └── values.proto │ ├── scripts/ │ │ ├── clusterID │ │ ├── create_cluster_id.sh │ │ ├── update_run.sh │ │ └── update_run_cluster.sh │ ├── ssl/ │ │ ├── creds │ │ ├── generate_certs.sh │ │ ├── kafka.keystore.jks │ │ ├── kafka.truststore.jks │ │ └── san.cnf │ ├── traefik/ │ │ └── kafkaui.yaml │ └── traefik-proxy.yaml ├── etc/ │ └── checkstyle/ │ ├── apache-header.txt │ ├── checkstyle-e2e.xml │ └── checkstyle.xml ├── kafka-ui-api/ │ ├── Dockerfile │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── antlr4/ │ │ │ └── ksql/ │ │ │ └── KsqlGrammar.g4 │ │ ├── java/ │ │ │ └── com/ │ │ │ └── provectus/ │ │ │ └── kafka/ │ │ │ └── ui/ │ │ │ ├── KafkaUiApplication.java │ │ │ ├── client/ │ │ │ │ └── RetryingKafkaConnectClient.java │ │ │ ├── config/ │ │ │ │ ├── ClustersProperties.java │ │ │ │ ├── Config.java │ │ │ │ ├── CorsGlobalConfiguration.java │ │ │ │ ├── CustomWebFilter.java │ │ │ │ ├── ReadOnlyModeFilter.java │ │ │ │ ├── WebclientProperties.java │ │ │ │ └── auth/ │ │ │ │ ├── AbstractAuthSecurityConfig.java │ │ │ │ ├── AuthenticatedUser.java │ │ │ │ ├── BasicAuthSecurityConfig.java │ │ │ │ ├── DisabledAuthSecurityConfig.java │ │ │ │ ├── LdapProperties.java │ │ │ │ ├── LdapSecurityConfig.java │ │ │ │ ├── OAuthProperties.java │ │ │ │ ├── OAuthPropertiesConverter.java │ │ │ │ ├── OAuthSecurityConfig.java │ │ │ │ ├── RbacLdapUser.java │ │ │ │ ├── RbacOAuth2User.java │ │ │ │ ├── RbacOidcUser.java │ │ │ │ ├── RbacUser.java │ │ │ │ ├── RoleBasedAccessControlProperties.java │ │ │ │ ├── condition/ │ │ │ │ │ ├── ActiveDirectoryCondition.java │ │ │ │ │ └── CognitoCondition.java │ │ │ │ └── logout/ │ │ │ │ ├── CognitoLogoutSuccessHandler.java │ │ │ │ ├── LogoutSuccessHandler.java │ │ │ │ └── OAuthLogoutSuccessHandler.java │ │ │ ├── controller/ │ │ │ │ ├── AbstractController.java │ │ │ │ ├── AccessController.java │ │ │ │ ├── AclsController.java │ │ │ │ ├── ApplicationConfigController.java │ │ │ │ ├── AuthController.java │ │ │ │ ├── BrokersController.java │ │ │ │ ├── ClustersController.java │ │ │ │ ├── ConsumerGroupsController.java │ │ │ │ ├── KafkaConnectController.java │ │ │ │ ├── KsqlController.java │ │ │ │ ├── MessagesController.java │ │ │ │ ├── SchemasController.java │ │ │ │ ├── StaticController.java │ │ │ │ └── TopicsController.java │ │ │ ├── emitter/ │ │ │ │ ├── AbstractEmitter.java │ │ │ │ ├── BackwardEmitter.java │ │ │ │ ├── ConsumingStats.java │ │ │ │ ├── EnhancedConsumer.java │ │ │ │ ├── ForwardEmitter.java │ │ │ │ ├── MessageFilters.java │ │ │ │ ├── MessagesProcessing.java │ │ │ │ ├── OffsetsInfo.java │ │ │ │ ├── PolledRecords.java │ │ │ │ ├── PollingSettings.java │ │ │ │ ├── PollingThrottler.java │ │ │ │ ├── RangePollingEmitter.java │ │ │ │ ├── ResultSizeLimiter.java │ │ │ │ ├── SeekOperations.java │ │ │ │ └── TailingEmitter.java │ │ │ ├── exception/ │ │ │ │ ├── ClusterNotFoundException.java │ │ │ │ ├── ConnectNotFoundException.java │ │ │ │ ├── CustomBaseException.java │ │ │ │ ├── DuplicateEntityException.java │ │ │ │ ├── ErrorCode.java │ │ │ │ ├── FileUploadException.java │ │ │ │ ├── GlobalErrorWebExceptionHandler.java │ │ │ │ ├── IllegalEntityStateException.java │ │ │ │ ├── InvalidRequestApiException.java │ │ │ │ ├── JsonAvroConversionException.java │ │ │ │ ├── KafkaConnectConflictReponseException.java │ │ │ │ ├── KsqlApiException.java │ │ │ │ ├── KsqlDbNotFoundException.java │ │ │ │ ├── LogDirNotFoundApiException.java │ │ │ │ ├── NotFoundException.java │ │ │ │ ├── ReadOnlyModeException.java │ │ │ │ ├── SchemaCompatibilityException.java │ │ │ │ ├── SchemaFailedToDeleteException.java │ │ │ │ ├── SchemaNotFoundException.java │ │ │ │ ├── TopicAnalysisException.java │ │ │ │ ├── TopicMetadataException.java │ │ │ │ ├── TopicNotFoundException.java │ │ │ │ ├── TopicOrPartitionNotFoundException.java │ │ │ │ ├── TopicRecreationException.java │ │ │ │ ├── UnprocessableEntityException.java │ │ │ │ └── ValidationException.java │ │ │ ├── mapper/ │ │ │ │ ├── ClusterMapper.java │ │ │ │ ├── ConsumerGroupMapper.java │ │ │ │ ├── DescribeLogDirsMapper.java │ │ │ │ ├── KafkaConnectMapper.java │ │ │ │ └── KafkaSrMapper.java │ │ │ ├── model/ │ │ │ │ ├── BrokerMetrics.java │ │ │ │ ├── CleanupPolicy.java │ │ │ │ ├── ClusterFeature.java │ │ │ │ ├── ConsumerPosition.java │ │ │ │ ├── InternalBroker.java │ │ │ │ ├── InternalBrokerConfig.java │ │ │ │ ├── InternalBrokerDiskUsage.java │ │ │ │ ├── InternalClusterMetrics.java │ │ │ │ ├── InternalClusterState.java │ │ │ │ ├── InternalConsumerGroup.java │ │ │ │ ├── InternalLogDirStats.java │ │ │ │ ├── InternalPartition.java │ │ │ │ ├── InternalPartitionsOffsets.java │ │ │ │ ├── InternalReplica.java │ │ │ │ ├── InternalSegmentSizeDto.java │ │ │ │ ├── InternalTopic.java │ │ │ │ ├── InternalTopicConfig.java │ │ │ │ ├── InternalTopicConsumerGroup.java │ │ │ │ ├── KafkaCluster.java │ │ │ │ ├── Metrics.java │ │ │ │ ├── MetricsConfig.java │ │ │ │ ├── PartitionDistributionStats.java │ │ │ │ ├── PartitionsStats.java │ │ │ │ ├── Statistics.java │ │ │ │ ├── connect/ │ │ │ │ │ └── InternalConnectInfo.java │ │ │ │ ├── rbac/ │ │ │ │ │ ├── AccessContext.java │ │ │ │ │ ├── Permission.java │ │ │ │ │ ├── Resource.java │ │ │ │ │ ├── Role.java │ │ │ │ │ ├── Subject.java │ │ │ │ │ ├── permission/ │ │ │ │ │ │ ├── AclAction.java │ │ │ │ │ │ ├── ApplicationConfigAction.java │ │ │ │ │ │ ├── AuditAction.java │ │ │ │ │ │ ├── ClusterConfigAction.java │ │ │ │ │ │ ├── ConnectAction.java │ │ │ │ │ │ ├── ConsumerGroupAction.java │ │ │ │ │ │ ├── KsqlAction.java │ │ │ │ │ │ ├── PermissibleAction.java │ │ │ │ │ │ ├── SchemaAction.java │ │ │ │ │ │ └── TopicAction.java │ │ │ │ │ └── provider/ │ │ │ │ │ └── Provider.java │ │ │ │ └── schemaregistry/ │ │ │ │ ├── ErrorResponse.java │ │ │ │ ├── InternalCompatibilityCheck.java │ │ │ │ ├── InternalCompatibilityLevel.java │ │ │ │ ├── InternalNewSchema.java │ │ │ │ └── SubjectIdResponse.java │ │ │ ├── serdes/ │ │ │ │ ├── BuiltInSerde.java │ │ │ │ ├── ClassloaderUtil.java │ │ │ │ ├── ClusterSerdes.java │ │ │ │ ├── ConsumerRecordDeserializer.java │ │ │ │ ├── CustomSerdeLoader.java │ │ │ │ ├── ProducerRecordCreator.java │ │ │ │ ├── PropertyResolverImpl.java │ │ │ │ ├── RecordHeaderImpl.java │ │ │ │ ├── RecordHeadersImpl.java │ │ │ │ ├── SerdeInstance.java │ │ │ │ ├── SerdesInitializer.java │ │ │ │ └── builtin/ │ │ │ │ ├── AvroEmbeddedSerde.java │ │ │ │ ├── Base64Serde.java │ │ │ │ ├── ConsumerOffsetsSerde.java │ │ │ │ ├── HexSerde.java │ │ │ │ ├── Int32Serde.java │ │ │ │ ├── Int64Serde.java │ │ │ │ ├── ProtobufFileSerde.java │ │ │ │ ├── ProtobufRawSerde.java │ │ │ │ ├── StringSerde.java │ │ │ │ ├── UInt32Serde.java │ │ │ │ ├── UInt64Serde.java │ │ │ │ ├── UuidBinarySerde.java │ │ │ │ └── sr/ │ │ │ │ ├── MessageFormatter.java │ │ │ │ ├── SchemaRegistrySerde.java │ │ │ │ ├── SchemaType.java │ │ │ │ └── Serialize.java │ │ │ ├── service/ │ │ │ │ ├── AdminClientService.java │ │ │ │ ├── AdminClientServiceImpl.java │ │ │ │ ├── ApplicationInfoService.java │ │ │ │ ├── BrokerService.java │ │ │ │ ├── ClusterService.java │ │ │ │ ├── ClustersStatisticsScheduler.java │ │ │ │ ├── ClustersStorage.java │ │ │ │ ├── ConsumerGroupService.java │ │ │ │ ├── DeserializationService.java │ │ │ │ ├── FeatureService.java │ │ │ │ ├── KafkaClusterFactory.java │ │ │ │ ├── KafkaConfigSanitizer.java │ │ │ │ ├── KafkaConnectService.java │ │ │ │ ├── MessagesService.java │ │ │ │ ├── OffsetsResetService.java │ │ │ │ ├── ReactiveAdminClient.java │ │ │ │ ├── SchemaRegistryService.java │ │ │ │ ├── StatisticsCache.java │ │ │ │ ├── StatisticsService.java │ │ │ │ ├── TopicsService.java │ │ │ │ ├── acl/ │ │ │ │ │ ├── AclCsv.java │ │ │ │ │ └── AclsService.java │ │ │ │ ├── analyze/ │ │ │ │ │ ├── AnalysisTasksStore.java │ │ │ │ │ ├── TopicAnalysisService.java │ │ │ │ │ ├── TopicAnalysisStats.java │ │ │ │ │ └── TopicIdentity.java │ │ │ │ ├── audit/ │ │ │ │ │ ├── AuditRecord.java │ │ │ │ │ ├── AuditService.java │ │ │ │ │ └── AuditWriter.java │ │ │ │ ├── integration/ │ │ │ │ │ └── odd/ │ │ │ │ │ ├── ConnectorInfo.java │ │ │ │ │ ├── ConnectorsExporter.java │ │ │ │ │ ├── OddExporter.java │ │ │ │ │ ├── OddExporterScheduler.java │ │ │ │ │ ├── OddIntegrationConfig.java │ │ │ │ │ ├── OddIntegrationProperties.java │ │ │ │ │ ├── Oddrn.java │ │ │ │ │ ├── SchemaReferencesResolver.java │ │ │ │ │ ├── TopicsExporter.java │ │ │ │ │ └── schema/ │ │ │ │ │ ├── AvroExtractor.java │ │ │ │ │ ├── DataSetFieldsExtractors.java │ │ │ │ │ ├── JsonSchemaExtractor.java │ │ │ │ │ └── ProtoExtractor.java │ │ │ │ ├── ksql/ │ │ │ │ │ ├── KsqlApiClient.java │ │ │ │ │ ├── KsqlGrammar.java │ │ │ │ │ ├── KsqlServiceV2.java │ │ │ │ │ └── response/ │ │ │ │ │ ├── DynamicParser.java │ │ │ │ │ └── ResponseParser.java │ │ │ │ ├── masking/ │ │ │ │ │ ├── DataMasking.java │ │ │ │ │ └── policies/ │ │ │ │ │ ├── FieldsSelector.java │ │ │ │ │ ├── Mask.java │ │ │ │ │ ├── MaskingPolicy.java │ │ │ │ │ ├── Remove.java │ │ │ │ │ └── Replace.java │ │ │ │ ├── metrics/ │ │ │ │ │ ├── JmxMetricsFormatter.java │ │ │ │ │ ├── JmxMetricsRetriever.java │ │ │ │ │ ├── JmxSslSocketFactory.java │ │ │ │ │ ├── MetricsCollector.java │ │ │ │ │ ├── MetricsRetriever.java │ │ │ │ │ ├── PrometheusEndpointMetricsParser.java │ │ │ │ │ ├── PrometheusMetricsRetriever.java │ │ │ │ │ ├── RawMetric.java │ │ │ │ │ └── WellKnownMetrics.java │ │ │ │ └── rbac/ │ │ │ │ ├── AbstractProviderCondition.java │ │ │ │ ├── AccessControlService.java │ │ │ │ └── extractor/ │ │ │ │ ├── CognitoAuthorityExtractor.java │ │ │ │ ├── GithubAuthorityExtractor.java │ │ │ │ ├── GoogleAuthorityExtractor.java │ │ │ │ ├── OauthAuthorityExtractor.java │ │ │ │ ├── ProviderAuthorityExtractor.java │ │ │ │ └── RbacLdapAuthoritiesExtractor.java │ │ │ └── util/ │ │ │ ├── ApplicationMetrics.java │ │ │ ├── ApplicationRestarter.java │ │ │ ├── DynamicConfigOperations.java │ │ │ ├── EmptyRedirectStrategy.java │ │ │ ├── GithubReleaseInfo.java │ │ │ ├── KafkaServicesValidation.java │ │ │ ├── KafkaVersion.java │ │ │ ├── ReactiveFailover.java │ │ │ ├── ResourceUtil.java │ │ │ ├── SslPropertiesUtil.java │ │ │ ├── WebClientConfigurator.java │ │ │ ├── annotation/ │ │ │ │ └── KafkaClientInternalsDependant.java │ │ │ └── jsonschema/ │ │ │ ├── AnyFieldSchema.java │ │ │ ├── ArrayFieldSchema.java │ │ │ ├── AvroJsonSchemaConverter.java │ │ │ ├── EnumJsonType.java │ │ │ ├── FieldSchema.java │ │ │ ├── JsonAvroConversion.java │ │ │ ├── JsonSchema.java │ │ │ ├── JsonSchemaConverter.java │ │ │ ├── JsonType.java │ │ │ ├── MapFieldSchema.java │ │ │ ├── ObjectFieldSchema.java │ │ │ ├── OneOfFieldSchema.java │ │ │ ├── ProtobufSchemaConverter.java │ │ │ ├── RefFieldSchema.java │ │ │ ├── SimpleFieldSchema.java │ │ │ └── SimpleJsonType.java │ │ └── resources/ │ │ ├── application-local.yml │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── logback-spring.xml │ │ └── static/ │ │ └── static/ │ │ └── css/ │ │ ├── bootstrap.min.css │ │ └── signin.css │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── provectus/ │ │ └── kafka/ │ │ └── ui/ │ │ ├── AbstractIntegrationTest.java │ │ ├── KafkaConnectServiceTests.java │ │ ├── KafkaConsumerGroupTests.java │ │ ├── KafkaConsumerTests.java │ │ ├── KafkaTopicCreateTests.java │ │ ├── ReadOnlyModeTests.java │ │ ├── SchemaRegistryServiceTests.java │ │ ├── config/ │ │ │ └── ClustersPropertiesTest.java │ │ ├── container/ │ │ │ ├── KafkaConnectContainer.java │ │ │ ├── KsqlDbContainer.java │ │ │ └── SchemaRegistryContainer.java │ │ ├── controller/ │ │ │ └── ApplicationConfigControllerTest.java │ │ ├── emitter/ │ │ │ ├── MessageFiltersTest.java │ │ │ ├── MessagesProcessingTest.java │ │ │ ├── OffsetsInfoTest.java │ │ │ ├── SeekOperationsTest.java │ │ │ └── TailingEmitterTest.java │ │ ├── model/ │ │ │ └── PartitionDistributionStatsTest.java │ │ ├── producer/ │ │ │ └── KafkaTestProducer.java │ │ ├── serdes/ │ │ │ ├── ConsumerRecordDeserializerTest.java │ │ │ ├── PropertyResolverImplTest.java │ │ │ ├── SerdesInitializerTest.java │ │ │ └── builtin/ │ │ │ ├── AvroEmbeddedSerdeTest.java │ │ │ ├── Base64SerdeTest.java │ │ │ ├── ConsumerOffsetsSerdeTest.java │ │ │ ├── HexSerdeTest.java │ │ │ ├── Int32SerdeTest.java │ │ │ ├── Int64SerdeTest.java │ │ │ ├── ProtobufFileSerdeTest.java │ │ │ ├── ProtobufRawSerdeTest.java │ │ │ ├── UInt32SerdeTest.java │ │ │ ├── UInt64SerdeTest.java │ │ │ ├── UuidBinarySerdeTest.java │ │ │ └── sr/ │ │ │ └── SchemaRegistrySerdeTest.java │ │ ├── service/ │ │ │ ├── BrokerServiceTest.java │ │ │ ├── ConfigTest.java │ │ │ ├── KafkaConfigSanitizerTest.java │ │ │ ├── LogDirsTest.java │ │ │ ├── MessagesServiceTest.java │ │ │ ├── OffsetsResetServiceTest.java │ │ │ ├── ReactiveAdminClientTest.java │ │ │ ├── RecordEmitterTest.java │ │ │ ├── SchemaRegistryPaginationTest.java │ │ │ ├── SendAndReadTests.java │ │ │ ├── TopicsServicePaginationTest.java │ │ │ ├── acl/ │ │ │ │ ├── AclCsvTest.java │ │ │ │ └── AclsServiceTest.java │ │ │ ├── analyze/ │ │ │ │ └── TopicAnalysisServiceTest.java │ │ │ ├── audit/ │ │ │ │ ├── AuditIntegrationTest.java │ │ │ │ ├── AuditServiceTest.java │ │ │ │ └── AuditWriterTest.java │ │ │ ├── integration/ │ │ │ │ └── odd/ │ │ │ │ ├── ConnectorsExporterTest.java │ │ │ │ ├── SchemaReferencesResolverTest.java │ │ │ │ ├── TopicsExporterTest.java │ │ │ │ └── schema/ │ │ │ │ ├── AvroExtractorTest.java │ │ │ │ ├── JsonSchemaExtractorTest.java │ │ │ │ └── ProtoExtractorTest.java │ │ │ ├── ksql/ │ │ │ │ ├── KsqlApiClientTest.java │ │ │ │ ├── KsqlServiceV2Test.java │ │ │ │ └── response/ │ │ │ │ └── ResponseParserTest.java │ │ │ ├── masking/ │ │ │ │ ├── DataMaskingTest.java │ │ │ │ └── policies/ │ │ │ │ ├── FieldsSelectorTest.java │ │ │ │ ├── MaskTest.java │ │ │ │ ├── RemoveTest.java │ │ │ │ └── ReplaceTest.java │ │ │ └── metrics/ │ │ │ ├── JmxMetricsFormatterTest.java │ │ │ ├── PrometheusEndpointMetricsParserTest.java │ │ │ ├── PrometheusMetricsRetrieverTest.java │ │ │ └── WellKnownMetricsTest.java │ │ └── util/ │ │ ├── AccessControlServiceMock.java │ │ ├── DynamicConfigOperationsTest.java │ │ ├── GithubReleaseInfoTest.java │ │ ├── PollingThrottlerTest.java │ │ ├── ReactiveFailoverTest.java │ │ └── jsonschema/ │ │ ├── AvroJsonSchemaConverterTest.java │ │ ├── JsonAvroConversionTest.java │ │ └── ProtobufSchemaConverterTest.java │ └── resources/ │ ├── application-test.yml │ ├── fileForUploadTest.txt │ └── protobuf-serde/ │ ├── address-book.proto │ ├── lang-description.proto │ ├── language/ │ │ └── language.proto │ └── sensor.proto ├── kafka-ui-contract/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── resources/ │ └── swagger/ │ ├── kafka-connect-api.yaml │ ├── kafka-sr-api.yaml │ └── kafka-ui-api.yaml ├── kafka-ui-e2e-checks/ │ ├── .gitignore │ ├── QASE.md │ ├── README.md │ ├── docker/ │ │ ├── selenoid-git.yaml │ │ └── selenoid-local.yaml │ ├── pom.xml │ ├── selenoid/ │ │ └── config/ │ │ ├── browsersGit.json │ │ └── browsersLocal.json │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── provectus/ │ │ │ └── kafka/ │ │ │ └── ui/ │ │ │ ├── models/ │ │ │ │ ├── Connector.java │ │ │ │ ├── Schema.java │ │ │ │ └── Topic.java │ │ │ ├── pages/ │ │ │ │ ├── BasePage.java │ │ │ │ ├── brokers/ │ │ │ │ │ ├── BrokersConfigTab.java │ │ │ │ │ ├── BrokersDetails.java │ │ │ │ │ └── BrokersList.java │ │ │ │ ├── connectors/ │ │ │ │ │ ├── ConnectorCreateForm.java │ │ │ │ │ ├── ConnectorDetails.java │ │ │ │ │ └── KafkaConnectList.java │ │ │ │ ├── consumers/ │ │ │ │ │ ├── ConsumersDetails.java │ │ │ │ │ └── ConsumersList.java │ │ │ │ ├── ksqldb/ │ │ │ │ │ ├── KsqlDbList.java │ │ │ │ │ ├── KsqlQueryForm.java │ │ │ │ │ ├── enums/ │ │ │ │ │ │ ├── KsqlMenuTabs.java │ │ │ │ │ │ └── KsqlQueryConfig.java │ │ │ │ │ └── models/ │ │ │ │ │ ├── Stream.java │ │ │ │ │ └── Table.java │ │ │ │ ├── panels/ │ │ │ │ │ ├── NaviSideBar.java │ │ │ │ │ ├── TopPanel.java │ │ │ │ │ └── enums/ │ │ │ │ │ └── MenuItem.java │ │ │ │ ├── schemas/ │ │ │ │ │ ├── SchemaCreateForm.java │ │ │ │ │ ├── SchemaDetails.java │ │ │ │ │ └── SchemaRegistryList.java │ │ │ │ └── topics/ │ │ │ │ ├── ProduceMessagePanel.java │ │ │ │ ├── TopicCreateEditForm.java │ │ │ │ ├── TopicDetails.java │ │ │ │ ├── TopicSettingsTab.java │ │ │ │ ├── TopicsList.java │ │ │ │ └── enums/ │ │ │ │ ├── CleanupPolicyValue.java │ │ │ │ ├── CustomParameterType.java │ │ │ │ ├── MaxSizeOnDisk.java │ │ │ │ └── TimeToRetain.java │ │ │ ├── services/ │ │ │ │ └── ApiService.java │ │ │ ├── settings/ │ │ │ │ ├── BaseSource.java │ │ │ │ ├── configs/ │ │ │ │ │ ├── Config.java │ │ │ │ │ └── Profiles.java │ │ │ │ ├── drivers/ │ │ │ │ │ └── WebDriver.java │ │ │ │ └── listeners/ │ │ │ │ ├── AllureListener.java │ │ │ │ ├── LoggerListener.java │ │ │ │ ├── QaseCreateListener.java │ │ │ │ └── QaseResultListener.java │ │ │ ├── utilities/ │ │ │ │ ├── FileUtils.java │ │ │ │ ├── StringUtils.java │ │ │ │ ├── TimeUtils.java │ │ │ │ ├── WebUtils.java │ │ │ │ └── qase/ │ │ │ │ ├── QaseSetup.java │ │ │ │ ├── annotations/ │ │ │ │ │ ├── Automation.java │ │ │ │ │ ├── Status.java │ │ │ │ │ └── Suite.java │ │ │ │ └── enums/ │ │ │ │ ├── State.java │ │ │ │ └── Status.java │ │ │ └── variables/ │ │ │ ├── Browser.java │ │ │ ├── Expected.java │ │ │ ├── Suite.java │ │ │ └── Url.java │ │ └── resources/ │ │ ├── allure.properties │ │ └── testData/ │ │ ├── connectors/ │ │ │ ├── config_for_create_connector.json │ │ │ ├── config_for_create_connector_via_api.json │ │ │ ├── config_for_update_connector.json │ │ │ └── delete_connector_config.json │ │ ├── schemas/ │ │ │ ├── schema_avro_for_update.json │ │ │ ├── schema_avro_value.json │ │ │ ├── schema_json_Value.json │ │ │ └── schema_protobuf_value.txt │ │ └── topics/ │ │ └── message_content_create_topic.json │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── provectus/ │ │ └── kafka/ │ │ └── ui/ │ │ ├── BaseTest.java │ │ ├── Facade.java │ │ ├── manualsuite/ │ │ │ ├── BaseManualTest.java │ │ │ ├── backlog/ │ │ │ │ ├── SanityBacklog.java │ │ │ │ └── SmokeBacklog.java │ │ │ └── suite/ │ │ │ ├── DataMaskingTest.java │ │ │ ├── RbacTest.java │ │ │ ├── TopicsTest.java │ │ │ └── WizardTest.java │ │ ├── qasesuite/ │ │ │ ├── BaseQaseTest.java │ │ │ └── Template.java │ │ ├── sanitysuite/ │ │ │ └── TopicsTest.java │ │ └── smokesuite/ │ │ ├── SmokeTest.java │ │ ├── brokers/ │ │ │ └── BrokersTest.java │ │ ├── connectors/ │ │ │ └── ConnectorsTest.java │ │ ├── ksqldb/ │ │ │ └── KsqlDbTest.java │ │ ├── schemas/ │ │ │ └── SchemasTest.java │ │ └── topics/ │ │ ├── MessagesTest.java │ │ └── TopicsTest.java │ └── resources/ │ ├── manual.xml │ ├── qase.xml │ ├── regression.xml │ ├── sanity.xml │ └── smoke.xml ├── kafka-ui-react-app/ │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .jest/ │ │ ├── cssTransform.js │ │ └── resolver.js │ ├── .nvmrc │ ├── .prettierrc │ ├── README.md │ ├── index.html │ ├── jest.config.ts │ ├── openapitools.json │ ├── package.json │ ├── public/ │ │ ├── manifest.json │ │ └── robots.txt │ ├── sonar-project.properties │ ├── src/ │ │ ├── components/ │ │ │ ├── ACLPage/ │ │ │ │ ├── ACLPage.tsx │ │ │ │ └── List/ │ │ │ │ ├── List.styled.ts │ │ │ │ ├── List.tsx │ │ │ │ └── __test__/ │ │ │ │ └── List.spec.tsx │ │ │ ├── App.styled.ts │ │ │ ├── App.tsx │ │ │ ├── Brokers/ │ │ │ │ ├── Broker/ │ │ │ │ │ ├── Broker.tsx │ │ │ │ │ ├── BrokerLogdir/ │ │ │ │ │ │ ├── BrokerLogdir.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── BrokerLogdir.spec.tsx │ │ │ │ │ ├── BrokerMetrics/ │ │ │ │ │ │ ├── BrokerMetrics.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── BrokerMetrics.spec.tsx │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ ├── Configs.styled.ts │ │ │ │ │ │ ├── Configs.tsx │ │ │ │ │ │ ├── InputCell.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── Configs.spec.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── Broker.spec.tsx │ │ │ │ ├── Brokers.tsx │ │ │ │ ├── BrokersList/ │ │ │ │ │ ├── BrokersList.styled.ts │ │ │ │ │ ├── BrokersList.tsx │ │ │ │ │ ├── SkewHeader/ │ │ │ │ │ │ ├── SkewHeader.styled.ts │ │ │ │ │ │ └── SkewHeader.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── BrokersList.spec.tsx │ │ │ │ ├── __test__/ │ │ │ │ │ └── Brokers.spec.tsx │ │ │ │ └── utils/ │ │ │ │ ├── __test__/ │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ └── getEditorText.spec.tsx │ │ │ │ └── getEditorText.ts │ │ │ ├── ClusterPage/ │ │ │ │ ├── ClusterConfigPage.tsx │ │ │ │ ├── ClusterPage.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── ClusterPage.spec.tsx │ │ │ ├── Connect/ │ │ │ │ ├── Connect.tsx │ │ │ │ ├── Details/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ ├── Action.styled.ts │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── Actions.spec.tsx │ │ │ │ │ ├── Config/ │ │ │ │ │ │ ├── Config.styled.ts │ │ │ │ │ │ ├── Config.tsx │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── Config.spec.tsx │ │ │ │ │ ├── DetailsPage.tsx │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ ├── Overview.tsx │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ ├── Overview.spec.tsx │ │ │ │ │ │ │ └── getTaskMetrics.spec.ts │ │ │ │ │ │ └── getTaskMetrics.ts │ │ │ │ │ ├── Tasks/ │ │ │ │ │ │ ├── ActionsCellTasks.tsx │ │ │ │ │ │ ├── Tasks.tsx │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── Tasks.spec.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── DetailsPage.spec.tsx │ │ │ │ ├── List/ │ │ │ │ │ ├── ActionsCell.tsx │ │ │ │ │ ├── List.styled.ts │ │ │ │ │ ├── List.tsx │ │ │ │ │ ├── ListPage.tsx │ │ │ │ │ ├── RunningTasksCell.tsx │ │ │ │ │ ├── TopicsCell.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── List.spec.tsx │ │ │ │ │ └── ListPage.spec.tsx │ │ │ │ ├── New/ │ │ │ │ │ ├── New.styled.ts │ │ │ │ │ ├── New.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── New.spec.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── Connect.spec.tsx │ │ │ ├── ConsumerGroups/ │ │ │ │ ├── ConsumerGroups.tsx │ │ │ │ ├── Details/ │ │ │ │ │ ├── Details.tsx │ │ │ │ │ ├── ListItem.styled.ts │ │ │ │ │ ├── ListItem.tsx │ │ │ │ │ ├── ResetOffsets/ │ │ │ │ │ │ ├── Form.tsx │ │ │ │ │ │ ├── ResetOffsets.styled.ts │ │ │ │ │ │ └── ResetOffsets.tsx │ │ │ │ │ └── TopicContents/ │ │ │ │ │ ├── TopicContent.styled.ts │ │ │ │ │ ├── TopicContents.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── TopicContents.spec.tsx │ │ │ │ ├── List.tsx │ │ │ │ └── __test__/ │ │ │ │ └── ConsumerGroups.spec.tsx │ │ │ ├── Dashboard/ │ │ │ │ ├── ClusterName.tsx │ │ │ │ ├── ClusterTableActionsCell.tsx │ │ │ │ ├── Dashboard.styled.ts │ │ │ │ └── Dashboard.tsx │ │ │ ├── ErrorPage/ │ │ │ │ ├── ErrorPage.styled.ts │ │ │ │ ├── ErrorPage.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── ErrorPage.spec.tsx │ │ │ ├── KsqlDb/ │ │ │ │ ├── KsqlDb.tsx │ │ │ │ ├── Query/ │ │ │ │ │ ├── Query.tsx │ │ │ │ │ ├── QueryForm/ │ │ │ │ │ │ ├── QueryForm.styled.ts │ │ │ │ │ │ └── QueryForm.tsx │ │ │ │ │ └── renderer/ │ │ │ │ │ └── TableRenderer/ │ │ │ │ │ ├── TableRenderer.styled.tsx │ │ │ │ │ └── TableRenderer.tsx │ │ │ │ └── TableView.tsx │ │ │ ├── Nav/ │ │ │ │ ├── ClusterMenu.tsx │ │ │ │ ├── ClusterMenuItem.tsx │ │ │ │ ├── ClusterTab/ │ │ │ │ │ ├── ClusterTab.styled.ts │ │ │ │ │ ├── ClusterTab.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── ClusterTab.spec.tsx │ │ │ │ │ └── ClusterTab.styled.spec.tsx │ │ │ │ ├── Nav.styled.ts │ │ │ │ ├── Nav.tsx │ │ │ │ └── __tests__/ │ │ │ │ ├── ClusterMenu.spec.tsx │ │ │ │ ├── ClusterMenuItem.spec.tsx │ │ │ │ └── Nav.spec.tsx │ │ │ ├── NavBar/ │ │ │ │ ├── NavBar.styled.ts │ │ │ │ ├── NavBar.tsx │ │ │ │ ├── UserInfo/ │ │ │ │ │ ├── UserInfo.styled.ts │ │ │ │ │ ├── UserInfo.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── UserInfo.spec.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── NavBar.spec.tsx │ │ │ ├── PageContainer/ │ │ │ │ ├── PageContainer.styled.ts │ │ │ │ ├── PageContainer.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── PageContainer.spec.tsx │ │ │ ├── Schemas/ │ │ │ │ ├── Details/ │ │ │ │ │ ├── Details.tsx │ │ │ │ │ ├── LatestVersion/ │ │ │ │ │ │ ├── LatestVersionItem.styled.tsx │ │ │ │ │ │ └── LatestVersionItem.tsx │ │ │ │ │ ├── SchemaVersion/ │ │ │ │ │ │ └── SchemaVersion.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ ├── Details.spec.tsx │ │ │ │ │ ├── LatestVersionItem.spec.tsx │ │ │ │ │ ├── SchemaVersion.spec.tsx │ │ │ │ │ └── fixtures.ts │ │ │ │ ├── Diff/ │ │ │ │ │ ├── Diff.styled.ts │ │ │ │ │ ├── Diff.tsx │ │ │ │ │ ├── DiffContainer.ts │ │ │ │ │ └── __test__/ │ │ │ │ │ ├── Diff.spec.tsx │ │ │ │ │ └── fixtures.ts │ │ │ │ ├── Edit/ │ │ │ │ │ ├── Edit.styled.ts │ │ │ │ │ ├── Edit.tsx │ │ │ │ │ ├── Form.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Edit.spec.tsx │ │ │ │ ├── List/ │ │ │ │ │ ├── GlobalSchemaSelector/ │ │ │ │ │ │ ├── GlobalSchemaSelector.styled.ts │ │ │ │ │ │ ├── GlobalSchemaSelector.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── GlobalSchemaSelector.spec.tsx │ │ │ │ │ ├── List.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ ├── List.spec.tsx │ │ │ │ │ └── fixtures.ts │ │ │ │ ├── New/ │ │ │ │ │ ├── New.styled.ts │ │ │ │ │ ├── New.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── New.spec.tsx │ │ │ │ ├── Schemas.tsx │ │ │ │ └── __test__/ │ │ │ │ └── Schemas.spec.tsx │ │ │ ├── Topics/ │ │ │ │ ├── List/ │ │ │ │ │ ├── ActionsCell.tsx │ │ │ │ │ ├── BatchActionsBar.tsx │ │ │ │ │ ├── ListPage.tsx │ │ │ │ │ ├── TopicTable.tsx │ │ │ │ │ ├── TopicTitleCell.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── ListPage.spec.tsx │ │ │ │ │ └── TopicTable.spec.tsx │ │ │ │ ├── New/ │ │ │ │ │ ├── New.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── New.spec.tsx │ │ │ │ ├── Topic/ │ │ │ │ │ ├── ConsumerGroups/ │ │ │ │ │ │ ├── TopicConsumerGroups.styled.ts │ │ │ │ │ │ ├── TopicConsumerGroups.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── TopicConsumerGroups.spec.tsx │ │ │ │ │ ├── Edit/ │ │ │ │ │ │ ├── DangerZone/ │ │ │ │ │ │ │ ├── DangerZone.styled.tsx │ │ │ │ │ │ │ ├── DangerZone.tsx │ │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ │ └── DangerZone.spec.tsx │ │ │ │ │ │ ├── Edit.tsx │ │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ │ ├── Edit.spec.tsx │ │ │ │ │ │ │ └── topicParamsTransformer.spec.ts │ │ │ │ │ │ └── topicParamsTransformer.ts │ │ │ │ │ ├── Messages/ │ │ │ │ │ │ ├── Filters/ │ │ │ │ │ │ │ ├── AddEditFilterContainer.tsx │ │ │ │ │ │ │ ├── AddFilter.tsx │ │ │ │ │ │ │ ├── EditFilter.tsx │ │ │ │ │ │ │ ├── FilterModal.tsx │ │ │ │ │ │ │ ├── Filters.styled.ts │ │ │ │ │ │ │ ├── Filters.tsx │ │ │ │ │ │ │ ├── FiltersContainer.ts │ │ │ │ │ │ │ ├── InfoModal.tsx │ │ │ │ │ │ │ ├── SavedFilters.tsx │ │ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ │ │ ├── AddEditFilterContainer.spec.tsx │ │ │ │ │ │ │ │ ├── AddFilter.spec.tsx │ │ │ │ │ │ │ │ ├── EditFilter.spec.tsx │ │ │ │ │ │ │ │ ├── FilterModal.spec.tsx │ │ │ │ │ │ │ │ ├── Filters.spec.tsx │ │ │ │ │ │ │ │ ├── Filters.styled.spec.tsx │ │ │ │ │ │ │ │ ├── InfoModal.spec.tsx │ │ │ │ │ │ │ │ └── SavedFilters.spec.tsx │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── Message.tsx │ │ │ │ │ │ ├── MessageContent/ │ │ │ │ │ │ │ ├── MessageContent.styled.ts │ │ │ │ │ │ │ ├── MessageContent.tsx │ │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ │ └── MessageContent.spec.tsx │ │ │ │ │ │ ├── Messages.styled.ts │ │ │ │ │ │ ├── Messages.tsx │ │ │ │ │ │ ├── MessagesTable.tsx │ │ │ │ │ │ ├── PreviewModal.styled.ts │ │ │ │ │ │ ├── PreviewModal.tsx │ │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ │ ├── FiltersContainer.spec.tsx │ │ │ │ │ │ │ ├── Message.spec.tsx │ │ │ │ │ │ │ ├── Messages.spec.tsx │ │ │ │ │ │ │ ├── MessagesTable.spec.tsx │ │ │ │ │ │ │ ├── PreviewModal.spec.tsx │ │ │ │ │ │ │ └── utils.spec.ts │ │ │ │ │ │ └── getDefaultSerdeName.ts │ │ │ │ │ ├── Overview/ │ │ │ │ │ │ ├── ActionsCell.tsx │ │ │ │ │ │ ├── Overview.styled.ts │ │ │ │ │ │ ├── Overview.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── Overview.spec.tsx │ │ │ │ │ ├── SendMessage/ │ │ │ │ │ │ ├── SendMessage.styled.tsx │ │ │ │ │ │ ├── SendMessage.tsx │ │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ │ ├── SendMessage.spec.tsx │ │ │ │ │ │ │ └── utils.spec.ts │ │ │ │ │ │ └── utils.ts │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ ├── Settings.styled.ts │ │ │ │ │ │ ├── Settings.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ └── Settings.spec.tsx │ │ │ │ │ ├── Statistics/ │ │ │ │ │ │ ├── Indicators/ │ │ │ │ │ │ │ ├── SizeStats.tsx │ │ │ │ │ │ │ └── Total.tsx │ │ │ │ │ │ ├── Metrics.tsx │ │ │ │ │ │ ├── PartitionInfoRow.tsx │ │ │ │ │ │ ├── PartitionTable.tsx │ │ │ │ │ │ ├── Statistics.styles.ts │ │ │ │ │ │ ├── Statistics.tsx │ │ │ │ │ │ └── __test__/ │ │ │ │ │ │ ├── Metrics.spec.tsx │ │ │ │ │ │ └── Statistics.spec.tsx │ │ │ │ │ ├── Topic.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── Topic.spec.tsx │ │ │ │ ├── Topics.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── Topics.spec.tsx │ │ │ │ └── shared/ │ │ │ │ └── Form/ │ │ │ │ ├── CustomParams/ │ │ │ │ │ ├── CustomParamField.tsx │ │ │ │ │ ├── CustomParams.styled.ts │ │ │ │ │ ├── CustomParams.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ ├── CustomParamField.spec.tsx │ │ │ │ │ ├── CustomParams.spec.tsx │ │ │ │ │ └── fixtures.ts │ │ │ │ ├── TimeToRetain.tsx │ │ │ │ ├── TimeToRetainBtn.tsx │ │ │ │ ├── TimeToRetainBtns.tsx │ │ │ │ ├── TopicForm.styled.ts │ │ │ │ ├── TopicForm.tsx │ │ │ │ └── __tests__/ │ │ │ │ ├── TimeToRetainBtn.spec.tsx │ │ │ │ ├── TimeToRetainBtns.spec.tsx │ │ │ │ ├── TopicForm.spec.tsx │ │ │ │ └── TopicForm.styled.spec.tsx │ │ │ ├── Version/ │ │ │ │ ├── Version.styled.ts │ │ │ │ ├── Version.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── Version.spec.tsx │ │ │ │ │ └── compareVersions.spec.ts │ │ │ │ └── compareVersions.ts │ │ │ ├── __tests__/ │ │ │ │ └── App.spec.tsx │ │ │ ├── common/ │ │ │ │ ├── ActionComponent/ │ │ │ │ │ ├── ActionButton/ │ │ │ │ │ │ ├── ActionButton.tsx │ │ │ │ │ │ ├── ActionCanButton/ │ │ │ │ │ │ │ ├── ActionCanButton.tsx │ │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ │ └── ActionCanButton.spec.tsx │ │ │ │ │ │ ├── ActionCreateButton/ │ │ │ │ │ │ │ ├── ActionCreateButton.tsx │ │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ │ └── ActionCreateButton.spec.tsx │ │ │ │ │ │ ├── ActionPermissionButton/ │ │ │ │ │ │ │ ├── ActionPermissionButton.tsx │ │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ │ └── ActionPermissionButton.spec.tsx │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── ActionButton.spec.tsx │ │ │ │ │ ├── ActionComponent.styled.ts │ │ │ │ │ ├── ActionComponent.ts │ │ │ │ │ ├── ActionDropDownItem/ │ │ │ │ │ │ └── ActionDropdownItem.tsx │ │ │ │ │ ├── ActionNavLink/ │ │ │ │ │ │ ├── ActionNavLink.tsx │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── ActionNavLink.spec.tsx │ │ │ │ │ ├── ActionSelect/ │ │ │ │ │ │ ├── ActionSelect.tsx │ │ │ │ │ │ └── __tests__/ │ │ │ │ │ │ └── ActionSelect.spec.tsx │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── fixtures.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── Alert/ │ │ │ │ │ ├── Alert.styled.ts │ │ │ │ │ ├── Alert.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Alert.spec.tsx │ │ │ │ ├── Button/ │ │ │ │ │ ├── Button.styled.ts │ │ │ │ │ ├── Button.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Button.spec.tsx │ │ │ │ ├── BytesFormatted/ │ │ │ │ │ ├── BytesFormatted.styled.ts │ │ │ │ │ ├── BytesFormatted.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── BytesFormatted.spec.tsx │ │ │ │ ├── Checkbox/ │ │ │ │ │ └── Checkbox.tsx │ │ │ │ ├── ConfirmationModal/ │ │ │ │ │ ├── ConfirmationModal.styled.tsx │ │ │ │ │ └── ConfirmationModal.tsx │ │ │ │ ├── ControlPanel/ │ │ │ │ │ └── ControlPanel.styled.ts │ │ │ │ ├── DiffViewer/ │ │ │ │ │ ├── DiffViewer.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── DiffViewer.spec.tsx │ │ │ │ ├── Dropdown/ │ │ │ │ │ ├── Dropdown.styled.ts │ │ │ │ │ ├── Dropdown.tsx │ │ │ │ │ ├── DropdownItem.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Editor/ │ │ │ │ │ └── Editor.tsx │ │ │ │ ├── EditorViewer/ │ │ │ │ │ ├── EditorViewer.styled.ts │ │ │ │ │ ├── EditorViewer.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── EditorViewer.spec.tsx │ │ │ │ ├── Ellipsis/ │ │ │ │ │ ├── Ellipsis.styled.ts │ │ │ │ │ └── Ellipsis.tsx │ │ │ │ ├── Form/ │ │ │ │ │ └── Form.styled.ts │ │ │ │ ├── Icons/ │ │ │ │ │ ├── ArrowDownIcon.tsx │ │ │ │ │ ├── AutoIcon.tsx │ │ │ │ │ ├── CancelIcon.tsx │ │ │ │ │ ├── CheckMarkRoundIcon.tsx │ │ │ │ │ ├── CheckmarkIcon.tsx │ │ │ │ │ ├── ChevronDownIcon.tsx │ │ │ │ │ ├── ClockIcon.tsx │ │ │ │ │ ├── CloseCircleIcon.tsx │ │ │ │ │ ├── CloseIcon.tsx │ │ │ │ │ ├── DeleteIcon.tsx │ │ │ │ │ ├── DiscordIcon.tsx │ │ │ │ │ ├── DropdownArrowIcon.tsx │ │ │ │ │ ├── EditIcon.tsx │ │ │ │ │ ├── FileIcon.tsx │ │ │ │ │ ├── GitIcon.tsx │ │ │ │ │ ├── IconButtonWrapper.ts │ │ │ │ │ ├── InfoIcon.tsx │ │ │ │ │ ├── MessageToggleIcon.styled.ts │ │ │ │ │ ├── MessageToggleIcon.tsx │ │ │ │ │ ├── MoonIcon.tsx │ │ │ │ │ ├── PlusIcon.tsx │ │ │ │ │ ├── QuestionIcon.tsx │ │ │ │ │ ├── SavedIcon.tsx │ │ │ │ │ ├── SearchIcon.tsx │ │ │ │ │ ├── SpinnerIcon.tsx │ │ │ │ │ ├── StarIcon.tsx │ │ │ │ │ ├── SunIcon.tsx │ │ │ │ │ ├── UserIcon.tsx │ │ │ │ │ ├── VerticalElipsisIcon.tsx │ │ │ │ │ ├── WarningIcon.tsx │ │ │ │ │ └── WarningRedIcon.tsx │ │ │ │ ├── IndeterminateCheckbox/ │ │ │ │ │ └── IndeterminateCheckbox.tsx │ │ │ │ ├── Input/ │ │ │ │ │ ├── Input.styled.ts │ │ │ │ │ ├── Input.tsx │ │ │ │ │ ├── InputLabel.styled.ts │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Input.spec.tsx │ │ │ │ ├── Logo/ │ │ │ │ │ └── Logo.tsx │ │ │ │ ├── Metrics/ │ │ │ │ │ ├── Indicator.tsx │ │ │ │ │ ├── Metrics.styled.tsx │ │ │ │ │ ├── Section.tsx │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── Indicator.spec.tsx │ │ │ │ │ │ └── Section.spec.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── MultiSelect/ │ │ │ │ │ └── MultiSelect.styled.ts │ │ │ │ ├── Navigation/ │ │ │ │ │ └── Navbar.styled.ts │ │ │ │ ├── NewTable/ │ │ │ │ │ ├── ColoredCell.tsx │ │ │ │ │ ├── ExpanderCell.tsx │ │ │ │ │ ├── LinkCell.tsx │ │ │ │ │ ├── SelectRowCell.tsx │ │ │ │ │ ├── SelectRowHeader.tsx │ │ │ │ │ ├── SizeCell.tsx │ │ │ │ │ ├── Table.styled.ts │ │ │ │ │ ├── Table.tsx │ │ │ │ │ ├── TagCell.tsx │ │ │ │ │ ├── TimestampCell.tsx │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ └── Table.spec.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ └── updateSortingState.spec.ts │ │ │ │ │ ├── updatePaginationState.ts │ │ │ │ │ └── updateSortingState.ts │ │ │ │ ├── PageHeading/ │ │ │ │ │ ├── PageHeading.styled.ts │ │ │ │ │ └── PageHeading.tsx │ │ │ │ ├── PageLoader/ │ │ │ │ │ ├── PageLoader.styled.ts │ │ │ │ │ ├── PageLoader.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── PageLoader.spec.tsx │ │ │ │ ├── ProgressBar/ │ │ │ │ │ ├── ProgressBar.styled.ts │ │ │ │ │ ├── ProgressBar.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── ProgressBar.spec.tsx │ │ │ │ ├── PropertiesList/ │ │ │ │ │ └── PropertiesList.styled.tsx │ │ │ │ ├── SQLEditor/ │ │ │ │ │ ├── SQLEditor.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── SQLEditor.spec.tsx │ │ │ │ ├── Search/ │ │ │ │ │ ├── Search.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Search.spec.tsx │ │ │ │ ├── Select/ │ │ │ │ │ ├── ControlledSelect.tsx │ │ │ │ │ ├── LiveIcon.styled.tsx │ │ │ │ │ ├── Select.styled.ts │ │ │ │ │ ├── Select.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Select.spec.tsx │ │ │ │ ├── SlidingSidebar/ │ │ │ │ │ ├── SlidingSidebar.styled.ts │ │ │ │ │ ├── SlidingSidebar.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Spinner/ │ │ │ │ │ ├── Spinner.styled.ts │ │ │ │ │ ├── Spinner.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── SuspenseQueryComponent/ │ │ │ │ │ ├── SuspenseQueryComponent.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── SuspenseQueryComponent.spec.tsx │ │ │ │ ├── Switch/ │ │ │ │ │ ├── Switch.styled.ts │ │ │ │ │ └── Switch.tsx │ │ │ │ ├── Tag/ │ │ │ │ │ ├── Tag.styled.tsx │ │ │ │ │ └── getTagColor.ts │ │ │ │ ├── Textbox/ │ │ │ │ │ └── Textarea.styled.ts │ │ │ │ ├── Tooltip/ │ │ │ │ │ ├── Tooltip.styled.ts │ │ │ │ │ ├── Tooltip.tsx │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Tooltip.spec.tsx │ │ │ │ ├── heading/ │ │ │ │ │ └── Heading.styled.tsx │ │ │ │ └── table/ │ │ │ │ ├── Table/ │ │ │ │ │ ├── Table.styled.ts │ │ │ │ │ └── TableKeyLink.styled.ts │ │ │ │ ├── TableHeaderCell/ │ │ │ │ │ ├── TableHeaderCell.styled.ts │ │ │ │ │ ├── TableHeaderCell.tsx │ │ │ │ │ └── __test__/ │ │ │ │ │ └── TableHeaderCell.styled.spec.tsx │ │ │ │ ├── TableTitle/ │ │ │ │ │ └── TableTitle.styled.tsx │ │ │ │ └── __tests__/ │ │ │ │ └── TableHeaderCell.spec.tsx │ │ │ ├── contexts/ │ │ │ │ ├── ClusterContext.ts │ │ │ │ ├── ConfirmContext.tsx │ │ │ │ ├── GlobalSettingsContext.tsx │ │ │ │ ├── ThemeModeContext.tsx │ │ │ │ ├── TopicMessagesContext.ts │ │ │ │ └── UserInfoRolesAccessContext.tsx │ │ │ └── globalCss.ts │ │ ├── index.tsx │ │ ├── lib/ │ │ │ ├── __test__/ │ │ │ │ ├── dateTimeHelpers.spec.ts │ │ │ │ ├── paths.spec.ts │ │ │ │ ├── permission.spec.ts │ │ │ │ └── yupExtended.spec.ts │ │ │ ├── api.ts │ │ │ ├── constants.ts │ │ │ ├── dateTimeHelpers.ts │ │ │ ├── errorHandling.tsx │ │ │ ├── fixtures/ │ │ │ │ ├── acls.ts │ │ │ │ ├── brokers.ts │ │ │ │ ├── clusters.ts │ │ │ │ ├── consumerGroups.ts │ │ │ │ ├── kafkaConnect.ts │ │ │ │ ├── latestVersion.ts │ │ │ │ ├── topicMessages.ts │ │ │ │ └── topics.ts │ │ │ ├── hooks/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── dateTimeHelpers.spec.ts │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ ├── useBoolean.spec.ts │ │ │ │ │ ├── useCreatePermission.spec.tsx │ │ │ │ │ ├── useDataSaver.spec.tsx │ │ │ │ │ └── usePermission.spec.tsx │ │ │ │ ├── api/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── brokers.spec.ts │ │ │ │ │ │ ├── clusters.spec.ts │ │ │ │ │ │ ├── kafkaConnect.spec.ts │ │ │ │ │ │ ├── latestVersion.spec.ts │ │ │ │ │ │ ├── topicMessages.spec.ts │ │ │ │ │ │ └── topics.spec.ts │ │ │ │ │ ├── acl.ts │ │ │ │ │ ├── appConfig.ts │ │ │ │ │ ├── brokers.ts │ │ │ │ │ ├── clusters.ts │ │ │ │ │ ├── consumers.ts │ │ │ │ │ ├── kafkaConnect.ts │ │ │ │ │ ├── ksqlDb.tsx │ │ │ │ │ ├── latestVersion.ts │ │ │ │ │ ├── roles.ts │ │ │ │ │ ├── topicMessages.tsx │ │ │ │ │ └── topics.ts │ │ │ │ ├── redux.ts │ │ │ │ ├── useActionTooltip.ts │ │ │ │ ├── useAppParams.tsx │ │ │ │ ├── useBoolean.ts │ │ │ │ ├── useClickOutside.ts │ │ │ │ ├── useConfirm.ts │ │ │ │ ├── useCreatePermisson.ts │ │ │ │ ├── useDataSaver.ts │ │ │ │ ├── useLocalStorage.ts │ │ │ │ ├── useMessageFiltersStore.ts │ │ │ │ ├── usePermission.ts │ │ │ │ └── useUserInfo.ts │ │ │ ├── paths.ts │ │ │ ├── permissions.ts │ │ │ ├── testHelpers.tsx │ │ │ └── yupExtended.ts │ │ ├── react-app-env.d.ts │ │ ├── redux/ │ │ │ ├── interfaces/ │ │ │ │ ├── cluster.ts │ │ │ │ ├── consumerGroup.ts │ │ │ │ ├── index.ts │ │ │ │ ├── loader.ts │ │ │ │ ├── schema.ts │ │ │ │ └── topic.ts │ │ │ ├── reducers/ │ │ │ │ ├── index.ts │ │ │ │ ├── loader/ │ │ │ │ │ ├── loaderSlice.ts │ │ │ │ │ └── selectors.ts │ │ │ │ ├── schemas/ │ │ │ │ │ ├── __test__/ │ │ │ │ │ │ └── fixtures.ts │ │ │ │ │ └── schemasSlice.ts │ │ │ │ └── topicMessages/ │ │ │ │ ├── __test__/ │ │ │ │ │ ├── fixtures.ts │ │ │ │ │ ├── reducer.spec.ts │ │ │ │ │ └── selectors.spec.ts │ │ │ │ ├── selectors.ts │ │ │ │ └── topicMessagesSlice.ts │ │ │ └── store/ │ │ │ └── index.ts │ │ ├── setupTests.ts │ │ ├── styled.d.ts │ │ ├── theme/ │ │ │ ├── index.scss │ │ │ ├── minireset.css │ │ │ └── theme.ts │ │ └── widgets/ │ │ └── ClusterConfigForm/ │ │ ├── ClusterConfigForm.styled.ts │ │ ├── Sections/ │ │ │ ├── Authentication/ │ │ │ │ ├── Authentication.tsx │ │ │ │ └── AuthenticationMethods.tsx │ │ │ ├── CustomAuthentication.tsx │ │ │ ├── KSQL.tsx │ │ │ ├── KafkaCluster.tsx │ │ │ ├── KafkaConnect.tsx │ │ │ ├── Metrics.tsx │ │ │ └── SchemaRegistry.tsx │ │ ├── common/ │ │ │ ├── Credentials.tsx │ │ │ ├── Fileupload.tsx │ │ │ ├── SSLForm.tsx │ │ │ └── SectionHeader.tsx │ │ ├── index.tsx │ │ ├── schema.ts │ │ ├── types.ts │ │ └── utils/ │ │ ├── convertFormKeyToPropsKey.ts │ │ ├── convertPropsKeyToFormKey.ts │ │ ├── getInitialFormData.ts │ │ ├── getIsValidConfig.ts │ │ ├── getJaasConfig.ts │ │ └── transformFormDataToPayload.ts │ ├── tsconfig.dev.json │ ├── tsconfig.json │ └── vite.config.ts ├── kafka-ui-serde-api/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── provectus/ │ └── kafka/ │ └── ui/ │ └── serde/ │ └── api/ │ ├── DeserializeResult.java │ ├── PropertyResolver.java │ ├── RecordHeader.java │ ├── RecordHeaders.java │ ├── SchemaDescription.java │ └── Serde.java ├── mvnw ├── mvnw.cmd ├── pom.xml └── settings.xml
Showing preview only (290K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3235 symbols across 561 files)
FILE: documentation/compose/postgres/data.sql
type activities (line 4) | CREATE TABLE activities
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/KafkaUiApplication.java
class KafkaUiApplication (line 11) | @SpringBootApplication(exclude = LdapAutoConfiguration.class)
method main (line 16) | public static void main(String[] args) {
method startApplication (line 20) | public static ConfigurableApplicationContext startApplication(String[]...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/client/RetryingKafkaConnectClient.java
class RetryingKafkaConnectClient (line 33) | @Slf4j
method RetryingKafkaConnectClient (line 38) | public RetryingKafkaConnectClient(ConnectCluster config,
method conflictCodeRetry (line 44) | private static Retry conflictCodeRetry() {
method withRetryOnConflict (line 53) | private static <T> Mono<T> withRetryOnConflict(Mono<T> publisher) {
method withRetryOnConflict (line 57) | private static <T> Flux<T> withRetryOnConflict(Flux<T> publisher) {
method withBadRequestErrorHandling (line 61) | private static <T> Mono<T> withBadRequestErrorHandling(Mono<T> publish...
method createConnector (line 69) | @Override
method setConnectorConfig (line 76) | @Override
method createConnectorWithHttpInfo (line 84) | @Override
method deleteConnector (line 90) | @Override
method deleteConnectorWithHttpInfo (line 95) | @Override
method getConnector (line 102) | @Override
method getConnectorWithHttpInfo (line 107) | @Override
method getConnectorConfig (line 113) | @Override
method getConnectorConfigWithHttpInfo (line 118) | @Override
method getConnectorPlugins (line 124) | @Override
method getConnectorPluginsWithHttpInfo (line 129) | @Override
method getConnectorStatus (line 135) | @Override
method getConnectorStatusWithHttpInfo (line 140) | @Override
method getConnectorTaskStatus (line 146) | @Override
method getConnectorTaskStatusWithHttpInfo (line 152) | @Override
method getConnectorTasks (line 158) | @Override
method getConnectorTasksWithHttpInfo (line 163) | @Override
method getConnectorTopics (line 169) | @Override
method getConnectorTopicsWithHttpInfo (line 174) | @Override
method getConnectors (line 180) | @Override
method getConnectorsWithHttpInfo (line 185) | @Override
method pauseConnector (line 190) | @Override
method pauseConnectorWithHttpInfo (line 195) | @Override
method restartConnector (line 200) | @Override
method restartConnectorWithHttpInfo (line 206) | @Override
method restartConnectorTask (line 212) | @Override
method restartConnectorTaskWithHttpInfo (line 217) | @Override
method resumeConnector (line 223) | @Override
method resumeConnectorWithHttpInfo (line 228) | @Override
method setConnectorConfigWithHttpInfo (line 234) | @Override
method validateConnectorPluginConfig (line 241) | @Override
method validateConnectorPluginConfigWithHttpInfo (line 248) | @Override
class RetryingApiClient (line 254) | private static class RetryingApiClient extends ApiClient {
method RetryingApiClient (line 256) | public RetryingApiClient(ConnectCluster config,
method buildWebClient (line 265) | public static WebClient buildWebClient(DataSize maxBuffSize,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ClustersProperties.java
class ClustersProperties (line 21) | @Configuration
class Cluster (line 34) | @Data
class PollingProperties (line 57) | @Data
class MetricsConfigData (line 64) | @Data
class ConnectCluster (line 76) | @Data
class SchemaRegistryAuth (line 90) | @Data
class TruststoreConfig (line 97) | @Data
class SerdeConfig (line 104) | @Data
class KsqldbServerAuth (line 114) | @Data
class KeystoreConfig (line 121) | @Data
class Masking (line 130) | @Data
type Type (line 140) | public enum Type {
class AuditProperties (line 145) | @Data
type LogLevel (line 156) | public enum LogLevel {
method validateAndSetDefaults (line 162) | @PostConstruct
method setMetricsDefaults (line 171) | private void setMetricsDefaults() {
method flattenClusterProperties (line 179) | private void flattenClusterProperties() {
method flattenClusterProperties (line 185) | private Map<String, Object> flattenClusterProperties(@Nullable String ...
method validateClusterNames (line 201) | private void validateClusterNames() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/Config.java
class Config (line 19) | @Configuration
method httpHandler (line 27) | @Bean
method exporter (line 43) | @Bean
method jsonNullableModule (line 51) | @Bean
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CorsGlobalConfiguration.java
class CorsGlobalConfiguration (line 15) | @Configuration
method corsFilter (line 18) | @Bean
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CustomWebFilter.java
class CustomWebFilter (line 9) | @Component
method filter (line 12) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ReadOnlyModeFilter.java
class ReadOnlyModeFilter (line 19) | @Order
method filter (line 28) | @NotNull
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/WebclientProperties.java
class WebclientProperties (line 10) | @Configuration
method validate (line 17) | @PostConstruct
method validateAndSetDefaultBufferSize (line 22) | private void validateAndSetDefaultBufferSize() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/AbstractAuthSecurityConfig.java
class AbstractAuthSecurityConfig (line 3) | abstract class AbstractAuthSecurityConfig {
method AbstractAuthSecurityConfig (line 5) | protected AbstractAuthSecurityConfig() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/BasicAuthSecurityConfig.java
class BasicAuthSecurityConfig (line 17) | @Configuration
method configure (line 26) | @Bean
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/DisabledAuthSecurityConfig.java
class DisabledAuthSecurityConfig (line 14) | @Configuration
method configure (line 20) | @Bean
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapProperties.java
class LdapProperties (line 7) | @ConfigurationProperties("spring.ldap")
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapSecurityConfig.java
class LdapSecurityConfig (line 43) | @Configuration
method authenticationManager (line 54) | @Bean
method contextSource (line 90) | @Bean
method ldapAuthoritiesExtractor (line 101) | @Bean
method configureLdap (line 123) | @Bean
class UserDetailsMapper (line 142) | private static class UserDetailsMapper extends LdapUserDetailsMapper {
method mapUserFromContext (line 143) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthProperties.java
class OAuthProperties (line 12) | @ConfigurationProperties("auth.oauth2")
method init (line 17) | @PostConstruct
method validateProvider (line 31) | private void validateProvider(final OAuth2Provider provider) {
class OAuth2Provider (line 36) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthPropertiesConverter.java
class OAuthPropertiesConverter (line 15) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
method convertProperties (line 22) | public static OAuth2ClientProperties convertProperties(final OAuthProp...
method applyCustomTransformations (line 50) | private static void applyCustomTransformations(OAuth2Provider provider) {
method applyGoogleTransformations (line 54) | private static void applyGoogleTransformations(OAuth2Provider provider) {
method isGoogle (line 75) | private static boolean isGoogle(OAuth2Provider provider) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthSecurityConfig.java
class OAuthSecurityConfig (line 38) | @Configuration
method configure (line 49) | @Bean
method customOidcUserService (line 65) | @Bean
method customOauth2UserService (line 81) | @Bean
method clientRegistrationRepository (line 97) | @Bean
method defaultOidcLogoutHandler (line 108) | @Bean
method getExtractor (line 113) | @Nullable
method getProviderByProviderId (line 124) | private OAuthProperties.OAuth2Provider getProviderByProviderId(final S...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacLdapUser.java
class RbacLdapUser (line 8) | public class RbacLdapUser implements UserDetails, RbacUser {
method RbacLdapUser (line 12) | public RbacLdapUser(UserDetails userDetails) {
method name (line 16) | @Override
method groups (line 21) | @Override
method getAuthorities (line 26) | @Override
method getPassword (line 31) | @Override
method getUsername (line 36) | @Override
method isAccountNonExpired (line 41) | @Override
method isAccountNonLocked (line 46) | @Override
method isCredentialsNonExpired (line 51) | @Override
method isEnabled (line 56) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOAuth2User.java
method getAttributes (line 10) | @Override
method getAuthorities (line 15) | @Override
method getName (line 20) | @Override
method name (line 25) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOidcUser.java
method getClaims (line 12) | @Override
method getUserInfo (line 17) | @Override
method getIdToken (line 22) | @Override
method getAttributes (line 27) | @Override
method getAuthorities (line 32) | @Override
method getName (line 37) | @Override
method name (line 42) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacUser.java
type RbacUser (line 5) | public interface RbacUser {
method name (line 6) | String name();
method groups (line 8) | Collection<String> groups();
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RoleBasedAccessControlProperties.java
class RoleBasedAccessControlProperties (line 9) | @ConfigurationProperties("rbac")
method init (line 14) | @PostConstruct
method getRoles (line 19) | public List<Role> getRoles() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/ActiveDirectoryCondition.java
class ActiveDirectoryCondition (line 6) | public class ActiveDirectoryCondition extends AllNestedConditions {
method ActiveDirectoryCondition (line 8) | public ActiveDirectoryCondition() {
class OnAuthType (line 12) | @ConditionalOnProperty(value = "auth.type", havingValue = "LDAP")
class OnActiveDirectory (line 17) | @ConditionalOnProperty(value = "${oauth2.ldap.activeDirectory}:false",...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/CognitoCondition.java
class CognitoCondition (line 9) | public class CognitoCondition extends AbstractProviderCondition implemen...
method matches (line 10) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/CognitoLogoutSuccessHandler.java
class CognitoLogoutSuccessHandler (line 21) | @Component
method isApplicable (line 25) | @Override
method handle (line 30) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/LogoutSuccessHandler.java
type LogoutSuccessHandler (line 8) | public interface LogoutSuccessHandler {
method isApplicable (line 10) | boolean isApplicable(final String provider);
method handle (line 12) | Mono<Void> handle(final WebFilterExchange exchange,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/OAuthLogoutSuccessHandler.java
class OAuthLogoutSuccessHandler (line 15) | @Component
method OAuthLogoutSuccessHandler (line 22) | public OAuthLogoutSuccessHandler(final OAuthProperties properties,
method onLogoutSuccess (line 30) | @Override
method getLogoutHandler (line 41) | private Optional<LogoutSuccessHandler> getLogoutHandler(final String p...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AbstractController.java
class AbstractController (line 13) | public abstract class AbstractController {
method getCluster (line 19) | protected KafkaCluster getCluster(String name) {
method validateAccess (line 25) | protected Mono<Void> validateAccess(AccessContext context) {
method audit (line 29) | protected void audit(AccessContext acxt, Signal<?> sig) {
method setClustersStorage (line 33) | @Autowired
method setAccessControlService (line 38) | @Autowired
method setAuditService (line 43) | @Autowired
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AccessController.java
class AccessController (line 26) | @RestController
method getUserAuthInfo (line 33) | public Mono<ResponseEntity<AuthenticationInfoDTO>> getUserAuthInfo(Ser...
method mapPermissions (line 59) | private List<UserPermissionDTO> mapPermissions(List<Permission> permis...
method mapAction (line 78) | @Nullable
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AclsController.java
class AclsController (line 25) | @RestController
method createAcl (line 31) | @Override
method deleteAcl (line 48) | @Override
method listAcls (line 65) | @Override
method getAclAsCsv (line 95) | @Override
method syncAclsCsv (line 111) | @Override
method createConsumerAcl (line 126) | @Override
method createProducerAcl (line 143) | @Override
method createStreamAppAcl (line 160) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ApplicationConfigController.java
class ApplicationConfigController (line 37) | @Slf4j
type PropertiesMapper (line 44) | @Mapper
method fromDto (line 47) | PropertiesStructure fromDto(ApplicationConfigPropertiesDTO dto);
method toDto (line 49) | ApplicationConfigPropertiesDTO toDto(PropertiesStructure propertiesS...
method getApplicationInfo (line 57) | @Override
method getCurrentConfig (line 62) | @Override
method restartWithConfig (line 76) | @Override
method uploadConfigRelatedFile (line 94) | @Override
method validateConfig (line 110) | @Override
method validateClustersConfig (line 129) | private Mono<Map<String, ClusterConfigValidationDTO>> validateClusters...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AuthController.java
class AuthController (line 13) | @RestController
method getAuth (line 18) | @GetMapping(value = "/auth", produces = {"text/html"})
method createPage (line 27) | private byte[] createPage(ServerWebExchange exchange, String csrfToken...
method formLogin (line 55) | private String formLogin(
method csrfToken (line 80) | private static String csrfToken(CsrfToken token) {
method createError (line 88) | private static String createError(boolean isError) {
method createLogoutSuccess (line 94) | private static String createLogoutSuccess(boolean isLogoutSuccess) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/BrokersController.java
class BrokersController (line 25) | @RestController
method getBrokers (line 34) | @Override
method getBrokersMetrics (line 48) | @Override
method getAllBrokersLogdirs (line 67) | @Override
method getBrokerConfig (line 86) | @Override
method updateBrokerTopicPartitionLogDir (line 104) | @Override
method updateBrokerConfigByName (line 123) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ClustersController.java
class ClustersController (line 17) | @RestController
method getClusters (line 23) | @Override
method getClusterMetrics (line 31) | @Override
method getClusterStats (line 48) | @Override
method updateClusterInfo (line 65) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ConsumerGroupsController.java
class ConsumerGroupsController (line 35) | @RestController
method deleteConsumerGroup (line 46) | @Override
method getConsumerGroup (line 63) | @Override
method getTopicConsumerGroups (line 81) | @Override
method getConsumerGroupsPage (line 107) | @Override
method resetConsumerGroupOffsets (line 137) | @Override
method convertPage (line 195) | private ConsumerGroupsPageResponseDTO convertPage(ConsumerGroupService...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KafkaConnectController.java
class KafkaConnectController (line 33) | @RestController
method getConnects (line 43) | @Override
method getConnectors (line 53) | @Override
method createConnector (line 69) | @Override
method getConnector (line 87) | @Override
method deleteConnector (line 106) | @Override
method getAllConnectors (line 126) | @Override
method getConnectorConfig (line 153) | @Override
method setConnectorConfig (line 173) | @Override
method updateConnectorState (line 194) | @Override
method getConnectorTasks (line 221) | @Override
method restartConnectorTask (line 241) | @Override
method getConnectorPlugins (line 261) | @Override
method validateConnectorPluginConfig (line 279) | @Override
method getConnectorsComparator (line 289) | private Comparator<FullConnectorInfoDTO> getConnectorsComparator(Conne...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KsqlController.java
class KsqlController (line 24) | @RestController
method executeKsql (line 31) | @Override
method openKsqlResponsePipe (line 55) | @Override
method listStreams (line 76) | @Override
method listTables (line 90) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/MessagesController.java
class MessagesController (line 45) | @RestController
method deleteTopicMessages (line 54) | @Override
method executeSmartFilterTest (line 74) | @Override
method getTopicMessages (line 82) | @Override
method sendTopicMessages (line 131) | @Override
method parseSeekTo (line 154) | @Nullable
method getSerdes (line 178) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/SchemasController.java
class SchemasController (line 28) | @RestController
method getCluster (line 39) | @Override
method checkSchemaCompatibility (line 48) | @Override
method createNewSchema (line 71) | @Override
method deleteLatestSchema (line 93) | @Override
method deleteSchema (line 110) | @Override
method deleteSchemaByVersion (line 127) | @Override
method getAllVersionsBySubject (line 144) | @Override
method getGlobalSchemaCompatibilityLevel (line 163) | @Override
method getLatestSchema (line 172) | @Override
method getSchemaByVersion (line 190) | @Override
method getSchemas (line 209) | @Override
method updateGlobalSchemaCompatibilityLevel (line 245) | @Override
method updateSchemaCompatibilityLevel (line 267) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/StaticController.java
class StaticController (line 16) | @RestController
method getIndex (line 29) | @GetMapping(value = "/index.html", produces = {"text/html"})
method getManifest (line 34) | @GetMapping(value = "/manifest.json", produces = {"application/json"})
method getRenderedFile (line 39) | public String getRenderedFile(ServerWebExchange exchange, AtomicRefere...
method buildFile (line 53) | @SneakyThrows
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/TopicsController.java
class TopicsController (line 45) | @RestController
method createTopic (line 56) | @Override
method recreateTopic (line 76) | @Override
method cloneTopic (line 93) | @Override
method deleteTopic (line 112) | @Override
method getTopicConfigs (line 131) | @Override
method getTopicDetails (line 153) | @Override
method getTopics (line 171) | @Override
method updateTopic (line 218) | @Override
method increaseTopicPartitions (line 238) | @Override
method changeReplicationFactor (line 257) | @Override
method analyzeTopic (line 278) | @Override
method cancelTopicAnalysis (line 295) | @Override
method getTopicAnalysis (line 312) | @Override
method getActiveProducerStates (line 331) | @Override
method getComparatorForTopic (line 359) | private Comparator<InternalTopic> getComparatorForTopic(
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/AbstractEmitter.java
class AbstractEmitter (line 8) | abstract class AbstractEmitter implements java.util.function.Consumer<Fl...
method AbstractEmitter (line 13) | protected AbstractEmitter(MessagesProcessing messagesProcessing, Polli...
method poll (line 18) | protected PolledRecords poll(FluxSink<TopicMessageEventDTO> sink, Enha...
method sendLimitReached (line 24) | protected boolean sendLimitReached() {
method send (line 28) | protected void send(FluxSink<TopicMessageEventDTO> sink, Iterable<Cons...
method sendPhase (line 32) | protected void sendPhase(FluxSink<TopicMessageEventDTO> sink, String n...
method sendConsuming (line 36) | protected void sendConsuming(FluxSink<TopicMessageEventDTO> sink, Poll...
method sendFinishStatsAndCompleteSink (line 40) | protected void sendFinishStatsAndCompleteSink(FluxSink<TopicMessageEve...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/BackwardEmitter.java
class BackwardEmitter (line 14) | public class BackwardEmitter extends RangePollingEmitter {
method BackwardEmitter (line 16) | public BackwardEmitter(Supplier<EnhancedConsumer> consumerSupplier,
method nextPollingRange (line 36) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ConsumingStats.java
class ConsumingStats (line 7) | class ConsumingStats {
method sendConsumingEvt (line 14) | void sendConsumingEvt(FluxSink<TopicMessageEventDTO> sink, PolledRecor...
method incFilterApplyError (line 25) | void incFilterApplyError() {
method sendFinishEvent (line 29) | void sendFinishEvent(FluxSink<TopicMessageEventDTO> sink) {
method createConsumingStats (line 37) | private TopicMessageConsumingDTO createConsumingStats() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/EnhancedConsumer.java
class EnhancedConsumer (line 24) | public class EnhancedConsumer extends KafkaConsumer<Bytes, Bytes> {
method EnhancedConsumer (line 30) | public EnhancedConsumer(Properties properties,
method pollEnhanced (line 39) | public PolledRecords pollEnhanced(Duration dur) {
method assign (line 48) | @Override
method subscribe (line 56) | @Override
method subscribe (line 61) | @Override
method subscribe (line 66) | @Override
method subscribe (line 71) | @Override
method close (line 76) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ForwardEmitter.java
class ForwardEmitter (line 14) | public class ForwardEmitter extends RangePollingEmitter {
method ForwardEmitter (line 16) | public ForwardEmitter(Supplier<EnhancedConsumer> consumerSupplier,
method nextPollingRange (line 36) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessageFilters.java
class MessageFilters (line 17) | @Slf4j
method MessageFilters (line 22) | private MessageFilters() {
method createMsgFilter (line 25) | public static Predicate<TopicMessageDTO> createMsgFilter(String query,...
method containsStringFilter (line 36) | static Predicate<TopicMessageDTO> containsStringFilter(String string) {
method groovyScriptFilter (line 41) | static Predicate<TopicMessageDTO> groovyScriptFilter(String script) {
method parseToJsonOrReturnAsIs (line 69) | @Nullable
method getGroovyEngine (line 81) | private static synchronized GroovyScriptEngineImpl getGroovyEngine() {
method compileScript (line 90) | private static CompiledScript compileScript(GroovyScriptEngineImpl eng...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessagesProcessing.java
class MessagesProcessing (line 26) | @Slf4j
method limitReached (line 38) | boolean limitReached() {
method send (line 42) | void send(FluxSink<TopicMessageEventDTO> sink, Iterable<ConsumerRecord...
method sentConsumingInfo (line 64) | void sentConsumingInfo(FluxSink<TopicMessageEventDTO> sink, PolledReco...
method sendFinishEvent (line 70) | void sendFinishEvent(FluxSink<TopicMessageEventDTO> sink) {
method sendPhase (line 76) | void sendPhase(FluxSink<TopicMessageEventDTO> sink, String name) {
method sortForSending (line 89) | @VisibleForTesting
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/OffsetsInfo.java
class OffsetsInfo (line 14) | @Slf4j
method OffsetsInfo (line 26) | OffsetsInfo(Consumer<?, ?> consumer, String topic) {
method OffsetsInfo (line 34) | OffsetsInfo(Consumer<?, ?> consumer, Collection<TopicPartition> target...
method assignedPartitionsFullyPolled (line 48) | boolean assignedPartitionsFullyPolled() {
method summaryOffsetsRange (line 58) | long summaryOffsetsRange() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PolledRecords.java
method create (line 17) | static PolledRecords create(ConsumerRecords<Bytes, Bytes> polled, Durati...
method records (line 26) | public List<ConsumerRecord<Bytes, Bytes>> records(TopicPartition tp) {
method iterator (line 30) | @Override
method calculatePolledRecSize (line 35) | private static int calculatePolledRecSize(Iterable<ConsumerRecord<Bytes,...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingSettings.java
class PollingSettings (line 8) | public class PollingSettings {
method create (line 15) | public static PollingSettings create(ClustersProperties.Cluster cluster,
method createDefault (line 30) | public static PollingSettings createDefault() {
method PollingSettings (line 37) | private PollingSettings(Duration pollTimeout,
method getPollTimeout (line 43) | public Duration getPollTimeout() {
method getPollingThrottler (line 47) | public PollingThrottler getPollingThrottler() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingThrottler.java
class PollingThrottler (line 9) | @Slf4j
method throttlerSupplier (line 12) | public static Supplier<PollingThrottler> throttlerSupplier(ClustersPro...
method PollingThrottler (line 26) | @VisibleForTesting
method noop (line 32) | public static PollingThrottler noop() {
method throttleAfterPoll (line 37) | public boolean throttleAfterPoll(int polledBytes) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/RangePollingEmitter.java
class RangePollingEmitter (line 16) | @Slf4j
method RangePollingEmitter (line 23) | protected RangePollingEmitter(Supplier<EnhancedConsumer> consumerSuppl...
method nextPollingRange (line 38) | protected abstract TreeMap<TopicPartition, FromToOffset> nextPollingRa...
method accept (line 43) | @Override
method poll (line 71) | private List<ConsumerRecord<Bytes, Bytes>> poll(EnhancedConsumer consu...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ResultSizeLimiter.java
class ResultSizeLimiter (line 7) | public class ResultSizeLimiter implements Predicate<TopicMessageEventDTO> {
method ResultSizeLimiter (line 11) | public ResultSizeLimiter(int limit) {
method test (line 15) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/SeekOperations.java
class SeekOperations (line 17) | @RequiredArgsConstructor(access = AccessLevel.PACKAGE)
method create (line 24) | public static SeekOperations create(Consumer<?, ?> consumer, ConsumerP...
method assignAndSeekNonEmptyPartitions (line 38) | public void assignAndSeekNonEmptyPartitions() {
method getBeginOffsets (line 43) | public Map<TopicPartition, Long> getBeginOffsets() {
method getEndOffsets (line 47) | public Map<TopicPartition, Long> getEndOffsets() {
method assignedPartitionsFullyPolled (line 51) | public boolean assignedPartitionsFullyPolled() {
method summaryOffsetsRange (line 56) | public long summaryOffsetsRange() {
method offsetsProcessedFromSeek (line 61) | public long offsetsProcessedFromSeek() {
method getOffsetsForSeek (line 68) | public Map<TopicPartition, Long> getOffsetsForSeek() {
method getOffsetsForSeek (line 75) | @VisibleForTesting
method fixOffsets (line 96) | private static Map<TopicPartition, Long> fixOffsets(OffsetsInfo offset...
method offsetsForTimestamp (line 115) | private static Map<TopicPartition, Long> offsetsForTimestamp(Consumer<...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/TailingEmitter.java
class TailingEmitter (line 14) | @Slf4j
method TailingEmitter (line 20) | public TailingEmitter(Supplier<EnhancedConsumer> consumerSupplier,
method accept (line 30) | @Override
method assignAndSeek (line 51) | private void assignAndSeek(EnhancedConsumer consumer) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ClusterNotFoundException.java
class ClusterNotFoundException (line 3) | public class ClusterNotFoundException extends CustomBaseException {
method ClusterNotFoundException (line 5) | public ClusterNotFoundException() {
method ClusterNotFoundException (line 9) | public ClusterNotFoundException(String message) {
method getErrorCode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ConnectNotFoundException.java
class ConnectNotFoundException (line 3) | public class ConnectNotFoundException extends CustomBaseException {
method ConnectNotFoundException (line 5) | public ConnectNotFoundException() {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/CustomBaseException.java
class CustomBaseException (line 4) | public abstract class CustomBaseException extends RuntimeException {
method CustomBaseException (line 5) | protected CustomBaseException() {
method CustomBaseException (line 9) | protected CustomBaseException(String message) {
method CustomBaseException (line 13) | protected CustomBaseException(String message, Throwable cause) {
method CustomBaseException (line 17) | protected CustomBaseException(Throwable cause) {
method CustomBaseException (line 21) | protected CustomBaseException(String message, Throwable cause, boolean...
method getErrorCode (line 26) | public abstract ErrorCode getErrorCode();
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/DuplicateEntityException.java
class DuplicateEntityException (line 3) | public class DuplicateEntityException extends CustomBaseException {
method DuplicateEntityException (line 5) | public DuplicateEntityException(String message) {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ErrorCode.java
type ErrorCode (line 8) | public enum ErrorCode {
method ErrorCode (line 50) | ErrorCode(int code, HttpStatus httpStatus) {
method code (line 55) | public int code() {
method httpStatus (line 59) | public HttpStatus httpStatus() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/FileUploadException.java
class FileUploadException (line 5) | public class FileUploadException extends CustomBaseException {
method FileUploadException (line 7) | public FileUploadException(String msg, Throwable cause) {
method FileUploadException (line 11) | public FileUploadException(Path path, Throwable cause) {
method getErrorCode (line 15) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/GlobalErrorWebExceptionHandler.java
class GlobalErrorWebExceptionHandler (line 34) | @Component
method GlobalErrorWebExceptionHandler (line 38) | public GlobalErrorWebExceptionHandler(ErrorAttributes errorAttributes,
method getRoutingFunction (line 45) | @Override
method renderErrorResponse (line 50) | private Mono<ServerResponse> renderErrorResponse(ServerRequest request) {
method renderDefault (line 71) | private Mono<ServerResponse> renderDefault(Throwable throwable, Server...
method render (line 84) | private Mono<ServerResponse> render(CustomBaseException baseException,...
method render (line 98) | private Mono<ServerResponse> render(WebExchangeBindException exception...
method render (line 128) | private Mono<ServerResponse> render(ResponseStatusException exception,...
method requestId (line 142) | private String requestId(ServerRequest request) {
method currentTimestamp (line 146) | private BigDecimal currentTimestamp() {
method extractFieldErrorMsg (line 150) | private String extractFieldErrorMsg(FieldError fieldError) {
method coalesce (line 154) | private <T> T coalesce(T... items) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/IllegalEntityStateException.java
class IllegalEntityStateException (line 3) | public class IllegalEntityStateException extends CustomBaseException {
method IllegalEntityStateException (line 4) | public IllegalEntityStateException(String message) {
method getErrorCode (line 8) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/InvalidRequestApiException.java
class InvalidRequestApiException (line 3) | public class InvalidRequestApiException extends CustomBaseException {
method InvalidRequestApiException (line 5) | public InvalidRequestApiException(String message) {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/JsonAvroConversionException.java
class JsonAvroConversionException (line 3) | public class JsonAvroConversionException extends ValidationException {
method JsonAvroConversionException (line 4) | public JsonAvroConversionException(String message) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KafkaConnectConflictReponseException.java
class KafkaConnectConflictReponseException (line 6) | public class KafkaConnectConflictReponseException extends CustomBaseExce...
method KafkaConnectConflictReponseException (line 8) | public KafkaConnectConflictReponseException(WebClientResponseException...
method getErrorCode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlApiException.java
class KsqlApiException (line 3) | public class KsqlApiException extends CustomBaseException {
method KsqlApiException (line 5) | public KsqlApiException(String message) {
method KsqlApiException (line 9) | public KsqlApiException(String message, Throwable cause) {
method getErrorCode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlDbNotFoundException.java
class KsqlDbNotFoundException (line 3) | public class KsqlDbNotFoundException extends CustomBaseException {
method KsqlDbNotFoundException (line 5) | public KsqlDbNotFoundException() {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/LogDirNotFoundApiException.java
class LogDirNotFoundApiException (line 3) | public class LogDirNotFoundApiException extends CustomBaseException {
method LogDirNotFoundApiException (line 5) | public LogDirNotFoundApiException() {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/NotFoundException.java
class NotFoundException (line 3) | public class NotFoundException extends CustomBaseException {
method NotFoundException (line 5) | public NotFoundException(String message) {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ReadOnlyModeException.java
class ReadOnlyModeException (line 4) | public class ReadOnlyModeException extends CustomBaseException {
method ReadOnlyModeException (line 6) | public ReadOnlyModeException() {
method getErrorCode (line 10) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaCompatibilityException.java
class SchemaCompatibilityException (line 3) | public class SchemaCompatibilityException extends CustomBaseException {
method SchemaCompatibilityException (line 4) | public SchemaCompatibilityException() {
method getErrorCode (line 8) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaFailedToDeleteException.java
class SchemaFailedToDeleteException (line 3) | public class SchemaFailedToDeleteException extends CustomBaseException {
method SchemaFailedToDeleteException (line 5) | public SchemaFailedToDeleteException(String schemaName) {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaNotFoundException.java
class SchemaNotFoundException (line 3) | public class SchemaNotFoundException extends CustomBaseException {
method SchemaNotFoundException (line 5) | public SchemaNotFoundException() {
method SchemaNotFoundException (line 9) | public SchemaNotFoundException(String message) {
method getErrorCode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicAnalysisException.java
class TopicAnalysisException (line 3) | public class TopicAnalysisException extends CustomBaseException {
method TopicAnalysisException (line 5) | public TopicAnalysisException(String message) {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicMetadataException.java
class TopicMetadataException (line 3) | public class TopicMetadataException extends CustomBaseException {
method TopicMetadataException (line 5) | public TopicMetadataException(String message) {
method TopicMetadataException (line 9) | public TopicMetadataException(String message, Throwable cause) {
method getErrorCode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicNotFoundException.java
class TopicNotFoundException (line 3) | public class TopicNotFoundException extends CustomBaseException {
method TopicNotFoundException (line 5) | public TopicNotFoundException() {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicOrPartitionNotFoundException.java
class TopicOrPartitionNotFoundException (line 3) | public class TopicOrPartitionNotFoundException extends CustomBaseExcepti...
method TopicOrPartitionNotFoundException (line 5) | public TopicOrPartitionNotFoundException() {
method getErrorCode (line 9) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicRecreationException.java
class TopicRecreationException (line 3) | public class TopicRecreationException extends CustomBaseException {
method getErrorCode (line 4) | @Override
method TopicRecreationException (line 9) | public TopicRecreationException(String topicName, int seconds) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/UnprocessableEntityException.java
class UnprocessableEntityException (line 4) | public class UnprocessableEntityException extends CustomBaseException {
method UnprocessableEntityException (line 6) | public UnprocessableEntityException(String message) {
method getErrorCode (line 10) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ValidationException.java
class ValidationException (line 4) | public class ValidationException extends CustomBaseException {
method ValidationException (line 5) | public ValidationException(String message) {
method ValidationException (line 9) | public ValidationException(String message, Throwable cause) {
method getErrorCode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ClusterMapper.java
type ClusterMapper (line 49) | @Mapper(componentModel = "spring")
method toCluster (line 52) | ClusterDTO toCluster(InternalClusterState clusterState);
method toClusterStats (line 54) | ClusterStatsDTO toClusterStats(InternalClusterState clusterState);
method toClusterMetrics (line 56) | default ClusterMetricsDTO toClusterMetrics(Metrics metrics) {
method convert (line 61) | private MetricDTO convert(RawMetric rawMetric) {
method toBrokerMetrics (line 68) | default BrokerMetricsDTO toBrokerMetrics(List<RawMetric> metrics) {
method toBrokerConfig (line 73) | @Mapping(target = "isSensitive", source = "sensitive")
method toConfigSynonym (line 77) | default ConfigSynonymDTO toConfigSynonym(ConfigEntry.ConfigSynonym con...
method toTopic (line 92) | TopicDTO toTopic(InternalTopic topic);
method toPartition (line 94) | PartitionDTO toPartition(InternalPartition topic);
method toBrokerDto (line 96) | BrokerDTO toBrokerDto(InternalBroker broker);
method toTopicDetails (line 98) | TopicDetailsDTO toTopicDetails(InternalTopic topic);
method toTopicConfig (line 100) | @Mapping(target = "isReadOnly", source = "readOnly")
method toReplica (line 104) | ReplicaDTO toReplica(InternalReplica replica);
method toKafkaConnect (line 106) | ConnectDTO toKafkaConnect(ClustersProperties.ConnectCluster connect);
method toFeaturesEnum (line 108) | List<ClusterDTO.FeaturesEnum> toFeaturesEnum(List<ClusterFeature> feat...
method map (line 110) | default List<PartitionDTO> map(Map<Integer, InternalPartition> map) {
method map (line 114) | default BrokerDiskUsageDTO map(Integer id, InternalBrokerDiskUsage int...
method map (line 122) | default TopicProducerStateDTO map(int partition, ProducerState state) {
method mapAclOperation (line 133) | static KafkaAclDTO.OperationEnum mapAclOperation(AclOperation operatio...
method mapAclResourceType (line 153) | static KafkaAclResourceTypeDTO mapAclResourceType(ResourceType resourc...
method mapAclResourceTypeDto (line 166) | static ResourceType mapAclResourceTypeDto(KafkaAclResourceTypeDTO dto) {
method mapPatternTypeDto (line 170) | static PatternType mapPatternTypeDto(KafkaAclNamePatternTypeDTO dto) {
method toAclBinding (line 174) | static AclBinding toAclBinding(KafkaAclDTO dto) {
method toKafkaAclDto (line 190) | static KafkaAclDTO toKafkaAclDto(AclBinding binding) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ConsumerGroupMapper.java
class ConsumerGroupMapper (line 17) | public class ConsumerGroupMapper {
method ConsumerGroupMapper (line 19) | private ConsumerGroupMapper() {
method toDto (line 22) | public static ConsumerGroupDTO toDto(InternalConsumerGroup c) {
method toDto (line 26) | public static ConsumerGroupDTO toDto(InternalTopicConsumerGroup c) {
method toDetailsDto (line 40) | public static ConsumerGroupDetailsDTO toDetailsDto(InternalConsumerGro...
method convertToConsumerGroup (line 79) | private static <T extends ConsumerGroupDTO> T convertToConsumerGroup(
method mapCoordinator (line 96) | private static BrokerDTO mapCoordinator(Node node) {
method mapConsumerGroupState (line 100) | private static ConsumerGroupStateDTO mapConsumerGroupState(
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/DescribeLogDirsMapper.java
class DescribeLogDirsMapper (line 15) | @Component
method toBrokerLogDirsList (line 18) | public List<BrokersLogdirsDTO> toBrokerLogDirsList(
method toBrokerLogDirs (line 28) | private BrokersLogdirsDTO toBrokerLogDirs(Integer broker, String dirName,
method toTopicLogDirs (line 43) | private BrokerTopicLogdirsDTO toTopicLogDirs(Integer broker, String name,
method topicPartitionLogDir (line 56) | private BrokerTopicPartitionLogdirDTO topicPartitionLogDir(Integer bro...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaConnectMapper.java
type KafkaConnectMapper (line 18) | @Mapper(componentModel = "spring")
method toClient (line 20) | NewConnector toClient(com.provectus.kafka.ui.model.NewConnectorDTO new...
method fromClient (line 22) | ConnectorDTO fromClient(com.provectus.kafka.ui.connect.model.Connector...
method fromClient (line 24) | ConnectorStatusDTO fromClient(ConnectorStatusConnector connectorStatus);
method fromClient (line 26) | TaskDTO fromClient(ConnectorTask connectorTask);
method fromClient (line 28) | TaskStatusDTO fromClient(com.provectus.kafka.ui.connect.model.TaskStat...
method fromClient (line 30) | ConnectorPluginDTO fromClient(
method fromClient (line 33) | ConnectorPluginConfigValidationResponseDTO fromClient(
method fullConnectorInfo (line 37) | default FullConnectorInfoDTO fullConnectorInfo(InternalConnectInfo con...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaSrMapper.java
type KafkaSrMapper (line 20) | @Mapper
method toDto (line 23) | default SchemaSubjectDTO toDto(SchemaRegistryService.SubjectWithCompat...
method toDto (line 34) | List<SchemaReferenceDTO> toDto(List<SchemaReference> references);
method toDto (line 36) | CompatibilityCheckResponseDTO toDto(CompatibilityCheckResponse ccr);
method toDto (line 38) | CompatibilityLevelDTO.CompatibilityEnum toDto(Compatibility compatibil...
method fromDto (line 40) | NewSubject fromDto(NewSchemaSubjectDTO subjectDto);
method fromDto (line 42) | Compatibility fromDto(CompatibilityLevelDTO.CompatibilityEnum dtoEnum);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/BrokerMetrics.java
class BrokerMetrics (line 7) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/CleanupPolicy.java
type CleanupPolicy (line 7) | public enum CleanupPolicy {
method CleanupPolicy (line 15) | CleanupPolicy(String policy) {
method CleanupPolicy (line 19) | CleanupPolicy(List<String> policies) {
method getPolicy (line 23) | public String getPolicy() {
method fromString (line 27) | public static CleanupPolicy fromString(String string) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ClusterFeature.java
type ClusterFeature (line 3) | public enum ClusterFeature {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ConsumerPosition.java
class ConsumerPosition (line 8) | @Value
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBroker.java
class InternalBroker (line 8) | @Data
method InternalBroker (line 22) | public InternalBroker(Node node,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerConfig.java
class InternalBrokerConfig (line 9) | @Data
method from (line 19) | public static InternalBrokerConfig from(ConfigEntry configEntry) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerDiskUsage.java
class InternalBrokerDiskUsage (line 6) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterMetrics.java
class InternalClusterMetrics (line 11) | @Data
method empty (line 15) | public static InternalClusterMetrics empty() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterState.java
class InternalClusterState (line 11) | @Data
method InternalClusterState (line 31) | public InternalClusterState(KafkaCluster cluster, Statistics statistic...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalConsumerGroup.java
class InternalConsumerGroup (line 16) | @Data
class InternalMember (line 30) | @Data
method create (line 40) | public static InternalConsumerGroup create(
method calculateConsumerLag (line 59) | private static Long calculateConsumerLag(Map<TopicPartition, Long> off...
method calculateTopicNum (line 75) | private static Integer calculateTopicNum(Map<TopicPartition, Long> off...
method initInternalMembers (line 85) | private static Collection<InternalMember> initInternalMembers(Consumer...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalLogDirStats.java
class InternalLogDirStats (line 18) | @Value
class SegmentStats (line 21) | @Value
method SegmentStats (line 26) | public SegmentStats(LongSummaryStatistics s) {
method empty (line 36) | public static InternalLogDirStats empty() {
method InternalLogDirStats (line 40) | public InternalLogDirStats(Map<Integer, Map<String, DescribeLogDirsRes...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartition.java
class InternalPartition (line 7) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartitionsOffsets.java
class InternalPartitionsOffsets (line 11) | public class InternalPartitionsOffsets {
class Offsets (line 13) | @Value
method InternalPartitionsOffsets (line 21) | public InternalPartitionsOffsets(Map<TopicPartition, Offsets> offsetsM...
method empty (line 25) | public static InternalPartitionsOffsets empty() {
method get (line 29) | public Optional<Offsets> get(String topic, int partition) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalReplica.java
class InternalReplica (line 7) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalSegmentSizeDto.java
class InternalSegmentSizeDto (line 7) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalTopic.java
class InternalTopic (line 15) | @Data
method from (line 43) | public static InternalTopic from(TopicDescription topicDescription,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalTopicConfig.java
class InternalTopicConfig (line 9) | @Data
method from (line 21) | public static InternalTopicConfig from(ConfigEntry configEntry) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalTopicConsumerGroup.java
class InternalTopicConsumerGroup (line 13) | @Value
method create (line 27) | public static InternalTopicConsumerGroup create(
method calculateConsumerLag (line 48) | @Nullable
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/KafkaCluster.java
class KafkaCluster (line 17) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/Metrics.java
class Metrics (line 15) | @Builder
method empty (line 25) | public static Metrics empty() {
method getSummarizedMetrics (line 35) | public Stream<RawMetric> getSummarizedMetrics() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/MetricsConfig.java
class MetricsConfig (line 8) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/PartitionDistributionStats.java
class PartitionDistributionStats (line 16) | @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
method create (line 31) | public static PartitionDistributionStats create(Statistics stats) {
method create (line 35) | static PartitionDistributionStats create(Statistics stats, int minPart...
method incr (line 68) | private static void incr(Map<Node, Integer> map, Node n) {
method partitionsSkew (line 72) | @Nullable
method leadersSkew (line 77) | @Nullable
method calculateAvgSkew (line 83) | @Nullable
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/PartitionsStats.java
class PartitionsStats (line 8) | @Data
method PartitionsStats (line 19) | public PartitionsStats(TopicDescription description) {
method PartitionsStats (line 23) | public PartitionsStats(Collection<TopicDescription> topicDescriptions) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/Statistics.java
class Statistics (line 12) | @Value
method empty (line 25) | public static Statistics empty() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/connect/InternalConnectInfo.java
class InternalConnectInfo (line 10) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/AccessContext.java
class AccessContext (line 19) | @Value
method builder (line 50) | public static AccessContextBuilder builder() {
class AccessContextBuilder (line 54) | public static final class AccessContextBuilder {
method AccessContextBuilder (line 76) | private AccessContextBuilder() {
method applicationConfigActions (line 79) | public AccessContextBuilder applicationConfigActions(ApplicationConf...
method cluster (line 85) | public AccessContextBuilder cluster(String cluster) {
method clusterConfigActions (line 90) | public AccessContextBuilder clusterConfigActions(ClusterConfigAction...
method topic (line 96) | public AccessContextBuilder topic(String topic) {
method topicActions (line 101) | public AccessContextBuilder topicActions(TopicAction... actions) {
method consumerGroup (line 107) | public AccessContextBuilder consumerGroup(String consumerGroup) {
method consumerGroupActions (line 112) | public AccessContextBuilder consumerGroupActions(ConsumerGroupAction...
method connect (line 118) | public AccessContextBuilder connect(String connect) {
method connectActions (line 123) | public AccessContextBuilder connectActions(ConnectAction... actions) {
method connector (line 129) | public AccessContextBuilder connector(String connector) {
method schema (line 134) | public AccessContextBuilder schema(String schema) {
method schemaActions (line 139) | public AccessContextBuilder schemaActions(SchemaAction... actions) {
method ksqlActions (line 145) | public AccessContextBuilder ksqlActions(KsqlAction... actions) {
method aclActions (line 151) | public AccessContextBuilder aclActions(AclAction... actions) {
method auditActions (line 157) | public AccessContextBuilder auditActions(AuditAction... actions) {
method operationName (line 163) | public AccessContextBuilder operationName(String operationName) {
method operationParams (line 168) | public AccessContextBuilder operationParams(Object operationParams) {
method operationParams (line 173) | public AccessContextBuilder operationParams(Map<String, Object> para...
method build (line 178) | public AccessContext build() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Permission.java
class Permission (line 29) | @Getter
method setResource (line 45) | @SuppressWarnings("unused")
method setValue (line 50) | @SuppressWarnings("unused")
method setActions (line 55) | @SuppressWarnings("unused")
method validate (line 60) | public void validate() {
method transform (line 67) | public void transform() {
method getAllActionValues (line 76) | private List<String> getAllActionValues() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Resource.java
type Resource (line 6) | public enum Resource {
method fromString (line 18) | @Nullable
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Role.java
class Role (line 6) | @Data
method validate (line 14) | public void validate() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Subject.java
class Subject (line 6) | @Getter
method setProvider (line 13) | public void setProvider(String provider) {
method setType (line 17) | public void setType(String type) {
method setValue (line 21) | public void setValue(String value) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/AclAction.java
type AclAction (line 7) | public enum AclAction implements PermissibleAction {
method fromString (line 16) | @Nullable
method isAlter (line 21) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ApplicationConfigAction.java
type ApplicationConfigAction (line 7) | public enum ApplicationConfigAction implements PermissibleAction {
method fromString (line 16) | @Nullable
method isAlter (line 21) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/AuditAction.java
type AuditAction (line 7) | public enum AuditAction implements PermissibleAction {
method fromString (line 15) | @Nullable
method isAlter (line 20) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ClusterConfigAction.java
type ClusterConfigAction (line 7) | public enum ClusterConfigAction implements PermissibleAction {
method fromString (line 16) | @Nullable
method isAlter (line 21) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ConnectAction.java
type ConnectAction (line 7) | public enum ConnectAction implements PermissibleAction {
method fromString (line 18) | @Nullable
method isAlter (line 23) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ConsumerGroupAction.java
type ConsumerGroupAction (line 7) | public enum ConsumerGroupAction implements PermissibleAction {
method fromString (line 17) | @Nullable
method isAlter (line 22) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/KsqlAction.java
type KsqlAction (line 7) | public enum KsqlAction implements PermissibleAction {
method fromString (line 15) | @Nullable
method isAlter (line 20) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/PermissibleAction.java
type PermissibleAction (line 3) | public sealed interface PermissibleAction permits
method name (line 9) | String name();
method isAlter (line 11) | boolean isAlter();
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/SchemaAction.java
type SchemaAction (line 7) | public enum SchemaAction implements PermissibleAction {
method fromString (line 19) | @Nullable
method isAlter (line 24) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/TopicAction.java
type TopicAction (line 7) | public enum TopicAction implements PermissibleAction {
method fromString (line 21) | @Nullable
method isAlter (line 26) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/provider/Provider.java
type Provider (line 6) | public enum Provider {
method fromString (line 18) | @Nullable
class Name (line 23) | public static class Name {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/ErrorResponse.java
class ErrorResponse (line 6) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/InternalCompatibilityCheck.java
class InternalCompatibilityCheck (line 6) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/InternalCompatibilityLevel.java
class InternalCompatibilityLevel (line 5) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/InternalNewSchema.java
class InternalNewSchema (line 7) | @Data
method InternalNewSchema (line 13) | public InternalNewSchema(String schema, SchemaTypeDTO schemaType) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/SubjectIdResponse.java
class SubjectIdResponse (line 5) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/BuiltInSerde.java
type BuiltInSerde (line 6) | public interface BuiltInSerde extends Serde {
method canBeAutoConfigured (line 10) | default boolean canBeAutoConfigured(PropertyResolver kafkaClusterPrope...
method autoConfigure (line 18) | default void autoConfigure(PropertyResolver kafkaClusterProperties,
method configure (line 22) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ClassloaderUtil.java
class ClassloaderUtil (line 3) | class ClassloaderUtil {
method compareAndSwapLoaders (line 5) | static ClassLoader compareAndSwapLoaders(ClassLoader loader) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ClusterSerdes.java
class ClusterSerdes (line 15) | @Slf4j
method findSerdeByPatternsOrDefault (line 30) | private Optional<SerdeInstance> findSerdeByPatternsOrDefault(String to...
method serdeForName (line 57) | public Optional<SerdeInstance> serdeForName(String name) {
method all (line 61) | public Stream<SerdeInstance> all() {
method suggestSerdeForSerialize (line 65) | public SerdeInstance suggestSerdeForSerialize(String topic, Serde.Targ...
method suggestSerdeForDeserialize (line 70) | public SerdeInstance suggestSerdeForDeserialize(String topic, Serde.Ta...
method close (line 75) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ConsumerRecordDeserializer.java
class ConsumerRecordDeserializer (line 21) | @Slf4j
method deserialize (line 39) | public TopicMessageDTO deserialize(ConsumerRecord<Bytes, Bytes> rec) {
method mapToTimestampType (line 57) | private static TimestampTypeEnum mapToTimestampType(TimestampType time...
method fillHeaders (line 65) | private void fillHeaders(TopicMessageDTO message, ConsumerRecord<Bytes...
method fillKey (line 76) | private void fillKey(TopicMessageDTO message, ConsumerRecord<Bytes, By...
method fillValue (line 94) | private void fillValue(TopicMessageDTO message, ConsumerRecord<Bytes, ...
method getHeadersSize (line 114) | private static Long getHeadersSize(ConsumerRecord<Bytes, Bytes> consum...
method getKeySize (line 124) | private static Long getKeySize(ConsumerRecord<Bytes, Bytes> consumerRe...
method getValueSize (line 128) | private static Long getValueSize(ConsumerRecord<Bytes, Bytes> consumer...
method headerSize (line 132) | private static int headerSize(Header header) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/CustomSerdeLoader.java
class CustomSerdeLoader (line 25) | class CustomSerdeLoader {
class CustomSerde (line 27) | @Value
method loadAndConfigure (line 36) | @SneakyThrows
method isArchive (line 55) | private static boolean isArchive(Path path) {
method findArchiveFiles (line 62) | @SneakyThrows
method createClassloader (line 80) | private ClassLoader createClassloader(Path location) {
class ChildFirstClassloader (line 102) | private static class ChildFirstClassloader extends URLClassLoader {
method ChildFirstClassloader (line 106) | ChildFirstClassloader(URL[] urls, ClassLoader parent) {
method loadClass (line 110) | @Override
method getResources (line 132) | @Override
method getResource (line 163) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ProducerRecordCreator.java
class ProducerRecordCreator (line 12) | @RequiredArgsConstructor
method create (line 18) | public ProducerRecord<byte[], byte[]> create(String topic,
method createHeaders (line 32) | private Iterable<Header> createHeaders(Map<String, String> clientHeade...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/PropertyResolverImpl.java
class PropertyResolverImpl (line 16) | public class PropertyResolverImpl implements PropertyResolver {
method empty (line 23) | public static PropertyResolverImpl empty() {
method PropertyResolverImpl (line 27) | public PropertyResolverImpl(Environment env) {
method PropertyResolverImpl (line 31) | public PropertyResolverImpl(Environment env, @Nullable String prefix) {
method targetPropertyName (line 36) | private ConfigurationPropertyName targetPropertyName(String key) {
method getProperty (line 43) | @Override
method getListProperty (line 50) | @Override
method getMapProperty (line 57) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/RecordHeaderImpl.java
class RecordHeaderImpl (line 6) | public class RecordHeaderImpl implements RecordHeader {
method RecordHeaderImpl (line 10) | public RecordHeaderImpl(Header header) {
method key (line 14) | @Override
method value (line 19) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/RecordHeadersImpl.java
class RecordHeadersImpl (line 10) | public class RecordHeadersImpl implements RecordHeaders {
method RecordHeadersImpl (line 14) | public RecordHeadersImpl() {
method RecordHeadersImpl (line 18) | public RecordHeadersImpl(Headers headers) {
method iterator (line 22) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/SerdeInstance.java
class SerdeInstance (line 14) | @Slf4j
method wrapWithClassloader (line 32) | private <T> T wrapWithClassloader(Supplier<T> call) {
method getSchema (line 44) | public Optional<SchemaDescription> getSchema(String topic, Serde.Targe...
method description (line 53) | public Optional<String> description() {
method canSerialize (line 62) | public boolean canSerialize(String topic, Serde.Target type) {
method canDeserialize (line 71) | public boolean canDeserialize(String topic, Serde.Target type) {
method serializer (line 80) | public Serde.Serializer serializer(String topic, Serde.Target type) {
method deserializer (line 87) | public Serde.Deserializer deserializer(String topic, Serde.Target type) {
method close (line 94) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/SerdesInitializer.java
class SerdesInitializer (line 34) | @Slf4j
method SerdesInitializer (line 40) | public SerdesInitializer() {
method SerdesInitializer (line 60) | @VisibleForTesting
method init (line 86) | public ClusterSerdes init(Environment env,
method registerTopicRelatedSerde (line 145) | private void registerTopicRelatedSerde(Map<String, SerdeInstance> serd...
method registerConsumerOffsetsSerde (line 149) | private void registerConsumerOffsetsSerde(Map<String, SerdeInstance> s...
method createFallbackSerde (line 163) | private SerdeInstance createFallbackSerde() {
method createSerdeFromConfig (line 169) | @SneakyThrows
method createSerdeWithBuiltInSerdeName (line 190) | private SerdeInstance createSerdeWithBuiltInSerdeName(SerdeConfig serd...
method autoConfigureSerde (line 221) | private boolean autoConfigureSerde(BuiltInSerde serde, PropertyResolve...
method createSerdeWithBuiltInClass (line 229) | @SneakyThrows
method createSerdeInstance (line 249) | @SneakyThrows
method loadAndInitCustomSerde (line 254) | private SerdeInstance loadAndInitCustomSerde(SerdeConfig serdeConfig,
method nullablePattern (line 277) | @Nullable
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/AvroEmbeddedSerde.java
class AvroEmbeddedSerde (line 16) | public class AvroEmbeddedSerde implements BuiltInSerde {
method name (line 18) | public static String name() {
method getDescription (line 22) | @Override
method getSchema (line 27) | @Override
method canDeserialize (line 32) | @Override
method canSerialize (line 37) | @Override
method serializer (line 42) | @Override
method deserializer (line 47) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/Base64Serde.java
class Base64Serde (line 10) | public class Base64Serde implements BuiltInSerde {
method name (line 12) | public static String name() {
method getDescription (line 16) | @Override
method getSchema (line 21) | @Override
method canDeserialize (line 26) | @Override
method canSerialize (line 31) | @Override
method serializer (line 36) | @Override
method deserializer (line 49) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/ConsumerOffsetsSerde.java
class ConsumerOffsetsSerde (line 27) | public class ConsumerOffsetsSerde implements BuiltInSerde {
method name (line 50) | public static String name() {
method createMapper (line 54) | private static JsonMapper createMapper() {
method getDescription (line 72) | @Override
method getSchema (line 77) | @Override
method canDeserialize (line 82) | @Override
method canSerialize (line 87) | @Override
method serializer (line 92) | @Override
method deserializer (line 97) | @Override
method keyDeserializer (line 105) | private Deserializer keyDeserializer() {
method valueDeserializer (line 133) | private Deserializer valueDeserializer() {
method toJson (line 308) | @SneakyThrows
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/HexSerde.java
class HexSerde (line 11) | public class HexSerde implements BuiltInSerde {
method name (line 15) | public static String name() {
method autoConfigure (line 19) | @Override
method configure (line 24) | @Override
method configure (line 33) | private void configure(String delim, boolean uppercase) {
method getDescription (line 40) | @Override
method getSchema (line 45) | @Override
method canDeserialize (line 50) | @Override
method canSerialize (line 55) | @Override
method serializer (line 60) | @Override
method prepareInputForParse (line 73) | private static String prepareInputForParse(String input) {
method deserializer (line 80) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/Int32Serde.java
class Int32Serde (line 10) | public class Int32Serde implements BuiltInSerde {
method name (line 12) | public static String name() {
method getDescription (line 16) | @Override
method getSchema (line 21) | @Override
method canDeserialize (line 39) | @Override
method canSerialize (line 44) | @Override
method serializer (line 49) | @Override
method deserializer (line 54) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/Int64Serde.java
class Int64Serde (line 12) | public class Int64Serde implements BuiltInSerde {
method name (line 14) | public static String name() {
method getDescription (line 18) | @Override
method getSchema (line 23) | @Override
method canDeserialize (line 41) | @Override
method canSerialize (line 46) | @Override
method serializer (line 51) | @Override
method deserializer (line 56) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/ProtobufFileSerde.java
class ProtobufFileSerde (line 66) | @Slf4j
method name (line 69) | public static String name() {
method canBeAutoConfigured (line 86) | @Override
method autoConfigure (line 92) | @Override
method configure (line 98) | @Override
method configure (line 105) | @VisibleForTesting
method getDescription (line 120) | @Override
method descriptorFor (line 125) | private Optional<Descriptor> descriptorFor(String topic, Target type) {
method canDeserialize (line 135) | @Override
method canSerialize (line 140) | @Override
method serializer (line 145) | @Override
method deserializer (line 159) | @Override
method getSchema (line 178) | @Override
method toSchemaDescription (line 183) | private SchemaDescription toSchemaDescription(Descriptor descriptor) {
method readFileAsString (line 191) | @SneakyThrows
method canBeAutoConfigured (line 205) | static boolean canBeAutoConfigured(PropertyResolver kafkaClusterProper...
method create (line 211) | static Configuration create(PropertyResolver properties) {
method getDescriptorAndPath (line 250) | private static Map.Entry<Descriptor, Path> getDescriptorAndPath(Map<Pa...
method populateDescriptors (line 260) | private static Map<String, Descriptor> populateDescriptors(Map<String,...
method loadSchemas (line 269) | @VisibleForTesting
method addProtobufSchema (line 292) | private static void addProtobufSchema(Map<Descriptor, Path> descriptor...
method addProtobufSchemas (line 299) | private static void addProtobufSchemas(Map<Descriptor, Path> descripto...
class ProtoSchemaLoader (line 308) | static class ProtoSchemaLoader {
method ProtoSchemaLoader (line 312) | ProtoSchemaLoader(String baseLocationStr) {
method load (line 319) | List<ProtoFile> load() {
method knownProtoFiles (line 340) | private Map<String, ProtoFile> knownProtoFiles() {
method loadKnownProtoFile (line 371) | private ProtoFile loadKnownProtoFile(String path, Descriptors.FileDe...
method createFilesLoader (line 384) | private Loader createFilesLoader(Map<String, ProtoFile> files) {
method loadFilesWithLocations (line 398) | @SneakyThrows
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/ProtobufRawSerde.java
class ProtobufRawSerde (line 13) | public class ProtobufRawSerde implements BuiltInSerde {
method name (line 15) | public static String name() {
method getDescription (line 19) | @Override
method getSchema (line 24) | @Override
method canSerialize (line 29) | @Override
method canDeserialize (line 34) | @Override
method serializer (line 39) | @Override
method deserializer (line 44) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/StringSerde.java
class StringSerde (line 12) | public class StringSerde implements BuiltInSerde {
method name (line 14) | public static String name() {
method configure (line 20) | @Override
method getDescription (line 29) | @Override
method getSchema (line 34) | @Override
method canDeserialize (line 39) | @Override
method canSerialize (line 44) | @Override
method serializer (line 49) | @Override
method deserializer (line 54) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/UInt32Serde.java
class UInt32Serde (line 11) | public class UInt32Serde implements BuiltInSerde {
method name (line 13) | public static String name() {
method getDescription (line 17) | @Override
method getSchema (line 22) | @Override
method canDeserialize (line 39) | @Override
method canSerialize (line 44) | @Override
method serializer (line 49) | @Override
method deserializer (line 54) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/UInt64Serde.java
class UInt64Serde (line 12) | public class UInt64Serde implements BuiltInSerde {
method name (line 14) | public static String name() {
method getDescription (line 18) | @Override
method getSchema (line 23) | @Override
method canDeserialize (line 40) | @Override
method canSerialize (line 45) | @Override
method serializer (line 50) | @Override
method deserializer (line 55) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/UuidBinarySerde.java
class UuidBinarySerde (line 15) | public class UuidBinarySerde implements BuiltInSerde {
method name (line 17) | public static String name() {
method configure (line 23) | @Override
method getDescription (line 31) | @Override
method getSchema (line 36) | @Override
method canDeserialize (line 41) | @Override
method canSerialize (line 46) | @Override
method serializer (line 51) | @Override
method deserializer (line 67) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/MessageFormatter.java
type MessageFormatter (line 17) | interface MessageFormatter {
method format (line 19) | String format(String topic, byte[] value);
method createMap (line 21) | static Map<SchemaType, MessageFormatter> createMap(SchemaRegistryClien...
class AvroMessageFormatter (line 29) | class AvroMessageFormatter implements MessageFormatter {
method AvroMessageFormatter (line 32) | AvroMessageFormatter(SchemaRegistryClient client) {
method format (line 45) | @Override
class ProtobufMessageFormatter (line 53) | class ProtobufMessageFormatter implements MessageFormatter {
method ProtobufMessageFormatter (line 56) | ProtobufMessageFormatter(SchemaRegistryClient client) {
method format (line 60) | @Override
class JsonSchemaMessageFormatter (line 72) | class JsonSchemaMessageFormatter implements MessageFormatter {
method JsonSchemaMessageFormatter (line 75) | JsonSchemaMessageFormatter(SchemaRegistryClient client) {
method format (line 79) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/SchemaRegistrySerde.java
class SchemaRegistrySerde (line 41) | public class SchemaRegistrySerde implements BuiltInSerde {
method name (line 46) | public static String name() {
method canBeAutoConfigured (line 60) | @Override
method autoConfigure (line 68) | @Override
method configure (line 92) | @Override
method configure (line 118) | @VisibleForTesting
method createSchemaRegistryClient (line 133) | private static SchemaRegistryClient createSchemaRegistryClient(List<St...
method getDescription (line 177) | @Override
method canDeserialize (line 182) | @Override
method canSerialize (line 189) | @Override
method getSchema (line 195) | @Override
method convertSchema (line 214) | @SneakyThrows
method getSchemaById (line 233) | private Optional<ParsedSchema> getSchemaById(int id) {
method getSchemaBySubject (line 237) | private Optional<SchemaMetadata> getSchemaBySubject(String subject) {
method wrapWith404Handler (line 241) | @SneakyThrows
method schemaSubject (line 254) | private String schemaSubject(String topic, Target type) {
method serializer (line 258) | @Override
method deserializer (line 279) | @Override
method getMessageFormatBySchemaId (line 296) | private SchemaType getMessageFormatBySchemaId(int schemaId) {
method extractSchemaIdFromMsg (line 303) | private int extractSchemaIdFromMsg(byte[] data) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/SchemaType.java
type SchemaType (line 6) | enum SchemaType {
method fromString (line 11) | public static Optional<SchemaType> fromString(String typeString) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/Serialize.java
class Serialize (line 32) | final class Serialize {
method Serialize (line 37) | private Serialize() {
method serializeJson (line 40) | @KafkaClientInternalsDependant("AbstractKafkaJsonSchemaSerializer::ser...
method serializeProto (line 63) | @KafkaClientInternalsDependant("AbstractKafkaProtobufSerializer::seria...
method serializeAvro (line 97) | @KafkaClientInternalsDependant("AbstractKafkaAvroSerializer::serialize...
method schemaId (line 123) | private static byte[] schemaId(int id) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/AdminClientService.java
type AdminClientService (line 6) | public interface AdminClientService {
method get (line 8) | Mono<ReactiveAdminClient> get(KafkaCluster cluster);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/AdminClientServiceImpl.java
class AdminClientServiceImpl (line 19) | @Service
method AdminClientServiceImpl (line 30) | public AdminClientServiceImpl(ClustersProperties clustersProperties) {
method get (line 35) | @Override
method createAdminClient (line 42) | private Mono<ReactiveAdminClient> createAdminClient(KafkaCluster clust...
method close (line 59) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ApplicationInfoService.java
class ApplicationInfoService (line 21) | @Service
method ApplicationInfoService (line 30) | public ApplicationInfoService(DynamicConfigOperations dynamicConfigOpe...
method getApplicationInfo (line 38) | public ApplicationInfoDTO getApplicationInfo() {
method convert (line 46) | private ApplicationInfoLatestReleaseDTO convert(GithubReleaseInfo.Gith...
method getBuildInfo (line 53) | private ApplicationInfoBuildDTO getBuildInfo(GithubReleaseInfo.GithubR...
method getEnabledFeatures (line 62) | private List<EnabledFeaturesEnum> getEnabledFeatures() {
method updateGithubReleaseInfo (line 71) | @Scheduled(fixedRateString = "${github-release-info-update-rate:360000...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/BrokerService.java
class BrokerService (line 35) | @Service
method loadBrokersConfig (line 44) | private Mono<Map<Integer, List<ConfigEntry>>> loadBrokersConfig(
method loadBrokersConfig (line 49) | private Mono<List<ConfigEntry>> loadBrokersConfig(
method getBrokersConfig (line 55) | private Flux<InternalBrokerConfig> getBrokersConfig(KafkaCluster clust...
method getBrokers (line 68) | public Flux<InternalBroker> getBrokers(KafkaCluster cluster) {
method updateBrokerLogDir (line 80) | public Mono<Void> updateBrokerLogDir(KafkaCluster cluster,
method updateBrokerLogDir (line 87) | private Mono<Void> updateBrokerLogDir(ReactiveAdminClient admin,
method updateBrokerConfigByName (line 102) | public Mono<Void> updateBrokerConfigByName(KafkaCluster cluster,
method getClusterLogDirs (line 113) | private Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirIn...
method getAllBrokersLogdirs (line 132) | public Flux<BrokersLogdirsDTO> getAllBrokersLogdirs(KafkaCluster clust...
method getBrokerConfig (line 138) | public Flux<InternalBrokerConfig> getBrokerConfig(KafkaCluster cluster...
method getBrokerMetrics (line 142) | public Mono<List<RawMetric>> getBrokerMetrics(KafkaCluster cluster, In...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClusterService.java
class ClusterService (line 16) | @Service
method getClusters (line 26) | public List<ClusterDTO> getClusters() {
method getClusterStats (line 33) | public Mono<ClusterStatsDTO> getClusterStats(KafkaCluster cluster) {
method getClusterMetrics (line 40) | public Mono<ClusterMetricsDTO> getClusterMetrics(KafkaCluster cluster) {
method updateCluster (line 47) | public Mono<ClusterDTO> updateCluster(KafkaCluster cluster) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStatisticsScheduler.java
class ClustersStatisticsScheduler (line 10) | @Component
method updateStatistics (line 19) | @Scheduled(fixedRateString = "${kafka.update-metrics-rate-millis:30000}")
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java
class ClustersStorage (line 10) | @Component
method ClustersStorage (line 15) | public ClustersStorage(ClustersProperties properties, KafkaClusterFact...
method getKafkaClusters (line 21) | public Collection<KafkaCluster> getKafkaClusters() {
method getClusterByName (line 25) | public Optional<KafkaCluster> getClusterByName(String clusterName) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ConsumerGroupService.java
class ConsumerGroupService (line 36) | @Service
method getConsumerGroups (line 43) | private Mono<List<InternalConsumerGroup>> getConsumerGroups(
method getConsumerGroupsForTopic (line 65) | public Mono<List<InternalTopicConsumerGroup>> getConsumerGroupsForTopi...
method isConsumerGroupRelatesToTopic (line 91) | private boolean isConsumerGroupRelatesToTopic(String topic,
method getConsumerGroupsPage (line 106) | public Mono<ConsumerGroupsPage> getConsumerGroupsPage(
method loadSortedDescriptions (line 132) | private Mono<List<ConsumerGroupDescription>> loadSortedDescriptions(Re...
method loadDescriptionsByListings (line 181) | private Mono<List<ConsumerGroupDescription>> loadDescriptionsByListing...
method sortAndPaginate (line 194) | private <T> Stream<T> sortAndPaginate(Collection<T> collection,
method describeConsumerGroups (line 205) | private Mono<List<ConsumerGroupDescription>> describeConsumerGroups(Re...
method loadDescriptionsByInternalConsumerGroups (line 212) | private Mono<List<ConsumerGroupDescription>> loadDescriptionsByInterna...
method getConsumerGroupDetail (line 232) | public Mono<InternalConsumerGroup> getConsumerGroupDetail(KafkaCluster...
method deleteConsumerGroupById (line 244) | public Mono<Void> deleteConsumerGroupById(KafkaCluster cluster,
method createConsumer (line 250) | public EnhancedConsumer createConsumer(KafkaCluster cluster) {
method createConsumer (line 254) | public EnhancedConsumer createConsumer(KafkaCluster cluster,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/DeserializationService.java
class DeserializationService (line 28) | @Component
method DeserializationService (line 33) | public DeserializationService(Environment env,
method getSerdesFor (line 44) | private ClusterSerdes getSerdesFor(KafkaCluster cluster) {
method getSerializer (line 48) | private Serde.Serializer getSerializer(KafkaCluster cluster,
method getSerdeForDeserialize (line 63) | private SerdeInstance getSerdeForDeserialize(KafkaCluster cluster,
method producerRecordCreator (line 81) | public ProducerRecordCreator producerRecordCreator(KafkaCluster cluster,
method deserializerFor (line 91) | public ConsumerRecordDeserializer deserializerFor(KafkaCluster cluster,
method getSerdesForSerialize (line 110) | public List<SerdeDescriptionDTO> getSerdesForSerialize(KafkaCluster cl...
method getSerdesForDeserialize (line 124) | public List<SerdeDescriptionDTO> getSerdesForDeserialize(KafkaCluster ...
method toDto (line 138) | private SerdeDescriptionDTO toDto(SerdeInstance serdeInstance,
method close (line 151) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/FeatureService.java
class FeatureService (line 18) | @Service
method getAvailableFeatures (line 22) | public Mono<List<ClusterFeature>> getAvailableFeatures(ReactiveAdminCl...
method topicDeletionEnabled (line 48) | private Mono<ClusterFeature> topicDeletionEnabled(ReactiveAdminClient ...
method aclEdit (line 54) | private Mono<ClusterFeature> aclEdit(ReactiveAdminClient adminClient, ...
method aclView (line 63) | private Mono<ClusterFeature> aclView(ReactiveAdminClient adminClient) {
method aclViewEnabled (line 69) | private boolean aclViewEnabled(ReactiveAdminClient adminClient) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/KafkaClusterFactory.java
class KafkaClusterFactory (line 35) | @Service
method KafkaClusterFactory (line 43) | public KafkaClusterFactory(WebclientProperties webclientProperties) {
method create (line 49) | public KafkaCluster create(ClustersProperties properties,
method validate (line 76) | public Mono<ClusterConfigValidationDTO> validate(ClustersProperties.Cl...
method convertProperties (line 122) | private Properties convertProperties(Map<String, Object> propertiesMap) {
method connectClientsConfigured (line 130) | private boolean connectClientsConfigured(ClustersProperties.Cluster cl...
method connectClients (line 134) | private Map<String, ReactiveFailover<KafkaConnectClientApi>> connectCl...
method connectClient (line 141) | private ReactiveFailover<KafkaConnectClientApi> connectClient(Clusters...
method schemaRegistryConfigured (line 156) | private boolean schemaRegistryConfigured(ClustersProperties.Cluster cl...
method schemaRegistryClient (line 160) | private ReactiveFailover<KafkaSrClientApi> schemaRegistryClient(Cluste...
method ksqlConfigured (line 177) | private boolean ksqlConfigured(ClustersProperties.Cluster clusterPrope...
method ksqlClient (line 181) | private ReactiveFailover<KsqlApiClient> ksqlClient(ClustersProperties....
method parseUrlList (line 197) | private List<String> parseUrlList(String url) {
method metricsConfigured (line 201) | private boolean metricsConfigured(ClustersProperties.Cluster clusterPr...
method metricsConfigDataToMetricsConfig (line 205) | @Nullable
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/KafkaConfigSanitizer.java
class KafkaConfigSanitizer (line 21) | @Component
method KafkaConfigSanitizer (line 39) | KafkaConfigSanitizer(
method compile (line 48) | private static List<Pattern> compile(Collection<String> patternStrings) {
method isRegex (line 56) | private static boolean isRegex(String str) {
method kafkaConfigKeysToSanitize (line 60) | private static Set<String> kafkaConfigKeysToSanitize() {
method sanitize (line 70) | @Nullable
method sanitizeConnectorConfig (line 80) | public Map<String, Object> sanitizeConnectorConfig(@Nullable Map<Strin...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/KafkaConnectService.java
class KafkaConnectService (line 42) | @Service
method getConnects (line 51) | public Flux<ConnectDTO> getConnects(KafkaCluster cluster) {
method getAllConnectors (line 59) | public Flux<FullConnectorInfoDTO> getAllConnectors(final KafkaCluster ...
method matchesSearchTerm (line 81) | private Predicate<FullConnectorInfoDTO> matchesSearchTerm(@Nullable fi...
method getStringsForSearch (line 89) | private Stream<String> getStringsForSearch(FullConnectorInfoDTO fullCo...
method getConnectorTopics (line 97) | public Mono<ConnectorTopics> getConnectorTopics(KafkaCluster cluster, ...
method getConnectorNames (line 107) | public Flux<String> getConnectorNames(KafkaCluster cluster, String con...
method getConnectorNamesWithErrorsSuppress (line 117) | public Flux<String> getConnectorNamesWithErrorsSuppress(KafkaCluster c...
method parseConnectorsNamesStringToList (line 121) | @SneakyThrows
method createConnector (line 127) | public Mono<ConnectorDTO> createConnector(KafkaCluster cluster, String...
method connectorExists (line 146) | private Mono<Boolean> connectorExists(KafkaCluster cluster, String con...
method getConnector (line 152) | public Mono<ConnectorDTO> getConnector(KafkaCluster cluster, String co...
method emptyStatus (line 188) | private Mono<ConnectorStatus> emptyStatus(String connectorName) {
method getConnectorConfig (line 196) | public Mono<Map<String, Object>> getConnectorConfig(KafkaCluster clust...
method setConnectorConfig (line 203) | public Mono<ConnectorDTO> setConnectorConfig(KafkaCluster cluster, Str...
method deleteConnector (line 212) | public Mono<Void> deleteConnector(
method updateConnectorState (line 218) | public Mono<Void> updateConnectorState(KafkaCluster cluster, String co...
method restartTasks (line 240) | private Mono<Void> restartTasks(KafkaCluster cluster, String connectName,
method getConnectorTasks (line 249) | public Flux<TaskDTO> getConnectorTasks(KafkaCluster cluster, String co...
method restartConnectorTask (line 264) | public Mono<Void> restartConnectorTask(KafkaCluster cluster, String co...
method getConnectorPlugins (line 270) | public Flux<ConnectorPluginDTO> getConnectorPlugins(KafkaCluster cluster,
method validateConnectorPluginConfig (line 276) | public Mono<ConnectorPluginConfigValidationResponseDTO> validateConnec...
method api (line 287) | private ReactiveFailover<KafkaConnectClientApi> api(KafkaCluster clust...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/MessagesService.java
class MessagesService (line 49) | @Service
method MessagesService (line 64) | public MessagesService(AdminClientService adminClientService,
method withExistingTopic (line 80) | private Mono<TopicDescription> withExistingTopic(KafkaCluster cluster,...
method execSmartFilterTest (line 86) | public static SmartFilterTestExecutionResultDTO execSmartFilterTest(Sm...
method deleteTopicMessages (line 120) | public Mono<Void> deleteTopicMessages(KafkaCluster cluster, String top...
method offsetsForDeletion (line 129) | private Mono<Map<TopicPartition, Long>> offsetsForDeletion(KafkaCluste...
method sendMessage (line 144) | public Mono<RecordMetadata> sendMessage(KafkaCluster cluster, String t...
method sendMessageImpl (line 151) | private Mono<RecordMetadata> sendMessageImpl(KafkaCluster cluster,
method createProducer (line 188) | public static KafkaProducer<byte[], byte[]> createProducer(KafkaCluste...
method loadMessages (line 200) | public Flux<TopicMessageEventDTO> loadMessages(KafkaCluster cluster, S...
method fixPageSize (line 215) | private int fixPageSize(@Nullable Integer pageSize) {
method loadMessagesImpl (line 221) | private Flux<TopicMessageEventDTO> loadMessagesImpl(KafkaCluster cluster,
method getMsgFilter (line 251) | private Predicate<TopicMessageDTO> getMsgFilter(String query,
method throttleUiPublish (line 259) | private <T> UnaryOperator<T> throttleUiPublish(SeekDirectionDTO seekDi...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/OffsetsResetService.java
class OffsetsResetService (line 30) | @Slf4j
method resetToEarliest (line 37) | public Mono<Void> resetToEarliest(
method offsets (line 45) | private Mono<Map<TopicPartition, Long>> offsets(ReactiveAdminClient cl...
method resetToLatest (line 59) | public Mono<Void> resetToLatest(
method resetToTimestamp (line 67) | public Mono<Void> resetToTimestamp(
method resetToOffsets (line 81) | public Mono<Void> resetToOffsets(
method checkGroupCondition (line 96) | private Mono<ReactiveAdminClient> checkGroupCondition(KafkaCluster clu...
method editTsOffsets (line 124) | private Map<TopicPartition, Long> editTsOffsets(Map<TopicPartition, Lo...
method editOffsetsBounds (line 137) | private Map<TopicPartition, Long> editOffsetsBounds(Map<TopicPartition...
method resetOffsets (line 156) | private Mono<Void> resetOffsets(ReactiveAdminClient adminClient,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ReactiveAdminClient.java
class ReactiveAdminClient (line 91) | @Slf4j
type SupportedFeature (line 95) | public enum SupportedFeature {
method SupportedFeature (line 103) | SupportedFeature(BiFunction<AdminClient, Float, Mono<Boolean>> predi...
method SupportedFeature (line 107) | SupportedFeature(float fromVersion) {
method forVersion (line 111) | static Mono<Set<SupportedFeature>> forVersion(AdminClient ac, String...
class ClusterDescription (line 121) | @Value
method extract (line 138) | private static Mono<ConfigRelatedInfo> extract(AdminClient ac) {
method create (line 168) | public static Mono<ReactiveAdminClient> create(AdminClient adminClient) {
method isAuthorizedSecurityEnabled (line 174) | private static Mono<Boolean> isAuthorizedSecurityEnabled(AdminClient a...
method toMono (line 186) | public static <T> Mono<T> toMono(KafkaFuture<T> future) {
method getClusterFeatures (line 216) | public Set<SupportedFeature> getClusterFeatures() {
method listTopics (line 220) | public Mono<Set<String>> listTopics(boolean listInternal) {
method deleteTopic (line 224) | public Mono<Void> deleteTopic(String topicName) {
method getVersion (line 228) | public String getVersion() {
method isTopicDeletionEnabled (line 232) | public boolean isTopicDeletionEnabled() {
method updateInternalStats (line 236) | public Mono<Void> updateInternalStats(@Nullable Node controller) {
method getTopicsConfig (line 245) | public Mono<Map<String, List<ConfigEntry>>> getTopicsConfig() {
method getTopicsConfig (line 251) | public Mono<Map<String, List<ConfigEntry>>> getTopicsConfig(Collection...
method getTopicsConfigImpl (line 262) | private Mono<Map<String, List<ConfigEntry>>> getTopicsConfigImpl(Colle...
method loadBrokersConfig (line 279) | private static Mono<Map<Integer, List<ConfigEntry>>> loadBrokersConfig...
method loadBrokersConfig (line 311) | public Mono<Map<Integer, List<ConfigEntry>>> loadBrokersConfig(List<In...
method describeTopics (line 315) | public Mono<Map<String, TopicDescription>> describeTopics() {
method describeTopics (line 319) | public Mono<Map<String, TopicDescription>> describeTopics(Collection<S...
method describeTopicsImpl (line 329) | private Mono<Map<String, TopicDescription>> describeTopicsImpl(Collect...
method describeTopic (line 342) | public Mono<TopicDescription> describeTopic(String topic) {
method toMonoWithExceptionFilter (line 356) | @SafeVarargs
method describeLogDirs (line 383) | public Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirInf...
method describeLogDirs (line 389) | public Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirInf...
method describeCluster (line 400) | public Mono<ClusterDescription> describeCluster() {
method describeClusterImpl (line 404) | private static Mono<ClusterDescription> describeClusterImpl(AdminClien...
method deleteConsumerGroups (line 423) | public Mono<Void> deleteConsumerGroups(Collection<String> groupIds) {
method createTopic (line 431) | public Mono<Void> createTopic(String name,
method alterPartitionReassignments (line 443) | public Mono<Void> alterPartitionReassignments(
method createPartitions (line 448) | public Mono<Void> createPartitions(Map<String, NewPartitions> newParti...
method updateTopicConfig (line 455) | public Mono<Void> updateTopicConfig(String topicName, Map<String, Stri...
method listConsumerGroupNames (line 465) | public Mono<List<String>> listConsumerGroupNames() {
method listConsumerGroups (line 469) | public Mono<Collection<ConsumerGroupListing>> listConsumerGroups() {
method describeConsumerGroups (line 473) | public Mono<Map<String, ConsumerGroupDescription>> describeConsumerGro...
method listConsumerGroupOffsets (line 485) | public Mono<Table<String, TopicPartition, Long>> listConsumerGroupOffs...
method alterConsumerGroupOffsets (line 518) | public Mono<Void> alterConsumerGroupOffsets(String groupId, Map<TopicP...
method listTopicOffsets (line 532) | public Mono<Map<TopicPartition, Long>> listTopicOffsets(String topic,
method listOffsets (line 546) | public Mono<Map<TopicPartition, Long>> listOffsets(Collection<TopicPar...
method listOffsets (line 556) | public Mono<Map<TopicPartition, Long>> listOffsets(Collection<TopicDes...
method filterPartitionsWithLeaderCheck (line 561) | private Mono<Collection<TopicPartition>> filterPartitionsWithLeaderChe...
method filterPartitionsWithLeaderCheck (line 570) | @VisibleForTesting
method listOffsetsUnsafe (line 602) | @KafkaClientInternalsDependant
method listAcls (line 630) | public Mono<Collection<AclBinding>> listAcls(ResourcePatternFilter fil...
method createAcls (line 635) | public Mono<Void> createAcls(Collection<AclBinding> aclBindings) {
method deleteAcls (line 640) | public Mono<Void> deleteAcls(Collection<AclBinding> aclBindings) {
method updateBrokerConfigByName (line 646) | public Mono<Void> updateBrokerConfigByName(Integer brokerId, String na...
method deleteRecords (line 652) | public Mono<Void> deleteRecords(Map<TopicPartition, Long> offsets) {
method alterReplicaLogDirs (line 659) | public Mono<Void> alterReplicaLogDirs(Map<TopicPartitionReplica, Strin...
method getActiveProducersState (line 664) | public Mono<Map<TopicPartition, List<ProducerState>>> getActiveProduce...
method incrementalAlterConfig (line 678) | private Mono<Void> incrementalAlterConfig(String topicName,
method alterConfig (line 696) | @SuppressWarnings("deprecation")
method partitionCalls (line 710) | private static <R, I> Mono<R> partitionCalls(Collection<I> items,
method partitionCalls (line 727) | private static <R, I> Mono<R> partitionCalls(Collection<I> items,
method mapMerger (line 741) | private static <K, V> BiFunction<Map<K, V>, Map<K, V>, Map<K, V>> mapM...
method close (line 750) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/SchemaRegistryService.java
class SchemaRegistryService (line 31) | @Service
class SubjectWithCompatibilityLevel (line 38) | @AllArgsConstructor
method api (line 46) | private ReactiveFailover<KafkaSrClientApi> api(KafkaCluster cluster) {
method getAllLatestVersionSchemas (line 50) | public Mono<List<SubjectWithCompatibilityLevel>> getAllLatestVersionSc...
method getAllSubjectNames (line 57) | public Mono<List<String>> getAllSubjectNames(KafkaCluster cluster) {
method parseSubjectListString (line 64) | @SneakyThrows
method getAllVersionsBySubject (line 71) | public Flux<SubjectWithCompatibilityLevel> getAllVersionsBySubject(Kaf...
method getSubjectVersions (line 76) | private Flux<Integer> getSubjectVersions(KafkaCluster cluster, String ...
method getSchemaSubjectByVersion (line 80) | public Mono<SubjectWithCompatibilityLevel> getSchemaSubjectByVersion(K...
method getLatestSchemaVersionBySubject (line 86) | public Mono<SubjectWithCompatibilityLevel> getLatestSchemaVersionBySub...
method getSchemaSubject (line 91) | private Mono<SubjectWithCompatibilityLevel> getSchemaSubject(KafkaClus...
method deleteSchemaSubjectByVersion (line 100) | public Mono<Void> deleteSchemaSubjectByVersion(KafkaCluster cluster, S...
method deleteLatestSchemaSubject (line 104) | public Mono<Void> deleteLatestSchemaSubject(KafkaCluster cluster, Stri...
method deleteSchemaSubject (line 108) | private Mono<Void> deleteSchemaSubject(KafkaCluster cluster, String sc...
method deleteSchemaSubjectEntirely (line 112) | public Mono<Void> deleteSchemaSubjectEntirely(KafkaCluster cluster, St...
method registerNewSchema (line 120) | public Mono<SubjectWithCompatibilityLevel> registerNewSchema(KafkaClus...
method updateSchemaCompatibility (line 132) | public Mono<Void> updateSchemaCompatibility(KafkaCluster cluster,
method updateGlobalSchemaCompatibility (line 141) | public Mono<Void> updateGlobalSchemaCompatibility(KafkaCluster cluster,
method getSchemaCompatibilityLevel (line 148) | public Mono<Compatibility> getSchemaCompatibilityLevel(KafkaCluster cl...
method getGlobalSchemaCompatibilityLevel (line 156) | public Mono<Compatibility> getGlobalSchemaCompatibilityLevel(KafkaClus...
method getSchemaCompatibilityInfoOrGlobal (line 162) | private Mono<Compatibility> getSchemaCompatibilityInfoOrGlobal(KafkaCl...
method checksSchemaCompatibility (line 168) | public Mono<CompatibilityCheckResponse> checksSchemaCompatibility(Kafk...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/StatisticsCache.java
class StatisticsCache (line 15) | @Component
method StatisticsCache (line 20) | public StatisticsCache(ClustersStorage clustersStorage) {
method replace (line 25) | public synchronized void replace(KafkaCluster c, Statistics stats) {
method update (line 29) | public synchronized void update(KafkaCluster c,
method onTopicDelete (line 46) | public synchronized void onTopicDelete(KafkaCluster c, String topic) {
method get (line 61) | public Statistics get(KafkaCluster c) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/StatisticsService.java
class StatisticsService (line 23) | @Service
method updateCache (line 33) | public Mono<Statistics> updateCache(KafkaCluster c) {
method getStatistics (line 37) | private Mono<Statistics> getStatistics(KafkaCluster cluster) {
method getLogDirInfo (line 66) | private Mono<InternalLogDirStats> getLogDirInfo(ClusterDescription des...
method describeTopics (line 71) | private Mono<Map<String, TopicDescription>> describeTopics(KafkaCluste...
method loadTopicConfigs (line 75) | private Mono<Map<String, List<ConfigEntry>>> loadTopicConfigs(KafkaClu...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/TopicsService.java
class TopicsService (line 52) | @Service
method loadTopics (line 68) | public Mono<List<InternalTopic>> loadTopics(KafkaCluster c, List<Strin...
method loadTopic (line 91) | private Mono<InternalTopic> loadTopic(KafkaCluster c, String topicName) {
method loadTopicAfterCreation (line 102) | private Mono<InternalTopic> loadTopicAfterCreation(KafkaCluster c, Str...
method createList (line 121) | private List<InternalTopic> createList(List<String> orderedNames,
method getPartitionOffsets (line 140) | private Mono<InternalPartitionsOffsets> getPartitionOffsets(Map<String...
method getTopicDetails (line 157) | public Mono<InternalTopic> getTopicDetails(KafkaCluster cluster, Strin...
method getTopicConfigs (line 161) | public Mono<List<ConfigEntry>> getTopicConfigs(KafkaCluster cluster, S...
method createTopic (line 172) | private Mono<InternalTopic> createTopic(KafkaCluster c, ReactiveAdminC...
method createTopic (line 183) | public Mono<InternalTopic> createTopic(KafkaCluster cluster, TopicCrea...
method recreateTopic (line 188) | public Mono<InternalTopic> recreateTopic(KafkaCluster cluster, String ...
method updateTopic (line 219) | private Mono<InternalTopic> updateTopic(KafkaCluster cluster,
method updateTopic (line 228) | public Mono<InternalTopic> updateTopic(KafkaCluster cl, String topicName,
method changeReplicationFactor (line 234) | private Mono<InternalTopic> changeReplicationFactor(
method changeReplicationFactor (line 247) | public Mono<ReplicationFactorChangeResponseDTO> changeReplicationFactor(
method getPartitionsReassignments (line 283) | private Map<TopicPartition, Optional<NewPartitionReassignment>> getPar...
method getCurrentAssignment (line 359) | private Map<Integer, List<Integer>> getCurrentAssignment(InternalTopic...
method getBrokersMap (line 369) | private Map<Integer, Integer> getBrokersMap(KafkaCluster cluster,
method increaseTopicPartitions (line 384) | public Mono<PartitionsIncreaseResponseDTO> increaseTopicPartitions(
method deleteTopic (line 418) | public Mono<Void> deleteTopic(KafkaCluster cluster, String topicName) {
method cloneTopic (line 427) | public Mono<InternalTopic> cloneTopic(
method getTopicsForPagination (line 446) | public Mono<List<InternalTopic>> getTopicsForPagination(KafkaCluster c...
method getActiveProducersState (line 463) | public Mono<Map<TopicPartition, List<ProducerState>>> getActiveProduce...
method filterExisting (line 468) | private Mono<List<String>> filterExisting(KafkaCluster cluster, Collec...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/acl/AclCsv.java
class AclCsv (line 17) | public class AclCsv {
method transformToCsvString (line 23) | public static String transformToCsvString(Collection<AclBinding> acls) {
method createAclString (line 28) | public static String createAclString(AclBinding binding) {
method parseCsvLine (line 43) | private static AclBinding parseCsvLine(String csv, int line) {
method parseCsv (line 65) | public static Collection<AclBinding> parseCsv(String csvString) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/acl/AclsService.java
class AclsService (line 45) | @Slf4j
method createAcl (line 52) | public Mono<Void> createAcl(KafkaCluster cluster, AclBinding aclBindin...
method createAclsWithLogging (line 57) | private Mono<Void> createAclsWithLogging(ReactiveAdminClient ac, Colle...
method deleteAcl (line 63) | public Mono<Void> deleteAcl(KafkaCluster cluster, AclBinding aclBindin...
method listAcls (line 71) | public Flux<AclBinding> listAcls(KafkaCluster cluster, ResourcePattern...
method getAclAsCsvString (line 78) | public Mono<String> getAclAsCsvString(KafkaCluster cluster) {
method syncAclWithAclCsv (line 84) | public Mono<Void> syncAclWithAclCsv(KafkaCluster cluster, String csv) {
method logAclSyncPlan (line 106) | private void logAclSyncPlan(KafkaCluster cluster, Set<AclBinding> toBe...
method createAllowBindings (line 127) | private List<AclBinding> createAllowBindings(ResourceType resourceType,
method createConsumerAcl (line 155) | public Mono<Void> createConsumerAcl(KafkaCluster cluster, CreateConsum...
method createConsumerBindings (line 162) | private List<AclBinding> createConsumerBindings(CreateConsumerAclDTO r...
method createProducerAcl (line 183) | public Mono<Void> createProducerAcl(KafkaCluster cluster, CreateProduc...
method createProducerBindings (line 191) | private List<AclBinding> createProducerBindings(CreateProducerAclDTO r...
method createStreamAppAcl (line 224) | public Mono<Void> createStreamAppAcl(KafkaCluster cluster, CreateStrea...
method createStreamAppBindings (line 232) | private List<AclBinding> createStreamAppBindings(CreateStreamAppAclDTO...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/AnalysisTasksStore.java
class AnalysisTasksStore (line 19) | class AnalysisTasksStore {
method setAnalysisError (line 24) | void setAnalysisError(TopicIdentity topicId,
method setAnalysisResult (line 37) | void setAnalysisResult(TopicIdentity topicId,
method updateProgress (line 54) | void updateProgress(TopicIdentity topicId,
method registerNewTask (line 66) | void registerNewTask(TopicIdentity topicId, Closeable task) {
method cancelAnalysis (line 70) | void cancelAnalysis(TopicIdentity topicId) {
method isAnalysisInProgress (line 75) | boolean isAnalysisInProgress(TopicIdentity id) {
method getTopicAnalysis (line 79) | Optional<TopicAnalysisDTO> getTopicAnalysis(TopicIdentity id) {
method createAnalysisDto (line 88) | private TopicAnalysisDTO createAnalysisDto(@Nullable RunningAnalysis r...
method toDto (line 102) | TopicAnalysisProgressDTO toDto() {
method stopTask (line 110) | @SneakyThrows
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/TopicAnalysisService.java
class TopicAnalysisService (line 30) | @Slf4j
method analyze (line 48) | public Mono<Void> analyze(KafkaCluster cluster, String topicName) {
method startAnalysis (line 54) | private synchronized void startAnalysis(KafkaCluster cluster, String t...
method cancelAnalysis (line 64) | public void cancelAnalysis(KafkaCluster cluster, String topicName) {
method getTopicAnalysis (line 68) | public Optional<TopicAnalysisDTO> getTopicAnalysis(KafkaCluster cluste...
class AnalysisTask (line 72) | class AnalysisTask implements Runnable, Closeable {
method AnalysisTask (line 83) | AnalysisTask(KafkaCluster cluster, TopicIdentity topicId) {
method close (line 95) | @Override
method run (line 100) | @Override
method updateProgress (line 133) | private void updateProgress(long processedOffsets, long summaryOffse...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/TopicAnalysisStats.java
class TopicAnalysisStats (line 20) | class TopicAnalysisStats {
class SizeStats (line 40) | static class SizeStats {
method apply (line 46) | void apply(int len) {
method toDto (line 53) | TopicAnalysisSizeStatsDTO toDto() {
class HourlyCounts (line 67) | static class HourlyCounts {
method apply (line 73) | void apply(ConsumerRecord<?, ?> rec) {
method toDto (line 80) | List<TopicAnalysisStatsHourlyMsgCountsInnerDTO> toDto() {
method apply (line 90) | void apply(ConsumerRecord<Bytes, Bytes> rec) {
method toDto (line 115) | TopicAnalysisStatsDTO toDto(@Nullable Integer partition) {
method maxNullable (line 133) | private static Long maxNullable(@Nullable Long v1, long v2) {
method minNullable (line 137) | private static Long minNullable(@Nullable Long v1, long v2) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/TopicIdentity.java
class TopicIdentity (line 7) | @ToString
method TopicIdentity (line 13) | public TopicIdentity(KafkaCluster cluster, String topic) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditRecord.java
method toJson (line 32) | @SneakyThrows
method create (line 39) | private static AuditResource create(PermissibleAction action, Resource t...
method getAccessedResources (line 43) | static List<AuditResource> getAccessedResources(AccessContext ctx) {
method nameId (line 71) | @Nullable
method successful (line 79) | static OperationResult successful() {
method error (line 83) | static OperationResult error(Throwable th) {
type OperationError (line 95) | enum OperationError {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditService.java
class AuditService (line 39) | @Slf4j
method AuditService (line 60) | @Autowired
method AuditService (line 71) | @VisibleForTesting
method createAuditWriter (line 76) | @VisibleForTesting
method consoleOnlyWriter (line 118) | private static AuditWriter consoleOnlyWriter(KafkaCluster cluster, boo...
method createTopicIfNeeded (line 125) | private static boolean createTopicIfNeeded(KafkaCluster cluster,
method printAuditInitError (line 165) | private static void printAuditInitError(KafkaCluster cluster, String e...
method isAuditTopic (line 175) | public boolean isAuditTopic(KafkaCluster cluster, String topic) {
method audit (line 182) | public void audit(AccessContext acxt, Signal<?> sig) {
method extractUser (line 194) | private Mono<AuthenticatedUser> extractUser(Signal<?> sig) {
method sendAuditRecord (line 211) | private void sendAuditRecord(AccessContext ctx, AuthenticatedUser user) {
method sendAuditRecord (line 215) | private void sendAuditRecord(AccessContext ctx, AuthenticatedUser user...
method close (line 231) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditWriter.java
method isTopicWritingEnabled (line 26) | boolean isTopicWritingEnabled() {
method writeAppOperation (line 31) | static void writeAppOperation(Logger consoleLogger,
method write (line 38) | void write(AccessContext ctx, AuthenticatedUser user, @Nullable Throwabl...
method write (line 42) | private void write(AuditRecord rec) {
method createRecord (line 62) | private static AuditRecord createRecord(AccessContext ctx,
method close (line 76) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/ConnectorInfo.java
method extract (line 21) | static ConnectorInfo extract(String className,
method extractFileIoConnector (line 43) | private static ConnectorInfo extractFileIoConnector(ConnectorTypeDTO type,
method extractJdbcSink (line 53) | private static ConnectorInfo extractJdbcSink(ConnectorTypeDTO type,
method extractDebeziumPg (line 83) | private static ConnectorInfo extractDebeziumPg(Map<String, Object> confi...
method extractDebeziumMysql (line 95) | private static ConnectorInfo extractDebeziumMysql(Map<String, Object> co...
method extractS3Sink (line 106) | private static ConnectorInfo extractS3Sink(ConnectorTypeDTO type,
method extractInputs (line 122) | private static List<String> extractInputs(ConnectorTypeDTO type,
method extractOutputs (line 131) | private static List<String> extractOutputs(ConnectorTypeDTO type,
method extractTopicNamesBestEffort (line 140) | private static Stream<String> extractTopicNamesBestEffort(
method extractTopicsOddrns (line 159) | private static List<String> extractTopicsOddrns(Map<String, Object> config,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/ConnectorsExporter.java
class ConnectorsExporter (line 21) | @RequiredArgsConstructor
method export (line 26) | Flux<DataEntityList> export(KafkaCluster cluster) {
method getConnectDataSources (line 43) | Flux<DataSource> getConnectDataSources(KafkaCluster cluster) {
method toDataSource (line 48) | private static DataSource toDataSource(ConnectDTO connect) {
method createConnectorDataEntity (line 55) | private static DataEntity createConnectorDataEntity(KafkaCluster cluster,
method extractMetadata (line 79) | private static Map<String, Object> extractMetadata(ConnectorDTO connec...
method extractConnectorInfo (line 84) | private static ConnectorInfo extractConnectorInfo(KafkaCluster cluster,
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddExporter.java
class OddExporter (line 18) | class OddExporter {
method OddExporter (line 24) | public OddExporter(StatisticsCache statisticsCache,
method OddExporter (line 34) | @VisibleForTesting
method createTopicsFilter (line 43) | private static Predicate<String> createTopicsFilter(OddIntegrationProp...
method createApiClient (line 51) | private static OpenDataDiscoveryIngestionApi createApiClient(OddIntegr...
method export (line 60) | public Mono<Void> export(KafkaCluster cluster) {
method exportTopics (line 65) | private Mono<Void> exportTopics(KafkaCluster c) {
method exportKafkaConnects (line 72) | private Mono<Void> exportKafkaConnects(KafkaCluster cluster) {
method createConnectDataSources (line 79) | private Mono<Void> createConnectDataSources(KafkaCluster cluster) {
method createKafkaDataSource (line 86) | private Mono<Void> createKafkaDataSource(KafkaCluster cluster) {
method sendDataEntities (line 99) | private Mono<Void> sendDataEntities(DataEntityList dataEntityList) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddExporterScheduler.java
class OddExporterScheduler (line 9) | @RequiredArgsConstructor
method sendMetricsToOdd (line 15) | @Scheduled(fixedRateString = "${kafka.send-stats-to-odd-millis:30000}")
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddIntegrationConfig.java
class OddIntegrationConfig (line 10) | @Configuration
method oddIntegrationProperties (line 14) | @Bean
method oddExporter (line 19) | @Bean
method oddExporterScheduler (line 26) | @Bean
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddIntegrationProperties.java
class OddIntegrationProperties (line 7) | @Data
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/Oddrn.java
class Oddrn (line 11) | public final class Oddrn {
method Oddrn (line 13) | private Oddrn() {
method clusterOddrn (line 16) | static String clusterOddrn(KafkaCluster cluster) {
method topicOddrnPath (line 23) | static KafkaPath topicOddrnPath(KafkaCluster cluster, String topic) {
method topicOddrn (line 30) | static String topicOddrn(KafkaCluster cluster, String topic) {
method awsS3Oddrn (line 34) | static String awsS3Oddrn(String bucket, String key) {
method connectDataSourceOddrn (line 42) | static String connectDataSourceOddrn(String connectUrl) {
method normalizedConnectHosts (line 49) | private static String normalizedConnectHosts(String connectUrlStr) {
method connectorOddrn (line 62) | static String connectorOddrn(String connectUrl, String connectorName) {
method bootstrapServersForOddrn (line 70) | private static String bootstrapServersForOddrn(String bootstrapServers) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/SchemaReferencesResolver.java
class SchemaReferencesResolver (line 14) | class SchemaReferencesResolver {
method SchemaReferencesResolver (line 18) | SchemaReferencesResolver(KafkaSrClientApi client) {
method resolve (line 22) | Mono<ImmutableMap<String, String>> resolve(List<SchemaReference> refs) {
method visit (line 29) | Resolving visit(String name) {
method resolve (line 33) | Resolving resolve(String ref, String schema) {
method resolveReferences (line 38) | private Mono<Resolving> resolveReferences(@Nullable List<SchemaReferen...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/TopicsExporter.java
class TopicsExporter (line 31) | @Slf4j
method export (line 38) | Flux<DataEntityList> export(KafkaCluster cluster) {
method createTopicDataEntity (line 53) | private Mono<DataEntity> createTopicDataEntity(KafkaCluster cluster, S...
method getNonDefaultConfigs (line 78) | private Map<String, Object> getNonDefaultConfigs(String topic, Statist...
method getTopicMetadata (line 88) | private Map<String, Object> getTopicMetadata(String topic, Statistics ...
method getTopicSchema (line 98) | private Mono<List<DataSetField>> getTopicSchema(KafkaCluster cluster,
method getSubjWithResolvedRefs (line 113) | private Mono<Tuple2<SchemaSubject, Map<String, String>>> getSubjWithRe...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/AvroExtractor.java
class AvroExtractor (line 12) | final class AvroExtractor {
method AvroExtractor (line 14) | private AvroExtractor() {
method extract (line 17) | static List<DataSetField> extract(AvroSchema avroSchema, KafkaPath top...
method extract (line 34) | private static void extract(Schema schema,
method createDataSetField (line 52) | private static DataSetField createDataSetField(String name,
method extractRecord (line 66) | private static void extractRecord(Schema schema,
method extractUnion (line 102) | private static void extractUnion(Schema schema,
method extractArray (line 152) | private static void extractArray(Schema schema,
method extractMap (line 179) | private static void extractMap(Schema schema,
method extractPrimitive (line 217) | private static void extractPrimitive(Schema schema,
method mapType (line 234) | private static DataSetFieldType.TypeEnum mapType(Schema.Type type) {
method mapSchema (line 249) | private static DataSetFieldType mapSchema(Schema schema, Boolean nulla...
method logicalType (line 256) | private static String logicalType(Schema schema) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/DataSetFieldsExtractors.java
class DataSetFieldsExtractors (line 15) | public final class DataSetFieldsExtractors {
method extract (line 17) | public static List<DataSetField> extract(SchemaSubject subject,
method rootField (line 33) | static DataSetField rootField(KafkaPath topicOddrn, boolean isKey) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/JsonSchemaExtractor.java
class JsonSchemaExtractor (line 28) | final class JsonSchemaExtractor {
method JsonSchemaExtractor (line 30) | private JsonSchemaExtractor() {
method extract (line 33) | static List<DataSetField> extract(JsonSchema jsonSchema, KafkaPath top...
method extract (line 49) | private static void extract(Schema schema,
method extractPrimitive (line 76) | private static void extractPrimitive(Schema schema,
method extractUnknown (line 96) | private static void extractUnknown(Schema schema,
method extractObject (line 116) | private static void extractObject(ObjectSchema schema,
method extractArray (line 165) | private static void extractArray(ArraySchema schema,
method extractCombined (line 211) | private static void extractCombined(CombinedSchema schema,
method getDescription (line 258) | private static String getDescription(Schema schema) {
method logicalTypeName (line 263) | private static String logicalTypeName(Schema schema) {
method createDataSetField (line 269) | private static DataSetField createDataSetField(Schema schema,
method mapType (line 289) | private static DataSetFieldType.TypeEnum mapType(Schema type) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/ProtoExtractor.java
class ProtoExtractor (line 27) | final class ProtoExtractor {
method ProtoExtractor (line 41) | private ProtoExtractor() {
method extract (line 44) | static List<DataSetField> extract(ProtobufSchema protobufSchema, Kafka...
method extract (line 62) | private static void extract(Descriptors.FieldDescriptor field,
method extractProtoWellKnownType (line 81) | private static boolean extractProtoWellKnownType(Descriptors.FieldDesc...
method extractRepeated (line 113) | private static void extractRepeated(Descriptors.FieldDescriptor field,
method extractMessage (line 138) | private static void extractMessage(Descriptors.FieldDescriptor field,
method extractPrimitive (line 175) | private static void extractPrimitive(Descriptors.FieldDescriptor field,
method getLogicalTypeName (line 193) | private static String getLogicalTypeName(Descriptors.FieldDescriptor f) {
method createDataSetField (line 199) | private static DataSetField createDataSetField(String name,
method mapType (line 218) | private static TypeEnum mapType(Descriptors.FieldDescriptor.Type type) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlApiClient.java
class KsqlApiClient (line 35) | @Slf4j
class KsqlResponseTable (line 46) | @Builder(toBuilder = true)
method getColumnValue (line 54) | public Optional<JsonNode> getColumnValue(List<JsonNode> row, String ...
class KsqlRequest (line 62) | @Value
method KsqlApiClient (line 73) | public KsqlApiClient(String baseUrl,
method webClient (line 82) | private static WebClient webClient(@Nullable ClustersProperties.Ksqldb...
method ksqlRequest (line 108) | private KsqlRequest ksqlRequest(String ksql, Map<String, String> strea...
method executeSelect (line 112) | private Flux<KsqlResponseTable> executeSelect(String ksql, Map<String,...
method isUnexpectedJsonArrayEndCharException (line 136) | private boolean isUnexpectedJsonArrayEndCharException(Throwable th) {
method executeStatement (line 141) | private Flux<KsqlResponseTable> executeStatement(String ksql,
method execute (line 170) | public Flux<KsqlResponseTable> execute(String ksql, Map<String, String...
method errorTableFlux (line 198) | private Flux<KsqlResponseTable> errorTableFlux(String errorText) {
method isUnsupportedStatementType (line 202) | private boolean isUnsupportedStatementType(SingleStatementContext cont...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlGrammar.java
class KsqlGrammar (line 20) | class KsqlGrammar {
method KsqlGrammar (line 22) | private KsqlGrammar() {
class KsqlStatements (line 25) | @Value
method parse (line 31) | static Optional<KsqlStatements> parse(String ksql) {
method isSelect (line 40) | static boolean isSelect(KsqlGrammarParser.SingleStatementContext state...
method parseStatements (line 44) | private static ksql.KsqlGrammarParser.StatementsContext parseStatement...
class CaseInsensitiveStream (line 66) | @RequiredArgsConstructor
method from (line 71) | public static CaseInsensitiveStream from(CharStream stream) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2.java
class KsqlServiceV2 (line 20) | @Slf4j
class KsqlExecuteCommand (line 24) | @lombok.Value
method registerCommand (line 36) | public String registerCommand(KafkaCluster cluster,
method execute (line 44) | public Flux<KsqlResponseTable> execute(String commandId) {
method listTables (line 54) | public Flux<KsqlTableDescriptionDTO> listTables(KafkaCluster cluster) {
method listStreams (line 76) | public Flux<KsqlStreamDescriptionDTO> listStreams(KafkaCluster cluster) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/response/DynamicParser.java
class DynamicParser (line 13) | class DynamicParser {
method DynamicParser (line 15) | private DynamicParser() {
method parseArray (line 18) | static KsqlResponseTable parseArray(String tableName, JsonNode array) {
method parseArray (line 22) | static KsqlResponseTable parseArray(String tableName,
method getFieldNamesFromArray (line 38) | private static List<String> getFieldNamesFromArray(JsonNode array) {
method parseObject (line 48) | static KsqlResponseTable parseObject(String tableName, JsonNode node) {
method parseObject (line 59) | static KsqlResponseTable parseObject(String tableName, List<String> co...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/response/ResponseParser.java
class ResponseParser (line 15) | public class ResponseParser {
method ResponseParser (line 17) | private ResponseParser() {
method parseSelectResponse (line 20) | public static Optional<KsqlApiClient.KsqlResponseTable> parseSelectRes...
method parseSelectHeadersString (line 44) | @VisibleForTesting
method errorTableWithTextMsg (line 72) | public static KsqlApiClient.KsqlResponseTable errorTableWithTextMsg(St...
method parseErrorResponse (line 81) | public static KsqlApiClient.KsqlResponseTable parseErrorResponse(WebCl...
method parseStatementResponse (line 96) | public static List<KsqlApiClient.KsqlResponseTable> parseStatementResp...
method parseObjectDynamically (line 162) | private static List<KsqlApiClient.KsqlResponseTable> parseObjectDynami...
method parseObject (line 167) | private static List<KsqlApiClient.KsqlResponseTable> parseObject(
method parseArray (line 172) | private static List<KsqlApiClient.KsqlResponseTable> parseArray(
method parseProperties (line 177) | private static List<KsqlApiClient.KsqlResponseTable> parseProperties(J...
method parseUnknownResponse (line 189) | private static List<KsqlApiClient.KsqlResponseTable> parseUnknownRespo...
method arrayFieldNonEmpty (line 193) | private static boolean arrayFieldNonEmpty(JsonNode json, String field) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/DataMasking.java
class DataMasking (line 21) | public class DataMasking {
class Mask (line 25) | @Value
method shouldBeApplied (line 34) | boolean shouldBeApplied(String topic, Serde.Target target) {
method create (line 43) | public static DataMasking create(@Nullable List<ClustersProperties.Mas...
method DataMasking (line 60) | @VisibleForTesting
method getMaskerForTopic (line 65) | public UnaryOperator<TopicMessageDTO> getMaskerForTopic(String topic) {
method getMaskingFunction (line 73) | @VisibleForTesting
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/FieldsSelector.java
type FieldsSelector (line 9) | interface FieldsSelector {
method create (line 11) | static FieldsSelector create(ClustersProperties.Masking property) {
method shouldBeMasked (line 26) | boolean shouldBeMasked(String fieldName);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Mask.java
class Mask (line 12) | class Mask extends MaskingPolicy {
method Mask (line 18) | Mask(FieldsSelector fieldsSelector, List<String> maskingChars) {
method applyToJsonContainer (line 23) | @Override
method applyToString (line 28) | @Override
method createMasker (line 33) | private static UnaryOperator<String> createMasker(List<String> masking...
method maskWithFieldsCheck (line 54) | private JsonNode maskWithFieldsCheck(JsonNode node) {
method maskNodeRecursively (line 75) | private JsonNode maskNodeRecursively(JsonNode node) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/MaskingPolicy.java
class MaskingPolicy (line 7) | @RequiredArgsConstructor
method create (line 10) | public static MaskingPolicy create(ClustersProperties.Masking property) {
method fieldShouldBeMasked (line 33) | protected boolean fieldShouldBeMasked(String fieldName) {
method applyToJsonContainer (line 37) | public abstract ContainerNode<?> applyToJsonContainer(ContainerNode<?>...
method applyToString (line 39) | public abstract String applyToString(String str);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Remove.java
class Remove (line 9) | class Remove extends MaskingPolicy {
method Remove (line 11) | Remove(FieldsSelector fieldsSelector) {
method applyToString (line 15) | @Override
method applyToJsonContainer (line 20) | @Override
method removeFields (line 25) | private JsonNode removeFields(JsonNode node) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Replace.java
class Replace (line 10) | class Replace extends MaskingPolicy {
method Replace (line 16) | Replace(FieldsSelector fieldsSelector, String replacementString) {
method applyToString (line 21) | @Override
method applyToJsonContainer (line 26) | @Override
method replaceWithFieldsCheck (line 31) | private JsonNode replaceWithFieldsCheck(JsonNode node) {
method replaceRecursive (line 53) | private JsonNode replaceRecursive(JsonNode node) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/JmxMetricsFormatter.java
class JmxMetricsFormatter (line 16) | class JmxMetricsFormatter {
method constructMetricsList (line 22) | static List<RawMetric> constructMetricsList(ObjectName jmxMetric,
method fixIllegalChars (line 43) | private static String fixIllegalChars(String str) {
method convertNumericValue (line 49) | private static Optional<BigDecimal> convertNumericValue(Object value) {
method getLabelsMap (line 68) | private static LinkedHashMap<String, String> getLabelsMap(ObjectName m...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/JmxMetricsRetriever.java
class JmxMetricsRetriever (line 26) | @Service
method close (line 41) | @Override
method retrieve (line 46) | @Override
method isSslJmxEndpoint (line 57) | private boolean isSslJmxEndpoint(KafkaCluster cluster) {
method retrieveSync (line 61) | @SneakyThrows
method withJmxConnector (line 71) | private void withJmxConnector(String jmxUrl,
method prepareJmxEnvAndSetThreadLocal (line 90) | private Map<String, Object> prepareJmxEnvAndSetThreadLocal(KafkaCluste...
method getMetricsFromJmx (line 114) | @SneakyThrows
method extractObjectMetrics (line 123) | @SneakyThrows
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/JmxSslSocketFactory.java
class JmxSslSocketFactory (line 49) | @Slf4j
method initialized (line 72) | public static boolean initialized() {
method setSslContextThreadLocal (line 89) | public static void setSslContextThreadLocal(@Nullable String truststor...
method clearFactoriesCache (line 98) | public static void clearFactoriesCache() {
method clearThreadLocalContext (line 102) | public static void clearThreadLocalContext() {
method editJmxConnectorEnv (line 106) | public static void editJmxConnectorEnv(Map<String, Object> env) {
method JmxSslSocketFactory (line 114) | @SneakyThrows
method createFactoryFromThreadLocalCtx (line 119) | @SneakyThrows
method threadLocalContextSet (line 152) | private boolean threadLocalContextSet() {
method createSocket (line 156) | @Override
method createSocket (line 171) | @Override
method createSocket (line 179) | @Override
method createSocket (line 188) | @Override
method createSocket (line 196) | @Override
method getDefaultCipherSuites (line 205) | @Override
method getSupportedCipherSuites (line 213) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/MetricsCollector.java
class MetricsCollector (line 19) | @Component
method getBrokerMetrics (line 27) | public Mono<Metrics> getBrokerMetrics(KafkaCluster cluster, Collection...
method getMetrics (line 35) | private Mono<List<RawMetric>> getMetrics(KafkaCluster kafkaCluster, No...
method collectMetrics (line 48) | public Metrics collectMetrics(KafkaCluster cluster, Map<Node, List<Raw...
method populateWellknowMetrics (line 61) | private WellKnownMetrics populateWellknowMetrics(KafkaCluster cluster,...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/MetricsRetriever.java
type MetricsRetriever (line 7) | interface MetricsRetriever {
method retrieve (line 8) | Flux<RawMetric> retrieve(KafkaCluster c, Node node);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/PrometheusEndpointMetricsParser.java
class PrometheusEndpointMetricsParser (line 12) | @Slf4j
method parse (line 26) | static Optional<RawMetric> parse(String s) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/PrometheusMetricsRetriever.java
class PrometheusMetricsRetriever (line 20) | @Service
method retrieve (line 27) | @Override
method retrieve (line 45) | @VisibleForTesting
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/RawMetric.java
type RawMetric (line 9) | public interface RawMetric {
method name (line 11) | String name();
method labels (line 13) | Map<String, String> labels();
method value (line 15) | BigDecimal value();
method identityKey (line 18) | default Object identityKey() {
method copyWithValue (line 22) | RawMetric copyWithValue(BigDecimal newValue);
method create (line 26) | static RawMetric create(String name, Map<String, String> labels, BigDe...
class SimpleMetric (line 30) | @AllArgsConstructor
method name (line 39) | @Override
method labels (line 44) | @Override
method value (line 49) | @Override
method copyWithValue (line 54) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/WellKnownMetrics.java
class WellKnownMetrics (line 12) | class WellKnownMetrics {
method populate (line 25) | void populate(Node node, RawMetric rawMetric) {
method apply (line 30) | void apply(Metrics.MetricsBuilder metricsBuilder) {
method updateBrokerIOrates (line 37) | private void updateBrokerIOrates(Node node, RawMetric rawMetric) {
method updateTopicsIOrates (line 55) | private void updateTopicsIOrates(RawMetric rawMetric) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/AbstractProviderCondition.java
class AbstractProviderCondition (line 14) | public abstract class AbstractProviderCondition {
method getRegisteredProvidersTypes (line 18) | protected Set<String> getRegisteredProvidersTypes(final Environment en...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/AccessControlService.java
class AccessControlService (line 48) | @Service
method init (line 65) | @PostConstruct
method validateAccess (line 98) | public Mono<Void> validateAccess(AccessContext context) {
method getUser (line 136) | public Mono<AuthenticatedUser> getUser() {
method isApplicationConfigAccessible (line 144) | public boolean isApplicationConfigAccessible(AccessContext context, Au...
method isClusterAccessible (line 158) | private boolean isClusterAccessible(AccessContext context, Authenticat...
method isClusterAccessible (line 171) | public Mono<Boolean> isClusterAccessible(ClusterDTO cluster) {
method isClusterConfigAccessible (line 184) | public boolean isClusterConfigAccessible(AccessContext context, Authen...
method isTopicAccessible (line 202) | public boolean isTopicAccessible(AccessContext context, AuthenticatedU...
method filterViewableTopics (line 220) | public Mono<List<InternalTopic>> filterViewableTopics(List<InternalTop...
method isConsumerGroupAccessible (line 239) | private boolean isConsumerGroupAccessible(AccessContext context, Authe...
method isConsumerGroupAccessible (line 257) | public Mono<Boolean> isConsumerGroupAccessible(String groupId, String ...
method isSchemaAccessible (line 272) | public boolean isSchemaAccessible(AccessContext context, Authenticated...
method isSchemaAccessible (line 290) | public Mono<Boolean> isSchemaAccessible(String schema, String clusterN...
method isConnectAccessible (line 305) | public boolean isConnectAccessible(AccessContext context, Authenticate...
method isConnectAccessible (line 323) | public Mono<Boolean> isConnectAccessible(ConnectDTO dto, String cluste...
method isConnectAccessible (line 331) | public Mono<Boolean> isConnectAccessible(String connectName, String cl...
method isConnectorAccessible (line 346) | public boolean isConnectorAccessible(AccessContext context, Authentica...
method isConnectorAccessible (line 354) | public Mono<Boolean> isConnectorAccessible(String connectName, String ...
method isKsqlAccessible (line 370) | private boolean isKsqlAccessible(AccessContext context, AuthenticatedU...
method isAclAccessible (line 387) | private boolean isAclAccessible(AccessContext context, AuthenticatedUs...
method isAuditAccessible (line 404) | private boolean isAuditAccessible(AccessContext context, Authenticated...
method getOauthExtractors (line 421) | public Set<ProviderAuthorityExtractor> getOauthExtractors() {
method getRoles (line 425) | public List<Role> getRoles() {
method isAccessible (line 432) | private boolean isAccessible(Resource resource, @Nullable String resou...
method filterRole (line 448) | private Predicate<Role> filterRole(AuthenticatedUser user) {
method filterCluster (line 452) | private Predicate<Role> filterCluster(String cluster) {
method filterCluster (line 458) | private Predicate<Role> filterCluster(Resource resource, String cluste...
method filterResource (line 465) | private Predicate<Permission> filterResource(Resource resource) {
method filterResourceValue (line 469) | private Predicate<Permission> filterResourceValue(@Nullable String res...
method isRbacEnabled (line 483) | public boolean isRbacEnabled() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/CognitoAuthorityExtractor.java
class CognitoAuthorityExtractor (line 18) | @Slf4j
method isApplicable (line 23) | @Override
method extract (line 28) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/GithubAuthorityExtractor.java
class GithubAuthorityExtractor (line 25) | @Slf4j
method isApplicable (line 38) | @Override
method extract (line 43) | @Override
method getOrganizationRoles (line 92) | private Mono<Set<String>> getOrganizationRoles(DefaultOAuth2User princ...
method getTeamRoles (line 130) | @SuppressWarnings("unchecked")
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/GoogleAuthorityExtractor.java
class GoogleAuthorityExtractor (line 16) | @Slf4j
method isApplicable (line 22) | @Override
method extract (line 27) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/OauthAuthorityExtractor.java
class OauthAuthorityExtractor (line 22) | @Slf4j
method isApplicable (line 27) | @Override
method extract (line 38) | @Override
method convertRoles (line 90) | @SuppressWarnings("unchecked")
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/ProviderAuthorityExtractor.java
type ProviderAuthorityExtractor (line 8) | public interface ProviderAuthorityExtractor {
method isApplicable (line 12) | boolean isApplicable(String provider, Map<String, String> customParams);
method extract (line 14) | Mono<Set<String>> extract(AccessControlService acs, Object value, Map<...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/RbacLdapAuthoritiesExtractor.java
class RbacLdapAuthoritiesExtractor (line 20) | @Slf4j
method RbacLdapAuthoritiesExtractor (line 26) | public RbacLdapAuthoritiesExtractor(ApplicationContext context,
method getAdditionalRoles (line 33) | @Override
method getRoles (line 51) | private Set<String> getRoles(String userDn, String username) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ApplicationMetrics.java
class ApplicationMetrics (line 18) | @RequiredArgsConstructor(access = PRIVATE)
method forCluster (line 28) | public static ApplicationMetrics forCluster(KafkaCluster cluster) {
method noop (line 32) | @VisibleForTesting
method meterPolledRecords (line 37) | public void meterPolledRecords(String topic, PolledRecords polled, boo...
method polledRecords (line 46) | private Counter polledRecords(String topic) {
method polledBytes (line 54) | private DistributionSummary polledBytes(String topic) {
method pollTimer (line 62) | private Timer pollTimer(String topic) {
method pollThrottlingActivations (line 70) | private Counter pollThrottlingActivations() {
method activeConsumers (line 77) | public AtomicInteger activeConsumers() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ApplicationRestarter.java
class ApplicationRestarter (line 11) | @Slf4j
method onApplicationEvent (line 18) | @Override
method requestRestart (line 24) | public void requestRestart() {
method closeApplicationContext (line 35) | private void closeApplicationContext(ApplicationContext context) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/DynamicConfigOperations.java
class DynamicConfigOperations (line 42) | @Slf4j
method dynamicConfigPropertiesInitializer (line 55) | public static ApplicationContextInitializer<ConfigurableApplicationCon...
method dynamicConfigEnabled (line 64) | public boolean dynamicConfigEnabled() {
method filteringGroovyEnabled (line 68) | public boolean filteringGroovyEnabled() {
method dynamicConfigFilePath (line 72) | private Path dynamicConfigFilePath() {
method loadDynamicPropertySource (line 79) | @SneakyThrows
method getCurrentProperties (line 97) | public PropertiesStructure getCurrentProperties() {
method getNullableBean (line 111) | @Nullable
method persist (line 120) | public void persist(PropertiesStructure properties) {
method uploadConfigRelatedFile (line 128) | public Mono<Path> uploadConfigRelatedFile(FilePart file) {
method checkIfFilteringGroovyEnabled (line 155) | public void checkIfFilteringGroovyEnabled() {
method checkIfDynamicConfigEnabled (line 163) | private void checkIfDynamicConfigEnabled() {
method writeYamlToFile (line 171) | @SneakyThrows
method serializeToYaml (line 195) | private String serializeToYaml(PropertiesStructure props) {
class PropertiesStructure (line 220) | @Data
class Auth (line 230) | @Data
method initAndValidate (line 237) | public void initAndValidate() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/EmptyRedirectStrategy.java
class EmptyRedirectStrategy (line 11) | public class EmptyRedirectStrategy implements ServerRedirectStrategy {
method sendRedirect (line 17) | public Mono<Void> sendRedirect(ServerWebExchange exchange, URI locatio...
method createLocation (line 27) | private URI createLocation(ServerWebExchange exchange, URI location) {
method setHttpStatus (line 42) | public void setHttpStatus(HttpStatus httpStatus) {
method setContextRelative (line 47) | public void setContextRelative(boolean contextRelative) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/GithubReleaseInfo.java
class GithubReleaseInfo (line 8) | @Slf4j
method empty (line 18) | static GithubReleaseDto empty() {
method GithubReleaseInfo (line 27) | public GithubReleaseInfo() {
method GithubReleaseInfo (line 31) | @VisibleForTesting
method get (line 44) | public GithubReleaseDto get() {
method refresh (line 48) | public Mono<Void> refresh() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/KafkaServicesValidation.java
class KafkaServicesValidation (line 25) | @Slf4j
method KafkaServicesValidation (line 28) | private KafkaServicesValidation() {
method valid (line 31) | private static Mono<ApplicationPropertyValidationDTO> valid() {
method invalid (line 35) | private static Mono<ApplicationPropertyValidationDTO> invalid(String e...
method invalid (line 39) | private static Mono<ApplicationPropertyValidationDTO> invalid(Throwabl...
method validateTruststore (line 46) | public static Optional<String> validateTruststore(TruststoreConfig tru...
method validateClusterConnection (line 63) | public static Mono<ApplicationPropertyValidationDTO> validateClusterCo...
method validateSchemaRegistry (line 93) | public static Mono<ApplicationPropertyValidationDTO> validateSchemaReg...
method validateConnect (line 108) | public static Mono<ApplicationPropertyValidationDTO> validateConnect(
method validateKsql (line 123) | public static Mono<ApplicationPropertyValidationDTO> validateKsql(
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/KafkaVersion.java
class KafkaVersion (line 5) | public final class KafkaVersion {
method KafkaVersion (line 7) | private KafkaVersion() {
method parse (line 10) | public static Optional<Float> parse(String version) throws NumberForma...
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ReactiveFailover.java
class ReactiveFailover (line 15) | public class ReactiveFailover<T> {
method createNoop (line 28) | public static <T> ReactiveFailover<T> createNoop(T publisher) {
method create (line 37) | public static <T> ReactiveFailover<T> create(List<T> publishers,
method create (line 48) | public static <T, A> ReactiveFailover<T> create(List<A> args,
method ReactiveFailover (line 61) | private ReactiveFailover(List<PublisherHolder<T>> publishers,
method mono (line 70) | public <V> Mono<V> mono(Function<T, Mono<V>> f) {
method mono (line 78) | private <V> Mono<V> mono(Function<T, Mono<V>> f, List<PublisherHolder<...
method flux (line 95) | public <V> Flux<V> flux(Function<T, Flux<V>> f) {
method flux (line 103) | private <V> Flux<V> flux(Function<T, Flux<V>> f, List<PublisherHolder<...
method getActivePublishers (line 123) | private synchronized List<PublisherHolder<T>> getActivePublishers() {
class PublisherHolder (line 137) | static class PublisherHolder<T> {
method PublisherHolder (line 144) | PublisherHolder(Supplier<T> supplier, long retryGracePeriodMs) {
method get (line 149) | synchronized Mono<T> get() {
method markFailed (line 160) | void markFailed() {
method isActive (line 164) | boolean isActive() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ResourceUtil.java
class ResourceUtil (line 10) | public class ResourceUtil {
method ResourceUtil (line 12) | private ResourceUtil() {
method readAsString (line 15) | public static String readAsString(Resource resource) throws IOException {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/SslPropertiesUtil.java
class SslPropertiesUtil (line 8) | public final class SslPropertiesUtil {
method SslPropertiesUtil (line 10) | private SslPropertiesUtil() {
method addKafkaSslProperties (line 13) | public static void addKafkaSslProperties(@Nullable ClustersProperties....
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java
class WebClientConfigurator (line 28) | public class WebClientConfigurator {
method WebClientConfigurator (line 35) | public WebClientConfigurator() {
method defaultOM (line 39) | private static ObjectMapper defaultOM() {
method configureSsl (line 46) | public WebClientConfigurator configureSsl(@Nullable ClustersProperties...
method configureSsl (line 56) | @SneakyThrows
method configureBasicAuth (line 100) | public WebClientConfigurator configureBasicAuth(@Nullable String usern...
method configureBufferSize (line 111) | public WebClientConfigurator configureBufferSize(DataSize maxBuffSize) {
method configureObjectMapper (line 116) | public WebClientConfigurator configureObjectMapper(ObjectMapper mapper) {
method configureCodecs (line 126) | public WebClientConfigurator configureCodecs(Consumer<ClientCodecConfi...
method build (line 131) | public WebClient build() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/AnyFieldSchema.java
class AnyFieldSchema (line 7) | class AnyFieldSchema implements FieldSchema {
method get (line 9) | static AnyFieldSchema get() {
method AnyFieldSchema (line 13) | private AnyFieldSchema() {
method toJsonNode (line 16) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/ArrayFieldSchema.java
class ArrayFieldSchema (line 7) | class ArrayFieldSchema implements FieldSchema {
method ArrayFieldSchema (line 10) | ArrayFieldSchema(FieldSchema itemsSchema) {
method toJsonNode (line 14) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/AvroJsonSchemaConverter.java
class AvroJsonSchemaConverter (line 14) | public class AvroJsonSchemaConverter implements JsonSchemaConverter<Sche...
method convert (line 16) | @Override
method convertField (line 38) | private FieldSchema convertField(Schema.Field field, Map<String, Field...
method convertSchema (line 42) | private FieldSchema convertSchema(Schema schema,
method createUnionSchema (line 76) | private FieldSchema createUnionSchema(Schema schema, Map<String, Field...
method createObjectSchema (line 109) | private FieldSchema createObjectSchema(Schema schema,
method createRefField (line 142) | private RefFieldSchema createRefField(String definitionName) {
method createArraySchema (line 146) | private ArrayFieldSchema createArraySchema(Schema schema,
method convertType (line 153) | private JsonType convertType(Schema schema) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/EnumJsonType.java
class EnumJsonType (line 10) | class EnumJsonType extends JsonType {
method EnumJsonType (line 13) | EnumJsonType(List<String> values) {
method toJsonNode (line 18) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/FieldSchema.java
type FieldSchema (line 6) | interface FieldSchema {
method toJsonNode (line 7) | JsonNode toJsonNode(ObjectMapper mapper);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonAvroConversion.java
class JsonAvroConversion (line 42) | public class JsonAvroConversion {
method convertJsonToAvro (line 51) | public static Object convertJsonToAvro(String jsonString, Schema avroS...
method convert (line 61) | private static Object convert(JsonNode node, Schema avroSchema) {
method convertAvroToJson (line 197) | public static JsonNode convertAvroToJson(Object obj, Schema avroSchema) {
method selectUnionTypeFieldName (line 279) | private static String selectUnionTypeFieldName(Schema unionSchema,
method processLogicalType (line 296) | private static Object processLogicalType(JsonNode node, Schema schema) {
method processLogicalType (line 304) | private static JsonNode processLogicalType(Object obj, Schema schema) {
method findConversion (line 312) | private static Optional<LogicalTypeConversion> findConversion(Schema s...
method isLogicalType (line 319) | private static boolean isLogicalType(Schema schema) {
method assertJsonType (line 323) | private static void assertJsonType(JsonNode node, JsonNodeType... allo...
method assertJsonNumberType (line 331) | private static void assertJsonNumberType(JsonNode node, JsonParser.Num...
type LogicalTypeConversion (line 339) | enum LogicalTypeConversion {
method LogicalTypeConversion (line 521) | LogicalTypeConversion(String name,
method getJsonSchema (line 531) | static Optional<FieldSchema> getJsonSchema(Schema schema) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonSchema.java
class JsonSchema (line 16) | @Data
method toJson (line 28) | public String toJson() {
method stringSchema (line 63) | @SneakyThrows
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonSchemaConverter.java
type JsonSchemaConverter (line 5) | public interface JsonSchemaConverter<T> {
method convert (line 6) | JsonSchema convert(URI basePath, T schema);
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonType.java
class JsonType (line 7) | abstract class JsonType {
method JsonType (line 11) | protected JsonType(Type type) {
method getType (line 15) | Type getType() {
method toJsonNode (line 19) | abstract Map<String, JsonNode> toJsonNode(ObjectMapper mapper);
type Type (line 21) | enum Type {
method Type (line 33) | Type() {
method getName (line 37) | public String getName() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/MapFieldSchema.java
class MapFieldSchema (line 10) | class MapFieldSchema implements FieldSchema {
method MapFieldSchema (line 13) | MapFieldSchema(@Nullable FieldSchema itemSchema) {
method MapFieldSchema (line 17) | MapFieldSchema() {
method toJsonNode (line 21) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/ObjectFieldSchema.java
class ObjectFieldSchema (line 12) | class ObjectFieldSchema implements FieldSchema {
method ObjectFieldSchema (line 19) | ObjectFieldSchema(Map<String, FieldSchema> properties,
method getProperties (line 25) | Map<String, FieldSchema> getProperties() {
method getRequired (line 29) | List<String> getRequired() {
method toJsonNode (line 33) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/OneOfFieldSchema.java
class OneOfFieldSchema (line 8) | class OneOfFieldSchema implements FieldSchema {
method OneOfFieldSchema (line 11) | OneOfFieldSchema(List<FieldSchema> schemaList) {
method toJsonNode (line 15) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/ProtobufSchemaConverter.java
class ProtobufSchemaConverter (line 38) | public class ProtobufSchemaConverter implements JsonSchemaConverter<Desc...
method convert (line 55) | @Override
method registerObjectAndReturnRef (line 67) | private RefFieldSchema registerObjectAndReturnRef(Descriptors.Descript...
method createRefField (line 90) | private RefFieldSchema createRefField(String definition) {
method convertField (line 94) | private FieldSchema convertField(Descriptors.FieldDescriptor field,
method convertProtoWellKnownTypes (line 120) | private Optional<FieldSchema> convertProtoWellKnownTypes(Descriptors.F...
method convertType (line 157) | private JsonType convertType(Descriptors.FieldDescriptor field) {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/RefFieldSchema.java
class RefFieldSchema (line 7) | class RefFieldSchema implements FieldSchema {
method RefFieldSchema (line 10) | RefFieldSchema(String ref) {
method toJsonNode (line 14) | @Override
method getRef (line 19) | String getRef() {
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/SimpleFieldSchema.java
class SimpleFieldSchema (line 6) | class SimpleFieldSchema implements FieldSchema {
method SimpleFieldSchema (line 9) | SimpleFieldSchema(JsonType type) {
method toJsonNode (line 13) | @Override
FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/SimpleJsonType.java
class SimpleJsonType (line 9) | class SimpleJsonType extends JsonType {
method SimpleJsonType (line 13) | SimpleJsonType(Type type) {
method SimpleJsonType (line 17) | SimpleJsonType(Type type, Map<String, JsonNode> additionalTypeProperti...
method toJsonNode (line 22) | @Override
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/AbstractIntegrationTest.java
class AbstractIntegrationTest (line 28) | @SpringBootTest
class Initializer (line 67) | public static class Initializer
method initialize (line 69) | @Override
method createTopic (line 100) | public static void createTopic(NewTopic topic) {
method deleteTopic (line 104) | public static void deleteTopic(String topic) {
method withAdminClient (line 108) | private static void withAdminClient(ThrowingConsumer<AdminClient> cons...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConnectServiceTests.java
class KafkaConnectServiceTests (line 28) | @Slf4j
method setUp (line 45) | @BeforeEach
method tearDown (line 63) | @AfterEach
method shouldListAllConnectors (line 72) | @Test
method shouldFilterByNameConnectors (line 83) | @Test
method shouldFilterByStatusConnectors (line 97) | @Test
method shouldFilterByTypeConnectors (line 111) | @Test
method shouldNotFilterConnectors (line 125) | @Test
method shouldListConnectors (line 139) | @Test
method shouldReturnNotFoundForNonExistingCluster (line 149) | @Test
method shouldReturnNotFoundForNonExistingConnectName (line 158) | @Test
method shouldRetrieveConnector (line 167) | @Test
method shouldUpdateConfig (line 189) | @Test
method shouldReturn400WhenConnectReturns400ForInvalidConfigCreate (line 220) | @Test
method shouldReturn400WhenConnectReturns500ForInvalidConfigCreate (line 246) | @Test
method shouldReturn400WhenConnectReturns400ForInvalidConfigUpdate (line 270) | @Test
method shouldReturn400WhenConnectReturns500ForInvalidConfigUpdate (line 302) | @Test
method shouldRetrieveConnectorPlugins (line 331) | @Test
method shouldSuccessfullyValidateConnectorPluginConfiguration (line 341) | @Test
method shouldValidateAndReturnErrorsOfConnectorPluginConfiguration (line 362) | @Test
method shouldReturn400WhenTryingToCreateConnectorWithExistingName (line 394) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConsumerGroupTests.java
class KafkaConsumerGroupTests (line 27) | @Slf4j
method shouldNotFoundWhenNoSuchConsumerGroupId (line 32) | @Test
method shouldOkWhenConsumerGroupIsNotActive (line 44) | @Test
method shouldBeBadRequestWhenConsumerGroupIsActive (line 66) | @Test
method shouldReturnConsumerGroupsWithPagination (line 86) | @Test
method startConsumerGroups (line 148) | private Closeable startConsumerGroups(int count, String consumerGroupP...
method createTopicWithRandomName (line 166) | private String createTopicWithRandomName() {
method createTestConsumerWithGroupId (line 174) | private KafkaConsumer<Bytes, Bytes> createTestConsumerWithGroupId(Stri...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConsumerTests.java
class KafkaConsumerTests (line 26) | @Slf4j
method shouldDeleteRecords (line 33) | @Test
method shouldIncreasePartitionsUpTo10 (line 94) | @Test
method shouldReturn404ForNonExistingTopic (line 141) | @Test
method shouldReturnConfigsForBroker (line 158) | @Test
method shouldReturn404ForNonExistingBroker (line 182) | @Test
method shouldRetrieveTopicConfig (line 193) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaTopicCreateTests.java
class KafkaTopicCreateTests (line 10) | public class KafkaTopicCreateTests extends AbstractIntegrationTest {
method setUpBefore (line 15) | @BeforeEach
method shouldCreateNewTopicSuccessfully (line 23) | @Test
method shouldReturn400IfTopicAlreadyExists (line 33) | @Test
method shouldRecreateExistingTopicSuccessfully (line 55) | @Test
method shouldCloneExistingTopicSuccessfully (line 80) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/ReadOnlyModeTests.java
class ReadOnlyModeTests (line 12) | public class ReadOnlyModeTests extends AbstractIntegrationTest {
method shouldCreateTopicForNonReadonlyCluster (line 17) | @Test
method shouldNotCreateTopicForReadonlyCluster (line 33) | @Test
method shouldUpdateTopicForNonReadonlyCluster (line 49) | @Test
method shouldNotUpdateTopicForReadonlyCluster (line 75) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/SchemaRegistryServiceTests.java
class SchemaRegistryServiceTests (line 28) | @Slf4j
method setUpBefore (line 34) | @BeforeEach
method should404WhenGetAllSchemasForUnknownCluster (line 39) | @Test
method shouldReturn404WhenGetLatestSchemaByNonExistingSubject (line 48) | @Test
method shouldBeBadRequestIfNoSchemaType (line 61) | @Test
method shouldNotDoAnythingIfSchemaNotChanged (line 74) | @Test
method shouldReturnCorrectMessageWhenIncompatibleSchema (line 111) | @Test
method shouldCreateNewProtobufSchema (line 166) | @Test
method shouldCreateNewProtobufSchemaWithRefs (line 195) | @Test
method shouldReturnBackwardAsGlobalCompatibilityLevelByDefault (line 246) | @Test
method shouldReturnNotEmptyResponseWhenGetAllSchemas (line 262) | @Test
method shouldOkWhenCreateNewSchemaThenGetAndUpdateItsCompatibilityLevel (line 289) | @Test
method shouldCreateNewSchemaWhenSubjectIncludesNonAsciiCharacters (line 330) | @Test
method createNewSubjectAndAssert (line 345) | private void createNewSubjectAndAssert(String subject) {
method assertSchemaWhenGetLatest (line 363) | private void assertSchemaWhenGetLatest(
method assertResponseBodyWhenCreateNewSchema (line 379) | private void assertResponseBodyWhenCreateNewSchema(
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/config/ClustersPropertiesTest.java
class ClustersPropertiesTest (line 9) | class ClustersPropertiesTest {
method clusterNamesShouldBeUniq (line 11) | @Test
method clusterNamesShouldSetIfMultipleClustersProvided (line 25) | @Test
method ifOnlyOneClusterProvidedNameIsOptionalAndSetToDefault (line 38) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/KafkaConnectContainer.java
class KafkaConnectContainer (line 9) | public class KafkaConnectContainer extends GenericContainer<KafkaConnect...
method KafkaConnectContainer (line 12) | public KafkaConnectContainer(String version) {
method withKafka (line 21) | public KafkaConnectContainer withKafka(KafkaContainer kafka) {
method withKafka (line 26) | public KafkaConnectContainer withKafka(Network network, String bootstr...
method getTarget (line 49) | public String getTarget() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/KsqlDbContainer.java
class KsqlDbContainer (line 10) | public class KsqlDbContainer extends GenericContainer<KsqlDbContainer> {
method KsqlDbContainer (line 14) | public KsqlDbContainer(DockerImageName imageName) {
method withKafka (line 23) | public KsqlDbContainer withKafka(KafkaContainer kafka) {
method withKafka (line 29) | private KsqlDbContainer withKafka(Network network, String bootstrapSer...
method url (line 36) | public String url() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/SchemaRegistryContainer.java
class SchemaRegistryContainer (line 9) | public class SchemaRegistryContainer extends GenericContainer<SchemaRegi...
method SchemaRegistryContainer (line 12) | public SchemaRegistryContainer(String version) {
method withKafka (line 17) | public SchemaRegistryContainer withKafka(KafkaContainer kafka) {
method withKafka (line 22) | public SchemaRegistryContainer withKafka(Network network, String boots...
method getUrl (line 30) | public String getUrl() {
method schemaRegistryClient (line 34) | public SchemaRegistryClient schemaRegistryClient() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/controller/ApplicationConfigControllerTest.java
class ApplicationConfigControllerTest (line 17) | class ApplicationConfigControllerTest extends AbstractIntegrationTest {
method testUpload (line 22) | @Test
method generateBody (line 43) | private MultiValueMap<String, HttpEntity<?>> generateBody(ClassPathRes...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/MessageFiltersTest.java
class MessageFiltersTest (line 22) | class MessageFiltersTest {
class StringContainsFilter (line 24) | @Nested
method returnsTrueWhenStringContainedInKeyOrContentOrInBoth (line 29) | @Test
method returnsFalseOtherwise (line 44) | @Test
class GroovyScriptFilter (line 61) | @Nested
method throwsExceptionOnInvalidGroovySyntax (line 64) | @Test
method canCheckPartition (line 70) | @Test
method canCheckOffset (line 77) | @Test
method canCheckHeaders (line 84) | @Test
method canCheckTimestampMs (line 91) | @Test
method canCheckValueAsText (line 99) | @Test
method canCheckKeyAsText (line 106) | @Test
method canCheckKeyAsJsonObjectIfItCanBeParsedToJson (line 113) | @Test
method keySetToKeyStringIfCantBeParsedToJson (line 120) | @Test
method keyAndKeyAsTextSetToNullIfRecordsKeyIsNull (line 126) | @Test
method canCheckValueAsJsonObjectIfItCanBeParsedToJson (line 135) | @Test
method valueSetToContentStringIfCantBeParsedToJson (line 142) | @Test
method valueAndValueAsTextSetToNullIfRecordsContentIsNull (line 148) | @Test
method canRunMultiStatementScripts (line 157) | @Test
method filterSpeedIsAtLeast5kPerSec (line 173) | @Test
method msg (line 198) | private TopicMessageDTO msg() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/MessagesProcessingTest.java
class MessagesProcessingTest (line 16) | class MessagesProcessingTest {
method testSortingAsc (line 19) | @RepeatedTest(5)
method testSortingDesc (line 40) | @RepeatedTest(5)
method consumerRecord (line 61) | private ConsumerRecord<Bytes, Bytes> consumerRecord(int partition, lon...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/OffsetsInfoTest.java
class OffsetsInfoTest (line 17) | class OffsetsInfoTest {
method initMockConsumer (line 27) | @BeforeEach
method fillsInnerFieldsAccordingToTopicState (line 39) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/SeekOperationsTest.java
class SeekOperationsTest (line 18) | class SeekOperationsTest {
method initMockConsumer (line 28) | @BeforeEach
class GetOffsetsForSeek (line 40) | @Nested
method latest (line 43) | @Test
method beginning (line 54) | @Test
method offsets (line 65) | @Test
method offsetsWithBoundsFixing (line 76) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/TailingEmitterTest.java
class TailingEmitterTest (line 31) | class TailingEmitterTest extends AbstractIntegrationTest {
method init (line 39) | @BeforeEach
method tearDown (line 51) | @AfterEach
method allNewMessagesShouldBeEmitted (line 59) | @Test
method allNewMessageThatFitFilterConditionShouldBeEmitted (line 80) | @Test
method createTailingFlux (line 105) | private Flux<TopicMessageEventDTO> createTailingFlux(
method startTailing (line 123) | private List<TopicMessageEventDTO> startTailing(String filterQuery) {
method waitUntilTailingInitialized (line 137) | private void waitUntilTailingInitialized(List<TopicMessageEventDTO> fl...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/model/PartitionDistributionStatsTest.java
class PartitionDistributionStatsTest (line 16) | class PartitionDistributionStatsTest {
method skewCalculatedBasedOnPartitionsCounts (line 18) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/producer/KafkaTestProducer.java
class KafkaTestProducer (line 12) | public class KafkaTestProducer<KeyT, ValueT> implements AutoCloseable {
method KafkaTestProducer (line 15) | private KafkaTestProducer(KafkaProducer<KeyT, ValueT> producer) {
method forKafka (line 19) | public static KafkaTestProducer<String, String> forKafka(KafkaContaine...
method send (line 28) | public CompletableFuture<RecordMetadata> send(String topic, ValueT val...
method send (line 32) | public CompletableFuture<RecordMetadata> send(ProducerRecord<KeyT, Val...
method close (line 44) | @Override
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/ConsumerRecordDeserializerTest.java
class ConsumerRecordDeserializerTest (line 17) | class ConsumerRecordDeserializerTest {
method dataMaskingAppliedOnDeserializedMessage (line 19) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/PropertyResolverImplTest.java
class PropertyResolverImplTest (line 15) | class PropertyResolverImplTest {
class CustomPropertiesClass (line 24) | @Data
method returnsEmptyOptionalWhenPropertyNotExist (line 31) | @Test
method throwsExceptionWhenPropertyCantBeResolverToRequstedClass (line 39) | @Test
method resolvedSingleValueProperties (line 54) | @Test
method resolvesListProperties (line 66) | @Test
method resolvesCustomConfigClassProperties (line 78) | @Test
method resolvesMapProperties (line 88) | @Test
class WithPrefix (line 103) | @Nested
method resolvedSingleValueProperties (line 106) | @Test
method resolvesListProperties (line 119) | @Test
method resolvesCustomConfigClassProperties (line 131) | @Test
method resolvesMapProperties (line 141) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/SerdesInitializerTest.java
class SerdesInitializerTest (line 25) | class SerdesInitializerTest {
method pluggedSerdesInitializedByLoader (line 40) | @Test
method serdeWithBuiltInNameAndNoPropertiesCantBeInitializedIfSerdeNotSupportAutoConfigure (line 65) | @Test
method serdeWithBuiltInNameAndNoPropertiesIsAutoConfiguredIfPossible (line 76) | @Test
method serdeWithBuiltInNameAndSetPropertiesAreExplicitlyConfigured (line 90) | @Test
method serdeWithCustomNameAndBuiltInClassnameAreExplicitlyConfigured (line 105) | @Test
method init (line 120) | private ClusterSerdes init(ClustersProperties.SerdeConfig... serdeConf...
method createProperties (line 124) | private ClustersProperties createProperties(ClustersProperties.SerdeCo...
method verifyExplicitlyConfigured (line 134) | private void verifyExplicitlyConfigured(SerdeInstance serde) {
method verifyAutoConfigured (line 140) | private void verifyAutoConfigured(SerdeInstance serde) {
method verifyPatternsMatch (line 146) | private void verifyPatternsMatch(ClustersProperties.SerdeConfig config...
class BuiltInSerdeWithAutoconfigure (line 151) | static class BuiltInSerdeWithAutoconfigure extends StringSerde {
method canBeAutoConfigured (line 157) | @Override
method autoConfigure (line 163) | @Override
method configure (line 168) | @Override
class BuiltInSerdeMock2NoAutoConfigure (line 176) | static class BuiltInSerdeMock2NoAutoConfigure extends BuiltInSerdeWith...
method canBeAutoConfigured (line 177) | @Override
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/AvroEmbeddedSerdeTest.java
class AvroEmbeddedSerdeTest (line 22) | class AvroEmbeddedSerdeTest {
method init (line 26) | @BeforeEach
method canDeserializeReturnsTrueForAllTargets (line 36) | @ParameterizedTest
method canSerializeReturnsFalseForAllTargets (line 43) | @ParameterizedTest
method deserializerParsesAvroDataWithEmbeddedSchema (line 50) | @Test
method assertJsonEquals (line 77) | private void assertJsonEquals(String expected, String actual) throws I...
method serializeAvroWithEmbeddedSchema (line 82) | private byte[] serializeAvroWithEmbeddedSchema(GenericRecord record) t...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/Base64SerdeTest.java
class Base64SerdeTest (line 14) | class Base64SerdeTest {
method init (line 21) | @BeforeEach
method serializesInputAsBase64String (line 31) | @ParameterizedTest
method deserializesDataAsBase64Bytes (line 39) | @ParameterizedTest
method getSchemaReturnsEmpty (line 49) | @ParameterizedTest
method canDeserializeReturnsTrueForAllInputs (line 55) | @ParameterizedTest
method canSerializeReturnsTrueForAllInput (line 61) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/ConsumerOffsetsSerdeTest.java
class ConsumerOffsetsSerdeTest (line 31) | class ConsumerOffsetsSerdeTest extends AbstractIntegrationTest {
method createTopicAndCommitItsOffset (line 38) | @BeforeAll
method cleanUp (line 59) | @AfterAll
method canOnlyDeserializeConsumerOffsetsTopic (line 64) | @Test
method deserializesMessagesMadeByConsumerActivity (line 73) | @Test
method isCommitMessage (line 119) | private boolean isCommitMessage(DeserializeResult key, DeserializeResu...
method isGroupMetadataMessage (line 159) | private boolean isGroupMetadataMessage(DeserializeResult key, Deserial...
method toMapFromJsom (line 170) | @SneakyThrows
method createConsumer (line 175) | private static KafkaConsumer<Bytes, Bytes> createConsumer(String group...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/HexSerdeTest.java
class HexSerdeTest (line 14) | public class HexSerdeTest {
method init (line 21) | @BeforeEach
method serializesInputAsHexString (line 28) | @ParameterizedTest
method serializesEmptyStringAsEmptyBytesArray (line 45) | @ParameterizedTest
method deserializesDataAsHexBytes (line 53) | @ParameterizedTest
method getSchemaReturnsEmpty (line 63) | @ParameterizedTest
method canDeserializeReturnsTrueForAllInputs (line 69) | @ParameterizedTest
method canSerializeReturnsTrueForAllInput (line 75) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/Int32SerdeTest.java
class Int32SerdeTest (line 15) | class Int32SerdeTest {
method init (line 19) | @BeforeEach
method serializeUses4BytesIntRepresentation (line 29) | @ParameterizedTest
method deserializeUses4BytesIntRepresentation (line 37) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/Int64SerdeTest.java
class Int64SerdeTest (line 16) | class Int64SerdeTest {
method init (line 20) | @BeforeEach
method serializeUses8BytesLongRepresentation (line 30) | @ParameterizedTest
method deserializeUses8BytesLongRepresentation (line 38) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/ProtobufFileSerdeTest.java
class ProtobufFileSerdeTest (line 26) | class ProtobufFileSerdeTest {
method setUp (line 47) | @BeforeEach
method loadsAllProtoFiledFromTargetDirectory (line 79) | @Test
method protoFilesDir (line 94) | @SneakyThrows
class ConfigurationTests (line 99) | @Nested
method canBeAutoConfiguredReturnsNoProtoPropertiesProvided (line 102) | @Test
method canBeAutoConfiguredReturnsTrueIfProtoFilesHasBeenProvided (line 109) | @Test
method canBeAutoConfiguredReturnsTrueIfProtoFilesDirProvided (line 118) | @Test
method unknownSchemaAsDefaultThrowsException (line 127) | @Test
method unknownSchemaAsDefaultForKeyThrowsException (line 141) | @Test
method unknownSchemaAsTopicSchemaThrowsException (line 155) | @Test
method unknownSchemaAsTopicSchemaForKeyThrowsException (line 169) | @Test
method createConfigureFillsDescriptorMappingsWhenProtoFilesListProvided (line 183) | @Test
method createConfigureFillsDescriptorMappingsWhenProtoFileDirProvided (line 228) | @Test
method deserializeUsesTopicsMappingToFindMsgDescriptor (line 271) | @Test
method deserializeUsesDefaultDescriptorIfTopicMappingNotFound (line 304) | @Test
method serializeUsesTopicsMappingToFindMsgDescriptor (line 326) | @Test
method serializeUsesDefaultDescriptorIfTopicMappingNotFound (line 356) | @Test
method assertJsonEquals (line 378) | @SneakyThrows
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/ProtobufRawSerdeTest.java
class ProtobufRawSerdeTest (line 16) | class ProtobufRawSerdeTest {
method init (line 22) | @BeforeEach
method getSampleSchema (line 27) | @SneakyThrows
method getProtobufMessage (line 39) | @SneakyThrows
method deserializeSimpleMessage (line 46) | @Test
method deserializeEmptyMessage (line 53) | @Test
method deserializeInvalidMessage (line 60) | @Test
method deserializeNullMessage (line 68) | @Test
method getSampleNestedSchema (line 76) | ProtobufSchema getSampleNestedSchema() {
method getComplexProtobufMessage (line 91) | @SneakyThrows
method deserializeNestedMessage (line 102) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/UInt32SerdeTest.java
class UInt32SerdeTest (line 17) | class UInt32SerdeTest {
method init (line 21) | @BeforeEach
method serializeUses4BytesUInt32Representation (line 31) | @ParameterizedTest
method serializeThrowsNfeIfNegativeValuePassed (line 40) | @ParameterizedTest
method deserializeUses4BytesUInt32Representation (line 49) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/UInt64SerdeTest.java
class UInt64SerdeTest (line 16) | class UInt64SerdeTest {
method init (line 20) | @BeforeEach
method serializeUses8BytesUInt64Representation (line 30) | @ParameterizedTest
method serializeThrowsNfeIfNegativeValuePassed (line 39) | @ParameterizedTest
method deserializeUses8BytesUIn64tRepresentation (line 48) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/UuidBinarySerdeTest.java
class UuidBinarySerdeTest (line 17) | class UuidBinarySerdeTest {
class MsbFirst (line 19) | @Nested
method init (line 24) | @BeforeEach
method serializerUses16bytesUuidBinaryRepresentation (line 34) | @ParameterizedTest
method deserializerUses16bytesUuidBinaryRepresentation (line 45) | @ParameterizedTest
class MsbLast (line 60) | @Nested
method init (line 65) | @BeforeEach
method serializerUses16bytesUuidBinaryRepresentation (line 75) | @ParameterizedTest
method deserializerUses16bytesUuidBinaryRepresentation (line 86) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/sr/SchemaRegistrySerdeTest.java
class SchemaRegistrySerdeTest (line 29) | class SchemaRegistrySerdeTest {
method init (line 35) | @BeforeEach
method returnsSchemaDescriptionIfSchemaRegisteredInSR (line 41) | @ParameterizedTest
method returnsEmptyDescriptorIfSchemaNotRegisteredInSR (line 66) | @Test
method serializeTreatsInputAsJsonAvroSchemaPayload (line 73) | @Test
method deserializeReturnsJsonAvroMsgJsonRepresentation (line 100) | @Test
class SerdeWithDisabledSubjectExistenceCheck (line 133) | @Nested
method init (line 136) | @BeforeEach
method canDeserializeAlwaysReturnsTrue (line 141) | @Test
class SerdeWithEnabledSubjectExistenceCheck (line 149) | @Nested
method init (line 152) | @BeforeEach
method canDeserializeReturnsTrueIfSubjectExists (line 157) | @Test
method canDeserializeReturnsFalseIfSubjectDoesNotExist (line 167) | @Test
method canDeserializeAndCanSerializeReturnsTrueIfSubjectExists (line 175) | @Test
method canSerializeReturnsFalseIfSubjectDoesNotExist (line 185) | @Test
method assertJsonsEqual (line 192) | @SneakyThrows
method toBytesWithMagicByteAndSchemaId (line 198) | private byte[] toBytesWithMagicByteAndSchemaId(int schemaId, String js...
method toBytesWithMagicByteAndSchemaId (line 202) | private byte[] toBytesWithMagicByteAndSchemaId(int schemaId, byte[] bo...
method jsonToAvro (line 210) | @SneakyThrows
method avroFieldsRepresentationIsConsistentForSerializationAndDeserialization (line 220) | @Test
method avroLogicalTypesRepresentationIsConsistentForSerializationAndDeserialization (line 308) | @Test
method assertSerdeCycle (line 377) | void assertSerdeCycle(String topic, String jsonInput) {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/BrokerServiceTest.java
class BrokerServiceTest (line 8) | class BrokerServiceTest extends AbstractIntegrationTest {
method getBrokersReturnsFilledBrokerDto (line 16) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ConfigTest.java
class ConfigTest (line 20) | public class ConfigTest extends AbstractIntegrationTest {
method waitUntilStatsInitialized (line 25) | @BeforeEach
method testAlterConfig (line 37) | @Test
method testAlterReadonlyConfig (line 67) | @Test
method getConfig (line 82) | private Optional<BrokerConfigDTO> getConfig(String name) {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/KafkaConfigSanitizerTest.java
class KafkaConfigSanitizerTest (line 11) | class KafkaConfigSanitizerTest {
method doNothingIfEnabledPropertySetToFalse (line 13) | @Test
method obfuscateCredentials (line 21) | @Test
method notObfuscateNormalConfigs (line 39) | @Test
method obfuscateCredentialsWithDefinedPatterns (line 47) | @Test
method sanitizeConnectorConfigDoNotFailOnNullableValues (line 58) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/LogDirsTest.java
class LogDirsTest (line 18) | public class LogDirsTest extends AbstractIntegrationTest {
method testAllBrokers (line 23) | @Test
method testOneBrokers (line 48) | @Test
method testWrongBrokers (line 73) | @Test
method testChangeDirToWrongDir (line 86) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/MessagesServiceTest.java
class MessagesServiceTest (line 28) | class MessagesServiceTest extends AbstractIntegrationTest {
method init (line 38) | @BeforeEach
method deleteTopicMessagesReturnsExceptionWhenTopicNotFound (line 46) | @Test
method sendMessageReturnsExceptionWhenTopicNotFound (line 53) | @Test
method loadMessagesReturnsExceptionWhenTopicNotFound (line 60) | @Test
method maskingAppliedOnConfiguredClusters (line 68) | @Test
method execSmartFilterTestReturnsExecutionResult (line 99) | @Test
method execSmartFilterTestReturnsErrorOnFilterApplyError (line 115) | @Test
method execSmartFilterTestReturnsErrorOnFilterCompilationError (line 125) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/OffsetsResetServiceTest.java
class OffsetsResetServiceTest (line 36) | public class OffsetsResetServiceTest extends AbstractIntegrationTest {
method init (line 46) | @BeforeEach
method cleanUp (line 54) | @AfterEach
method createConsumerGroup (line 59) | private void createConsumerGroup() {
method failsIfGroupDoesNotExists (line 67) | @Test
method failsIfGroupIsActive (line 87) | @Test
method resetToOffsets (line 111) | @Test
method resetToOffsetsCommitsEarliestOrLatestOffsetsIfOffsetsBoundsNotValid (line 120) | @Test
method resetToEarliest (line 130) | @Test
method resetToLatest (line 143) | @Test
method resetToTimestamp (line 156) | @Test
method commit (line 176) | private void commit(Map<Integer, Long> offsetsToCommit) {
method sendMsgsToPartition (line 187) | private void sendMsgsToPartition(Map<Integer, Integer> msgsCountForPar...
method send (line 196) | private void send(Stream<ProducerRecord<Bytes, Bytes>> toSend) {
method assertOffsets (line 206) | private void assertOffsets(Map<Integer, Long> expectedOffsets) {
method groupConsumer (line 219) | private Consumer<?, ?> groupConsumer() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ReactiveAdminClientTest.java
class ReactiveAdminClientTest (line 48) | class ReactiveAdminClientTest extends AbstractIntegrationTest {
method init (line 55) | @BeforeEach
method tearDown (line 63) | @AfterEach
method testUpdateTopicConfigs (line 74) | @Test
method createTopics (line 108) | @SneakyThrows
method fillTopic (line 114) | void fillTopic(String topic, int msgsCnt) {
method testToMonoWithExceptionFilter (line 122) | @Test
method filterPartitionsWithLeaderCheckSkipsPartitionsFromTopicWhereSomePartitionsHaveNoLeader (line 143) | @Test
method filterPartitionsWithLeaderCheckThrowExceptionIfThereIsSomePartitionsWithoutLeaderAndFlagSet (line 173) | @Test
method testListOffsetsUnsafe (line 193) | @Test
method testListConsumerGroupOffsets (line 229) | @Test
method tp (line 299) | private static TopicPartition tp(String topic, int partition) {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/RecordEmitterTest.java
class RecordEmitterTest (line 50) | @Slf4j
method generateMsgs (line 62) | @BeforeAll
method cleanup (line 92) | @AfterAll
method createRecordsDeserializer (line 99) | private static ConsumerRecordDeserializer createRecordsDeserializer() {
method pollNothingOnEmptyTopic (line 114) | @Test
method pollFullTopicFromBeginning (line 147) | @Test
method pollWithOffsets (line 173) | @Test
method pollWithTimestamps (line 214) | @Test
method backwardEmitterSeekToEnd (line 262) | @Test
method backwardEmitterSeekToBegin (line 290) | @Test
method expectEmitter (line 313) | private void expectEmitter(Consumer<FluxSink<TopicMessageEventDTO>> em...
method expectEmitter (line 325) | private void expectEmitter(
method createConsumer (line 342) | private EnhancedConsumer createConsumer() {
method createConsumer (line 346) | private EnhancedConsumer createConsumer(Map<String, Object> properties) {
class Record (line 358) | @Value
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/SchemaRegistryPaginationTest.java
class SchemaRegistryPaginationTest (line 24) | public class SchemaRegistryPaginationTest {
method init (line 30) | private void init(List<String> subjects) {
method shouldListFirst25andThen10Schemas (line 51) | @Test
method shouldListSchemasContaining_1 (line 75) | @Test
method shouldCorrectlyHandleNonPositivePageNumberAndPageSize (line 89) | @Test
method shouldCalculateCorrectPageCountForNonDivisiblePageSize (line 105) | @Test
method buildKafkaCluster (line 122) | private KafkaCluster buildKafkaCluster(String clusterName) {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/SendAndReadTests.java
class SendAndReadTests (line 35) | public class SendAndReadTests extends AbstractIntegrationTest {
method init (line 132) | @BeforeEach
method noSchemaStringKeyStringValue (line 137) | @Test
method keyIsIntValueIsLong (line 153) | @Test
method keyIsNull (line 169) | @Test
method valueIsNull (line 185) | @Test
method primitiveAvroSchemas (line 201) | @Test
method recordAvroSchema (line 219) | @Test
method keyWithNoSchemaValueWithProtoSchema (line 237) | @Test
method keyWithAvroSchemaValueWithAvroSchemaKeyIsNull (line 254) | @Test
method valueWithAvroSchemaShouldThrowExceptionIfArgIsNotValidJsonObject (line 273) | @Test
method keyWithAvroSchemaValueWithProtoSchema (line 287) | @Test
method valueWithProtoSchemaShouldThrowExceptionArgIsNotValidJsonObject (line 305) | @Test
method keyWithProtoSchemaValueWithJsonSchema (line 320) | @Test
method valueWithJsonSchemaThrowsExceptionIfArgIsNotValidJsonObject (line 338) | @Test
method topicMessageMetadataAvro (line 353) | @Test
method topicMessageMetadataProtobuf (line 378) | @Test
method topicMessageMetadataJson (line 402) | @Test
method noKeyAndNoContentPresentTest (line 428) | @Test
method assertJsonEqual (line 444) | @SneakyThrows
class SendAndReadSpec (line 450) | class SendAndReadSpec {
method withMsgToSend (line 455) | public SendAndReadSpec withMsgToSend(CreateTopicMessageDTO msg) {
method withKeySchema (line 460) | public SendAndReadSpec withKeySchema(ParsedSchema keyScheam) {
method withValueSchema (line 465) | public SendAndReadSpec withValueSchema(ParsedSchema valueSchema) {
method createTopicAndCreateSchemas (line 470) | @SneakyThrows
method assertSendThrowsException (line 484) | public void assertSendThrowsException() {
method doAssert (line 495) | @SneakyThrows
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/TopicsServicePaginationTest.java
class TopicsServicePaginationTest (line 39) | class TopicsServicePaginationTest {
method init (line 51) | private void init(Map<String, InternalTopic> topicsInCache) {
method shouldListFirst25Topics (line 67) | @Test
method buildKafkaCluster (line 88) | private KafkaCluster buildKafkaCluster(String clusterName) {
method shouldListFirst25TopicsSortedByNameDescendingOrder (line 94) | @Test
method shouldCalculateCorrectPageCountForNonDivisiblePageSize (line 120) | @Test
method shouldCorrectlyHandleNonPositivePageNumberAndPageSize (line 139) | @Test
method shouldListBotInternalAndNonInternalTopics (line 158) | @Test
method shouldListOnlyNonInternalTopics (line 178) | @Test
method shouldListOnlyTopicsContainingOne (line 199) | @Test
method shouldListTopicsOrderedByPartitionsCount (line 220) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/acl/AclCsvTest.java
class AclCsvTest (line 20) | class AclCsvTest {
method parsesValidInputCsv (line 31) | @ParameterizedTest
method throwsExceptionForInvalidInputCsv (line 48) | @ParameterizedTest
method transformAndParseUseSameFormat (line 63) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/acl/AclsServiceTest.java
class AclsServiceTest (line 30) | class AclsServiceTest {
method initMocks (line 39) | @BeforeEach
method testSyncAclWithAclCsv (line 44) | @Test
method createsConsumerDependantAcls (line 88) | @Test
method createsConsumerDependantAclsWhenTopicsAndGroupsSpecifiedByPrefix (line 130) | @Test
method createsProducerDependantAcls (line 163) | @Test
method createsProducerDependantAclsWhenTopicsAndTxIdSpecifiedByPrefix (line 208) | @Test
method createsStreamAppDependantAcls (line 250) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/analyze/TopicAnalysisServiceTest.java
class TopicAnalysisServiceTest (line 18) | class TopicAnalysisServiceTest extends AbstractIntegrationTest {
method savesResultWhenAnalysisIsCompleted (line 26) | @Test
method fillTopic (line 49) | private void fillTopic(String topic, int cnt) {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/audit/AuditIntegrationTest.java
class AuditIntegrationTest (line 25) | public class AuditIntegrationTest extends AbstractIntegrationTest {
method auditRecordWrittenIntoKafkaWhenNewTopicCreated (line 30) | @Test
method createConsumer (line 77) | private KafkaConsumer<?, String> createConsumer() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/audit/AuditServiceTest.java
class AuditServiceTest (line 28) | class AuditServiceTest {
method isAuditTopicChecksIfAuditIsEnabledForCluster (line 30) | @Test
method auditCallsWriterMethodDependingOnSignal (line 46) | @Test
class CreateAuditWriter (line 61) | @Nested
method init (line 76) | @BeforeEach
method logOnlyAlterOpsByDefault (line 82) | @Test
method noWriterIfNoAuditPropsSet (line 93) | @Test
method setsLoggerIfConsoleLoggingEnabled (line 99) | @Test
class WhenTopicAuditEnabled (line 112) | @Nested
method setTopicWriteProperties (line 115) | @BeforeEach
method createsProducerIfTopicExists (line 125) | @Test
method createsProducerAndTopicIfItIsNotExist (line 142) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/audit/AuditWriterTest.java
class AuditWriterTest (line 26) | class AuditWriterTest {
class AlterOperationsOnlyWriter (line 32) | @Nested
method onlyLogsWhenAlterOperationIsPresentForOneOfResources (line 37) | @ParameterizedTest
method onlyLogsWhenAlterOperationIsPresentForOneOfResources (line 45) | static Stream<AccessContext> onlyLogsWhenAlterOperationIsPresentForO...
method doesNothingIfNoResourceHasAlterAction (line 66) | @ParameterizedTest
method doesNothingIfNoResourceHasAlterAction (line 74) | static Stream<AccessContext> doesNothingIfNoResourceHasAlterAction() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/ConnectorsExporterTest.java
class ConnectorsExporterTest (line 21) | class ConnectorsExporterTest {
method exportsConnectorsAsDataTransformers (line 31) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/SchemaReferencesResolverTest.java
class SchemaReferencesResolverTest (line 16) | class SchemaReferencesResolverTest {
method resolvesRefsUsingSrClient (line 22) | @Test
method returnsEmptyMapOnEmptyInputs (line 70) | @Test
method mockSrCall (line 81) | private void mockSrCall(String subject, int version, SchemaSubject sub...
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/TopicsExporterTest.java
class TopicsExporterTest (line 31) | class TopicsExporterTest {
method init (line 45) | @BeforeEach
method doesNotExportTopicsWhichDontFitFiltrationRule (line 56) | @Test
method doesExportTopicData (line 86) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/schema/AvroExtractorTest.java
class AvroExtractorTest (line 12) | class AvroExtractorTest {
method test (line 14) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/schema/JsonSchemaExtractorTest.java
class JsonSchemaExtractorTest (line 16) | class JsonSchemaExtractorTest {
method test (line 18) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/schema/ProtoExtractorTest.java
class ProtoExtractorTest (line 12) | class ProtoExtractorTest {
method test (line 14) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ksql/KsqlApiClientTest.java
class KsqlApiClientTest (line 20) | class KsqlApiClientTest extends AbstractIntegrationTest {
method startContainer (line 22) | @BeforeAll
method stopContainer (line 27) | @AfterAll
method ksqTutorialQueriesWork (line 33) | @Test
method assertLastKsqTutorialQueryResult (line 66) | private void assertLastKsqTutorialQueryResult(KsqlApiClient client) {
method execCommandSync (line 107) | private void execCommandSync(KsqlApiClient client, String... ksqls) {
method ksqlClient (line 113) | private KsqlApiClient ksqlClient() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2Test.java
class KsqlServiceV2Test (line 18) | class KsqlServiceV2Test extends AbstractIntegrationTest {
method init (line 23) | @BeforeAll
method cleanup (line 28) | @AfterAll
method listStreamsReturnsAllKsqlStreams (line 43) | @Test
method listTablesReturnsAllKsqlTables (line 71) | @Test
method cluster (line 100) | private static KafkaCluster cluster() {
method ksqlClient (line 107) | private static KsqlApiClient ksqlClient() {
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ksql/response/ResponseParserTest.java
class ResponseParserTest (line 7) | class ResponseParserTest {
method parsesSelectHeaderIntoColumnNames (line 9) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/DataMaskingTest.java
class DataMaskingTest (line 21) | class DataMaskingTest {
method init (line 31) | @BeforeEach
method createMaskPolicy (line 44) | private MaskingPolicy createMaskPolicy() {
method appliesMasksToJsonContainerArgsBasedOnTopicPatterns (line 50) | @ParameterizedTest
method appliesFirstFoundMaskToStringArgsBasedOnTopicPatterns (line 71) | @ParameterizedTest
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/policies/FieldsSelectorTest.java
class FieldsSelectorTest (line 11) | class FieldsSelectorTest {
method selectsFieldsDueToProvidedPattern (line 13) | @Test
method selectsFieldsDueToProvidedFieldNames (line 24) | @Test
method selectAllFieldsIfNoPatternAndNoNamesProvided (line 35) | @Test
method throwsExceptionIfBothFieldListAndPatternProvided (line 43) | @Test
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/policies/MaskTest.java
class MaskTest (line 16) | class MaskTest {
method testApplyToJsonContainer (line 21) | @ParameterizedTest
method testApplyToJsonContainer (line 28) | private static Stream<Arguments> testApplyToJsonContainer() {
method testApplyToString (line 53) | @ParameterizedTest
method parse (line 64) | @SneakyThrows
FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/policies/RemoveTest.java
class RemoveTest (line 16) | class RemoveTest {
method testApplyToJsonContainer (line 20) | @ParameterizedTest
method testApplyToJsonContainer (line 27) | private static Stream<Arguments> testApplyToJsonContainer() {
method parse (line
Condensed preview — 1068 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,297K chars).
[
{
"path": ".devcontainer/devcontainer.json",
"chars": 864,
"preview": "{\n\t\"name\": \"Java\",\n\n\t\"image\": \"mcr.microsoft.com/devcontainers/java:0-17\",\n\n\t\"features\": {\n\t\t\"ghcr.io/devcontainers/feat"
},
{
"path": ".editorconfig",
"chars": 11861,
"preview": "[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 4\nindent_style = space\ninsert_final_newline = true\nmax_line_length = "
},
{
"path": ".github/CODEOWNERS",
"chars": 396,
"preview": "* @Haarolean\n\n\n# BACKEND\n/pom.xml @provectus/kafka-backend\n\n/kafka-ui-contr"
},
{
"path": ".github/ISSUE_TEMPLATE/bug.yml",
"chars": 3439,
"preview": "name: \"\\U0001F41E Bug report\"\ndescription: File a bug report\nlabels: [\"status/triage\", \"type/bug\"]\nassignees: []\n\nbody:"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 753,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Report helm issue\n url: https://github.com/provectus/kafka-ui-ch"
},
{
"path": ".github/ISSUE_TEMPLATE/feature.yml",
"chars": 2260,
"preview": "name: \"\\U0001F680 Feature request\"\ndescription: Propose a new feature\nlabels: [\"status/triage\", \"type/feature\"]\nassignee"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1393,
"preview": "<!-- ignore-task-list-start -->\n- [ ] **Breaking change?** (if so, please describe the impact and migration path for exi"
},
{
"path": ".github/dependabot.yml",
"chars": 2184,
"preview": "version: 2\nupdates:\n- package-ecosystem: maven\n directory: \"/\"\n schedule:\n interval: daily\n time: \"10:00\"\n ti"
},
{
"path": ".github/release_drafter.yaml",
"chars": 891,
"preview": "name-template: '$RESOLVED_VERSION'\ntag-template: 'v$RESOLVED_VERSION'\ntemplate: |\n ## Changes\n $CHANGES\n ## Contribut"
},
{
"path": ".github/workflows/aws_publisher.yaml",
"chars": 3201,
"preview": "name: \"Infra: Release: AWS Marketplace Publisher\"\non:\n workflow_dispatch:\n inputs:\n KafkaUIInfraBranch:\n "
},
{
"path": ".github/workflows/backend.yml",
"chars": 2015,
"preview": "name: \"Backend: PR/master build & test\"\non:\n push:\n branches:\n - master\n pull_request_target:\n types: [\"ope"
},
{
"path": ".github/workflows/block_merge.yml",
"chars": 446,
"preview": "name: \"Infra: PR block merge\"\non:\n pull_request:\n types: [opened, labeled, unlabeled, synchronize]\njobs:\n block_mer"
},
{
"path": ".github/workflows/branch-deploy.yml",
"chars": 4378,
"preview": "name: \"Infra: Feature Testing: Init env\"\non:\n workflow_dispatch:\n\n pull_request:\n types: ['labeled']\njobs:\n build:"
},
{
"path": ".github/workflows/branch-remove.yml",
"chars": 1148,
"preview": "name: \"Infra: Feature Testing: Destroy env\"\non:\n workflow_dispatch:\n pull_request:\n types: ['unlabeled', 'closed']\n"
},
{
"path": ".github/workflows/build-public-image.yml",
"chars": 2776,
"preview": "name: \"Infra: Image Testing: Deploy\"\non:\n workflow_dispatch:\n pull_request:\n types: ['labeled']\njobs:\n build:\n "
},
{
"path": ".github/workflows/codeql-analysis.yml",
"chars": 2641,
"preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
},
{
"path": ".github/workflows/cve.yaml",
"chars": 1929,
"preview": "name: CVE checks docker master\non:\n workflow_dispatch:\n schedule:\n # * is a special character in YAML so you have t"
},
{
"path": ".github/workflows/delete-public-image.yml",
"chars": 1266,
"preview": "name: \"Infra: Image Testing: Delete\"\non:\n workflow_dispatch:\n pull_request:\n types: ['unlabeled', 'closed']\njobs:\n "
},
{
"path": ".github/workflows/documentation.yaml",
"chars": 736,
"preview": "name: \"Infra: Docs: URL linter\"\non:\n pull_request:\n types:\n - opened\n - labeled\n - reopened\n - s"
},
{
"path": ".github/workflows/e2e-automation.yml",
"chars": 3322,
"preview": "name: \"E2E: Automation suite\"\non:\n workflow_dispatch:\n inputs:\n test_suite:\n description: 'Select test s"
},
{
"path": ".github/workflows/e2e-checks.yaml",
"chars": 3400,
"preview": "name: \"E2E: PR healthcheck\"\non:\n pull_request_target:\n types: [ \"opened\", \"edited\", \"reopened\", \"synchronize\" ]\n "
},
{
"path": ".github/workflows/e2e-manual.yml",
"chars": 1454,
"preview": "name: \"E2E: Manual suite\"\non:\n workflow_dispatch:\n inputs:\n test_suite:\n description: 'Select test suite"
},
{
"path": ".github/workflows/e2e-weekly.yml",
"chars": 2913,
"preview": "name: \"E2E: Weekly suite\"\non:\n schedule:\n - cron: '0 1 * * 1'\n\njobs:\n build-and-test:\n runs-on: ubuntu-latest\n "
},
{
"path": ".github/workflows/frontend.yaml",
"chars": 1772,
"preview": "name: \"Frontend: PR/master build & test\"\non:\n push:\n branches:\n - master\n pull_request_target:\n types: [\"op"
},
{
"path": ".github/workflows/master.yaml",
"chars": 2934,
"preview": "name: \"Master: Build & deploy\"\non:\n workflow_dispatch:\n push:\n branches: [ \"master\" ]\n\njobs:\n build:\n runs-on: "
},
{
"path": ".github/workflows/pr-checks.yaml",
"chars": 445,
"preview": "name: \"PR: Checklist linter\"\non:\n pull_request_target:\n types: [opened, edited, synchronize, reopened]\npermissions:\n"
},
{
"path": ".github/workflows/release-serde-api.yaml",
"chars": 959,
"preview": "name: \"Infra: Release: Serde API\"\non: workflow_dispatch\n\njobs:\n release-serde-api:\n runs-on: ubuntu-latest\n steps"
},
{
"path": ".github/workflows/release.yaml",
"chars": 3202,
"preview": "name: \"Infra: Release\"\non:\n release:\n types: [published]\n\njobs:\n release:\n runs-on: ubuntu-latest\n outputs:\n "
},
{
"path": ".github/workflows/release_drafter.yml",
"chars": 772,
"preview": "name: \"Infra: Release Drafter run\"\n\non:\n push:\n branches:\n - master\n workflow_dispatch:\n inputs:\n vers"
},
{
"path": ".github/workflows/separate_env_public_create.yml",
"chars": 3617,
"preview": "name: \"Infra: Feature Testing Public: Init env\"\non:\n workflow_dispatch:\n inputs:\n ENV_NAME:\n description"
},
{
"path": ".github/workflows/separate_env_public_remove.yml",
"chars": 917,
"preview": "name: \"Infra: Feature Testing Public: Destroy env\"\non:\n workflow_dispatch:\n inputs:\n ENV_NAME:\n descript"
},
{
"path": ".github/workflows/stale.yaml",
"chars": 970,
"preview": "name: 'Infra: Close stale issues'\non:\n schedule:\n - cron: '30 1 * * *'\n\njobs:\n stale:\n runs-on: ubuntu-latest\n "
},
{
"path": ".github/workflows/terraform-deploy.yml",
"chars": 2312,
"preview": "name: \"Infra: Terraform deploy\"\non:\n workflow_dispatch:\n inputs:\n applyTerraform:\n description: 'Do you "
},
{
"path": ".github/workflows/triage_issues.yml",
"chars": 306,
"preview": "name: \"Infra: Triage: Apply triage label for issues\"\non:\n issues:\n types:\n - opened\njobs:\n triage_issues:\n "
},
{
"path": ".github/workflows/triage_prs.yml",
"chars": 302,
"preview": "name: \"Infra: Triage: Apply triage label for PRs\"\non:\n pull_request:\n types:\n - opened\njobs:\n triage_prs:\n "
},
{
"path": ".github/workflows/welcome-first-time-contributors.yml",
"chars": 845,
"preview": "name: Welcome first time contributors\n\non:\n pull_request_target:\n types:\n - opened\n issues:\n types:\n -"
},
{
"path": ".github/workflows/workflow_linter.yaml",
"chars": 564,
"preview": "name: \"Infra: Workflow linter\"\non:\n pull_request:\n types:\n - \"opened\"\n - \"reopened\"\n - \"synchronize\"\n"
},
{
"path": ".gitignore",
"chars": 452,
"preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
},
{
"path": ".mvn/wrapper/maven-wrapper.properties",
"chars": 1019,
"preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE f"
},
{
"path": "CODE-OF-CONDUCT.md",
"chars": 5496,
"preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
},
{
"path": "CONTRIBUTING.md",
"chars": 5044,
"preview": "This guide is an exact copy of the same documented located [in our official docs](https://docs.kafka-ui.provectus.io/dev"
},
{
"path": "LICENSE",
"chars": 11338,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 7385,
"preview": " UI for Apache Kafka \n------------------\n#### Ve"
},
{
"path": "SECURITY.md",
"chars": 710,
"preview": "# Security Policy\n\n## Supported Versions\n\nFollowing versions of the project are currently being supported with security "
},
{
"path": "documentation/compose/DOCKER_COMPOSE.md",
"chars": 1787,
"preview": "# Descriptions of docker-compose configurations (*.yaml)\n\n1. [kafka-ui.yaml](./kafka-ui.yaml) - Default configuration wi"
},
{
"path": "documentation/compose/connectors/github-source.json",
"chars": 823,
"preview": "{\n \"name\": \"github-source\",\n \"config\":\n {\n \"connector.class\": \"io.confluent.connect.github.GithubSourceConnector\","
},
{
"path": "documentation/compose/connectors/s3-sink.json",
"chars": 700,
"preview": "{\n \"name\": \"s3-sink\",\n \"config\":\n {\n \"connector.class\": \"io.confluent.connect.s3.S3SinkConnector\",\n \"topics\": \""
},
{
"path": "documentation/compose/connectors/sink-activities.json",
"chars": 738,
"preview": "{\n \"name\": \"sink_postgres_activities\",\n \"config\": {\n \"connector.class\": \"io.confluent.connect.jdbc.JdbcSinkConnecto"
},
{
"path": "documentation/compose/connectors/source-activities.json",
"chars": 844,
"preview": "{\n \"name\": \"source_postgres_activities\",\n \"config\": {\n \"connector.class\": \"io.confluent.connect.jdbc.JdbcSourceConn"
},
{
"path": "documentation/compose/connectors/start.sh",
"chars": 315,
"preview": "#! /bin/bash\nwhile [[ \"$(curl -s -o /dev/null -w ''%{http_code}'' kafka-connect0:8083)\" != \"200\" ]]\n do sleep 5\ndone\n"
},
{
"path": "documentation/compose/data/message.json",
"chars": 2,
"preview": "{}"
},
{
"path": "documentation/compose/data/proxy.conf",
"chars": 179,
"preview": "server {\n listen 80;\n server_name localhost;\n\n location /kafka-ui {\n# rewrite /kafka-ui/(.*) /$1 "
},
{
"path": "documentation/compose/e2e-tests.yaml",
"chars": 7364,
"preview": "---\nversion: '3.5'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n port"
},
{
"path": "documentation/compose/jaas/client.properties",
"chars": 177,
"preview": "sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"admin-secre"
},
{
"path": "documentation/compose/jaas/kafka_connect.jaas",
"chars": 143,
"preview": "KafkaConnect {\n org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required\n file=\"/conf/kafka"
},
{
"path": "documentation/compose/jaas/kafka_connect.password",
"chars": 20,
"preview": "admin: admin-secret\n"
},
{
"path": "documentation/compose/jaas/kafka_server.conf",
"chars": 450,
"preview": "KafkaServer {\n org.apache.kafka.common.security.plain.PlainLoginModule required\n username=\"admin\"\n password=\"ad"
},
{
"path": "documentation/compose/jaas/schema_registry.jaas",
"chars": 144,
"preview": "SchemaRegistryProps {\n org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required\n file=\"/conf/schema_registry.passwo"
},
{
"path": "documentation/compose/jaas/schema_registry.password",
"chars": 45,
"preview": "admin: OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x,admin"
},
{
"path": "documentation/compose/jaas/zookeeper_jaas.conf",
"chars": 116,
"preview": "Server {\n org.apache.zookeeper.server.auth.DigestLoginModule required\n user_zkuser=\"zkuserpassword\";\n};\n"
},
{
"path": "documentation/compose/jmx/jmxremote.access",
"chars": 15,
"preview": "root readwrite\n"
},
{
"path": "documentation/compose/jmx/jmxremote.password",
"chars": 14,
"preview": "root password\n"
},
{
"path": "documentation/compose/jmx-exporter/kafka-broker.yml",
"chars": 25,
"preview": "rules:\n - pattern: \".*\"\n"
},
{
"path": "documentation/compose/jmx-exporter/kafka-prepare-and-run",
"chars": 350,
"preview": "#!/usr/bin/env bash\n\nJAVA_AGENT_FILE=\"/usr/share/jmx_exporter/jmx_prometheus_javaagent.jar\"\nif [ ! -f \"$JAVA_AGENT_FILE\""
},
{
"path": "documentation/compose/kafka-cluster-sr-auth.yaml",
"chars": 3428,
"preview": "---\nversion: '2'\nservices:\n\n kafka1:\n image: confluentinc/cp-kafka:7.2.1\n hostname: kafka1\n container_name: ka"
},
{
"path": "documentation/compose/kafka-connect/Dockerfile",
"chars": 333,
"preview": "ARG image\nFROM ${image}\n\n## Install connectors\nRUN echo \"\\nInstalling all required connectors...\\n\" && \\\nconfluent-hub i"
},
{
"path": "documentation/compose/kafka-ssl-components.yaml",
"chars": 7819,
"preview": "---\nversion: '3.4'\nservices:\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports"
},
{
"path": "documentation/compose/kafka-ssl.yml",
"chars": 2848,
"preview": "---\nversion: '3.4'\nservices:\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports"
},
{
"path": "documentation/compose/kafka-ui-acl-with-zk.yaml",
"chars": 2254,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:"
},
{
"path": "documentation/compose/kafka-ui-arm64.yaml",
"chars": 4998,
"preview": "# ARM64 supported images for kafka can be found here\n# https://hub.docker.com/r/confluentinc/cp-kafka/tags?page=1&name=a"
},
{
"path": "documentation/compose/kafka-ui-auth-context.yaml",
"chars": 1798,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:"
},
{
"path": "documentation/compose/kafka-ui-connectors-auth.yaml",
"chars": 5000,
"preview": "---\nversion: \"2\"\nservices:\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:\n"
},
{
"path": "documentation/compose/kafka-ui-jmx-secured.yml",
"chars": 3275,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:"
},
{
"path": "documentation/compose/kafka-ui-sasl.yaml",
"chars": 2312,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:"
},
{
"path": "documentation/compose/kafka-ui-serdes.yaml",
"chars": 6074,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n"
},
{
"path": "documentation/compose/kafka-ui-with-jmx-exporter.yaml",
"chars": 1838,
"preview": "---\nversion: '2'\nservices:\n\n kafka0:\n image: confluentinc/cp-kafka:7.2.1\n hostname: kafka0\n container_name: ka"
},
{
"path": "documentation/compose/kafka-ui.yaml",
"chars": 7034,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:"
},
{
"path": "documentation/compose/kafka-with-zookeeper.yaml",
"chars": 1740,
"preview": "---\nversion: '2'\nservices:\n\n zookeeper:\n image: confluentinc/cp-zookeeper:7.2.1\n hostname: zookeeper\n containe"
},
{
"path": "documentation/compose/ldap.yaml",
"chars": 3220,
"preview": "---\nversion: '2'\nservices:\n\n kafka-ui:\n container_name: kafka-ui\n image: provectuslabs/kafka-ui:latest\n ports:"
},
{
"path": "documentation/compose/nginx-proxy.yaml",
"chars": 418,
"preview": "---\nversion: '2'\nservices:\n nginx:\n image: nginx:latest\n volumes:\n - ./data/proxy.conf:/etc/nginx/conf.d/def"
},
{
"path": "documentation/compose/postgres/Dockerfile",
"chars": 106,
"preview": "ARG image\n\nFROM ${image}\n\nMAINTAINER Provectus Team\n\nADD data.sql /docker-entrypoint-initdb.d\n\nEXPOSE 5432"
},
{
"path": "documentation/compose/postgres/data.sql",
"chars": 599,
"preview": "CREATE DATABASE test WITH OWNER = dev_user;\n\\connect test\n\nCREATE TABLE activities\n(\n id INTEGER PRIMARY KEY,\n"
},
{
"path": "documentation/compose/proto/key-types.proto",
"chars": 315,
"preview": "syntax = \"proto3\";\npackage test;\n\nimport \"google/protobuf/wrappers.proto\";\n\nmessage MyKey {\n string myKeyF1 = 1;\n "
},
{
"path": "documentation/compose/proto/values.proto",
"chars": 251,
"preview": "syntax = \"proto3\";\npackage test;\n\nmessage MySpecificTopicValue {\n string f1 = 1;\n string f2 = 2;\n}\n\nmessage MyValu"
},
{
"path": "documentation/compose/scripts/clusterID",
"chars": 22,
"preview": "zlFiTJelTOuhnklFwLWixw"
},
{
"path": "documentation/compose/scripts/create_cluster_id.sh",
"chars": 79,
"preview": "kafka-storage random-uuid > /workspace/kafka-ui/documentation/compose/clusterID"
},
{
"path": "documentation/compose/scripts/update_run.sh",
"chars": 551,
"preview": "# This script is required to run kafka cluster (without zookeeper)\n#!/bin/sh\n\n# Docker workaround: Remove check for KAFK"
},
{
"path": "documentation/compose/scripts/update_run_cluster.sh",
"chars": 544,
"preview": "# This script is required to run kafka cluster (without zookeeper)\n#!/bin/sh\n\n# Docker workaround: Remove check for KAFK"
},
{
"path": "documentation/compose/ssl/creds",
"chars": 6,
"preview": "secret"
},
{
"path": "documentation/compose/ssl/generate_certs.sh",
"chars": 6220,
"preview": "#!/usr/bin/env bash\n\nset -eu\n\nKEYSTORE_FILENAME=\"kafka.keystore.jks\"\nVALIDITY_IN_DAYS=3650\nDEFAULT_TRUSTSTORE_FILENAME=\""
},
{
"path": "documentation/compose/ssl/san.cnf",
"chars": 87,
"preview": "[kafka]\nsubjectAltName = DNS:kafka0,DNS:schemaregistry0,DNS:kafka-connect0,DNS:ksqldb0\n"
},
{
"path": "documentation/compose/traefik/kafkaui.yaml",
"chars": 214,
"preview": "http:\n routers:\n kafkaui:\n rule: \"PathPrefix(`/kafka-ui/`)\"\n entrypoints: web\n service: kafkaui\n ser"
},
{
"path": "documentation/compose/traefik-proxy.yaml",
"chars": 631,
"preview": "---\nversion: '3.8'\nservices:\n traefik:\n restart: always\n image: traefik:v2.4\n container_name: traefik\n comm"
},
{
"path": "etc/checkstyle/apache-header.txt",
"chars": 523,
"preview": "Licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the "
},
{
"path": "etc/checkstyle/checkstyle-e2e.xml",
"chars": 17570,
"preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n \"htt"
},
{
"path": "etc/checkstyle/checkstyle.xml",
"chars": 17556,
"preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n \"htt"
},
{
"path": "kafka-ui-api/Dockerfile",
"chars": 695,
"preview": "#FROM azul/zulu-openjdk-alpine:17-jre-headless\nFROM azul/zulu-openjdk-alpine@sha256:a36679ac0d28cb835e2a8c00e1e0d95509c6"
},
{
"path": "kafka-ui-api/pom.xml",
"chars": 21842,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "kafka-ui-api/src/main/antlr4/ksql/KsqlGrammar.g4",
"chars": 17012,
"preview": "grammar KsqlGrammar;\n\ntokens {\n DELIMITER\n}\n\n@lexer::members {\n public static final int COMMENTS = 2;\n public s"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/KafkaUiApplication.java",
"chars": 977,
"preview": "package com.provectus.kafka.ui;\n\nimport com.provectus.kafka.ui.util.DynamicConfigOperations;\nimport org.springframework."
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/client/RetryingKafkaConnectClient.java",
"chars": 11723,
"preview": "package com.provectus.kafka.ui.client;\n\nimport static com.provectus.kafka.ui.config.ClustersProperties.ConnectCluster;\n\n"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ClustersProperties.java",
"chars": 5764,
"preview": "package com.provectus.kafka.ui.config;\n\nimport com.provectus.kafka.ui.model.MetricsConfig;\nimport jakarta.annotation.Pos"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/Config.java",
"chars": 1887,
"preview": "package com.provectus.kafka.ui.config;\n\nimport java.util.Collections;\nimport java.util.Map;\nimport lombok.AllArgsConstru"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CorsGlobalConfiguration.java",
"chars": 1414,
"preview": "package com.provectus.kafka.ui.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.c"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CustomWebFilter.java",
"chars": 992,
"preview": "package com.provectus.kafka.ui.config;\n\nimport org.springframework.stereotype.Component;\nimport org.springframework.web."
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ReadOnlyModeFilter.java",
"chars": 1951,
"preview": "package com.provectus.kafka.ui.config;\n\nimport com.provectus.kafka.ui.exception.ClusterNotFoundException;\nimport com.pro"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/WebclientProperties.java",
"chars": 856,
"preview": "package com.provectus.kafka.ui.config;\n\nimport com.provectus.kafka.ui.exception.ValidationException;\nimport javax.annota"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/AbstractAuthSecurityConfig.java",
"chars": 445,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nabstract class AbstractAuthSecurityConfig {\n\n protected AbstractAuthSecuri"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/AuthenticatedUser.java",
"chars": 157,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\n\npublic record AuthenticatedUser(String princi"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/BasicAuthSecurityConfig.java",
"chars": 2193,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport com.provectus.kafka.ui.util.EmptyRedirectStrategy;\nimport java.net.U"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/DisabledAuthSecurityConfig.java",
"chars": 1594,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.SpringApp"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapProperties.java",
"chars": 769,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport lombok.Data;\nimport org.springframework.beans.factory.annotation.Val"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapSecurityConfig.java",
"chars": 6690,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport static com.provectus.kafka.ui.config.auth.AbstractAuthSecurityConfig"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthProperties.java",
"chars": 1588,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport jakarta.annotation.PostConstruct;\nimport java.util.Collections;\nimpo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthPropertiesConverter.java",
"chars": 3039,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport static com.provectus.kafka.ui.config.auth.OAuthProperties.OAuth2Prov"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthSecurityConfig.java",
"chars": 6126,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport com.provectus.kafka.ui.config.auth.logout.OAuthLogoutSuccessHandler;"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacLdapUser.java",
"chars": 1382,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\nimport java.util.stream.Collectors;\nimport org"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOAuth2User.java",
"chars": 686,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\nimport java.util.Map;\nimport org.springframewo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOidcUser.java",
"chars": 1074,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\nimport java.util.Map;\nimport org.springframewo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacUser.java",
"chars": 155,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\n\npublic interface RbacUser {\n String name();\n"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RoleBasedAccessControlProperties.java",
"chars": 534,
"preview": "package com.provectus.kafka.ui.config.auth;\n\nimport com.provectus.kafka.ui.model.rbac.Role;\nimport java.util.ArrayList;\n"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/ActiveDirectoryCondition.java",
"chars": 652,
"preview": "package com.provectus.kafka.ui.config.auth.condition;\n\nimport org.springframework.boot.autoconfigure.condition.AllNested"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/CognitoCondition.java",
"chars": 680,
"preview": "package com.provectus.kafka.ui.config.auth.condition;\n\nimport com.provectus.kafka.ui.service.rbac.AbstractProviderCondit"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/CognitoLogoutSuccessHandler.java",
"chars": 2469,
"preview": "package com.provectus.kafka.ui.config.auth.logout;\n\nimport com.provectus.kafka.ui.config.auth.OAuthProperties;\nimport co"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/LogoutSuccessHandler.java",
"chars": 541,
"preview": "package com.provectus.kafka.ui.config.auth.logout;\n\nimport com.provectus.kafka.ui.config.auth.OAuthProperties;\nimport or"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/OAuthLogoutSuccessHandler.java",
"chars": 2322,
"preview": "package com.provectus.kafka.ui.config.auth.logout;\n\nimport com.provectus.kafka.ui.config.auth.OAuthProperties;\nimport ja"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AbstractController.java",
"chars": 1576,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.exception.ClusterNotFoundException;\nimport com"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AccessController.java",
"chars": 3270,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.AuthorizationApi;\nimport com.provectus.kaf"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AclsController.java",
"chars": 7096,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.AclsApi;\nimport com.provectus.kafka.ui.map"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ApplicationConfigController.java",
"chars": 5984,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.ApplicationConfig"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AuthController.java",
"chars": 4154,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport java.nio.charset.Charset;\nimport lombok.RequiredArgsConstructor;\nimpo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/BrokersController.java",
"chars": 6050,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.BrokersApi;\nimport com.provectus.kafka.ui."
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ClustersController.java",
"chars": 2901,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.ClustersApi;\nimport com.provectus.kafka.ui"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ConsumerGroupsController.java",
"chars": 8749,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.ConsumerGroupActi"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KafkaConnectController.java",
"chars": 12570,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.ConnectorActionDTO.RESTART;\nimpor"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KsqlController.java",
"chars": 4315,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.KsqlApi;\nimport com.provectus.kafka.ui.mod"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/MessagesController.java",
"chars": 8824,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.TopicAction.MESSA"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/SchemasController.java",
"chars": 11626,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.SchemasApi;\nimport com.provectus.kafka.ui."
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/StaticController.java",
"chars": 2229,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.util.ResourceUtil;\nimport java.util.concurrent"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/TopicsController.java",
"chars": 14958,
"preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.TopicAction.CREAT"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/AbstractEmitter.java",
"chars": 1578,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.TopicMessageEventDTO;\nimport org.apache.kaf"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/BackwardEmitter.java",
"chars": 2290,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ConsumingStats.java",
"chars": 1292,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.TopicMessageConsumingDTO;\nimport com.provec"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/EnhancedConsumer.java",
"chars": 2786,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.base.Preconditions;\nimport com.google.common.base.Stop"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ForwardEmitter.java",
"chars": 2291,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessageFilters.java",
"chars": 3333,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.exception.ValidationException;\nimport com.provect"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessagesProcessing.java",
"chars": 4134,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport static java.util.stream.Collectors.collectingAndThen;\nimport static java"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/OffsetsInfo.java",
"chars": 1895,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.base.Preconditions;\nimport java.util.Collection;\nimpor"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PolledRecords.java",
"chars": 1637,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport java.time.Duration;\nimport java.util.Iterator;\nimport java.util.List;\nim"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingSettings.java",
"chars": 1496,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.config.ClustersProperties;\nimport java.time.Durat"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingThrottler.java",
"chars": 1587,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.annotations.VisibleForTesting;\nimport com.google.commo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/RangePollingEmitter.java",
"chars": 3954,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ResultSizeLimiter.java",
"chars": 663,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.TopicMessageEventDTO;\nimport java.util.conc"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/SeekOperations.java",
"chars": 4771,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.annotations.VisibleForTesting;\nimport com.google.commo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/TailingEmitter.java",
"chars": 2316,
"preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ClusterNotFoundException.java",
"chars": 358,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class ClusterNotFoundException extends CustomBaseException {\n\n public"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ConnectNotFoundException.java",
"chars": 281,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class ConnectNotFoundException extends CustomBaseException {\n\n public"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/CustomBaseException.java",
"chars": 686,
"preview": "package com.provectus.kafka.ui.exception;\n\n\npublic abstract class CustomBaseException extends RuntimeException {\n prote"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/DuplicateEntityException.java",
"chars": 283,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class DuplicateEntityException extends CustomBaseException {\n\n public"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ErrorCode.java",
"chars": 1993,
"preview": "package com.provectus.kafka.ui.exception;\n\nimport java.util.HashSet;\nimport org.slf4j.LoggerFactory;\nimport org.springfr"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/FileUploadException.java",
"chars": 446,
"preview": "package com.provectus.kafka.ui.exception;\n\nimport java.nio.file.Path;\n\npublic class FileUploadException extends CustomBa"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/GlobalErrorWebExceptionHandler.java",
"chars": 6311,
"preview": "package com.provectus.kafka.ui.exception;\n\nimport com.google.common.base.Throwables;\nimport com.google.common.collect.Se"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/IllegalEntityStateException.java",
"chars": 291,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class IllegalEntityStateException extends CustomBaseException {\n publ"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/InvalidRequestApiException.java",
"chars": 285,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class InvalidRequestApiException extends CustomBaseException {\n\n publ"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/JsonAvroConversionException.java",
"chars": 195,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class JsonAvroConversionException extends ValidationException {\n publ"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KafkaConnectConflictReponseException.java",
"chars": 522,
"preview": "package com.provectus.kafka.ui.exception;\n\n\nimport org.springframework.web.reactive.function.client.WebClientResponseExc"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlApiException.java",
"chars": 357,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class KsqlApiException extends CustomBaseException {\n\n public KsqlApi"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlDbNotFoundException.java",
"chars": 278,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class KsqlDbNotFoundException extends CustomBaseException {\n\n public "
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/LogDirNotFoundApiException.java",
"chars": 331,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class LogDirNotFoundApiException extends CustomBaseException {\n\n publ"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/NotFoundException.java",
"chars": 261,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class NotFoundException extends CustomBaseException {\n\n public NotFou"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ReadOnlyModeException.java",
"chars": 297,
"preview": "package com.provectus.kafka.ui.exception;\n\n\npublic class ReadOnlyModeException extends CustomBaseException {\n\n public R"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaCompatibilityException.java",
"chars": 336,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class SchemaCompatibilityException extends CustomBaseException {\n pub"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaFailedToDeleteException.java",
"chars": 355,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class SchemaFailedToDeleteException extends CustomBaseException {\n\n p"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaNotFoundException.java",
"chars": 353,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class SchemaNotFoundException extends CustomBaseException {\n\n public "
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicAnalysisException.java",
"chars": 282,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicAnalysisException extends CustomBaseException {\n\n public T"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicMetadataException.java",
"chars": 381,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicMetadataException extends CustomBaseException {\n\n public T"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicNotFoundException.java",
"chars": 273,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicNotFoundException extends CustomBaseException {\n\n public T"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicOrPartitionNotFoundException.java",
"chars": 340,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicOrPartitionNotFoundException extends CustomBaseException {\n"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicRecreationException.java",
"chars": 419,
"preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicRecreationException extends CustomBaseException {\n @Overri"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/UnprocessableEntityException.java",
"chars": 295,
"preview": "package com.provectus.kafka.ui.exception;\n\n\npublic class UnprocessableEntityException extends CustomBaseException {\n\n p"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ValidationException.java",
"chars": 367,
"preview": "package com.provectus.kafka.ui.exception;\n\n\npublic class ValidationException extends CustomBaseException {\n public Vali"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ClusterMapper.java",
"chars": 8381,
"preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.config.ClustersProperties;\nimport com.provectus.ka"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ConsumerGroupMapper.java",
"chars": 4584,
"preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.model.BrokerDTO;\nimport com.provectus.kafka.ui.mod"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/DescribeLogDirsMapper.java",
"chars": 2754,
"preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.model.BrokerTopicLogdirsDTO;\nimport com.provectus."
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaConnectMapper.java",
"chars": 2344,
"preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.connect.model.ConnectorStatusConnector;\nimport com"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaSrMapper.java",
"chars": 1675,
"preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.model.CompatibilityCheckResponseDTO;\nimport com.pr"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/BrokerMetrics.java",
"chars": 211,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.List;\nimport lombok.Builder;\nimport lombok.Data;\n\n@Data\n@Builder"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/CleanupPolicy.java",
"chars": 852,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.List;\n\npu"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ClusterFeature.java",
"chars": 170,
"preview": "package com.provectus.kafka.ui.model;\n\npublic enum ClusterFeature {\n KAFKA_CONNECT,\n KSQL_DB,\n SCHEMA_REGISTRY,\n TOP"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ConsumerPosition.java",
"chars": 340,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.Map;\nimport javax.annotation.Nullable;\nimport lombok.Value;\nimpo"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBroker.java",
"chars": 1449,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.math.BigDecimal;\nimport javax.annotation.Nullable;\nimport lombok.Data"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerConfig.java",
"chars": 891,
"preview": "package com.provectus.kafka.ui.model;\n\n\nimport java.util.List;\nimport lombok.Builder;\nimport lombok.Data;\nimport org.apa"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerDiskUsage.java",
"chars": 226,
"preview": "package com.provectus.kafka.ui.model;\n\nimport lombok.Builder;\nimport lombok.Data;\n\n@Data\n@Builder(toBuilder = true)\npubl"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterMetrics.java",
"chars": 1522,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.math.BigDecimal;\nimport java.util.List;\nimport java.util.Map;\nimport "
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterState.java",
"chars": 2895,
"preview": "package com.provectus.kafka.ui.model;\n\nimport com.google.common.base.Throwables;\nimport java.math.BigDecimal;\nimport jav"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalConsumerGroup.java",
"chars": 3593,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\nimp"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalLogDirStats.java",
"chars": 2210,
"preview": "package com.provectus.kafka.ui.model;\n\nimport static java.util.stream.Collectors.collectingAndThen;\nimport static java.u"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartition.java",
"chars": 519,
"preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.List;\nimport lombok.Builder;\nimport lombok.Data;\n\n@Data\n@Builder"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartitionsOffsets.java",
"chars": 863,
"preview": "package com.provectus.kafka.ui.model;\n\nimport com.google.common.collect.HashBasedTable;\nimport com.google.common.collect"
},
{
"path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalReplica.java",
"chars": 287,
"preview": "package com.provectus.kafka.ui.model;\n\nimport lombok.Builder;\nimport lombok.Data;\nimport lombok.RequiredArgsConstructor;"
}
]
// ... and 868 more files (download for full content)
About this extraction
This page contains the full source code of the provectus/kafka-ui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1068 files (2.9 MB), approximately 839.4k tokens, and a symbol index with 3235 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.