datadog-checks-base 37.8.0__py2.py3-none-any.whl → 37.9.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datadog_checks/base/__about__.py +1 -1
- datadog_checks/base/checks/base.py +25 -16
- datadog_checks/base/stubs/aggregator.py +2 -0
- datadog_checks/base/stubs/datadog_agent.py +1 -1
- {datadog_checks_base-37.8.0.dist-info → datadog_checks_base-37.9.0.dist-info}/METADATA +1 -1
- {datadog_checks_base-37.8.0.dist-info → datadog_checks_base-37.9.0.dist-info}/RECORD +7 -8
- datadog_checks/base/ddyaml.py +0 -171
- {datadog_checks_base-37.8.0.dist-info → datadog_checks_base-37.9.0.dist-info}/WHEEL +0 -0
datadog_checks/base/__about__.py
CHANGED
|
@@ -57,11 +57,6 @@ else:
|
|
|
57
57
|
|
|
58
58
|
init_logging()
|
|
59
59
|
|
|
60
|
-
if datadog_agent.get_config('disable_unsafe_yaml'):
|
|
61
|
-
from ..ddyaml import monkey_patch_pyyaml
|
|
62
|
-
|
|
63
|
-
monkey_patch_pyyaml()
|
|
64
|
-
|
|
65
60
|
if datadog_agent.get_config('integration_tracing'):
|
|
66
61
|
from ddtrace import patch
|
|
67
62
|
|
|
@@ -386,17 +381,6 @@ class AgentCheck(object):
|
|
|
386
381
|
|
|
387
382
|
return limit
|
|
388
383
|
|
|
389
|
-
@staticmethod
|
|
390
|
-
def load_config(yaml_str):
|
|
391
|
-
# type: (str) -> Any
|
|
392
|
-
"""
|
|
393
|
-
Convenience wrapper to ease programmatic use of this class from the C API.
|
|
394
|
-
"""
|
|
395
|
-
# See Performance Optimizations in this package's README.md.
|
|
396
|
-
import yaml
|
|
397
|
-
|
|
398
|
-
return yaml.safe_load(yaml_str)
|
|
399
|
-
|
|
400
384
|
@property
|
|
401
385
|
def http(self) -> RequestsWrapper:
|
|
402
386
|
"""
|
|
@@ -1485,3 +1469,28 @@ class AgentCheck(object):
|
|
|
1485
1469
|
|
|
1486
1470
|
for m in metrics:
|
|
1487
1471
|
self.gauge(m.name, m.value, tags=tags, raw=True)
|
|
1472
|
+
|
|
1473
|
+
@staticmethod
|
|
1474
|
+
def load_config(yaml_str: str) -> Any:
|
|
1475
|
+
"""
|
|
1476
|
+
Convenience wrapper to ease programmatic use of this class from the C API.
|
|
1477
|
+
"""
|
|
1478
|
+
import subprocess
|
|
1479
|
+
import sys
|
|
1480
|
+
|
|
1481
|
+
process = subprocess.Popen(
|
|
1482
|
+
[sys.executable, '-c', 'import sys, yaml; print(yaml.safe_load(sys.stdin.read()))'],
|
|
1483
|
+
stdin=subprocess.PIPE,
|
|
1484
|
+
stdout=subprocess.PIPE,
|
|
1485
|
+
stderr=subprocess.PIPE,
|
|
1486
|
+
)
|
|
1487
|
+
stdout, stderr = process.communicate(yaml_str.encode())
|
|
1488
|
+
if process.returncode != 0:
|
|
1489
|
+
raise ValueError(f'Failed to load config: {stderr.decode()}')
|
|
1490
|
+
|
|
1491
|
+
decoded = stdout.strip().decode()
|
|
1492
|
+
try:
|
|
1493
|
+
return eval(decoded)
|
|
1494
|
+
# a single, literal unquoted string
|
|
1495
|
+
except Exception:
|
|
1496
|
+
return decoded
|
|
@@ -341,6 +341,8 @@ class AggregatorStub(object):
|
|
|
341
341
|
if expected_tags and expected_tags != sorted(metric.tags):
|
|
342
342
|
continue
|
|
343
343
|
|
|
344
|
+
# to assert hostname is None, pass in hostname as '':
|
|
345
|
+
# https://github.com/DataDog/integrations-core/blob/7.65.x/datadog_checks_base/datadog_checks/base/checks/base.py#L760
|
|
344
346
|
if hostname is not None and hostname != metric.hostname:
|
|
345
347
|
continue
|
|
346
348
|
|
|
@@ -29,7 +29,7 @@ class DatadogAgentStub(object):
|
|
|
29
29
|
self._sent_telemetry = defaultdict(list)
|
|
30
30
|
|
|
31
31
|
def get_default_config(self):
|
|
32
|
-
return {'enable_metadata_collection': True
|
|
32
|
+
return {'enable_metadata_collection': True}
|
|
33
33
|
|
|
34
34
|
def reset(self):
|
|
35
35
|
self._sent_logs.clear()
|
|
@@ -3,19 +3,18 @@ datadog_checks/config.py,sha256=PrAXGdlLnoV2VMQff_noSaSJJ0wg4BAiGnw7jCQLSik,196
|
|
|
3
3
|
datadog_checks/errors.py,sha256=eFwmnrX-batIgbu-iJyseqAPNO_4rk1UuaKK89evLhg,155
|
|
4
4
|
datadog_checks/log.py,sha256=orvOgMKGNEsqSTLalCAQpWP-ouorpG1A7Gn-j2mRD80,301
|
|
5
5
|
datadog_checks/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
6
|
-
datadog_checks/base/__about__.py,sha256=
|
|
6
|
+
datadog_checks/base/__about__.py,sha256=iGqq-S-VDNzq-lXJgI6gEsOyXzbc8iNlsKUM6mQR6Do,138
|
|
7
7
|
datadog_checks/base/__init__.py,sha256=yWegSLE-TZWIGSvAiJj9PSrUxzlOo_UVJLt2zORZ8Ek,363
|
|
8
8
|
datadog_checks/base/__init__.pyi,sha256=eH8XhrtvnD6uE6FWfEyCmKwOaaLJxNolS08D6IRHZuU,995
|
|
9
9
|
datadog_checks/base/agent.py,sha256=nX9x_BYYizRKGNYfXq5z7S0FZ9xcX_wd2tuxpGe3_8k,350
|
|
10
10
|
datadog_checks/base/config.py,sha256=qcAA4X9sXQZRdwQe8DgiGd2980VBp1SQA0d695tX_tU,604
|
|
11
11
|
datadog_checks/base/constants.py,sha256=cR19tAqVysMFbdBWqIGZoHIKk1kGTyqRsCn9FfFQOnw,197
|
|
12
|
-
datadog_checks/base/ddyaml.py,sha256=ZYhEQ9RUA3PvyX4Z7PLVlRVLlY658CSEckI7n0vRZJg,4898
|
|
13
12
|
datadog_checks/base/errors.py,sha256=fPcFaR3zHpSkMo8epvF3lRe9KrEnS8g4J0dXM_nvzsw,1896
|
|
14
13
|
datadog_checks/base/log.py,sha256=gSfzYimmg0z3Dgmn8NpXuyMNjgXwmTbn0NcyUX8B1ls,6283
|
|
15
14
|
datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,1623
|
|
16
15
|
datadog_checks/base/checks/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
|
|
17
16
|
datadog_checks/base/checks/__init__.pyi,sha256=LASfm-daLNQIYe6-w0NPqBw4cl83nYIX5_B-VhV6ARo,262
|
|
18
|
-
datadog_checks/base/checks/base.py,sha256=
|
|
17
|
+
datadog_checks/base/checks/base.py,sha256=zvGdvk45y7Ye3hYTCroulla4sTm78W0xPkYmN0w-nQk,59940
|
|
19
18
|
datadog_checks/base/checks/network.py,sha256=UijP1OVBCpCNKMy6bVkNazHgy6Sdm8qCvCYGPaWuTDo,1968
|
|
20
19
|
datadog_checks/base/checks/kube_leader/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
|
|
21
20
|
datadog_checks/base/checks/kube_leader/__init__.pyi,sha256=UGDywoRwmCIz3Zii1uHsp7jiFGWRdn5fFMZZxgGGlQs,398
|
|
@@ -95,9 +94,9 @@ datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.p
|
|
|
95
94
|
datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py,sha256=hWM8CHYSqFnFYrNdr1NFY464nMAVFOiN8jhlhZTOb78,513
|
|
96
95
|
datadog_checks/base/stubs/__init__.py,sha256=wpWAR9v7BiTbbmTO6pVpshqa_z-PWaYTr33wSTZLz3c,272
|
|
97
96
|
datadog_checks/base/stubs/_util.py,sha256=ZDGtQa8F3cHf8-QvSVHMB4BGI3C9VgC7sGcGGvO0apI,1268
|
|
98
|
-
datadog_checks/base/stubs/aggregator.py,sha256=
|
|
97
|
+
datadog_checks/base/stubs/aggregator.py,sha256=iPEnNAsFeQ1_i6RwyjWKKGUGj2aoRccWJ9UEw28lsiU,24645
|
|
99
98
|
datadog_checks/base/stubs/common.py,sha256=ZGzF2dXy1uVFQGdG_bvz_pMMiULaBcpzra_k9wo9f04,1088
|
|
100
|
-
datadog_checks/base/stubs/datadog_agent.py,sha256=
|
|
99
|
+
datadog_checks/base/stubs/datadog_agent.py,sha256=zhKqluf_0WPIAm_GxJyz6A9JFw9Aoe1OsrjIAcEWdrg,5942
|
|
101
100
|
datadog_checks/base/stubs/log.py,sha256=A-eWnzY5gTpTW41Zch-W5CVclzldlmhMTW-vDNFdT1o,836
|
|
102
101
|
datadog_checks/base/stubs/similar.py,sha256=3HO9htx9LV6pRaE1ZGKsPExavTbjPHPK6ZMM2BPYj3Y,8045
|
|
103
102
|
datadog_checks/base/stubs/tagging.py,sha256=zxLdPC4EqHxGiS_HEhbaOsL_s5nZIhN8BDkx2BATOqs,1439
|
|
@@ -218,6 +217,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
|
|
|
218
217
|
datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
|
|
219
218
|
datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
|
|
220
219
|
datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
|
|
221
|
-
datadog_checks_base-37.
|
|
222
|
-
datadog_checks_base-37.
|
|
223
|
-
datadog_checks_base-37.
|
|
220
|
+
datadog_checks_base-37.9.0.dist-info/METADATA,sha256=9XzjIX_1_haGzFBTjX5ZUNFvw36z_f2g2HaTvOErW5I,4198
|
|
221
|
+
datadog_checks_base-37.9.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
222
|
+
datadog_checks_base-37.9.0.dist-info/RECORD,,
|
datadog_checks/base/ddyaml.py
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# (C) Datadog, Inc. 2011-present
|
|
2
|
-
# All rights reserved
|
|
3
|
-
# Licensed under Simplified BSD License (see LICENSE)
|
|
4
|
-
import logging
|
|
5
|
-
from os.path import realpath
|
|
6
|
-
|
|
7
|
-
import yaml
|
|
8
|
-
|
|
9
|
-
try:
|
|
10
|
-
from yaml import CSafeDumper as yDumper
|
|
11
|
-
from yaml import CSafeLoader as yLoader
|
|
12
|
-
except ImportError:
|
|
13
|
-
# On source install C Extensions might have not been built
|
|
14
|
-
from yaml import SafeDumper as yDumper # noqa, imported from here elsewhere
|
|
15
|
-
from yaml import SafeLoader as yLoader # noqa, imported from here elsewhere
|
|
16
|
-
|
|
17
|
-
log = logging.getLogger(__name__)
|
|
18
|
-
|
|
19
|
-
pyyaml_load = None
|
|
20
|
-
pyyaml_load_all = None
|
|
21
|
-
pyyaml_dump_all = None
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def safe_yaml_dump_all(
|
|
25
|
-
documents,
|
|
26
|
-
stream=None,
|
|
27
|
-
Dumper=yDumper,
|
|
28
|
-
default_style=None,
|
|
29
|
-
default_flow_style=None,
|
|
30
|
-
canonical=None,
|
|
31
|
-
indent=None,
|
|
32
|
-
width=None,
|
|
33
|
-
allow_unicode=None,
|
|
34
|
-
line_break=None,
|
|
35
|
-
encoding='utf-8',
|
|
36
|
-
explicit_start=None,
|
|
37
|
-
explicit_end=None,
|
|
38
|
-
version=None,
|
|
39
|
-
tags=None,
|
|
40
|
-
):
|
|
41
|
-
if Dumper != yDumper:
|
|
42
|
-
stream_name = get_stream_name(stream)
|
|
43
|
-
log.debug("Unsafe dumping of YAML has been disabled - using safe dumper instead in %s", stream_name)
|
|
44
|
-
|
|
45
|
-
if pyyaml_dump_all:
|
|
46
|
-
return pyyaml_dump_all(
|
|
47
|
-
documents,
|
|
48
|
-
stream,
|
|
49
|
-
yDumper,
|
|
50
|
-
default_style,
|
|
51
|
-
default_flow_style,
|
|
52
|
-
canonical,
|
|
53
|
-
indent,
|
|
54
|
-
width,
|
|
55
|
-
allow_unicode,
|
|
56
|
-
line_break,
|
|
57
|
-
encoding,
|
|
58
|
-
explicit_start,
|
|
59
|
-
explicit_end,
|
|
60
|
-
version,
|
|
61
|
-
tags,
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
return yaml.dump_all(
|
|
65
|
-
documents,
|
|
66
|
-
stream,
|
|
67
|
-
yDumper,
|
|
68
|
-
default_style,
|
|
69
|
-
default_flow_style,
|
|
70
|
-
canonical,
|
|
71
|
-
indent,
|
|
72
|
-
width,
|
|
73
|
-
allow_unicode,
|
|
74
|
-
line_break,
|
|
75
|
-
encoding,
|
|
76
|
-
explicit_start,
|
|
77
|
-
explicit_end,
|
|
78
|
-
version,
|
|
79
|
-
tags,
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def safe_yaml_load(stream, Loader=yLoader):
|
|
84
|
-
if Loader != yLoader:
|
|
85
|
-
stream_name = get_stream_name(stream)
|
|
86
|
-
log.debug("Unsafe loading of YAML has been disabled - using safe loader instead in %s", stream_name)
|
|
87
|
-
|
|
88
|
-
if pyyaml_load:
|
|
89
|
-
return pyyaml_load(stream, Loader=yLoader)
|
|
90
|
-
|
|
91
|
-
return yaml.load(stream, Loader=yLoader)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
def safe_yaml_load_all(stream, Loader=yLoader):
|
|
95
|
-
if Loader != yLoader:
|
|
96
|
-
stream_name = get_stream_name(stream)
|
|
97
|
-
log.debug("Unsafe loading of YAML has been disabled - using safe loader instead in %s", stream_name)
|
|
98
|
-
|
|
99
|
-
if pyyaml_load_all:
|
|
100
|
-
return pyyaml_load_all(stream, Loader=yLoader)
|
|
101
|
-
|
|
102
|
-
return yaml.load_all(stream, Loader=yLoader)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def get_stream_name(stream):
|
|
106
|
-
"""Using the same logic as pyyaml to handle both string types and file types. All file objects do not necessarily
|
|
107
|
-
have a `name` attribute, in that case we can only say the stream is a file."""
|
|
108
|
-
if isinstance(stream, str):
|
|
109
|
-
return "<string>"
|
|
110
|
-
elif hasattr(stream, 'name'):
|
|
111
|
-
return realpath(stream.name)
|
|
112
|
-
else:
|
|
113
|
-
return "<file>"
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
def yaml_load_force_loader(stream, Loader):
|
|
117
|
-
"""Override the default monkey patch for this call"""
|
|
118
|
-
log.debug(
|
|
119
|
-
"`%s` YAML loader is used instead of the default one, please make sure it is safe to do so", Loader.__name__
|
|
120
|
-
)
|
|
121
|
-
if pyyaml_load is None:
|
|
122
|
-
return yaml.load(stream, Loader)
|
|
123
|
-
return pyyaml_load(stream, Loader)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
def yaml_load_all_force_loader(stream, Loader):
|
|
127
|
-
"""Override the default monkey patch for this call"""
|
|
128
|
-
log.debug(
|
|
129
|
-
"`%s` YAML loader is used instead of the default one, please make sure it is safe to do so", Loader.__name__
|
|
130
|
-
)
|
|
131
|
-
if pyyaml_load_all is None:
|
|
132
|
-
return yaml.load_all(stream, Loader)
|
|
133
|
-
return pyyaml_load_all(stream, Loader)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
def monkey_patch_pyyaml():
|
|
137
|
-
global pyyaml_load
|
|
138
|
-
global pyyaml_load_all
|
|
139
|
-
global pyyaml_dump_all
|
|
140
|
-
|
|
141
|
-
if not pyyaml_load:
|
|
142
|
-
log.info("monkey patching yaml.load...")
|
|
143
|
-
pyyaml_load = yaml.load
|
|
144
|
-
yaml.load = safe_yaml_load
|
|
145
|
-
if not pyyaml_load_all:
|
|
146
|
-
log.info("monkey patching yaml.load_all...")
|
|
147
|
-
pyyaml_load_all = yaml.load_all
|
|
148
|
-
yaml.load_all = safe_yaml_load_all
|
|
149
|
-
if not pyyaml_dump_all:
|
|
150
|
-
log.info("monkey patching yaml.dump_all... (affects all yaml dump operations)")
|
|
151
|
-
pyyaml_dump_all = yaml.dump_all
|
|
152
|
-
yaml.dump_all = safe_yaml_dump_all
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
def monkey_patch_pyyaml_reverse():
|
|
156
|
-
global pyyaml_load
|
|
157
|
-
global pyyaml_load_all
|
|
158
|
-
global pyyaml_dump_all
|
|
159
|
-
|
|
160
|
-
if pyyaml_load:
|
|
161
|
-
log.info("reversing monkey patch for yaml.load...")
|
|
162
|
-
yaml.load = pyyaml_load
|
|
163
|
-
pyyaml_load = None
|
|
164
|
-
if pyyaml_load_all:
|
|
165
|
-
log.info("reversing monkey patch for yaml.load_all...")
|
|
166
|
-
yaml.load_all = pyyaml_load_all
|
|
167
|
-
pyyaml_load_all = None
|
|
168
|
-
if pyyaml_dump_all:
|
|
169
|
-
log.info("reversing monkey patch for yaml.dump_all... (affects all yaml dump operations)")
|
|
170
|
-
yaml.dump_all = pyyaml_dump_all
|
|
171
|
-
pyyaml_dump_all = None
|
|
File without changes
|