docstr: Removes all nodes.
docstr_tok: ["Removes","all","nodes","."]
code: def shutdown(self):
      """Removes all nodes."""
  
      # We create a list here as a copy because `remove_node`
      # modifies `self.worker_nodes`.
      all_nodes = list(self.worker_nodes)
      for node in all_nodes:
          self.remove_node(node)
  
      if self.head_node is not None:
          self.remove_node(self.head_node)
      # need to reset internal kv since gcs is down
      ray.experimental.internal_kv._internal_kv_reset()
      # Delete the cluster address.
      ray._private.utils.reset_ray_address()
  
imports: import copy
  import json
  import logging
  import os
  import subprocess
  import tempfile
  import time
  from typing import Dict, Optional
  import yaml
  import ray
  import ray._private.services
  from ray._private import ray_constants
  from ray._private.client_mode_hook import disable_client_hook
  from ray._raylet import GcsClientOptions
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 11 for calling the Cluster obj's underlying member method code with example usage: obj.shutdown() without return types