Skip to content

Commit 3b9a335

Browse files
chore: minor changes to dynamic label part of label application rule (#234)
1 parent 3697588 commit 3b9a335

File tree

7 files changed

+58
-54
lines changed

7 files changed

+58
-54
lines changed

hypertrace-graphql-labels-schema-api/src/main/java/org/hypertrace/graphql/label/schema/rule/Action.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.hypertrace.graphql.label.schema.rule;
22

3+
import graphql.annotations.annotationTypes.GraphQLDescription;
34
import graphql.annotations.annotationTypes.GraphQLField;
45
import graphql.annotations.annotationTypes.GraphQLName;
56
import graphql.annotations.annotationTypes.GraphQLNonNull;
@@ -14,7 +15,7 @@ public interface Action {
1415
String OPERATION_KEY = "operation";
1516
String STATIC_LABELS = "staticLabels";
1617
String DYNAMIC_LABEL_KEY_KEY = "dynamicLabelKey";
17-
String DYNAMIC_LABEL_EXPRESSION_KEY = "dynamicLabelExpression";
18+
String DYNAMIC_LABEL_KEY = "dynamicLabel";
1819
String ACTION_TYPE_KEY = "type";
1920

2021
@GraphQLName(Operation.TYPE_NAME)
@@ -27,7 +28,7 @@ enum Operation {
2728
enum ActionType {
2829
STATIC_LABELS,
2930
DYNAMIC_LABEL_KEY,
30-
DYNAMIC_LABEL_EXPRESSION;
31+
DYNAMIC_LABEL;
3132
private static final String TYPE_NAME = "LabelApplicationActionType";
3233
}
3334

@@ -52,9 +53,10 @@ enum ActionType {
5253
String dynamicLabelKey();
5354

5455
@GraphQLField
56+
@GraphQLDescription("Definition to generate dynamic labels")
5557
@Nullable
56-
@GraphQLName(DYNAMIC_LABEL_EXPRESSION_KEY)
57-
DynamicLabelExpression dynamicLabelExpression();
58+
@GraphQLName(DYNAMIC_LABEL_KEY)
59+
DynamicLabel dynamicLabel();
5860

5961
@GraphQLField
6062
@GraphQLNonNull
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.hypertrace.graphql.label.schema.rule;
2+
3+
import graphql.annotations.annotationTypes.GraphQLDescription;
4+
import graphql.annotations.annotationTypes.GraphQLField;
5+
import graphql.annotations.annotationTypes.GraphQLName;
6+
import graphql.annotations.annotationTypes.GraphQLNonNull;
7+
import java.util.List;
8+
9+
@GraphQLName(DynamicLabel.TYPE_NAME)
10+
public interface DynamicLabel {
11+
String TYPE_NAME = "DynamicLabel";
12+
13+
String EXPRESSION_KEY = "expression";
14+
String TOKEN_EXTRACTION_RULES_KEY = "tokenExtractionRules";
15+
16+
@GraphQLField
17+
@GraphQLDescription(
18+
"Expression definition to generate dynamic labels. Ex: \"${token1}_${token2}\"")
19+
@GraphQLName(EXPRESSION_KEY)
20+
@GraphQLNonNull
21+
String expression();
22+
23+
@GraphQLField
24+
@GraphQLDescription(
25+
"Rules to extract token from attribute values. These values will replace tokens in the expression.")
26+
@GraphQLNonNull
27+
@GraphQLName(TOKEN_EXTRACTION_RULES_KEY)
28+
List<TokenExtractionRule> tokenExtractionRules();
29+
}

hypertrace-graphql-labels-schema-api/src/main/java/org/hypertrace/graphql/label/schema/rule/DynamicLabelExpression.java

-24
This file was deleted.

hypertrace-graphql-labels-schema-api/src/main/java/org/hypertrace/graphql/label/schema/rule/TokenExtractionRule.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.hypertrace.graphql.label.schema.rule;
22

3+
import graphql.annotations.annotationTypes.GraphQLDescription;
34
import graphql.annotations.annotationTypes.GraphQLField;
45
import graphql.annotations.annotationTypes.GraphQLName;
56
import graphql.annotations.annotationTypes.GraphQLNonNull;
@@ -14,16 +15,20 @@ public interface TokenExtractionRule {
1415
String REGEX_CAPTURE_KEY = "regexCapture";
1516

1617
@GraphQLField
18+
@GraphQLDescription("The attribute key to be used to get value")
1719
@GraphQLName(KEY_NAME)
1820
@GraphQLNonNull
1921
String key();
2022

2123
@GraphQLField
24+
@GraphQLDescription("Optionally define and use alias for the attribute key in the expression")
2225
@GraphQLName(ALIAS_KEY)
2326
@Nullable
2427
String alias();
2528

2629
@GraphQLField
30+
@GraphQLDescription(
31+
"Optionally define regex capture rule to extract token value from the attribute value. It should have only one capture group. Ex: \"(.*)\\..*\"")
2732
@GraphQLName(REGEX_CAPTURE_KEY)
2833
@Nullable
2934
String regexCapture();

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

+3-4
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,13 @@ private Action convertLabelAction(org.hypertrace.graphql.label.schema.rule.Actio
8383
.build();
8484
case DYNAMIC_LABEL_KEY:
8585
return actionBuilder.setDynamicLabelKey(action.dynamicLabelKey()).build();
86-
case DYNAMIC_LABEL_EXPRESSION:
86+
case DYNAMIC_LABEL:
8787
return actionBuilder
8888
.setDynamicLabelExpression(
8989
Action.DynamicLabel.newBuilder()
90-
.setLabelExpression(action.dynamicLabelExpression().labelExpression())
90+
.setLabelExpression(action.dynamicLabel().expression())
9191
.addAllTokenExtractionRules(
92-
convertTokenExtractionRules(
93-
action.dynamicLabelExpression().tokenExtractionRules())))
92+
convertTokenExtractionRules(action.dynamicLabel().tokenExtractionRules())))
9493
.build();
9594
default:
9695
throw new IllegalArgumentException("Unsupported action value");

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

+8-14
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import lombok.extern.slf4j.Slf4j;
1313
import org.hypertrace.graphql.label.schema.rule.Action;
1414
import org.hypertrace.graphql.label.schema.rule.Condition;
15-
import org.hypertrace.graphql.label.schema.rule.DynamicLabelExpression;
15+
import org.hypertrace.graphql.label.schema.rule.DynamicLabel;
1616
import org.hypertrace.graphql.label.schema.rule.LabelApplicationRule;
1717
import org.hypertrace.graphql.label.schema.rule.LabelApplicationRuleData;
1818
import org.hypertrace.graphql.label.schema.rule.LabelApplicationRuleResultSet;
@@ -119,17 +119,11 @@ private Optional<Action> convertAction(
119119
null,
120120
Action.ActionType.DYNAMIC_LABEL_KEY));
121121
case DYNAMIC_LABEL_EXPRESSION:
122-
DynamicLabelExpression dynamicLabelExpression =
123-
convertDynamicLabelExpression(action.getDynamicLabelExpression());
122+
DynamicLabel dynamicLabel = convertDynamicLabel(action.getDynamicLabelExpression());
124123
return operation.map(
125124
op ->
126125
new ConvertedAction(
127-
entityTypes,
128-
op,
129-
null,
130-
null,
131-
dynamicLabelExpression,
132-
Action.ActionType.DYNAMIC_LABEL_EXPRESSION));
126+
entityTypes, op, null, null, dynamicLabel, Action.ActionType.DYNAMIC_LABEL));
133127
default:
134128
log.error("Unrecognized Value type in Action {}", action.getValueCase().name());
135129
return Optional.empty();
@@ -143,11 +137,11 @@ private StaticLabels convertStaticLabels(
143137
return new ConvertedStaticLabels(staticLabels.getIdsList());
144138
}
145139

146-
private DynamicLabelExpression convertDynamicLabelExpression(
140+
private DynamicLabel convertDynamicLabel(
147141
org.hypertrace.label.application.rule.config.service.v1.LabelApplicationRuleData.Action
148142
.DynamicLabel
149143
dynamicLabel) {
150-
return new ConvertedDynamicLabelExpression(
144+
return new ConvertedDynamicLabel(
151145
dynamicLabel.getLabelExpression(),
152146
convertTokenExtractionRules(dynamicLabel.getTokenExtractionRulesList()));
153147
}
@@ -339,7 +333,7 @@ private static class ConvertedAction implements Action {
339333
Operation operation;
340334
StaticLabels staticLabels;
341335
String dynamicLabelKey;
342-
DynamicLabelExpression dynamicLabelExpression;
336+
DynamicLabel dynamicLabel;
343337
ActionType type;
344338
}
345339

@@ -351,8 +345,8 @@ private static class ConvertedStaticLabels implements StaticLabels {
351345

352346
@Value
353347
@Accessors(fluent = true)
354-
private static class ConvertedDynamicLabelExpression implements DynamicLabelExpression {
355-
String labelExpression;
348+
private static class ConvertedDynamicLabel implements DynamicLabel {
349+
String expression;
356350
List<TokenExtractionRule> tokenExtractionRules;
357351
}
358352

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

+7-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.hypertrace.core.graphql.deserialization.ArgumentDeserializationConfig;
1111
import org.hypertrace.graphql.label.schema.rule.Action;
1212
import org.hypertrace.graphql.label.schema.rule.Condition;
13-
import org.hypertrace.graphql.label.schema.rule.DynamicLabelExpression;
13+
import org.hypertrace.graphql.label.schema.rule.DynamicLabel;
1414
import org.hypertrace.graphql.label.schema.rule.LabelApplicationRule;
1515
import org.hypertrace.graphql.label.schema.rule.LabelApplicationRuleData;
1616
import org.hypertrace.graphql.label.schema.rule.LeafCondition;
@@ -40,8 +40,7 @@ public List<Module> jacksonModules() {
4040
LabelApplicationRuleData.class, LabelApplicationRuleDataArgument.class)
4141
.addAbstractTypeMapping(Action.class, ActionArgument.class)
4242
.addAbstractTypeMapping(StaticLabels.class, StaticLabelsArgument.class)
43-
.addAbstractTypeMapping(
44-
DynamicLabelExpression.class, DynamicLabelExpressionArgument.class)
43+
.addAbstractTypeMapping(DynamicLabel.class, DynamicLabelArgument.class)
4544
.addAbstractTypeMapping(TokenExtractionRule.class, TokenExtractionRuleArgument.class)
4645
.addAbstractTypeMapping(Condition.class, ConditionArgument.class)
4746
.addAbstractTypeMapping(LeafCondition.class, LeafConditionArgument.class)
@@ -97,8 +96,8 @@ private static class ActionArgument implements Action {
9796
@JsonProperty(DYNAMIC_LABEL_KEY_KEY)
9897
String dynamicLabelKey;
9998

100-
@JsonProperty(DYNAMIC_LABEL_EXPRESSION_KEY)
101-
DynamicLabelExpression dynamicLabelExpression;
99+
@JsonProperty(DYNAMIC_LABEL_KEY)
100+
DynamicLabel dynamicLabel;
102101

103102
@JsonProperty(ACTION_TYPE_KEY)
104103
ActionType type;
@@ -115,9 +114,9 @@ private static class StaticLabelsArgument implements StaticLabels {
115114
@Value
116115
@Accessors(fluent = true)
117116
@NoArgsConstructor(force = true)
118-
private static class DynamicLabelExpressionArgument implements DynamicLabelExpression {
119-
@JsonProperty(LABEL_EXPRESSION_KEY)
120-
String labelExpression;
117+
private static class DynamicLabelArgument implements DynamicLabel {
118+
@JsonProperty(EXPRESSION_KEY)
119+
String expression;
121120

122121
@JsonProperty(TOKEN_EXTRACTION_RULES_KEY)
123122
List<TokenExtractionRule> tokenExtractionRules;

0 commit comments

Comments
 (0)