11from enum import Enum
2- from typing import Optional , TYPE_CHECKING
2+ from typing import Optional , TYPE_CHECKING , Any , Dict
33
44if TYPE_CHECKING :
55 from ravendb .http .topology import ClusterTopology
@@ -26,8 +26,17 @@ def __init__(
2626 self .database = database
2727 self .cluster_tag = cluster_tag
2828 self .server_role = server_role
29- self .__last_server_version_check = 0
30- self .__last_server_version : str = None
29+ self ._last_server_version_check = 0
30+ self ._last_server_version : Optional [str ] = None
31+
32+ @classmethod
33+ def from_json (cls , json_dict : Dict [str , Any ]) -> "ServerNode" :
34+ return cls (
35+ json_dict ["Url" ],
36+ json_dict ["Database" ],
37+ json_dict ["ClusterTag" ],
38+ ServerNode .Role (json_dict ["ServerRole" ]) if "ServerRole" in json_dict else None ,
39+ )
3140
3241 def __eq__ (self , other ) -> bool :
3342 if self == other :
@@ -45,7 +54,7 @@ def __hash__(self) -> int:
4554
4655 @property
4756 def last_server_version (self ) -> str :
48- return self .__last_server_version
57+ return self ._last_server_version
4958
5059 @classmethod
5160 def create_from (cls , topology : "ClusterTopology" ):
@@ -64,16 +73,16 @@ def create_from(cls, topology: "ClusterTopology"):
6473 return nodes
6574
6675 def should_update_server_version (self ) -> bool :
67- if self .last_server_version is None or self .__last_server_version_check > 100 :
76+ if self .last_server_version is None or self ._last_server_version_check > 100 :
6877 return True
6978
70- self .__last_server_version_check += 1
79+ self ._last_server_version_check += 1
7180 return False
7281
7382 def update_server_version (self , server_version : str ):
74- self .__last_server_version = server_version
75- self .__last_server_version_check = 0
83+ self ._last_server_version = server_version
84+ self ._last_server_version_check = 0
7685
7786 def discard_server_version (self ) -> None :
78- self .__last_server_version_check = None
79- self .__last_server_version_check = 0
87+ self ._last_server_version_check = None
88+ self ._last_server_version_check = 0
0 commit comments