ip_pool.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from flask import Blueprint, request
  4. import json
  5. import jimit as ji
  6. from jimvc.models import Utils
  7. from jimvc.models import Rules
  8. from jimvc.models import IPPool
  9. from base import Base
  10. __author__ = 'James Iter'
  11. __date__ = '2018-12-15'
  12. __contact__ = 'james.iter.cn@gmail.com'
  13. __copyright__ = '(c) 2018 by James Iter.'
  14. blueprint = Blueprint(
  15. 'api_ip_pool',
  16. __name__,
  17. url_prefix='/api/ip_pool'
  18. )
  19. blueprints = Blueprint(
  20. 'api_ip_pools',
  21. __name__,
  22. url_prefix='/api/ip_pools'
  23. )
  24. ip_pool_base = Base(the_class=IPPool, the_blueprint=blueprint, the_blueprints=blueprints)
  25. @Utils.dumps2response
  26. def r_create():
  27. args_rules = [
  28. Rules.START_IP.value,
  29. Rules.END_IP.value,
  30. Rules.NETMASK.value,
  31. Rules.GATEWAY.value,
  32. Rules.DNS1.value,
  33. Rules.DNS2.value,
  34. Rules.NAME.value,
  35. Rules.DESCRIPTION.value
  36. ]
  37. ip_pool = IPPool()
  38. ip_pool.start_ip = request.json.get('start_ip')
  39. ip_pool.end_ip = request.json.get('end_ip')
  40. ip_pool.netmask = request.json.get('netmask')
  41. ip_pool.gateway = request.json.get('gateway')
  42. ip_pool.dns1 = request.json.get('dns1')
  43. ip_pool.dns2 = request.json.get('dns2')
  44. ip_pool.name = request.json.get('name', '')
  45. ip_pool.description = request.json.get('description', '')
  46. try:
  47. ji.Check.previewing(args_rules, ip_pool.__dict__)
  48. ret = dict()
  49. ret['state'] = ji.Common.exchange_state(20000)
  50. ip_pool.check_ip()
  51. ip_pool.create()
  52. ip_pool.get()
  53. ret['data'] = ip_pool.__dict__
  54. return ret
  55. except ji.PreviewingError, e:
  56. return json.loads(e.message)
  57. @Utils.dumps2response
  58. def r_update(ids):
  59. ret = dict()
  60. ret['state'] = ji.Common.exchange_state(20000)
  61. ret['data'] = list()
  62. args_rules = [
  63. Rules.IDS.value
  64. ]
  65. if 'start_ip' in request.json:
  66. args_rules.append(
  67. Rules.START_IP.value,
  68. )
  69. if 'end_ip' in request.json:
  70. args_rules.append(
  71. Rules.END_IP.value,
  72. )
  73. if 'netmask' in request.json:
  74. args_rules.append(
  75. Rules.NETMASK.value,
  76. )
  77. if 'gateway' in request.json:
  78. args_rules.append(
  79. Rules.GATEWAY.value,
  80. )
  81. if 'dns1' in request.json:
  82. args_rules.append(
  83. Rules.DNS1.value,
  84. )
  85. if 'dns2' in request.json:
  86. args_rules.append(
  87. Rules.DNS2.value,
  88. )
  89. if 'name' in request.json:
  90. args_rules.append(
  91. Rules.NAME.value,
  92. )
  93. if 'description' in request.json:
  94. args_rules.append(
  95. Rules.DESCRIPTION.value,
  96. )
  97. if args_rules.__len__() < 2:
  98. return ret
  99. request.json['ids'] = ids
  100. try:
  101. ji.Check.previewing(args_rules, request.json)
  102. ip_pool = IPPool()
  103. # 检测所指定的 UUDIs 磁盘都存在
  104. for _id in ids.split(','):
  105. ip_pool.id = _id
  106. ip_pool.get()
  107. for _id in ids.split(','):
  108. ip_pool.id = _id
  109. ip_pool.get()
  110. ip_pool.start_ip = request.json.get('start_ip', ip_pool.start_ip)
  111. ip_pool.end_ip = request.json.get('end_ip', ip_pool.end_ip)
  112. ip_pool.netmask = request.json.get('netmask', ip_pool.netmask)
  113. ip_pool.gateway = request.json.get('gateway', ip_pool.gateway)
  114. ip_pool.dns1 = request.json.get('dns1', ip_pool.dns1)
  115. ip_pool.dns2 = request.json.get('dns2', ip_pool.dns2)
  116. ip_pool.name = request.json.get('name', ip_pool.name)
  117. ip_pool.description = request.json.get('description', ip_pool.description)
  118. ip_pool.check_ip()
  119. ip_pool.update()
  120. ip_pool.get()
  121. ret['data'].append(ip_pool.__dict__)
  122. return ret
  123. except ji.PreviewingError, e:
  124. return json.loads(e.message)
  125. @Utils.dumps2response
  126. def r_get(ids):
  127. return ip_pool_base.get(ids=ids, ids_rule=Rules.IDS.value, by_field='id')
  128. @Utils.dumps2response
  129. def r_get_by_filter():
  130. return ip_pool_base.get_by_filter()
  131. @Utils.dumps2response
  132. def r_content_search():
  133. return ip_pool_base.content_search()
  134. @Utils.dumps2response
  135. def r_delete(ids):
  136. return ip_pool_base.delete(ids=ids, ids_rule=Rules.IDS.value, by_field='id')