Skip to content

Commit 83b0ebc

Browse files
authored
Add dedicated module for the Agent interface (#17667)
1 parent e78c94e commit 83b0ebc

File tree

15 files changed

+56
-91
lines changed

15 files changed

+56
-91
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add dedicated module for the Agent interface
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# (C) Datadog, Inc. 2024-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
try:
5+
import aggregator
6+
import datadog_agent
7+
8+
AGENT_RUNNING = True
9+
except ImportError:
10+
from .stubs import aggregator, datadog_agent
11+
12+
AGENT_RUNNING = False
13+
14+
15+
__all__ = ['AGENT_RUNNING', 'aggregator', 'datadog_agent']

datadog_checks_base/datadog_checks/base/checks/base.py

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import yaml
3131
from six import PY2, binary_type, iteritems, raise_from, text_type
3232

33+
from datadog_checks.base.agent import AGENT_RUNNING, aggregator, datadog_agent
34+
3335
from ..config import is_affirmative
3436
from ..constants import ServiceCheck
3537
from ..errors import ConfigurationError
@@ -53,32 +55,34 @@
5355
from ..utils.tls import TlsContextWrapper
5456
from ..utils.tracing import traced_class
5557

56-
try:
57-
import datadog_agent
58-
58+
if AGENT_RUNNING:
5959
from ..log import CheckLoggingAdapter, init_logging
6060

61-
init_logging()
62-
except ImportError:
63-
from ..stubs import datadog_agent
61+
else:
6462
from ..stubs.log import CheckLoggingAdapter, init_logging
6563

66-
init_logging()
64+
init_logging()
6765

68-
try:
69-
import aggregator
66+
if datadog_agent.get_config('disable_unsafe_yaml'):
67+
from ..ddyaml import monkey_patch_pyyaml
7068

71-
using_stub_aggregator = False
72-
except ImportError:
73-
from ..stubs import aggregator
69+
monkey_patch_pyyaml()
7470

75-
using_stub_aggregator = True
71+
if datadog_agent.get_config('integration_tracing'):
72+
from ddtrace import patch
7673

74+
# handle thread monitoring as an additional option
75+
# See: http://pypi.datadoghq.com/trace/docs/other_integrations.html#futures
76+
if datadog_agent.get_config('integration_tracing_futures'):
77+
patch(logging=True, requests=True, futures=True)
78+
else:
79+
patch(logging=True, requests=True)
7780

78-
if datadog_agent.get_config('disable_unsafe_yaml'):
79-
from ..ddyaml import monkey_patch_pyyaml
81+
if is_affirmative(datadog_agent.get_config('integration_profiling')):
82+
from ddtrace.profiling import Profiler
8083

81-
monkey_patch_pyyaml()
84+
prof = Profiler(service='datadog-agent-integrations')
85+
prof.start()
8286

8387
if not PY2:
8488
from pydantic import BaseModel, ValidationError
@@ -430,7 +434,7 @@ def metadata_manager(self):
430434
Used for sending metadata via Go bindings.
431435
"""
432436
if not hasattr(self, '_metadata_manager'):
433-
if not self.check_id and not using_stub_aggregator:
437+
if not self.check_id and AGENT_RUNNING:
434438
raise RuntimeError('Attribute `check_id` must be set')
435439

436440
self._metadata_manager = MetadataManager(self.name, self.check_id, self.log, self.METADATA_TRANSFORMERS)
@@ -608,7 +612,7 @@ def submit_histogram_bucket(
608612
err_msg = 'Histogram: {} has non integer value: {}. Only integer are valid bucket values (count).'.format(
609613
repr(name), repr(value)
610614
)
611-
if using_stub_aggregator:
615+
if not AGENT_RUNNING:
612616
raise ValueError(err_msg)
613617
self.warning(err_msg)
614618
return
@@ -706,7 +710,7 @@ def _submit_metric(
706710
err_msg = 'Metric: {} has non float value: {}. Only float values can be submitted as metrics.'.format(
707711
repr(name), repr(value)
708712
)
709-
if using_stub_aggregator:
713+
if not AGENT_RUNNING:
710714
raise ValueError(err_msg)
711715
self.warning(err_msg)
712716
return

datadog_checks_base/datadog_checks/base/checks/kube_leader/mixins.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4-
5-
try:
6-
import datadog_agent
7-
except ImportError:
8-
from ...stubs import datadog_agent
4+
from datadog_checks.base.agent import datadog_agent
95

106
from .. import AgentCheck
117
from .record import ElectionRecordAnnotation, ElectionRecordLease

datadog_checks_base/datadog_checks/base/checks/openmetrics/mixins.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,15 @@
1414
from prometheus_client.samples import Sample
1515
from six import PY3, iteritems, string_types
1616

17+
from datadog_checks.base.agent import datadog_agent
18+
1719
from ...config import is_affirmative
1820
from ...errors import CheckException
1921
from ...utils.common import to_native_string
2022
from ...utils.http import RequestsWrapper
2123
from .. import AgentCheck
2224
from ..libs.prometheus import text_fd_to_metric_families
2325

24-
try:
25-
import datadog_agent
26-
except ImportError:
27-
from datadog_checks.base.stubs import datadog_agent
28-
2926
if PY3:
3027
long = int
3128

datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from prometheus_client.parser import text_fd_to_metric_families as parse_prometheus
1414
from requests.exceptions import ConnectionError
1515

16+
from datadog_checks.base.agent import datadog_agent
17+
1618
from ....config import is_affirmative
1719
from ....constants import ServiceCheck
1820
from ....errors import ConfigurationError
@@ -22,11 +24,6 @@
2224
from .labels import LabelAggregator, get_label_normalizer
2325
from .transform import MetricTransformer
2426

25-
try:
26-
import datadog_agent
27-
except ImportError:
28-
from datadog_checks.base.stubs import datadog_agent
29-
3027

3128
class OpenMetricsScraper:
3229
"""

datadog_checks_base/datadog_checks/base/log.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@
99
from six import PY2, text_type
1010
from urllib3.exceptions import InsecureRequestWarning
1111

12+
from datadog_checks.base.agent import datadog_agent
13+
1214
from .utils.common import to_native_string
1315
from .utils.tracing import tracing_enabled
1416

15-
try:
16-
import datadog_agent
17-
except ImportError:
18-
from .stubs import datadog_agent
19-
2017
# Arbitrary number less than 10 (DEBUG)
2118
TRACE_LEVEL = 7
2219

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,3 @@
11
# (C) Datadog, Inc. 2018-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4-
import os
5-
6-
from ..config import is_affirmative
7-
8-
try:
9-
import datadog_agent
10-
11-
if datadog_agent.get_config('integration_tracing'):
12-
from ddtrace import patch
13-
14-
# handle thread monitoring as an additional option
15-
# See: http://pypi.datadoghq.com/trace/docs/other_integrations.html#futures
16-
if datadog_agent.get_config('integration_tracing_futures'):
17-
patch(logging=True, requests=True, futures=True)
18-
else:
19-
patch(logging=True, requests=True)
20-
21-
if is_affirmative(datadog_agent.get_config('integration_profiling')):
22-
from ddtrace.profiling import Profiler
23-
24-
prof = Profiler(service='datadog-agent-integrations')
25-
prof.start()
26-
27-
except ImportError:
28-
# Tracing & profiling Integrations is only available with Agent 6
29-
pass

datadog_checks_base/datadog_checks/base/utils/db/utils.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,14 @@
1818
from cachetools import TTLCache
1919

2020
from datadog_checks.base import is_affirmative
21+
from datadog_checks.base.agent import datadog_agent
2122
from datadog_checks.base.log import get_check_logger
2223
from datadog_checks.base.utils.db.types import Transformer # noqa: F401
2324
from datadog_checks.base.utils.serialization import json
2425
from datadog_checks.base.utils.tracing import INTEGRATION_TRACING_SERVICE_NAME, tracing_enabled
2526

2627
from ..common import to_native_string
2728

28-
try:
29-
import datadog_agent
30-
except ImportError:
31-
from ....stubs import datadog_agent
32-
3329
logger = logging.getLogger(__file__)
3430

3531
# AgentCheck methods to transformer name e.g. set_metadata -> metadata

datadog_checks_base/datadog_checks/base/utils/headers.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55

66
from six import iteritems
77

8-
try:
9-
import datadog_agent
10-
except ImportError:
11-
from ..stubs import datadog_agent
8+
from datadog_checks.base.agent import datadog_agent
129

1310

1411
def _get_common_headers():

datadog_checks_base/datadog_checks/base/utils/http.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
from six.moves.urllib.parse import quote, urlparse, urlunparse
2424
from wrapt import ObjectProxy
2525

26+
from datadog_checks.base.agent import datadog_agent
27+
2628
from ..config import is_affirmative
2729
from ..errors import ConfigurationError
2830
from .common import ensure_bytes, ensure_unicode
@@ -35,11 +37,6 @@
3537
except ImportError:
3638
from contextlib2 import ExitStack
3739

38-
try:
39-
import datadog_agent
40-
except ImportError:
41-
from ..stubs import datadog_agent
42-
4340
# Import lazily to reduce memory footprint and ease installation for development
4441
requests_aws = None
4542
requests_kerberos = None

datadog_checks_base/datadog_checks/base/utils/metadata/core.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,12 @@
55

66
from six import iteritems
77

8+
from datadog_checks.base.agent import datadog_agent
9+
810
from ..common import to_native_string
911
from .utils import is_primitive
1012
from .version import parse_version
1113

12-
try:
13-
import datadog_agent
14-
except ImportError:
15-
from ...stubs import datadog_agent
16-
1714
LOGGER = logging.getLogger(__file__)
1815

1916

datadog_checks_base/datadog_checks/base/utils/replay/redirect.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def log(self, level, *args, **kwargs):
6868
)
6969

7070

71-
base.using_stub_aggregator = False
71+
base.AGENT_RUNNING = True
7272
base.aggregator = ReplayAggregator()
7373
base.datadog_agent = core.datadog_agent = ReplayDatadogAgent()
7474

datadog_checks_base/datadog_checks/base/utils/tracing.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77

88
from six import PY2, PY3
99

10+
from datadog_checks.base.agent import datadog_agent
11+
1012
from ..config import is_affirmative
1113
from ..utils.common import to_native_string
1214

13-
try:
14-
import datadog_agent
15-
except ImportError:
16-
from ..stubs import datadog_agent
17-
1815
EXCLUDED_MODULES = ['threading']
1916

2017
# During regular continuous tracing we trace only the check's top-level 'run' and

datadog_checks_base/tests/test_metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_default(self):
2727
def test_no_check_id_error(self):
2828
check = AgentCheck('test', {}, [{}])
2929

30-
with mock.patch('datadog_checks.base.checks.base.using_stub_aggregator', False):
30+
with mock.patch('datadog_checks.base.checks.base.AGENT_RUNNING', True):
3131
with pytest.raises(RuntimeError):
3232
check.set_metadata('foo', 'bar')
3333

0 commit comments

Comments
 (0)