datadog-checks-base 37.15.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 (53) hide show
  1. datadog_checks/base/__about__.py +1 -1
  2. datadog_checks/base/checks/base.py +38 -38
  3. datadog_checks/base/checks/kube_leader/base_check.py +2 -1
  4. datadog_checks/base/checks/kube_leader/mixins.py +1 -1
  5. datadog_checks/base/checks/kubelet_base/base.py +2 -2
  6. datadog_checks/base/checks/network.py +1 -1
  7. datadog_checks/base/checks/openmetrics/base_check.py +4 -3
  8. datadog_checks/base/checks/openmetrics/mixins.py +6 -7
  9. datadog_checks/base/checks/openmetrics/v2/base.py +4 -3
  10. datadog_checks/base/checks/openmetrics/v2/labels.py +1 -1
  11. datadog_checks/base/checks/openmetrics/v2/scraper/__init__.py +8 -0
  12. datadog_checks/base/checks/openmetrics/v2/{scraper.py → scraper/base_scraper.py} +19 -16
  13. datadog_checks/base/checks/openmetrics/v2/scraper/decorators.py +48 -0
  14. datadog_checks/base/checks/openmetrics/v2/transform.py +2 -1
  15. datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py +2 -2
  16. datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py +1 -1
  17. datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py +2 -2
  18. datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py +1 -1
  19. datadog_checks/base/checks/prometheus/base_check.py +4 -3
  20. datadog_checks/base/checks/prometheus/mixins.py +7 -7
  21. datadog_checks/base/checks/prometheus/prometheus_base.py +3 -2
  22. datadog_checks/base/checks/win/winpdh_base.py +2 -2
  23. datadog_checks/base/checks/win/wmi/base.py +13 -12
  24. datadog_checks/base/checks/win/wmi/sampler.py +10 -10
  25. datadog_checks/base/checks/windows/perf_counters/base.py +5 -4
  26. datadog_checks/base/checks/windows/perf_counters/connection.py +2 -2
  27. datadog_checks/base/checks/windows/perf_counters/counter.py +2 -1
  28. datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py +2 -2
  29. datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py +3 -3
  30. datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py +1 -1
  31. datadog_checks/base/stubs/aggregator.py +21 -4
  32. datadog_checks/base/stubs/datadog_agent.py +5 -5
  33. datadog_checks/base/stubs/log.py +1 -1
  34. datadog_checks/base/utils/db/core.py +2 -2
  35. datadog_checks/base/utils/db/query.py +1 -3
  36. datadog_checks/base/utils/db/transform.py +6 -8
  37. datadog_checks/base/utils/db/utils.py +1 -2
  38. datadog_checks/base/utils/http.py +170 -71
  39. datadog_checks/base/utils/metadata/core.py +1 -1
  40. datadog_checks/base/utils/metadata/version.py +1 -1
  41. datadog_checks/base/utils/prometheus/metrics_pb2.py +2 -1
  42. datadog_checks/base/utils/replay/execute.py +2 -2
  43. datadog_checks/base/utils/replay/redirect.py +5 -6
  44. datadog_checks/base/utils/subprocess_output.py +2 -2
  45. datadog_checks/base/utils/tagging.py +1 -1
  46. datadog_checks/base/utils/tailfile.py +0 -2
  47. datadog_checks/base/utils/tls.py +96 -54
  48. datadog_checks/base/utils/tracing.py +5 -6
  49. datadog_checks/checks/libs/wmi/sampler.py +1 -0
  50. {datadog_checks_base-37.15.0.dist-info → datadog_checks_base-37.16.0.dist-info}/METADATA +10 -10
  51. {datadog_checks_base-37.15.0.dist-info → datadog_checks_base-37.16.0.dist-info}/RECORD +52 -51
  52. datadog_checks/base/utils/network.py +0 -49
  53. {datadog_checks_base-37.15.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.15.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,15 +15,15 @@ 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.9.1; 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
24
  Requires-Dist: prometheus-client==0.22.1; extra == 'deps'
25
25
  Requires-Dist: protobuf==6.31.1; extra == 'deps'
26
- Requires-Dist: pydantic==2.11.5; 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'
@@ -31,12 +31,12 @@ Requires-Dist: requests-toolbelt==1.0.0; extra == 'deps'
31
31
  Requires-Dist: requests-unixsocket2==1.0.0; extra == 'deps'
32
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.32; 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=FWWR7jAyvwkUM_4VgFGv7MU2D_yjzNuII5JoID5lwPQ,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
@@ -15,16 +15,16 @@ datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,
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
17
  datadog_checks/base/checks/_config_ast.py,sha256=v1rAhwORF80b3kfZKhf6zXZ7S5D3A2QPUK4tSo8eo-Y,3268
18
- datadog_checks/base/checks/base.py,sha256=q-V8fzkJ3MMbRnhHzhE7wyuolfukXsZ_sq-Ih_PWWkw,59873
19
- datadog_checks/base/checks/network.py,sha256=UijP1OVBCpCNKMy6bVkNazHgy6Sdm8qCvCYGPaWuTDo,1968
18
+ datadog_checks/base/checks/base.py,sha256=UjjhAJaVUBhbJcdWkRCkWRSX5ocoeWRBvuFdbB3blKg,60027
19
+ datadog_checks/base/checks/network.py,sha256=UkgqkVHaoX7Hqi0WKEx-TvaFiF6-37VyF9A3m2aSaJM,1966
20
20
  datadog_checks/base/checks/kube_leader/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
21
21
  datadog_checks/base/checks/kube_leader/__init__.pyi,sha256=UGDywoRwmCIz3Zii1uHsp7jiFGWRdn5fFMZZxgGGlQs,398
22
- datadog_checks/base/checks/kube_leader/base_check.py,sha256=2LIRU6a2cJb4byM4Q3v1SVVJjQW8NjVJr_yUKOfjKjU,708
23
- 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
24
24
  datadog_checks/base/checks/kube_leader/record.py,sha256=aqM0VFsFWu2pA0O5ds-6v5WQOM7lgQMyGwom6Q6qCaU,3825
25
25
  datadog_checks/base/checks/kubelet_base/__init__.py,sha256=1wYk1GS86jfv3-_Uy4zbJvuOAYPuy9y49FD0KIRVlQw,211
26
26
  datadog_checks/base/checks/kubelet_base/__init__.pyi,sha256=C-xJZ8zucbG7yAwts7J-SBneesG-TPgL1bBrFm4L8vc,172
27
- datadog_checks/base/checks/kubelet_base/base.py,sha256=akbNjduqdZhTDDYI6dgcrL6ER5PuYMOjVa6XkfFrVlM,6758
27
+ datadog_checks/base/checks/kubelet_base/base.py,sha256=5Iopwtmp0IQIhkB1Vl3Mg5V5N9sseUYn9DRGIzZaqH0,6799
28
28
  datadog_checks/base/checks/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  datadog_checks/base/checks/libs/prometheus.py,sha256=CPiXzSaqFxk818NtTALRJRGZ6np4nusKQsfUu3ISt90,4055
30
30
  datadog_checks/base/checks/libs/thread_pool.py,sha256=mBIZ3GP-RS-WB14PyRS-4UEXlzVGMXnkv8k-LCC4urc,24570
@@ -38,50 +38,52 @@ datadog_checks/base/checks/logs/crawler/base.py,sha256=kK42pNw0mw0PwawQLzwhsdAQC
38
38
  datadog_checks/base/checks/logs/crawler/stream.py,sha256=MAp8I-zEj5cvTp7pNJNFl32ADdzqNZxGgkJfydrfhH4,1516
39
39
  datadog_checks/base/checks/openmetrics/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
40
40
  datadog_checks/base/checks/openmetrics/__init__.pyi,sha256=AqcFP5LGKKZ7fWqgAZAH0fPp4kLJk9Nv9Kk44ac2NBs,196
41
- datadog_checks/base/checks/openmetrics/base_check.py,sha256=bcLPpdRBsC3RVuh3NNgAJS_Rm4IA9XYAxSRFIKOTGqw,6489
42
- 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
43
43
  datadog_checks/base/checks/openmetrics/v2/__init__.py,sha256=P81FBhJLA9MGpz4L7o_7C-pvEwd4A_8jWFWQZ1jg0Eg,115
44
- 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
45
45
  datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py,sha256=In-tZXMzieSdL2OXJlIAFi78KbQVwuJnGP0iaLH9974,941
46
- 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
47
47
  datadog_checks/base/checks/openmetrics/v2/metrics.py,sha256=uDVZOHHRWMW8YUQZBY9jCLzecN5DueRNjImxBm1K82k,2189
48
- datadog_checks/base/checks/openmetrics/v2/scraper.py,sha256=17DV_gS0Lks7EnPYpE30cV4gzvAF1Koppc2_nuFPKEQ,25286
49
- 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
50
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
51
53
  datadog_checks/base/checks/openmetrics/v2/transformers/__init__.py,sha256=bqHxA7SxvyJzSyLdNfISOPtJKyF132bHkzdrMaKbjoA,211
52
54
  datadog_checks/base/checks/openmetrics/v2/transformers/__init__.pyi,sha256=oykbGmabU_Lkp_sKDgStqQeSlKacoGFhHjqoLOy_-aA,722
53
55
  datadog_checks/base/checks/openmetrics/v2/transformers/counter.py,sha256=mmNi4EGtLNYFxWa0yI_38NY9aBIi414M9pRSaGNbcaI,921
54
56
  datadog_checks/base/checks/openmetrics/v2/transformers/counter_gauge.py,sha256=ob1CvCdHr-Vrc5BSlaT3OXL5F2M6B7OGahUAekVF3Fw,1062
55
57
  datadog_checks/base/checks/openmetrics/v2/transformers/gauge.py,sha256=_2oZ14m_5_b7lOR-tMxJRhseF6r6f9DsO-4LbAIyiPE,645
56
- 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
57
59
  datadog_checks/base/checks/openmetrics/v2/transformers/metadata.py,sha256=BpsJN1D9Jy94uxLe7kpHL14ELdlhUwyTml5R89MAOuo,1043
58
60
  datadog_checks/base/checks/openmetrics/v2/transformers/rate.py,sha256=e-t17cFCsAKnfXgQrdUh95w0lsly3iuA02MizGP_ocM,521
59
- 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
60
62
  datadog_checks/base/checks/openmetrics/v2/transformers/summary.py,sha256=0B1Wk7ea4H2nfdsOX8oQEiooBGNqypFDcjBPKjHVtS4,1586
61
- datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py,sha256=wCqOqXGoVQ3lyZBm_ATngwpvIdgcfOkF_1lGE5fohiU,1933
62
- 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
63
65
  datadog_checks/base/checks/prometheus/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
64
66
  datadog_checks/base/checks/prometheus/__init__.pyi,sha256=gLe9ktvTHnk2TJtZIFQ5mRdQk3ds5-zhH17h8GKQVog,403
65
- datadog_checks/base/checks/prometheus/base_check.py,sha256=ElAlJQ26sJd3bAKMDXQFs2-pI0MlLPizeB44FuAn6SQ,8384
66
- datadog_checks/base/checks/prometheus/mixins.py,sha256=ZWXP0M7onafgXjUTGgQG9lyWhxzU68DcgYMTMJnNUuY,33754
67
- 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
68
70
  datadog_checks/base/checks/win/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
69
71
  datadog_checks/base/checks/win/__init__.pyi,sha256=9c7eiwszs-9Cv0S_v6r75jH_2PULjGTVpYt58kb3l0k,232
70
72
  datadog_checks/base/checks/win/winpdh.py,sha256=ihF4BB1_3EoWvFTCAZ4TMQSOLaWlv1nWM8AAqlthBa4,11280
71
- 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
72
74
  datadog_checks/base/checks/win/winpdh_stub.py,sha256=M5fyBkzAuEKvoZrG9ktQapwkH_7K-KOIYF5VpS83LMk,391
73
75
  datadog_checks/base/checks/win/wmi/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
74
76
  datadog_checks/base/checks/win/wmi/__init__.pyi,sha256=2lgW_cDX36mGgwjBQ4jcUUkD4pIN73QfXvlPO7oK-X8,594
75
- 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
76
78
  datadog_checks/base/checks/win/wmi/counter_type.py,sha256=7772XGtWyPJXewyvaYyowVmDy9DxZ42ki9WD5XabuVE,5773
77
- datadog_checks/base/checks/win/wmi/sampler.py,sha256=sRwVtUud9ZmlA3XLoqTLmrfTslnqBz88TnAiPfCMpYQ,23499
79
+ datadog_checks/base/checks/win/wmi/sampler.py,sha256=NJlkALF8y1khAWRocpbH2LpwxtQb2F8fzBhCavvRX4w,23490
78
80
  datadog_checks/base/checks/win/wmi/types.py,sha256=4E8e1ypp2P-eOxgLsRrftlauqvapWCuVaAPocqCrwVg,412
79
81
  datadog_checks/base/checks/windows/__init__.py,sha256=suGjLrhZGp1UGpNapcVvIPp-u8PeaM8k3zplAZjycSo,115
80
82
  datadog_checks/base/checks/windows/perf_counters/__init__.py,sha256=xM7W2r2ht-Kx_j0i8Duue_lEM2Bv_bq3vg0Es0AJ5KE,155
81
- datadog_checks/base/checks/windows/perf_counters/base.py,sha256=IJynzH9t2UQwkDT5gbkWNabIX_nZXM_JLShEvhfmkLU,7862
82
- 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
83
85
  datadog_checks/base/checks/windows/perf_counters/constants.py,sha256=_aqAbatcu9eQv9NqbVCaQ9c5S-HkkiUERV5oqC3Dl5k,587
84
- 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
85
87
  datadog_checks/base/checks/windows/perf_counters/transform.py,sha256=bZPxftDw0d1VFX49yiFIa-naGOYlKcMgpvueSRkgEz8,770
86
88
  datadog_checks/base/checks/windows/perf_counters/utils.py,sha256=ov-48JNvZQ6KPEZxz6X0IYcAl3bVAFnM15-vlGfqsY0,4359
87
89
  datadog_checks/base/checks/windows/perf_counters/utils_win32pdh_fix.py,sha256=nWTrAbB9VAD_DaaTrSBV2KDmBvipGFmI04-wDfnxUa8,7122
@@ -90,15 +92,15 @@ datadog_checks/base/checks/windows/perf_counters/transformers/count.py,sha256=gm
90
92
  datadog_checks/base/checks/windows/perf_counters/transformers/gauge.py,sha256=c74fZS6FrdxDO6ZKovp17h2vhTImkaNR2OLes1r01oE,333
91
93
  datadog_checks/base/checks/windows/perf_counters/transformers/monotonic_count.py,sha256=R5wWfDG9LkcbqrIdSc6dzjRwtAcp2r4VPuVFaqOlzi0,393
92
94
  datadog_checks/base/checks/windows/perf_counters/transformers/rate.py,sha256=Pkxzl1XPbPto-5QriCojNh5WhMTjwDcQwqY_i2MQBS8,327
93
- datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py,sha256=wvdLDSuHHKInbzW8uM8Q92TcRUuQl11wsvt0dSZtrHA,2187
94
- datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py,sha256=IHH2YTOGeei2PVN5Ch998gDqYg-s1JObv9a0TmAvOnU,1844
95
- 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
96
98
  datadog_checks/base/stubs/__init__.py,sha256=wpWAR9v7BiTbbmTO6pVpshqa_z-PWaYTr33wSTZLz3c,272
97
99
  datadog_checks/base/stubs/_util.py,sha256=ZDGtQa8F3cHf8-QvSVHMB4BGI3C9VgC7sGcGGvO0apI,1268
98
- datadog_checks/base/stubs/aggregator.py,sha256=iPEnNAsFeQ1_i6RwyjWKKGUGj2aoRccWJ9UEw28lsiU,24645
100
+ datadog_checks/base/stubs/aggregator.py,sha256=bp4Z6UmwMcBpIdrUQgvTqNwO0gtNd5ogkBfm3Yr0-oo,25356
99
101
  datadog_checks/base/stubs/common.py,sha256=ZGzF2dXy1uVFQGdG_bvz_pMMiULaBcpzra_k9wo9f04,1088
100
- datadog_checks/base/stubs/datadog_agent.py,sha256=zhKqluf_0WPIAm_GxJyz6A9JFw9Aoe1OsrjIAcEWdrg,5942
101
- 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
102
104
  datadog_checks/base/stubs/similar.py,sha256=3HO9htx9LV6pRaE1ZGKsPExavTbjPHPK6ZMM2BPYj3Y,8045
103
105
  datadog_checks/base/stubs/tagging.py,sha256=zxLdPC4EqHxGiS_HEhbaOsL_s5nZIhN8BDkx2BATOqs,1439
104
106
  datadog_checks/base/utils/__init__.py,sha256=TC0q7iCbNqcYjfU5azBNpCni8LAQYOfY6FADE3SZEPA,115
@@ -112,19 +114,18 @@ datadog_checks/base/utils/diagnose.py,sha256=eLMe0tISpkzS3yxVR83IHxorQJfHT_Xi6Cq
112
114
  datadog_checks/base/utils/fips.py,sha256=vxm3K7wTQKYenP1LbXk7pmJ8WA6l367BTJGBNO0DkvQ,2490
113
115
  datadog_checks/base/utils/functions.py,sha256=iGlybxR6aPPElNxNb2ELOzbk328j9OVBAxredJxdCRw,695
114
116
  datadog_checks/base/utils/headers.py,sha256=0SSdC71jwaB61BODfusahCVr1c56GvT9iwt7cidcHP0,1779
115
- datadog_checks/base/utils/http.py,sha256=RIYbrba5brj_mRK-GJL6GI3Af0FmkA9FZ1-C8yxGOBY,40043
117
+ datadog_checks/base/utils/http.py,sha256=ePSzL7x_xsb1dnXJyU2fBXIgOU0p5UFZIpG2AX_jZZA,44651
116
118
  datadog_checks/base/utils/limiter.py,sha256=YRTrPCX1S5EtHLVcP_-GEfzRots_LTcy1f_uHZVs90g,3027
117
- datadog_checks/base/utils/network.py,sha256=YXo9JQgWUtFn4dFefWZap20OMmSReLSPOjgzodJbddw,1814
118
119
  datadog_checks/base/utils/platform.py,sha256=wW8f6XKo4JHxvu1sN0DpLDmYjS_cCu8GoKvfTjIj4yM,2499
119
120
  datadog_checks/base/utils/secrets.py,sha256=Tj5MBOoyGXXDWB3Hr-7UKDy5GV1NZJkFPY4T4v9PHHg,551
120
121
  datadog_checks/base/utils/serialization.py,sha256=pcRUzZIUZkOsfnGDGbxeUwGXrSsFl_9rLhA0ekD_AZ8,975
121
- datadog_checks/base/utils/subprocess_output.py,sha256=2mUdPToJfbzcgW_17CyL-HmX4SW1wxs_q2QxMYlyESA,2577
122
- datadog_checks/base/utils/tagging.py,sha256=AEUEGIxJjNvoOIEQQFkit8ZT2OyRxiym1FzCEicICss,394
123
- 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
124
125
  datadog_checks/base/utils/time.py,sha256=cNy7CtsJzSUMi7J-3WReZVUvNyYOGkJwItqJMY01qqA,1373
125
126
  datadog_checks/base/utils/timeout.py,sha256=eOBZofFN-hOu5xJeMOF3ac_ofcy9EY6-kvmBvP4QEFg,2140
126
- datadog_checks/base/utils/tls.py,sha256=m_puDc6JGhVqJ0ADqeA736H05DuaNKrLAE9pPMUJCDo,5700
127
- 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
128
129
  datadog_checks/base/utils/tracking.py,sha256=FYIouqu3KB-JsxgxM1iX5Ipv_cWhs8zQOTN4SxXOkJ4,3701
129
130
  datadog_checks/base/utils/agent/__init__.py,sha256=o3aWvy3PhykD_h7YT3s628O0W2YpHis0NlQsSV1PI04,115
130
131
  datadog_checks/base/utils/agent/common.py,sha256=1XRsPJWdpmbxAKKBVHGBPUm4WHdviq0ovuggtpx7LWo,217
@@ -136,15 +137,15 @@ datadog_checks/base/utils/concurrency/__init__.py,sha256=ORssE5bXZuYua5UCLesGfPv
136
137
  datadog_checks/base/utils/concurrency/limiter.py,sha256=is2ZpUEjfsI4nBGtXG2D0Zgv0GD38_i5jJQCkdzPW_Y,3170
137
138
  datadog_checks/base/utils/db/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
138
139
  datadog_checks/base/utils/db/__init__.pyi,sha256=ewmGxxyJ52wAaYxNZahi2koEUnddfvHcn3HYxQ3RUr0,240
139
- datadog_checks/base/utils/db/core.py,sha256=sVHdY5Z0dx6UM6IWZwB70HxiWDITNE26RjffwLKs9JA,11124
140
- 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
141
142
  datadog_checks/base/utils/db/sql.py,sha256=oiEzQa_vC_w3U65VFrFCoQHWj5GQLLRlSO0CfiSlp4A,2490
142
143
  datadog_checks/base/utils/db/sql_commenter.py,sha256=r_efK6TGRQxM_-Qj-ndEJdECk47J4nCFjkVyxu1XmvU,1522
143
144
  datadog_checks/base/utils/db/statement_metrics.py,sha256=U7EtERkmFzfCtfyd3094fBaKQ-CuJxoRt-3AcDBCkIA,7087
144
145
  datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
145
- datadog_checks/base/utils/db/transform.py,sha256=kNdiBZVoZm1oNRNWIatrAfgORjbkRKhs1AgW_aQCj3I,23879
146
+ datadog_checks/base/utils/db/transform.py,sha256=H3JN8_MF0Pk0HaXvIZeX1A8iQrP8KBgS741MPeBiWDo,23969
146
147
  datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
147
- 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
148
149
  datadog_checks/base/utils/discovery/__init__.py,sha256=vPCOdsThBcBjFJRPhDm6IsZGOwk8HlvciwCe_l8dKLk,211
149
150
  datadog_checks/base/utils/discovery/__init__.pyi,sha256=ScVLU1Njj9ekZmewltb0cULI6BylssVHfn4CcPNeyr8,173
150
151
  datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
@@ -156,9 +157,9 @@ datadog_checks/base/utils/format/json.py,sha256=Gy84c9l0zOy731qCDiy21HphZiC3w2wS
156
157
  datadog_checks/base/utils/metadata/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
157
158
  datadog_checks/base/utils/metadata/__init__.pyi,sha256=WVov07aPKEdydcy8e5Ahd9CMT_DcQxiOtCqjGx1kSf4,180
158
159
  datadog_checks/base/utils/metadata/constants.py,sha256=XHfPwvQMbyNE2FYmB_7XyWiGI0N2GxdBXbtXL4eDnic,464
159
- datadog_checks/base/utils/metadata/core.py,sha256=Oska0abZ0CedrMBGcuauJaqrSTfM9jaQNBXcdGCtGeI,4953
160
+ datadog_checks/base/utils/metadata/core.py,sha256=7rIKrfw1lNAocO9HBd2M6_g-cKEP2vmYOOPO6OkmuTk,4977
160
161
  datadog_checks/base/utils/metadata/utils.py,sha256=03VpRqefooCt0VEAi9BvolZD3m3-uhT2r2QuJ2xc4D4,330
161
- datadog_checks/base/utils/metadata/version.py,sha256=cle8LHwqcu42TqFKJGJdFtHAmOeitCOizjTNQ2BsxTQ,1932
162
+ datadog_checks/base/utils/metadata/version.py,sha256=rQ6_aHprA4dTCkeUMwbdBNvwSOlpOF7632sW264sdbs,1956
162
163
  datadog_checks/base/utils/models/__init__.py,sha256=suGjLrhZGp1UGpNapcVvIPp-u8PeaM8k3zplAZjycSo,115
163
164
  datadog_checks/base/utils/models/types.py,sha256=ybUEp9z_rDlr2-oIkVjEWB-mRAvUwoEDpAUcZQTEIIw,400
164
165
  datadog_checks/base/utils/models/validation/__init__.py,sha256=aZVX38W1pkLHk7koHgK5Jn2POCT5QKKPGzW_w9Lggto,141
@@ -167,11 +168,11 @@ datadog_checks/base/utils/models/validation/utils.py,sha256=dIrRg8h5Xuk-QDsIyJKF
167
168
  datadog_checks/base/utils/prometheus/__init__.py,sha256=pNLX20kXJrtQDIhFD6jnnIE18vF19MdAKAm34aOlg7w,205
168
169
  datadog_checks/base/utils/prometheus/__init__.pyi,sha256=53Ssj7fP-yyvYk85kOebUX5Ie-bmHjH-bVKYn9X47Wc,193
169
170
  datadog_checks/base/utils/prometheus/functions.py,sha256=xnTyg9iTes_83mWlc1Gs8FFQ1jSRY-lLPo5TCAFibys,1054
170
- 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
171
172
  datadog_checks/base/utils/replay/__init__.py,sha256=ORssE5bXZuYua5UCLesGfPvcrQKcADHaDsXrUyfARF0,115
172
173
  datadog_checks/base/utils/replay/constants.py,sha256=exDGsDgLI7u1GWveelXdgzWJTjxHoYJmQT7o7w1FCeM,659
173
- datadog_checks/base/utils/replay/execute.py,sha256=a78xng5qQyhYyD7g0vzwL3Zzw9slXwpphsVwqjFdfu4,3237
174
- 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
175
176
  datadog_checks/checks/__init__.py,sha256=djgfqnKs_OaGMDFQGlO5VdLQRxUAI-X4KEJLLlPpVIM,217
176
177
  datadog_checks/checks/base.py,sha256=3wYbhugNA3Wlrt_-EEpBmJSSl8lHKuUtrRP-nV2KBfQ,161
177
178
  datadog_checks/checks/network.py,sha256=5bfRHxmsUoaJclnCrB6CCe577pTfGZ1RVeGxdMzmr7w,189
@@ -184,7 +185,7 @@ datadog_checks/checks/libs/vmware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
184
185
  datadog_checks/checks/libs/vmware/all_metrics.py,sha256=hJyiC_07hqqMjuuIcytAJv2KDnSgqWq2y-JpJwtxqMM,176
185
186
  datadog_checks/checks/libs/vmware/basic_metrics.py,sha256=aDr0FNObjXfWb9lxRpmd5L16e-mrk07ZIkhnoLdMCZ8,178
186
187
  datadog_checks/checks/libs/wmi/__init__.py,sha256=IwDDEDhDqPPU1j4PyveGkdu1CMv9kbfeK90IAvmBx3c,239
187
- datadog_checks/checks/libs/wmi/sampler.py,sha256=VTEKi_-0tVr5VSJo5ifIPChNtVyZxH91T6BeW7M8zTs,1152
188
+ datadog_checks/checks/libs/wmi/sampler.py,sha256=48mB0zKJxVraJJq-tRscUJXAbLEbmZH5pCKKaVJR5FU,1153
188
189
  datadog_checks/checks/openmetrics/__init__.py,sha256=lrkQscNZoLN6CodTtuHlDIA641v08eejFBhnjPFnksA,169
189
190
  datadog_checks/checks/openmetrics/base_check.py,sha256=qczSEzuqEFj3ROSU4rtDy1Ih-7tBtsO4oFU-rX9qhR8,180
190
191
  datadog_checks/checks/openmetrics/mixins.py,sha256=tbnPnXfI3abXUqTTfTA0BfoZNawHGxek6LBVFgt9Kig,176
@@ -218,6 +219,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
218
219
  datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
219
220
  datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
220
221
  datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
221
- datadog_checks_base-37.15.0.dist-info/METADATA,sha256=CUQ731u-GuA4NgGfXFBBLL5wAjuvDdbsqIC3SYgbT34,4245
222
- datadog_checks_base-37.15.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
223
- datadog_checks_base-37.15.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)