class_docstr: Class used for e2e testing of BatchingNodeProvider.
  Like AutoscalingCluster but uses a BatchingNodePorvider.
code: def _generate_config(
      self, head_resources, worker_node_types, **config_kwargs
  ):
      config = AutoscalingCluster._generate_config(
          self, head_resources, worker_node_types
      )
      # Need this for resource data.
      config["provider"]["available_node_types"] = deepcopy(
          config["available_node_types"]
      )
      # Load the node provider class above.
      config["provider"]["type"] = "external"
      config["provider"]["module"] = (
          "ray.tests."
          "test_batch_node_provider_integration.FakeBatchingNodeProvider"
      )
      # Need to run in single threaded mode to use BatchingNodeProvider.
      config["provider"][FOREGROUND_NODE_LAUNCH_KEY] = True
      return config
  
imports: from copy import deepcopy
  import sys
  import pytest
  import ray
  from ray._private.test_utils import wait_for_condition
  from ray.autoscaler.batching_node_provider import BatchingNodeProvider, NodeData, ScaleRequest
  from ray.autoscaler._private.fake_multi_node.node_provider import FakeMultiNodeProvider
  from ray.autoscaler._private.constants import FOREGROUND_NODE_LAUNCH_KEY
  from ray.autoscaler.tags import NODE_KIND_WORKER, STATUS_UP_TO_DATE, TAG_RAY_NODE_KIND, TAG_RAY_NODE_STATUS, TAG_RAY_USER_NODE_TYPE
  from ray.cluster_utils import AutoscalingCluster
  import logging
label_desc: Use image node_id 1 for calling the BatchingAutoscalingCluster obj's underlying member method code with example usage: obj._generate_config(head_resources, worker_node_types) and returns: config