code: def test_node_liveness_after_restart(ray_start_cluster):
      cluster = ray_start_cluster
      cluster.add_node()
      ray.init(cluster.address)
      worker = cluster.add_node(node_manager_port=9037)
      wait_for_condition(
          lambda: len([n for n in ray.nodes() if n["Alive"]]) == 2
      )
  
      cluster.remove_node(worker)
      worker = cluster.add_node(node_manager_port=9037)
      for _ in range(10):
          wait_for_condition(
              lambda: len([n for n in ray.nodes() if n["Alive"]]) == 2
          )
          time.sleep(1)
  
imports: import os
  import sys
  import time
  import pytest
  import ray
  import ray._private.ray_constants
  from ray._private.test_utils import Semaphore, enable_external_redis, client_test_enabled, run_string_as_driver, wait_for_condition, get_gcs_memory_used, run_string_as_driver_nonblocking
  from ray.experimental.internal_kv import _internal_kv_list
  from ray.tests.conftest import call_ray_start
  import subprocess
  import psutil
label_desc: Use image node_id 7 for calling a global function with example usage: test_node_liveness_after_restart(ray_start_cluster) without return types