network_zones.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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_network_zones_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 == 'add_network_zone':
  16. id = request.args.get('id')
  17. project = request.args.get('project')
  18. server = Server.query.filter_by(id=id).first()
  19. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/network-zones?project=' + project
  20. client_cert = get_client_crt()
  21. client_key = get_client_key()
  22. if request.form.get('json'):
  23. data = request.form.get('json')
  24. results = requests.post(url, verify=server.ssl_verify, cert=(client_cert, client_key), data=data)
  25. return jsonify(results.json())
  26. data = {}
  27. data.update({'name': request.form.get('name')})
  28. data.update({'description': request.form.get('description')})
  29. results = requests.post(url, verify=server.ssl_verify, cert=(client_cert, client_key), json=data)
  30. return jsonify(results.json())
  31. if endpoint == 'delete_network_zone':
  32. id = request.args.get('id')
  33. project = request.args.get('project')
  34. name = request.form.get('name')
  35. server = Server.query.filter_by(id=id).first()
  36. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/network-zones/' + name + '?project=' + project
  37. client_cert = get_client_crt()
  38. client_key = get_client_key()
  39. results = requests.delete(url, verify=server.ssl_verify, cert=(client_cert, client_key))
  40. return jsonify(results.json())
  41. if endpoint == 'list_network_zones':
  42. id = request.args.get('id')
  43. project = request.args.get('project')
  44. server = Server.query.filter_by(id=id).first()
  45. recursion = request.args.get('recursion')
  46. if recursion == '1':
  47. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/network-zones?recursion=1&project=' + project
  48. else:
  49. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/network-zones?project=' + project
  50. client_cert = get_client_crt()
  51. client_key = get_client_key()
  52. results = requests.get(url, verify=server.ssl_verify, cert=(client_cert, client_key))
  53. return jsonify(results.json())
  54. if endpoint == 'load_network_zone':
  55. id = request.args.get('id')
  56. project = request.args.get('project')
  57. name = request.form.get('name')
  58. server = Server.query.filter_by(id=id).first()
  59. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/network-zones/' + name + '?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. if endpoint == 'update_network_zone':
  65. id = request.args.get('id')
  66. project = request.args.get('project')
  67. name = request.args.get('name')
  68. server = Server.query.filter_by(id=id).first()
  69. url = 'https://' + server.addr + ':' + str(server.port) + '/1.0/network-zones/' + name + '?project=' + project
  70. client_cert = get_client_crt()
  71. client_key = get_client_key()
  72. if request.form.get('json'):
  73. data = request.form.get('json')
  74. results = requests.put(url, verify=server.ssl_verify, cert=(client_cert, client_key), data=data)
  75. return jsonify(results.json())
  76. if request.form.get('name'):
  77. data = {}
  78. data.update({'name': request.form.get('name')})
  79. results = requests.post(url, verify=server.ssl_verify, cert=(client_cert, client_key), json=data)
  80. return jsonify(results.json())
  81. return False