misc.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import jimit as ji
  4. import json
  5. from flask import Blueprint, request
  6. from jimvc.models import Config
  7. from jimvc.models import app_config
  8. from jimvc.models import Rules
  9. from jimvc.models import Token
  10. from jimvc.models import Utils
  11. from jimvc.models import Host
  12. __author__ = 'James Iter'
  13. __date__ = '2018-12-29'
  14. __contact__ = 'james.iter.cn@gmail.com'
  15. __copyright__ = '(c) 2018 by James Iter.'
  16. blueprint = Blueprint(
  17. 'api_misc',
  18. __name__,
  19. url_prefix='/api/misc'
  20. )
  21. blueprints = Blueprint(
  22. 'api_miscs',
  23. __name__,
  24. url_prefix='/api/miscs'
  25. )
  26. @Utils.dumps2response
  27. def r_join(node_id, _token):
  28. # 如果该 node_id 已经被加入,那么要用户先去计算节点处删除作废的节点后,再添加。
  29. ret = dict()
  30. ret['state'] = ji.Common.exchange_state(20000)
  31. ret['data'] = dict()
  32. args_rules = [
  33. Rules.NODE_ID.value,
  34. Rules.TOKEN.value
  35. ]
  36. try:
  37. ji.Check.previewing(args_rules, {'node_id': node_id, 'token': _token})
  38. token = Token()
  39. token.token = _token
  40. # 检验 token 有效性
  41. if not token.valid():
  42. ret['state'] = ji.Common.exchange_state(41208)
  43. return ret
  44. nodes_id = list()
  45. hosts = Host.get_all()
  46. for host in hosts:
  47. nodes_id.append(host['node_id'])
  48. # 检测 node_id 是否已经存在
  49. if node_id in nodes_id:
  50. ret['state'] = ji.Common.exchange_state(40901)
  51. else:
  52. config = Config()
  53. config.id = 1
  54. config.get()
  55. ret['data']['redis_host'] = request.host
  56. ret['data']['redis_port'] = app_config.get('redis_port', 6379)
  57. ret['data']['redis_password'] = app_config.get('redis_password', '')
  58. ret['data']['redis_dbid'] = app_config.get('redis_dbid', 0)
  59. ret['data']['vm_network'] = config.vm_network
  60. ret['data']['vm_manage_network'] = config.vm_manage_network
  61. return ret
  62. except ji.PreviewingError, e:
  63. return json.loads(e.message)