class_docstr: Interface for a storage backend that stores the state of nodes in the cluster.
  
  The storage is thread-safe.
  
  The storage is versioned, which means that each successful stage change to the
  storage will bump the version number. The version number can be used to
  implement optimistic concurrency control.
  
  Each entry in the storage table is also versioned. The version number of an entry
  is the last version number when the entry is updated.
class_docstr_tok: ["Interface","for","a","storage","backend","that","stores","the","state","of","nodes","in","the","cluster",".","The","storage","is","thread-safe",".","The","storage","is","versioned",",","which","means","that","each","successful","stage","change","to","the","storage","will","bump","the","version","number",".","The","version","number","can","be","used","to","implement","optimistic","concurrency","control",".","Each","entry","in","the","storage","table","is","also","versioned",".","The","version","number","of","an","entry","is","the","last","version","number","when","the","entry","is","updated","."]
docstr: Get the current storage version.
  
  Returns:
      int: The current storage version.
docstr_tok: ["Get","the","current","storage","version",".","Returns",":","int",":","The","current","storage","version","."]
code: def get_version(self) -> int:
      """Get the current storage version.
  
      Returns:
          int: The current storage version.
      """
      raise NotImplementedError("get_version() has to be implemented")
  
file_path: ray/python/ray/autoscaler/v2/instance_manager/storage.py
imports: import copy
  from abc import ABCMeta, abstractmethod
  from collections import defaultdict, namedtuple
  from threading import Lock
  from typing import Dict, List, Optional, Tuple
label_desc: Use image node_id 5 for calling the Storage obj's underlying member method code with example usage: obj.get_version() without return types