diff --git a/.builders/tests/test_upload.py b/.builders/tests/test_upload.py index 80e7190792bcd..b299024e1ba46 100644 --- a/.builders/tests/test_upload.py +++ b/.builders/tests/test_upload.py @@ -477,6 +477,32 @@ def test_lockfile_generation(tmp_path, setup_targets_dir, frozen_timestamp): assert len(lock_files) == 2 +def test_generate_lockfiles_skips_targets_with_no_wheels(tmp_path): + """An empty target (no wheels uploaded) should not produce a lockfile, and any existing stale lockfile should be removed.""" + lockfile = { + 'linux-x86_64': ['dep @ https://example.com/dep.whl#sha256=abc', ''], + 'windows-x86_64': [''], + 'macos-aarch64': [], + } + + fake_deps_dir = tmp_path / ".deps" + fake_resolved_dir = fake_deps_dir / "resolved" + fake_deps_dir.mkdir() + fake_resolved_dir.mkdir() + (tmp_path / "targets").mkdir() + + stale_lockfile = fake_resolved_dir / f"windows-x86_64_{upload.CURRENT_PYTHON_VERSION}.txt" + stale_lockfile.write_text("stale @ https://example.com/stale.whl#sha256=old\n", encoding="utf-8") + + with mock.patch.object(upload, "RESOLUTION_DIR", fake_deps_dir), \ + mock.patch.object(upload, "LOCK_FILE_DIR", fake_resolved_dir): + upload.generate_lockfiles(str(tmp_path / "targets"), lockfile) + + lock_files = {f.name for f in fake_resolved_dir.glob("*.txt")} + assert lock_files == {f"linux-x86_64_{upload.CURRENT_PYTHON_VERSION}.txt"} + assert not stale_lockfile.exists() + + def test_generate_lockfiles_accepts_string_path(tmp_path): lockfile = {'linux-x86_64': ['dep @ https://example.com/dep.whl#sha256=abc', '']} diff --git a/.builders/upload.py b/.builders/upload.py index 3155ed7b0fa36..ef502c3a08b6a 100644 --- a/.builders/upload.py +++ b/.builders/upload.py @@ -293,6 +293,10 @@ def generate_lockfiles(targets_dir, lockfiles): # The lockfiles contain the major.minor Python version # so that the Agent can transition safely lock_file = LOCK_FILE_DIR / f'{target_name}_{CURRENT_PYTHON_VERSION}.txt' + if not any(line.strip() for line in lockfile_lines): + print(f'Skipping lockfile for {target_name}: no wheels were uploaded.') + lock_file.unlink(missing_ok=True) + continue lock_file.write_text('\n'.join(lockfile_lines), encoding='utf-8') # The `image_digest` and `inputs_sha256` files are written by the diff --git a/.ddev/ci/scripts/kafka_consumer/linux/32_install_kerberos.sh b/.ddev/ci/scripts/kafka_consumer/linux/32_install_kerberos.sh index de7d91af937ee..3d1670cd139d8 100755 --- a/.ddev/ci/scripts/kafka_consumer/linux/32_install_kerberos.sh +++ b/.ddev/ci/scripts/kafka_consumer/linux/32_install_kerberos.sh @@ -6,9 +6,14 @@ sudo apt update sudo apt install -y --no-install-recommends build-essential libkrb5-dev libzstd-dev wget software-properties-common lsb-release gcc make python3 python3-pip python3-dev libsasl2-modules-gssapi-mit krb5-user # Install librdkafka from source since no binaries are available for the distribution we use on the CI: -git clone https://github.com/confluentinc/librdkafka -cd librdkafka -git checkout v2.13.2 +LIBRDKAFKA_VERSION="v2.13.2" +LIBRDKAFKA_SHA256="14972092e4115f6e99f798a7cb420cbf6daa0c73502b3c52ae42fb5b418eea8f" +LIBRDKAFKA_TARBALL="${LIBRDKAFKA_VERSION}.tar.gz" + +wget "https://github.com/confluentinc/librdkafka/archive/refs/tags/${LIBRDKAFKA_TARBALL}" +echo "${LIBRDKAFKA_SHA256} ${LIBRDKAFKA_TARBALL}" | sha256sum -c - +tar -xzf "${LIBRDKAFKA_TARBALL}" +cd "librdkafka-${LIBRDKAFKA_VERSION#v}" sudo ./configure --install-deps --prefix=/usr make sudo make install diff --git a/.deps/resolved/linux-aarch64_3.13.txt b/.deps/resolved/linux-aarch64_3.13.txt index bdac0ff4c2461..2e705db7d6fed 100644 --- a/.deps/resolved/linux-aarch64_3.13.txt +++ b/.deps/resolved/linux-aarch64_3.13.txt @@ -1,30 +1,30 @@ aerospike @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/aerospike/aerospike-7.1.1-20260418125217-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=a1de7c7019b1dd5363cdd1a838ba92185418a114be9b59f902e8aef66326c4ea -botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260420123342-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 +botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260421082705-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 cm-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cm-client/cm_client-45.0.4-20260326173357-py3-none-manylinux2014_aarch64.whl#sha256=0bbcf2766028850c26a917deef3704a096cc9ba0c25220d45ff424334d25dcd7 -confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260420124718-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=1d68f453308b86d7234cb8bd9c46942e63f7a456dc8c392e98ebcf43ce2e2cbb -cryptography @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cryptography/cryptography-46.0.6-20260420124721-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=32260110ead1ea0dadf90f9b76c6756d1060c67385fff3e8f0c607ee28e0d3ba +confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260421095908-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=65e0d489118fa94ca54abea65610fa3f5d116c67fd84bc5561f741adade2b40a +cryptography @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cryptography/cryptography-46.0.6-20260421095911-cp313-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=e3b8dc89254638fe20fda837433092b2b4f89e1a683710f9d05a4419dfbf39f7 ddtrace @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/ddtrace/ddtrace-3.19.5-20260417115249-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl#sha256=a4f8d07adccdd43908156ab2c143dbb6261ed9a3c43ba58a3bb6bd1b6ef94734 foundationdb @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/foundationdb/foundationdb-6.3.25-20260326173358-py3-none-manylinux2014_aarch64.whl#sha256=d34180500220db4458e57505c774de0363456d4129f0e3fe98c9e99e8eef77c2 gssapi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/gssapi/gssapi-1.11.1-20260420112228-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=95e5e8521bb191907748a7360ffd025398aa861cb47014c551384380d52be412 -keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260420123239-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 +keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260421083930-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 krb5 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/krb5/krb5-0.9.0-20260420112240-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=9700f818130cf996f844203d60c9e41b95700a90916c9ef39b008166ba6c9f71 -openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260420123407-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf -os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260420123254-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 -pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260420123308-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e +openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260421083943-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf +os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260421083957-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 +pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260421084012-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e psutil @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psutil/psutil-6.0.0-20260326173401-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=22e075e3cbc57b5da0d93f72f691746c5198ce88c5aea6fdb54186b3e8c46832 psycopg-c @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psycopg-c/psycopg_c-3.3.3-20260418125308-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=e9a6db500356a67b07cf971b394b92445797d608578961cd2c931ec1d61567b9 pymongo @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymongo/pymongo-4.8.0-20260415154515-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=30d8af4ef8fda85d1a865bdb254e6b2e3988f26b723eb39a4843c766371ff517 pyodbc @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyodbc/pyodbc-5.3.0-20260415154516-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=91a4191cf30930755d82e8edd6ac861443dfb6fbbf7915753b73209038ad5ad2 -pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260420123322-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 +pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260421084027-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 pyvmomi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyvmomi/pyvmomi-8.0.3.0.1-20260326173403-py2.py3-none-manylinux2014_aarch64.whl#sha256=dd71476b7308286ed4219373ca9523e4f06bfed3f5932f60e5c67d8d5a673e1e -requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260420123336-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f -securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260420123349-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd -setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260420123403-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 +requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260421084042-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f +securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260421084056-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd +setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260421084111-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 simplejson @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/simplejson/simplejson-3.20.2-20260326173404-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=cb739020a718c2e32041a0fa0a3f79398f45c067347fe8f286c8222fa777bc5d -stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260420123417-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 -supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260420123430-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd -vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260420123444-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da -websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260420123458-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 +stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260421084126-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 +supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260421084140-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd +vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260421084155-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da +websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260421084209-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 annotated-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/annotated-types/annotated_types-0.7.0-py3-none-any.whl#sha256=1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 attrs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/attrs/attrs-26.1.0-py3-none-any.whl#sha256=c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 aws-msk-iam-sasl-signer-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/aws-msk-iam-sasl-signer-python/aws_msk_iam_sasl_signer_python-1.0.2-py2.py3-none-any.whl#sha256=310eb2db9ca0ff55ed06a24212739b87533e7f1cf6f34e43aabbd97a3b21290e diff --git a/.deps/resolved/linux-x86_64_3.13.txt b/.deps/resolved/linux-x86_64_3.13.txt index 835c629c1a657..c9c03fa08e90e 100644 --- a/.deps/resolved/linux-x86_64_3.13.txt +++ b/.deps/resolved/linux-x86_64_3.13.txt @@ -1,31 +1,31 @@ aerospike @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/aerospike/aerospike-7.1.1-20260418130014-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=611776d7bc950a342e16b75973aadc0bf11280666055d4d868bac6d160e7164d -botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260420125129-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 +botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260421100323-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 cm-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cm-client/cm_client-45.0.4-20260326173305-py3-none-manylinux2014_x86_64.whl#sha256=0bbcf2766028850c26a917deef3704a096cc9ba0c25220d45ff424334d25dcd7 -confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260420125254-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=dd4790ad0949f1cf28634a91d5843b1df315b2bcf896eb4d7319b926e96e4611 -cryptography @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cryptography/cryptography-46.0.6-20260420125257-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=a3d5b16c3fe497b91ced78f861e92611adc623285e2de6b23e6622114e4ae82c +confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260421100447-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=dacc5df49c3e15ddf4f7384660f0feac760d9ba089e1ac3a73322523f2bd9c1f +cryptography @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cryptography/cryptography-46.0.6-20260421100449-cp313-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=547c00f19b05f938443269e99707d4bfdb397109f24c3fdf324edd5f9fdd6331 ddtrace @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/ddtrace/ddtrace-3.19.5-20260417115349-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl#sha256=e0aa298cfd1947902fed35d8fa6129c90f6d5e687328b0cba6fe137714198608 foundationdb @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/foundationdb/foundationdb-6.3.25-20260326173307-py3-none-manylinux2014_x86_64.whl#sha256=d34180500220db4458e57505c774de0363456d4129f0e3fe98c9e99e8eef77c2 gssapi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/gssapi/gssapi-1.11.1-20260418130032-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=9cf9e44ae3c9adbf681ab815511ce6c274f6403f106fc8e8e73eaa9268a0913f -keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260420125136-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 +keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260421100330-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 krb5 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/krb5/krb5-0.9.0-20260418130041-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=082536495ab7afb814a87311d3f5000b1d85b5afe19c5f52e8ea98c1da9c0df0 -openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260420125142-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf -os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260420125148-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 -pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260420125154-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e +openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260421100335-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf +os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260421100341-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 +pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260421100347-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e psutil @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psutil/psutil-6.0.0-20260326173308-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=af8dd07e6f1bf1d41381ad59dff0a0a36153c7dd5a69becc765010329f17db01 psycopg-c @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psycopg-c/psycopg_c-3.3.3-20260418130105-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=1381485b44a98283661adeee3aae934dc1275eef8f62c8cedce46ffa750708d2 pymongo @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymongo/pymongo-4.8.0-20260415154630-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=a0bc69dc57d3ba6db1fc23ac471ddd5edeeef737fef8e912b0b96126f0b13a8c pymqi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymqi/pymqi-1.12.13-20260326173310-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=20b5e67134719cae77a2b6c20da5219931b3735e30538567fb2b73e34219203b pyodbc @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyodbc/pyodbc-5.3.0-20260415154630-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=80d6bdc8ba09a778205c68493fa72a44a599fd8c31803a4f4d4e3bcf1f2284fe -pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260420125200-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 +pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260421100353-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 pyvmomi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyvmomi/pyvmomi-8.0.3.0.1-20260326173310-py2.py3-none-manylinux2014_x86_64.whl#sha256=dd71476b7308286ed4219373ca9523e4f06bfed3f5932f60e5c67d8d5a673e1e -requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260420125206-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f -securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260420125212-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd -setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260420125218-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 +requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260421100359-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f +securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260421100405-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd +setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260421100411-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 simplejson @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/simplejson/simplejson-3.20.2-20260326173311-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=dec16958f71ce93ac1c2fdc212800892ca22a9e90efcab5b5e01d121146cc5cc -stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260420125224-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 -supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260420125230-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd -vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260420125236-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da -websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260420125242-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 +stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260421100416-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 +supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260421100422-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd +vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260421100428-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da +websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260421100434-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 annotated-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/annotated-types/annotated_types-0.7.0-py3-none-any.whl#sha256=1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 attrs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/attrs/attrs-26.1.0-py3-none-any.whl#sha256=c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 aws-msk-iam-sasl-signer-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/aws-msk-iam-sasl-signer-python/aws_msk_iam_sasl_signer_python-1.0.2-py2.py3-none-any.whl#sha256=310eb2db9ca0ff55ed06a24212739b87533e7f1cf6f34e43aabbd97a3b21290e diff --git a/.deps/resolved/macos-aarch64_3.13.txt b/.deps/resolved/macos-aarch64_3.13.txt index 5ca54f6eba49f..68eecc6f9b6ec 100644 --- a/.deps/resolved/macos-aarch64_3.13.txt +++ b/.deps/resolved/macos-aarch64_3.13.txt @@ -1,28 +1,28 @@ -botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260420123342-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 +botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260421082705-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 cm-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cm-client/cm_client-45.0.4-20260326173218-py3-none-macosx_12_0_universal2.whl#sha256=0bbcf2766028850c26a917deef3704a096cc9ba0c25220d45ff424334d25dcd7 confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260419053453-cp313-cp313-macosx_12_0_arm64.whl#sha256=344f33861abc0c7392317debd7386086022672d25c978cec64fc8dcf285c542b ddtrace @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/ddtrace/ddtrace-3.19.5-20260417115301-cp313-cp313-macosx_12_0_arm64.whl#sha256=1274db819aa41b189135f83ad2b8e37c6e26b8d2f25c60a725a01637ebd63ee4 foundationdb @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/foundationdb/foundationdb-6.3.25-20260326173219-py3-none-macosx_12_0_universal2.whl#sha256=d34180500220db4458e57505c774de0363456d4129f0e3fe98c9e99e8eef77c2 gssapi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/gssapi/gssapi-1.11.1-20260326173323-cp311-abi3-macosx_11_0_arm64.whl#sha256=b5f5ac28470db99338814e4285a491dc218b9bee3f8d20bfa219274e84bd87c4 -keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260420123239-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 +keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260421083930-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 krb5 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/krb5/krb5-0.9.0-20260326173323-cp311-abi3-macosx_11_0_arm64.whl#sha256=47f731bebe725962f7b644e7238a4c68eca2879f6c35842babda9140f263c615 -openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260420123407-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf -os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260420123254-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 -pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260420123308-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e +openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260421083943-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf +os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260421083957-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 +pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260421084012-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e psutil @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psutil/psutil-6.0.0-20260326173324-cp38-abi3-macosx_11_0_arm64.whl#sha256=33472398d3e6da655a430b106920164b04f036f891bd0ea803a4309ed2a80ef9 psycopg-c @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psycopg-c/psycopg_c-3.3.3-20260418125458-cp313-cp313-macosx_12_0_arm64.whl#sha256=2c853472bed5a003bdcfbec159bf7849d1ac7a2a3867055d0005d1aa647549cf pymongo @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymongo/pymongo-4.8.0-20260326173325-cp313-cp313-macosx_12_0_arm64.whl#sha256=7c94a2b73c148f84ab217ea2084d07e01e834d49244dec026b473e889016f556 pymqi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymqi/pymqi-1.12.13-20260326173325-cp313-cp313-macosx_12_0_arm64.whl#sha256=482b0d2593868c595ec53db794a61a792c0e1fcad04aee86db96afaadf986baf -pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260420123322-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 +pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260421084027-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 pyvmomi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyvmomi/pyvmomi-8.0.3.0.1-20260326173224-py2.py3-none-macosx_12_0_universal2.whl#sha256=dd71476b7308286ed4219373ca9523e4f06bfed3f5932f60e5c67d8d5a673e1e -requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260420123336-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f -securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260420123349-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd -setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260420123403-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 +requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260421084042-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f +securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260421084056-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd +setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260421084111-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 simplejson @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/simplejson/simplejson-3.20.2-20260326173326-cp313-cp313-macosx_11_0_arm64.whl#sha256=fc3c4e9feecd85f1831fb0983b04e7170765b5047c3c629ab97c0c49190a5da8 -stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260420123417-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 -supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260420123430-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd -vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260420123444-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da -websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260420123458-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 +stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260421084126-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 +supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260421084140-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd +vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260421084155-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da +websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260421084209-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 annotated-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/annotated-types/annotated_types-0.7.0-py3-none-any.whl#sha256=1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 attrs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/attrs/attrs-26.1.0-py3-none-any.whl#sha256=c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 aws-msk-iam-sasl-signer-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/aws-msk-iam-sasl-signer-python/aws_msk_iam_sasl_signer_python-1.0.2-py2.py3-none-any.whl#sha256=310eb2db9ca0ff55ed06a24212739b87533e7f1cf6f34e43aabbd97a3b21290e diff --git a/.deps/resolved/macos-x86_64_3.13.txt b/.deps/resolved/macos-x86_64_3.13.txt index f1aa63f93f184..602170b96af26 100644 --- a/.deps/resolved/macos-x86_64_3.13.txt +++ b/.deps/resolved/macos-x86_64_3.13.txt @@ -1,28 +1,28 @@ -botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260420125129-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 +botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260421100323-py3-none-any.whl#sha256=f1933a8ca6c1108ed23f7b01f82577327fc254e330025887fdd4ba17db03e8e2 cm-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cm-client/cm_client-45.0.4-20260326173218-py3-none-macosx_12_0_universal2.whl#sha256=0bbcf2766028850c26a917deef3704a096cc9ba0c25220d45ff424334d25dcd7 confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260419053856-cp313-cp313-macosx_12_0_x86_64.whl#sha256=e217d743a2d906dd4cbe16d711aad2bc0519772fc00891e8159f004fd33c5a5a ddtrace @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/ddtrace/ddtrace-3.19.5-20260417115332-cp313-cp313-macosx_12_0_x86_64.whl#sha256=813c9fae90bd65d60d97e183b21dff8f9d54591a9186cf163f606fb11b7a6575 foundationdb @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/foundationdb/foundationdb-6.3.25-20260326173219-py3-none-macosx_12_0_universal2.whl#sha256=d34180500220db4458e57505c774de0363456d4129f0e3fe98c9e99e8eef77c2 gssapi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/gssapi/gssapi-1.11.1-20260326173219-cp311-abi3-macosx_10_9_x86_64.whl#sha256=91608d102056a7768b9e572ccbe2ccbe7da84688a84f05bb8c4ea56e9d0e979d -keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260420125136-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 +keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260421100330-py3-none-any.whl#sha256=a15092187950de965ff6096e203d31e461c61cfd47ec1f5249a0e2955187cba2 krb5 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/krb5/krb5-0.9.0-20260326173220-cp311-abi3-macosx_10_9_x86_64.whl#sha256=0fe3a687f4e9a8d305ba0183f9b8368e9ed13f4e32716ba3a14de77e12f1e978 -openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260420125142-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf -os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260420125148-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 -pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260420125154-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e +openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260421100335-py3-none-any.whl#sha256=88abe8f44e3b8c5c25b1093de735c700aa727a7ac408e273aa855d6db6ba38bf +os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260421100341-py3-none-any.whl#sha256=758ccaa020eea0edd84bcf4123746ddd060d1dbaeef63d04d76bd2e0ae6f91d8 +pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260421100347-py2.py3-none-any.whl#sha256=1544652b80307f0b4c491bd66f58f969cb0656994e632365f90e8e044c223b4e psutil @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psutil/psutil-6.0.0-20260326173222-cp36-abi3-macosx_10_9_x86_64.whl#sha256=81ae816033cb82995bc78424b02886430400b730698d6a7c492e3256b7854777 psycopg-c @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psycopg-c/psycopg_c-3.3.3-20260418125859-cp313-cp313-macosx_12_0_x86_64.whl#sha256=eb227dea25dadacf8cfe6a20fb7206f889723f0990b603ae388d9e5fb5087110 pymongo @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymongo/pymongo-4.8.0-20260326173223-cp313-cp313-macosx_12_0_x86_64.whl#sha256=8b8c0174d55284134d7373fa1116522a241804560b86f05b883d4964692caaaa pymqi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymqi/pymqi-1.12.13-20260326173223-cp313-cp313-macosx_12_0_x86_64.whl#sha256=95ed07eebe53c2720cdaaf5d7de3364c80d373b9286b4a1b301f157592ee8ccb -pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260420125200-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 +pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260421100353-py2.py3-none-any.whl#sha256=0cc4610711208cdc64361464a23d1f2dce88ec5990a12b4bdce4f13b6a169810 pyvmomi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyvmomi/pyvmomi-8.0.3.0.1-20260326173224-py2.py3-none-macosx_12_0_universal2.whl#sha256=dd71476b7308286ed4219373ca9523e4f06bfed3f5932f60e5c67d8d5a673e1e -requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260420125206-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f -securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260420125212-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd -setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260420125218-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 +requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260421100359-py3-none-any.whl#sha256=aae3f1743ab60955ea91e9a095d54997ea56b956bab652bf194379ef4dc6fa7f +securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260421100405-py3-none-any.whl#sha256=861ab6f8c1930e0c05915f32a34f1c4ae1d76ee542ad2b424121e3e26a9fb1dd +setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260421100411-py3-none-any.whl#sha256=b020c62c9ea6c1c3e7a29a8e385967909ceb85a77398f7fbe3c63e2abab52e87 simplejson @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/simplejson/simplejson-3.20.2-20260326173225-cp313-cp313-macosx_10_13_x86_64.whl#sha256=41b283f75ddb7e47b24fb57dc37d88078e51cd777438f368224e1282fc8ee465 -stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260420125224-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 -supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260420125230-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd -vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260420125236-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da -websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260420125242-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 +stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260421100416-py3-none-any.whl#sha256=0cf2a7cb9c915eddc77a591df48e8ab78f93167e8ac77d0efb04eb375f91d8b2 +supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260421100422-py2.py3-none-any.whl#sha256=81d63e968a5133203a334102b8e6e72b1f5ecfc9673c1af7680f9f7e0db8d4fd +vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260421100428-py3-none-any.whl#sha256=df8d667b7bd070532a72c25f37e7259d3673c1908ae726fdfb3087d777caa9da +websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260421100434-py3-none-any.whl#sha256=b628876a9b1eed1d49f1a230bf4b1c21fa3cd9163594f9f9628c8a8b22f97e10 annotated-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/annotated-types/annotated_types-0.7.0-py3-none-any.whl#sha256=1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 attrs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/attrs/attrs-26.1.0-py3-none-any.whl#sha256=c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 aws-msk-iam-sasl-signer-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/aws-msk-iam-sasl-signer-python/aws_msk_iam_sasl_signer_python-1.0.2-py2.py3-none-any.whl#sha256=310eb2db9ca0ff55ed06a24212739b87533e7f1cf6f34e43aabbd97a3b21290e diff --git a/.deps/resolved/windows-x86_64_3.13.txt b/.deps/resolved/windows-x86_64_3.13.txt index 9cbdd35502ac6..aae4cea5f0b9c 100644 --- a/.deps/resolved/windows-x86_64_3.13.txt +++ b/.deps/resolved/windows-x86_64_3.13.txt @@ -1,28 +1,28 @@ -botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260420124956-py3-none-any.whl#sha256=6f69d4818864f67ab304ac48497fefcc7f4fdd9bbcb9403cbc22dbe211177824 +botocore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/botocore/botocore-1.42.72-20260421100149-py3-none-any.whl#sha256=6f69d4818864f67ab304ac48497fefcc7f4fdd9bbcb9403cbc22dbe211177824 cm-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/cm-client/cm_client-45.0.4-20260326173335-py3-none-win_amd64.whl#sha256=6a11ff78eeff20d6a20036e7320a2cb1fd4a5c318a2f1b81b1449efea34048eb colorama @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/colorama/colorama-0.4.6-20260417115313-py2.py3-none-any.whl#sha256=3eb3f5bc1022d96fbe8df6f419cfb07d028e24c055cc3c59517fa49a95ab067a -confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260420124959-cp313-cp313-win_amd64.whl#sha256=a31602816688f4bed64d0221eafd65a213bcfc22d5ad5111d12e6a585e9c5e43 +confluent-kafka @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/confluent-kafka/confluent_kafka-2.13.2-20260421100152-cp313-cp313-win_amd64.whl#sha256=a36f5a37b3471c7cadd85ff8c631db92240291be32c0fb76aa442c31b9f6e7eb ddtrace @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/ddtrace/ddtrace-3.19.5-20260417115314-cp313-cp313-win_amd64.whl#sha256=4f3009589d1c2e0ca84fe8bdb20367de10f090e84cb401ab1d538055927ac0f7 foundationdb @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/foundationdb/foundationdb-6.3.25-20260326173337-py3-none-win_amd64.whl#sha256=828ed23b81a64a5495b1091dd8a66ea51e84c55d9d814c5b6baf7b80dbd9881b -keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260420125005-py3-none-any.whl#sha256=81b21cc6f3283215bb1a993f7c8240a0aeef36775d52ccca99c438075e054fba -openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260420125010-py3-none-any.whl#sha256=4ac88799ad5c355825b9567f5ca00fe9bcbd97cfe2649f60500fbe5f66610732 -os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260420125016-py3-none-any.whl#sha256=668903c54b88cc4db5fd1dcbaf7cf7417220ef70592b70b49a76d202e8a7f4e8 -pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260420125022-py2.py3-none-any.whl#sha256=dbc2e1e0dbf694097374a40b72c890c915302ae4dd7d37c73db9cff8bf520c4b +keystoneauth1 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/keystoneauth1/keystoneauth1-5.13.1-20260421100159-py3-none-any.whl#sha256=81b21cc6f3283215bb1a993f7c8240a0aeef36775d52ccca99c438075e054fba +openstacksdk @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/openstacksdk/openstacksdk-4.10.0-20260421100204-py3-none-any.whl#sha256=4ac88799ad5c355825b9567f5ca00fe9bcbd97cfe2649f60500fbe5f66610732 +os-service-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/os-service-types/os_service_types-1.8.2-20260421100210-py3-none-any.whl#sha256=668903c54b88cc4db5fd1dcbaf7cf7417220ef70592b70b49a76d202e8a7f4e8 +pbr @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pbr/pbr-7.0.3-20260421100216-py2.py3-none-any.whl#sha256=dbc2e1e0dbf694097374a40b72c890c915302ae4dd7d37c73db9cff8bf520c4b psutil @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psutil/psutil-6.0.0-20260326173339-cp37-abi3-win_amd64.whl#sha256=484a4a6e0e16a9adf22b01dc2917426536c8bf63378e445816eee9833aad4f71 -psycopg-c @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psycopg-c/psycopg_c-3.3.3-20260420125025-cp313-cp313-win_amd64.whl#sha256=561e02e857fb496aeceb13613453ed776626195c067948ade900630d95673958 -pymongo @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymongo/pymongo-4.8.0-20260420125029-cp313-cp313-win_amd64.whl#sha256=e5dca78fa828f2cb946ecf92d25724248fc40f93aa179c665bb2e4f27230ba46 -pymqi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymqi/pymqi-1.12.13-20260420125032-cp313-cp313-win_amd64.whl#sha256=a49906cbb85a698a2a845fd264fefc2e05303b62306e945450ab7d125ad62ecd -pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260420125038-py2.py3-none-any.whl#sha256=b3796e82ce920d942b3e2de5af4c8567738b72caffac49ec6d88684fd0365690 +psycopg-c @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/psycopg-c/psycopg_c-3.3.3-20260421100219-cp313-cp313-win_amd64.whl#sha256=7f90c425cf418f9cf66009096134f8279908392c16f468af3b96781704ef2de7 +pymongo @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymongo/pymongo-4.8.0-20260421100222-cp313-cp313-win_amd64.whl#sha256=3d30f69794ad794f74301f24ed49fcd1a2acb8eb981c19465263f68cab18fb8a +pymqi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pymqi/pymqi-1.12.13-20260421100226-cp313-cp313-win_amd64.whl#sha256=dcddff1b1dfcab879595da327f922a762e0380928632f387671e955e02c06bfd +pysnmp-mibs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pysnmp-mibs/pysnmp_mibs-0.1.6-20260421100231-py2.py3-none-any.whl#sha256=b3796e82ce920d942b3e2de5af4c8567738b72caffac49ec6d88684fd0365690 pyvmomi @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pyvmomi/pyvmomi-8.0.3.0.1-20260326173340-py2.py3-none-win_amd64.whl#sha256=c8487fb88881dc6bfc3507b9c351929221c8e85aa5e74179b82cda9d21364218 pywin32 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/pywin32/pywin32-311-20260326173341-cp313-cp313-win_amd64.whl#sha256=1e7784bf006cbfd7ffc4ce238eecc6ae43bfaf5d8132a6401d58a4ad0a36aea5 -requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260420125043-py3-none-any.whl#sha256=7f0bbfc823535680dd0e1ad2aedad8dc958130a180c421288244a33509ea2b0d -securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260420125049-py3-none-any.whl#sha256=4b33353c4d80e63f2417fff600939c30580c49721c76b0f7cf1ea4a18a131c4b -setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260420125055-py3-none-any.whl#sha256=3e5b8439ed8ba11221d6479f27a25a261cba045c357a912dc60e236710504ef6 +requests-unixsocket2 @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/requests-unixsocket2/requests_unixsocket2-1.0.1-20260421100238-py3-none-any.whl#sha256=7f0bbfc823535680dd0e1ad2aedad8dc958130a180c421288244a33509ea2b0d +securesystemslib @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/securesystemslib/securesystemslib-0.28.0-20260421100244-py3-none-any.whl#sha256=4b33353c4d80e63f2417fff600939c30580c49721c76b0f7cf1ea4a18a131c4b +setuptools @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/setuptools/setuptools-82.0.1-20260421100250-py3-none-any.whl#sha256=3e5b8439ed8ba11221d6479f27a25a261cba045c357a912dc60e236710504ef6 simplejson @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/simplejson/simplejson-3.20.2-20260326173342-cp313-cp313-win_amd64.whl#sha256=cd71398a228fa91cd9ee2bb88079ba6693c60a68c14e684d386181a8a5eb67bc -stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260420125101-py3-none-any.whl#sha256=b6ba40fc40b665f04276c98a21b7ddd029b6b5d80bc3c3e68dc58964f2ca0828 -supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260420125107-py2.py3-none-any.whl#sha256=01f0c6c7fbc4b9a0ccb659a6463319eb83742ba0d6c156e5256484aaedef2917 -vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260420125113-py3-none-any.whl#sha256=3a094a32c4a892c32be2acb3e77452c8d7b907b6b6ebaa1e6b0a1f5bbecf4d38 -websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260420125119-py3-none-any.whl#sha256=cb12e51596b0dbb085df6efdbd7d00cc315ea04e88f667513702899903ec39fc +stevedore @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/stevedore/stevedore-5.7.0-20260421100256-py3-none-any.whl#sha256=b6ba40fc40b665f04276c98a21b7ddd029b6b5d80bc3c3e68dc58964f2ca0828 +supervisor @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/supervisor/supervisor-4.3.0-20260421100302-py2.py3-none-any.whl#sha256=01f0c6c7fbc4b9a0ccb659a6463319eb83742ba0d6c156e5256484aaedef2917 +vertica-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/vertica-python/vertica_python-1.4.0-20260421100308-py3-none-any.whl#sha256=3a094a32c4a892c32be2acb3e77452c8d7b907b6b6ebaa1e6b0a1f5bbecf4d38 +websocket-client @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/built/websocket-client/websocket_client-1.9.0-20260421100314-py3-none-any.whl#sha256=cb12e51596b0dbb085df6efdbd7d00cc315ea04e88f667513702899903ec39fc annotated-types @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/annotated-types/annotated_types-0.7.0-py3-none-any.whl#sha256=1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 attrs @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/attrs/attrs-26.1.0-py3-none-any.whl#sha256=c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 aws-msk-iam-sasl-signer-python @ https://agent-int-packages.datadoghq.com/${INTEGRATIONS_WHEELS_STORAGE}/external/aws-msk-iam-sasl-signer-python/aws_msk_iam_sasl_signer_python-1.0.2-py2.py3-none-any.whl#sha256=310eb2db9ca0ff55ed06a24212739b87533e7f1cf6f34e43aabbd97a3b21290e diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f9dd59d1f0b86..dbba6f534c61e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -17,7 +17,7 @@ manifest.json @DataDog/documentation @DataDog/agent-integrations # Dependencies /.deps/ @DataDog/agent-integrations @DataDog/agent-build -/.builders/ @DataDog/agent-build +/.builders/ @DataDog/agent-integrations @DataDog/agent-build /.builders/images/ @DataDog/agent-integrations @DataDog/agent-build /.builders/patches/ @DataDog/agent-integrations @DataDog/agent-build @@ -810,7 +810,7 @@ docs/developer/process/integration-release.md @DataDog/a # As well as the pipelines. /.github/chainguard/ @DataDog/agent-integrations /.github/workflows/ @DataDog/agent-integrations -/.github/workflows/resolve-build-deps.yml @DataDog/agent-build +/.github/workflows/resolve-build-deps.yml @DataDog/agent-integrations @DataDog/agent-build /.gitlab-ci.yml @DataDog/agent-integrations /.github/CODEOWNERS @DataDog/agent-integrations @DataDog/saas-integrations /.github/workflows/config/labeler.yml @DataDog/agent-integrations @DataDog/saas-integrations diff --git a/.github/workflows/measure-disk-usage-master.yml b/.github/workflows/measure-disk-usage-master.yml index d6227bdf8182a..f060d0539c74a 100644 --- a/.github/workflows/measure-disk-usage-master.yml +++ b/.github/workflows/measure-disk-usage-master.yml @@ -16,6 +16,7 @@ on: env: PYTHON_VERSION: "3.13" + INTEGRATIONS_WHEELS_STORAGE: "stable" jobs: measure-disk-usage: diff --git a/checkpoint_quantum_firewall/README.md b/checkpoint_quantum_firewall/README.md index 7d0ea09b84f7d..3871f7ea7bd58 100644 --- a/checkpoint_quantum_firewall/README.md +++ b/checkpoint_quantum_firewall/README.md @@ -10,7 +10,7 @@ This integration ingests URL Filtering logs, Anti Bot logs, Application Control, ### Installation -To install the Checkpoint Quantum Firewall integration, follow the steps below: +To install the Check Point Quantum Firewall integration, follow the steps below: **Note**: This step is not necessary for Agent version >= 7.52.0. @@ -20,7 +20,7 @@ To install the Checkpoint Quantum Firewall integration, follow the steps below: #### Log collection -**Checkpoint Quantum Firewall:** +**Check Point Quantum Firewall:** 1. Collecting logs is disabled by default in the Datadog Agent. Enable it in the `datadog.yaml` file: @@ -28,7 +28,7 @@ To install the Checkpoint Quantum Firewall integration, follow the steps below: logs_enabled: true ``` -2. Add this configuration block to your `checkpoint_quantum_firewall.d/conf.yaml` file to start collecting your Checkpoint Quantum Firewall logs. +2. Add this configuration block to your `checkpoint_quantum_firewall.d/conf.yaml` file to start collecting your Check Point Quantum Firewall logs. See the [sample checkpoint_quantum_firewall.d/conf.yaml][6] for available configuration options. @@ -42,7 +42,7 @@ To install the Checkpoint Quantum Firewall integration, follow the steps below: 3. [Restart the Agent][1]. -4. Configure Syslog Message Forwarding from Checkpoint Quantum Firewall: +4. Configure Syslog Message Forwarding from Check Point Quantum Firewall: 1. Connect to the command line on the Management Server / Log Server. 2. Login to the Expert mode. Enter your administrative credentials (after entering credentials, expert mode is enabled). 3. In order to configure a new target for the exported logs, enter the following commands: @@ -52,7 +52,7 @@ To install the Checkpoint Quantum Firewall integration, follow the steps below: - In the commands above, specify the following Syslog Server Details: - name: The Name of the syslog server. For example: `datadog_syslog`. - - target-server: The destination where you want to send the Checkpoint Quantum Firewall logs. + - target-server: The destination where you want to send the Check Point Quantum Firewall logs. - target-port: The port on which the syslog server is listening (typically 514). - protocol: The protocol name, or which protocol will be used to send logs (TCP/UDP). - format: Format must be 'json'. @@ -60,7 +60,7 @@ To install the Checkpoint Quantum Firewall integration, follow the steps below: ```yaml cp_log_export restart name ``` - 5. For more information about configuring syslog, see the [official Checkpoint documentation][4]. + 5. For more information about configuring syslog, see the [official Check Point documentation][4]. ### Validation @@ -70,23 +70,23 @@ To install the Checkpoint Quantum Firewall integration, follow the steps below: ### Logs -The Checkpoint Quantum Firewall integration collects Firewall, URL Filtering, IPS, Identity Awareness, Application Control, Threat Emulation, Audit, Anti Ransomware, Anti Spam & Email Security, Anti Exploit, Anti Bot, Anti Virus, HTTPS Inspection, DLP, and Anti Malware logs. +The Check Point Quantum Firewall integration collects Firewall, URL Filtering, IPS, Identity Awareness, Application Control, Threat Emulation, Audit, Anti Ransomware, Anti Spam & Email Security, Anti Exploit, Anti Bot, Anti Virus, HTTPS Inspection, DLP, and Anti Malware logs. ### Metrics -The Checkpoint Quantum Firewall integration does not include any metrics. +The Check Point Quantum Firewall integration does not include any metrics. ### Events -The Checkpoint Quantum Firewall integration does not include any events. +The Check Point Quantum Firewall integration does not include any events. ### Service Checks -The Checkpoint Quantum Firewall integration does not include any service checks. +The Check Point Quantum Firewall integration does not include any service checks. ## Troubleshooting -**Checkpoint Quantum Firewall:** +**Check Point Quantum Firewall:** #### Permission denied while port binding @@ -124,7 +124,7 @@ Make sure that traffic is bypassed from the configured port if the firewall is e If you see the **Port Already in Use** error, see the following instructions. The example below is for PORT-NO = 514: -On systems using Syslog, if the Agent listens for Checkpoint Quantum Firewall logs on port 514, the following error can appear in the Agent logs: `Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use`. +On systems using Syslog, if the Agent listens for Check Point Quantum Firewall logs on port 514, the following error can appear in the Agent logs: `Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use`. This error occurs because by default, Syslog listens on port 514. To resolve this error, take **one** of the following steps: diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_bot.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_bot.json index a937b44af7142..f006ce2b6a961 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_bot.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_bot.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Anti Bot", + "title": "Check Point Quantum Firewall - Anti Bot", "description": "- This dashboard gives insights about anti-bot related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_exploit.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_exploit.json index df91920ca3821..06fc8bcdfcb26 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_exploit.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_exploit.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Anti Exploit", + "title": "Check Point Quantum Firewall - Anti Exploit", "description": "- This dashboard gives insights about anti-exploits related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_malware.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_malware.json index e3b3d6877abed..b3c7a7970f2e4 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_malware.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_malware.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Anti Malware", + "title": "Check Point Quantum Firewall - Anti Malware", "description": "- This dashboard gives insights about anti-malware related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_ransomware.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_ransomware.json index e5142a30db413..1b78e349258eb 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_ransomware.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_ransomware.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Anti Ransomware", + "title": "Check Point Quantum Firewall - Anti Ransomware", "description": "- This dashboard gives insights about anti-ransomware related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_spam_and_email_security.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_spam_and_email_security.json index dd3b2a67e76e6..a6964e0ff3b1a 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_spam_and_email_security.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_spam_and_email_security.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Anti Spam & Email Security", + "title": "Check Point Quantum Firewall - Anti Spam & Email Security", "description": "- This dashboard gives insight about anti-spam and email security related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_virus.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_virus.json index 673382f2cbad9..72171619a16e6 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_virus.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_anti_virus.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Anti Virus", + "title": "Check Point Quantum Firewall - Anti Virus", "description": "- This dashboard gives insights about anti-virus related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_application_control.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_application_control.json index b41a881428145..071f08786e80b 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_application_control.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_application_control.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Application Control", + "title": "Check Point Quantum Firewall - Application Control", "description": "- This dashboard gives insights about application control related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_audit.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_audit.json index 599c4edf56c6e..fc4767b53ef83 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_audit.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_audit.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Audit", + "title": "Check Point Quantum Firewall - Audit", "description": "- This dashboard gives insights about audit log details.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_dlp.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_dlp.json index 6fb37324d66e1..d90347388fa59 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_dlp.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_dlp.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - DLP", + "title": "Check Point Quantum Firewall - DLP", "description": "- This dashboard gives insights about Data Loss Prevention (DLP) related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_firewall.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_firewall.json index 23cfb8405b51c..83f48071a5c42 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_firewall.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_firewall.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Firewall", + "title": "Check Point Quantum Firewall - Firewall", "description": "- This dashboard gives insights about firewall related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_https_inspection.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_https_inspection.json index a3dbe5073c828..ace41a7fc43ae 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_https_inspection.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_https_inspection.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - HTTPS Inspection", + "title": "Check Point Quantum Firewall - HTTPS Inspection", "description": "- This dashboard gives insights about HTTPS Inspection type of logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_identity_awareness.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_identity_awareness.json index 3f91b549ecbf8..5313d073e4699 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_identity_awareness.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_identity_awareness.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Identity Awareness", + "title": "Check Point Quantum Firewall - Identity Awareness", "description": "- This dashboard gives insights about identity awareness related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_ips.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_ips.json index ea1130d462423..712503182cbf3 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_ips.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_ips.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - IPS", + "title": "Check Point Quantum Firewall - IPS", "description": "- This dashboard gives insights about Intrusion Prevention System (IPS) related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_threat_emulation.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_threat_emulation.json index 77ec56c9a2205..21780c25a29f1 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_threat_emulation.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_threat_emulation.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - Threat Emulation", + "title": "Check Point Quantum Firewall - Threat Emulation", "description": "- This dashboard gives insights about threat emulation related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_url_filtering.json b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_url_filtering.json index 1b04926c6820f..a93bd82618f2e 100644 --- a/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_url_filtering.json +++ b/checkpoint_quantum_firewall/assets/dashboards/checkpoint_quantum_firewall_url_filtering.json @@ -1,5 +1,5 @@ { - "title": "Checkpoint Quantum Firewall - URL Filtering", + "title": "Check Point Quantum Firewall - URL Filtering", "description": "- This dashboard gives insights about URL filtering related logs.", "widgets": [ { diff --git a/checkpoint_quantum_firewall/assets/logs/checkpoint-quantum-firewall.yaml b/checkpoint_quantum_firewall/assets/logs/checkpoint-quantum-firewall.yaml index 5a900aecc1a15..e436c2439404b 100644 --- a/checkpoint_quantum_firewall/assets/logs/checkpoint-quantum-firewall.yaml +++ b/checkpoint_quantum_firewall/assets/logs/checkpoint-quantum-firewall.yaml @@ -100,21 +100,21 @@ facets: source: log - facetType: list groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Application Name path: checkpoint.quantum.firewall.appi_name source: log type: string - facetType: list groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Application Risk path: checkpoint.quantum.firewall.app_risk_str source: log type: string - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Client Inbound Bytes path: checkpoint.quantum.firewall.client_inbound_bytes source: log @@ -124,14 +124,14 @@ facets: name: byte - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Client Inbound Packets path: checkpoint.quantum.firewall.client_inbound_packets source: log type: integer - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Client Outbound Bytes path: checkpoint.quantum.firewall.client_outbound_bytes source: log @@ -141,28 +141,28 @@ facets: name: byte - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Client Outbound Packets path: checkpoint.quantum.firewall.client_outbound_packets source: log type: integer - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Server Inbound Packets path: checkpoint.quantum.firewall.server_inbound_packets source: log type: integer - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Server Outbound Packets path: checkpoint.quantum.firewall.server_outbound_packets source: log type: integer - facetType: range groups: - - Checkpoint Quantum Firewall + - Check Point Quantum Firewall name: Total Bytes path: checkpoint.quantum.firewall.bytes source: log @@ -172,7 +172,7 @@ facets: name: byte pipeline: type: pipeline - name: Checkpoint Quantum Firewall + name: Check Point Quantum Firewall enabled: true filter: query: "source:checkpoint-quantum-firewall" diff --git a/checkpoint_quantum_firewall/manifest.json b/checkpoint_quantum_firewall/manifest.json index 88df3017e70ab..439eeef5fdbda 100644 --- a/checkpoint_quantum_firewall/manifest.json +++ b/checkpoint_quantum_firewall/manifest.json @@ -9,46 +9,46 @@ "configuration": "README.md#Setup", "support": "README.md#Support", "changelog": "CHANGELOG.md", - "description": "Gain insights into Checkpoint Quantum Firewall logs", - "title": "Checkpoint Quantum Firewall", + "description": "Gain insights into Check Point Quantum Firewall logs", + "title": "Check Point Quantum Firewall", "media": [ { - "caption": "Checkpoint Quantum Firewall - Audit", + "caption": "Check Point Quantum Firewall - Audit", "image_url": "images/checkpoint_quantum_firewall_audit.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - Application Control", + "caption": "Check Point Quantum Firewall - Application Control", "image_url": "images/checkpoint_quantum_firewall_application_control.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - URL Filtering", + "caption": "Check Point Quantum Firewall - URL Filtering", "image_url": "images/checkpoint_quantum_firewall_url_filtering.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - Identity Awareness", + "caption": "Check Point Quantum Firewall - Identity Awareness", "image_url": "images/checkpoint_quantum_firewall_identity_awareness.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - IPS", + "caption": "Check Point Quantum Firewall - IPS", "image_url": "images/checkpoint_quantum_firewall_ips.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - Firewall", + "caption": "Check Point Quantum Firewall - Firewall", "image_url": "images/checkpoint_quantum_firewall_firewall.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - Threat Emulation", + "caption": "Check Point Quantum Firewall - Threat Emulation", "image_url": "images/checkpoint_quantum_firewall_threat_emulation.png", "media_type": "image" }, { - "caption": "Checkpoint Quantum Firewall - Anti Bot", + "caption": "Check Point Quantum Firewall - Anti Bot", "image_url": "images/checkpoint_quantum_firewall_anti_bot.png", "media_type": "image" } @@ -79,21 +79,21 @@ } }, "dashboards": { - "Checkpoint Quantum Firewall: Audit": "assets/dashboards/checkpoint_quantum_firewall_audit.json", - "Checkpoint Quantum Firewall: Application Control": "assets/dashboards/checkpoint_quantum_firewall_application_control.json", - "Checkpoint Quantum Firewall: URL Filtering": "assets/dashboards/checkpoint_quantum_firewall_url_filtering.json", - "Checkpoint Quantum Firewall: Identity Awareness": "assets/dashboards/checkpoint_quantum_firewall_identity_awareness.json", - "Checkpoint Quantum Firewall: DLP": "assets/dashboards/checkpoint_quantum_firewall_dlp.json", - "Checkpoint Quantum Firewall: IPS": "assets/dashboards/checkpoint_quantum_firewall_ips.json", - "Checkpoint Quantum Firewall: Anti Spam & Email Security": "assets/dashboards/checkpoint_quantum_firewall_anti_spam_and_email_security.json", - "Checkpoint Quantum Firewall: Anti Exploit": "assets/dashboards/checkpoint_quantum_firewall_anti_exploit.json", - "Checkpoint Quantum Firewall: Firewall": "assets/dashboards/checkpoint_quantum_firewall_firewall.json", - "Checkpoint Quantum Firewall: Anti Ransomware": "assets/dashboards/checkpoint_quantum_firewall_anti_ransomware.json", - "Checkpoint Quantum Firewall: Threat Emulation": "assets/dashboards/checkpoint_quantum_firewall_threat_emulation.json", - "Checkpoint Quantum Firewall: Anti Virus": "assets/dashboards/checkpoint_quantum_firewall_anti_virus.json", - "Checkpoint Quantum Firewall: HTTPS Inspection": "assets/dashboards/checkpoint_quantum_firewall_https_inspection.json", - "Checkpoint Quantum Firewall: Anti Bot": "assets/dashboards/checkpoint_quantum_firewall_anti_bot.json", - "Checkpoint Quantum Firewall: Anti Malware": "assets/dashboards/checkpoint_quantum_firewall_anti_malware.json" + "Check Point Quantum Firewall: Audit": "assets/dashboards/checkpoint_quantum_firewall_audit.json", + "Check Point Quantum Firewall: Application Control": "assets/dashboards/checkpoint_quantum_firewall_application_control.json", + "Check Point Quantum Firewall: URL Filtering": "assets/dashboards/checkpoint_quantum_firewall_url_filtering.json", + "Check Point Quantum Firewall: Identity Awareness": "assets/dashboards/checkpoint_quantum_firewall_identity_awareness.json", + "Check Point Quantum Firewall: DLP": "assets/dashboards/checkpoint_quantum_firewall_dlp.json", + "Check Point Quantum Firewall: IPS": "assets/dashboards/checkpoint_quantum_firewall_ips.json", + "Check Point Quantum Firewall: Anti Spam & Email Security": "assets/dashboards/checkpoint_quantum_firewall_anti_spam_and_email_security.json", + "Check Point Quantum Firewall: Anti Exploit": "assets/dashboards/checkpoint_quantum_firewall_anti_exploit.json", + "Check Point Quantum Firewall: Firewall": "assets/dashboards/checkpoint_quantum_firewall_firewall.json", + "Check Point Quantum Firewall: Anti Ransomware": "assets/dashboards/checkpoint_quantum_firewall_anti_ransomware.json", + "Check Point Quantum Firewall: Threat Emulation": "assets/dashboards/checkpoint_quantum_firewall_threat_emulation.json", + "Check Point Quantum Firewall: Anti Virus": "assets/dashboards/checkpoint_quantum_firewall_anti_virus.json", + "Check Point Quantum Firewall: HTTPS Inspection": "assets/dashboards/checkpoint_quantum_firewall_https_inspection.json", + "Check Point Quantum Firewall: Anti Bot": "assets/dashboards/checkpoint_quantum_firewall_anti_bot.json", + "Check Point Quantum Firewall: Anti Malware": "assets/dashboards/checkpoint_quantum_firewall_anti_malware.json" } }, "author": { diff --git a/datadog_checks_dev/changelog.d/23348.fixed b/datadog_checks_dev/changelog.d/23348.fixed new file mode 100644 index 0000000000000..95e926ebd2f7e --- /dev/null +++ b/datadog_checks_dev/changelog.d/23348.fixed @@ -0,0 +1 @@ +Fix `apply_overrides` to support nested template references in spec.yaml overrides. diff --git a/datadog_checks_dev/datadog_checks/dev/tooling/configuration/template.py b/datadog_checks_dev/datadog_checks/dev/tooling/configuration/template.py index 6d2f15a22dab7..9cd79859df8e8 100644 --- a/datadog_checks_dev/datadog_checks/dev/tooling/configuration/template.py +++ b/datadog_checks_dev/datadog_checks/dev/tooling/configuration/template.py @@ -75,8 +75,45 @@ def load(self, template): return data - @staticmethod - def apply_overrides(template, overrides): + def _expand_and_find(self, items: list, name: str, visited: set | None = None) -> dict | None: + """Find a named item in a list, expanding nested template refs in-place as needed. + + When the named item lives inside a nested ``- template:`` reference, that reference + is loaded and spliced into ``items`` in-place so that subsequent spec.py processing + sees the already-expanded data with any overrides applied. + """ + if visited is None: + visited = set() + + for item in items: + if isinstance(item, dict) and item.get('name') == name: + return item + + for idx, item in enumerate(items): + if not isinstance(item, dict) or 'name' in item or 'template' not in item: + continue + tmpl_name = item['template'] + if tmpl_name in visited: + continue + visited.add(tmpl_name) + try: + nested = self.load(tmpl_name) + except Exception: + continue + + if isinstance(nested, dict): + if nested.get('name') == name: + items[idx] = nested + return nested + elif isinstance(nested, list): + found = self._expand_and_find(nested, name, visited) + if found is not None: + items[idx : idx + 1] = nested + return found + + return None + + def apply_overrides(self, template, overrides): errors = [] for override, value in sorted(overrides.items()): @@ -100,10 +137,9 @@ def apply_overrides(template, overrides): ) break elif isinstance(root, list): - for item in root: - if isinstance(item, dict) and item.get('name') == key: - root = item - break + found = self._expand_and_find(root, key) + if found is not None: + root = found else: intermediate_error = ( f"Template override `{'.'.join(override_keys[:i])}` has no named mapping `{key}`" @@ -123,10 +159,12 @@ def apply_overrides(template, overrides): if isinstance(root, dict): root[final_key] = value elif isinstance(root, list): - for i, item in enumerate(root): - if isinstance(item, dict) and item.get('name') == final_key: - root[i] = value - break + found = self._expand_and_find(root, final_key) + if found is not None: + for i, item in enumerate(root): + if item is found: + root[i] = value + break else: intermediate_error = 'Template override has no named mapping `{}`'.format( '.'.join(override_keys) if override_keys else override diff --git a/datadog_checks_dev/tests/tooling/configuration/test_template.py b/datadog_checks_dev/tests/tooling/configuration/test_template.py index ea01af94c0c98..7e79ae9f467e7 100644 --- a/datadog_checks_dev/tests/tooling/configuration/test_template.py +++ b/datadog_checks_dev/tests/tooling/configuration/test_template.py @@ -230,3 +230,25 @@ def test_primitive_recurse(self): assert len(errors) == 1 assert errors[0] == 'Template override `proxy.description` does not refer to a mapping' + + def test_nested_template_override(self): + """Overrides should reach fields in nested template refs.""" + templates = ConfigTemplates() + + # instances/default → instances/all_integrations → instances/tags (tags field) + template = templates.load('instances/default') + errors = templates.apply_overrides(template, {'tags.display_priority': 5}) + assert not errors + + tags_item = next((item for item in template if isinstance(item, dict) and item.get('name') == 'tags'), None) + assert tags_item is not None + assert tags_item['display_priority'] == 5 + + def test_nested_template_override_not_found(self): + """An override for a name absent from nested templates still reports an error.""" + templates = ConfigTemplates() + + template = templates.load('instances/default') + errors = templates.apply_overrides(template, {'nonexistent_field.display_priority': 5}) + + assert len(errors) == 1 diff --git a/ddev/CHANGELOG.md b/ddev/CHANGELOG.md index 1cfe8a73a7607..660e833e83434 100644 --- a/ddev/CHANGELOG.md +++ b/ddev/CHANGELOG.md @@ -2,6 +2,22 @@ +## 16.0.0 / 2026-04-21 + +***Changed***: + +* Bump datadog_checks_dev requirement to ~=37.0 ([#23319](https://github.com/DataDog/integrations-core/pull/23319)) + +***Added***: + +* - Support size computation for lockfiles in both new and old formats. New CLI param (and envvar) to switch between storage locations. + - Command to trigger the promotion of wheels for PRs that bump dependencies. ([#23063](https://github.com/DataDog/integrations-core/pull/23063)) +* Add conditional message filtering to EventBusOrchestrator ([#23344](https://github.com/DataDog/integrations-core/pull/23344)) + +***Fixed***: + +* Harden dependency-wheel promotion workflow against untrusted PR code. ([#23372](https://github.com/DataDog/integrations-core/pull/23372)) + ## 15.0.0 / 2026-04-15 ***Changed***: diff --git a/ddev/changelog.d/23063.added b/ddev/changelog.d/23063.added deleted file mode 100644 index ab2a06d558a2b..0000000000000 --- a/ddev/changelog.d/23063.added +++ /dev/null @@ -1,2 +0,0 @@ -- Support size computation for lockfiles in both new and old formats. New CLI param (and envvar) to switch between storage locations. -- Command to trigger the promotion of wheels for PRs that bump dependencies. diff --git a/ddev/changelog.d/23319.changed b/ddev/changelog.d/23319.changed deleted file mode 100644 index a17ee71487655..0000000000000 --- a/ddev/changelog.d/23319.changed +++ /dev/null @@ -1 +0,0 @@ -Bump datadog_checks_dev requirement to ~=37.0 diff --git a/ddev/changelog.d/23344.added b/ddev/changelog.d/23344.added deleted file mode 100644 index 4c068ca1589cb..0000000000000 --- a/ddev/changelog.d/23344.added +++ /dev/null @@ -1 +0,0 @@ -Add conditional message filtering to EventBusOrchestrator diff --git a/ddev/changelog.d/23372.fixed b/ddev/changelog.d/23372.fixed deleted file mode 100644 index c9a67e3d3f5b8..0000000000000 --- a/ddev/changelog.d/23372.fixed +++ /dev/null @@ -1 +0,0 @@ -Harden dependency-wheel promotion workflow against untrusted PR code. diff --git a/ddev/src/ddev/cli/size/utils/common_params.py b/ddev/src/ddev/cli/size/utils/common_params.py index 13b9846e9d835..8a27a4a2e2198 100644 --- a/ddev/src/ddev/cli/size/utils/common_params.py +++ b/ddev/src/ddev/cli/size/utils/common_params.py @@ -27,7 +27,7 @@ def common_params(func: Callable) -> Callable: @click.option( "--wheels-storage", type=click.Choice(["dev", "stable"]), - required=True, + default='dev', # 'dev' is a strict superset of 'stable', so we're more likely to find wheels there. envvar="INTEGRATIONS_WHEELS_STORAGE", help=( "Which wheel storage tier to resolve dependency URLs against. " diff --git a/guarddog/changelog.d/23377.fixed b/guarddog/changelog.d/23377.fixed new file mode 100644 index 0000000000000..3b8a804ef6fff --- /dev/null +++ b/guarddog/changelog.d/23377.fixed @@ -0,0 +1 @@ +Sanitize guarddog_path argument \ No newline at end of file diff --git a/guarddog/datadog_checks/guarddog/check.py b/guarddog/datadog_checks/guarddog/check.py index 765a0ce98aa49..1e16126a2a631 100644 --- a/guarddog/datadog_checks/guarddog/check.py +++ b/guarddog/datadog_checks/guarddog/check.py @@ -8,8 +8,6 @@ from datadog_checks.base import AgentCheck, ConfigurationError from datadog_checks.base.utils.time import get_current_datetime, get_timestamp -from . import constants - class GuarddogCheck(AgentCheck): __NAMESPACE__ = "guarddog" @@ -27,10 +25,10 @@ def __init__(self, name, init_config, instances): self.guarddog_path = str(init_config.get('guarddog_path')).strip() self.check_initializations.append(self.validate_config) - def get_guarddog_output(self, cmd_with_abs_path) -> subprocess.CompletedProcess: + def get_guarddog_output(self, command_parts) -> subprocess.CompletedProcess: try: - self.log.debug("Running command: %s", cmd_with_abs_path) - cmd_output_with_abs_path = subprocess.run(cmd_with_abs_path.split(), capture_output=True, text=True) + self.log.debug("Running command: %s", command_parts) + cmd_output_with_abs_path = subprocess.run(command_parts, capture_output=True, text=True) return cmd_output_with_abs_path except FileNotFoundError as cmd_error: err_message = "GuardDog is not found at configured path." @@ -70,11 +68,9 @@ def validate_config(self) -> None: def check(self, _): try: current_time = get_current_datetime() - guarddog_command = constants.GUARDDOG_COMMAND.format( - package_ecosystem=self.package_ecosystem, - path=self.path, + cmd_result = self.get_guarddog_output( + [self.guarddog_path, self.package_ecosystem, "verify", self.path, "--output-format=json"] ) - cmd_result = self.get_guarddog_output(self.guarddog_path + " " + guarddog_command) if cmd_result.returncode != 0: cmd_result_err_message = f"GuardDog command failed: {cmd_result.stderr}" self.log.error(cmd_result_err_message) diff --git a/guarddog/datadog_checks/guarddog/constants.py b/guarddog/datadog_checks/guarddog/constants.py index d1597e136310e..7d16c8ec0ab6d 100644 --- a/guarddog/datadog_checks/guarddog/constants.py +++ b/guarddog/datadog_checks/guarddog/constants.py @@ -3,4 +3,3 @@ # Licensed under a 3-clause BSD style license (see LICENSE) VALID_ECOSYSTEMS = ["pypi", "npm", "go", "github_action"] DATE_FORMAT = "%Y-%m-%dT%H:%M:%SZ" -GUARDDOG_COMMAND = "{package_ecosystem} verify {path} --output-format=json" diff --git a/guarddog/tests/test_unit.py b/guarddog/tests/test_unit.py index e06fc2585f9fd..cc2e9462b9e9f 100644 --- a/guarddog/tests/test_unit.py +++ b/guarddog/tests/test_unit.py @@ -166,7 +166,7 @@ def test_get_guarddog_output(config, instance, mocker): expected_returncode = 0 check.package_ecosystem = "pypi" check.path = dependency_file_path - cmd = "guarddog pypi verify /tmp/dependency_file_path/requirements.txt --output-format=json" + cmd = ["guarddog", "pypi", "verify", "/tmp/dependency_file_path/requirements.txt", "--output-format=json"] mock_completed_process = Mock(stdout=expected_stdout, stderr=expected_stderr, returncode=expected_returncode) diff --git a/ping_federate/README.md b/ping_federate/README.md index 1ec825237f2b5..cbad755dbbbfa 100644 --- a/ping_federate/README.md +++ b/ping_federate/README.md @@ -62,7 +62,7 @@ Linux command ### Logs -The Ping Federate integration collects the following log types. +The PingFederate integration collects the following log types. | Format | Event Types | | --------- | -------------- | @@ -95,15 +95,15 @@ Additional field log format: ### Metrics -The Ping Federate does not include any metrics. +The PingFederate does not include any metrics. ### Events -The Ping Federate integration does not include any events. +The PingFederate integration does not include any events. ### Service Checks -The Ping Federate integration does not include any service checks. +The PingFederate integration does not include any service checks. ## Troubleshooting diff --git a/ping_federate/assets/dashboards/ping_federate_audit.json b/ping_federate/assets/dashboards/ping_federate_audit.json index a7480d4e26c38..62733e2acaf4f 100644 --- a/ping_federate/assets/dashboards/ping_federate_audit.json +++ b/ping_federate/assets/dashboards/ping_federate_audit.json @@ -230,7 +230,7 @@ { "definition": { "background_color": "vivid_blue", - "content": "\nDatadog Cloud SIEM analyzes and correlates Ping Federate Audit logs to detect threats to your environment in real time. If you don't see signals please make sure you've enabled [Datadog Cloud SIEM](/security?query=source%3Aping-federate%20service%3Aaudit%20). ", + "content": "\nDatadog Cloud SIEM analyzes and correlates PingFederate Audit logs to detect threats to your environment in real time. If you don't see signals please make sure you've enabled [Datadog Cloud SIEM](/security?query=source%3Aping-federate%20service%3Aaudit%20). ", "font_size": "14", "has_padding": true, "show_tick": false, diff --git a/prefect/CHANGELOG.md b/prefect/CHANGELOG.md index dcd4fd5ebb878..d02d3f255f8ce 100644 --- a/prefect/CHANGELOG.md +++ b/prefect/CHANGELOG.md @@ -2,6 +2,12 @@ +## 1.0.1 / 2026-04-21 + +***Fixed***: + +* Adds validation for event pagination URLs. ([#23354](https://github.com/DataDog/integrations-core/pull/23354)) + ## 1.0.0 / 2026-03-18 / Agent 7.78.0 ***Added***: diff --git a/prefect/datadog_checks/prefect/__about__.py b/prefect/datadog_checks/prefect/__about__.py index e09e075b64ac4..21e76f62e2fbd 100644 --- a/prefect/datadog_checks/prefect/__about__.py +++ b/prefect/datadog_checks/prefect/__about__.py @@ -1,4 +1,4 @@ # (C) Datadog, Inc. 2026-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -__version__ = '1.0.0' +__version__ = '1.0.1' diff --git a/prefect/datadog_checks/prefect/check.py b/prefect/datadog_checks/prefect/check.py index e21b9c130f9a3..04747b3380346 100644 --- a/prefect/datadog_checks/prefect/check.py +++ b/prefect/datadog_checks/prefect/check.py @@ -8,6 +8,7 @@ from functools import cached_property from json import JSONDecodeError from typing import TYPE_CHECKING, Any, Literal +from urllib.parse import urlparse from requests.exceptions import ConnectionError, HTTPError, InvalidURL, Timeout @@ -667,6 +668,9 @@ class PrefectClient: def __init__(self, url: str, http: RequestsWrapper, log: CheckLoggingAdapter): self.http_exceptions = (HTTPError, InvalidURL, ConnectionError, Timeout, JSONDecodeError) self.url = url + parsed_url = urlparse(url) + self.base_url_scheme = parsed_url.scheme + self.base_url_netloc = parsed_url.netloc self.http = http self.log = log @@ -689,6 +693,11 @@ def post(self, endpoint: str, payload: dict | None = None) -> Any: except self.http_exceptions: raise + def check_pagination_url(self, next_page: str): + parsed_next_page = urlparse(next_page) + if parsed_next_page.scheme != self.base_url_scheme or parsed_next_page.netloc != self.base_url_netloc: + raise InvalidURL(f'Invalid next_page URL with unexpected host: {next_page}') + def paginate_filter(self, endpoint: str, payload: dict | None = None) -> list[dict]: """Implements pagination for /filter endpoints using limit/offset loop.""" payload = dict(payload) if payload else {} @@ -728,9 +737,10 @@ def paginate_events(self, endpoint: str, payload: dict | None = None) -> list[di events.extend(response.get("events", [])) if not response.get("next_page"): break - try: - response = self.get(response.get("next_page"), pagination=True) + next_page = response.get("next_page") + self.check_pagination_url(next_page) + response = self.get(next_page, pagination=True) except self.http_exceptions as e: self.log.error("Could not collect next page of events: %s, data is incomplete", e) return events diff --git a/prefect/tests/test_unit.py b/prefect/tests/test_unit.py index e5116f2a0acc9..724100701e803 100644 --- a/prefect/tests/test_unit.py +++ b/prefect/tests/test_unit.py @@ -1,11 +1,14 @@ from datetime import datetime, timezone from typing import Callable, NamedTuple +from unittest.mock import Mock import pytest +from requests.exceptions import InvalidURL from datadog_checks.base.stubs.aggregator import AggregatorStub from datadog_checks.dev.utils import get_metadata_metrics from datadog_checks.prefect import PrefectCheck +from datadog_checks.prefect.check import PrefectClient WP1_TAGS = ["work_pool_id:wp-1", "work_pool_name:default-pool", "work_pool_type:process"] WP2_TAGS = ["work_pool_id:wp-2", "work_pool_name:paused-pool", "work_pool_type:docker"] @@ -600,6 +603,62 @@ class EventCase(NamedTuple): pytestmark = [pytest.mark.usefixtures("mock_prefect_client"), pytest.mark.unit] +class MockResponse: + def __init__(self, payload: dict): + self.payload = payload + + def raise_for_status(self): + return None + + def json(self) -> dict: + return self.payload + + +def test_paginate_events_rejects_external_next_page(): + http = Mock() + http.post.return_value = MockResponse( + { + "events": [{"id": "event-1"}], + "next_page": "http://attacker.example/evil", + } + ) + log = Mock() + client = PrefectClient("http://prefect.local/api", http, log) + + events = client.paginate_events("/events/filter", {}) + + assert events == [{"id": "event-1"}] + http.get.assert_not_called() + log.error.assert_called_once() + args = log.error.call_args[0] + assert args[0] == "Could not collect next page of events: %s, data is incomplete" + assert isinstance(args[1], InvalidURL) + assert str(args[1]) == "Invalid next_page URL with unexpected host: http://attacker.example/evil" + + +def test_paginate_events_allows_same_host_absolute_next_page(): + http = Mock() + http.post.return_value = MockResponse( + { + "events": [{"id": "event-1"}], + "next_page": "http://prefect.local/api/events/filter?page=2", + } + ) + http.get.return_value = MockResponse( + { + "events": [{"id": "event-2"}], + "next_page": None, + } + ) + log = Mock() + client = PrefectClient("http://prefect.local/api", http, log) + + events = client.paginate_events("/events/filter", {}) + + assert events == [{"id": "event-1"}, {"id": "event-2"}] + http.get.assert_called_once_with("http://prefect.local/api/events/filter?page=2") + + @pytest.fixture() def ready_check(check: PrefectCheck, dd_run_check: Callable, aggregator, mocker) -> PrefectCheck: mocker.patch( diff --git a/requirements-agent-release.txt b/requirements-agent-release.txt index 01d3bb329c328..12a0936df6c3d 100644 --- a/requirements-agent-release.txt +++ b/requirements-agent-release.txt @@ -186,7 +186,7 @@ datadog-ping-federate==2.2.0 datadog-postfix==3.4.1; sys_platform != 'win32' datadog-postgres==23.7.0 datadog-powerdns-recursor==5.4.0 -datadog-prefect==1.0.0 +datadog-prefect==1.0.1 datadog-presto==3.4.0 datadog-process==5.5.1 datadog-prometheus==6.3.0