datadog-checks-base 37.5.0__tar.gz → 37.6.0__tar.gz

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 (370) hide show
  1. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/PKG-INFO +7 -7
  2. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/__about__.py +1 -1
  3. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/base.py +10 -0
  4. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/labels.py +57 -19
  5. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/scraper.py +37 -2
  6. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/pyproject.toml +6 -6
  7. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/logs/crawler/test_base.py +0 -1
  8. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_options.py +194 -0
  9. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/test_agent_check.py +21 -1
  10. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/.gitignore +0 -0
  11. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/README.md +0 -0
  12. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/__init__.py +0 -0
  13. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/__init__.py +0 -0
  14. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/agent.py +0 -0
  15. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/__init__.py +0 -0
  16. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/kube_leader/__init__.py +0 -0
  17. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/kube_leader/base_check.py +0 -0
  18. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/kube_leader/mixins.py +0 -0
  19. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/kube_leader/record.py +0 -0
  20. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/kubelet_base/__init__.py +0 -0
  21. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/kubelet_base/base.py +0 -0
  22. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/__init__.py +0 -0
  23. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/prometheus.py +0 -0
  24. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/thread_pool.py +0 -0
  25. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/timer.py +0 -0
  26. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/vmware/__init__.py +0 -0
  27. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/vmware/all_metrics.py +0 -0
  28. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/libs/vmware/basic_metrics.py +0 -0
  29. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/logs/__init__.py +0 -0
  30. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/logs/crawler/__init__.py +0 -0
  31. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/logs/crawler/base.py +0 -0
  32. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/logs/crawler/stream.py +0 -0
  33. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/network.py +0 -0
  34. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/__init__.py +0 -0
  35. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/base_check.py +0 -0
  36. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/mixins.py +0 -0
  37. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/__init__.py +0 -0
  38. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/base.py +0 -0
  39. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py +0 -0
  40. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/metrics.py +0 -0
  41. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transform.py +0 -0
  42. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/__init__.py +0 -0
  43. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/counter.py +0 -0
  44. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/counter_gauge.py +0 -0
  45. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/gauge.py +0 -0
  46. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py +0 -0
  47. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/metadata.py +0 -0
  48. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/rate.py +0 -0
  49. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py +0 -0
  50. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/summary.py +0 -0
  51. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py +0 -0
  52. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py +0 -0
  53. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/openmetrics/v2/utils.py +0 -0
  54. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/prometheus/__init__.py +0 -0
  55. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/prometheus/base_check.py +0 -0
  56. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/prometheus/mixins.py +0 -0
  57. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/prometheus/prometheus_base.py +0 -0
  58. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/__init__.py +0 -0
  59. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/winpdh.py +0 -0
  60. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/winpdh_base.py +0 -0
  61. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/winpdh_stub.py +0 -0
  62. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/wmi/__init__.py +0 -0
  63. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/wmi/counter_type.py +0 -0
  64. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/wmi/sampler.py +0 -0
  65. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/win/wmi/types.py +0 -0
  66. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/__init__.py +0 -0
  67. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/__init__.py +0 -0
  68. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/base.py +0 -0
  69. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/connection.py +0 -0
  70. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/constants.py +0 -0
  71. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/counter.py +0 -0
  72. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transform.py +0 -0
  73. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
  74. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/count.py +0 -0
  75. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/gauge.py +0 -0
  76. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/monotonic_count.py +0 -0
  77. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/rate.py +0 -0
  78. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py +0 -0
  79. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py +0 -0
  80. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py +0 -0
  81. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/utils.py +0 -0
  82. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/checks/windows/perf_counters/utils_win32pdh_fix.py +0 -0
  83. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/config.py +0 -0
  84. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/constants.py +0 -0
  85. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/ddyaml.py +0 -0
  86. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/errors.py +0 -0
  87. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/log.py +0 -0
  88. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/__init__.py +0 -0
  89. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/_util.py +0 -0
  90. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/aggregator.py +0 -0
  91. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/common.py +0 -0
  92. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/datadog_agent.py +0 -0
  93. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/log.py +0 -0
  94. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/similar.py +0 -0
  95. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/stubs/tagging.py +0 -0
  96. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/types.py +0 -0
  97. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/__init__.py +0 -0
  98. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/agent/__init__.py +0 -0
  99. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/agent/common.py +0 -0
  100. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/agent/debug.py +0 -0
  101. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/agent/memory.py +0 -0
  102. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/agent/packages.py +0 -0
  103. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/agent/utils.py +0 -0
  104. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/aws.py +0 -0
  105. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/common.py +0 -0
  106. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/concurrency/__init__.py +0 -0
  107. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/concurrency/limiter.py +0 -0
  108. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/constants.py +0 -0
  109. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/containers.py +0 -0
  110. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/date.py +0 -0
  111. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/__init__.py +0 -0
  112. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/core.py +0 -0
  113. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/query.py +0 -0
  114. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/sql.py +0 -0
  115. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/sql_commenter.py +0 -0
  116. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/statement_metrics.py +0 -0
  117. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/timed_cache.py +0 -0
  118. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/transform.py +0 -0
  119. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/types.py +0 -0
  120. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/db/utils.py +0 -0
  121. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/diagnose.py +0 -0
  122. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/discovery/__init__.py +0 -0
  123. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/discovery/cache.py +0 -0
  124. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/discovery/discovery.py +0 -0
  125. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/discovery/filter.py +0 -0
  126. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/fips.py +0 -0
  127. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/functions.py +0 -0
  128. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/headers.py +0 -0
  129. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/http.py +0 -0
  130. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/limiter.py +0 -0
  131. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/metadata/__init__.py +0 -0
  132. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/metadata/constants.py +0 -0
  133. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/metadata/core.py +0 -0
  134. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/metadata/utils.py +0 -0
  135. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/metadata/version.py +0 -0
  136. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/models/__init__.py +0 -0
  137. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/models/types.py +0 -0
  138. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/models/validation/__init__.py +0 -0
  139. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/models/validation/core.py +0 -0
  140. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/models/validation/utils.py +0 -0
  141. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/network.py +0 -0
  142. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/platform.py +0 -0
  143. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/prometheus/__init__.py +0 -0
  144. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/prometheus/functions.py +0 -0
  145. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/prometheus/metrics_pb2.py +0 -0
  146. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/replay/__init__.py +0 -0
  147. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/replay/constants.py +0 -0
  148. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/replay/execute.py +0 -0
  149. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/replay/redirect.py +0 -0
  150. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/secrets.py +0 -0
  151. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/serialization.py +0 -0
  152. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/subprocess_output.py +0 -0
  153. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/tagging.py +0 -0
  154. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/tailfile.py +0 -0
  155. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/time.py +0 -0
  156. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/timeout.py +0 -0
  157. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/tls.py +0 -0
  158. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/tracing.py +0 -0
  159. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/base/utils/tracking.py +0 -0
  160. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/__init__.py +0 -0
  161. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/base.py +0 -0
  162. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/__init__.py +0 -0
  163. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/thread_pool.py +0 -0
  164. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/timer.py +0 -0
  165. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/vmware/__init__.py +0 -0
  166. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/vmware/all_metrics.py +0 -0
  167. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/vmware/basic_metrics.py +0 -0
  168. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/wmi/__init__.py +0 -0
  169. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/libs/wmi/sampler.py +0 -0
  170. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/network.py +0 -0
  171. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/network_checks.py +0 -0
  172. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/openmetrics/__init__.py +0 -0
  173. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/openmetrics/base_check.py +0 -0
  174. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/openmetrics/mixins.py +0 -0
  175. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/prometheus/__init__.py +0 -0
  176. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/prometheus/base_check.py +0 -0
  177. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/prometheus/mixins.py +0 -0
  178. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/prometheus/prometheus_base.py +0 -0
  179. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/prometheus_check/__init__.py +0 -0
  180. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/__init__.py +0 -0
  181. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/winpdh.py +0 -0
  182. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/winpdh_base.py +0 -0
  183. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/winpdh_stub.py +0 -0
  184. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/wmi/__init__.py +0 -0
  185. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/wmi/counter_type.py +0 -0
  186. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/win/wmi/sampler.py +0 -0
  187. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/checks/winwmi_check.py +0 -0
  188. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/config.py +0 -0
  189. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/errors.py +0 -0
  190. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/log.py +0 -0
  191. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/py.typed +0 -0
  192. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/stubs/__init__.py +0 -0
  193. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/stubs/_util.py +0 -0
  194. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/stubs/aggregator.py +0 -0
  195. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/stubs/datadog_agent.py +0 -0
  196. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/__init__.py +0 -0
  197. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/common.py +0 -0
  198. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/containers.py +0 -0
  199. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/headers.py +0 -0
  200. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/limiter.py +0 -0
  201. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/platform.py +0 -0
  202. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/prometheus/__init__.py +0 -0
  203. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/prometheus/functions.py +0 -0
  204. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/prometheus/metrics_pb2.py +0 -0
  205. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/proxy.py +0 -0
  206. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/subprocess_output.py +0 -0
  207. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/tailfile.py +0 -0
  208. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/timeout.py +0 -0
  209. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/datadog_checks/utils/tracing.py +0 -0
  210. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/hatch.toml +0 -0
  211. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/__init__.py +0 -0
  212. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/__init__.py +0 -0
  213. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/__init__.py +0 -0
  214. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/logs/__init__.py +0 -0
  215. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/logs/crawler/__init__.py +0 -0
  216. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/__init__.py +0 -0
  217. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/bench_utils.py +0 -0
  218. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_legacy/__init__.py +0 -0
  219. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_legacy/test_bench.py +0 -0
  220. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_legacy/test_compat_scraper.py +0 -0
  221. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_legacy/test_openmetrics.py +0 -0
  222. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_legacy/test_openmetrics_base_check.py +0 -0
  223. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_legacy/utils.py +0 -0
  224. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/__init__.py +0 -0
  225. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_bench.py +0 -0
  226. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_config.py +0 -0
  227. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_first_scrape_handler.py +0 -0
  228. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_interface.py +0 -0
  229. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/__init__.py +0 -0
  230. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter.py +0 -0
  231. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter_gauge.py +0 -0
  232. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_gauge.py +0 -0
  233. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_histogram.py +0 -0
  234. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_metadata.py +0 -0
  235. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_native_dynamic.py +0 -0
  236. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_rate.py +0 -0
  237. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_service_check.py +0 -0
  238. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_summary.py +0 -0
  239. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_temporal_percent.py +0 -0
  240. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_time_elapsed.py +0 -0
  241. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_type_override.py +0 -0
  242. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/openmetrics/test_v2/utils.py +0 -0
  243. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/prometheus/__init__.py +0 -0
  244. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/prometheus/test_prometheus.py +0 -0
  245. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/prometheus/test_prometheus_base_check.py +0 -0
  246. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/test_kube_leader.py +0 -0
  247. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/test_kubelet_base.py +0 -0
  248. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/utils.py +0 -0
  249. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/win/__init__.py +0 -0
  250. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/win/test_pdhbasecheck.py +0 -0
  251. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/win/test_winpdh.py +0 -0
  252. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/win/test_wmicheck.py +0 -0
  253. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/win/test_wmisampler.py +0 -0
  254. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/__init__.py +0 -0
  255. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/__init__.py +0 -0
  256. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_aggregation.py +0 -0
  257. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_config.py +0 -0
  258. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_filter.py +0 -0
  259. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_health.py +0 -0
  260. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_integration.py +0 -0
  261. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_legacy_support.py +0 -0
  262. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_localization.py +0 -0
  263. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_refresh.py +0 -0
  264. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/test_subclass.py +0 -0
  265. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
  266. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_count.py +0 -0
  267. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_gauge.py +0 -0
  268. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_monotonic_count.py +0 -0
  269. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_rate.py +0 -0
  270. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_service_check.py +0 -0
  271. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_temporal_percent.py +0 -0
  272. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/transformers/test_time_elapsed.py +0 -0
  273. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/checks/windows/perf_counters/utils.py +0 -0
  274. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/test_constants.py +0 -0
  275. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/test_ddyaml.py +0 -0
  276. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/__init__.py +0 -0
  277. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/concurrency/__init__.py +0 -0
  278. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/concurrency/test_limiter.py +0 -0
  279. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/__init__.py +0 -0
  280. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/common.py +0 -0
  281. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_custom_queries.py +0 -0
  282. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_db_sql.py +0 -0
  283. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_db_statements.py +0 -0
  284. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_query_executor.py +0 -0
  285. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_query_manager.py +0 -0
  286. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_query_result.py +0 -0
  287. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_sql_commenter.py +0 -0
  288. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_timed_cache.py +0 -0
  289. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_transformers.py +0 -0
  290. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/db/test_util.py +0 -0
  291. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/discovery/test_discovery.py +0 -0
  292. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/__init__.py +0 -0
  293. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/common.py +0 -0
  294. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_api.py +0 -0
  295. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_auth.py +0 -0
  296. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_authtoken.py +0 -0
  297. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_config.py +0 -0
  298. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_headers.py +0 -0
  299. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_http.py +0 -0
  300. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_kerberos_int.py +0 -0
  301. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_kerberos_unit.py +0 -0
  302. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_proxy.py +0 -0
  303. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_socks5_proxy_integration.py +0 -0
  304. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/http/test_tls_and_certs.py +0 -0
  305. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/replay/__init__.py +0 -0
  306. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/replay/test_check.py +0 -0
  307. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_agent_packages.py +0 -0
  308. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_agent_utils.py +0 -0
  309. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_aws.py +0 -0
  310. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_diagnose.py +0 -0
  311. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_time.py +0 -0
  312. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_tls.py +0 -0
  313. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_tracing.py +0 -0
  314. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_tracking.py +0 -0
  315. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/base/utils/test_utils.py +0 -0
  316. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-agent/Dockerfile +0 -0
  317. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-agent/configurekerberos.sh +0 -0
  318. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-agent/configurenginx.sh +0 -0
  319. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-agent/entrypoint.sh +0 -0
  320. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-agent/nginx.yaml +0 -0
  321. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-agent.yaml +0 -0
  322. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-kdc/Dockerfile +0 -0
  323. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-kdc/init.sh +0 -0
  324. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-kdc/kdc.conf +0 -0
  325. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-kdc/krb5.conf +0 -0
  326. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-nginx/Dockerfile +0 -0
  327. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-nginx/configurekerberos.sh +0 -0
  328. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-nginx/configurenginx.sh +0 -0
  329. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-nginx/entrypoint.sh +0 -0
  330. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-nginx/nginx.conf +0 -0
  331. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos-nginx/setupkeytab.sh +0 -0
  332. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/kerberos/kerberos.yaml +0 -0
  333. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/socks5-proxy.yaml +0 -0
  334. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/uds/uds-nginx/nginx.conf +0 -0
  335. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/uds/uds-nginx/templates/default.conf.template +0 -0
  336. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/compose/uds/uds.yaml +0 -0
  337. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/conftest.py +0 -0
  338. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/bearer_tokens/custom_token +0 -0
  339. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/bearer_tokens/default_token +0 -0
  340. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/dcos/private-key.pem +0 -0
  341. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/dcos/public-key.pem +0 -0
  342. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/ddyaml/valid_conf.yaml +0 -0
  343. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/kerberos/krb5.conf +0 -0
  344. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/kubelet_base/pod_list_raw.dat +0 -0
  345. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/kubelet_base/pod_list_raw.json +0 -0
  346. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/prometheus/amazon_msk_jmx_metrics.txt +0 -0
  347. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/prometheus/deprecated.txt +0 -0
  348. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/prometheus/ksm.txt +0 -0
  349. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/prometheus/metrics.txt +0 -0
  350. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/fixtures/prometheus/protobuf.bin +0 -0
  351. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/__init__.py +0 -0
  352. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/config_models/__init__.py +0 -0
  353. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/config_models/defaults.py +0 -0
  354. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/config_models/deprecations.py +0 -0
  355. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/config_models/instance.py +0 -0
  356. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/config_models/shared.py +0 -0
  357. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/config_models/validators.py +0 -0
  358. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/data/spec.yaml +0 -0
  359. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/test_interface.py +0 -0
  360. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/models/test_types.py +0 -0
  361. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/stubs/test_aggregator_metric_has_tag.py +0 -0
  362. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/stubs/test_aggregator_no_duplicate.py +0 -0
  363. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/stubs/test_aggregator_service_checks.py +0 -0
  364. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/stubs/test_aggregator_similar.py +0 -0
  365. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/stubs/test_datadog_agent.py +0 -0
  366. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/test_config.py +0 -0
  367. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/test_log.py +0 -0
  368. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/test_metadata.py +0 -0
  369. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/test_serialization.py +0 -0
  370. {datadog_checks_base-37.5.0 → datadog_checks_base-37.6.0}/tests/test_zzz_run_last.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datadog-checks-base
