opentelemetry-python-contrib/reference/ddtrace/contrib/kombu/utils.py

48 lines
1.1 KiB
Python

"""
Some utils used by the dogtrace kombu integration
"""
from ...ext import kombu as kombux, net
PUBLISH_BODY_IDX = 0
PUBLISH_ROUTING_KEY = 6
PUBLISH_EXCHANGE_IDX = 9
HEADER_POS = 4
def extract_conn_tags(connection):
""" Transform kombu conn info into dogtrace metas """
try:
host, port = connection.host.split(':')
return {
net.TARGET_HOST: host,
net.TARGET_PORT: port,
kombux.VHOST: connection.virtual_host,
}
except AttributeError:
# Unlikely that we don't have .host or .virtual_host but let's not die over it
return {}
def get_exchange_from_args(args):
"""Extract the exchange
The publish method extracts the name and hands that off to _publish (what we patch)
"""
return args[PUBLISH_EXCHANGE_IDX]
def get_routing_key_from_args(args):
"""Extract the routing key"""
name = args[PUBLISH_ROUTING_KEY]
return name
def get_body_length_from_args(args):
"""Extract the length of the body"""
length = len(args[PUBLISH_BODY_IDX])
return length