Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ddtrace/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ class Context(object):

This data structure is thread-safe.
"""
_partial_flush_enabled = asbool(get_env('tracer', 'partial_flush_enabled', 'false'))
_partial_flush_min_spans = int(get_env('tracer', 'partial_flush_min_spans', 500))
_partial_flush_enabled = asbool(get_env('tracer', 'partial_flush_enabled', default=False))
_partial_flush_min_spans = int(get_env('tracer', 'partial_flush_min_spans', default=500))

def __init__(self, trace_id=None, span_id=None, sampling_priority=None, _dd_origin=None):
"""
Expand Down
4 changes: 2 additions & 2 deletions ddtrace/contrib/celery/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@

# Celery default settings
config._add('celery', {
'producer_service_name': get_env('celery', 'producer_service_name', PRODUCER_SERVICE),
'worker_service_name': get_env('celery', 'worker_service_name', WORKER_SERVICE),
'producer_service_name': get_env('celery', 'producer_service_name', default=PRODUCER_SERVICE),
'worker_service_name': get_env('celery', 'worker_service_name', default=WORKER_SERVICE),
})


Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/dbapi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
log = get_logger(__name__)

config._add('dbapi2', dict(
trace_fetch_methods=asbool(get_env('dbapi2', 'trace_fetch_methods', 'false')),
trace_fetch_methods=asbool(get_env('dbapi2', 'trace_fetch_methods', default=False)),
))


Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/falcon/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def patch():
def traced_init(wrapped, instance, args, kwargs):
mw = kwargs.pop('middleware', [])
service = os.environ.get('DATADOG_SERVICE_NAME') or 'falcon'
distributed_tracing = asbool(get_env('falcon', 'distributed_tracing', True))
distributed_tracing = asbool(get_env('falcon', 'distributed_tracing', default=True))

mw.insert(0, TraceMiddleware(tracer, service, distributed_tracing))
kwargs['middleware'] = mw
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/jinja2/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

# default settings
config._add('jinja2', {
'service_name': get_env('jinja2', 'service_name', None),
'service_name': get_env('jinja2', 'service_name'),
})


Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/kombu/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

# kombu default settings
config._add('kombu', {
'service_name': get_env('kombu', 'service_name', DEFAULT_SERVICE)
'service_name': get_env('kombu', 'service_name', default=DEFAULT_SERVICE)
})

propagator = HTTPPropagator()
Expand Down
4 changes: 2 additions & 2 deletions ddtrace/contrib/molten/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@

# Configure default configuration
config._add('molten', dict(
service_name=get_env('molten', 'service_name', 'molten'),
service_name=get_env('molten', 'service_name', default='molten'),
app='molten',
distributed_tracing=asbool(get_env('molten', 'distributed_tracing', True)),
distributed_tracing=asbool(get_env('molten', 'distributed_tracing', default=True)),
))


Expand Down
2 changes: 1 addition & 1 deletion ddtrace/contrib/pylons/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def traced_init(wrapped, instance, args, kwargs):

# set tracing options and create the TraceMiddleware
service = os.environ.get('DATADOG_SERVICE_NAME', 'pylons')
distributed_tracing = asbool(get_env('pylons', 'distributed_tracing', True))
distributed_tracing = asbool(get_env('pylons', 'distributed_tracing', default=True))
Pin(service=service, tracer=tracer).onto(instance)
traced_app = PylonsTraceMiddleware(instance, tracer, service=service, distributed_tracing=distributed_tracing)

