cluster_members.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. from flask import jsonify, request
  2. import requests
  3. from lxconsole import db
  4. from lxconsole.models import Server
  5. from flask_login import login_required
  6. from lxconsole.api.access_controls import privilege_check
  7. def get_client_crt():
  8. return 'certs/client.crt'
  9. def get_client_key():
  10. return 'certs/client.key'
  11. @login_required
  12. def api_cluster_members_endpoint(endpoint):
  13. if not privilege_check(endpoint, request.args.get('id')):
  14. return jsonify({'data': [], 'metadata':[], 'error': 'not authorized', 'error_code': 403})
  15. if endpoint == 'change_cluster_member_state':
  16. id = request.args.get('id')
  17. project = request.args.get('project')
  18. name = request.form.get('name')
  19. server = Server.query.filter_by(id=id).first()
  20. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members/' + name + '/state?project=' + project
  21. client_cert = get_client_crt()
  22. client_key = get_client_key()
  23. data = {}
  24. data.update({'action': request.form.get('action')})
  25. results = requests.post(url, verify=server.ssl_verify, cert=(client_cert, client_key), json=data)
  26. return jsonify(results.json())
  27. if endpoint == 'delete_cluster_member':
  28. id = request.args.get('id')
  29. project = request.args.get('project')
  30. name = request.form.get('name')
  31. server = Server.query.filter_by(id=id).first()
  32. if request.form.get('force') == 'true':
  33. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members/' + name + '?force=1&project=' + project
  34. else:
  35. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members/' + name + '?project=' + project
  36. client_cert = get_client_crt()
  37. client_key = get_client_key()
  38. results = requests.delete(url, verify=server.ssl_verify, cert=(client_cert, client_key))
  39. return jsonify(results.json())
  40. if endpoint == 'is_cluster_member_enabled':
  41. id = request.args.get('id')
  42. project = request.args.get('project')
  43. server = Server.query.filter_by(id=id).first()
  44. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster?project=' + project
  45. client_cert = get_client_crt()
  46. client_key = get_client_key()
  47. results = requests.get(url, verify=server.ssl_verify, cert=(client_cert, client_key))
  48. data = results.json()['metadata']
  49. return str(data['enabled'])
  50. if endpoint == 'list_cluster_members':
  51. if api_cluster_members_endpoint('is_cluster_member_enabled') == 'True':
  52. id = request.args.get('id')
  53. project = request.args.get('project')
  54. server = Server.query.filter_by(id=id).first()
  55. recursion = request.args.get('recursion')
  56. if recursion == '1':
  57. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members?recursion=1&project=' + project
  58. else:
  59. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members?project=' + project
  60. client_cert = get_client_crt()
  61. client_key = get_client_key()
  62. results = requests.get(url, verify=server.ssl_verify, cert=(client_cert, client_key))
  63. return jsonify(results.json())
  64. data = { "metadata": []}
  65. return jsonify(data)
  66. if endpoint == 'load_cluster_member':
  67. id = request.args.get('id')
  68. project = request.args.get('project')
  69. name = request.form.get('name')
  70. server = Server.query.filter_by(id=id).first()
  71. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members/' + name + '?project=' + project
  72. client_cert = get_client_crt()
  73. client_key = get_client_key()
  74. results = requests.get(url, verify=server.ssl_verify, cert=(client_cert, client_key))
  75. return jsonify(results.json())
  76. if endpoint == 'update_cluster_member':
  77. id = request.args.get('id')
  78. project = request.args.get('project')
  79. name = request.args.get('name')
  80. server = Server.query.filter_by(id=id).first()
  81. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/cluster/members/' + name + '?project=' + project
  82. client_cert = get_client_crt()
  83. client_key = get_client_key()
  84. if request.form.get('json'):
  85. data = request.form.get('json')
  86. results = requests.put(url, verify=server.ssl_verify, cert=(client_cert, client_key), data=data)
  87. return jsonify(results.json())
  88. if request.form.get('server_name'):
  89. data = {}
  90. data.update({'server_name': request.form.get('server_name')})
  91. results = requests.post(url, verify=server.ssl_verify, cert=(client_cert, client_key), json=data)
  92. return jsonify(results.json())
  93. return False