Skip to content

Commit

Permalink
add inclusion rule apis (#147)
Browse files Browse the repository at this point in the history
* add inclusio rule apis

* fix error message
  • Loading branch information
SrikarMannepalli authored Jun 21, 2022
1 parent e98681f commit ac42029
Show file tree
Hide file tree
Showing 32 changed files with 861 additions and 2 deletions.
2 changes: 1 addition & 1 deletion hypertrace-graphql-platform/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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.27")
api("org.hypertrace.config.service:span-processing-config-service-api:0.1.34")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,32 @@
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanCreateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanDeleteRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanUpdateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanCreateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanDeleteRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanUpdateRuleRequest;
import org.hypertrace.graphql.spanprocessing.schema.mutation.ApiNamingRuleCreate;
import org.hypertrace.graphql.spanprocessing.schema.mutation.ApiNamingRuleUpdate;
import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleCreate;
import org.hypertrace.graphql.spanprocessing.schema.mutation.ExcludeSpanRuleUpdate;
import org.hypertrace.graphql.spanprocessing.schema.mutation.IncludeSpanRuleCreate;
import org.hypertrace.graphql.spanprocessing.schema.mutation.IncludeSpanRuleUpdate;
import org.hypertrace.span.processing.config.service.v1.ApiNamingRuleConfig;
import org.hypertrace.span.processing.config.service.v1.ApiNamingRuleInfo;
import org.hypertrace.span.processing.config.service.v1.CreateApiNamingRuleRequest;
import org.hypertrace.span.processing.config.service.v1.CreateExcludeSpanRuleRequest;
import org.hypertrace.span.processing.config.service.v1.CreateIncludeSpanRuleRequest;
import org.hypertrace.span.processing.config.service.v1.DeleteApiNamingRuleRequest;
import org.hypertrace.span.processing.config.service.v1.DeleteExcludeSpanRuleRequest;
import org.hypertrace.span.processing.config.service.v1.DeleteIncludeSpanRuleRequest;
import org.hypertrace.span.processing.config.service.v1.ExcludeSpanRuleInfo;
import org.hypertrace.span.processing.config.service.v1.IncludeSpanRuleInfo;
import org.hypertrace.span.processing.config.service.v1.SegmentMatchingBasedConfig;
import org.hypertrace.span.processing.config.service.v1.UpdateApiNamingRule;
import org.hypertrace.span.processing.config.service.v1.UpdateApiNamingRuleRequest;
import org.hypertrace.span.processing.config.service.v1.UpdateExcludeSpanRule;
import org.hypertrace.span.processing.config.service.v1.UpdateExcludeSpanRuleRequest;
import org.hypertrace.span.processing.config.service.v1.UpdateIncludeSpanRule;
import org.hypertrace.span.processing.config.service.v1.UpdateIncludeSpanRuleRequest;

public class ConfigServiceSpanProcessingRequestConverter {

Expand Down Expand Up @@ -67,6 +77,39 @@ DeleteExcludeSpanRuleRequest convert(ExcludeSpanDeleteRuleRequest request) {
return DeleteExcludeSpanRuleRequest.newBuilder().setId(request.id()).build();
}

CreateIncludeSpanRuleRequest convert(IncludeSpanCreateRuleRequest request) {
return CreateIncludeSpanRuleRequest.newBuilder()
.setRuleInfo(convertInput(request.createInput()))
.build();
}

private IncludeSpanRuleInfo convertInput(IncludeSpanRuleCreate includeSpanRuleCreate) {
return IncludeSpanRuleInfo.newBuilder()
.setName(includeSpanRuleCreate.name())
.setFilter(this.filterConverter.convert(includeSpanRuleCreate.spanFilter()))
.setDisabled(includeSpanRuleCreate.disabled())
.build();
}

UpdateIncludeSpanRuleRequest convert(IncludeSpanUpdateRuleRequest request) {
return UpdateIncludeSpanRuleRequest.newBuilder()
.setRule(convertInput(request.updateInput()))
.build();
}

private UpdateIncludeSpanRule convertInput(IncludeSpanRuleUpdate includeSpanRuleUpdate) {
return UpdateIncludeSpanRule.newBuilder()
.setId(includeSpanRuleUpdate.id())
.setName(includeSpanRuleUpdate.name())
.setFilter(this.filterConverter.convert(includeSpanRuleUpdate.spanFilter()))
.setDisabled(includeSpanRuleUpdate.disabled())
.build();
}

DeleteIncludeSpanRuleRequest convert(IncludeSpanDeleteRuleRequest request) {
return DeleteIncludeSpanRuleRequest.newBuilder().setId(request.id()).build();
}

CreateApiNamingRuleRequest convert(ApiNamingCreateRuleRequest request) {
return CreateApiNamingRuleRequest.newBuilder()
.setRuleInfo(convertInput(request.createInput()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,22 @@
import org.hypertrace.graphql.spanprocessing.schema.mutation.DeleteSpanProcessingRuleResponse;
import org.hypertrace.graphql.spanprocessing.schema.query.ApiNamingRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.query.ExcludeSpanRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.query.IncludeSpanRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.IncludeSpanRule;
import org.hypertrace.span.processing.config.service.v1.CreateApiNamingRuleResponse;
import org.hypertrace.span.processing.config.service.v1.CreateExcludeSpanRuleResponse;
import org.hypertrace.span.processing.config.service.v1.CreateIncludeSpanRuleResponse;
import org.hypertrace.span.processing.config.service.v1.DeleteApiNamingRuleResponse;
import org.hypertrace.span.processing.config.service.v1.DeleteExcludeSpanRuleResponse;
import org.hypertrace.span.processing.config.service.v1.DeleteIncludeSpanRuleResponse;
import org.hypertrace.span.processing.config.service.v1.GetAllApiNamingRulesResponse;
import org.hypertrace.span.processing.config.service.v1.GetAllExcludeSpanRulesResponse;
import org.hypertrace.span.processing.config.service.v1.GetAllIncludeSpanRulesResponse;
import org.hypertrace.span.processing.config.service.v1.UpdateApiNamingRuleResponse;
import org.hypertrace.span.processing.config.service.v1.UpdateExcludeSpanRuleResponse;
import org.hypertrace.span.processing.config.service.v1.UpdateIncludeSpanRuleResponse;

@Slf4j
public class ConfigServiceSpanProcessingResponseConverter {
Expand All @@ -37,6 +43,10 @@ Single<ExcludeSpanRuleResultSet> convert(GetAllExcludeSpanRulesResponse response
return this.convertExcludeSpanRuleResultSet(response.getRuleDetailsList());
}

Single<IncludeSpanRuleResultSet> convert(GetAllIncludeSpanRulesResponse response) {
return this.convertIncludeSpanRuleResultSet(response.getRuleDetailsList());
}

Single<ApiNamingRuleResultSet> convert(GetAllApiNamingRulesResponse response) {
return this.convertApiNamingRuleResultSet(response.getRuleDetailsList());
}
Expand All @@ -49,11 +59,19 @@ private Maybe<ExcludeSpanRule> convertOrDrop(
.onErrorComplete();
}

private Maybe<IncludeSpanRule> convertOrDrop(
org.hypertrace.span.processing.config.service.v1.IncludeSpanRuleDetails ruleDetails) {
return this.ruleConverter
.convert(ruleDetails)
.doOnError(error -> log.error("Error converting IncludeSpanRule", error))
.onErrorComplete();
}

private Maybe<ApiNamingRule> convertOrDrop(
org.hypertrace.span.processing.config.service.v1.ApiNamingRuleDetails ruleDetails) {
return this.ruleConverter
.convert(ruleDetails)
.doOnError(error -> log.error("Error converting ExcludeSpanRule", error))
.doOnError(error -> log.error("Error converting ApiNamingRule", error))
.onErrorComplete();
}

Expand All @@ -65,6 +83,14 @@ private Single<ExcludeSpanRuleResultSet> convertExcludeSpanRuleResultSet(
.map(ConvertedExcludeSpanRuleResultSet::new);
}

private Single<IncludeSpanRuleResultSet> convertIncludeSpanRuleResultSet(
List<org.hypertrace.span.processing.config.service.v1.IncludeSpanRuleDetails> ruleDetails) {
return Observable.fromIterable(ruleDetails)
.concatMapMaybe(this::convertOrDrop)
.toList()
.map(ConvertedIncludeSpanRuleResultSet::new);
}

private Single<ApiNamingRuleResultSet> convertApiNamingRuleResultSet(
List<org.hypertrace.span.processing.config.service.v1.ApiNamingRuleDetails> ruleDetails) {
return Observable.fromIterable(ruleDetails)
Expand All @@ -85,6 +111,18 @@ Single<DeleteSpanProcessingRuleResponse> convert(DeleteExcludeSpanRuleResponse r
return Single.just(new DefaultDeleteSpanProcessingRuleResponse(true));
}

Single<IncludeSpanRule> convert(CreateIncludeSpanRuleResponse response) {
return this.ruleConverter.convert(response.getRuleDetails());
}

Single<IncludeSpanRule> convert(UpdateIncludeSpanRuleResponse response) {
return this.ruleConverter.convert(response.getRuleDetails());
}

Single<DeleteSpanProcessingRuleResponse> convert(DeleteIncludeSpanRuleResponse response) {
return Single.just(new DefaultDeleteSpanProcessingRuleResponse(true));
}

Single<ApiNamingRule> convert(CreateApiNamingRuleResponse response) {
return this.ruleConverter.convert(response.getRuleDetails());
}
Expand Down Expand Up @@ -118,6 +156,20 @@ private ConvertedExcludeSpanRuleResultSet(List<ExcludeSpanRule> results) {
}
}

@Value
@Accessors(fluent = true)
private static class ConvertedIncludeSpanRuleResultSet implements IncludeSpanRuleResultSet {
List<IncludeSpanRule> results;
long total;
long count;

private ConvertedIncludeSpanRuleResultSet(List<IncludeSpanRule> results) {
this.results = results;
this.count = results.size();
this.total = results.size();
}
}

@Value
@Accessors(fluent = true)
private static class ConvertedApiNamingRuleResultSet implements ApiNamingRuleResultSet {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import java.util.List;
import java.util.NoSuchElementException;
import javax.inject.Inject;
import lombok.Builder;
import lombok.Value;
import lombok.experimental.Accessors;
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRuleConfig;
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRuleConfigType;
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.IncludeSpanRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.SegmentMatchingBasedRuleConfig;
import org.hypertrace.graphql.spanprocessing.schema.rule.filter.SpanProcessingRuleFilter;
import org.hypertrace.span.processing.config.service.v1.ApiNamingRuleDetails;
Expand Down Expand Up @@ -44,6 +46,28 @@ public Single<ExcludeSpanRule> convert(
ruleDetails.getMetadata().getLastUpdatedTimestamp().getNanos())));
}

public Single<IncludeSpanRule> convert(
org.hypertrace.span.processing.config.service.v1.IncludeSpanRuleDetails ruleDetails) {
return this.filterConverter
.convert(ruleDetails.getRule().getRuleInfo().getFilter())
.map(
spanProcessingRuleFilter ->
ConvertedIncludeSpanRule.builder()
.id(ruleDetails.getRule().getId())
.name(ruleDetails.getRule().getRuleInfo().getName())
.spanFilter(spanProcessingRuleFilter)
.disabled(ruleDetails.getRule().getRuleInfo().getDisabled())
.creationTime(
Instant.ofEpochSecond(
ruleDetails.getMetadata().getCreationTimestamp().getSeconds(),
ruleDetails.getMetadata().getCreationTimestamp().getNanos()))
.lastUpdatedTime(
Instant.ofEpochSecond(
ruleDetails.getMetadata().getLastUpdatedTimestamp().getSeconds(),
ruleDetails.getMetadata().getLastUpdatedTimestamp().getNanos()))
.build());
}

public Single<ApiNamingRule> convert(ApiNamingRuleDetails ruleDetails) {
return this.filterConverter
.convert(ruleDetails.getRule().getRuleInfo().getFilter())
Expand Down Expand Up @@ -90,6 +114,18 @@ private static class ConvertedExcludeSpanRule implements ExcludeSpanRule {
Instant lastUpdatedTime;
}

@Value
@Builder
@Accessors(fluent = true)
private static class ConvertedIncludeSpanRule implements IncludeSpanRule {
String id;
String name;
SpanProcessingRuleFilter spanFilter;
boolean disabled;
Instant creationTime;
Instant lastUpdatedTime;
}

@Value
@Accessors(fluent = true)
private static class ConvertedApiNamingRule implements ApiNamingRule {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,19 @@
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanCreateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanDeleteRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanUpdateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanCreateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanDeleteRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanUpdateRuleRequest;
import org.hypertrace.graphql.spanprocessing.schema.mutation.DeleteSpanProcessingRuleResponse;
import org.hypertrace.graphql.spanprocessing.schema.query.ApiNamingRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.query.ExcludeSpanRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.query.IncludeSpanRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.IncludeSpanRule;
import org.hypertrace.span.processing.config.service.v1.GetAllApiNamingRulesRequest;
import org.hypertrace.span.processing.config.service.v1.GetAllExcludeSpanRulesRequest;
import org.hypertrace.span.processing.config.service.v1.GetAllIncludeSpanRulesRequest;
import org.hypertrace.span.processing.config.service.v1.SpanProcessingConfigServiceGrpc;

public class ConfigServiceSpanProcessingRuleDao implements SpanProcessingRuleDao {
Expand Down Expand Up @@ -109,6 +115,64 @@ public Single<DeleteSpanProcessingRuleResponse> deleteExcludeSpanRule(
.flatMap(this.responseConverter::convert);
}

@Override
public Single<IncludeSpanRuleResultSet> getIncludeSpanRules(ContextualRequest request) {
return Single.fromFuture(
this.grpcContextBuilder
.build(request.context())
.call(
() ->
this.configStub
.withDeadlineAfter(
serviceConfig.getConfigServiceTimeout().toMillis(), MILLISECONDS)
.getAllIncludeSpanRules(
GetAllIncludeSpanRulesRequest.getDefaultInstance())))
.flatMap(this.responseConverter::convert);
}

@Override
public Single<IncludeSpanRule> createIncludeSpanRule(IncludeSpanCreateRuleRequest request) {
return Single.fromFuture(
this.grpcContextBuilder
.build(request.context())
.call(
() ->
this.configStub
.withDeadlineAfter(
serviceConfig.getConfigServiceTimeout().toMillis(), MILLISECONDS)
.createIncludeSpanRule(this.requestConverter.convert(request))))
.flatMap(this.responseConverter::convert);
}

@Override
public Single<IncludeSpanRule> updateIncludeSpanRule(IncludeSpanUpdateRuleRequest request) {
return Single.fromFuture(
this.grpcContextBuilder
.build(request.context())
.call(
() ->
this.configStub
.withDeadlineAfter(
serviceConfig.getConfigServiceTimeout().toMillis(), MILLISECONDS)
.updateIncludeSpanRule(this.requestConverter.convert(request))))
.flatMap(this.responseConverter::convert);
}

@Override
public Single<DeleteSpanProcessingRuleResponse> deleteIncludeSpanRule(
IncludeSpanDeleteRuleRequest request) {
return Single.fromFuture(
this.grpcContextBuilder
.build(request.context())
.call(
() ->
this.configStub
.withDeadlineAfter(
serviceConfig.getConfigServiceTimeout().toMillis(), MILLISECONDS)
.deleteIncludeSpanRule(this.requestConverter.convert(request))))
.flatMap(this.responseConverter::convert);
}

@Override
public Single<ApiNamingRuleResultSet> getApiNamingRules(ContextualRequest request) {
return Single.fromFuture(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanCreateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanDeleteRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.ExcludeSpanUpdateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanCreateRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanDeleteRuleRequest;
import org.hypertrace.graphql.spanprocessing.request.mutation.IncludeSpanUpdateRuleRequest;
import org.hypertrace.graphql.spanprocessing.schema.mutation.DeleteSpanProcessingRuleResponse;
import org.hypertrace.graphql.spanprocessing.schema.query.ApiNamingRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.query.ExcludeSpanRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.query.IncludeSpanRuleResultSet;
import org.hypertrace.graphql.spanprocessing.schema.rule.ApiNamingRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.ExcludeSpanRule;
import org.hypertrace.graphql.spanprocessing.schema.rule.IncludeSpanRule;

public interface SpanProcessingRuleDao {
Single<ExcludeSpanRuleResultSet> getExcludeSpanRules(ContextualRequest request);
Expand All @@ -24,6 +29,15 @@ public interface SpanProcessingRuleDao {
Single<DeleteSpanProcessingRuleResponse> deleteExcludeSpanRule(
ExcludeSpanDeleteRuleRequest request);

Single<IncludeSpanRuleResultSet> getIncludeSpanRules(ContextualRequest request);

Single<IncludeSpanRule> createIncludeSpanRule(IncludeSpanCreateRuleRequest request);

Single<IncludeSpanRule> updateIncludeSpanRule(IncludeSpanUpdateRuleRequest request);

Single<DeleteSpanProcessingRuleResponse> deleteIncludeSpanRule(
IncludeSpanDeleteRuleRequest request);

Single<ApiNamingRuleResultSet> getApiNamingRules(ContextualRequest request);

Single<ApiNamingRule> createApiNamingRule(ApiNamingCreateRuleRequest request);
Expand Down
Loading

0 comments on commit ac42029

Please sign in to comment.