Skip to content

Commit 203d122

Browse files
committed
Merge pull request influxdata#281 from amancevice/get_list_servers
Added get_list_servers() method to client
2 parents 1da39bf + 8e099c0 commit 203d122

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

influxdb/client.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,25 @@ def get_list_series(self, database=None):
592592
)
593593
return series
594594

595+
def get_list_servers(self):
596+
"""Get the list of servers in InfluxDB cluster.
597+
598+
:returns: all nodes in InfluxDB cluster
599+
:rtype: list of dictionaries
600+
601+
:Example:
602+
603+
::
604+
605+
>> servers = client.get_list_servers()
606+
>> servers
607+
[{'cluster_addr': 'server01:8088',
608+
'id': 1,
609+
'raft': True,
610+
'raft-leader': True}]
611+
"""
612+
return list(self.query("SHOW SERVERS").get_points())
613+
595614
def get_list_users(self):
596615
"""Get the list of all users in InfluxDB.
597616

influxdb/tests/client_test.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,39 @@ def test_get_list_database_fails(self):
485485
with _mocked_session(cli, 'get', 401):
486486
cli.get_list_database()
487487

488+
def test_get_list_servers(self):
489+
data = {'results': [
490+
{'series': [
491+
{'columns': ['id', 'cluster_addr', 'raft', 'raft-leader'],
492+
'values': [
493+
[1, 'server01:8088', True, True],
494+
[2, 'server02:8088', True, False],
495+
[3, 'server03:8088', True, False]]}]}
496+
]}
497+
498+
with _mocked_session(self.cli, 'get', 200, json.dumps(data)):
499+
self.assertListEqual(
500+
self.cli.get_list_servers(),
501+
[{'cluster_addr': 'server01:8088',
502+
'id': 1,
503+
'raft': True,
504+
'raft-leader': True},
505+
{'cluster_addr': 'server02:8088',
506+
'id': 2,
507+
'raft': True,
508+
'raft-leader': False},
509+
{'cluster_addr': 'server03:8088',
510+
'id': 3,
511+
'raft': True,
512+
'raft-leader': False}]
513+
)
514+
515+
@raises(Exception)
516+
def test_get_list_servers_fails(self):
517+
cli = InfluxDBClient('host', 8086, 'username', 'password')
518+
with _mocked_session(cli, 'get', 401):
519+
cli.get_list_servers()
520+
488521
def test_get_list_series(self):
489522
example_response = \
490523
'{"results": [{"series": [{"name": "cpu_load_short", "columns": ' \

0 commit comments

Comments
 (0)