code: def __init__(
      self,
      duration: float,
      bundles: List[Dict[str, float]],
      strategy: int,
      start_callback: Callable[[None], None] = None,
      done_callback: Callable[[None], None] = None,
  ):
      self.duration = duration
      self.bundles = bundles
      self.strategy = strategy
      self.start_callback = start_callback
      self.done_callback = done_callback
      self.start_time = None
      self.end_time = None
      self.node = None
  
imports: import collections
  import copy
  import logging
  import yaml
  import tempfile
  from typing import Dict, Callable, List
  import shutil
  from queue import PriorityQueue
  import unittest
  import pytest
  import ray
  from ray.tests.test_autoscaler import MockProvider, MockProcessRunner, MockGcsClient, mock_raylet_id, MockAutoscaler
  from ray.tests.test_resource_demand_scheduler import MULTI_WORKER_CLUSTER
  from ray.autoscaler._private.providers import _NODE_PROVIDERS, _clear_provider_cache
  from ray.autoscaler._private.load_metrics import LoadMetrics
  from ray.autoscaler._private.node_launcher import NodeLauncher
  from ray.autoscaler.tags import TAG_RAY_USER_NODE_TYPE, TAG_RAY_NODE_KIND, NODE_KIND_HEAD
  from ray.autoscaler._private.constants import AUTOSCALER_UPDATE_INTERVAL_S
  from ray.autoscaler._private.cli_logger import cli_logger
  from ray.core.generated.common_pb2 import Bundle, PlacementStrategy
  from ray._private.gcs_utils import PlacementGroupTableData
label_desc: Use image node_id 1 to create a new PlacementGroup object  with example: obj = PlacementGroup(duration, bundles, strategy, start_callback, done_callback)