mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-01 09:13:23 +08:00
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
# project
|
|
from ...ext import net
|
|
from ..redis.util import _extract_conn_tags as extract_redis_tags
|
|
from ..pylibmc.addrs import parse_addresses
|
|
|
|
|
|
def _resource_from_cache_prefix(resource, cache):
|
|
"""
|
|
Combine the resource name with the cache prefix (if any)
|
|
"""
|
|
if getattr(cache, 'key_prefix', None):
|
|
name = '{} {}'.format(resource, cache.key_prefix)
|
|
else:
|
|
name = resource
|
|
|
|
# enforce lowercase to make the output nicer to read
|
|
return name.lower()
|
|
|
|
|
|
def _extract_conn_tags(client):
|
|
"""
|
|
For the given client extracts connection tags
|
|
"""
|
|
tags = {}
|
|
|
|
if hasattr(client, 'servers'):
|
|
# Memcached backend supports an address pool
|
|
if isinstance(client.servers, list) and len(client.servers) > 0:
|
|
# use the first address of the pool as a host because
|
|
# the code doesn't expose more information
|
|
contact_point = client.servers[0].address
|
|
tags[net.TARGET_HOST] = contact_point[0]
|
|
tags[net.TARGET_PORT] = contact_point[1]
|
|
elif hasattr(client, 'connection_pool'):
|
|
# Redis main connection
|
|
redis_tags = extract_redis_tags(client.connection_pool.connection_kwargs)
|
|
tags.update(**redis_tags)
|
|
elif hasattr(client, 'addresses'):
|
|
# pylibmc
|
|
# FIXME[matt] should we memoize this?
|
|
addrs = parse_addresses(client.addresses)
|
|
if addrs:
|
|
_, host, port, _ = addrs[0]
|
|
tags[net.TARGET_PORT] = port
|
|
tags[net.TARGET_HOST] = host
|
|
return tags
|