Skip to content

Commit

Permalink
IKC-390 clusters
Browse files Browse the repository at this point in the history
  • Loading branch information
Piotr Belke authored and Piotr Belke committed Jul 2, 2024
1 parent 11bbb1d commit 8b05a8d
Show file tree
Hide file tree
Showing 38 changed files with 493 additions and 34 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.consdata.kouncil.config.cluster;
package com.consdata.kouncil.clusters;

import com.consdata.kouncil.model.cluster.Cluster;
import org.springframework.data.repository.CrudRepository;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.consdata.kouncil.config.cluster;
package com.consdata.kouncil.clusters;

import com.consdata.kouncil.clusters.dto.ClustersDto;
import com.consdata.kouncil.model.admin.FunctionName.Fields;
import javax.annotation.security.RolesAllowed;
import lombok.AllArgsConstructor;
Expand All @@ -12,7 +13,7 @@ public class ClustersController {

private final ClustersService clustersService;

@RolesAllowed({Fields.TOPIC_LIST, Fields.BROKERS_LIST})
@RolesAllowed({Fields.TOPIC_LIST, Fields.BROKERS_LIST, Fields.CLUSTER_LIST})
@GetMapping(path = "/api/clusters")
public ClustersDto getClusters() {
return clustersService.getClusters();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.consdata.kouncil.config.cluster;
package com.consdata.kouncil.clusters;

import com.consdata.kouncil.config.cluster.converter.ClusterConverter;
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
import com.consdata.kouncil.clusters.converter.ClusterConverter;
import com.consdata.kouncil.clusters.dto.ClusterDto;
import com.consdata.kouncil.clusters.dto.ClustersDto;
import com.consdata.kouncil.model.cluster.Cluster;
import java.util.ArrayList;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.consdata.kouncil.config.cluster.converter;
package com.consdata.kouncil.clusters.converter;

import static org.apache.logging.log4j.util.Strings.isNotBlank;

import com.consdata.kouncil.clusters.dto.ClusterDto;
import com.consdata.kouncil.clusters.dto.SchemaRegistrySecurityConfigDto;
import com.consdata.kouncil.config.BrokerConfig;
import com.consdata.kouncil.config.ClusterConfig;
import com.consdata.kouncil.config.SchemaRegistryConfig;
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistryAuth;
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistrySSL;
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistrySecurity;
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
import com.consdata.kouncil.config.cluster.dto.SchemaRegistrySecurityConfigDto;
import java.util.ArrayList;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.consdata.kouncil.config.cluster.converter;
package com.consdata.kouncil.clusters.converter;

import com.consdata.kouncil.config.cluster.dto.BrokerDto;
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
import com.consdata.kouncil.config.cluster.dto.ClusterSecurityConfigDto;
import com.consdata.kouncil.config.cluster.dto.SchemaRegistryDto;
import com.consdata.kouncil.config.cluster.dto.SchemaRegistrySecurityConfigDto;
import com.consdata.kouncil.clusters.dto.BrokerDto;
import com.consdata.kouncil.clusters.dto.ClusterDto;
import com.consdata.kouncil.clusters.dto.ClusterSecurityConfigDto;
import com.consdata.kouncil.clusters.dto.SchemaRegistryDto;
import com.consdata.kouncil.clusters.dto.SchemaRegistrySecurityConfigDto;
import com.consdata.kouncil.model.cluster.Cluster;
import com.consdata.kouncil.model.schemaregistry.SchemaRegistry;
import lombok.AccessLevel;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.consdata.kouncil.config.cluster.dto;
package com.consdata.kouncil.clusters.dto;

import lombok.Data;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.consdata.kouncil.config.cluster.dto;
package com.consdata.kouncil.clusters.dto;

import java.util.HashSet;
import java.util.Set;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.consdata.kouncil.config.cluster.dto;
package com.consdata.kouncil.clusters.dto;

import com.consdata.kouncil.model.cluster.ClusterSASLMechanism;
import com.consdata.kouncil.model.cluster.ClusterSecurityProtocol;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.consdata.kouncil.config.cluster;
package com.consdata.kouncil.clusters.dto;

import com.consdata.kouncil.config.cluster.dto.ClusterDto;
import java.util.List;
import lombok.Builder;
import lombok.Data;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.consdata.kouncil.config.cluster.dto;
package com.consdata.kouncil.clusters.dto;

import lombok.Data;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.consdata.kouncil.config.cluster.dto;
package com.consdata.kouncil.clusters.dto;

import com.consdata.kouncil.model.schemaregistry.SchemaSecurityProtocol;
import com.consdata.kouncil.model.schemaregistry.StoreType;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.consdata.kouncil.config;

import com.consdata.kouncil.KouncilRuntimeException;
import com.consdata.kouncil.config.cluster.ClustersDto;
import com.consdata.kouncil.config.cluster.ClustersService;
import com.consdata.kouncil.config.cluster.converter.ClusterConfigConverter;
import com.consdata.kouncil.clusters.ClustersService;
import com.consdata.kouncil.clusters.converter.ClusterConfigConverter;
import com.consdata.kouncil.clusters.dto.ClustersDto;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.consdata.kouncil.config.cluster.reader;
package com.consdata.kouncil.config.cluster;

import static java.lang.String.format;
import static org.apache.logging.log4j.util.Strings.isNotBlank;

import com.consdata.kouncil.KouncilRuntimeException;
import com.consdata.kouncil.clusters.ClusterRepository;
import com.consdata.kouncil.config.BrokerConfig;
import com.consdata.kouncil.config.ClusterConfig;
import com.consdata.kouncil.config.SchemaRegistryConfig;
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistrySSL;
import com.consdata.kouncil.config.cluster.ClusterRepository;
import com.consdata.kouncil.model.Broker;
import com.consdata.kouncil.model.cluster.Cluster;
import com.consdata.kouncil.model.cluster.ClusterSASLMechanism;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,20 +53,23 @@ public void init() {

List<FunctionName> adminFunctions = List.of(FunctionName.BROKERS_LIST, FunctionName.BROKER_DETAILS,
FunctionName.CONSUMER_GROUP_LIST, FunctionName.CONSUMER_GROUP_DETAILS, FunctionName.CONSUMER_GROUP_DELETE,
FunctionName.LOGIN);
FunctionName.LOGIN,
FunctionName.CLUSTER_LIST);

List<FunctionName> editorFunctions = List.of(
FunctionName.TOPIC_LIST, FunctionName.TOPIC_CREATE, FunctionName.TOPIC_UPDATE, FunctionName.TOPIC_DELETE, FunctionName.TOPIC_MESSAGES,
FunctionName.TOPIC_RESEND_MESSAGE, FunctionName.TOPIC_SEND_MESSAGE,
FunctionName.TRACK_LIST,
FunctionName.SCHEMA_LIST, FunctionName.SCHEMA_CREATE, FunctionName.SCHEMA_UPDATE, FunctionName.SCHEMA_DELETE, FunctionName.SCHEMA_DETAILS,
FunctionName.LOGIN);
FunctionName.LOGIN,
FunctionName.CLUSTER_LIST);

List<FunctionName> viewerFunctions = List.of(
FunctionName.TOPIC_LIST, FunctionName.TOPIC_MESSAGES,
FunctionName.TRACK_LIST,
FunctionName.SCHEMA_LIST, FunctionName.SCHEMA_DETAILS,
FunctionName.LOGIN);
FunctionName.LOGIN,
FunctionName.CLUSTER_LIST);

