44
55from arango .api import APIWrapper
66from arango .exceptions import (
7+ ClusterEndpointsError ,
78 ClusterHealthError ,
89 ClusterMaintenanceModeError ,
10+ ClusterServerEngineError ,
911 ClusterServerIDError ,
1012 ClusterServerRoleError ,
11- ClusterStatisticsError ,
13+ ClusterServerStatisticsError ,
14+ ClusterServerVersionError ,
1215)
1316from arango .request import Request
1417
@@ -42,7 +45,7 @@ def server_role(self):
4245
4346 :return: Server role. Possible values are "SINGLE" (server which is
4447 not in a cluster), "COORDINATOR" (cluster coordinator), "PRIMARY",
45- "SECONDARY", "AGENT" (Agency node in a cluster) or "UNDEFINED".
48+ "SECONDARY", "AGENT" (Agency server in a cluster) or "UNDEFINED".
4649 :rtype: str | unicode
4750 :raise arango.exceptions.ClusterServerRoleError: If retrieval fails.
4851 """
@@ -58,25 +61,70 @@ def response_handler(resp):
5861
5962 return self ._execute (request , response_handler )
6063
61- def statistics (self , server_id ):
62- """Return the cluster statistics for the given server.
64+ def server_version (self , server_id ):
65+ """Return the version of the given server.
6366
6467 :param server_id: Server ID.
6568 :type server_id: str | unicode
66- :return: Cluster statistics for the given server.
69+ :return: Version of the given server.
6770 :rtype: dict
68- :raise arango.exceptions.ClusterStatisticsError : If retrieval fails.
71+ :raise arango.exceptions.ClusterServerVersionError : If retrieval fails.
6972 """
7073 request = Request (
7174 method = 'get' ,
72- endpoint = '/_admin/clusterStatistics ' ,
73- params = {'DBserver ' : server_id }
75+ endpoint = '/_admin/cluster/nodeVersion ' ,
76+ params = {'ServerID ' : server_id }
7477 )
7578
7679 def response_handler (resp ):
7780 if resp .is_success :
7881 return resp .body
79- raise ClusterStatisticsError (resp , request )
82+ raise ClusterServerVersionError (resp , request )
83+
84+ return self ._execute (request , response_handler )
85+
86+ def server_engine (self , server_id ):
87+ """Return the engine details for the given server.
88+
89+ :param server_id: Server ID.
90+ :type server_id: str | unicode
91+ :return: Engine details of the given server.
92+ :rtype: dict
93+ :raise arango.exceptions.ClusterServerEngineError: If retrieval fails.
94+ """
95+ request = Request (
96+ method = 'get' ,
97+ endpoint = '/_admin/cluster/nodeEngine' ,
98+ params = {'ServerID' : server_id }
99+ )
100+
101+ def response_handler (resp ):
102+ if resp .is_success :
103+ return resp .body
104+ raise ClusterServerEngineError (resp , request )
105+
106+ return self ._execute (request , response_handler )
107+
108+ def server_statistics (self , server_id ):
109+ """Return the statistics for the given server.
110+
111+ :param server_id: Server ID.
112+ :type server_id: str | unicode
113+ :return: Statistics for the given server.
114+ :rtype: dict
115+ :raise arango.exceptions.ClusterServerStatisticsError: If retrieval
116+ fails.
117+ """
118+ request = Request (
119+ method = 'get' ,
120+ endpoint = '/_admin/cluster/nodeStatistics' ,
121+ params = {'ServerID' : server_id }
122+ )
123+
124+ def response_handler (resp ):
125+ if resp .is_success :
126+ return resp .body
127+ raise ClusterServerStatisticsError (resp , request )
80128
81129 return self ._execute (request , response_handler )
82130
@@ -122,3 +170,22 @@ def response_handler(resp):
122170 raise ClusterMaintenanceModeError (resp , request )
123171
124172 return self ._execute (request , response_handler )
173+
174+ def endpoints (self ):
175+ """Return coordinate endpoints. This method is for clusters only.
176+
177+ :return: List of endpoints.
178+ :rtype: [str | unicode]
179+ :raise arango.exceptions.ServerEndpointsError: If retrieval fails.
180+ """
181+ request = Request (
182+ method = 'get' ,
183+ endpoint = '/_api/cluster/endpoints'
184+ )
185+
186+ def response_handler (resp ):
187+ if not resp .is_success :
188+ raise ClusterEndpointsError (resp , request )
189+ return [item ['endpoint' ] for item in resp .body ['endpoints' ]]
190+
191+ return self ._execute (request , response_handler )
0 commit comments