datadog-checks-base 37.19.0__py2.py3-none-any.whl → 37.21.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datadog_checks/base/__about__.py +1 -1
- datadog_checks/base/__init__.pyi +2 -1
- datadog_checks/base/checks/__init__.pyi +2 -1
- datadog_checks/base/checks/base.py +41 -27
- datadog_checks/base/checks/db.py +22 -0
- datadog_checks/base/utils/db/health.py +2 -3
- datadog_checks/base/utils/db/utils.py +16 -6
- datadog_checks/base/utils/persistent_cache.py +33 -0
- {datadog_checks_base-37.19.0.dist-info → datadog_checks_base-37.21.0.dist-info}/METADATA +3 -3
- {datadog_checks_base-37.19.0.dist-info → datadog_checks_base-37.21.0.dist-info}/RECORD +11 -9
- {datadog_checks_base-37.19.0.dist-info → datadog_checks_base-37.21.0.dist-info}/WHEEL +0 -0
datadog_checks/base/__about__.py
CHANGED
datadog_checks/base/__init__.pyi
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
4
|
from .__about__ import __version__
|
|
5
5
|
from .agent import datadog_agent
|
|
6
|
-
from .checks import AgentCheck
|
|
6
|
+
from .checks import AgentCheck, DatabaseCheck
|
|
7
7
|
from .checks.kube_leader import KubeLeaderElectionBaseCheck
|
|
8
8
|
from .checks.openmetrics import OpenMetricsBaseCheck
|
|
9
9
|
from .checks.openmetrics.v2.base import OpenMetricsBaseCheckV2
|
|
@@ -16,6 +16,7 @@ from .utils.common import ensure_bytes, ensure_unicode, to_native_string, to_str
|
|
|
16
16
|
__all__ = [
|
|
17
17
|
'__version__',
|
|
18
18
|
'AgentCheck',
|
|
19
|
+
'DatabaseCheck',
|
|
19
20
|
'ConfigurationError',
|
|
20
21
|
'KubeLeaderElectionBaseCheck',
|
|
21
22
|
'OpenMetricsBaseCheck',
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# All rights reserved
|
|
3
3
|
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
4
|
from .base import AgentCheck
|
|
5
|
+
from .db import DatabaseCheck
|
|
5
6
|
from .network import EventType, NetworkCheck, Status
|
|
6
7
|
|
|
7
|
-
__all__ = ['AgentCheck', 'EventType', 'NetworkCheck', 'Status']
|
|
8
|
+
__all__ = ['AgentCheck', 'DatabaseCheck', 'EventType', 'NetworkCheck', 'Status']
|
|
@@ -11,19 +11,10 @@ import os
|
|
|
11
11
|
import re
|
|
12
12
|
from collections import deque
|
|
13
13
|
from os.path import basename
|
|
14
|
-
from typing import (
|
|
14
|
+
from typing import (
|
|
15
15
|
TYPE_CHECKING,
|
|
16
16
|
Any,
|
|
17
|
-
|
|
18
|
-
Callable,
|
|
19
|
-
Deque,
|
|
20
|
-
Dict,
|
|
21
|
-
List,
|
|
22
|
-
Optional,
|
|
23
|
-
Sequence,
|
|
24
|
-
Set,
|
|
25
|
-
Tuple,
|
|
26
|
-
Union,
|
|
17
|
+
Deque, # noqa: F401
|
|
27
18
|
)
|
|
28
19
|
|
|
29
20
|
import lazy_loader
|
|
@@ -294,10 +285,16 @@ class AgentCheck(object):
|
|
|
294
285
|
# Functions that will be called exactly once (if successful) before the first check run
|
|
295
286
|
self.check_initializations = deque() # type: Deque[Callable[[], None]]
|
|
296
287
|
|
|
297
|
-
self.check_initializations.
|
|
288
|
+
self.check_initializations.extend(
|
|
289
|
+
[
|
|
290
|
+
self.load_configuration_models,
|
|
291
|
+
self.__initialize_persistent_cache_key_prefix,
|
|
292
|
+
]
|
|
293
|
+
)
|
|
298
294
|
|
|
299
295
|
self.__formatted_tags = None
|
|
300
296
|
self.__logs_enabled = None
|
|
297
|
+
self.__persistent_cache_key_prefix: str = ""
|
|
301
298
|
|
|
302
299
|
if os.environ.get("GOFIPS", "0") == "1":
|
|
303
300
|
enable_fips()
|
|
@@ -491,6 +488,18 @@ class AgentCheck(object):
|
|
|
491
488
|
self._log_deprecation('in_developer_mode')
|
|
492
489
|
return False
|
|
493
490
|
|
|
491
|
+
def persistent_cache_id(self) -> str:
|
|
492
|
+
"""
|
|
493
|
+
Returns the ID that identifies this check instance in the Agent persistent cache.
|
|
494
|
+
|
|
495
|
+
Overriding this method modifies the default behavior of the AgentCheck and can
|
|
496
|
+
be used to customize when the persistent cache is invalidated. The default behavior
|
|
497
|
+
defines the persistent cache ID as the digest of the full check configuration.
|
|
498
|
+
|
|
499
|
+
Some per-check isolation is still applied to avoid different checks with the same ID to share the same keys.
|
|
500
|
+
"""
|
|
501
|
+
return self.check_id.split(":")[-1]
|
|
502
|
+
|
|
494
503
|
def log_typos_in_options(self, user_config, models_config, level):
|
|
495
504
|
# See Performance Optimizations in this package's README.md.
|
|
496
505
|
from jellyfish import jaro_winkler_similarity
|
|
@@ -1009,13 +1018,15 @@ class AgentCheck(object):
|
|
|
1009
1018
|
attributes['timestamp'] = int(timestamp * 1000)
|
|
1010
1019
|
|
|
1011
1020
|
datadog_agent.send_log(json.encode(attributes), self.check_id)
|
|
1021
|
+
|
|
1012
1022
|
if cursor is not None:
|
|
1013
|
-
self.write_persistent_cache('log_cursor_{}'
|
|
1023
|
+
self.write_persistent_cache(f'log_cursor_{stream}', json.encode(cursor))
|
|
1014
1024
|
|
|
1015
1025
|
def get_log_cursor(self, stream='default'):
|
|
1016
1026
|
# type: (str) -> dict[str, Any] | None
|
|
1017
1027
|
"""Returns the most recent log cursor from disk."""
|
|
1018
|
-
data = self.read_persistent_cache('log_cursor_{}'
|
|
1028
|
+
data = self.read_persistent_cache(f'log_cursor_{stream}')
|
|
1029
|
+
|
|
1019
1030
|
return json.decode(data) if data else None
|
|
1020
1031
|
|
|
1021
1032
|
def _log_deprecation(self, deprecation_key, *args):
|
|
@@ -1082,9 +1093,9 @@ class AgentCheck(object):
|
|
|
1082
1093
|
|
|
1083
1094
|
return entrypoint
|
|
1084
1095
|
|
|
1085
|
-
def
|
|
1086
|
-
|
|
1087
|
-
|
|
1096
|
+
def __initialize_persistent_cache_key_prefix(self):
|
|
1097
|
+
namespace = ':'.join(self.check_id.split(':')[:-1])
|
|
1098
|
+
self.__persistent_cache_key_prefix = f'{namespace}:{self.persistent_cache_id()}_'
|
|
1088
1099
|
|
|
1089
1100
|
def read_persistent_cache(self, key):
|
|
1090
1101
|
# type: (str) -> str
|
|
@@ -1094,9 +1105,9 @@ class AgentCheck(object):
|
|
|
1094
1105
|
key (str):
|
|
1095
1106
|
the key to retrieve
|
|
1096
1107
|
"""
|
|
1097
|
-
return datadog_agent.read_persistent_cache(self.
|
|
1108
|
+
return datadog_agent.read_persistent_cache(f"{self.__persistent_cache_key_prefix}{key}")
|
|
1098
1109
|
|
|
1099
|
-
def write_persistent_cache(self, key, value):
|
|
1110
|
+
def write_persistent_cache(self, key: str, value: str):
|
|
1100
1111
|
# type: (str, str) -> None
|
|
1101
1112
|
"""Stores `value` in a persistent cache for this check instance.
|
|
1102
1113
|
The cache is located in a path where the agent is guaranteed to have read & write permissions. Namely in
|
|
@@ -1110,7 +1121,7 @@ class AgentCheck(object):
|
|
|
1110
1121
|
value (str):
|
|
1111
1122
|
the value to store
|
|
1112
1123
|
"""
|
|
1113
|
-
datadog_agent.write_persistent_cache(self.
|
|
1124
|
+
datadog_agent.write_persistent_cache(f"{self.__persistent_cache_key_prefix}{key}", value)
|
|
1114
1125
|
|
|
1115
1126
|
def set_external_tags(self, external_tags):
|
|
1116
1127
|
# type: (Sequence[ExternalTagType]) -> None
|
|
@@ -1282,13 +1293,7 @@ class AgentCheck(object):
|
|
|
1282
1293
|
|
|
1283
1294
|
run_with_isolation(self, aggregator, datadog_agent)
|
|
1284
1295
|
else:
|
|
1285
|
-
|
|
1286
|
-
initialization = self.check_initializations.popleft()
|
|
1287
|
-
try:
|
|
1288
|
-
initialization()
|
|
1289
|
-
except Exception:
|
|
1290
|
-
self.check_initializations.appendleft(initialization)
|
|
1291
|
-
raise
|
|
1296
|
+
self.run_check_initializations()
|
|
1292
1297
|
|
|
1293
1298
|
instance = copy.deepcopy(self.instances[0])
|
|
1294
1299
|
|
|
@@ -1328,6 +1333,15 @@ class AgentCheck(object):
|
|
|
1328
1333
|
|
|
1329
1334
|
return error_report
|
|
1330
1335
|
|
|
1336
|
+
def run_check_initializations(self):
|
|
1337
|
+
while self.check_initializations:
|
|
1338
|
+
initialization = self.check_initializations.popleft()
|
|
1339
|
+
try:
|
|
1340
|
+
initialization()
|
|
1341
|
+
except Exception:
|
|
1342
|
+
self.check_initializations.appendleft(initialization)
|
|
1343
|
+
raise
|
|
1344
|
+
|
|
1331
1345
|
def event(self, event):
|
|
1332
1346
|
# type: (Event) -> None
|
|
1333
1347
|
"""Send an event.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# (C) Datadog, Inc. 2025-present
|
|
2
|
+
# All rights reserved
|
|
3
|
+
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
|
+
|
|
5
|
+
from . import AgentCheck
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DatabaseCheck(AgentCheck):
|
|
9
|
+
def database_monitoring_query_sample(self, raw_event: str):
|
|
10
|
+
self.event_platform_event(raw_event, "dbm-samples")
|
|
11
|
+
|
|
12
|
+
def database_monitoring_query_metrics(self, raw_event: str):
|
|
13
|
+
self.event_platform_event(raw_event, "dbm-metrics")
|
|
14
|
+
|
|
15
|
+
def database_monitoring_query_activity(self, raw_event: str):
|
|
16
|
+
self.event_platform_event(raw_event, "dbm-activity")
|
|
17
|
+
|
|
18
|
+
def database_monitoring_metadata(self, raw_event: str):
|
|
19
|
+
self.event_platform_event(raw_event, "dbm-metadata")
|
|
20
|
+
|
|
21
|
+
def database_monitoring_health(self, raw_event: str):
|
|
22
|
+
self.event_platform_event(raw_event, "dbm-health")
|
|
@@ -12,8 +12,7 @@ from typing import TYPE_CHECKING
|
|
|
12
12
|
from datadog_checks.base.utils.serialization import json
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
|
-
from datadog_checks.base import
|
|
16
|
-
|
|
15
|
+
from datadog_checks.base import DatabaseCheck
|
|
17
16
|
try:
|
|
18
17
|
import datadog_agent
|
|
19
18
|
except ImportError:
|
|
@@ -42,7 +41,7 @@ class HealthStatus(Enum):
|
|
|
42
41
|
|
|
43
42
|
|
|
44
43
|
class Health:
|
|
45
|
-
def __init__(self, check:
|
|
44
|
+
def __init__(self, check: DatabaseCheck):
|
|
46
45
|
"""
|
|
47
46
|
Initialize the HealthCheck instance.
|
|
48
47
|
|
|
@@ -471,12 +471,13 @@ class TagManager:
|
|
|
471
471
|
multiple times.
|
|
472
472
|
"""
|
|
473
473
|
|
|
474
|
-
def __init__(self) -> None:
|
|
474
|
+
def __init__(self, normalizer: Optional[Callable[[Union[str, bytes]], str]] = None) -> None:
|
|
475
475
|
self._tags: Dict[Union[str, TagType], List[str]] = {}
|
|
476
476
|
self._cached_tag_list: Optional[tuple[str, ...]] = None
|
|
477
477
|
self._keyless: TagType = TagType.KEYLESS
|
|
478
|
+
self._normalizer = normalizer
|
|
478
479
|
|
|
479
|
-
def set_tag(self, key: Optional[str], value: str, replace: bool = False) -> None:
|
|
480
|
+
def set_tag(self, key: Optional[str], value: str, replace: bool = False, normalize: bool = False) -> None:
|
|
480
481
|
"""
|
|
481
482
|
Set a tag with the given key and value.
|
|
482
483
|
If key is None or empty, the value is stored as a keyless tag.
|
|
@@ -485,7 +486,11 @@ class TagManager:
|
|
|
485
486
|
value (str): The tag value
|
|
486
487
|
replace (bool): If True, replaces all existing values for this key
|
|
487
488
|
If False, appends the value if it doesn't exist
|
|
489
|
+
normalize (bool): If True, applies tag normalization using the configured normalizer
|
|
488
490
|
"""
|
|
491
|
+
if normalize and self._normalizer:
|
|
492
|
+
value = self._normalizer(value)
|
|
493
|
+
|
|
489
494
|
if not key:
|
|
490
495
|
key = self._keyless
|
|
491
496
|
|
|
@@ -498,13 +503,14 @@ class TagManager:
|
|
|
498
503
|
# Invalidate the cache since tags have changed
|
|
499
504
|
self._cached_tag_list = None
|
|
500
505
|
|
|
501
|
-
def set_tags_from_list(self, tag_list: List[str], replace: bool = False) -> None:
|
|
506
|
+
def set_tags_from_list(self, tag_list: List[str], replace: bool = False, normalize: bool = False) -> None:
|
|
502
507
|
"""
|
|
503
508
|
Set multiple tags from a list of strings.
|
|
504
509
|
Strings can be in "key:value" format or just "value" format.
|
|
505
510
|
Args:
|
|
506
511
|
tag_list (List[str]): List of tags in "key:value" format or just "value"
|
|
507
512
|
replace (bool): If True, replaces all existing tags with the new tags list
|
|
513
|
+
normalize (bool): If True, applies tag normalization using the configured normalizer
|
|
508
514
|
"""
|
|
509
515
|
if replace:
|
|
510
516
|
self._tags.clear()
|
|
@@ -513,11 +519,11 @@ class TagManager:
|
|
|
513
519
|
for tag in tag_list:
|
|
514
520
|
if ':' in tag:
|
|
515
521
|
key, value = tag.split(':', 1)
|
|
516
|
-
self.set_tag(key, value)
|
|
522
|
+
self.set_tag(key, value, normalize=normalize)
|
|
517
523
|
else:
|
|
518
|
-
self.set_tag(None, tag)
|
|
524
|
+
self.set_tag(None, tag, normalize=normalize)
|
|
519
525
|
|
|
520
|
-
def delete_tag(self, key: Optional[str], value: Optional[str] = None) -> bool:
|
|
526
|
+
def delete_tag(self, key: Optional[str], value: Optional[str] = None, normalize: bool = False) -> bool:
|
|
521
527
|
"""
|
|
522
528
|
Delete a tag or specific value for a tag.
|
|
523
529
|
For keyless tags, use None or empty string as the key.
|
|
@@ -525,9 +531,13 @@ class TagManager:
|
|
|
525
531
|
key (str): The tag key to delete, or None/empty for keyless tags
|
|
526
532
|
value (str, optional): If provided, only deletes this specific value for the key.
|
|
527
533
|
If None, deletes all values for the key.
|
|
534
|
+
normalize (bool): If True, applies tag normalization to the value for lookup
|
|
528
535
|
Returns:
|
|
529
536
|
bool: True if something was deleted, False otherwise
|
|
530
537
|
"""
|
|
538
|
+
if normalize and self._normalizer and value:
|
|
539
|
+
value = self._normalizer(value)
|
|
540
|
+
|
|
531
541
|
if not key:
|
|
532
542
|
key = self._keyless
|
|
533
543
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from collections.abc import Collection
|
|
2
|
+
|
|
3
|
+
from datadog_checks.base import AgentCheck
|
|
4
|
+
from datadog_checks.base.utils.containers import hash_mutable
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def config_set_persistent_cache_id(
|
|
8
|
+
check: AgentCheck,
|
|
9
|
+
init_config_options: Collection[str] | None = None,
|
|
10
|
+
instance_config_options: Collection[str] | None = None,
|
|
11
|
+
):
|
|
12
|
+
"""
|
|
13
|
+
Returns an ID for the persisitent cache derives from a subset of the check's config options.
|
|
14
|
+
|
|
15
|
+
If the value of any of the provided options changes, the generate cache ID will change.
|
|
16
|
+
|
|
17
|
+
Parameters:
|
|
18
|
+
check: the check instance the key is going to be used for.
|
|
19
|
+
init_config_options: the subset of init_config options to use to generate the cache ID.
|
|
20
|
+
instance_config_options: the subset of config options to use to generate the cache ID.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
if not init_config_options and not instance_config_options:
|
|
24
|
+
raise ValueError("At least one of init_config_options or instance_config_options must be provided")
|
|
25
|
+
|
|
26
|
+
set_init_config_options = set(init_config_options) if init_config_options else set()
|
|
27
|
+
set_instance_config_options = set(instance_config_options) if instance_config_options else set()
|
|
28
|
+
|
|
29
|
+
init_config_values = tuple(value for key, value in check.init_config.items() if key in set_init_config_options)
|
|
30
|
+
instance_config_values = tuple(value for key, value in check.instance.items() if key in set_instance_config_options)
|
|
31
|
+
|
|
32
|
+
selected_values = init_config_values + instance_config_values
|
|
33
|
+
return str(hash_mutable(selected_values)).replace("-", "")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datadog-checks-base
|
|
3
|
-
Version: 37.
|
|
3
|
+
Version: 37.21.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>
|
|
@@ -10,7 +10,7 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
11
|
Classifier: Intended Audience :: System Administrators
|
|
12
12
|
Classifier: License :: OSI Approved :: BSD License
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Classifier: Topic :: System :: Monitoring
|
|
15
15
|
Provides-Extra: db
|
|
16
16
|
Requires-Dist: mmh3==5.2.0; extra == 'db'
|
|
@@ -18,7 +18,7 @@ Provides-Extra: deps
|
|
|
18
18
|
Requires-Dist: binary==1.0.2; extra == 'deps'
|
|
19
19
|
Requires-Dist: cachetools==6.2.0; extra == 'deps'
|
|
20
20
|
Requires-Dist: cryptography==45.0.6; extra == 'deps'
|
|
21
|
-
Requires-Dist: ddtrace==3.12.
|
|
21
|
+
Requires-Dist: ddtrace==3.12.5; 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'
|
|
@@ -3,9 +3,9 @@ datadog_checks/config.py,sha256=PrAXGdlLnoV2VMQff_noSaSJJ0wg4BAiGnw7jCQLSik,196
|
|
|
3
3
|
datadog_checks/errors.py,sha256=eFwmnrX-batIgbu-iJyseqAPNO_4rk1UuaKK89evLhg,155
|
|
4
4
|
datadog_checks/log.py,sha256=orvOgMKGNEsqSTLalCAQpWP-ouorpG1A7Gn-j2mRD80,301
|
|
5
5
|
datadog_checks/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
6
|
-
datadog_checks/base/__about__.py,sha256=
|
|
6
|
+
datadog_checks/base/__about__.py,sha256=pvycJFU0hkYwQYew20pwmnwFDOFZoWPr3etBDGeoKzI,139
|
|
7
7
|
datadog_checks/base/__init__.py,sha256=yWegSLE-TZWIGSvAiJj9PSrUxzlOo_UVJLt2zORZ8Ek,363
|
|
8
|
-
datadog_checks/base/__init__.pyi,sha256=
|
|
8
|
+
datadog_checks/base/__init__.pyi,sha256=a4Y1JIcPJ8pz9tRkBAvjWdtvSQwZxbMZBuRmIiSs_4E,1031
|
|
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
|
|
@@ -13,9 +13,10 @@ datadog_checks/base/errors.py,sha256=fPcFaR3zHpSkMo8epvF3lRe9KrEnS8g4J0dXM_nvzsw
|
|
|
13
13
|
datadog_checks/base/log.py,sha256=gSfzYimmg0z3Dgmn8NpXuyMNjgXwmTbn0NcyUX8B1ls,6283
|
|
14
14
|
datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,1623
|
|
15
15
|
datadog_checks/base/checks/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
|
|
16
|
-
datadog_checks/base/checks/__init__.pyi,sha256=
|
|
16
|
+
datadog_checks/base/checks/__init__.pyi,sha256=ydetl6kEFCSChppYQhs8mvIP5l6vnZD5AbLABGhbFcM,309
|
|
17
17
|
datadog_checks/base/checks/_config_ast.py,sha256=v1rAhwORF80b3kfZKhf6zXZ7S5D3A2QPUK4tSo8eo-Y,3268
|
|
18
|
-
datadog_checks/base/checks/base.py,sha256=
|
|
18
|
+
datadog_checks/base/checks/base.py,sha256=xP56kjtCvW-CMWrdVN3ZC1yAhQr4jad9ORPDuOdz-eM,60654
|
|
19
|
+
datadog_checks/base/checks/db.py,sha256=HzEOH4uZaMDAaUTJYy0K5wV9FryNQDXsSMAOHXPVaf4,794
|
|
19
20
|
datadog_checks/base/checks/network.py,sha256=UkgqkVHaoX7Hqi0WKEx-TvaFiF6-37VyF9A3m2aSaJM,1966
|
|
20
21
|
datadog_checks/base/checks/kube_leader/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
|
|
21
22
|
datadog_checks/base/checks/kube_leader/__init__.pyi,sha256=UGDywoRwmCIz3Zii1uHsp7jiFGWRdn5fFMZZxgGGlQs,398
|
|
@@ -116,6 +117,7 @@ datadog_checks/base/utils/functions.py,sha256=iGlybxR6aPPElNxNb2ELOzbk328j9OVBAx
|
|
|
116
117
|
datadog_checks/base/utils/headers.py,sha256=0SSdC71jwaB61BODfusahCVr1c56GvT9iwt7cidcHP0,1779
|
|
117
118
|
datadog_checks/base/utils/http.py,sha256=ePSzL7x_xsb1dnXJyU2fBXIgOU0p5UFZIpG2AX_jZZA,44651
|
|
118
119
|
datadog_checks/base/utils/limiter.py,sha256=YRTrPCX1S5EtHLVcP_-GEfzRots_LTcy1f_uHZVs90g,3027
|
|
120
|
+
datadog_checks/base/utils/persistent_cache.py,sha256=i5I9BKIb5V2BFEs0sVTf8bBQUIH21G2nL_tRQHC9GMk,1538
|
|
119
121
|
datadog_checks/base/utils/platform.py,sha256=wW8f6XKo4JHxvu1sN0DpLDmYjS_cCu8GoKvfTjIj4yM,2499
|
|
120
122
|
datadog_checks/base/utils/secrets.py,sha256=Tj5MBOoyGXXDWB3Hr-7UKDy5GV1NZJkFPY4T4v9PHHg,551
|
|
121
123
|
datadog_checks/base/utils/serialization.py,sha256=pcRUzZIUZkOsfnGDGbxeUwGXrSsFl_9rLhA0ekD_AZ8,975
|
|
@@ -138,7 +140,7 @@ datadog_checks/base/utils/concurrency/limiter.py,sha256=is2ZpUEjfsI4nBGtXG2D0Zgv
|
|
|
138
140
|
datadog_checks/base/utils/db/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
|
|
139
141
|
datadog_checks/base/utils/db/__init__.pyi,sha256=ewmGxxyJ52wAaYxNZahi2koEUnddfvHcn3HYxQ3RUr0,240
|
|
140
142
|
datadog_checks/base/utils/db/core.py,sha256=bYanwXIqBzsSxK7b-Ofb0W1WiHbFBtKyYdUBonBLe_Q,11165
|
|
141
|
-
datadog_checks/base/utils/db/health.py,sha256=
|
|
143
|
+
datadog_checks/base/utils/db/health.py,sha256=rdcZPdlLMT4g9tepkietuViKtmP4gwPsjMGCvqC5s54,2366
|
|
142
144
|
datadog_checks/base/utils/db/query.py,sha256=-PyxdqpbShkQ78h7sWnghQZVtjdLGVrm71n8OpHuPW4,14432
|
|
143
145
|
datadog_checks/base/utils/db/sql.py,sha256=oiEzQa_vC_w3U65VFrFCoQHWj5GQLLRlSO0CfiSlp4A,2490
|
|
144
146
|
datadog_checks/base/utils/db/sql_commenter.py,sha256=r_efK6TGRQxM_-Qj-ndEJdECk47J4nCFjkVyxu1XmvU,1522
|
|
@@ -146,7 +148,7 @@ datadog_checks/base/utils/db/statement_metrics.py,sha256=U7EtERkmFzfCtfyd3094fBa
|
|
|
146
148
|
datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
|
|
147
149
|
datadog_checks/base/utils/db/transform.py,sha256=H3JN8_MF0Pk0HaXvIZeX1A8iQrP8KBgS741MPeBiWDo,23969
|
|
148
150
|
datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
|
|
149
|
-
datadog_checks/base/utils/db/utils.py,sha256=
|
|
151
|
+
datadog_checks/base/utils/db/utils.py,sha256=g6GAG1OGvo4O-GrTB6nETvUZGfVUSpqYYJMBuhLs2pM,23130
|
|
150
152
|
datadog_checks/base/utils/discovery/__init__.py,sha256=vPCOdsThBcBjFJRPhDm6IsZGOwk8HlvciwCe_l8dKLk,211
|
|
151
153
|
datadog_checks/base/utils/discovery/__init__.pyi,sha256=ScVLU1Njj9ekZmewltb0cULI6BylssVHfn4CcPNeyr8,173
|
|
152
154
|
datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
|
|
@@ -220,6 +222,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
|
|
|
220
222
|
datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
|
|
221
223
|
datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
|
|
222
224
|
datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
|
|
223
|
-
datadog_checks_base-37.
|
|
224
|
-
datadog_checks_base-37.
|
|
225
|
-
datadog_checks_base-37.
|
|
225
|
+
datadog_checks_base-37.21.0.dist-info/METADATA,sha256=RngK4W5OJrfoUb7udQ1t_kuEqdSP0_6Mk6FecbRTVyo,4245
|
|
226
|
+
datadog_checks_base-37.21.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
227
|
+
datadog_checks_base-37.21.0.dist-info/RECORD,,
|
|
File without changes
|