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.
@@ -1,4 +1,4 @@
1
1
  # (C) Datadog, Inc. 2018-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
- __version__ = "37.8.0"
4
+ __version__ = "37.9.0"
@@ -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, 'disable_unsafe_yaml': True}
32
+ return {'enable_metadata_collection': True}
33
33
 
34
34
  def reset(self):
35
35
  self._sent_logs.clear()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datadog-checks-base
3
- Version: 37.8.0
3
+ Version: 37.9.0
4
4
  Summary: The Datadog Check Toolkit
5
5
  Project-URL: Source, https://github.com/DataDog/integrations-core
6
6
  Author-email: Datadog <packages@datadoghq.com>
@@ -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=EVn4WsAzbfPpRVpwALFOT9m4PEQOjW2rVwoZ2myUaqw,138
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=7W4dK8s7h5FGh1mv_MIapDXvHlpHMMeZj-z3aO5QAeI,59556
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=Px4JgZNjh-vMHibfGR452ZiA3kUiHA02ZUIDK70d62A,24448
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=RBV6416XG7EDgfiQj3deYEytSo6UVs7r5Bw2diKgRsg,5971
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.8.0.dist-info/METADATA,sha256=NSq6Uu3waSa82zIecfozrZZ40CoY7g3WlNL2Rf6f1oU,4198
222
- datadog_checks_base-37.8.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
223
- datadog_checks_base-37.8.0.dist-info/RECORD,,
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,,
@@ -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