3
- Version: 37.5.0
3
+ Version: 37.6.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>
@@ -13,16 +13,16 @@ Classifier: License :: OSI Approved :: BSD License
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Topic :: System :: Monitoring
15
15
  Provides-Extra: db
16
- Requires-Dist: mmh3==5.0.1; extra == 'db'
16
+ Requires-Dist: mmh3==5.1.0; extra == 'db'
17
17
  Provides-Extra: deps
18
18
  Requires-Dist: binary==1.0.1; extra == 'deps'
19
- Requires-Dist: cachetools==5.5.0; extra == 'deps'
19
+ Requires-Dist: cachetools==5.5.1; extra == 'deps'
20
20
  Requires-Dist: cryptography==43.0.1; extra == 'deps'
21
21
  Requires-Dist: ddtrace==2.10.6; extra == 'deps'
22
22
  Requires-Dist: jellyfish==1.1.3; extra == 'deps'
23
23
  Requires-Dist: prometheus-client==0.21.1; extra == 'deps'
24
24
  Requires-Dist: protobuf==5.29.3; extra == 'deps'
25
- Requires-Dist: pydantic==2.10.5; extra == 'deps'
25
+ Requires-Dist: pydantic==2.10.6; extra == 'deps'
26
26
  Requires-Dist: python-dateutil==2.9.0.post0; extra == 'deps'
