34
34
@ RequiredArgsConstructor
35
35
@ Slf4j
36
36
public class KafkaConnectController extends AbstractController implements KafkaConnectApi {
37
- private static final Set <ConnectorActionDTO > RESTART_ACTIONS
38
- = Set . of ( RESTART , RESTART_FAILED_TASKS , RESTART_ALL_TASKS );
37
+ private static final Set <ConnectorActionDTO > RESTART_ACTIONS = Set . of ( RESTART , RESTART_FAILED_TASKS ,
38
+ RESTART_ALL_TASKS );
39
39
private static final String CONNECTOR_NAME = "connectorName" ;
40
40
41
41
private final KafkaConnectService kafkaConnectService ;
42
42
43
43
@ Override
44
44
public Mono <ResponseEntity <Flux <ConnectDTO >>> getConnects (String clusterName ,
45
- ServerWebExchange exchange ) {
45
+ ServerWebExchange exchange ) {
46
46
47
47
Flux <ConnectDTO > availableConnects = kafkaConnectService .getConnects (getCluster (clusterName ))
48
48
.filterWhen (dto -> accessControlService .isConnectAccessible (dto , clusterName ));
@@ -52,7 +52,7 @@ public Mono<ResponseEntity<Flux<ConnectDTO>>> getConnects(String clusterName,
52
52
53
53
@ Override
54
54
public Mono <ResponseEntity <Flux <String >>> getConnectors (String clusterName , String connectName ,
55
- ServerWebExchange exchange ) {
55
+ ServerWebExchange exchange ) {
56
56
57
57
var context = AccessContext .builder ()
58
58
.cluster (clusterName )
@@ -61,14 +61,15 @@ public Mono<ResponseEntity<Flux<String>>> getConnectors(String clusterName, Stri
61
61
.build ();
62
62
63
63
return validateAccess (context )
64
- .thenReturn (ResponseEntity .ok (kafkaConnectService .getConnectorNames (getCluster (clusterName ), connectName )))
64
+ .thenReturn (
65
+ ResponseEntity .ok (kafkaConnectService .getConnectorNames (getCluster (clusterName ), connectName )))
65
66
.doOnEach (sig -> audit (context , sig ));
66
67
}
67
68
68
69
@ Override
69
70
public Mono <ResponseEntity <ConnectorDTO >> createConnector (String clusterName , String connectName ,
70
- @ Valid Mono <NewConnectorDTO > connector ,
71
- ServerWebExchange exchange ) {
71
+ @ Valid Mono <NewConnectorDTO > connector ,
72
+ ServerWebExchange exchange ) {
72
73
73
74
var context = AccessContext .builder ()
74
75
.cluster (clusterName )
@@ -78,14 +79,14 @@ public Mono<ResponseEntity<ConnectorDTO>> createConnector(String clusterName, St
78
79
79
80
return validateAccess (context ).then (
80
81
kafkaConnectService .createConnector (getCluster (clusterName ), connectName , connector )
81
- .map (ResponseEntity ::ok )
82
- ) .doOnEach (sig -> audit (context , sig ));
82
+ .map (ResponseEntity ::ok ))
83
+ .doOnEach (sig -> audit (context , sig ));
83
84
}
84
85
85
86
@ Override
86
87
public Mono <ResponseEntity <ConnectorDTO >> getConnector (String clusterName , String connectName ,
87
- String connectorName ,
88
- ServerWebExchange exchange ) {
88
+ String connectorName ,
89
+ ServerWebExchange exchange ) {
89
90
90
91
var context = AccessContext .builder ()
91
92
.cluster (clusterName )
@@ -95,14 +96,14 @@ public Mono<ResponseEntity<ConnectorDTO>> getConnector(String clusterName, Strin
95
96
96
97
return validateAccess (context ).then (
97
98
kafkaConnectService .getConnector (getCluster (clusterName ), connectName , connectorName )
98
- .map (ResponseEntity ::ok )
99
- ) .doOnEach (sig -> audit (context , sig ));
99
+ .map (ResponseEntity ::ok ))
100
+ .doOnEach (sig -> audit (context , sig ));
100
101
}
101
102
102
103
@ Override
103
104
public Mono <ResponseEntity <Void >> deleteConnector (String clusterName , String connectName ,
104
- String connectorName ,
105
- ServerWebExchange exchange ) {
105
+ String connectorName ,
106
+ ServerWebExchange exchange ) {
106
107
107
108
var context = AccessContext .builder ()
108
109
.cluster (clusterName )
@@ -113,19 +114,17 @@ public Mono<ResponseEntity<Void>> deleteConnector(String clusterName, String con
113
114
114
115
return validateAccess (context ).then (
115
116
kafkaConnectService .deleteConnector (getCluster (clusterName ), connectName , connectorName )
116
- .map (ResponseEntity ::ok )
117
- ) .doOnEach (sig -> audit (context , sig ));
117
+ .map (ResponseEntity ::ok ))
118
+ .doOnEach (sig -> audit (context , sig ));
118
119
}
119
120
120
-
121
121
@ Override
122
122
public Mono <ResponseEntity <Flux <FullConnectorInfoDTO >>> getAllConnectors (
123
123
String clusterName ,
124
124
String search ,
125
125
ConnectorColumnsToSortDTO orderBy ,
126
126
SortOrderDTO sortOrder ,
127
- ServerWebExchange exchange
128
- ) {
127
+ ServerWebExchange exchange ) {
129
128
var context = AccessContext .builder ()
130
129
.cluster (clusterName )
131
130
.operationName ("getAllConnectors" )
@@ -145,9 +144,9 @@ public Mono<ResponseEntity<Flux<FullConnectorInfoDTO>>> getAllConnectors(
145
144
146
145
@ Override
147
146
public Mono <ResponseEntity <Map <String , Object >>> getConnectorConfig (String clusterName ,
148
- String connectName ,
149
- String connectorName ,
150
- ServerWebExchange exchange ) {
147
+ String connectName ,
148
+ String connectorName ,
149
+ ServerWebExchange exchange ) {
151
150
152
151
var context = AccessContext .builder ()
153
152
.cluster (clusterName )
@@ -158,15 +157,15 @@ public Mono<ResponseEntity<Map<String, Object>>> getConnectorConfig(String clust
158
157
return validateAccess (context ).then (
159
158
kafkaConnectService
160
159
.getConnectorConfig (getCluster (clusterName ), connectName , connectorName )
161
- .map (ResponseEntity ::ok )
162
- ) .doOnEach (sig -> audit (context , sig ));
160
+ .map (ResponseEntity ::ok ))
161
+ .doOnEach (sig -> audit (context , sig ));
163
162
}
164
163
165
164
@ Override
166
165
public Mono <ResponseEntity <ConnectorDTO >> setConnectorConfig (String clusterName , String connectName ,
167
- String connectorName ,
168
- Mono <Map <String , Object >> requestBody ,
169
- ServerWebExchange exchange ) {
166
+ String connectorName ,
167
+ Mono <Map <String , Object >> requestBody ,
168
+ ServerWebExchange exchange ) {
170
169
171
170
var context = AccessContext .builder ()
172
171
.cluster (clusterName )
@@ -176,22 +175,22 @@ public Mono<ResponseEntity<ConnectorDTO>> setConnectorConfig(String clusterName,
176
175
.build ();
177
176
178
177
return validateAccess (context ).then (
179
- kafkaConnectService
180
- .setConnectorConfig (getCluster (clusterName ), connectName , connectorName , requestBody )
181
- .map (ResponseEntity ::ok ))
178
+ kafkaConnectService
179
+ .setConnectorConfig (getCluster (clusterName ), connectName , connectorName , requestBody )
180
+ .map (ResponseEntity ::ok ))
182
181
.doOnEach (sig -> audit (context , sig ));
183
182
}
184
183
185
184
@ Override
186
185
public Mono <ResponseEntity <Void >> updateConnectorState (String clusterName , String connectName ,
187
- String connectorName ,
188
- ConnectorActionDTO action ,
189
- ServerWebExchange exchange ) {
186
+ String connectorName ,
187
+ ConnectorActionDTO action ,
188
+ ServerWebExchange exchange ) {
190
189
ConnectAction [] connectActions ;
191
190
if (RESTART_ACTIONS .contains (action )) {
192
- connectActions = new ConnectAction [] {ConnectAction .VIEW , ConnectAction .RESTART };
191
+ connectActions = new ConnectAction [] { ConnectAction .VIEW , ConnectAction .RESTART };
193
192
} else {
194
- connectActions = new ConnectAction [] {ConnectAction .VIEW , ConnectAction .EDIT };
193
+ connectActions = new ConnectAction [] { ConnectAction .VIEW , ConnectAction .EDIT };
195
194
}
196
195
197
196
var context = AccessContext .builder ()
@@ -204,15 +203,15 @@ public Mono<ResponseEntity<Void>> updateConnectorState(String clusterName, Strin
204
203
return validateAccess (context ).then (
205
204
kafkaConnectService
206
205
.updateConnectorState (getCluster (clusterName ), connectName , connectorName , action )
207
- .map (ResponseEntity ::ok )
208
- ) .doOnEach (sig -> audit (context , sig ));
206
+ .map (ResponseEntity ::ok ))
207
+ .doOnEach (sig -> audit (context , sig ));
209
208
}
210
209
211
210
@ Override
212
211
public Mono <ResponseEntity <Flux <TaskDTO >>> getConnectorTasks (String clusterName ,
213
- String connectName ,
214
- String connectorName ,
215
- ServerWebExchange exchange ) {
212
+ String connectName ,
213
+ String connectorName ,
214
+ ServerWebExchange exchange ) {
216
215
var context = AccessContext .builder ()
217
216
.cluster (clusterName )
218
217
.connectActions (connectName , ConnectAction .VIEW )
@@ -223,14 +222,14 @@ public Mono<ResponseEntity<Flux<TaskDTO>>> getConnectorTasks(String clusterName,
223
222
return validateAccess (context ).thenReturn (
224
223
ResponseEntity
225
224
.ok (kafkaConnectService
226
- .getConnectorTasks (getCluster (clusterName ), connectName , connectorName ))
227
- ) .doOnEach (sig -> audit (context , sig ));
225
+ .getConnectorTasks (getCluster (clusterName ), connectName , connectorName )))
226
+ .doOnEach (sig -> audit (context , sig ));
228
227
}
229
228
230
229
@ Override
231
230
public Mono <ResponseEntity <Void >> restartConnectorTask (String clusterName , String connectName ,
232
- String connectorName , Integer taskId ,
233
- ServerWebExchange exchange ) {
231
+ String connectorName , Integer taskId ,
232
+ ServerWebExchange exchange ) {
234
233
235
234
var context = AccessContext .builder ()
236
235
.cluster (clusterName )
@@ -242,8 +241,8 @@ public Mono<ResponseEntity<Void>> restartConnectorTask(String clusterName, Strin
242
241
return validateAccess (context ).then (
243
242
kafkaConnectService
244
243
.restartConnectorTask (getCluster (clusterName ), connectName , connectorName , taskId )
245
- .map (ResponseEntity ::ok )
246
- ) .doOnEach (sig -> audit (context , sig ));
244
+ .map (ResponseEntity ::ok ))
245
+ .doOnEach (sig -> audit (context , sig ));
247
246
}
248
247
249
248
@ Override
@@ -259,8 +258,8 @@ public Mono<ResponseEntity<Flux<ConnectorPluginDTO>>> getConnectorPlugins(
259
258
return validateAccess (context ).then (
260
259
Mono .just (
261
260
ResponseEntity .ok (
262
- kafkaConnectService .getConnectorPlugins (getCluster (clusterName ), connectName )))
263
- ) .doOnEach (sig -> audit (context , sig ));
261
+ kafkaConnectService .getConnectorPlugins (getCluster (clusterName ), connectName ))))
262
+ .doOnEach (sig -> audit (context , sig ));
264
263
}
265
264
266
265
@ Override
@@ -285,4 +284,26 @@ private Comparator<FullConnectorInfoDTO> getConnectorsComparator(ConnectorColumn
285
284
default -> defaultComparator ;
286
285
};
287
286
}
287
+
288
+ @ Override
289
+ public Mono <ResponseEntity <Void >> resetConnectorOffsets (String clusterName , String connectName ,
290
+ String connectorName ,
291
+ ServerWebExchange exchange ) {
292
+ ConnectAction [] connectActions ;
293
+
294
+ connectActions = new ConnectAction [] { ConnectAction .VIEW , ConnectAction .RESET_OFFSETS };
295
+
296
+ var context = AccessContext .builder ()
297
+ .cluster (clusterName )
298
+ .connectActions (connectName , connectActions )
299
+ .operationName ("resetConnectorOffsets" )
300
+ .operationParams (Map .of (CONNECTOR_NAME , connectorName ))
301
+ .build ();
302
+
303
+ return validateAccess (context ).then (
304
+ kafkaConnectService
305
+ .resetConnectorOffsets (getCluster (clusterName ), connectName , connectorName )
306
+ .map (ResponseEntity ::ok ))
307
+ .doOnEach (sig -> audit (context , sig ));
308
+ }
288
309
}
0 commit comments