datadog-checks-base 37.13.0__py2.py3-none-any.whl → 37.16.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.
Files changed (54) hide show
  1. datadog_checks/base/__about__.py +1 -1
  2. datadog_checks/base/checks/_config_ast.py +84 -0
  3. datadog_checks/base/checks/base.py +40 -44
  4. datadog_checks/base/checks/kube_leader/base_check.py +2 -1
  5. datadog_checks/base/checks/kube_leader/mixins.py +1 -1
  6. datadog_checks/base/checks/kubelet_base/base.py +2 -2
  7. datadog_checks/base/checks/network.py +1 -1
  8. datadog_checks/base/checks/openmetrics/base_check.py +4 -3
  9. datadog_checks/base/checks/openmetrics/mixins.py +6 -7
  10. datadog_checks/base/checks/openmetrics/v2/base.py +4 -3
  11. datadog_checks/base/checks/openmetrics/v2/labels.py +1 -1
  12. datadog_checks/base/checks/openmetrics/v2/scraper/__init__.py +8 -0
  13. datadog_checks/base/checks/openmetrics/v2/{scraper.py → scraper/base_scraper.py} +19 -16
  14. datadog_checks/base/checks/openmetrics/v2/scraper/decorators.py +48 -0
  15. datadog_checks/base/checks/openmetrics/v2/transform.py +2 -1
  16. datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py +2 -2
  17. datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py +1 -1
  18. datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py +2 -2
  19. datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py +1 -1
  20. datadog_checks/base/checks/prometheus/base_check.py +4 -3
  21. datadog_checks/base/checks/prometheus/mixins.py +7 -7
  22. datadog_checks/base/checks/prometheus/prometheus_base.py +3 -2
  23. datadog_checks/base/checks/win/winpdh_base.py +2 -2
  24. datadog_checks/base/checks/win/wmi/base.py +13 -12
  25. datadog_checks/base/checks/win/wmi/sampler.py +10 -10
  26. datadog_checks/base/checks/windows/perf_counters/base.py +5 -4
  27. datadog_checks/base/checks/windows/perf_counters/connection.py +2 -2
  28. datadog_checks/base/checks/windows/perf_counters/counter.py +2 -1
  29. datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py +2 -2
  30. datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py +3 -3
  31. datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py +1 -1
  32. datadog_checks/base/stubs/aggregator.py +21 -4
  33. datadog_checks/base/stubs/datadog_agent.py +5 -5
  34. datadog_checks/base/stubs/log.py +1 -1
  35. datadog_checks/base/utils/db/core.py +2 -2
  36. datadog_checks/base/utils/db/query.py +1 -3
  37. datadog_checks/base/utils/db/transform.py +6 -8
  38. datadog_checks/base/utils/db/utils.py +1 -2
  39. datadog_checks/base/utils/http.py +170 -71
  40. datadog_checks/base/utils/metadata/core.py +1 -1
  41. datadog_checks/base/utils/metadata/version.py +1 -1
  42. datadog_checks/base/utils/prometheus/metrics_pb2.py +2 -1
  43. datadog_checks/base/utils/replay/execute.py +2 -2
  44. datadog_checks/base/utils/replay/redirect.py +5 -6
  45. datadog_checks/base/utils/subprocess_output.py +2 -2
  46. datadog_checks/base/utils/tagging.py +1 -1
  47. datadog_checks/base/utils/tailfile.py +0 -2
  48. datadog_checks/base/utils/tls.py +96 -54
  49. datadog_checks/base/utils/tracing.py +5 -6
  50. datadog_checks/checks/libs/wmi/sampler.py +1 -0
  51. {datadog_checks_base-37.13.0.dist-info → datadog_checks_base-37.16.0.dist-info}/METADATA +13 -13
  52. {datadog_checks_base-37.13.0.dist-info → datadog_checks_base-37.16.0.dist-info}/RECORD +53 -51
  53. datadog_checks/base/utils/network.py +0 -49
  54. {datadog_checks_base-37.13.0.dist-info → datadog_checks_base-37.16.0.dist-info}/WHEEL +0 -0
@@ -5,12 +5,14 @@ import logging
5
5
  import os
6
6
  import ssl
7
7
  from copy import deepcopy
8
- from typing import TYPE_CHECKING, Any, AnyStr, Dict # noqa: F401
8
+ from typing import TYPE_CHECKING, Any, AnyStr, Dict, Optional # noqa: F401
9
9
 
10
- from ..config import is_affirmative
10
+ from pydantic import BaseModel
11
+
12
+ from datadog_checks.base.config import is_affirmative
11
13
 
12
14
  if TYPE_CHECKING:
13
- from ..types import InstanceType # noqa: F401
15
+ from datadog_checks.base.types import InstanceType # noqa: F401
14
16
 
15
17
  LOGGER = logging.getLogger(__file__)
16
18
 
@@ -21,6 +23,10 @@ LOGGER = logging.getLogger(__file__)
21
23
  # prefix.
22
24
  UNIQUE_FIELD_PREFIX = '_tls_context_'
23
25
 
