class_docstr: Interface for getting and returning nodes from a Cloud.
  
  **Important**: This is an INTERNAL API that is only exposed for the purpose
  of implementing custom node providers. It is not allowed to call into
  NodeProvider methods from any Ray package outside the autoscaler, only to
  define new implementations of NodeProvider for use with the "external" node
  provider option.
  
  NodeProviders are namespaced by the `cluster_name` parameter; they only
  operate on nodes within that namespace.
  
  Nodes may be in one of three states: {pending, running, terminated}. Nodes
  appear immediately once started by `create_node`, and transition
  immediately to terminated when `terminate_node` is called.
class_docstr_tok: ["Interface","for","getting","and","returning","nodes","from","a","Cloud",".","*","*","Important","*","*",":","This","is","an","INTERNAL","API","that","is","only","exposed","for","the","purpose","of","implementing","custom","node","providers",".","It","is","not","allowed","to","call","into","NodeProvider","methods","from","any","Ray","package","outside","the","autoscaler",",","only","to","define","new","implementations","of","NodeProvider","for","use","with","the","``","external","''","node","provider","option",".","NodeProviders","are","namespaced","by","the","`","cluster_name","`","parameter",";","they","only","operate","on","nodes","within","that","namespace",".","Nodes","may","be","in","one","of","three","states",":","{","pending",",","running",",","terminated","}",".","Nodes","appear","immediately","once","started","by","`","create_node","`",",","and","transition","immediately","to","terminated","when","`","terminate_node","`","is","called","."]
docstr: Terminates a set of nodes.
  
  May be overridden with a batch method, which optionally may return a
  mapping from deleted node ids to node metadata.
docstr_tok: ["Terminates","a","set","of","nodes",".","May","be","overridden","with","a","batch","method",",","which","optionally","may","return","a","mapping","from","deleted","node","ids","to","node","metadata","."]
code: def terminate_nodes(
      self, node_ids: List[str]
  ) -> Optional[Dict[str, Any]]:
      """Terminates a set of nodes.
  
      May be overridden with a batch method, which optionally may return a
      mapping from deleted node ids to node metadata.
      """
      for node_id in node_ids:
          logger.info(
              "NodeProvider: {}: Terminating node".format(node_id)
          )
          self.terminate_node(node_id)
      return None
  
imports: import logging
  from types import ModuleType
  from typing import Any, Dict, List, Optional
  from ray.autoscaler._private.command_runner import DockerCommandRunner, SSHCommandRunner
  from ray.autoscaler.command_runner import CommandRunnerInterface
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 14 for calling the NodeProvider obj's underlying member method code with example usage: obj.terminate_nodes(node_ids) and returns: None