code: def _get_or_create_service_account(
      self, credentials: Credentials, project_id: str, name: str
  ) -> str:
      iam_service = googleapiclient.discovery.build(
          "iam", "v1", credentials=credentials
      )
      try:
          service_account = (
              iam_service.projects()
              .serviceAccounts()
              .create(
                  name="projects/" + project_id,
                  body={
                      "accountId": name,
                      "serviceAccount": {
                          "displayName": name,
                      },
                  },
              )
              .execute()
          )
          return service_account["email"]
      except googleapiclient.errors.HttpError as e:
          if e.status_code == 409:
              return gcp_utils.get_service_account_email(
                  project_id, name
              )
          elif e.status_code == 403:
              raise ServerClientError(
                  "Not enough permissions. Default credentials must have Service Account Admin role.",
              )
          raise e
  
imports: import json
  from typing import Dict, List
  import googleapiclient.discovery
  import googleapiclient.errors
  from google.auth.credentials import Credentials
  from dstack._internal.core.backends.gcp import GCPBackend, auth
  from dstack._internal.core.backends.gcp import utils
  from dstack._internal.core.backends.gcp.config import GCPConfig
  from dstack._internal.core.errors import BackendAuthError, ServerClientError
  from dstack._internal.core.models.backends.base import BackendType, ConfigElement, ConfigElementValue, ConfigMultiElement
  from dstack._internal.core.models.backends.gcp import AnyGCPConfigInfo, GCPConfigInfo, GCPConfigInfoWithCreds, GCPConfigInfoWithCredsPartial, GCPConfigValues, GCPCreds, GCPDefaultCreds, GCPServiceAccountCreds, GCPStoredConfig
  from dstack._internal.server import settings
  from dstack._internal.server.models import BackendModel, ProjectModel
  from dstack._internal.server.services.backends.configurators.base import Configurator, raise_invalid_credentials_error
label_desc: Use image node_id 9 for calling the GCPConfigurator obj's underlying member method code with example usage: obj._get_or_create_service_account(credentials, project_id, name) and returns: service_account, gcp_utils