Skip to content

Commit 8c0c519

Browse files
authored
Merge pull request #364 from Consdata/IKC-390-clusters
IKC-390 clusters
2 parents 78ead9f + 81dca8a commit 8c0c519

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+456
-51
lines changed

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/ClusterRepository.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/ClusterRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.consdata.kouncil.config.cluster;
1+
package com.consdata.kouncil.clusters;
22

33
import com.consdata.kouncil.model.cluster.Cluster;
44
import org.springframework.data.repository.CrudRepository;

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/ClustersController.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/ClustersController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package com.consdata.kouncil.config.cluster;
1+
package com.consdata.kouncil.clusters;
22

3+
import com.consdata.kouncil.clusters.dto.ClustersDto;
34
import com.consdata.kouncil.model.admin.SystemFunctionName.Fields;
45
import javax.annotation.security.RolesAllowed;
56
import lombok.AllArgsConstructor;
@@ -12,7 +13,7 @@ public class ClustersController {
1213

1314
private final ClustersService clustersService;
1415

15-
@RolesAllowed({Fields.TOPIC_LIST, Fields.BROKERS_LIST})
16+
@RolesAllowed({Fields.TOPIC_LIST, Fields.BROKERS_LIST, Fields.CLUSTER_LIST})
1617
@GetMapping(path = "/api/clusters")
1718
public ClustersDto getClusters() {
1819
return clustersService.getClusters();

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/ClustersService.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/ClustersService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package com.consdata.kouncil.config.cluster;
1+
package com.consdata.kouncil.clusters;
22

3-
import com.consdata.kouncil.config.cluster.converter.ClusterConverter;
4-
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
3+
import com.consdata.kouncil.clusters.converter.ClusterConverter;
4+
import com.consdata.kouncil.clusters.dto.ClusterDto;
5+
import com.consdata.kouncil.clusters.dto.ClustersDto;
56
import com.consdata.kouncil.model.cluster.Cluster;
67
import java.util.ArrayList;
78
import java.util.List;
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package com.consdata.kouncil.config.cluster.converter;
1+
package com.consdata.kouncil.clusters.converter;
22

3+
import com.consdata.kouncil.clusters.dto.ClusterDto;
4+
import com.consdata.kouncil.clusters.dto.SchemaRegistrySecurityConfigDto;
35
import com.consdata.kouncil.config.BrokerConfig;
46
import com.consdata.kouncil.config.ClusterConfig;
57
import com.consdata.kouncil.config.SchemaRegistryConfig;
68
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistryAuth;
79
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistrySSL;
810
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistrySecurity;
9-
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
10-
import com.consdata.kouncil.config.cluster.dto.SchemaRegistrySecurityConfigDto;
1111
import com.consdata.kouncil.model.cluster.ClusterAuthenticationMethod;
1212
import com.consdata.kouncil.model.cluster.ClusterSASLMechanism;
1313
import com.consdata.kouncil.model.cluster.ClusterSecurityProtocol;
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.consdata.kouncil.config.cluster.converter;
1+
package com.consdata.kouncil.clusters.converter;
22

3-
import com.consdata.kouncil.config.cluster.dto.BrokerDto;
4-
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
5-
import com.consdata.kouncil.config.cluster.dto.ClusterSecurityConfigDto;
6-
import com.consdata.kouncil.config.cluster.dto.SchemaRegistryDto;
7-
import com.consdata.kouncil.config.cluster.dto.SchemaRegistrySecurityConfigDto;
3+
import com.consdata.kouncil.clusters.dto.BrokerDto;
4+
import com.consdata.kouncil.clusters.dto.ClusterDto;
5+
import com.consdata.kouncil.clusters.dto.ClusterSecurityConfigDto;
6+
import com.consdata.kouncil.clusters.dto.SchemaRegistryDto;
7+
import com.consdata.kouncil.clusters.dto.SchemaRegistrySecurityConfigDto;
88
import com.consdata.kouncil.model.cluster.Cluster;
99
import com.consdata.kouncil.model.schemaregistry.SchemaRegistry;
1010
import com.consdata.kouncil.model.schemaregistry.SchemaRegistrySecurityConfig;

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/dto/BrokerDto.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/dto/BrokerDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.consdata.kouncil.config.cluster.dto;
1+
package com.consdata.kouncil.clusters.dto;
22

33
import lombok.Data;
44

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/dto/ClusterDto.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/dto/ClusterDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.consdata.kouncil.config.cluster.dto;
1+
package com.consdata.kouncil.clusters.dto;
22

33
import java.util.HashSet;
44
import java.util.Set;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.consdata.kouncil.config.cluster.dto;
1+
package com.consdata.kouncil.clusters.dto;
22

33
import com.consdata.kouncil.model.cluster.ClusterAuthenticationMethod;
44
import com.consdata.kouncil.model.cluster.ClusterSASLMechanism;

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/ClustersDto.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/dto/ClustersDto.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package com.consdata.kouncil.config.cluster;
1+
package com.consdata.kouncil.clusters.dto;
22

3-
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
43
import java.util.List;
54
import lombok.Builder;
65
import lombok.Data;

kouncil-backend/src/main/java/com/consdata/kouncil/config/cluster/dto/SchemaRegistryDto.java renamed to kouncil-backend/src/main/java/com/consdata/kouncil/clusters/dto/SchemaRegistryDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.consdata.kouncil.config.cluster.dto;
1+
package com.consdata.kouncil.clusters.dto;
22

33
import lombok.Data;
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.consdata.kouncil.config.cluster.dto;
1+
package com.consdata.kouncil.clusters.dto;
22

33
import com.consdata.kouncil.model.schemaregistry.SchemaSecurityProtocol;
44
import com.consdata.kouncil.model.schemaregistry.StoreType;

kouncil-backend/src/main/java/com/consdata/kouncil/config/KouncilConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.consdata.kouncil.config;
22

33
import com.consdata.kouncil.KouncilRuntimeException;
4-
import com.consdata.kouncil.config.cluster.ClustersDto;
5-
import com.consdata.kouncil.config.cluster.ClustersService;
6-
import com.consdata.kouncil.config.cluster.converter.ClusterConfigConverter;
4+
import com.consdata.kouncil.clusters.ClustersService;
5+
import com.consdata.kouncil.clusters.converter.ClusterConfigConverter;
6+
import com.consdata.kouncil.clusters.dto.ClustersDto;
77
import java.io.IOException;
88
import java.net.InetAddress;
99
import java.net.UnknownHostException;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
package com.consdata.kouncil.config.cluster.reader;
1+
package com.consdata.kouncil.config.cluster;
22

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

66
import com.consdata.kouncil.KouncilRuntimeException;
7+
import com.consdata.kouncil.clusters.ClusterRepository;
78
import com.consdata.kouncil.config.BrokerConfig;
89
import com.consdata.kouncil.config.ClusterConfig;
910
import com.consdata.kouncil.config.SchemaRegistryConfig;
1011
import com.consdata.kouncil.config.SchemaRegistryConfig.SchemaRegistrySSL;
11-
import com.consdata.kouncil.config.cluster.ClusterRepository;
1212
import com.consdata.kouncil.model.Broker;
1313
import com.consdata.kouncil.model.cluster.Cluster;
1414
import com.consdata.kouncil.model.cluster.ClusterAuthenticationMethod;

kouncil-backend/src/main/java/com/consdata/kouncil/config/security/UserGroupsConfigReader.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,23 @@ public void init() {
5353

5454
List<SystemFunctionName> adminFunctions = List.of(SystemFunctionName.BROKERS_LIST, SystemFunctionName.BROKER_DETAILS,
5555
SystemFunctionName.CONSUMER_GROUP_LIST, SystemFunctionName.CONSUMER_GROUP_DETAILS, SystemFunctionName.CONSUMER_GROUP_DELETE,
56-
SystemFunctionName.LOGIN);
56+
SystemFunctionName.LOGIN,
57+
SystemFunctionName.CLUSTER_LIST);
5758

5859
List<SystemFunctionName> editorFunctions = List.of(
5960
SystemFunctionName.TOPIC_LIST, SystemFunctionName.TOPIC_CREATE, SystemFunctionName.TOPIC_UPDATE, SystemFunctionName.TOPIC_DELETE, SystemFunctionName.TOPIC_MESSAGES,
6061
SystemFunctionName.TOPIC_RESEND_MESSAGE, SystemFunctionName.TOPIC_SEND_MESSAGE,
6162
SystemFunctionName.TRACK_LIST,
6263
SystemFunctionName.SCHEMA_LIST, SystemFunctionName.SCHEMA_CREATE, SystemFunctionName.SCHEMA_UPDATE, SystemFunctionName.SCHEMA_DELETE, SystemFunctionName.SCHEMA_DETAILS,
63-
SystemFunctionName.LOGIN);
64+
SystemFunctionName.LOGIN,
65+
SystemFunctionName.CLUSTER_LIST);
6466

6567
List<SystemFunctionName> viewerFunctions = List.of(
6668
SystemFunctionName.TOPIC_LIST, SystemFunctionName.TOPIC_MESSAGES,
6769
SystemFunctionName.TRACK_LIST,
6870
SystemFunctionName.SCHEMA_LIST, SystemFunctionName.SCHEMA_DETAILS,
69-
SystemFunctionName.LOGIN);
71+
SystemFunctionName.LOGIN,
72+
SystemFunctionName.CLUSTER_LIST);
7073

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