Expand Down
4 changes: 2 additions & 2 deletions ddtrace/contrib/pyramid/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ def patch():
def traced_init(wrapped, instance, args, kwargs):
settings = kwargs.pop('settings', {})
service = os.environ.get('DATADOG_SERVICE_NAME') or 'pyramid'
distributed_tracing = asbool(get_env('pyramid', 'distributed_tracing', True))
distributed_tracing = asbool(get_env('pyramid', 'distributed_tracing', default=True))
# DEV: integration-specific analytics flag can be not set but still enabled
# globally for web frameworks
analytics_enabled = get_env('pyramid', 'analytics_enabled')
if analytics_enabled is not None:
analytics_enabled = asbool(analytics_enabled)
analytics_sample_rate = get_env('pyramid', 'analytics_sample_rate', True)
analytics_sample_rate = get_env('pyramid', 'analytics_sample_rate', default=True)
trace_settings = {
SETTINGS_SERVICE: service,
SETTINGS_DISTRIBUTED_TRACING: distributed_tracing,
Expand Down
6 changes: 3 additions & 3 deletions ddtrace/contrib/requests/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

# requests default settings
config._add('requests', {
'service_name': get_env('requests', 'service_name', DEFAULT_SERVICE),
'distributed_tracing': asbool(get_env('requests', 'distributed_tracing', True)),
'split_by_domain': asbool(get_env('requests', 'split_by_domain', False)),
'service_name': get_env('requests', 'service_name', default=DEFAULT_SERVICE),
'distributed_tracing': asbool(get_env('requests', 'distributed_tracing', default=True)),
'split_by_domain': asbool(get_env('requests', 'split_by_domain', default=False)),
})


Expand Down
2 changes: 1 addition & 1 deletion ddtrace/settings/integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def __init__(self, global_config, name, *args, **kwargs):
if analytics_enabled_env is not None:
analytics_enabled_env = asbool(analytics_enabled_env)
self.setdefault('analytics_enabled', analytics_enabled_env)
self.setdefault('analytics_sample_rate', float(get_env(name, 'analytics_sample_rate', 1.0)))
self.setdefault('analytics_sample_rate', float(get_env(name, 'analytics_sample_rate', default=1.0)))

def __deepcopy__(self, memodict=None):
new = IntegrationConfig(self.global_config, deepcopy(dict(self)))
Expand Down
5 changes: 3 additions & 2 deletions ddtrace/tracer.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,9 @@ class Tracer(object):

DEFAULT_HOSTNAME = environ.get('DD_AGENT_HOST', environ.get('DATADOG_TRACE_AGENT_HOSTNAME', 'localhost'))
DEFAULT_PORT = int(environ.get('DD_TRACE_AGENT_PORT', 8126))
DEFAULT_DOGSTATSD_PORT = int(get_env('dogstatsd', 'port', 8125))
DEFAULT_DOGSTATSD_URL = get_env('dogstatsd', 'url', 'udp://{}:{}'.format(DEFAULT_HOSTNAME, DEFAULT_DOGSTATSD_PORT))
DEFAULT_DOGSTATSD_PORT = int(get_env('dogstatsd', 'port', default=8125))
DEFAULT_DOGSTATSD_URL = get_env('dogstatsd', 'url',
default='udp://{}:{}'.format(DEFAULT_HOSTNAME, DEFAULT_DOGSTATSD_PORT))
DEFAULT_AGENT_URL = environ.get('DD_TRACE_AGENT_URL', 'http://%s:%d' % (DEFAULT_HOSTNAME, DEFAULT_PORT))

def __init__(self, url=DEFAULT_AGENT_URL, dogstatsd_url=DEFAULT_DOGSTATSD_URL):
Expand Down
13 changes: 11 additions & 2 deletions ddtrace/utils/formats.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from .deprecation import deprecation


def get_env(integration, variable, default=None):
def get_env(*parts, **kwargs):
"""Retrieves environment variables value for the given integration. It must be used
for consistency between integrations. The implementation is backward compatible
with legacy nomenclature:
Expand All @@ -14,8 +14,17 @@ def get_env(integration, variable, default=None):
arguments
* return `default` otherwise

:param parts: evironment variable parts that will be joined with ``_`` to generate the name
:type parts: :obj:`str`
:param kwargs: ``default`` is the only supported keyword argument which sets the default value
if no environment variable is found
:rtype: :obj:`str` | ``kwargs["default"]``
:returns: The string environment variable value or the value of ``kwargs["default"]`` if not found
"""
key = "{}_{}".format(integration, variable).upper()
default = kwargs.get("default")

key = "_".join(parts)
key = key.upper()
legacy_env = "DATADOG_{}".format(key)
env = "DD_{}".format(key)

Expand Down
7 changes: 6 additions & 1 deletion tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@ def test_get_env(self):
# are not set
value = get_env('django', 'distributed_tracing')
self.assertIsNone(value)
value = get_env('django', 'distributed_tracing', False)
value = get_env('django', 'distributed_tracing', default=False)
self.assertFalse(value)

def test_get_env_long(self):
os.environ['DD_SOME_VERY_LONG_TEST_KEY'] = '1'
value = get_env('some', 'very', 'long', 'test', 'key', default='2')
assert value == '1'

def test_get_env_found(self):
# ensure `get_env` returns a value if the environment variable is set
os.environ['DD_REQUESTS_DISTRIBUTED_TRACING'] = '1'
Expand Down