Skip to content

Commit 0dea04c

Browse files
committed
Spotless apply on Prometheus
Signed-off-by: Mitchell Gale <[email protected]>
1 parent a3d2fae commit 0dea04c

File tree

66 files changed

+1795
-1696
lines changed

Some content is hidden

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

66 files changed

+1795
-1696
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ spotless {
8585
java {
8686
target fileTree('.') {
8787
include 'datasources/**/*.java',
88-
'core/**/*.java'
88+
'core/**/*.java',
89+
'prometheus/**/*.java'
8990
exclude '**/build/**', '**/build-*/**'
9091
}
9192
importOrder()

prometheus/src/main/java/org/opensearch/sql/prometheus/client/PrometheusClientImpl.java

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -38,60 +38,60 @@ public PrometheusClientImpl(OkHttpClient okHttpClient, URI uri) {
3838
this.uri = uri;
3939
}
4040

41-
4241
@Override
4342
public JSONObject queryRange(String query, Long start, Long end, String step) throws IOException {
44-
String queryUrl = String.format("%s/api/v1/query_range?query=%s&start=%s&end=%s&step=%s",
45-
uri.toString().replaceAll("/$", ""), URLEncoder.encode(query, StandardCharsets.UTF_8),
46-
start, end, step);
43+
String queryUrl =
44+
String.format(
45+
"%s/api/v1/query_range?query=%s&start=%s&end=%s&step=%s",
46+
uri.toString().replaceAll("/$", ""),
47+
URLEncoder.encode(query, StandardCharsets.UTF_8),
48+
start,
49+
end,
50+
step);
4751
logger.debug("queryUrl: " + queryUrl);
48-
Request request = new Request.Builder()
49-
.url(queryUrl)
50-
.build();
52+
Request request = new Request.Builder().url(queryUrl).build();
5153
Response response = this.okHttpClient.newCall(request).execute();
5254
JSONObject jsonObject = readResponse(response);
5355
return jsonObject.getJSONObject("data");
5456
}
5557

5658
@Override
5759
public List<String> getLabels(String metricName) throws IOException {
58-
String queryUrl = String.format("%s/api/v1/labels?%s=%s",
59-
uri.toString().replaceAll("/$", ""),
60-
URLEncoder.encode("match[]", StandardCharsets.UTF_8),
61-
URLEncoder.encode(metricName, StandardCharsets.UTF_8));
60+
String queryUrl =
61+
String.format(
62+
"%s/api/v1/labels?%s=%s",
63+
uri.toString().replaceAll("/$", ""),
64+
URLEncoder.encode("match[]", StandardCharsets.UTF_8),
65+
URLEncoder.encode(metricName, StandardCharsets.UTF_8));
6266
logger.debug("queryUrl: " + queryUrl);
63-
Request request = new Request.Builder()
64-
.url(queryUrl)
65-
.build();
67+
Request request = new Request.Builder().url(queryUrl).build();
6668
Response response = this.okHttpClient.newCall(request).execute();
6769
JSONObject jsonObject = readResponse(response);
6870
return toListOfLabels(jsonObject.getJSONArray("data"));
6971
}
7072

7173
@Override
7274
public Map<String, List<MetricMetadata>> getAllMetrics() throws IOException {
73-
String queryUrl = String.format("%s/api/v1/metadata",
74-
uri.toString().replaceAll("/$", ""));
75+
String queryUrl = String.format("%s/api/v1/metadata", uri.toString().replaceAll("/$", ""));
7576
logger.debug("queryUrl: " + queryUrl);
76-
Request request = new Request.Builder()
77-
.url(queryUrl)
78-
.build();
77+
Request request = new Request.Builder().url(queryUrl).build();
7978
Response response = this.okHttpClient.newCall(request).execute();
8079
JSONObject jsonObject = readResponse(response);
81-
TypeReference<HashMap<String, List<MetricMetadata>>> typeRef
82-
= new TypeReference<>() {};
80+
TypeReference<HashMap<String, List<MetricMetadata>>> typeRef = new TypeReference<>() {};
8381
return new ObjectMapper().readValue(jsonObject.getJSONObject("data").toString(), typeRef);
8482
}
8583

8684
@Override
8785
public JSONArray queryExemplars(String query, Long start, Long end) throws IOException {
88-
String queryUrl = String.format("%s/api/v1/query_exemplars?query=%s&start=%s&end=%s",
89-
uri.toString().replaceAll("/$", ""), URLEncoder.encode(query, StandardCharsets.UTF_8),
90-
start, end);
86+
String queryUrl =
87+
String.format(
88+
"%s/api/v1/query_exemplars?query=%s&start=%s&end=%s",
89+
uri.toString().replaceAll("/$", ""),
90+
URLEncoder.encode(query, StandardCharsets.UTF_8),
91+
start,
92+
end);
9193
logger.debug("queryUrl: " + queryUrl);
92-
Request request = new Request.Builder()
93-
.url(queryUrl)
94-
.build();
94+
Request request = new Request.Builder().url(queryUrl).build();
9595
Response response = this.okHttpClient.newCall(request).execute();
9696
JSONObject jsonObject = readResponse(response);
9797
return jsonObject.getJSONArray("data");
@@ -100,16 +100,15 @@ public JSONArray queryExemplars(String query, Long start, Long end) throws IOExc
100100
private List<String> toListOfLabels(JSONArray array) {
101101
List<String> result = new ArrayList<>();
102102
for (int i = 0; i < array.length(); i++) {
103-
//__name__ is internal label in prometheus representing the metric name.
104-
//Exempting this from labels list as it is not required in any of the operations.
103+
// __name__ is internal label in prometheus representing the metric name.
104+
// Exempting this from labels list as it is not required in any of the operations.
105105
if (!"__name__".equals(array.optString(i))) {
106106
result.add(array.optString(i));
107107
}
108108
}
109109
return result;
110110
}
111111

112-
113112
private JSONObject readResponse(Response response) throws IOException {
114113
if (response.isSuccessful()) {
115114
JSONObject jsonObject = new JSONObject(Objects.requireNonNull(response.body()).string());
@@ -120,10 +119,9 @@ private JSONObject readResponse(Response response) throws IOException {
120119
}
121120
} else {
122121
throw new RuntimeException(
123-
String.format("Request to Prometheus is Unsuccessful with : %s", Objects.requireNonNull(
124-
response.body(), "Response body can't be null").string()));
122+
String.format(
123+
"Request to Prometheus is Unsuccessful with : %s",
124+
Objects.requireNonNull(response.body(), "Response body can't be null").string()));
125125
}
126126
}
127-
128-
129127
}

prometheus/src/main/java/org/opensearch/sql/prometheus/data/constants/PrometheusFieldConstants.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ public class PrometheusFieldConstants {
1818
public static final String EXEMPLARS_KEY = "exemplars";
1919
public static final String TRACE_ID_KEY = "traceID";
2020
public static final String LABELS_KEY = "labels";
21-
public static final String TIMESTAMP_KEY = "timestamp";
22-
public static final String VALUE_KEY = "value";
21+
public static final String TIMESTAMP_KEY = "timestamp";
22+
public static final String VALUE_KEY = "value";
2323
}

prometheus/src/main/java/org/opensearch/sql/prometheus/functions/implementation/QueryExemplarFunctionImplementation.java

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
import org.opensearch.sql.prometheus.storage.QueryExemplarsTable;
2929
import org.opensearch.sql.storage.Table;
3030

31-
public class QueryExemplarFunctionImplementation extends FunctionExpression implements
32-
TableFunctionImplementation {
31+
public class QueryExemplarFunctionImplementation extends FunctionExpression
32+
implements TableFunctionImplementation {
3333

3434
private final FunctionName functionName;
3535
private final List<Expression> arguments;
@@ -39,10 +39,10 @@ public class QueryExemplarFunctionImplementation extends FunctionExpression impl
3939
* Required argument constructor.
4040
*
4141
* @param functionName name of the function
42-
* @param arguments a list of arguments provided
42+
* @param arguments a list of arguments provided
4343
*/
44-
public QueryExemplarFunctionImplementation(FunctionName functionName, List<Expression> arguments,
45-
PrometheusClient prometheusClient) {
44+
public QueryExemplarFunctionImplementation(
45+
FunctionName functionName, List<Expression> arguments, PrometheusClient prometheusClient) {
4646
super(functionName, arguments);
4747
this.functionName = functionName;
4848
this.arguments = arguments;
@@ -51,10 +51,11 @@ public QueryExemplarFunctionImplementation(FunctionName functionName, List<Expre
5151

5252
@Override
5353
public ExprValue valueOf(Environment<Expression, ExprValue> valueEnv) {
54-
throw new UnsupportedOperationException(String.format(
55-
"Prometheus defined function [%s] is only "
56-
+ "supported in SOURCE clause with prometheus connector catalog",
57-
functionName));
54+
throw new UnsupportedOperationException(
55+
String.format(
56+
"Prometheus defined function [%s] is only "
57+
+ "supported in SOURCE clause with prometheus connector catalog",
58+
functionName));
5859
}
5960

6061
@Override
@@ -64,10 +65,15 @@ public ExprType type() {
6465

6566
@Override
6667
public String toString() {
67-
List<String> args = arguments.stream()
68-
.map(arg -> String.format("%s=%s", ((NamedArgumentExpression) arg)
69-
.getArgName(), ((NamedArgumentExpression) arg).getValue().toString()))
70-
.collect(Collectors.toList());
68+
List<String> args =
69+
arguments.stream()
70+
.map(
71+
arg ->
72+
String.format(
73+
"%s=%s",
74+
((NamedArgumentExpression) arg).getArgName(),
75+
((NamedArgumentExpression) arg).getValue().toString()))
76+
.collect(Collectors.toList());
7177
return String.format("%s(%s)", functionName, String.join(", ", args));
7278
}
7379

@@ -79,27 +85,26 @@ public Table applyArguments() {
7985
private PrometheusQueryExemplarsRequest buildExemplarsQueryRequest(List<Expression> arguments) {
8086

8187
PrometheusQueryExemplarsRequest request = new PrometheusQueryExemplarsRequest();
82-
arguments.forEach(arg -> {
83-
String argName = ((NamedArgumentExpression) arg).getArgName();
84-
Expression argValue = ((NamedArgumentExpression) arg).getValue();
85-
ExprValue literalValue = argValue.valueOf();
86-
switch (argName) {
87-
case QUERY:
88-
request
89-
.setQuery((String) literalValue.value());
90-
break;
91-
case STARTTIME:
92-
request.setStartTime(((Number) literalValue.value()).longValue());
93-
break;
94-
case ENDTIME:
95-
request.setEndTime(((Number) literalValue.value()).longValue());
96-
break;
97-
default:
98-
throw new ExpressionEvaluationException(
99-
String.format("Invalid Function Argument:%s", argName));
100-
}
101-
});
88+
arguments.forEach(
89+
arg -> {
90+
String argName = ((NamedArgumentExpression) arg).getArgName();
91+
Expression argValue = ((NamedArgumentExpression) arg).getValue();
92+
ExprValue literalValue = argValue.valueOf();
93+
switch (argName) {
94+
case QUERY:
95+
request.setQuery((String) literalValue.value());
96+
break;
97+
case STARTTIME:
98+
request.setStartTime(((Number) literalValue.value()).longValue());
99+
break;
100+
case ENDTIME:
101+
request.setEndTime(((Number) literalValue.value()).longValue());
102+
break;
103+
default:
104+
throw new ExpressionEvaluationException(
105+
String.format("Invalid Function Argument:%s", argName));
106+
}
107+
});
102108
return request;
103109
}
104-
105110
}

prometheus/src/main/java/org/opensearch/sql/prometheus/functions/implementation/QueryRangeFunctionImplementation.java

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
import org.opensearch.sql.prometheus.storage.PrometheusMetricTable;
3030
import org.opensearch.sql.storage.Table;
3131

32-
public class QueryRangeFunctionImplementation extends FunctionExpression implements
33-
TableFunctionImplementation {
32+
public class QueryRangeFunctionImplementation extends FunctionExpression
33+
implements TableFunctionImplementation {
3434

3535
private final FunctionName functionName;
3636
private final List<Expression> arguments;
@@ -40,10 +40,10 @@ public class QueryRangeFunctionImplementation extends FunctionExpression impleme
4040
* Required argument constructor.
4141
*
4242
* @param functionName name of the function
43-
* @param arguments a list of expressions
43+
* @param arguments a list of expressions
4444
*/
45-
public QueryRangeFunctionImplementation(FunctionName functionName, List<Expression> arguments,
46-
PrometheusClient prometheusClient) {
45+
public QueryRangeFunctionImplementation(
46+
FunctionName functionName, List<Expression> arguments, PrometheusClient prometheusClient) {
4747
super(functionName, arguments);
4848
this.functionName = functionName;
4949
this.arguments = arguments;
@@ -52,10 +52,11 @@ public QueryRangeFunctionImplementation(FunctionName functionName, List<Expressi
5252

5353
@Override
5454
public ExprValue valueOf(Environment<Expression, ExprValue> valueEnv) {
55-
throw new UnsupportedOperationException(String.format(
56-
"Prometheus defined function [%s] is only "
57-
+ "supported in SOURCE clause with prometheus connector catalog",
58-
functionName));
55+
throw new UnsupportedOperationException(
56+
String.format(
57+
"Prometheus defined function [%s] is only "
58+
+ "supported in SOURCE clause with prometheus connector catalog",
59+
functionName));
5960
}
6061

6162
@Override
@@ -65,10 +66,15 @@ public ExprType type() {
6566

6667
@Override
6768
public String toString() {
68-
List<String> args = arguments.stream()
69-
.map(arg -> String.format("%s=%s", ((NamedArgumentExpression) arg)
70-
.getArgName(), ((NamedArgumentExpression) arg).getValue().toString()))
71-
.collect(Collectors.toList());
69+
List<String> args =
70+
arguments.stream()
71+
.map(
72+
arg ->
73+
String.format(
74+
"%s=%s",
75+
((NamedArgumentExpression) arg).getArgName(),
76+
((NamedArgumentExpression) arg).getValue().toString()))
77+
.collect(Collectors.toList());
7278
return String.format("%s(%s)", functionName, String.join(", ", args));
7379
}
7480

@@ -80,30 +86,29 @@ public Table applyArguments() {
8086
private PrometheusQueryRequest buildQueryFromQueryRangeFunction(List<Expression> arguments) {
8187

8288
PrometheusQueryRequest prometheusQueryRequest = new PrometheusQueryRequest();
83-
arguments.forEach(arg -> {
84-
String argName = ((NamedArgumentExpression) arg).getArgName();
85-
Expression argValue = ((NamedArgumentExpression) arg).getValue();
86-
ExprValue literalValue = argValue.valueOf();
87-
switch (argName) {
88-
case QUERY:
89-
prometheusQueryRequest
90-
.setPromQl((String) literalValue.value());
91-
break;
92-
case STARTTIME:
93-
prometheusQueryRequest.setStartTime(((Number) literalValue.value()).longValue());
94-
break;
95-
case ENDTIME:
96-
prometheusQueryRequest.setEndTime(((Number) literalValue.value()).longValue());
97-
break;
98-
case STEP:
99-
prometheusQueryRequest.setStep(literalValue.value().toString());
100-
break;
101-
default:
102-
throw new ExpressionEvaluationException(
103-
String.format("Invalid Function Argument:%s", argName));
104-
}
105-
});
89+
arguments.forEach(
90+
arg -> {
91+
String argName = ((NamedArgumentExpression) arg).getArgName();
92+
Expression argValue = ((NamedArgumentExpression) arg).getValue();
93+
ExprValue literalValue = argValue.valueOf();
94+
switch (argName) {
95+
case QUERY:
96+
prometheusQueryRequest.setPromQl((String) literalValue.value());
97+
break;
98+
case STARTTIME:
99+
prometheusQueryRequest.setStartTime(((Number) literalValue.value()).longValue());
100+
break;
101+
case ENDTIME:
102+
prometheusQueryRequest.setEndTime(((Number) literalValue.value()).longValue());
103+
break;
104+
case STEP:
105+
prometheusQueryRequest.setStep(literalValue.value().toString());
106+
break;
107+
default:
108+
throw new ExpressionEvaluationException(
109+
String.format("Invalid Function Argument:%s", argName));
110+
}
111+
});
106112
return prometheusQueryRequest;
107113
}
108-
109114
}

prometheus/src/main/java/org/opensearch/sql/prometheus/functions/resolver/QueryExemplarsTableFunctionResolver.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import org.opensearch.sql.prometheus.functions.implementation.QueryExemplarFunctionImplementation;
2323

2424
/**
25-
* This class is for query_exemplars table function resolver {@link FunctionResolver}.
26-
* It takes care of validating function arguments and also creating
27-
* required {@link org.opensearch.sql.expression.function.TableFunctionImplementation} Class.
25+
* This class is for query_exemplars table function resolver {@link FunctionResolver}. It takes care
26+
* of validating function arguments and also creating required {@link
27+
* org.opensearch.sql.expression.function.TableFunctionImplementation} Class.
2828
*/
2929
@RequiredArgsConstructor
3030
public class QueryExemplarsTableFunctionResolver implements FunctionResolver {
@@ -41,13 +41,15 @@ public Pair<FunctionSignature, FunctionBuilder> resolve(FunctionSignature unreso
4141
final FunctionName functionName = FunctionName.of(QUERY_EXEMPLARS);
4242
FunctionSignature functionSignature =
4343
new FunctionSignature(FunctionName.of(QUERY_EXEMPLARS), List.of(STRING, LONG, LONG));
44-
FunctionBuilder functionBuilder = (functionProperties, arguments) -> {
45-
final List<String> argumentNames = List.of(QUERY, STARTTIME, ENDTIME);
46-
validatePrometheusTableFunctionArguments(arguments, argumentNames);
47-
List<Expression> namedArguments = getNamedArgumentsOfTableFunction(arguments, argumentNames);
48-
return new QueryExemplarFunctionImplementation(functionName,
49-
namedArguments, prometheusClient);
50-
};
44+
FunctionBuilder functionBuilder =
45+
(functionProperties, arguments) -> {
46+
final List<String> argumentNames = List.of(QUERY, STARTTIME, ENDTIME);
47+
validatePrometheusTableFunctionArguments(arguments, argumentNames);
48+
List<Expression> namedArguments =
49+
getNamedArgumentsOfTableFunction(arguments, argumentNames);
50+
return new QueryExemplarFunctionImplementation(
51+
functionName, namedArguments, prometheusClient);
52+
};
5153
return Pair.of(functionSignature, functionBuilder);
5254
}
5355

0 commit comments

Comments
 (0)