26
+ # https://github.com/python/cpython/blob/ef516d11c1a0f885dba0aba8cf5366502077cdd4/Lib/ssl.py#L158-L165
27
+ DEFAULT_PROTOCOL_VERSIONS = ('SSLv3', 'TLSv1.2', 'TLSv1.3')
28
+ SUPPORTED_PROTOCOL_VERSIONS = ('SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3')
29
+
24
30
  STANDARD_FIELDS = {
25
31
  'tls_verify': True,
26
32
  'tls_ca_cert': None,
@@ -32,11 +38,95 @@ STANDARD_FIELDS = {
32
38
  }
33
39
 
34
40
 
41
+ class TlsConfig(BaseModel, frozen=True):
42
+ """
43
+ Class used internally to cache HTTPS adapters with specific TLS configurations.
44
+ """
45
+
46
+ tls_ca_cert: str | bool | None = None
47
+ tls_intermediate_ca_certs: tuple[str, ...] | None = None
48
+ tls_cert: str | None = None
49
+ tls_ciphers: str | tuple[str, ...] = 'ALL'
50
+ tls_use_host_header: bool = False
51
+ tls_ignore_warning: bool = False
52
+ tls_private_key: str | None = None
53
+ tls_private_key_password: str | None = None
54
+ tls_protocols_allowed: tuple[str, ...] = DEFAULT_PROTOCOL_VERSIONS
55
+ tls_validate_hostname: bool = True
56
+ tls_verify: bool = True
57
+
58
+
59
+ def create_ssl_context(config):
60
+ # https://docs.python.org/3/library/ssl.html#ssl.SSLContext
61
+ # https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS_CLIENT
62
+ context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS)
63
+
64
+ LOGGER.debug('Creating SSL context with config: %s', config)
65
+ # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.check_hostname
66
+ context.check_hostname = is_affirmative(config['tls_verify']) and config.get('tls_validate_hostname', True)
67
+
68
+ # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.verify_mode
69
+ context.verify_mode = ssl.CERT_REQUIRED if is_affirmative(config['tls_verify']) else ssl.CERT_NONE
70
+
71
+ ciphers = config.get('tls_ciphers', [])
72
+ if isinstance(ciphers, str):
73
+ # If ciphers is a string, assume that it is formatted correctly
74
+ configured_ciphers = "ALL" if "ALL" in ciphers else ciphers
75
+ else:
76
+ configured_ciphers = "ALL" if "ALL" in ciphers else ":".join(ciphers)
77
+ if configured_ciphers:
78
+ LOGGER.debug('Setting TLS ciphers to: %s', configured_ciphers)
79
+ context.set_ciphers(configured_ciphers)
80
+
81
+ # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_verify_locations
82
+ # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_default_certs
83
+ ca_cert = config.get('tls_ca_cert')
84
+ try:
85
+ if ca_cert:
86
+ ca_cert = os.path.expanduser(ca_cert)
87
+ if os.path.isdir(ca_cert):
88
+ context.load_verify_locations(cafile=None, capath=ca_cert, cadata=None)
89
+ else:
90
+ context.load_verify_locations(cafile=ca_cert, capath=None, cadata=None)
91
+ else:
92
+ context.load_default_certs(ssl.Purpose.SERVER_AUTH)
93
+ except FileNotFoundError:
94
+ LOGGER.warning(
95
+ 'TLS CA certificate file not found: %s. Please check the `tls_ca_cert` configuration option.',
96
+ ca_cert,
97
+ )
98
+ intermediate_ca_certs = config.get('tls_intermediate_ca_certs')
99
+ try:
100
+ if intermediate_ca_certs:
101
+ context.load_verify_locations(cadata='\n'.join(intermediate_ca_certs))
102
+ except ssl.SSLError:
103
+ LOGGER.warning(
104
+ "TLS intermediate CA certificate(s) could not be loaded: %s. ",
105
+ intermediate_ca_certs,
106
+ )
107
+
108
+ # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_cert_chain
109
+ client_cert, client_key = config.get('tls_cert'), config.get('tls_private_key')
110
+ client_key_pass = config.get('tls_private_key_password')
111
+ try:
112
+ if client_key:
113
+ client_key = os.path.expanduser(client_key)
114
+ if client_cert:
115
+ client_cert = os.path.expanduser(client_cert)
116
+ context.load_cert_chain(client_cert, keyfile=client_key, password=client_key_pass)
117
+ except FileNotFoundError:
118
+ LOGGER.warning(
119
+ 'TLS client certificate file not found: %s. Please check the `tls_cert` configuration option.',
120
+ client_cert,
121
+ )
122
+
123
+ return context
124
+
125
+
35
126
  class TlsContextWrapper(object):
36
127
  __slots__ = ('logger', 'config', 'tls_context')
37
128
 
38
129
  def __init__(self, instance, remapper=None, overrides=None):
39
- # type: (InstanceType, Dict[AnyStr, Dict[AnyStr, Any]], Dict[AnyStr, Any]) -> None
40
130
  default_fields = dict(STANDARD_FIELDS)
41
131
 
42
132
  # Override existing config options if there exists any overrides
@@ -98,56 +188,8 @@ class TlsContextWrapper(object):
98
188
  del config[unique_name]
99
189
 
100
190
  self.config = config
101
- self.tls_context = self._create_tls_context()
102
-
103
- def _create_tls_context(self):
104
- # type: () -> ssl.SSLContext
105
-
106
- # https://docs.python.org/3/library/ssl.html#ssl.SSLContext
107
- # https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS
108
- context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLS)
109
-
110
- # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.verify_mode
111
- context.verify_mode = ssl.CERT_REQUIRED if self.config['tls_verify'] else ssl.CERT_NONE
112
-
113
- # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.check_hostname
114
- if context.verify_mode == ssl.CERT_REQUIRED:
115
- context.check_hostname = self.config.get('tls_validate_hostname', True)
116
- else:
117
- context.check_hostname = False
118
-
119
- ciphers = self.config.get('tls_ciphers')
120
- if ciphers:
121
- if 'ALL' in ciphers:
122
- updated_ciphers = "ALL"
123
- else:
124
- updated_ciphers = ":".join(ciphers)
125
-
126
- context.set_ciphers(updated_ciphers)
127
-
128
- # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_verify_locations
129
- # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_default_certs
130
- ca_cert = self.config['tls_ca_cert']
131
- if ca_cert:
132
- ca_cert = os.path.expanduser(ca_cert)
133
- if os.path.isdir(ca_cert):
134
- context.load_verify_locations(cafile=None, capath=ca_cert, cadata=None)
135
- else:
136
- context.load_verify_locations(cafile=ca_cert, capath=None, cadata=None)
137
- else:
138
- context.load_default_certs(ssl.Purpose.SERVER_AUTH)
139
-
140
- # https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_cert_chain
141
- client_cert, client_key = self.config['tls_cert'], self.config['tls_private_key']
142
- client_key_pass = self.config['tls_private_key_password']
143
- if client_key:
144
- client_key = os.path.expanduser(client_key)
145
- if client_cert:
146
- client_cert = os.path.expanduser(client_cert)
147
- context.load_cert_chain(client_cert, keyfile=client_key, password=client_key_pass)
148
-
149
- return context
191
+ self.tls_context = create_ssl_context(self.config)
150
192
 
151
193
  def refresh_tls_context(self):
152
194
  # type: () -> None
153
- self.tls_context = self._create_tls_context()
195
+ self.tls_context = create_ssl_context(self.config)
@@ -10,9 +10,8 @@ from typing import TYPE_CHECKING
10
10
  import lazy_loader
11
11
 
12
12
  from datadog_checks.base.agent import datadog_agent
13
-
14
- from ..config import is_affirmative
15
- from ..utils.common import to_native_string
13
+ from datadog_checks.base.config import is_affirmative
14
+ from datadog_checks.base.utils.common import to_native_string
16
15
 
17
16
  if TYPE_CHECKING:
18
17
  import inspect as _module_inspect
@@ -123,9 +122,9 @@ def traced_class(cls):
123
122
  try:
124
123
  integration_tracing_exhaustive = is_affirmative(datadog_agent.get_config('integration_tracing_exhaustive'))
125
124
 
126
- from ddtrace import patch_all, tracer
127
-
128
- patch_all()
125
+ # https://ddtrace.readthedocs.io/en/stable/basic_usage.html#ddtrace-auto
126
+ import ddtrace.auto # noqa: F401
127
+ from ddtrace import tracer
129
128
 
130
129
  def decorate(cls):
131
130
  for attr in cls.__dict__:
@@ -23,4 +23,5 @@ Please refer to `checks.lib.wmi.counter_type` for more information*
23
23
  Original discussion thread: https://github.com/DataDog/dd-agent/issues/1952
