Skip to content

Fix wrong handling of NXDOMAIN#803

Merged
azgabur merged 1 commit intoKuadrant:mainfrom
azgabur:is_nxdomain_fix_fix
Oct 24, 2025
Merged

Fix wrong handling of NXDOMAIN#803
azgabur merged 1 commit intoKuadrant:mainfrom
azgabur:is_nxdomain_fix_fix

Conversation

@azgabur
Copy link
Copy Markdown
Member

@azgabur azgabur commented Oct 24, 2025

Fix bug introduced in #801 where NXDOMAIN exception would be returned instead of True This was happening with gcp provider.

  • Using .resolve_name() instead of .resolve() due to better interface and it checking A and AAAA records inherently
  • NOANSWER is raised when the resolver does not find any A or AAAA records

Signed-off-by: Alex Zgabur <azgabur@redhat.com>
@azgabur
Copy link
Copy Markdown
Member Author

azgabur commented Oct 24, 2025

/make dnstls

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Oct 24, 2025

Test run completed (make dnstls) and can be found here

Short Test Summary

Full Output
poetry lock
Creating virtualenv kuadrant-testsuite-6EPd9kcO-py3.12 in /home/runner/.cache/pypoetry/virtualenvs
Updating dependencies
Resolving dependencies...

Writing lock file
Installing dependencies from lock file

Package operations: 59 installs, 0 updates, 0 removals

  - Installing pycparser (2.23)
  - Installing six (1.17.0)
  - Installing certifi (2025.10.5)
  - Installing cffi (2.0.0)
  - Installing charset-normalizer (3.4.4)
  - Installing h11 (0.16.0)
  - Installing idna (3.11)
  - Installing iniconfig (2.3.0)
  - Installing jmespath (1.0.1)
  - Installing lark (0.12.0)
  - Installing packaging (25.0)
  - Installing pluggy (1.6.0)
  - Installing pygments (2.19.2)
  - Installing python-dateutil (2.9.0.post0)
  - Installing pyyaml (6.0.3)
  - Installing sniffio (1.3.1)
  - Installing types-python-dateutil (2.9.0.20251008)
  - Installing types-pyyaml (6.0.12.20250915)
  - Installing typing-extensions (4.15.0)
  - Installing urllib3 (2.5.0)
  - Installing anyio (4.11.0)
  - Installing cel-python (0.2.0)
  - Installing cryptography (46.0.3)
  - Installing google-re2 (1.1.20250805)
  - Installing grpcio (1.76.0)
  - Installing hpack (4.1.0)
  - Installing httpcore (1.0.9)
  - Installing hyperframe (6.1.0)
  - Installing markupsafe (3.0.3)
  - Installing protobuf (6.33.0)
  - Installing pyproject-hooks (1.2.0)
  - Installing pytest (8.4.2)
  - Installing requests (2.32.5)
  - Installing aiofiles (25.1.0)
  - Installing async-property (0.2.2)
  - Installing build (1.3.0)
  - Installing deprecation (2.1.0)
  - Installing execnet (2.1.1)
  - Installing googleapis-common-protos (1.71.0)
  - Installing grpc-interceptor (0.15.4)
  - Installing h2 (4.3.0)
  - Installing httpx (0.28.1)
  - Installing jinja2 (3.1.6)
  - Installing jwcrypto (1.5.6)
  - Installing protovalidate (1.0.0)
  - Installing pytest-metadata (3.1.1)
  - Installing requests-toolbelt (1.0.0)
  - Installing apyproxy (0.2.2)
  - Installing authzed (1.23.0)
  - Installing backoff (2.2.1)
  - Installing dnspython (2.8.0)
  - Installing dynaconf (3.2.12)
  - Installing lxml (6.0.2)
  - Installing openshift-client (2.0.5)
  - Installing pyjwt (2.10.1)
  - Installing pytest-html (4.1.1)
  - Installing pytest-xdist (3.8.0)
  - Installing python-keycloak (5.8.1)
  - Installing weakget (1.0)