27
27
  Requires-Dist: pywin32==308; (sys_platform == 'win32') and extra == 'deps'
28
28
  Requires-Dist: pyyaml==6.0.2; extra == 'deps'
@@ -34,7 +34,7 @@ Requires-Dist: uptime==3.0.1; extra == 'deps'
34
34
  Requires-Dist: wrapt==1.17.2; extra == 'deps'
35
35
  Provides-Extra: http
36
36
  Requires-Dist: aws-requests-auth==0.4.3; extra == 'http'
37
- Requires-Dist: botocore==1.36.1; extra == 'http'
37
+ Requires-Dist: botocore==1.36.16; extra == 'http'
38
38
  Requires-Dist: oauthlib==3.2.2; extra == 'http'
39
39
  Requires-Dist: pyjwt==2.10.1; extra == 'http'
40
40
  Requires-Dist: pyopenssl==24.2.1; extra == 'http'
@@ -43,9 +43,9 @@ Requires-Dist: requests-kerberos==0.15.0; extra == 'http'
43
43
  Requires-Dist: requests-ntlm==1.3.0; extra == 'http'
44
44
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'http'
45
45
  Provides-Extra: json
46
- Requires-Dist: orjson==3.10.14; extra == 'json'
46
+ Requires-Dist: orjson==3.10.15; extra == 'json'
47
47
  Provides-Extra: kube