24
24
  Credits to @TheCloudlessSky (https://github.com/TheCloudlessSky)
25
25
  """
26
+
26
27
  from ....win.wmi.sampler import WMISampler
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datadog-checks-base
3
- Version: 37.13.0
3
+ Version: 37.16.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>
@@ -15,28 +15,28 @@ Classifier: Topic :: System :: Monitoring
15
15
  Provides-Extra: db
16
16
  Requires-Dist: mmh3==5.1.0; extra == 'db'
17
17
  Provides-Extra: deps
18
- Requires-Dist: binary==1.0.1; extra == 'deps'
19
- Requires-Dist: cachetools==6.0.0; extra == 'deps'
20
- Requires-Dist: cryptography==45.0.3; extra == 'deps'
21
- Requires-Dist: ddtrace==3.8.0; extra == 'deps'
18
+ Requires-Dist: binary==1.0.2; extra == 'deps'
19
+ Requires-Dist: cachetools==6.1.0; extra == 'deps'
20
+ Requires-Dist: cryptography==45.0.4; extra == 'deps'
21
+ Requires-Dist: ddtrace==3.9.3; extra == 'deps'
22
22
  Requires-Dist: jellyfish==1.2.0; extra == 'deps'
23
23
  Requires-Dist: lazy-loader==0.4; extra == 'deps'
24
- Requires-Dist: prometheus-client==0.22.0; extra == 'deps'
25
- Requires-Dist: protobuf==6.31.0; extra == 'deps'
26
- Requires-Dist: pydantic==2.11.5; extra == 'deps'
24
+ Requires-Dist: prometheus-client==0.22.1; extra == 'deps'
25
+ Requires-Dist: protobuf==6.31.1; extra == 'deps'
26
+ Requires-Dist: pydantic==2.11.7; extra == 'deps'
27
27
  Requires-Dist: python-dateutil==2.9.0.post0; extra == 'deps'
28
28
  Requires-Dist: pywin32==310; (sys_platform == 'win32') and extra == 'deps'
29
29
  Requires-Dist: pyyaml==6.0.2; extra == 'deps'
30
30
  Requires-Dist: requests-toolbelt==1.0.0; extra == 'deps'
31
31
  Requires-Dist: requests-unixsocket2==1.0.0; extra == 'deps'
32
- Requires-Dist: requests==2.32.3; extra == 'deps'
32
+ Requires-Dist: requests==2.32.4; extra == 'deps'
33
33
  Requires-Dist: simplejson==3.20.1; extra == 'deps'
34
- Requires-Dist: urllib3==2.4.0; extra == 'deps'
34
+ Requires-Dist: urllib3==2.5.0; extra == 'deps'
35
35
  Requires-Dist: wrapt==1.17.2; extra == 'deps'
36
36
  Provides-Extra: http
37
37
  Requires-Dist: aws-requests-auth==0.4.3; extra == 'http'
38
- Requires-Dist: botocore==1.38.24; extra == 'http'
39
- Requires-Dist: oauthlib==3.2.2; extra == 'http'
38
+ Requires-Dist: botocore==1.38.41; extra == 'http'
39
+ Requires-Dist: oauthlib==3.3.1; extra == 'http'
40
40
  Requires-Dist: pyjwt==2.10.1; extra == 'http'
41
41
  Requires-Dist: pyopenssl==25.1.0; extra == 'http'
42
42
  Requires-Dist: pysocks==1.7.1; extra == 'http'
@@ -46,7 +46,7 @@ Requires-Dist: requests-oauthlib==2.0.0; extra == 'http'
46
46
  Provides-Extra: json
47
47
  Requires-Dist: orjson==3.10.18; extra == 'json'
48
48
  Provides-Extra: kube
49
- Requires-Dist: kubernetes==32.0.1; extra == 'kube'
49
+ Requires-Dist: kubernetes==33.1.0; extra == 'kube'
50
50
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'kube'
51
51
  Description-Content-Type: text/markdown
52
52
 
@@ -3,7 +3,7 @@ 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=lB4-_xYUmOUSD8CzIo0yXKB4H2tiej7dQ2fEkgCdyHw,139
6
+ datadog_checks/base/__about__.py,sha256=Obo5Tb1tuahMAF-iZILME3FbOd4SLn3HoyvW-6KfTlM,139
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
@@ -14,16 +14,17 @@ datadog_checks/base/log.py,sha256=gSfzYimmg0z3Dgmn8NpXuyMNjgXwmTbn0NcyUX8B1ls,62
14
14
  datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,1623
15
15
  datadog_checks/base/checks/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
16
16
  datadog_checks/base/checks/__init__.pyi,sha256=LASfm-daLNQIYe6-w0NPqBw4cl83nYIX5_B-VhV6ARo,262
17
- datadog_checks/base/checks/base.py,sha256=gIXjMpJPn9j6cBUA8949vPFculWB6bG-V7WvO_ce4RA,59948
18
- datadog_checks/base/checks/network.py,sha256=UijP1OVBCpCNKMy6bVkNazHgy6Sdm8qCvCYGPaWuTDo,1968
17
+ datadog_checks/base/checks/_config_ast.py,sha256=v1rAhwORF80b3kfZKhf6zXZ7S5D3A2QPUK4tSo8eo-Y,3268
18
+ datadog_checks/base/checks/base.py,sha256=UjjhAJaVUBhbJcdWkRCkWRSX5ocoeWRBvuFdbB3blKg,60027
19
+ datadog_checks/base/checks/network.py,sha256=UkgqkVHaoX7Hqi0WKEx-TvaFiF6-37VyF9A3m2aSaJM,1966
19
20
  datadog_checks/base/checks/kube_leader/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
20
21
  datadog_checks/base/checks/kube_leader/__init__.pyi,sha256=UGDywoRwmCIz3Zii1uHsp7jiFGWRdn5fFMZZxgGGlQs,398
21
- datadog_checks/base/checks/kube_leader/base_check.py,sha256=2LIRU6a2cJb4byM4Q3v1SVVJjQW8NjVJr_yUKOfjKjU,708
22
- datadog_checks/base/checks/kube_leader/mixins.py,sha256=YRrLqclphm9P7KUq2JsFdX2hq2A5P90iEfB42pW2FAA,5445
22
+ datadog_checks/base/checks/kube_leader/base_check.py,sha256=x8waP-vztJzK9e6KQLGSLFfrWdzwKcsWGzCL1bs6WRc,733
23
+ datadog_checks/base/checks/kube_leader/mixins.py,sha256=vJUFhziwVdvVct0WvCKFk6oM3HYjnTNtwxCSIFvOyH8,5469
23
24
  datadog_checks/base/checks/kube_leader/record.py,sha256=aqM0VFsFWu2pA0O5ds-6v5WQOM7lgQMyGwom6Q6qCaU,3825
24
25
  datadog_checks/base/checks/kubelet_base/__init__.py,sha256=1wYk1GS86jfv3-_Uy4zbJvuOAYPuy9y49FD0KIRVlQw,211
25
26
  datadog_checks/base/checks/kubelet_base/__init__.pyi,sha256=C-xJZ8zucbG7yAwts7J-SBneesG-TPgL1bBrFm4L8vc,172
26
- datadog_checks/base/checks/kubelet_base/base.py,sha256=akbNjduqdZhTDDYI6dgcrL6ER5PuYMOjVa6XkfFrVlM,6758
27
+ datadog_checks/base/checks/kubelet_base/base.py,sha256=5Iopwtmp0IQIhkB1Vl3Mg5V5N9sseUYn9DRGIzZaqH0,6799
27
28
  datadog_checks/base/checks/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
29
  datadog_checks/base/checks/libs/prometheus.py,sha256=CPiXzSaqFxk818NtTALRJRGZ6np4nusKQsfUu3ISt90,4055
29
30
  datadog_checks/base/checks/libs/thread_pool.py,sha256=mBIZ3GP-RS-WB14PyRS-4UEXlzVGMXnkv8k-LCC4urc,24570
@@ -37,50 +38,52 @@ datadog_checks/base/checks/logs/crawler/base.py,sha256=kK42pNw0mw0PwawQLzwhsdAQC
37
38
  datadog_checks/base/checks/logs/crawler/stream.py,sha256=MAp8I-zEj5cvTp7pNJNFl32ADdzqNZxGgkJfydrfhH4,1516
38
39
  datadog_checks/base/checks/openmetrics/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
39
40
  datadog_checks/base/checks/openmetrics/__init__.pyi,sha256=AqcFP5LGKKZ7fWqgAZAH0fPp4kLJk9Nv9Kk44ac2NBs,196
40
- datadog_checks/base/checks/openmetrics/base_check.py,sha256=bcLPpdRBsC3RVuh3NNgAJS_Rm4IA9XYAxSRFIKOTGqw,6489
41
- datadog_checks/base/checks/openmetrics/mixins.py,sha256=bkrE_cQ6peW147BACY-G0tHydiJ3Q6UKRLMzl5Uh5Cc,60791
41
+ datadog_checks/base/checks/openmetrics/base_check.py,sha256=OqFpv2GMSCSb2b05jGYDP1L8nfzQ5omdXL4FL-kB_yk,6548
42
+ datadog_checks/base/checks/openmetrics/mixins.py,sha256=fwiyuO6kVy69OH9ys9cSec8aREUOGgB1jcBW22yr35Y,60907
42
43
  datadog_checks/base/checks/openmetrics/v2/__init__.py,sha256=P81FBhJLA9MGpz4L7o_7C-pvEwd4A_8jWFWQZ1jg0Eg,115
43
- datadog_checks/base/checks/openmetrics/v2/base.py,sha256=UXytG0ze00rXU13VB0BM_ZK_Y_qC6wfxA-OidFm_MyY,4096
44
+ datadog_checks/base/checks/openmetrics/v2/base.py,sha256=4PLGsKTaqmg-3Vh1ZxjgsWSqV0G55O21l9nABi07i1M,4152
44
45
  datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py,sha256=In-tZXMzieSdL2OXJlIAFi78KbQVwuJnGP0iaLH9974,941
45
- datadog_checks/base/checks/openmetrics/v2/labels.py,sha256=JAIlxAtzQAFoEj1d9IYLZCGt-2M3-ClyyGjZ-VzKNQY,8907
46
+ datadog_checks/base/checks/openmetrics/v2/labels.py,sha256=Q6bQ-XfcK4DEFcynvCe0El68H9d2gwTiAIgh4QZHJxw,8923
46
47
  datadog_checks/base/checks/openmetrics/v2/metrics.py,sha256=uDVZOHHRWMW8YUQZBY9jCLzecN5DueRNjImxBm1K82k,2189
47
- datadog_checks/base/checks/openmetrics/v2/scraper.py,sha256=17DV_gS0Lks7EnPYpE30cV4gzvAF1Koppc2_nuFPKEQ,25286
48
- datadog_checks/base/checks/openmetrics/v2/transform.py,sha256=qv7Y1yvqWm-269mGU7Oq0it8x3VkWUZU2m2d3q-VJZ0,8377
48
+ datadog_checks/base/checks/openmetrics/v2/transform.py,sha256=p27NFqHlTWMCIyP32Zqr1ReZdTTgTnweD4BQR8bT4kU,8394
49
49
  datadog_checks/base/checks/openmetrics/v2/utils.py,sha256=tpk3htJAz_KwCRqFs2CTjajHkLCs_2TbGdBp514rWOQ,3565
50
+ datadog_checks/base/checks/openmetrics/v2/scraper/__init__.py,sha256=CmPditUEIuUa2hfsag0b9AoX_w_OR5GwYaA1kxV43es,302
51
+ datadog_checks/base/checks/openmetrics/v2/scraper/base_scraper.py,sha256=n_R_2EEatyjEFF61CI9z_q4hAIEKGzi1c0TfdkTf6v8,25610
52
+ datadog_checks/base/checks/openmetrics/v2/scraper/decorators.py,sha256=SOB-4WNHRFfppZXXbrTm_US-IKDF8J7e8d0UP63XAGc,1784
50
53
  datadog_checks/base/checks/openmetrics/v2/transformers/__init__.py,sha256=bqHxA7SxvyJzSyLdNfISOPtJKyF132bHkzdrMaKbjoA,211
51
54
  datadog_checks/base/checks/openmetrics/v2/transformers/__init__.pyi,sha256=oykbGmabU_Lkp_sKDgStqQeSlKacoGFhHjqoLOy_-aA,722
52
55
  datadog_checks/base/checks/openmetrics/v2/transformers/counter.py,sha256=mmNi4EGtLNYFxWa0yI_38NY9aBIi414M9pRSaGNbcaI,921
53
56
  datadog_checks/base/checks/openmetrics/v2/transformers/counter_gauge.py,sha256=ob1CvCdHr-Vrc5BSlaT3OXL5F2M6B7OGahUAekVF3Fw,1062
54
57
  datadog_checks/base/checks/openmetrics/v2/transformers/gauge.py,sha256=_2oZ14m_5_b7lOR-tMxJRhseF6r6f9DsO-4LbAIyiPE,645
55
- datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py,sha256=hytpw3hQKdVwN8y5keW6WGcq3r4--xEnJDHxwWf6jlI,9268
58
+ datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py,sha256=wZGTeZA_3E8-5F9aFqs8QCMJWN994Z-zJMvkTWendE8,9348
56
59
  datadog_checks/base/checks/openmetrics/v2/transformers/metadata.py,sha256=BpsJN1D9Jy94uxLe7kpHL14ELdlhUwyTml5R89MAOuo,1043
57
60
  datadog_checks/base/checks/openmetrics/v2/transformers/rate.py,sha256=e-t17cFCsAKnfXgQrdUh95w0lsly3iuA02MizGP_ocM,521
58
- datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py,sha256=GdBa838fi5Etvg0aCHYhMpaECGFsJV219isaWVSK2jw,2286
61
+ datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py,sha256=W6jZA0_iD3XtdHWBOWdne9h6tkaDKTKy5PCikLBsQog,2301
59
62
  datadog_checks/base/checks/openmetrics/v2/transformers/summary.py,sha256=0B1Wk7ea4H2nfdsOX8oQEiooBGNqypFDcjBPKjHVtS4,1586
60
- datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py,sha256=wCqOqXGoVQ3lyZBm_ATngwpvIdgcfOkF_1lGE5fohiU,1933
61
- datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py,sha256=yPs72UeOgr2eQOdhBjjFB6et0hMnwDS-ruUWOI8WDbE,647
63
+ datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py,sha256=FCXV9u1dcmFo5zO-ZQBXBJ8TgUHHFbh4NeA08h_21UY,1963
64
+ datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py,sha256=tqeGrRc07n2Az4OTmB1l7NLUZBXY1sBP5Qd8epfRnNo,662
62
65
  datadog_checks/base/checks/prometheus/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
63
66
  datadog_checks/base/checks/prometheus/__init__.pyi,sha256=gLe9ktvTHnk2TJtZIFQ5mRdQk3ds5-zhH17h8GKQVog,403
64
- datadog_checks/base/checks/prometheus/base_check.py,sha256=ElAlJQ26sJd3bAKMDXQFs2-pI0MlLPizeB44FuAn6SQ,8384
65
- datadog_checks/base/checks/prometheus/mixins.py,sha256=ZWXP0M7onafgXjUTGgQG9lyWhxzU68DcgYMTMJnNUuY,33754
66
- datadog_checks/base/checks/prometheus/prometheus_base.py,sha256=nzWCO_SIokZGoE7o8BJpolTPoWC7_kcWJfkLHAXeBX4,3965
67
+ datadog_checks/base/checks/prometheus/base_check.py,sha256=2O3rFQAlebKVvTXfR-wLmte2wP9YgpYEhThhI0UyPo4,8443
68
+ datadog_checks/base/checks/prometheus/mixins.py,sha256=8Fwn19ikNaQIWb3Fy2PgI61yk7njsFXV1YT7HWazrdc,33847
69
+ datadog_checks/base/checks/prometheus/prometheus_base.py,sha256=Jqr18FE1R-LUIPlujYaXAW3W-oAp-_c9jR-bQvmngnE,4007
67
70
  datadog_checks/base/checks/win/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
68
71
  datadog_checks/base/checks/win/__init__.pyi,sha256=9c7eiwszs-9Cv0S_v6r75jH_2PULjGTVpYt58kb3l0k,232
69
72
  datadog_checks/base/checks/win/winpdh.py,sha256=ihF4BB1_3EoWvFTCAZ4TMQSOLaWlv1nWM8AAqlthBa4,11280
70
- datadog_checks/base/checks/win/winpdh_base.py,sha256=xhVrPDmWY-49EqD65yOtx17hGNkIF1k7-aAEwbJPlig,10730
73
+ datadog_checks/base/checks/win/winpdh_base.py,sha256=z3pPHG0H5ixwjeGi08cLe00VbZ3XMdntdJhgg623T7I,10763
71
74
  datadog_checks/base/checks/win/winpdh_stub.py,sha256=M5fyBkzAuEKvoZrG9ktQapwkH_7K-KOIYF5VpS83LMk,391
72
75
  datadog_checks/base/checks/win/wmi/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
73
76
  datadog_checks/base/checks/win/wmi/__init__.pyi,sha256=2lgW_cDX36mGgwjBQ4jcUUkD4pIN73QfXvlPO7oK-X8,594
74
- datadog_checks/base/checks/win/wmi/base.py,sha256=QsafI3v-9GCJJvDt5oIbVReGXrtFxuelCub-Yizw1W0,15143
77
+ datadog_checks/base/checks/win/wmi/base.py,sha256=QzwCEgzu9DF8hZwcwTNpomq0ApUWwZSNRS-oqbeJXG8,15155
75
78
  datadog_checks/base/checks/win/wmi/counter_type.py,sha256=7772XGtWyPJXewyvaYyowVmDy9DxZ42ki9WD5XabuVE,5773
76
- datadog_checks/base/checks/win/wmi/sampler.py,sha256=sRwVtUud9ZmlA3XLoqTLmrfTslnqBz88TnAiPfCMpYQ,23499
79
+ datadog_checks/base/checks/win/wmi/sampler.py,sha256=NJlkALF8y1khAWRocpbH2LpwxtQb2F8fzBhCavvRX4w,23490
77
80
  datadog_checks/base/checks/win/wmi/types.py,sha256=4E8e1ypp2P-eOxgLsRrftlauqvapWCuVaAPocqCrwVg,412
78
81
  datadog_checks/base/checks/windows/__init__.py,sha256=suGjLrhZGp1UGpNapcVvIPp-u8PeaM8k3zplAZjycSo,115
79
82
  datadog_checks/base/checks/windows/perf_counters/__init__.py,sha256=xM7W2r2ht-Kx_j0i8Duue_lEM2Bv_bq3vg0Es0AJ5KE,155
80
- datadog_checks/base/checks/windows/perf_counters/base.py,sha256=IJynzH9t2UQwkDT5gbkWNabIX_nZXM_JLShEvhfmkLU,7862
81
- datadog_checks/base/checks/windows/perf_counters/connection.py,sha256=EkRi8mmeiacbsurSJb5vAUzFI_lAkUWcnSC7TOQsAG4,3982
83
+ datadog_checks/base/checks/windows/perf_counters/base.py,sha256=cXbQVwb496B-kuHaAM3fE3X33LMUbKoYC4FSSJKJrbc,7934
84
+ datadog_checks/base/checks/windows/perf_counters/connection.py,sha256=mG7TdSfSZkXFR6eU4Y-49K4ELJiqer6Cw4Y6FxeKEQY,3998
82
85
  datadog_checks/base/checks/windows/perf_counters/constants.py,sha256=_aqAbatcu9eQv9NqbVCaQ9c5S-HkkiUERV5oqC3Dl5k,587
83
- datadog_checks/base/checks/windows/perf_counters/counter.py,sha256=hJj76QIktZNFWFiKIRENIiTE0NYzTlvVLawhPCVm9J4,33737
86
+ datadog_checks/base/checks/windows/perf_counters/counter.py,sha256=-qDXCf4Vsh2rd4-MLyG8H7czW6bd_SP8pypKGlwZSU8,33754
84
87
  datadog_checks/base/checks/windows/perf_counters/transform.py,sha256=bZPxftDw0d1VFX49yiFIa-naGOYlKcMgpvueSRkgEz8,770
85
88
  datadog_checks/base/checks/windows/perf_counters/utils.py,sha256=ov-48JNvZQ6KPEZxz6X0IYcAl3bVAFnM15-vlGfqsY0,4359
86
89
  datadog_checks/base/checks/windows/perf_counters/utils_win32pdh_fix.py,sha256=nWTrAbB9VAD_DaaTrSBV2KDmBvipGFmI04-wDfnxUa8,7122
@@ -89,15 +92,15 @@ datadog_checks/base/checks/windows/perf_counters/transformers/count.py,sha256=gm
89
92
  datadog_checks/base/checks/windows/perf_counters/transformers/gauge.py,sha256=c74fZS6FrdxDO6ZKovp17h2vhTImkaNR2OLes1r01oE,333
90
93
  datadog_checks/base/checks/windows/perf_counters/transformers/monotonic_count.py,sha256=R5wWfDG9LkcbqrIdSc6dzjRwtAcp2r4VPuVFaqOlzi0,393
91
94
  datadog_checks/base/checks/windows/perf_counters/transformers/rate.py,sha256=Pkxzl1XPbPto-5QriCojNh5WhMTjwDcQwqY_i2MQBS8,327
92
- datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py,sha256=wvdLDSuHHKInbzW8uM8Q92TcRUuQl11wsvt0dSZtrHA,2187
93
- datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py,sha256=IHH2YTOGeei2PVN5Ch998gDqYg-s1JObv9a0TmAvOnU,1844
94
- datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py,sha256=hWM8CHYSqFnFYrNdr1NFY464nMAVFOiN8jhlhZTOb78,513
95
+ datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py,sha256=ydeCgeUDMU7eKV_BwZCNicsCLOfosNdWamoHE8xkpwc,2217
96
+ datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py,sha256=DXu1kYZDlCN7zA2ljPzG6PxUrFMtbTTAeghPCjkDFvQ,1889
97
+ datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py,sha256=btTz2R_Xp5sTRWifDo8bZ4CQbIwJPMa6zR9vOCMzFt8,528
95
98
  datadog_checks/base/stubs/__init__.py,sha256=wpWAR9v7BiTbbmTO6pVpshqa_z-PWaYTr33wSTZLz3c,272
96
99
  datadog_checks/base/stubs/_util.py,sha256=ZDGtQa8F3cHf8-QvSVHMB4BGI3C9VgC7sGcGGvO0apI,1268
97
- datadog_checks/base/stubs/aggregator.py,sha256=iPEnNAsFeQ1_i6RwyjWKKGUGj2aoRccWJ9UEw28lsiU,24645
100
+ datadog_checks/base/stubs/aggregator.py,sha256=bp4Z6UmwMcBpIdrUQgvTqNwO0gtNd5ogkBfm3Yr0-oo,25356
98
101
  datadog_checks/base/stubs/common.py,sha256=ZGzF2dXy1uVFQGdG_bvz_pMMiULaBcpzra_k9wo9f04,1088
99
- datadog_checks/base/stubs/datadog_agent.py,sha256=zhKqluf_0WPIAm_GxJyz6A9JFw9Aoe1OsrjIAcEWdrg,5942
100
- datadog_checks/base/stubs/log.py,sha256=A-eWnzY5gTpTW41Zch-W5CVclzldlmhMTW-vDNFdT1o,836
102
+ datadog_checks/base/stubs/datadog_agent.py,sha256=eSL7dc2q8u_WNaq5Cdh2yerVlHjUgAAd3daxYgZGRyg,6007
103
+ datadog_checks/base/stubs/log.py,sha256=nXeI5OyNKRWu69nxz3ceAdhqnklqtyE4l6y8NPe_p08,854
101
104
  datadog_checks/base/stubs/similar.py,sha256=3HO9htx9LV6pRaE1ZGKsPExavTbjPHPK6ZMM2BPYj3Y,8045
102
105
  datadog_checks/base/stubs/tagging.py,sha256=zxLdPC4EqHxGiS_HEhbaOsL_s5nZIhN8BDkx2BATOqs,1439
103
106
  datadog_checks/base/utils/__init__.py,sha256=TC0q7iCbNqcYjfU5azBNpCni8LAQYOfY6FADE3SZEPA,115
@@ -111,19 +114,18 @@ datadog_checks/base/utils/diagnose.py,sha256=eLMe0tISpkzS3yxVR83IHxorQJfHT_Xi6Cq
111
114
  datadog_checks/base/utils/fips.py,sha256=vxm3K7wTQKYenP1LbXk7pmJ8WA6l367BTJGBNO0DkvQ,2490
112
115
  datadog_checks/base/utils/functions.py,sha256=iGlybxR6aPPElNxNb2ELOzbk328j9OVBAxredJxdCRw,695
113
116
  datadog_checks/base/utils/headers.py,sha256=0SSdC71jwaB61BODfusahCVr1c56GvT9iwt7cidcHP0,1779
114
- datadog_checks/base/utils/http.py,sha256=RIYbrba5brj_mRK-GJL6GI3Af0FmkA9FZ1-C8yxGOBY,40043
117
+ datadog_checks/base/utils/http.py,sha256=ePSzL7x_xsb1dnXJyU2fBXIgOU0p5UFZIpG2AX_jZZA,44651
115
118
  datadog_checks/base/utils/limiter.py,sha256=YRTrPCX1S5EtHLVcP_-GEfzRots_LTcy1f_uHZVs90g,3027
116
- datadog_checks/base/utils/network.py,sha256=YXo9JQgWUtFn4dFefWZap20OMmSReLSPOjgzodJbddw,1814
117
119
  datadog_checks/base/utils/platform.py,sha256=wW8f6XKo4JHxvu1sN0DpLDmYjS_cCu8GoKvfTjIj4yM,2499
118
120
  datadog_checks/base/utils/secrets.py,sha256=Tj5MBOoyGXXDWB3Hr-7UKDy5GV1NZJkFPY4T4v9PHHg,551
119
121
  datadog_checks/base/utils/serialization.py,sha256=pcRUzZIUZkOsfnGDGbxeUwGXrSsFl_9rLhA0ekD_AZ8,975
120
- datadog_checks/base/utils/subprocess_output.py,sha256=2mUdPToJfbzcgW_17CyL-HmX4SW1wxs_q2QxMYlyESA,2577
121
- datadog_checks/base/utils/tagging.py,sha256=AEUEGIxJjNvoOIEQQFkit8ZT2OyRxiym1FzCEicICss,394
122
- datadog_checks/base/utils/tailfile.py,sha256=x_pM5pgmVaW4eJBwS6GXZKOqifpmqfrwHOU3gWthYtM,3894
122
+ datadog_checks/base/utils/subprocess_output.py,sha256=Dbqxn8Fjo7f3jl-8E2Ow3cVkRi6rNoH547_ifMsLqVw,2612
123
+ datadog_checks/base/utils/tagging.py,sha256=a-0_pXGOwg4ewmDiJon7rM_96ZJvVpHVMwhy1J5RrEI,412
124
+ datadog_checks/base/utils/tailfile.py,sha256=QZmH8eCxeClFWRMZn6zDwgOx1y5dAXc5yI_uzECj0ak,3892
123
125
  datadog_checks/base/utils/time.py,sha256=cNy7CtsJzSUMi7J-3WReZVUvNyYOGkJwItqJMY01qqA,1373
124
126
  datadog_checks/base/utils/timeout.py,sha256=eOBZofFN-hOu5xJeMOF3ac_ofcy9EY6-kvmBvP4QEFg,2140
125
- datadog_checks/base/utils/tls.py,sha256=m_puDc6JGhVqJ0ADqeA736H05DuaNKrLAE9pPMUJCDo,5700
126
- datadog_checks/base/utils/tracing.py,sha256=nl2ucSdmvZIkQQYOTkhqLsuNFNmrMTyhck9j-hTdEm0,5946
127
+ datadog_checks/base/utils/tls.py,sha256=DoJqqpnWTC8up_UF4AL_UUBJ9Sb-1Fvwjd2gSxmiVBY,7434
128
+ datadog_checks/base/utils/tracing.py,sha256=2QZjQKNKvowRYFpqOQc4sUoYUWu6JJKJofk-rvstUgY,6076
127
129
  datadog_checks/base/utils/tracking.py,sha256=FYIouqu3KB-JsxgxM1iX5Ipv_cWhs8zQOTN4SxXOkJ4,3701
128
130
  datadog_checks/base/utils/agent/__init__.py,sha256=o3aWvy3PhykD_h7YT3s628O0W2YpHis0NlQsSV1PI04,115
129
131
  datadog_checks/base/utils/agent/common.py,sha256=1XRsPJWdpmbxAKKBVHGBPUm4WHdviq0ovuggtpx7LWo,217
@@ -135,15 +137,15 @@ datadog_checks/base/utils/concurrency/__init__.py,sha256=ORssE5bXZuYua5UCLesGfPv
135
137
  datadog_checks/base/utils/concurrency/limiter.py,sha256=is2ZpUEjfsI4nBGtXG2D0Zgv0GD38_i5jJQCkdzPW_Y,3170
136
138
  datadog_checks/base/utils/db/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
137
139
  datadog_checks/base/utils/db/__init__.pyi,sha256=ewmGxxyJ52wAaYxNZahi2koEUnddfvHcn3HYxQ3RUr0,240
138
- datadog_checks/base/utils/db/core.py,sha256=sVHdY5Z0dx6UM6IWZwB70HxiWDITNE26RjffwLKs9JA,11124
139
- datadog_checks/base/utils/db/query.py,sha256=TjyVNjxjNIB21bcIft6f-5b3algDPtdttHcAS2BdUuc,14462
140
+ datadog_checks/base/utils/db/core.py,sha256=bYanwXIqBzsSxK7b-Ofb0W1WiHbFBtKyYdUBonBLe_Q,11165
141
+ datadog_checks/base/utils/db/query.py,sha256=-PyxdqpbShkQ78h7sWnghQZVtjdLGVrm71n8OpHuPW4,14432
140
142
  datadog_checks/base/utils/db/sql.py,sha256=oiEzQa_vC_w3U65VFrFCoQHWj5GQLLRlSO0CfiSlp4A,2490
141
143
  datadog_checks/base/utils/db/sql_commenter.py,sha256=r_efK6TGRQxM_-Qj-ndEJdECk47J4nCFjkVyxu1XmvU,1522
142
144
  datadog_checks/base/utils/db/statement_metrics.py,sha256=U7EtERkmFzfCtfyd3094fBaKQ-CuJxoRt-3AcDBCkIA,7087
143
145
  datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
144
- datadog_checks/base/utils/db/transform.py,sha256=kNdiBZVoZm1oNRNWIatrAfgORjbkRKhs1AgW_aQCj3I,23879
146
+ datadog_checks/base/utils/db/transform.py,sha256=H3JN8_MF0Pk0HaXvIZeX1A8iQrP8KBgS741MPeBiWDo,23969
145
147
  datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
146
- datadog_checks/base/utils/db/utils.py,sha256=z1CIC_VdMHHYuvoRHZKpdnk_bHj-_M07JFSPNMjIUP4,21657
148
+ datadog_checks/base/utils/db/utils.py,sha256=_ocLUqRwY3AWDbAcvDP8DsJdX5SRfB5OURzKUqnT-Pw,21680
147
149
  datadog_checks/base/utils/discovery/__init__.py,sha256=vPCOdsThBcBjFJRPhDm6IsZGOwk8HlvciwCe_l8dKLk,211
148
150
  datadog_checks/base/utils/discovery/__init__.pyi,sha256=ScVLU1Njj9ekZmewltb0cULI6BylssVHfn4CcPNeyr8,173
149
151
  datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
@@ -155,9 +157,9 @@ datadog_checks/base/utils/format/json.py,sha256=Gy84c9l0zOy731qCDiy21HphZiC3w2wS
155
157
  datadog_checks/base/utils/metadata/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
156
158
  datadog_checks/base/utils/metadata/__init__.pyi,sha256=WVov07aPKEdydcy8e5Ahd9CMT_DcQxiOtCqjGx1kSf4,180
157
159
  datadog_checks/base/utils/metadata/constants.py,sha256=XHfPwvQMbyNE2FYmB_7XyWiGI0N2GxdBXbtXL4eDnic,464
158
- datadog_checks/base/utils/metadata/core.py,sha256=Oska0abZ0CedrMBGcuauJaqrSTfM9jaQNBXcdGCtGeI,4953
160
+ datadog_checks/base/utils/metadata/core.py,sha256=7rIKrfw1lNAocO9HBd2M6_g-cKEP2vmYOOPO6OkmuTk,4977
159
161
  datadog_checks/base/utils/metadata/utils.py,sha256=03VpRqefooCt0VEAi9BvolZD3m3-uhT2r2QuJ2xc4D4,330
160
- datadog_checks/base/utils/metadata/version.py,sha256=cle8LHwqcu42TqFKJGJdFtHAmOeitCOizjTNQ2BsxTQ,1932
162
+ datadog_checks/base/utils/metadata/version.py,sha256=rQ6_aHprA4dTCkeUMwbdBNvwSOlpOF7632sW264sdbs,1956
161
163
  datadog_checks/base/utils/models/__init__.py,sha256=suGjLrhZGp1UGpNapcVvIPp-u8PeaM8k3zplAZjycSo,115
162
164
  datadog_checks/base/utils/models/types.py,sha256=ybUEp9z_rDlr2-oIkVjEWB-mRAvUwoEDpAUcZQTEIIw,400
163
165
  datadog_checks/base/utils/models/validation/__init__.py,sha256=aZVX38W1pkLHk7koHgK5Jn2POCT5QKKPGzW_w9Lggto,141
@@ -166,11 +168,11 @@ datadog_checks/base/utils/models/validation/utils.py,sha256=dIrRg8h5Xuk-QDsIyJKF
166
168
  datadog_checks/base/utils/prometheus/__init__.py,sha256=pNLX20kXJrtQDIhFD6jnnIE18vF19MdAKAm34aOlg7w,205
167
169
  datadog_checks/base/utils/prometheus/__init__.pyi,sha256=53Ssj7fP-yyvYk85kOebUX5Ie-bmHjH-bVKYn9X47Wc,193
168
170
  datadog_checks/base/utils/prometheus/functions.py,sha256=xnTyg9iTes_83mWlc1Gs8FFQ1jSRY-lLPo5TCAFibys,1054
169
- datadog_checks/base/utils/prometheus/metrics_pb2.py,sha256=2Yp6WZy0KK-_PB8a2oNosS6c-lmAAniNOYuJerAMTec,3950
171
+ datadog_checks/base/utils/prometheus/metrics_pb2.py,sha256=i_7puABrfN4yCTk-vhOw3GF__5Q4aiDxKyXvtQad9so,3941
170
172
  datadog_checks/base/utils/replay/__init__.py,sha256=ORssE5bXZuYua5UCLesGfPvcrQKcADHaDsXrUyfARF0,115
171
173
  datadog_checks/base/utils/replay/constants.py,sha256=exDGsDgLI7u1GWveelXdgzWJTjxHoYJmQT7o7w1FCeM,659
172
- datadog_checks/base/utils/replay/execute.py,sha256=a78xng5qQyhYyD7g0vzwL3Zzw9slXwpphsVwqjFdfu4,3237
173
- datadog_checks/base/utils/replay/redirect.py,sha256=4zshialMLqTqZvjlDiW8D-BFMfmsuMP6C_Z8IPdpCoQ,2875
174
+ datadog_checks/base/utils/replay/execute.py,sha256=ZYaqVqtA3iA9gstslmEdDYWKkPSCRwO91rI5UcOUEUo,3285
175
+ datadog_checks/base/utils/replay/redirect.py,sha256=02qC0ioQiVxEFuTxB9Hbjr4u-L9rIImKoWWzhqJob5g,2959
174
176
  datadog_checks/checks/__init__.py,sha256=djgfqnKs_OaGMDFQGlO5VdLQRxUAI-X4KEJLLlPpVIM,217
175
177
  datadog_checks/checks/base.py,sha256=3wYbhugNA3Wlrt_-EEpBmJSSl8lHKuUtrRP-nV2KBfQ,161
176
178
  datadog_checks/checks/network.py,sha256=5bfRHxmsUoaJclnCrB6CCe577pTfGZ1RVeGxdMzmr7w,189
@@ -183,7 +185,7 @@ datadog_checks/checks/libs/vmware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
183
185
  datadog_checks/checks/libs/vmware/all_metrics.py,sha256=hJyiC_07hqqMjuuIcytAJv2KDnSgqWq2y-JpJwtxqMM,176
184
186
  datadog_checks/checks/libs/vmware/basic_metrics.py,sha256=aDr0FNObjXfWb9lxRpmd5L16e-mrk07ZIkhnoLdMCZ8,178
185
187
  datadog_checks/checks/libs/wmi/__init__.py,sha256=IwDDEDhDqPPU1j4PyveGkdu1CMv9kbfeK90IAvmBx3c,239
186
- datadog_checks/checks/libs/wmi/sampler.py,sha256=VTEKi_-0tVr5VSJo5ifIPChNtVyZxH91T6BeW7M8zTs,1152
188
+ datadog_checks/checks/libs/wmi/sampler.py,sha256=48mB0zKJxVraJJq-tRscUJXAbLEbmZH5pCKKaVJR5FU,1153
187
189
  datadog_checks/checks/openmetrics/__init__.py,sha256=lrkQscNZoLN6CodTtuHlDIA641v08eejFBhnjPFnksA,169
188
190
  datadog_checks/checks/openmetrics/base_check.py,sha256=qczSEzuqEFj3ROSU4rtDy1Ih-7tBtsO4oFU-rX9qhR8,180
189
191
  datadog_checks/checks/openmetrics/mixins.py,sha256=tbnPnXfI3abXUqTTfTA0BfoZNawHGxek6LBVFgt9Kig,176
@@ -217,6 +219,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
217
219
  datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
218
220
  datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
219
221
  datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
220
- datadog_checks_base-37.13.0.dist-info/METADATA,sha256=fEpcawGlBAaVY_ESNFrALlVN9FGTQBSt5fUByiRAPA0,4245
221
- datadog_checks_base-37.13.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
222
- datadog_checks_base-37.13.0.dist-info/RECORD,,
222
+ datadog_checks_base-37.16.0.dist-info/METADATA,sha256=DJlhTWQ8ALONgXmzOFGd8sIrtmZsInckNItfjHSj-Z4,4245
223
+ datadog_checks_base-37.16.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
224
+ datadog_checks_base-37.16.0.dist-info/RECORD,,
@@ -1,49 +0,0 @@
1
- import socket
2
- import ssl
3
-
4
- from requests.adapters import HTTPAdapter, PoolManager
5
-
6
-
7
- def create_socket_connection(hostname, port=443, sock_type=socket.SOCK_STREAM, timeout=10):
8
- """See: https://github.com/python/cpython/blob/40ee9a3640d702bce127e9877c82a99ce817f0d1/Lib/socket.py#L691"""
9
- err = None
10
- try:
11
- for res in socket.getaddrinfo(hostname, port, 0, sock_type):
12
- af, socktype, proto, canonname, sa = res
13
- sock = None
14
- try:
15
- sock = socket.socket(af, socktype, proto)
16
- sock.settimeout(timeout)
17
- sock.connect(sa)
18
- # Break explicitly a reference cycle
19
- err = None
20
- return sock
21
-
22
- except socket.error as _:
23
- err = _
24
- if sock is not None:
25
- sock.close()
26
-
27
- if err is not None:
28
- raise err
29
- else:
30
- raise socket.error('No valid addresses found, try checking your IPv6 connectivity') # noqa: G
31
- except socket.gaierror as e:
32
- err_code, message = e.args
33
- if err_code == socket.EAI_NODATA or err_code == socket.EAI_NONAME:
34
- raise socket.error('Unable to resolve host, check your DNS: {}'.format(message)) # noqa: G
35
-
36
- raise
37
-
38
-
39
- class CertAdapter(HTTPAdapter):
40
- def __init__(self, **kwargs):
41
- self.certs = kwargs['certs']
42
- super(CertAdapter, self).__init__()
43
-
44
- def init_poolmanager(self, connections, maxsize, block=False, **pool_kwargs):
45
- context = ssl.create_default_context()
46
- for cert in self.certs:
47
- context.load_verify_locations(cadata=cert)
48
- pool_kwargs['ssl_context'] = context
49
- self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, block=block, strict=True, **pool_kwargs)