List<UserGroup> groups = new ArrayList<>();

Expand All @@ -91,7 +94,6 @@ public void init() {
List<Function> functions = StreamSupport.stream(functionsRepository.findAll().spliterator(), false).toList();

functions.forEach(function -> {

if (function.getUserGroups() == null) {
function.setUserGroups(new HashSet<>());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,8 @@ public enum FunctionName {
@FieldNameConstants.Include SCHEMA_DELETE,

//login
@FieldNameConstants.Include LOGIN
@FieldNameConstants.Include LOGIN,

//clusters
@FieldNameConstants.Include CLUSTER_LIST
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
DELETE FROM functions_user_groups;
DELETE FROM user_group;

insert into function(id, name, label)
VALUES (nextval('SEQ_FUNCTION'), 'CLUSTER_LIST', 'Cluster list');

12 changes: 12 additions & 0 deletions kouncil-frontend/apps/kouncil/src/app/app-factories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
SchemaRegistryDemoService,
SchemaRegistryService
} from '@app/schema-registry';
import {ClustersBackendService, ClustersDemoService, ClustersService} from '@app/feat-clusters';

export function topicsServiceFactory(http: HttpClient): TopicsService {
switch (environment.backend) {
Expand Down Expand Up @@ -79,3 +80,14 @@ export function schemaRegistryServiceFactory(http: HttpClient): SchemaRegistrySe
return new SchemaRegistryDemoService();
}
}

export function clustersServiceFactory(http: HttpClient): ClustersService {
switch (environment.backend) {
case Backend.SERVER: {
return new ClustersBackendService(http);
}
case Backend.DEMO:
default:
return new ClustersDemoService();
}
}
10 changes: 9 additions & 1 deletion kouncil-frontend/apps/kouncil/src/app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ import {ConfirmModule} from '@app/feat-confirm';
import {CommonUtilsModule, HttpClientInterceptor, SearchService} from '@app/common-utils';
import {FeatTopicsModule, TopicsService} from '@app/feat-topics';
import {
clustersServiceFactory,
resendServiceFactory,
schemaRegistryServiceFactory,
sendServiceFactory,
Expand Down Expand Up @@ -102,6 +103,7 @@ import {AuthBackendService, AuthDemoService, AuthService, CommonAuthModule} from
import {FeatTopicFormModule, TopicService} from '@app/feat-topic-form';
import {SidebarComponent} from './side-bar/sidebar.component';
import {ToolbarComponent} from './toolbar/toolbar.component';
import {ClustersService, FeatClustersModule} from '@app/feat-clusters';

export const BASE_URL = new InjectionToken('BASE_URL');

Expand Down Expand Up @@ -215,7 +217,8 @@ export function authServiceFactory(http: HttpClient, baseUrl: string): AuthServi
SurveyScaleQuestionComponent,
MatCheckboxModule,
CommonAuthModule,
FeatTopicFormModule
FeatTopicFormModule,
FeatClustersModule
],
providers: [
{
Expand Down Expand Up @@ -297,6 +300,11 @@ export function authServiceFactory(http: HttpClient, baseUrl: string): AuthServi
{
provide: BASE_URL,
useValue: environment.baseUrl
},
{
provide: ClustersService,
useFactory: clustersServiceFactory,
deps: [HttpClient]
}
],
bootstrap: [AppComponent]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {SchemasComponent} from '../schemas/list/schemas.component';
import {SchemaEditComponent} from '../schemas/form/edit/schema-edit.component';
import {SchemaCreateComponent} from '../schemas/form/create/schema-create.component';
import {SchemaDetailsComponent} from '../schemas/form/details/schema-details.component';
import {ClustersComponent} from '@app/feat-clusters';

@Injectable()
export class ReloadingRouterStrategy extends RouteReuseStrategy {
Expand Down Expand Up @@ -147,6 +148,14 @@ const routes: Routes = [
data: {
roles: [KouncilRole.SCHEMA_DETAILS]
}
},
{
path: 'clusters',
component: ClustersComponent,
canActivate: [AuthGuard],
data: {
roles: [KouncilRole.CLUSTER_LIST]
}
}
]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
display: flex;
border-radius: 0;
min-width: 32px;
min-height: 20px;
color: $main-40;
margin-top: 15px;
padding: 8px 8px 8px 16px;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,19 @@ import {environment} from '../../environments/environment';
<span *ngIf="(currentState$ | async)">Schema Registry</span>
</a>
<a class="grouping-menu-item"
*ngIf="(isAuthenticated$ | async) && authService.canAccess([KouncilRole.CLUSTER_LIST])">
<span *ngIf="(currentState$ | async)">Configuration</span>
</a>
<a class="menu-button" mat-button [disableRipple]="true" routerLinkActive="active"
[routerLink]="['/clusters']"
matTooltip="{{(currentState$ | async) ? '' : 'Clusters'}}"
matTooltipPosition="after"
*ngIf="(isAuthenticated$ | async) && authService.canAccess([KouncilRole.CLUSTER_LIST])">
<mat-icon class="material-symbols-outlined">storage</mat-icon>
<span *ngIf="(currentState$ | async)">Clusters</span>
</a>
<div style="width: 100%; height: 32px">
<button mat-icon-button
style="bottom: 20px; right: 0; position: absolute;"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export enum KouncilRole {
SCHEMA_CREATE = 'SCHEMA_CREATE',
SCHEMA_UPDATE = 'SCHEMA_UPDATE',
SCHEMA_DELETE = 'SCHEMA_DELETE',
LOGIN = 'LOGIN'
LOGIN = 'LOGIN',
CLUSTER_LIST = 'CLUSTER_LIST',

}
38 changes: 38 additions & 0 deletions kouncil-frontend/libs/feat-clusters/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": [
"plugin:@nrwl/nx/angular",
"plugin:@angular-eslint/template/process-inline-templates",
"@consdata/eslint-config"
],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
],
"no-console": "warn"
}
},
{
"files": ["*.html"],
"extends": ["plugin:@nrwl/nx/angular-template"],
"rules": {}
}
]
}
22 changes: 22 additions & 0 deletions kouncil-frontend/libs/feat-clusters/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/* eslint-disable */
export default {
displayName: 'feat-clusters',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
globals: {
'ts-jest': {
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
},
coverageDirectory: '../../coverage/libs/feat-clusters',
transform: {
'^.+\\.(ts|mjs|js|html)$': 'jest-preset-angular',
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
};
Loading

0 comments on commit 8b05a8d

Please sign in to comment.