48
- Requires-Dist: kubernetes==31.0.0; extra == 'kube'
48
+ Requires-Dist: kubernetes==32.0.0; extra == 'kube'
49
49
  Requires-Dist: requests-oauthlib==2.0.0; extra == 'kube'
50
50
  Description-Content-Type: text/markdown
51
51
 
@@ -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.5.0"
4
+ __version__ = "37.6.0"
@@ -164,6 +164,8 @@ class AgentCheck(object):
164
164
  # See https://github.com/DataDog/integrations-core/pull/2093 for more information.
165
165
  DEFAULT_METRIC_LIMIT = 0
166
166
 
167
+ HA_SUPPORTED = False
168
+
167
169
  # Allow tracing for classic integrations
168
170
  def __init_subclass__(cls, *args, **kwargs):
169
171
  try:
@@ -312,6 +314,14 @@ class AgentCheck(object):
312
314
  if os.environ.get("GOFIPS", "0") == "1":
313
315
  enable_fips()
314
316
 
317
+ ha_enabled_init = self.init_config.get('ha_enabled', False) if self.init_config else False
318
+ ha_enabled_instance = self.instance.get('ha_enabled', False) if self.instance else False
319
+
320
+ if not self.HA_SUPPORTED and (ha_enabled_init or ha_enabled_instance):
321
+ raise ConfigurationError(
322
+ f"High Availability is enabled for check {self.name} but this integration does not support it"
323
+ )
324
+
315
325
  def _create_metrics_pattern(self, metric_patterns, option_name):
