retroshare.chart.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # -*- coding: utf-8 -*-
  2. # Description: RetroShare netdata python.d module
  3. # Authors: sehraf
  4. # SPDX-License-Identifier: GPL-3.0-or-later
  5. import json
  6. from bases.FrameworkServices.UrlService import UrlService
  7. ORDER = [
  8. 'bandwidth',
  9. 'peers',
  10. 'dht',
  11. ]
  12. CHARTS = {
  13. 'bandwidth': {
  14. 'options': [None, 'RetroShare Bandwidth', 'kilobits/s', 'RetroShare', 'retroshare.bandwidth', 'area'],
  15. 'lines': [
  16. ['bandwidth_up_kb', 'Upload'],
  17. ['bandwidth_down_kb', 'Download']
  18. ]
  19. },
  20. 'peers': {
  21. 'options': [None, 'RetroShare Peers', 'peers', 'RetroShare', 'retroshare.peers', 'line'],
  22. 'lines': [
  23. ['peers_all', 'All friends'],
  24. ['peers_connected', 'Connected friends']
  25. ]
  26. },
  27. 'dht': {
  28. 'options': [None, 'Retroshare DHT', 'peers', 'RetroShare', 'retroshare.dht', 'line'],
  29. 'lines': [
  30. ['dht_size_all', 'DHT nodes estimated'],
  31. ['dht_size_rs', 'RS nodes estimated']
  32. ]
  33. }
  34. }
  35. class Service(UrlService):
  36. def __init__(self, configuration=None, name=None):
  37. UrlService.__init__(self, configuration=configuration, name=name)
  38. self.order = ORDER
  39. self.definitions = CHARTS
  40. self.baseurl = self.configuration.get('url', 'http://localhost:9090')
  41. def _get_stats(self):
  42. """
  43. Format data received from http request
  44. :return: dict
  45. """
  46. try:
  47. raw = self._get_raw_data()
  48. parsed = json.loads(raw)
  49. if str(parsed['returncode']) != 'ok':
  50. return None
  51. except (TypeError, ValueError):
  52. return None
  53. return parsed['data'][0]
  54. def _get_data(self):
  55. """
  56. Get data from API
  57. :return: dict
  58. """
  59. self.url = self.baseurl + '/api/v2/stats'
  60. data = self._get_stats()
  61. if data is None:
  62. return None
  63. data['bandwidth_up_kb'] = data['bandwidth_up_kb'] * -1
  64. if data['dht_active'] is False:
  65. data['dht_size_all'] = None
  66. data['dht_size_rs'] = None
  67. return data