Skip to content

Commit d46425f

Browse files
Added new operator to check IP within range (#185)
* Added new operator to check ip within range * Updated enums * Updated ht config-service version * Updated converters for StringCondition value changes * Reverted breaking changes | addressed review comment * Removed redundant deserializer
1 parent a90b28b commit d46425f

File tree

7 files changed

+77
-157
lines changed

7 files changed

+77
-157
lines changed

Diff for: hypertrace-graphql-labels-schema-api/src/main/java/org/hypertrace/graphql/label/schema/rule/StringCondition.java

+25-2
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,51 @@
33
import graphql.annotations.annotationTypes.GraphQLField;
44
import graphql.annotations.annotationTypes.GraphQLName;
55
import graphql.annotations.annotationTypes.GraphQLNonNull;
6+
import java.util.List;
7+
import javax.annotation.Nullable;
68

79
@GraphQLName(StringCondition.TYPE_NAME)
810
public interface StringCondition {
911
String TYPE_NAME = "LabelApplicationStringCondition";
1012

1113
String OPERATOR_KEY = "operator";
1214
String VALUE_KEY = "value";
15+
String VALUES_KEY = "values";
16+
String STRING_CONDITION_VALUE_TYPE_KEY = "stringConditionValueType";
1317

1418
@GraphQLName(Operator.TYPE_NAME)
1519
enum Operator {
1620
OPERATOR_EQUALS,
17-
OPERATOR_MATCHES_REGEX;
21+
OPERATOR_MATCHES_REGEX,
22+
OPERATOR_MATCHES_IPS,
23+
OPERATOR_NOT_MATCHES_IPS;
1824
private static final String TYPE_NAME = "StringConditionOperator";
1925
}
2026

27+
@GraphQLName(StringConditionValueType.TYPE_NAME)
28+
enum StringConditionValueType {
29+
VALUE,
30+
VALUES;
31+
private static final String TYPE_NAME = "StringConditionValueType";
32+
}
33+
2134
@GraphQLField
2235
@GraphQLNonNull
2336
@GraphQLName(OPERATOR_KEY)
2437
Operator operator();
2538

2639
@GraphQLField
27-
@GraphQLNonNull
40+
@Nullable
2841
@GraphQLName(VALUE_KEY)
2942
String value();
43+
44+
@GraphQLField
45+
@Nullable
46+
@GraphQLName(VALUES_KEY)
47+
List<String> values();
48+
49+
@GraphQLField
50+
@Nullable
51+
@GraphQLName(STRING_CONDITION_VALUE_TYPE_KEY)
52+
StringConditionValueType stringConditionValueType();
3053
}

Diff for: hypertrace-graphql-labels-schema-impl/src/main/java/org/hypertrace/graphql/label/dao/LabelApplicationRuleRequestConverter.java

+17-4
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,19 @@ LeafCondition convertLeafCondition(
130130

131131
StringCondition convertStringCondition(
132132
org.hypertrace.graphql.label.schema.rule.StringCondition stringCondition) {
133-
return StringCondition.newBuilder()
134-
.setOperator(convertStringConditionOperator(stringCondition.operator()))
135-
.setValue(stringCondition.value())
136-
.build();
133+
StringCondition.Builder stringConditionBuilder =
134+
StringCondition.newBuilder()
135+
.setOperator(convertStringConditionOperator(stringCondition.operator()));
136+
switch (stringCondition.stringConditionValueType()) {
137+
case VALUES:
138+
return stringConditionBuilder
139+
.setValues(
140+
StringCondition.StringList.newBuilder().addAllValues(stringCondition.values()))
141+
.build();
142+
case VALUE:
143+
default:
144+
return stringConditionBuilder.setValue(stringCondition.value()).build();
145+
}
137146
}
138147

139148
UnaryCondition convertUnaryCondition(
@@ -150,6 +159,10 @@ StringCondition.Operator convertStringConditionOperator(
150159
return StringCondition.Operator.OPERATOR_EQUALS;
151160
case OPERATOR_MATCHES_REGEX:
152161
return StringCondition.Operator.OPERATOR_MATCHES_REGEX;
162+
case OPERATOR_MATCHES_IPS:
163+
return StringCondition.Operator.OPERATOR_MATCHES_IPS;
164+
case OPERATOR_NOT_MATCHES_IPS:
165+
return StringCondition.Operator.OPERATOR_NOT_MATCHES_IPS;
153166
default:
154167
throw new IllegalArgumentException("Unsupported String Condition Operator");
155168
}

Diff for: hypertrace-graphql-labels-schema-impl/src/main/java/org/hypertrace/graphql/label/dao/LabelApplicationRuleResponseConverter.java

+28-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,28 @@ private Optional<StringCondition> convertStringCondition(
216216
.StringCondition
217217
stringCondition) {
218218
Optional<StringCondition.Operator> operator = convertOperatorInStringCondition(stringCondition);
219-
return operator.map(op -> new ConvertedStringCondition(op, stringCondition.getValue()));
219+
switch (stringCondition.getKindCase()) {
220+
case VALUE:
221+
return operator.map(
222+
op ->
223+
new ConvertedStringCondition(
224+
op,
225+
stringCondition.getValue(),
226+
null,
227+
StringCondition.StringConditionValueType.VALUE));
228+
case VALUES:
229+
return operator.map(
230+
op ->
231+
new ConvertedStringCondition(
232+
op,
233+
null,
234+
stringCondition.getValues().getValuesList(),
235+
StringCondition.StringConditionValueType.VALUES));
236+
default:
237+
log.error(
238+
"Unrecognized String Condition Value Type {}", stringCondition.getKindCase().name());
239+
return Optional.empty();
240+
}
220241
}
221242

222243
private Optional<StringCondition.Operator> convertOperatorInStringCondition(
@@ -228,6 +249,10 @@ private Optional<StringCondition.Operator> convertOperatorInStringCondition(
228249
return Optional.of(StringCondition.Operator.OPERATOR_EQUALS);
229250
case OPERATOR_MATCHES_REGEX:
230251
return Optional.of(StringCondition.Operator.OPERATOR_MATCHES_REGEX);
252+
case OPERATOR_MATCHES_IPS:
253+
return Optional.of(StringCondition.Operator.OPERATOR_MATCHES_IPS);
254+
case OPERATOR_NOT_MATCHES_IPS:
255+
return Optional.of(StringCondition.Operator.OPERATOR_NOT_MATCHES_IPS);
231256
default:
232257
log.error(
233258
"Unrecognized Operator Type in String Condition {}",
@@ -316,6 +341,8 @@ private static class ConvertedUnaryCondition implements UnaryCondition {
316341
private static class ConvertedStringCondition implements StringCondition {
317342
Operator operator;
318343
String value;
344+
List<String> values;
345+
StringConditionValueType stringConditionValueType;
319346
}
320347

321348
@Value

Diff for: hypertrace-graphql-labels-schema-impl/src/main/java/org/hypertrace/graphql/label/deserialization/LabelApplicationRuleDataDeserializationConfig.java

-146
This file was deleted.

Diff for: hypertrace-graphql-labels-schema-impl/src/main/java/org/hypertrace/graphql/label/deserialization/LabelApplicationRuleDeserializationConfig.java

+6
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,12 @@ private static class StringConditionArgument implements StringCondition {
146146

147147
@JsonProperty(VALUE_KEY)
148148
String value;
149+
150+
@JsonProperty(VALUES_KEY)
151+
List<String> values;
152+
153+
@JsonProperty(STRING_CONDITION_VALUE_TYPE_KEY)
154+
StringConditionValueType stringConditionValueType;
149155
}
150156

151157
@Value

Diff for: hypertrace-graphql-labels-schema-impl/src/main/java/org/hypertrace/graphql/label/deserialization/LabelApplicationRuleDeserializationModule.java

-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ protected void configure() {
1010
Multibinder<ArgumentDeserializationConfig> deserializationConfigBinder =
1111
Multibinder.newSetBinder(binder(), ArgumentDeserializationConfig.class);
1212

13-
deserializationConfigBinder
14-
.addBinding()
15-
.to(LabelApplicationRuleDataDeserializationConfig.class);
1613
deserializationConfigBinder.addBinding().to(LabelApplicationRuleDeserializationConfig.class);
1714

1815
deserializationConfigBinder

Diff for: hypertrace-graphql-platform/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ dependencies {
1212
api("org.hypertrace.entity.service:entity-type-service-rx-client:0.5.6")
1313
api("org.hypertrace.config.service:spaces-config-service-api:0.1.1")
1414
api("org.hypertrace.config.service:labels-config-service-api:0.1.15")
15-
api("org.hypertrace.config.service:label-application-rule-config-service-api:0.1.16")
15+
api("org.hypertrace.config.service:label-application-rule-config-service-api:0.1.52")
1616
api("org.hypertrace.config.service:span-processing-config-service-api:0.1.41")
1717
}
1818
}

0 commit comments

Comments
 (0)