316
326
  all_patterns = metric_patterns.get(option_name, [])
317
327
 
@@ -1,21 +1,27 @@
1
1
  # (C) Datadog, Inc. 2020-present
2
2
  # All rights reserved
3
3
  # Licensed under a 3-clause BSD style license (see LICENSE)
4
+ from collections import ChainMap
5
+
4
6
  from ....utils.functions import no_op
5
7
 
6
8
 
7
9
  class LabelAggregator:
8
10
  def __init__(self, check, config):
9
11
  share_labels = config.get('share_labels', {})
10
- if not isinstance(share_labels, dict):
11
- raise TypeError('Setting `share_labels` must be a mapping')
12
- elif not share_labels:
12
+ self.target_info = config.get('target_info', False)
13
+ self.target_info_labels = {}
14
+
15
+ self._validate_type(share_labels, dict, "Setting `share_labels` must be a mapping")
16
+ self._validate_type(self.target_info, bool, "Setting `target_info` must be a boolean")
17
+
18
+ if not share_labels and not self.target_info:
13
19
  self.populate = no_op
14
20
  return
15
21
 
16
22
  self.cache_shared_labels = config.get('cache_shared_labels', True)
17
23
  self.shared_labels_cached = False
18
-
24
+ self.info_metric = {'target_info': {}}
19
25
  self.metric_config = {}
20
26
  for metric, config in share_labels.items():
21
27
  data = self.metric_config[metric] = {}
@@ -31,6 +37,7 @@ class LabelAggregator:
31
37
  raise TypeError(f'Option `values` for metric `{metric}` of setting `share_labels` must be an array')
32
38
 
33
39
  allowed_values = set()
40
+
34
41
  for i, value in enumerate(values, 1):
35
42
  value = str(value)
36
43
 
@@ -72,34 +79,32 @@ class LabelAggregator:
72
79
 
73
80
  self.unconditional_labels = {}
74
81
 
82
+ def _validate_type(self, value, expected_type, error_message):
83
+ if not isinstance(value, expected_type):
84
+ raise TypeError(error_message)
85
+
75
86
  def __call__(self, metrics):
76
87
  if self.cache_shared_labels:
77
88
  if self.shared_labels_cached:
78
89
  yield from metrics
79
90
  else:
80
- metric_config = self.metric_config.copy()
91
+ metric_config, target_info_metric = self.copy_configs()
81
92
 
82
93
  for metric in metrics:
83
- if metric_config and metric.name in metric_config:
84
- self.collect(metric, metric_config.pop(metric.name))
85
-
94
+ self.process_metric(metric, metric_config, target_info_metric)
86
95
  yield metric
87
96
 
88
97
  self.shared_labels_cached = True
89
98
  else:
90
99
  try:
91
- metric_config = self.metric_config.copy()
92
-
93
- # Cache every encountered metric until the desired labels have been collected
100
+ metric_config, target_info_metric = self.copy_configs()
94
101
  cached_metrics = []
95
102
 
96
103
  for metric in metrics:
97
- if metric.name in metric_config:
98
- self.collect(metric, metric_config.pop(metric.name))
99
-
104
+ self.process_metric(metric, metric_config, target_info_metric)
100
105
  cached_metrics.append(metric)
101
106
 
102
- if not metric_config:
107
+ if not (metric_config or target_info_metric):
103
108
  break
104
109
 
105
110
  yield from cached_metrics
@@ -108,6 +113,24 @@ class LabelAggregator:
108
113
  self.label_sets.clear()
109
114
  self.unconditional_labels.clear()
110
115
 
116
+ def copy_configs(self):
117
+ return self.metric_config.copy(), self.info_metric.copy()
118
+
119
+ def process_metric(self, metric, *configs):
120
+ """
121
+ Collects labels from shared_labels + target_info metrics
122
+ """
123
+ for config in configs:
124
+ if config and metric.name in config:
125
+ self.collect(metric, config.pop(metric.name))
126
+
127
+ def process_target_info(self, metric):
128
+ """
129
+ Updates cached target info metrics
130
+ """
131
+ if metric.samples[0].labels != self.target_info_labels:
132
+ self.target_info_labels = metric.samples[0].labels
133
+
111
134
  def collect(self, metric, config):
112
135
  allowed_values = config.get('values')
113
136
 
@@ -147,13 +170,28 @@ class LabelAggregator:
147
170
  if label in labels:
148
171
  self.unconditional_labels[label] = value
149
172
  else:
