datadog-checks-base 37.20.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.
@@ -1,4 +1,4 @@
1
1
  # (C) Datadog, Inc. 2018-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
- __version__ = "37.20.0"
4
+ __version__ = "37.21.0"
@@ -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']
@@ -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 AgentCheck
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: AgentCheck):
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datadog-checks-base
3
- Version: 37.20.0
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.12
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'
@@ -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=hXkLHsKgHttGQ7R5jeQ0cESbDNRVE8U1W-La8t1CUAw,139
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=eH8XhrtvnD6uE6FWfEyCmKwOaaLJxNolS08D6IRHZuU,995
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=LASfm-daLNQIYe6-w0NPqBw4cl83nYIX5_B-VhV6ARo,262
16
+ datadog_checks/base/checks/__init__.pyi,sha256=ydetl6kEFCSChppYQhs8mvIP5l6vnZD5AbLABGhbFcM,309
17
17
  datadog_checks/base/checks/_config_ast.py,sha256=v1rAhwORF80b3kfZKhf6zXZ7S5D3A2QPUK4tSo8eo-Y,3268
18
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
@@ -139,7 +140,7 @@ datadog_checks/base/utils/concurrency/limiter.py,sha256=is2ZpUEjfsI4nBGtXG2D0Zgv
139
140
  datadog_checks/base/utils/db/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
140
141
  datadog_checks/base/utils/db/__init__.pyi,sha256=ewmGxxyJ52wAaYxNZahi2koEUnddfvHcn3HYxQ3RUr0,240
141
142
  datadog_checks/base/utils/db/core.py,sha256=bYanwXIqBzsSxK7b-Ofb0W1WiHbFBtKyYdUBonBLe_Q,11165
142
- datadog_checks/base/utils/db/health.py,sha256=OWdhGSUhEr8Rxr6anVxD__52wkG8kDaY7M015Y4fCkA,2361
143
+ datadog_checks/base/utils/db/health.py,sha256=rdcZPdlLMT4g9tepkietuViKtmP4gwPsjMGCvqC5s54,2366
143
144
  datadog_checks/base/utils/db/query.py,sha256=-PyxdqpbShkQ78h7sWnghQZVtjdLGVrm71n8OpHuPW4,14432
144
145
  datadog_checks/base/utils/db/sql.py,sha256=oiEzQa_vC_w3U65VFrFCoQHWj5GQLLRlSO0CfiSlp4A,2490
145
146
  datadog_checks/base/utils/db/sql_commenter.py,sha256=r_efK6TGRQxM_-Qj-ndEJdECk47J4nCFjkVyxu1XmvU,1522
@@ -147,7 +148,7 @@ datadog_checks/base/utils/db/statement_metrics.py,sha256=U7EtERkmFzfCtfyd3094fBa
147
148
  datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
148
149
  datadog_checks/base/utils/db/transform.py,sha256=H3JN8_MF0Pk0HaXvIZeX1A8iQrP8KBgS741MPeBiWDo,23969
149
150
  datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
150
- datadog_checks/base/utils/db/utils.py,sha256=6rYXjV9I7Hr_PhgkvhbTiZ0QCmyHWoZYETeUD4Qe3Js,22441
151
+ datadog_checks/base/utils/db/utils.py,sha256=g6GAG1OGvo4O-GrTB6nETvUZGfVUSpqYYJMBuhLs2pM,23130
151
152
  datadog_checks/base/utils/discovery/__init__.py,sha256=vPCOdsThBcBjFJRPhDm6IsZGOwk8HlvciwCe_l8dKLk,211
152
153
  datadog_checks/base/utils/discovery/__init__.pyi,sha256=ScVLU1Njj9ekZmewltb0cULI6BylssVHfn4CcPNeyr8,173
153
154
  datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
@@ -221,6 +222,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
221
222
  datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
222
223
  datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
223
224
  datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
224
- datadog_checks_base-37.20.0.dist-info/METADATA,sha256=Btd945pDmErXUpZ1MdzT1T8BWpedTQU4xKyl9XsHOA8,4245
225
- datadog_checks_base-37.20.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
226
- datadog_checks_base-37.20.0.dist-info/RECORD,,
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,,