code: def __init__(
      self,
      test: Test,
      project_id: str,
      sdk: Optional["AnyscaleSDK"] = None,
      smoke_test: bool = False,
  ):
      self.sdk = sdk or get_anyscale_sdk()
  
      self.test = test
      self.smoke_test = smoke_test
      self.project_id = project_id
      self.project_name = get_project_name(self.project_id, self.sdk)
  
      self.cluster_name = f"{test.get_name()}{'-smoke-test' if smoke_test else ''}_{int(time.time())}"
      self.cluster_id = None
  
      self.cluster_env = None
      self.cluster_env_name = None
      self.cluster_env_id = None
      self.cluster_env_build_id = None
  
      self.cluster_compute = None
      self.cluster_compute_name = None
      self.cluster_compute_id = None
      self.cloud_provider = None
  
      self.autosuspend_minutes = DEFAULT_AUTOSUSPEND_MINS
      self.maximum_uptime_minutes = DEFAULT_MAXIMUM_UPTIME_MINS
  
imports: import abc
  import time
  from typing import TYPE_CHECKING, Any, Dict, Optional
  from ray_release.aws import add_tags_to_aws_config, RELEASE_AWS_RESOURCE_TYPES_TO_TRACK_FOR_BILLING
  from ray_release.anyscale_util import get_project_name
  from ray_release.config import DEFAULT_AUTOSUSPEND_MINS, DEFAULT_MAXIMUM_UPTIME_MINS
  from ray_release.test import Test
  from ray_release.exception import CloudInfoError
  from ray_release.util import anyscale_cluster_url, dict_hash, get_anyscale_sdk
  from ray_release.logger import logger
label_desc: Use image node_id 1 to create a new ClusterManager object from inherited base classes: abc with example: obj = ClusterManager(test, project_id, sdk, smoke_test)