Installing /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/lib/python3.12/site-packages/google/api/annotations_pb2.py over existing file
Installing /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/lib/python3.12/site-packages/google/api/annotations_pb2.pyi over existing file
Installing /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/lib/python3.12/site-packages/google/api/http_pb2.py over existing file
Installing /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/lib/python3.12/site-packages/google/api/http_pb2.pyi over existing file
Installing /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/lib/python3.12/site-packages/google/rpc/status_pb2.py over existing file
Installing /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/lib/python3.12/site-packages/google/rpc/status_pb2.pyi over existing file
poetry run python -m pytest --tb=short -o cache_dir=./.pytest_cache.dnstls -n4 -m 'dnspolicy or tlspolicy' --dist loadfile --enforce -vv testsuite
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.4.2, pluggy-1.6.0 -- /home/runner/.cache/pypoetry/virtualenvs/kuadrant-testsuite-6EPd9kcO-py3.12/bin/python
cachedir: .pytest_cache.dnstls
metadata: {'Python': '3.12.3', 'Platform': 'Linux-6.11.0-1018-azure-x86_64-with-glibc2.39', 'Packages': {'pytest': '8.4.2', 'pluggy': '1.6.0'}, 'Plugins': {'anyio': '4.11.0', 'html': '4.1.1', 'xdist': '3.8.0', 'metadata': '3.1.1'}, 'CI': 'true', 'JAVA_HOME': '/usr/lib/jvm/temurin-17-jdk-amd64', 'Kuadrant': []}

rootdir: /home/runner/work/testsuite/testsuite
configfile: pyproject.toml
plugins: anyio-4.11.0, html-4.1.1, xdist-3.8.0, metadata-3.1.1
created: 4/4 workers
4 workers [33 items]

scheduling tests via LoadFileScheduling

testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_common_name 
testsuite/tests/singlecluster/gateway/reconciliation/test_gw_doesnt_exist.py::test_no_gw[DNSPolicy] 
testsuite/tests/singlecluster/gateway/reconciliation/test_same_target.py::test_two_policies_one_gw[DNSPolicy] 
testsuite/tests/singlecluster/gateway/reconciliation/test_invalid_issuer_reference.py::test_wrong_issuer_type 
[gw1] [  3%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_gw_doesnt_exist.py::test_no_gw[DNSPolicy] 
testsuite/tests/singlecluster/gateway/reconciliation/test_gw_doesnt_exist.py::test_no_gw[TLSPolicy] 
[gw1] [  6%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_gw_doesnt_exist.py::test_no_gw[TLSPolicy] 
testsuite/tests/singlecluster/gateway/test_basic.py::test_gateway_readiness 
[gw3] [  9%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_invalid_issuer_reference.py::test_wrong_issuer_type 
testsuite/tests/singlecluster/gateway/reconciliation/test_invalid_issuer_reference.py::test_non_existing_issuer 
[gw3] [ 12%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_invalid_issuer_reference.py::test_non_existing_issuer 
testsuite/tests/singlecluster/gateway/dnspolicy/default_provider/test_default_provider.py::test_default_dns_provider 
[gw0] [ 15%] PASSED testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_common_name 
testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_duration 
[gw0] [ 18%] PASSED testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_duration 
testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_usages 
[gw0] [ 21%] PASSED testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_usages 
testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_algorithm 
[gw0] [ 24%] PASSED testsuite/tests/singlecluster/gateway/tlspolicy/test_cert_parameters.py::test_tls_cert_algorithm 
testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_healthy_endpoint_http.py::test_healthy_endpoint_http 
[gw1] [ 27%] PASSED testsuite/tests/singlecluster/gateway/test_basic.py::test_gateway_readiness 
testsuite/tests/singlecluster/gateway/test_basic.py::test_gateway_basic_dns_tls 
[gw3] [ 30%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/default_provider/test_default_provider.py::test_default_dns_provider 
[gw1] [ 33%] PASSED testsuite/tests/singlecluster/gateway/test_basic.py::test_gateway_basic_dns_tls 
testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_additional_headers.py::test_additional_headers 
[gw2] [ 36%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_same_target.py::test_two_policies_one_gw[DNSPolicy] 
testsuite/tests/singlecluster/gateway/reconciliation/test_same_target.py::test_two_policies_one_gw[TLSPolicy] 
testsuite/tests/singlecluster/gateway/dnspolicy/default_provider/test_no_default_provider.py::test_no_default_provider_secrets 
[gw2] [ 39%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_same_target.py::test_two_policies_one_gw[TLSPolicy] 
testsuite/tests/singlecluster/gateway/dnspolicy/default_provider/test_multiple_default_providers.py::test_multiple_default_provider_secrets 
[gw0] [ 42%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_healthy_endpoint_http.py::test_healthy_endpoint_http 
testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_remove_endpoint.py::test_remove_endpoint 
[gw1] [ 45%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/default_provider/test_no_default_provider.py::test_no_default_provider_secrets 
testsuite/tests/singlecluster/gateway/dnspolicy/test_delegate_and_provider_ref.py::test_delegate_true_and_provider_ref_are_mutually_exclusive 
[gw1] [ 48%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/test_delegate_and_provider_ref.py::test_delegate_true_and_provider_ref_are_mutually_exclusive 
testsuite/tests/singlecluster/gateway/dnspolicy/test_invalid_credentials.py::test_invalid_credentials 
[gw2] [ 51%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/default_provider/test_multiple_default_providers.py::test_multiple_default_provider_secrets 
testsuite/tests/singlecluster/gateway/dnspolicy/test_dnspolicy_removal.py::test_dnspolicy_removal 
[gw3] [ 54%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_additional_headers.py::test_additional_headers 
[gw1] [ 57%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/test_invalid_credentials.py::test_invalid_credentials 
testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_healthy_endpoint.py::test_healthy_endpoint 
testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_dnspolicy_target_ref.py::test_update_dns_policy_target_ref 
[gw3] [ 60%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_healthy_endpoint.py::test_healthy_endpoint 
testsuite/tests/singlecluster/gateway/dnspolicy/test_dns_policy_section_targeting_gateway.py::test_dns_policy_section_name_targeting_gateway_listener 
[gw0] [ 63%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_remove_endpoint.py::test_remove_endpoint 
testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_unhealthy_endpoint.py::test_unhealthy_endpoint 
[gw3] [ 66%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/test_dns_policy_section_targeting_gateway.py::test_dns_policy_section_name_targeting_gateway_listener 
testsuite/tests/singlecluster/gateway/reconciliation/listeners/test_gateway_basic_listeners.py::test_listeners 
[gw2] [ 69%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/test_dnspolicy_removal.py::test_dnspolicy_removal 
testsuite/tests/singlecluster/gateway/dnspolicy/test_no_dns_provider_secret.py::test_default_secret_provider_not_found 
[gw2] [ 72%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/test_no_dns_provider_secret.py::test_default_secret_provider_not_found 
testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_tlspolicy_target_ref.py::test_update_tls_policy_target_ref 
[gw0] [ 75%] PASSED testsuite/tests/singlecluster/gateway/dnspolicy/health_check/test_unhealthy_endpoint.py::test_unhealthy_endpoint 
testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_authpolicy_target_ref.py::test_update_auth_policy_target_ref 
[gw1] [ 78%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_dnspolicy_target_ref.py::test_update_dns_policy_target_ref 
testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_ratelimitpolicy_target_ref.py::test_update_ratelimit_policy_target_ref 
[gw2] [ 81%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_tlspolicy_target_ref.py::test_update_tls_policy_target_ref 
[gw0] [ 84%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_authpolicy_target_ref.py::test_update_auth_policy_target_ref 
testsuite/tests/singlecluster/gateway/test_external_ca.py::test_letsencrypt 
[gw0] [ 87%] SKIPPED testsuite/tests/singlecluster/gateway/test_external_ca.py::test_letsencrypt 
[gw1] [ 90%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/change_targetref/test_update_ratelimitpolicy_target_ref.py::test_update_ratelimit_policy_target_ref 
testsuite/tests/singlecluster/gateway/reconciliation/listeners/test_gateway_listeners_dns.py::test_change_listener 
[gw3] [ 93%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/listeners/test_gateway_basic_listeners.py::test_listeners 
testsuite/tests/singlecluster/gateway/reconciliation/test_affected_by.py::test_gateway_status 
[gw3] [ 96%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/test_affected_by.py::test_gateway_status 
[gw1] [100%] PASSED testsuite/tests/singlecluster/gateway/reconciliation/listeners/test_gateway_listeners_dns.py::test_change_listener 

================== 32 passed, 1 skipped in 436.82s (0:07:16) ===================

@azgabur azgabur requested a review from averevki October 24, 2025 12:08
@azgabur azgabur merged commit 0d8f44d into Kuadrant:main Oct 24, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants