|
36 | 36 | import io.envoyproxy.envoy.config.route.v3.ClusterSpecifierPlugin; |
37 | 37 | import io.envoyproxy.envoy.config.route.v3.RetryPolicy.RetryBackOff; |
38 | 38 | import io.envoyproxy.envoy.config.route.v3.RouteConfiguration; |
39 | | -import io.envoyproxy.envoy.type.v3.FractionalPercent; |
40 | 39 | import io.grpc.Status; |
41 | 40 | import io.grpc.internal.GrpcUtil; |
42 | 41 | import io.grpc.xds.ClusterSpecifierPlugin.NamedPluginConfig; |
@@ -336,12 +335,12 @@ static StructOrError<RouteMatch> parseRouteMatch( |
336 | 335 |
|
337 | 336 | FractionMatcher fractionMatch = null; |
338 | 337 | if (proto.hasRuntimeFraction()) { |
339 | | - StructOrError<FractionMatcher> parsedFraction = |
340 | | - parseFractionMatcher(proto.getRuntimeFraction().getDefaultValue()); |
341 | | - if (parsedFraction.getErrorDetail() != null) { |
342 | | - return StructOrError.fromError(parsedFraction.getErrorDetail()); |
| 338 | + try { |
| 339 | + fractionMatch = |
| 340 | + MatcherParser.parseFractionMatcher(proto.getRuntimeFraction().getDefaultValue()); |
| 341 | + } catch (IllegalArgumentException e) { |
| 342 | + return StructOrError.fromError(e.getMessage()); |
343 | 343 | } |
344 | | - fractionMatch = parsedFraction.getStruct(); |
345 | 344 | } |
346 | 345 |
|
347 | 346 | List<HeaderMatcher> headerMatchers = new ArrayList<>(); |
@@ -382,26 +381,7 @@ static StructOrError<PathMatcher> parsePathMatcher( |
382 | 381 | } |
383 | 382 | } |
384 | 383 |
|
385 | | - private static StructOrError<FractionMatcher> parseFractionMatcher(FractionalPercent proto) { |
386 | | - int numerator = proto.getNumerator(); |
387 | | - int denominator = 0; |
388 | | - switch (proto.getDenominator()) { |
389 | | - case HUNDRED: |
390 | | - denominator = 100; |
391 | | - break; |
392 | | - case TEN_THOUSAND: |
393 | | - denominator = 10_000; |
394 | | - break; |
395 | | - case MILLION: |
396 | | - denominator = 1_000_000; |
397 | | - break; |
398 | | - case UNRECOGNIZED: |
399 | | - default: |
400 | | - return StructOrError.fromError( |
401 | | - "Unrecognized fractional percent denominator: " + proto.getDenominator()); |
402 | | - } |
403 | | - return StructOrError.fromStruct(FractionMatcher.create(numerator, denominator)); |
404 | | - } |
| 384 | + |
405 | 385 |
|
406 | 386 | @VisibleForTesting |
407 | 387 | static StructOrError<HeaderMatcher> parseHeaderMatcher( |
|
0 commit comments