code: def get_or_create_ssh_key(self, name: str, public_key: str) -> str:
      fingerprint = get_public_key_fingerprint(public_key)
      keys = self.client.ssh_keys.get()
      found_keys = [
          key
          for key in keys
          if fingerprint == get_public_key_fingerprint(key.public_key)
      ]
      if found_keys:
          key = found_keys[0]
          return key.id
  
      key = self.client.ssh_keys.create(name, public_key)
      return key.id
  
file_path: dstack/src/dstack/_internal/core/backends/datacrunch/api_client.py
imports: import time
  from typing import Optional
  from datacrunch import DataCrunchClient
  from datacrunch.exceptions import APIException
  from datacrunch.instances.instances import Instance
  from dstack._internal.utils.ssh import get_public_key_fingerprint
label_desc: Use image node_id 3 for calling the DataCrunchAPIClient obj's underlying member method code with example usage: obj.get_or_create_ssh_key(name, public_key) and returns: key, key