code: def testClusterComputeExtraTags(self):
      self.cluster_manager.set_cluster_compute(self.cluster_compute)
  
      # No extra tags specified
      self.assertEqual(
          self.cluster_manager.cluster_compute, self.cluster_compute
      )
  
      # Extra tags specified
      self.cluster_manager.set_cluster_compute(
          self.cluster_compute, extra_tags={"foo": "bar"}
      )
  
      # All ResourceTypes as in
      # ray_release.aws.RELEASE_AWS_RESOURCE_TYPES_TO_TRACK_FOR_BILLING
      target_cluster_compute = TEST_CLUSTER_COMPUTE.copy()
      target_cluster_compute["aws"] = {
          "TagSpecifications": [
              {
                  "ResourceType": "instance",
                  "Tags": [{"Key": "foo", "Value": "bar"}],
              },
              {
                  "ResourceType": "volume",
                  "Tags": [{"Key": "foo", "Value": "bar"}],
              },
          ]
      }
      self.assertEqual(
          self.cluster_manager.cluster_compute["aws"],
          target_cluster_compute["aws"],
      )
  
      # Test merging with already existing tags
      cluster_compute_with_tags = TEST_CLUSTER_COMPUTE.copy()
      cluster_compute_with_tags["aws"] = {
          "TagSpecifications": [
              {"ResourceType": "fake", "Tags": []},
              {
                  "ResourceType": "instance",
                  "Tags": [{"Key": "key", "Value": "val"}],
              },
          ]
      }
      self.cluster_manager.set_cluster_compute(
          cluster_compute_with_tags, extra_tags={"foo": "bar"}
      )
  
      # All ResourceTypes as in RELEASE_AWS_RESOURCE_TYPES_TO_TRACK_FOR_BILLING
      target_cluster_compute = TEST_CLUSTER_COMPUTE.copy()
      target_cluster_compute["aws"] = {
          "TagSpecifications": [
              {"ResourceType": "fake", "Tags": []},
              {
                  "ResourceType": "instance",
                  "Tags": [
                      {"Key": "key", "Value": "val"},
                      {"Key": "foo", "Value": "bar"},
                  ],
              },
              {
                  "ResourceType": "volume",
                  "Tags": [{"Key": "foo", "Value": "bar"}],
              },
          ]
      }
      self.assertEqual(
          self.cluster_manager.cluster_compute["aws"],
          target_cluster_compute["aws"],
      )
  
imports: import os
  import sys
  import time
  import unittest
  from typing import Callable
  from unittest.mock import patch
  from freezegun import freeze_time
  from ray_release.exception import ClusterCreationError, ClusterStartupError, ClusterStartupTimeout, ClusterStartupFailed, ClusterEnvBuildError, ClusterEnvBuildTimeout, ClusterComputeCreateError, ClusterEnvCreateError
  from ray_release.cluster_manager.full import FullClusterManager
  from ray_release.cluster_manager.minimal import MinimalClusterManager
  from ray_release.tests.utils import UNIT_TEST_PROJECT_ID, UNIT_TEST_CLOUD_ID, APIDict, fail_always, fail_once, MockSDK
  from ray_release.util import get_anyscale_sdk
  from ray_release.test import Test
label_desc: Use image node_id 8 for calling the MinimalSessionManagerTest obj's underlying member method code with example usage: obj.testClusterComputeExtraTags() without return types