150
- for sample in self.allowed_samples(metric, allowed_values):
151
- for label, value in sample.labels.items():
152
- self.unconditional_labels[label] = value
173
+ # Store target_info metric labels to be applied to other metrics in payload
174
+ if metric.name == 'target_info':
175
+ self.target_info_labels.update(
176
+ {
177
+ label: value
178
+ for sample in self.allowed_samples(metric, allowed_values)
179
+ for label, value in sample.labels.items()
180
+ }
181
+ )
182
+ else:
183
+ # Store shared labels in a seperate attribute
184
+ self.unconditional_labels.update(
185
+ {
186
+ label: value
187
+ for sample in self.allowed_samples(metric, allowed_values)
188
+ for label, value in sample.labels.items()
189
+ }
190
+ )
153
191
 
154
192
  def populate(self, labels):
155
193
  label_set = frozenset(labels.items())
156
- labels.update(self.unconditional_labels)
194
+ labels.update(ChainMap(self.unconditional_labels, self.target_info_labels))
157
195
 
158
196
  for matching_label_set, shared_labels in self.label_sets:
159
197
  # Check for subset without incurring the cost of a `.issubset` lookup and call
@@ -58,6 +58,7 @@ class OpenMetricsScraper:
58
58
 
59
59
  # Parse the configuration
60
60
  self.endpoint = config['openmetrics_endpoint']
61
+ self.target_info = config.get('target_info', False)
61
62
 
62
63
  self.metric_transformer = MetricTransformer(self.check, config)
63
64
  self.label_aggregator = LabelAggregator(self.check, config)
@@ -238,7 +239,13 @@ class OpenMetricsScraper:
238
239
  """
239
240
  runtime_data = {'flush_first_value': self.flush_first_value, 'static_tags': self.static_tags}
240
241
 
241
- for metric in self.consume_metrics(runtime_data):
242
+ # Determine which consume method to use based on target_info config
243
+ if self.target_info:
244
+ consume_method = self.consume_metrics_w_target_info
245
+ else:
246
+ consume_method = self.consume_metrics
247
+
248
+ for metric in consume_method(runtime_data):
242
249
  transformer = self.metric_transformer.get(metric)
243
250
  if transformer is None:
244
251
  continue
@@ -248,23 +255,52 @@ class OpenMetricsScraper:
248
255
  self.flush_first_value = True
249
256
 
250
257
  def consume_metrics(self, runtime_data):
258
+ """
259
+ Yield the processed metrics and filter out excluded metrics, without checking for target_info metrics.
260
+ """
261
+
262
+ metric_parser = self.parse_metrics()
263
+
264
+ if not self.flush_first_value and self.use_process_start_time:
265
+ metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
266
+ if self.label_aggregator.configured:
267
+ metric_parser = self.label_aggregator(metric_parser)
268
+
269
+ for metric in metric_parser:
270
+ # Skip excluded metrics
271
+ if metric.name in self.exclude_metrics or (
272
+ self.exclude_metrics_pattern is not None and self.exclude_metrics_pattern.search(metric.name)
273
+ ):
274
+ self.submit_telemetry_number_of_ignored_metric_samples(metric)
275
+ continue
276
+
277
+ yield metric
278
+
279
+ def consume_metrics_w_target_info(self, runtime_data):
251
280
  """
252
281
  Yield the processed metrics and filter out excluded metrics.
282
+ Additionally, handle target_info metrics.
253
283
  """
254
284
 
255
285
  metric_parser = self.parse_metrics()
286
+
256
287
  if not self.flush_first_value and self.use_process_start_time:
257
288
  metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
258
289
  if self.label_aggregator.configured:
259
290
  metric_parser = self.label_aggregator(metric_parser)
260
291
 
261
292
  for metric in metric_parser:
293
+ # Skip excluded metrics
262
294
  if metric.name in self.exclude_metrics or (
263
295
  self.exclude_metrics_pattern is not None and self.exclude_metrics_pattern.search(metric.name)
264
296
  ):
265
297
  self.submit_telemetry_number_of_ignored_metric_samples(metric)
266
298
  continue
267
299
 
300
+ # Process target_info metrics
301
+ if metric.name == 'target_info':
302
+ self.label_aggregator.process_target_info(metric)
303
+
268
304
  yield metric
269
305
 
270
306
  def parse_metrics(self):
@@ -312,7 +348,6 @@ class OpenMetricsScraper:
312
348
  """
313
349
  Yield a sample of processed data.
