Skip to content

Commit edf3fb1

Browse files
committed
feat: added single method option to configuration.yaml
Signed-off-by: Cagri Yonca <cagri@ibm.com>
1 parent d81568f commit edf3fb1

4 files changed

Lines changed: 27 additions & 6 deletions

File tree

src/instana/util/config.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,26 @@ def parse_endpoints_of_service(
8282
"""
8383
if service == "kafka" and isinstance(methods, list):
8484
for rule in methods:
85-
for method, endpoint in itertools.product(
86-
rule["methods"], rule["endpoints"]
87-
):
88-
ignore_endpoints.append(
89-
f"{service.lower()}.{method.lower()}.{endpoint.lower()}"
90-
)
85+
ignore_endpoints.extend(parse_kafka_methods(rule))
9186
else:
9287
for method in methods:
9388
ignore_endpoints.append(f"{service.lower()}.{method.lower()}")
9489
return ignore_endpoints
9590

9691

92+
def parse_kafka_methods(rule: Union[str, Dict[str, any]]) -> List[str]:
93+
parsed_rule = []
94+
if isinstance(rule, dict):
95+
for method, endpoint in itertools.product(rule["methods"], rule["endpoints"]):
96+
parsed_rule.append(f"kafka.{method.lower()}.{endpoint.lower()}")
97+
elif isinstance(rule, list):
98+
for method in rule:
99+
parsed_rule.append(f"kafka.{method.lower()}.*")
100+
else:
101+
parsed_rule.append(f"kafka.{rule.lower()}.*")
102+
return parsed_rule
103+
104+
97105
def parse_ignored_endpoints(params: Union[Dict[str, Any], str]) -> List[str]:
98106
"""
99107
Parses input to prepare a list for ignored endpoints.

tests/util/test_config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
parse_endpoints_of_service,
55
parse_ignored_endpoints,
66
parse_ignored_endpoints_dict,
7+
parse_kafka_methods,
78
parse_service_pair,
89
)
910

@@ -157,3 +158,13 @@ def test_parse_endpoints_of_service(self) -> None:
157158
"kafka.method6.endpoint1",
158159
"kafka.method6.endpoint2",
159160
]
161+
162+
def test_parse_kafka_methods_as_dict(self) -> None:
163+
test_rule_as_dict = {"methods": ["send"], "endpoints": ["topic1"]}
164+
parsed_rule = parse_kafka_methods(test_rule_as_dict)
165+
assert parsed_rule == ["kafka.send.topic1"]
166+
167+
def test_parse_kafka_methods_as_str(self) -> None:
168+
test_rule_as_str = ["send"]
169+
parsed_rule = parse_kafka_methods(test_rule_as_str)
170+
assert parsed_rule == ["kafka.send.*"]

tests/util/test_config_reader.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def test_load_configuration_legacy(self, caplog: pytest.LogCaptureFixture) -> No
4747
"redis.get",
4848
"redis.type",
4949
"dynamodb.query",
50+
"kafka.send.*",
5051
"kafka.consume.span-topic",
5152
"kafka.consume.topic1",
5253
"kafka.consume.topic2",

tests/util/test_configuration-2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ com.instana.tracing:
99
dynamodb:
1010
- query
1111
kafka:
12+
- send
1213
- methods: ["consume", "send"]
1314
endpoints: ["span-topic", "topic1", "topic2"]
1415
- methods: ["consume"]

0 commit comments

Comments
 (0)