Skip to content

Commit f2e8a53

Browse files
committed
Add new schema compatibilityConfigGCP
1 parent 6ba0bc8 commit f2e8a53

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

api/src/main/java/io/kafbat/ui/service/SchemaRegistryService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import io.kafbat.ui.sr.api.KafkaSrClientApi;
1010
import io.kafbat.ui.sr.model.Compatibility;
1111
import io.kafbat.ui.sr.model.CompatibilityCheckResponse;
12-
import io.kafbat.ui.sr.model.CompatibilityConfig;
1312
import io.kafbat.ui.sr.model.CompatibilityLevelChange;
13+
import io.kafbat.ui.sr.model.GetGlobalCompatibilityLevel200Response;
1414
import io.kafbat.ui.sr.model.NewSubject;
1515
import io.kafbat.ui.sr.model.SchemaSubject;
1616
import io.kafbat.ui.util.ReactiveFailover;
17+
import io.kafbat.ui.util.gcp.GcpBearerAuthFilter;
1718
import java.util.List;
1819
import java.util.Objects;
1920
import java.util.stream.Collectors;
@@ -35,9 +36,6 @@ public class SchemaRegistryService {
3536

3637
private static final String LATEST = "latest";
3738

38-
private static final String GCP_BEARER_AUTH_CUSTOM_PROVIDER_CLASS =
39-
"com.google.cloud.hosted.kafka.auth.GcpBearerAuthCredentialProvider";
40-
4139
@AllArgsConstructor
4240
public static class SubjectWithCompatibilityLevel {
4341
@Delegate
@@ -152,14 +150,16 @@ public Mono<Compatibility> getSchemaCompatibilityLevel(KafkaCluster cluster,
152150
String schemaName) {
153151
return api(cluster)
154152
.mono(c -> c.getSubjectCompatibilityLevel(schemaName, true))
155-
.map(compatibilityConfig -> selectCompatibilityFormat(cluster, compatibilityConfig))
153+
.map(compatibilityResponse ->
154+
normalizeCompatibilityResponse(cluster, compatibilityResponse))
156155
.onErrorResume(error -> Mono.empty());
157156
}
158157

159158
public Mono<Compatibility> getGlobalSchemaCompatibilityLevel(KafkaCluster cluster) {
160159
return api(cluster)
161160
.mono(KafkaSrClientApi::getGlobalCompatibilityLevel)
162-
.map(compatibilityConfig -> selectCompatibilityFormat(cluster, compatibilityConfig));
161+
.map(compatibilityResponse ->
162+
normalizeCompatibilityResponse(cluster, compatibilityResponse));
163163
}
164164

165165
private Mono<Compatibility> getSchemaCompatibilityInfoOrGlobal(KafkaCluster cluster,
@@ -174,13 +174,14 @@ public Mono<CompatibilityCheckResponse> checksSchemaCompatibility(KafkaCluster c
174174
return api(cluster).mono(c -> c.checkSchemaCompatibility(schemaName, LATEST, true, newSchemaSubject));
175175
}
176176

177-
private Compatibility selectCompatibilityFormat(KafkaCluster cluster, CompatibilityConfig compatibilityConfig) {
177+
private Compatibility normalizeCompatibilityResponse(KafkaCluster cluster,
178+
GetGlobalCompatibilityLevel200Response compatibilityResponse) {
178179
if (cluster.getOriginalProperties().getSchemaRegistryAuth() != null
179180
&& Objects.equals(cluster.getOriginalProperties().getSchemaRegistryAuth().getBearerAuthCustomProviderClass(),
180-
GCP_BEARER_AUTH_CUSTOM_PROVIDER_CLASS)) {
181-
return compatibilityConfig.getCompatibility();
181+
GcpBearerAuthFilter.getGcpBearerAuthCustomProviderClass())) {
182+
return compatibilityResponse.getCompatibility();
182183
} else {
183-
return compatibilityConfig.getCompatibilityLevel();
184+
return compatibilityResponse.getCompatibilityLevel();
184185
}
185186
}
186187
}

contract/src/main/resources/swagger/kafka-sr-api.yaml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,9 @@ paths:
176176
content:
177177
application/json:
178178
schema:
179-
$ref: '#/components/schemas/CompatibilityConfig'
179+
oneOf:
180+
- $ref: '#/components/schemas/CompatibilityConfig'
181+
- $ref: '#/components/schemas/CompatibilityConfigGcp'
180182
404:
181183
description: Not found
182184
put:
@@ -220,7 +222,9 @@ paths:
220222
content:
221223
application/json:
222224
schema:
223-
$ref: '#/components/schemas/CompatibilityConfig'
225+
oneOf:
226+
- $ref: '#/components/schemas/CompatibilityConfig'
227+
- $ref: '#/components/schemas/CompatibilityConfigGcp'
224228
404:
225229
description: Not found
226230
put:
@@ -381,13 +385,20 @@ components:
381385
properties:
382386
compatibilityLevel:
383387
$ref: '#/components/schemas/Compatibility'
384-
# GCP Managed Kafka Schema registries specific fields
388+
required:
389+
- compatibilityLevel
390+
391+
CompatibilityConfigGcp:
392+
type: object
393+
properties:
385394
alias:
386-
type: string
395+
type: string
387396
compatibility:
388-
$ref: '#/components/schemas/Compatibility'
397+
$ref: '#/components/schemas/Compatibility'
389398
normalize:
390-
type: boolean
399+
type: boolean
400+
required:
401+
- compatibility
391402

392403
CompatibilityLevelChange:
393404
type: object
@@ -397,7 +408,6 @@ components:
397408
required:
398409
- compatibility
399410

400-
401411
Compatibility:
402412
type: string
403413
enum:
@@ -409,7 +419,6 @@ components:
409419
- FULL_TRANSITIVE
410420
- NONE
411421

412-
413422
CompatibilityCheckResponse:
414423
type: object
415424
properties:

0 commit comments

Comments
 (0)