Skip to content

Commit

Permalink
Implement self wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
coignetp committed Jan 6, 2022
1 parent ad2990d commit cf4c168
Showing 1 changed file with 33 additions and 15 deletions.
48 changes: 33 additions & 15 deletions datadog_checks_base/datadog_checks/base/utils/tracing.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# All rights reserved
# Licensed under Simplified BSD License (see LICENSE)
import functools
import inspect
import os

from ..config import is_affirmative
Expand Down Expand Up @@ -55,21 +56,38 @@ def traced_wrapper(self, *args, **kwargs):


def tracing_method(f, tracer):
@functools.wraps(f)
def wrapper(*args, **kwargs):
service_name = None
if args and len(args) > 0 and hasattr(args[0], "name"):
service_name = "{}-integration".format(args[0].name)
elif f.__name__ == "__init__":
# copy the logic that the AgentCheck init method uses to determine the check name
name = kwargs.get('name', '')
if len(args) > 0:
name = args[0]
if name:
service_name = "{}-integration".format(name)

with tracer.trace(f.__name__, resource=f.__name__, service=service_name):
return f(*args, **kwargs)
signature = inspect.signature(f)
if signature.parameters.get('self'):
@functools.wraps(f)
def wrapper(self, *args, **kwargs):
service_name = None
if hasattr(self, "name"):
service_name = "{}-integration".format(self.name)
elif f.__name__ == "__init__":
# copy the logic that the AgentCheck init method uses to determine the check name
name = kwargs.get('name', '')
if len(args) > 0:
name = args[0]
if name:
service_name = "{}-integration".format(name)

with tracer.trace(f.__name__, resource=f.__name__, service=service_name):
return f(self, *args, **kwargs)

else:
@functools.wraps(f)
def wrapper(*args, **kwargs):
service_name = None
if f.__name__ == "__init__":
# copy the logic that the AgentCheck init method uses to determine the check name
name = kwargs.get('name', '')
if len(args) > 0:
name = args[0]
if name:
service_name = "{}-integration".format(name)

with tracer.trace(f.__name__, resource=f.__name__, service=service_name):
return f(*args, **kwargs)

return wrapper

Expand Down

0 comments on commit cf4c168

Please sign in to comment.