diff --git a/hypertrace-graphql-platform/build.gradle.kts b/hypertrace-graphql-platform/build.gradle.kts index 3d8c9fe0..5743b796 100644 --- a/hypertrace-graphql-platform/build.gradle.kts +++ b/hypertrace-graphql-platform/build.gradle.kts @@ -13,6 +13,6 @@ dependencies { api("org.hypertrace.config.service:spaces-config-service-api:0.1.1") api("org.hypertrace.config.service:labels-config-service-api:0.1.15") api("org.hypertrace.config.service:label-application-rule-config-service-api:0.1.16") - api("org.hypertrace.config.service:span-processing-config-service-api:0.1.23") + api("org.hypertrace.config.service:span-processing-config-service-api:0.1.25") } } diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRequestConverter.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRequestConverter.java index 556e7517..685f9210 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRequestConverter.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRequestConverter.java @@ -6,7 +6,6 @@ import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanUpdateRuleRequest; import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleCreate; import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleUpdate; -import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingRuleFilter; import org.hypertrace.span.processing.config.service.v1.CreateExcludeSpanRuleRequest; import org.hypertrace.span.processing.config.service.v1.DeleteExcludeSpanRuleRequest; import org.hypertrace.span.processing.config.service.v1.ExcludeSpanRuleInfo; @@ -32,6 +31,7 @@ private ExcludeSpanRuleInfo convertInput(ExcludeSpanRuleCreate excludeSpanRuleCr return ExcludeSpanRuleInfo.newBuilder() .setName(excludeSpanRuleCreate.name()) .setFilter(this.filterConverter.convert(excludeSpanRuleCreate.spanFilter())) + .setDisabled(excludeSpanRuleCreate.disabled()) .build(); } @@ -42,20 +42,12 @@ UpdateExcludeSpanRuleRequest convert(ExcludeSpanUpdateRuleRequest request) { } private UpdateExcludeSpanRule convertInput(ExcludeSpanRuleUpdate excludeSpanRuleUpdate) { - UpdateExcludeSpanRule.Builder updateExcludeSpanRuleBuilder = - UpdateExcludeSpanRule.newBuilder().setId(excludeSpanRuleUpdate.id()); - String name = excludeSpanRuleUpdate.name(); - SpanProcessingRuleFilter filter = excludeSpanRuleUpdate.spanFilter(); - if (name != null) { - updateExcludeSpanRuleBuilder = - updateExcludeSpanRuleBuilder.setName(excludeSpanRuleUpdate.name()); - } - if (filter != null) { - updateExcludeSpanRuleBuilder = - updateExcludeSpanRuleBuilder.setFilter( - this.filterConverter.convert(excludeSpanRuleUpdate.spanFilter())); - } - return updateExcludeSpanRuleBuilder.build(); + return UpdateExcludeSpanRule.newBuilder() + .setId(excludeSpanRuleUpdate.id()) + .setName(excludeSpanRuleUpdate.name()) + .setFilter(this.filterConverter.convert(excludeSpanRuleUpdate.spanFilter())) + .setDisabled(excludeSpanRuleUpdate.disabled()) + .build(); } DeleteExcludeSpanRuleRequest convert(ExcludeSpanDeleteRuleRequest request) { diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingResponseConverter.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingResponseConverter.java index c86f1d4f..7eb44fa8 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingResponseConverter.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingResponseConverter.java @@ -28,31 +28,31 @@ public class ConfigServiceSpanProcessingResponseConverter { } Single convert(GetAllExcludeSpanRulesResponse response) { - return this.convertResultSet(response.getRulesList()); + return this.convertResultSet(response.getRuleDetailsList()); } private Maybe convertOrDrop( - org.hypertrace.span.processing.config.service.v1.ExcludeSpanRule rule) { + org.hypertrace.span.processing.config.service.v1.ExcludeSpanRuleDetails ruleDetails) { return this.ruleConverter - .convert(rule) + .convert(ruleDetails) .doOnError(error -> log.error("Error converting ExcludeSpanRule", error)) .onErrorComplete(); } private Single convertResultSet( - List rules) { - return Observable.fromIterable(rules) + List ruleDetails) { + return Observable.fromIterable(ruleDetails) .concatMapMaybe(this::convertOrDrop) .toList() .map(ConvertedExcludeSpanRuleResultSet::new); } Single convert(CreateExcludeSpanRuleResponse response) { - return this.ruleConverter.convert(response.getRule()); + return this.ruleConverter.convert(response.getRuleDetails()); } Single convert(UpdateExcludeSpanRuleResponse response) { - return this.ruleConverter.convert(response.getRule()); + return this.ruleConverter.convert(response.getRuleDetails()); } Single convert(DeleteExcludeSpanRuleResponse response) { diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRuleConverter.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRuleConverter.java index 2ad85db8..fb076791 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRuleConverter.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/dao/ConfigServiceSpanProcessingRuleConverter.java @@ -1,6 +1,7 @@ package org.hypertrace.graphql.spanprocessing.dao; import io.reactivex.rxjava3.core.Single; +import java.time.Instant; import javax.inject.Inject; import lombok.Value; import lombok.experimental.Accessors; @@ -10,7 +11,7 @@ class ConfigServiceSpanProcessingRuleConverter implements Converter< - org.hypertrace.span.processing.config.service.v1.ExcludeSpanRule, ExcludeSpanRule> { + org.hypertrace.span.processing.config.service.v1.ExcludeSpanRuleDetails, ExcludeSpanRule> { private final ConfigServiceSpanFilterConverter filterConverter; @@ -21,13 +22,22 @@ class ConfigServiceSpanProcessingRuleConverter @Override public Single convert( - org.hypertrace.span.processing.config.service.v1.ExcludeSpanRule rule) { + org.hypertrace.span.processing.config.service.v1.ExcludeSpanRuleDetails ruleDetails) { return this.filterConverter - .convert(rule.getRuleInfo().getFilter()) + .convert(ruleDetails.getRule().getRuleInfo().getFilter()) .map( spanProcessingRuleFilter -> new ConvertedExcludeSpanRule( - rule.getId(), rule.getRuleInfo().getName(), spanProcessingRuleFilter)); + ruleDetails.getRule().getId(), + ruleDetails.getRule().getRuleInfo().getName(), + spanProcessingRuleFilter, + ruleDetails.getRule().getRuleInfo().getDisabled(), + Instant.ofEpochSecond( + ruleDetails.getMetadata().getCreationTimestamp().getSeconds(), + ruleDetails.getMetadata().getCreationTimestamp().getNanos()), + Instant.ofEpochSecond( + ruleDetails.getMetadata().getLastUpdatedTimestamp().getSeconds(), + ruleDetails.getMetadata().getLastUpdatedTimestamp().getNanos()))); } @Value @@ -36,5 +46,8 @@ private static class ConvertedExcludeSpanRule implements ExcludeSpanRule { String id; String name; SpanProcessingRuleFilter spanFilter; + boolean disabled; + Instant creationTime; + Instant lastUpdatedTime; } } diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanCreateInputDeserializationConfig.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanCreateInputDeserializationConfig.java index 45fecd86..58760d6c 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanCreateInputDeserializationConfig.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanCreateInputDeserializationConfig.java @@ -47,6 +47,7 @@ public List jacksonModules() { private static class DefaultExcludeSpanRuleCreate implements ExcludeSpanRuleCreate { String name; SpanProcessingRuleFilter spanFilter; + boolean disabled; } @Value diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanUpdateInputDeserializationConfig.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanUpdateInputDeserializationConfig.java index a93197ca..f1226d7c 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanUpdateInputDeserializationConfig.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/deserialization/ExcludeSpanUpdateInputDeserializationConfig.java @@ -48,6 +48,7 @@ private static class DefaultExcludeSpanRuleUpdate implements ExcludeSpanRuleUpda String id; String name; SpanProcessingRuleFilter spanFilter; + boolean disabled; } @Value diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanCreateRuleMutator.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanCreateRuleMutator.java index 8d749cbb..f3095049 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanCreateRuleMutator.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanCreateRuleMutator.java @@ -30,7 +30,6 @@ static final class SpanProcessingCreateRuleMutatorImpl @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return this.requestBuilder .build(environment.getContext(), environment.getArguments()) .flatMap(this.spanProcessingRuleDao::createRule) diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanUpdateRuleMutator.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanUpdateRuleMutator.java index 1022eeda..fcb5a226 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanUpdateRuleMutator.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/fetcher/mutation/ExcludeSpanUpdateRuleMutator.java @@ -30,7 +30,6 @@ static final class SpanProcessingUpdateRuleMutatorImpl @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return this.requestBuilder .build(environment.getContext(), environment.getArguments()) .flatMap(this.spanProcessingRuleDao::updateRule) diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/mutation/ExcludeSpanRuleUpdate.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/mutation/ExcludeSpanRuleUpdate.java index e4ad1299..2eeb61a2 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/mutation/ExcludeSpanRuleUpdate.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/mutation/ExcludeSpanRuleUpdate.java @@ -2,6 +2,7 @@ import graphql.annotations.annotationTypes.GraphQLField; import graphql.annotations.annotationTypes.GraphQLName; +import graphql.annotations.annotationTypes.GraphQLNonNull; import org.hypertrace.core.graphql.common.schema.id.Identifiable; import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingRuleFilter; @@ -12,6 +13,7 @@ public interface ExcludeSpanRuleUpdate extends Identifiable { String NAME_KEY = "name"; String SPAN_PROCESSING_FILTER_KEY = "spanFilter"; + String DISABLED_KEY = "disabled"; @GraphQLField @GraphQLName(NAME_KEY) @@ -20,4 +22,9 @@ public interface ExcludeSpanRuleUpdate extends Identifiable { @GraphQLField @GraphQLName(SPAN_PROCESSING_FILTER_KEY) SpanProcessingRuleFilter spanFilter(); + + @GraphQLField + @GraphQLName(DISABLED_KEY) + @GraphQLNonNull + boolean disabled(); } diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRule.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRule.java index 01dc080e..1f8943a5 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRule.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRule.java @@ -1,9 +1,25 @@ package org.hypertrace.graphql.spanprocessing.schema.rule; +import graphql.annotations.annotationTypes.GraphQLField; import graphql.annotations.annotationTypes.GraphQLName; +import graphql.annotations.annotationTypes.GraphQLNonNull; +import java.time.Instant; import org.hypertrace.core.graphql.common.schema.id.Identifiable; @GraphQLName(ExcludeSpanRule.TYPE_NAME) public interface ExcludeSpanRule extends Identifiable, ExcludeSpanRuleInfo { String TYPE_NAME = "ExcludeSpanRule"; + + String CREATION_TIME_KEY = "creationTime"; + String LAST_UPDATED_TIME_KEY = "lastUpdatedTime"; + + @GraphQLField + @GraphQLName(CREATION_TIME_KEY) + @GraphQLNonNull + Instant creationTime(); + + @GraphQLField + @GraphQLName(LAST_UPDATED_TIME_KEY) + @GraphQLNonNull + Instant lastUpdatedTime(); } diff --git a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRuleInfo.java b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRuleInfo.java index 5ee6c50b..092dc555 100644 --- a/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRuleInfo.java +++ b/hypertrace-graphql-span-processing-schema/src/main/java/org/hypertrace/graphql/spanprocessing/schema/rule/ExcludeSpanRuleInfo.java @@ -11,6 +11,7 @@ public interface ExcludeSpanRuleInfo { String NAME_KEY = "name"; String SPAN_FILTER_KEY = "spanFilter"; + String DISABLED_KEY = "disabled"; @GraphQLField @GraphQLName(NAME_KEY) @@ -21,4 +22,9 @@ public interface ExcludeSpanRuleInfo { @GraphQLName(SPAN_FILTER_KEY) @GraphQLNonNull SpanProcessingRuleFilter spanFilter(); + + @GraphQLField + @GraphQLName(DISABLED_KEY) + @GraphQLNonNull + boolean disabled(); }