host.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import json
  4. from flask import Blueprint, request
  5. import jimit as ji
  6. from models import Database as db
  7. from models import Utils, Rules, Host
  8. from models.initialize import app
  9. __author__ = 'James Iter'
  10. __date__ = '2017/5/30'
  11. __contact__ = 'james.iter.cn@gmail.com'
  12. __copyright__ = '(c) 2017 by James Iter.'
  13. blueprint = Blueprint(
  14. 'api_host',
  15. __name__,
  16. url_prefix='/api/host'
  17. )
  18. blueprints = Blueprint(
  19. 'api_hosts',
  20. __name__,
  21. url_prefix='/api/hosts'
  22. )
  23. @Utils.dumps2response
  24. def r_get(nodes_id):
  25. args_rules = [
  26. Rules.IDS.value
  27. ]
  28. try:
  29. ji.Check.previewing(args_rules, {args_rules[0][1]: nodes_id})
  30. ret = dict()
  31. ret['state'] = ji.Common.exchange_state(20000)
  32. ret['data'] = list()
  33. if -1 == nodes_id.find(','):
  34. node_id = nodes_id
  35. if db.r.hexists(app.config['hosts_info'], node_id):
  36. v = json.loads(db.r.hget(app.config['hosts_info'], node_id))
  37. v = Host.alive_check(v)
  38. v['node_id'] = node_id
  39. ret['data'] = v
  40. else:
  41. for node_id in nodes_id.split(','):
  42. if db.r.hexists(app.config['hosts_info'], node_id):
  43. v = json.loads(db.r.hget(app.config['hosts_info'], node_id))
  44. v = Host.alive_check(v)
  45. v['node_id'] = node_id
  46. ret['data'].append(v)
  47. return ret
  48. except ji.PreviewingError, e:
  49. return json.loads(e.message)
  50. @Utils.dumps2response
  51. def r_get_by_filter():
  52. try:
  53. ret = dict()
  54. ret['state'] = ji.Common.exchange_state(20000)
  55. ret['data'] = list()
  56. for k, v in db.r.hgetall(app.config['hosts_info']).items():
  57. v = json.loads(v)
  58. v = Host.alive_check(v)
  59. v['node_id'] = k
  60. ret['data'].append(v)
  61. return ret
  62. except ji.PreviewingError, e:
  63. return json.loads(e.message)
  64. @Utils.dumps2response
  65. def r_content_search():
  66. keyword = request.args.get('keyword', '')
  67. args_rules = [
  68. Rules.KEYWORD.value
  69. ]
  70. try:
  71. ji.Check.previewing(args_rules, {'keyword': keyword})
  72. ret = dict()
  73. ret['state'] = ji.Common.exchange_state(20000)
  74. ret['data'] = list()
  75. for k, v in db.r.hgetall(app.config['hosts_info']).items():
  76. v = json.loads(v)
  77. if -1 != v['hostname'].find(keyword):
  78. v = Host.alive_check(v)
  79. v['node_id'] = k
  80. ret['data'].append(v)
  81. return ret
  82. except ji.PreviewingError, e:
  83. return json.loads(e.message)