kouncil-backend/src/main/java/com/consdata/kouncil/model/admin/SystemFunctionName.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,8 @@ public enum SystemFunctionName {
3535
@FieldNameConstants.Include SCHEMA_DELETE,
3636

3737
//login
38-
@FieldNameConstants.Include LOGIN
38+
@FieldNameConstants.Include LOGIN,
39+
40+
//clusters
41+
@FieldNameConstants.Include CLUSTER_LIST
3942
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
DELETE FROM system_functions_user_groups;
2+
DELETE FROM user_group;
3+
4+
insert into system_function(id, name, label)
5+
VALUES (nextval('SEQ_SYSTEM_FUNCTION'), 'CLUSTER_LIST', 'Cluster list');
6+

kouncil-backend/src/test/java/com/consdata/kouncil/config/cluster/converter/ClusterConfigConverterTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.junit.jupiter.api.Assertions.assertAll;
55

6+
import com.consdata.kouncil.clusters.converter.ClusterConfigConverter;
7+
import com.consdata.kouncil.clusters.dto.BrokerDto;
8+
import com.consdata.kouncil.clusters.dto.ClusterDto;
9+
import com.consdata.kouncil.clusters.dto.ClusterSecurityConfigDto;
10+
import com.consdata.kouncil.clusters.dto.SchemaRegistryDto;
11+
import com.consdata.kouncil.clusters.dto.SchemaRegistrySecurityConfigDto;
612
import com.consdata.kouncil.config.BrokerConfig;
713
import com.consdata.kouncil.config.ClusterConfig;
8-
import com.consdata.kouncil.config.cluster.dto.BrokerDto;
9-
import com.consdata.kouncil.config.cluster.dto.ClusterDto;
10-
import com.consdata.kouncil.config.cluster.dto.ClusterSecurityConfigDto;
11-
import com.consdata.kouncil.config.cluster.dto.SchemaRegistryDto;
12-
import com.consdata.kouncil.config.cluster.dto.SchemaRegistrySecurityConfigDto;
1314
import com.consdata.kouncil.model.cluster.ClusterAuthenticationMethod;
1415
import com.consdata.kouncil.model.cluster.ClusterSASLMechanism;
1516
import com.consdata.kouncil.model.cluster.ClusterSecurityProtocol;

kouncil-backend/src/test/java/com/consdata/kouncil/config/cluster/converter/ClusterConverterTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.junit.jupiter.api.Assertions.assertAll;
55

6-
import com.consdata.kouncil.config.cluster.dto.BrokerDto;
6+
import com.consdata.kouncil.clusters.converter.ClusterConverter;
7+
import com.consdata.kouncil.clusters.dto.BrokerDto;
8+
import com.consdata.kouncil.clusters.dto.ClusterDto;
79
import com.consdata.kouncil.model.Broker;
810
import com.consdata.kouncil.model.cluster.Cluster;
911
import com.consdata.kouncil.model.cluster.ClusterSecurityConfig;
@@ -45,7 +47,7 @@ void should_convert_cluster_to_cluster_dto() {
4547
cluster.getSchemaRegistry().getSchemaRegistrySecurityConfig().setTruststorePassword("password");
4648
cluster.getSchemaRegistry().getSchemaRegistrySecurityConfig().setTruststoreLocation("/location/to/schema/truststore.jks");
4749

48-
com.consdata.kouncil.config.cluster.dto.ClusterDto clusterDto = ClusterConverter.convertToClusterDto(cluster);
50+
ClusterDto clusterDto = ClusterConverter.convertToClusterDto(cluster);
4951

5052
assertAll(
5153
() -> assertThat(clusterDto.getId()).isEqualTo(1L),

kouncil-frontend/apps/kouncil/src/app/app-factories.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
SchemaRegistryDemoService,
1414
SchemaRegistryService
1515
} from '@app/schema-registry';
16+
import {ClustersBackendService, ClustersDemoService, ClustersService} from '@app/feat-clusters';
1617

1718
export function topicsServiceFactory(http: HttpClient): TopicsService {
1819
switch (environment.backend) {
@@ -79,3 +80,14 @@ export function schemaRegistryServiceFactory(http: HttpClient): SchemaRegistrySe
7980
return new SchemaRegistryDemoService();
8081
}
8182
}
83+
84+
export function clustersServiceFactory(http: HttpClient): ClustersService {
85+
switch (environment.backend) {
86+
case Backend.SERVER: {
87+
return new ClustersBackendService(http);
88+
}
89+
case Backend.DEMO:
90+
default:
91+
return new ClustersDemoService();
92+
}
93+
}

kouncil-frontend/apps/kouncil/src/app/app.module.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import {ConfirmModule} from '@app/feat-confirm';
6262
import {CommonUtilsModule, HttpClientInterceptor, SearchService} from '@app/common-utils';
6363
import {FeatTopicsModule, TopicsService} from '@app/feat-topics';
6464
import {
65+
clustersServiceFactory,
6566
resendServiceFactory,
6667
schemaRegistryServiceFactory,
6768
sendServiceFactory,
@@ -103,6 +104,7 @@ import {FeatTopicFormModule, TopicService} from '@app/feat-topic-form';
103104
import {SidebarComponent} from './sidebar/sidebar.component';
104105
import {ToolbarComponent} from './toolbar/toolbar.component';
105106
import {SidebarMenuItemComponent} from './sidebar/sidebar-menu-item/sidebar-menu-item.component';
107+
import {ClustersService, FeatClustersModule} from '@app/feat-clusters';
106108

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

@@ -217,7 +219,8 @@ export function authServiceFactory(http: HttpClient, baseUrl: string): AuthServi
217219
SurveyScaleQuestionComponent,
218220
MatCheckboxModule,
219221
CommonAuthModule,
220-
FeatTopicFormModule
222+
FeatTopicFormModule,
223+
FeatClustersModule
221224
],
222225
providers: [
223226
{
@@ -299,6 +302,11 @@ export function authServiceFactory(http: HttpClient, baseUrl: string): AuthServi
299302
{
300303
provide: BASE_URL,
301304
useValue: environment.baseUrl
305+
},
306+
{
307+
provide: ClustersService,
308+
useFactory: clustersServiceFactory,
309+
deps: [HttpClient]
302310
}
303311
],
304312
bootstrap: [AppComponent]

kouncil-frontend/apps/kouncil/src/app/routing/routing.module.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {SchemasComponent} from '../schemas/list/schemas.component';
2626
import {SchemaEditComponent} from '../schemas/form/edit/schema-edit.component';
2727
import {SchemaCreateComponent} from '../schemas/form/create/schema-create.component';
2828
import {SchemaDetailsComponent} from '../schemas/form/details/schema-details.component';
29+
import {ClustersComponent} from '@app/feat-clusters';
2930

3031
@Injectable()
3132
export class ReloadingRouterStrategy extends RouteReuseStrategy {
@@ -147,6 +148,14 @@ const routes: Routes = [
147148
data: {
148149
roles: [SystemFunctionName.SCHEMA_DETAILS]
149150
}
151+
},
152+
{
153+
path: 'clusters',
154+
component: ClustersComponent,
155+
canActivate: [AuthGuard],
156+
data: {
157+
roles: [SystemFunctionName.CLUSTER_LIST]
158+
}
150159
}
151160
]
152161
},

kouncil-frontend/apps/kouncil/src/app/sidebar/sidebar-menu-item/sidebar-menu-item.component.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
@import '../../../styles/palette';
33

44
.menu-button {
5-
padding: 24px 8px 24px 16px ;
5+
padding: 24px 8px 24px 16px;
66
text-decoration: none;
77
color: $main-60;
88
border-radius: 0;

kouncil-frontend/apps/kouncil/src/app/sidebar/sidebar.component.scss

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,10 @@
3030
width: 50px;
3131
}
3232

33-
.grouping-menu-item {
34-
display: flex;
35-
border-radius: 0;
36-
min-width: 32px;
37-
color: $main-40;
38-
margin-top: 15px;
39-
padding: 8px 8px 8px 16px;
40-
width: 100%;
33+
.menu-grouping-separator {
34+
border-top: 1px solid $main-20;
35+
margin: 16px 8px 8px;
4136
}
42-
4337
}
4438

4539
.sidenav-demo {

kouncil-frontend/apps/kouncil/src/app/sidebar/sidebar.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import {SidebarState} from './sidebar-state';
99
@Component({
1010
selector: 'app-sidebar',
1111
template: `
12-
<div class="sidenav" [ngClass]="{'opened': (currentState$ | async), 'closed': (currentState$| async) === false, 'sidenav-demo': backend === 'DEMO'}">
12+
<div class="sidenav"
13+
[ngClass]="{'opened': (currentState$ | async), 'closed': (currentState$| async) === false, 'sidenav-demo': backend === 'DEMO'}">
1314
1415
<app-sidebar-menu-item [label]="'Topics'" [icon]="'topic'" [routeLink]="'/topics'"
1516
*ngIf="(isAuthenticated$ | async) && authService.canAccess([SystemFunctionName.TOPIC_LIST])">
@@ -32,6 +33,13 @@ import {SidebarState} from './sidebar-state';
3233
*ngIf="(isAuthenticated$ | async) && authService.canAccess([SystemFunctionName.SCHEMA_LIST])">
3334
</app-sidebar-menu-item>
3435
36+
<div *ngIf="(isAuthenticated$ | async) && authService.canAccess([KouncilRole.CLUSTER_LIST])"
37+
class="menu-grouping-separator"></div>
38+
39+
<app-sidebar-menu-item [label]="'Clusters'" [icon]="'storage'" [routeLink]="'/clusters'"
40+
*ngIf="(isAuthenticated$ | async) && authService.canAccess([KouncilRole.CLUSTER_LIST])">
41+
</app-sidebar-menu-item>
42+
3543
<div style="width: 100%; height: 32px">
3644
<button mat-icon-button
3745
style="bottom: 20px; right: 0; position: absolute;"

kouncil-frontend/libs/common-auth/src/lib/auth/system-function-name.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export enum SystemFunctionName {
1818
SCHEMA_CREATE = 'SCHEMA_CREATE',
1919
SCHEMA_UPDATE = 'SCHEMA_UPDATE',
2020
SCHEMA_DELETE = 'SCHEMA_DELETE',
21-
LOGIN = 'LOGIN'
21+
LOGIN = 'LOGIN',
22+
CLUSTER_LIST = 'CLUSTER_LIST',
2223

2324
}

0 commit comments

Comments
 (0)