Visitar URL original
GKE code executor unit tests fail with kubernetes 37.0.0, turning main CI red · Issue #7443 · google/adk-python · GitHub
Skip to content

GKE code executor unit tests fail with kubernetes 37.0.0, turning main CI red #7443

Description

@vetler

🔴 Required Information

Describe the Bug:

Since kubernetes 37.0.0 was published to PyPI (2026-10-07, 00:51 UTC), five tests in tests/unittests/code_executors/test_gke_code_executor.py fail. The Unit Tests jobs of the Continuous Integration workflow have failed on main for Python 3.11–3.14 on every push since 51a20e2, because CI installs the newest version kubernetes>=29 allows.

kubernetes 37 validates model fields with pydantic. In these tests create_namespaced_job returns the default MagicMock, and GkeCodeExecutor._add_owner_reference copies that Job's api_version, kind, metadata.name and metadata.uid into a V1OwnerReference, which now raises a ValidationError. execute_code catches it and returns "An unexpected executor error occurred", so the assertions fail.

Only the tests are affected. Against a real cluster, create_namespaced_job returns a V1Job with string fields. The other 13 tests in the file pass on 37.0.0, including the one that builds a real Job manifest.

Steps to Reproduce:

  1. pip install -e . pytest pytest-asyncio pytest-mock "kubernetes==37.0.0"
  2. pytest tests/unittests/code_executors/test_gke_code_executor.py

Expected Behavior:

All 18 tests pass, as they do with kubernetes 36.0.3 (the version pinned in constraints-3.*.txt).

Observed Behavior:

FAILED ...::test_execute_code_success - AssertionError: assert '' == 'hello world'
FAILED ...::test_execute_code_job_failed - assert 'Job failed. Logs:' in "An unexpected executor error occurred: 4 validation errors for V1OwnerReference ..."
FAILED ...::test_execute_code_job_failed_without_terminated_container - assert None == 1
FAILED ...::test_execute_code_timeout - assert 'Executor timed out' in "An unexpected executor error occurred: 4 validation errors for V1OwnerReference ..."
FAILED ...::test_execute_code_forks_to_job - AssertionError: assert '' == 'job stdout'
5 failed, 13 passed

The underlying error:

4 validation errors for V1OwnerReference
api_version
  Input should be a valid string [type=string_type, input_value=<MagicMock name='mock.api...ersion' id='...'>, input_type=MagicMock]
kind
  Input should be a valid string [type=string_type, input_value=<MagicMock name='mock.kind' id='...'>, input_type=MagicMock]
name
  Input should be a valid string [type=string_type, input_value=<MagicMock name='mock.met...a.name' id='...'>, input_type=MagicMock]
uid
  Input should be a valid string [type=string_type, input_value=<MagicMock name='mock.met...ta.uid' id='...'>, input_type=MagicMock]

Environment Details:

  • ADK Library Version: main (2.11.0), since 51a20e2
  • Desktop OS: Linux (GitHub Actions) and macOS
  • Python Version: 3.11, 3.12, 3.13 and 3.14

Model Information:

  • Are you using LiteLLM: N/A
  • Which model is being used: N/A, no model is involved

🟡 Optional Information

Regression:

Yes, but the regression comes from the dependency release, not from an ADK commit. The same tests pass with kubernetes 36.0.3.

Logs:

CI run on main: https://github.com/google/adk-python/actions/runs/37674194847

Additional Context:

constraints-3.*.txt already pin kubernetes==36.0.3, but the unit test job installs without them. A fix that keeps the tests passing on both versions is to have the mocked create_namespaced_job return a real client.V1Job with string fields. I'll open a PR.

How often has this issue occurred?:

  • Always (100%)

Activity

  1. self-assigned this
    on Oct 8, 2026
  2. added theissue type on Oct 8, 2026
  3. added a commit that references this issue on Oct 9, 2026
    b9a2c05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions