cluster.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #-*- coding:utf-8 -*-
  2. __author__ = 'Ulric Qin'
  3. from flask import jsonify, render_template, request, g
  4. from rrd import app
  5. from rrd.model.portal.host_group import HostGroup
  6. from rrd.model.portal.cluster import Cluster
  7. from rrd.utils.params import required_chk
  8. @app.route('/portal/group/<group_id>/cluster')
  9. def cluster_list_get(group_id):
  10. group_id = int(group_id)
  11. group = HostGroup.read(where='id = %s', params=[group_id])
  12. if not group:
  13. return jsonify(msg='no such group %s' % group_id)
  14. clusters = Cluster.select_vs(where='grp_id = %s', params=[group_id])
  15. return render_template('portal/cluster/list.html', **locals())
  16. @app.route('/portal/group/<group_id>/cluster/creator', methods=['GET'])
  17. def cluster_creator_get(group_id):
  18. group_id = int(group_id)
  19. group = HostGroup.read(where='id = %s', params=[group_id])
  20. if not group:
  21. return jsonify(msg='no such group %s' % group_id)
  22. return render_template('portal/cluster/creator.html', **locals())
  23. @app.route('/portal/group/<group_id>/cluster/creator', methods=['POST'])
  24. def cluster_node_post(group_id):
  25. group_id = int(group_id)
  26. group = HostGroup.read(where='id = %s', params=[group_id])
  27. if not group:
  28. return jsonify(msg='no such group %s' % group_id)
  29. numerator = request.form['numerator'].strip()
  30. denominator = request.form['denominator'].strip()
  31. endpoint = request.form['endpoint'].strip()
  32. metric = request.form['metric'].strip()
  33. tags = request.form['tags'].strip()
  34. ds_type = 'GAUGE'
  35. step = request.form['step'].strip()
  36. msg = required_chk({
  37. 'numerator': numerator,
  38. 'denominator': denominator,
  39. 'endpoint': endpoint,
  40. 'metric': metric,
  41. 'ds_type': ds_type,
  42. 'step': step,
  43. })
  44. if msg:
  45. return jsonify(msg=msg)
  46. if Cluster.exists('endpoint=%s and metric=%s and tags=%s', [endpoint, metric, tags]):
  47. return jsonify(msg='%s/%s/%s is already existent' % (endpoint, metric, tags))
  48. last_id = Cluster.insert({
  49. 'grp_id': group_id,
  50. 'numerator': numerator,
  51. 'denominator': denominator,
  52. 'endpoint': endpoint,
  53. 'metric': metric,
  54. 'tags': tags,
  55. 'ds_type': ds_type,
  56. 'step': step,
  57. 'creator': g.user.name,
  58. })
  59. if last_id > 0:
  60. return jsonify(msg='')
  61. else:
  62. return jsonify(msg='occur error')
  63. @app.route('/portal/cluster/edit/<cluster_id>', methods=['GET'])
  64. def cluster_edit_get(cluster_id):
  65. cluster_id = int(cluster_id)
  66. cluster = Cluster.get(cluster_id)
  67. op = u'修改'
  68. return render_template('portal/cluster/edit.html', **locals())
  69. @app.route('/portal/cluster/clone/<cluster_id>', methods=['GET'])
  70. def cluster_clone_get(cluster_id):
  71. cluster_id = int(cluster_id)
  72. cluster = Cluster.get(cluster_id)
  73. # for clone
  74. cluster_id = 0
  75. op = u'克隆'
  76. return render_template('portal/cluster/edit.html', **locals())
  77. @app.route('/portal/cluster/delete/<cluster_id>', methods=['POST'])
  78. def cluster_delete_post(cluster_id):
  79. cluster_id = int(cluster_id)
  80. Cluster.delete_one(cluster_id)
  81. return jsonify(msg='')
  82. @app.route('/portal/cluster/edit/<cluster_id>', methods=['POST'])
  83. def cluster_edit_post(cluster_id):
  84. cluster_id = int(cluster_id)
  85. numerator = request.form['numerator'].strip()
  86. denominator = request.form['denominator'].strip()
  87. endpoint = request.form['endpoint'].strip()
  88. metric = request.form['metric'].strip()
  89. tags = request.form['tags'].strip()
  90. ds_type = 'GAUGE'
  91. step = request.form['step'].strip()
  92. grp_id = request.form['grp_id'].strip()
  93. if cluster_id:
  94. # edit
  95. if Cluster.exists('endpoint=%s and metric=%s and tags=%s and id<>%s', [endpoint, metric, tags, cluster_id]):
  96. return jsonify(msg='%s/%s/%s has already existent' % (endpoint, metric, tags))
  97. Cluster.update_dict({
  98. 'numerator': numerator,
  99. 'denominator': denominator,
  100. 'endpoint': endpoint,
  101. 'metric': metric,
  102. 'tags': tags,
  103. 'ds_type': ds_type,
  104. 'step': step,
  105. }, 'id=%s', [cluster_id])
  106. else:
  107. # clone
  108. last_id = Cluster.insert({
  109. 'numerator': numerator,
  110. 'denominator': denominator,
  111. 'endpoint': endpoint,
  112. 'metric': metric,
  113. 'tags': tags,
  114. 'ds_type': ds_type,
  115. 'step': step,
  116. 'creator': g.user.name,
  117. 'grp_id': grp_id,
  118. })
  119. if last_id <= 0:
  120. return jsonify(msg='occur error')
  121. return jsonify(msg='')