Skip to content

Commit 0830119

Browse files
chore: update exclude span rule schema (#154)
* chore: update exclude span rule schema * address review comments
1 parent d30509b commit 0830119

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

hypertrace-graphql-platform/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ dependencies {
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")
1515
api("org.hypertrace.config.service:label-application-rule-config-service-api:0.1.16")
16-
api("org.hypertrace.config.service:span-processing-config-service-api:0.1.38")
16+
api("org.hypertrace.config.service:span-processing-config-service-api:0.1.41")
1717
}
1818
}

hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRequestConverter.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
import org.hypertrace.graphql.spanprocessing.schema.mutation.ApiNamingRuleUpdate;
1313
import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleCreate;
1414
import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleUpdate;
15+
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRuleRuleType;
1516
import org.hypertrace.span.processing.config.service.v1.ApiNamingRuleConfig;
1617
import org.hypertrace.span.processing.config.service.v1.ApiNamingRuleInfo;
1718
import org.hypertrace.span.processing.config.service.v1.CreateApiNamingRuleRequest;
1819
import org.hypertrace.span.processing.config.service.v1.CreateExcludeSpanRuleRequest;
1920
import org.hypertrace.span.processing.config.service.v1.DeleteApiNamingRuleRequest;
2021
import org.hypertrace.span.processing.config.service.v1.DeleteExcludeSpanRuleRequest;
2122
import org.hypertrace.span.processing.config.service.v1.ExcludeSpanRuleInfo;
23+
import org.hypertrace.span.processing.config.service.v1.RuleType;
2224
import org.hypertrace.span.processing.config.service.v1.SegmentMatchingBasedConfig;
2325
import org.hypertrace.span.processing.config.service.v1.UpdateApiNamingRule;
2426
import org.hypertrace.span.processing.config.service.v1.UpdateApiNamingRuleRequest;
@@ -45,6 +47,7 @@ private ExcludeSpanRuleInfo convertInput(ExcludeSpanRuleCreate excludeSpanRuleCr
4547
.setName(excludeSpanRuleCreate.name())
4648
.setFilter(this.filterConverter.convert(excludeSpanRuleCreate.spanFilter()))
4749
.setDisabled(excludeSpanRuleCreate.disabled())
50+
.setType(convertExcludeSpanRuleRuleType(excludeSpanRuleCreate.ruleType()))
4851
.build();
4952
}
5053

@@ -119,4 +122,19 @@ private UpdateApiNamingRule convertInput(ApiNamingRuleUpdate apiNamingRuleUpdate
119122
DeleteApiNamingRuleRequest convert(ApiNamingDeleteRuleRequest request) {
120123
return DeleteApiNamingRuleRequest.newBuilder().setId(request.id()).build();
121124
}
125+
126+
RuleType convertExcludeSpanRuleRuleType(ExcludeSpanRuleRuleType ruleType) {
127+
// TODO: remove this check after making this field non-nullable
128+
if (ruleType == null) {
129+
return RuleType.RULE_TYPE_USER;
130+
}
131+
switch (ruleType) {
132+
case SYSTEM:
133+
return RuleType.RULE_TYPE_SYSTEM;
134+
case USER:
135+
return RuleType.RULE_TYPE_USER;
136+
default:
137+
throw new NoSuchElementException("Unsupported exclude span rule rule type: " + ruleType);
138+
}
139+
}
122140
}

hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRuleConverter.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRuleConfig;
1212
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRuleConfigType;
1313
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRule;
14+
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRuleRuleType;
1415
import org.hypertrace.graphql.spanprocessing.schema.rule.SegmentMatchingBasedRuleConfig;
1516
import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingRuleFilter;
1617
import org.hypertrace.span.processing.config.service.v1.ApiNamingRuleDetails;
18+
import org.hypertrace.span.processing.config.service.v1.RuleType;
1719
import org.hypertrace.span.processing.config.service.v1.SegmentMatchingBasedConfig;
1820