314
350
  """
315
-
316
351
  label_normalizer = get_label_normalizer(metric.type)
317
352
 
318
353
  for sample in metric.samples:
@@ -31,17 +31,17 @@ license = "BSD-3-Clause"
31
31
 
32
32
  [project.optional-dependencies]
33
33
  db = [
34
- "mmh3==5.0.1",
34
+ "mmh3==5.1.0",
35
35
  ]
36
36
  deps = [
37
37
  "binary==1.0.1",
38
- "cachetools==5.5.0",
38
+ "cachetools==5.5.1",
39
39
  "cryptography==43.0.1",
40
40
  "ddtrace==2.10.6",
41
41
  "jellyfish==1.1.3",
42
42
  "prometheus-client==0.21.1",
43
43
  "protobuf==5.29.3",
44
- "pydantic==2.10.5",
44
+ "pydantic==2.10.6",
45
45
  "python-dateutil==2.9.0.post0",
46
46
  "pywin32==308; sys_platform == 'win32'",
47
47
  "pyyaml==6.0.2",
@@ -54,7 +54,7 @@ deps = [
54
54
  ]
55
55
  http = [
56
56
  "aws-requests-auth==0.4.3",
57
- "botocore==1.36.1",
57
+ "botocore==1.36.16",
58
58
  "oauthlib==3.2.2",
59
59
  "pyjwt==2.10.1",
60
60
  "pyopenssl==24.2.1",
@@ -64,10 +64,10 @@ http = [
64
64
  "requests-oauthlib==2.0.0",
65
65
  ]
66
66
  json = [
67
- "orjson==3.10.14",
67
+ "orjson==3.10.15",
68
68
  ]
69
69
  kube = [
70
- "kubernetes==31.0.0",
70
+ "kubernetes==32.0.0",
71
71
  "requests-oauthlib==2.0.0",
72
72
  ]
73
73
 
@@ -6,7 +6,6 @@ from datadog_checks.base.checks.logs.crawler.stream import LogRecord, LogStream
6
6
 
7
7
 
8
8
  def test_submission(dd_run_check, datadog_agent):
9
-
10
9
  class TestLogStream(LogStream):
11
10
  def __init__(self, start, **kwargs):
12
11
  super().__init__(**kwargs)
@@ -681,6 +681,200 @@ class TestShareLabels:
681
681
 
682
682
  aggregator.assert_all_metrics_covered()
683
683
 
684
+ def test_target_info_tags_propagation(self, aggregator, dd_run_check, mock_http_response):
685
+
686
+ check = get_check({'metrics': ['.+'], 'target_info': True})
687
+
688
+ mock_http_response(
689
+ """
690
+ # HELP target Target metadata
691
+ # TYPE target info
692
+ target_info{env="prod", region="europe"} 1.0
693
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
694
+ # TYPE go_memstats_alloc_bytes gauge
695
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
696
+ """
697
+ )
698
+
699
+ dd_run_check(check)
700
+
701
+ aggregator.assert_metric(
702
+ 'test.go_memstats_alloc_bytes',
703
+ value=6396288,
704
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
705
+ metric_type=aggregator.GAUGE,
706
+ )
707
+
708
+ aggregator.assert_all_metrics_covered()
709
+
710
+ def test_target_info_tags_propagation_unordered(self, aggregator, dd_run_check, mock_http_response):
711
+
712
+ check = get_check({'metrics': ['.+'], 'target_info': True, 'cache_shared_labels': False})
713
+
714
+ mock_http_response(
715
+ """
716
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
717
+ # TYPE go_memstats_alloc_bytes gauge
718
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
719
+ # HELP target Target metadata
720
+ # TYPE target info
721
+ target_info{env="prod", region="europe"} 1.0
722
+ """
723
+ )
724
+
725
+ dd_run_check(check)
726
+
727
+ aggregator.assert_metric(
728
+ 'test.go_memstats_alloc_bytes',
729
+ value=6396288,
730
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
731
+ metric_type=aggregator.GAUGE,
732
+ )
733
+
734
+ aggregator.assert_all_metrics_covered()
735
+
736
+ def test_target_info_tags_propagation_unordered_w_cache(self, aggregator, dd_run_check, mock_http_response):
737
+
738
+ check = get_check({'metrics': ['.+'], 'target_info': True})
739
+
740
+ mock_http_response(
741
+ """
742
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
743
+ # TYPE go_memstats_alloc_bytes gauge
744
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
745
+ # HELP target Target metadata
746
+ # TYPE target info
747
+ target_info{env="prod", region="europe"} 1.0
748
+ """
749
+ )
750
+
751
+ dd_run_check(check)
752
+
753
+ aggregator.assert_metric(
754
+ 'test.go_memstats_alloc_bytes',
755
+ value=6396288,
756
+ tags=['endpoint:test', 'foo:bar'],
757
+ metric_type=aggregator.GAUGE,
758
+ )
759
+
760
+ dd_run_check(check)
761
+
762
+ aggregator.assert_metric(
763
+ 'test.go_memstats_alloc_bytes',
764
+ value=6396288,
765
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
766
+ metric_type=aggregator.GAUGE,
767
+ )
768
+
769
+ aggregator.assert_all_metrics_covered()
770
+
771
+ def test_target_info_update_cache(self, aggregator, dd_run_check, mock_http_response):
772
+
773
+ check = get_check({'metrics': ['.+'], 'target_info': True})
774
+ check_var = check
775
+
776
+ mock_http_response(
777
+ """
778
+ # HELP target Target metadata
779
+ # TYPE target info
780
+ target_info{env="prod", region="europe"} 1.0
781
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
782
+ # TYPE go_memstats_alloc_bytes gauge
783
+ go_memstats_alloc_bytes{foo="bar"} 6.396288e+06
784
+ """
785
+ )
786
+
787
+ dd_run_check(check_var)
788
+
789
+ aggregator.assert_metric(
790
+ 'test.go_memstats_alloc_bytes',
791
+ value=6396288,
792
+ tags=['endpoint:test', 'foo:bar', 'env:prod', 'region:europe'],
793
+ metric_type=aggregator.GAUGE,
794
+ )
795
+
796
+ mock_http_response(
797
+ """
798
+ # HELP target Target metadata
799
+ # TYPE target info
800
+ target_info{env="stg", region="asia"} 1.0
801
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
802
+ # TYPE go_memstats_alloc_bytes gauge
803
+ go_memstats_alloc_bytes{foo="bar2"} 6.396288e+06
804
+ """
805
+ )
806
+
807
+ dd_run_check(check_var)
808
+
809
+ aggregator.assert_metric(
810
+ 'test.go_memstats_alloc_bytes',
811
+ value=6396288,
812
+ tags=['endpoint:test', 'foo:bar2', 'env:stg', 'region:asia'],
813
+ metric_type=aggregator.GAUGE,
814
+ )
815
+
816
+ aggregator.assert_all_metrics_covered()
817
+
818
+ def test_target_info_w_shared_labels_cache(self, aggregator, dd_run_check, mock_http_response):
819
+
820
+ check = get_check({'metrics': ['.+'], 'share_labels': {'go_memstats_free_bytes': True}, 'target_info': True})
821
+ check_var = check
822
+
823
+ mock_http_response(
824
+ """
825
+ # HELP target Target metadata
826
+ # TYPE target info
827
+ target_info{env="prod", region="europe"} 1.0
828
+ # HELP go_memstats_free_bytes Number of bytes free and available for use.
829
+ # TYPE go_memstats_free_bytes gauge
830
+ go_memstats_free_bytes{foo="bar"} 6.396288e+06
831
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
832
+ # TYPE go_memstats_alloc_bytes gauge
833
+ go_memstats_alloc_bytes{bar="foo"} 6.396288e+06
834
+ """
835
+ )
836
+
837
+ dd_run_check(check_var)
838
+
839
+ aggregator.assert_metric(
840
+ 'test.go_memstats_alloc_bytes',
841
+ value=6396288,
842
+ tags=['endpoint:test', 'foo:bar', 'bar:foo', 'env:prod', 'region:europe'],
843
+ metric_type=aggregator.GAUGE,
844
+ )
845
+
846
+ mock_http_response(
847
+ """
848
+ # HELP target Target metadata
849
+ # TYPE target info
850
+ target_info{env="stg", region="asia"} 1.0
851
+ # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
852
+ # TYPE go_memstats_alloc_bytes gauge
853
+ go_memstats_alloc_bytes{foo2="bar2"} 6.396288e+06
854
+ # HELP go_memstats_free_bytes Number of bytes free and available for use.
855
+ # TYPE go_memstats_free_bytes gauge
856
+ go_memstats_free_bytes{bar2="baz2"} 6.396288e+06
857
+ """
858
+ )
859
+
860
+ dd_run_check(check_var)
861
+
862
+ aggregator.assert_metric(
863
+ 'test.go_memstats_alloc_bytes',
864
+ value=6396288,
865
+ tags=['endpoint:test', 'foo:bar', 'foo2:bar2', 'env:stg', 'region:asia'],
866
+ metric_type=aggregator.GAUGE,
867
+ )
868
+
869
+ aggregator.assert_metric(
870
+ 'test.go_memstats_free_bytes',
871
+ value=6396288,
872
+ tags=['endpoint:test', 'env:stg', 'region:asia', 'bar2:baz2', 'foo:bar'],
873
+ metric_type=aggregator.GAUGE,
874
+ )
875
+
876
+ aggregator.assert_all_metrics_covered()
877
+
684
878
 
685
879
  class TestIgnoreTags:
686
880
  def test_simple_match(self, aggregator, dd_run_check, mock_http_response):
@@ -11,7 +11,7 @@ from typing import Any # noqa: F401
11
11
  import mock
12
12
  import pytest
13
13
 
14
- from datadog_checks.base import AgentCheck, to_native_string
14
+ from datadog_checks.base import AgentCheck, ConfigurationError, to_native_string
15
15
  from datadog_checks.base import __version__ as base_package_version
16
16
 
17
17
  from .utils import BaseModelTest
@@ -1310,3 +1310,23 @@ def test_env_var_logic_preset():
1310
1310
  AgentCheck()
1311
1311
  assert os.getenv('OPENSSL_CONF', None) == preset_conf
1312
1312
  assert os.getenv('OPENSSL_MODULES', None) == preset_modules
1313
+
1314
+
1315
+ def test_ha_enabled_and_unsupported():
1316
+ class TestNonHACheck(AgentCheck):
1317
+ HA_SUPPORTED = False
1318
+
1319
+ TestNonHACheck('test', {}, [{}])
1320
+ with pytest.raises(ConfigurationError):
1321
+ TestNonHACheck('test', {'ha_enabled': True}, [{}])
1322
+ with pytest.raises(ConfigurationError):
1323
+ TestNonHACheck('test', {}, [{'ha_enabled': True}])
1324
+
1325
+
1326
+ def test_ha_enabled_and_supported():
1327
+ class TestHACheck(AgentCheck):
1328
+ HA_SUPPORTED = True
1329
+
1330
+ TestHACheck('test', {}, [{}])
1331
+ TestHACheck('test', {'ha_enabled': True}, [{}])
1332
+ TestHACheck('test', {}, [{'ha_enabled': True}])