This commit is contained in:
iliax 2023-07-20 18:59:43 +04:00
parent 066157577d
commit 3da32c9540
4 changed files with 9 additions and 14 deletions

View file

@ -1,7 +1,6 @@
package com.provectus.kafka.ui.service.graphs;
import com.provectus.kafka.ui.exception.ValidationException;
import com.provectus.kafka.ui.service.metrics.prometheus.PromQueryTemplate;
import java.time.Duration;
import java.util.HashMap;
import java.util.List;

View file

@ -4,7 +4,6 @@ import com.google.common.base.Preconditions;
import com.provectus.kafka.ui.exception.NotFoundException;
import com.provectus.kafka.ui.exception.ValidationException;
import com.provectus.kafka.ui.model.KafkaCluster;
import com.provectus.kafka.ui.service.metrics.prometheus.PromQueryTemplate;
import java.time.Duration;
import java.time.Instant;
import java.util.Map;

View file

@ -1,4 +1,4 @@
package com.provectus.kafka.ui.service.metrics.prometheus;
package com.provectus.kafka.ui.service.graphs;
import java.util.Optional;
import org.antlr.v4.runtime.BailErrorStrategy;
@ -26,9 +26,7 @@ class PromQueryLangGrammar {
}
private static PromQLParser createParser(String str) {
PromQLLexer lexer = new PromQLLexer(CharStreams.fromString(str));
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
var parser = new PromQLParser(tokenStream);
var parser = new PromQLParser(new CommonTokenStream(new PromQLLexer(CharStreams.fromString(str))));
parser.removeErrorListeners();
parser.setErrorHandler(new BailErrorStrategy());
return parser;

View file

@ -1,29 +1,28 @@
package com.provectus.kafka.ui.service.metrics.prometheus;
package com.provectus.kafka.ui.service.graphs;
import com.google.common.collect.Sets;
import com.provectus.kafka.ui.exception.ValidationException;
import com.provectus.kafka.ui.service.graphs.GraphDescription;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import org.apache.commons.lang3.text.StrSubstitutor;
public class PromQueryTemplate {
class PromQueryTemplate {
private final String queryTemplate;
private final Set<String> paramsNames;
public PromQueryTemplate(GraphDescription d) {
PromQueryTemplate(GraphDescription d) {
this(d.prometheusQuery(), d.params());
}
public PromQueryTemplate(String templateQueryString, Set<String> paramsNames) {
PromQueryTemplate(String templateQueryString, Set<String> paramsNames) {
this.queryTemplate = templateQueryString;
this.paramsNames = paramsNames;
}
public String getQuery(String clusterName, Map<String, String> paramValues) {
String getQuery(String clusterName, Map<String, String> paramValues) {
var missingParams = Sets.difference(paramsNames, paramValues.keySet());
if (!missingParams.isEmpty()) {
throw new ValidationException("Not all params set for query, missing: " + missingParams);
@ -33,12 +32,12 @@ public class PromQueryTemplate {
return replaceParams(replacements);
}
public Optional<String> validateSyntax() {
Optional<String> validateSyntax() {
Map<String, String> fakeReplacements = new HashMap<>();
fakeReplacements.put("cluster", "1");
paramsNames.forEach(paramName -> fakeReplacements.put(paramName, "1"));
String prepared = replaceParams(fakeReplacements);
String prepared = replaceParams(fakeReplacements);
return PromQueryLangGrammar.validateExpression(prepared);
}