1921
class ConfigServiceSpanProcessingRuleConverter {
@@ -36,6 +38,7 @@ public Single<ExcludeSpanRule> convert(
3638
ruleDetails.getRule().getRuleInfo().getName(),
3739
spanProcessingRuleFilter,
3840
ruleDetails.getRule().getRuleInfo().getDisabled(),
41+
convertExcludeSpanRuleRuleType(ruleDetails.getRule().getRuleInfo().getType()),
3942
Instant.ofEpochSecond(
4043
ruleDetails.getMetadata().getCreationTimestamp().getSeconds(),
4144
ruleDetails.getMetadata().getCreationTimestamp().getNanos()),
@@ -79,13 +82,27 @@ private ApiNamingRuleConfig convertApiNamingRuleConfig(
7982
}
8083
}
8184

85+
private ExcludeSpanRuleRuleType convertExcludeSpanRuleRuleType(RuleType ruleType) {
86+
switch (ruleType) {
87+
case RULE_TYPE_UNSPECIFIED: // required to cater for the older user configs(as they didn't
88+
// have a rule type field)
89+
case RULE_TYPE_USER:
90+
return ExcludeSpanRuleRuleType.USER;
91+
case RULE_TYPE_SYSTEM:
92+
return ExcludeSpanRuleRuleType.SYSTEM;
93+
default:
94+
throw new NoSuchElementException("Unsupported Exclude span rule rule type: " + ruleType);
95+
}
96+
}
97+
8298
@Value
8399
@Accessors(fluent = true)
84100
private static class ConvertedExcludeSpanRule implements ExcludeSpanRule {
85101
String id;
86102
String name;
87103
SpanProcessingRuleFilter spanFilter;
88104
boolean disabled;
105+
ExcludeSpanRuleRuleType ruleType;
89106
Instant creationTime;
90107
Instant lastUpdatedTime;
91108
}

hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanCreateInputDeserializationConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import lombok.extern.jackson.Jacksonized;
1010
import org.hypertrace.core.graphql.deserialization.ArgumentDeserializationConfig;
1111
import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleCreate;
12+
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRuleRuleType;
1213
import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingLogicalFilter;
1314
import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingRelationalFilter;
1415
import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingRuleFilter;
@@ -45,5 +46,6 @@ private static class DefaultExcludeSpanRuleCreate implements ExcludeSpanRuleCrea
4546
String name;
4647
SpanProcessingRuleFilter spanFilter;
4748
boolean disabled;
49+
ExcludeSpanRuleRuleType ruleType;
4850
}
4951
}

hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRuleInfo.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public interface ExcludeSpanRuleInfo {
1212
String NAME_KEY = "name";
1313
String SPAN_FILTER_KEY = "spanFilter";
1414
String DISABLED_KEY = "disabled";
15+
String RULE_TYPE_KEY = "ruleType";
1516

1617
@GraphQLField
1718
@GraphQLName(NAME_KEY)
@@ -27,4 +28,9 @@ public interface ExcludeSpanRuleInfo {
2728
@GraphQLName(DISABLED_KEY)
2829
@GraphQLNonNull
2930
boolean disabled();
31+
32+
@GraphQLField
33+
@GraphQLName(RULE_TYPE_KEY)
34+
// TODO: make this field non-nullable
35+
ExcludeSpanRuleRuleType ruleType();
3036
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.hypertrace.graphql.spanprocessing.schema.rule;
2+
3+
import graphql.annotations.annotationTypes.GraphQLName;
4+
5+
@GraphQLName(ExcludeSpanRuleRuleType.TYPE_NAME)
6+
public enum ExcludeSpanRuleRuleType {
7+
SYSTEM,
8+
USER,
9+
;
10+
static final String TYPE_NAME = "ExcludeSpanRuleRuleType";
11+
}

0 commit comments

Comments
 (0)