code: def test_drain_agent_sched_zeroslot() -> None:
      """
      Start a command, drain it, start another one on the second node, drain it
      as well. Wait for them to finish, reenable both agents, and make sure
      next command schedules and succeeds.
      """
      slots = _wait_for_slots(2)
      assert len(slots) == 2
  
      command_id1 = run_zero_slot_command(60)
      wait_for_command_state(command_id1, "RUNNING", 10)
      agent_id1 = _task_agents(command_id1)[0]
  
      with _disable_agent(agent_id1, drain=True):
          command_id2 = run_zero_slot_command(60)
          wait_for_command_state(command_id2, "RUNNING", 10)
          agent_id2 = _task_agents(command_id2)[0]
          assert agent_id1 != agent_id2
  
          with _disable_agent(agent_id2, drain=True):
              for command_id in [command_id1, command_id2]:
                  wait_for_command_state(command_id, "TERMINATED", 60)
                  assert_command_succeeded(command_id)
  
      command_id3 = run_zero_slot_command(1)
      wait_for_command_state(command_id3, "TERMINATED", 60)
      assert_command_succeeded(command_id3)
  
imports: import contextlib
  import json
  import subprocess
  import time
  from typing import Any, Dict, Iterator, List, Optional, cast
  import pytest
  from determined.common.api.bindings import experimentv1State, get_GetSlot
  from tests import api_utils
  from tests import config
  from tests import experiment
  from .test_users import logged_in_user
  from .utils import assert_command_succeeded, run_zero_slot_command, wait_for_command_state
label_desc: Use image node_id 11 for calling a global function with example usage: test_drain_agent_sched_zeroslot() without return types