Преглед на файлове

分离出 add_rule_api 与 add_rule_views,及 api_route_table

James Iter преди 9 години
родител
ревизия
58a18f9b38
променени са 13 файла, в които са добавени 123 реда и са изтрити 120 реда
  1. 0 0
      api/__init__.py
  2. 0 0
      api/config.py
  3. 0 0
      api/disk.py
  4. 0 0
      api/guest.py
  5. 0 0
      api/log.py
  6. 0 0
      api/os_init.py
  7. 0 0
      api/os_init_write.py
  8. 0 0
      api/os_template.py
  9. 76 0
      api_route_table.py
  10. 14 14
      main.py
  11. 6 2
      models/utils.py
  12. 0 76
      route_table.py
  13. 27 28
      tests/test_guest.py

+ 0 - 0
views/__init__.py → api/__init__.py


+ 0 - 0
views/config.py → api/config.py


+ 0 - 0
views/disk.py → api/disk.py


+ 0 - 0
views/guest.py → api/guest.py


+ 0 - 0
views/log.py → api/log.py


+ 0 - 0
views/os_init.py → api/os_init.py


+ 0 - 0
views/os_init_write.py → api/os_init_write.py


+ 0 - 0
views/os_template.py → api/os_template.py


+ 76 - 0
api_route_table.py

@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+from models.utils import add_rule_api
+from api import config
+from api import guest
+from api import disk
+from api import os_init
+from api import os_init_write
+from api import os_template
+from api import log
+
+
+__author__ = 'James Iter'
+__date__ = '2017/03/30'
+__contact__ = 'james.iter.cn@gmail.com'
+__copyright__ = '(c) 2017 by James Iter.'
+
+
+# JimV 配置操作
+add_rule_api(config.blueprint, '', api_func='config.r_create', methods=['POST'])
+# 只有一条记录,所以不指定 id
+add_rule_api(config.blueprint, '', api_func='config.r_update', methods=['PATCH'])
+add_rule_api(config.blueprint, '', api_func='config.r_get', methods=['GET'])
+
+# 系统初始化配置操作
+add_rule_api(os_init.blueprint, '', api_func='os_init.r_create', methods=['POST'])
+add_rule_api(os_init.blueprint, '/<_id>', api_func='os_init.r_update', methods=['PATCH'])
+add_rule_api(os_init.blueprint, '/<_id>', api_func='os_init.r_delete', methods=['DELETE'])
+add_rule_api(os_init.blueprints, '', api_func='os_init.r_get_by_filter', methods=['GET'])
+
+add_rule_api(os_init_write.blueprint, '', api_func='os_init_write.r_create', methods=['POST'])
+add_rule_api(os_init_write.blueprint, '/<_id>', api_func='os_init_write.r_update', methods=['PATCH'])
+add_rule_api(os_init_write.blueprint, '/<_id>', api_func='os_init_write.r_delete', methods=['DELETE'])
+add_rule_api(os_init_write.blueprints, '', api_func='os_init_write.r_get_by_filter', methods=['GET'])
+
+# 系统模板操作
+add_rule_api(os_template.blueprint, '', api_func='os_template.r_create', methods=['POST'])
+add_rule_api(os_template.blueprint, '/<_id>', api_func='os_template.r_update', methods=['PATCH'])
+add_rule_api(os_template.blueprint, '/<_id>', api_func='os_template.r_delete', methods=['DELETE'])
+add_rule_api(os_template.blueprints, '', api_func='os_template.r_get_by_filter', methods=['GET'])
+
+# Guest操作
+# 创建虚拟机
+add_rule_api(guest.blueprint, '', api_func='guest.r_create', methods=['POST'])
+add_rule_api(guest.blueprints, '/_reboot/<uuids>', api_func='guest.r_reboot', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_force_reboot/<uuids>', api_func='guest.r_force_reboot', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_shutdown/<uuids>', api_func='guest.r_shutdown', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_force_shutdown/<uuids>', api_func='guest.r_force_shutdown', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_boot/<uuids>', api_func='guest.r_boot', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_suspend/<uuids>', api_func='guest.r_suspend', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_resume/<uuids>', api_func='guest.r_resume', methods=['PUT'])
+add_rule_api(guest.blueprint, '/_attach_disk/<uuid>/<disk_uuid>', api_func='guest.r_attach_disk', methods=['PUT'])
+add_rule_api(guest.blueprint, '/_detach_disk/<disk_uuid>', api_func='guest.r_detach_disk', methods=['PUT'])
+add_rule_api(guest.blueprints, '/_migrate/<uuids>/<destination_host>', api_func='guest.r_migrate', methods=['PUT'])
+add_rule_api(guest.blueprint, '/<uuid>', api_func='guest.r_get', methods=['GET'])
+add_rule_api(guest.blueprints, '', api_func='guest.r_get_by_filter', methods=['GET'])
+add_rule_api(guest.blueprints, '/_search', api_func='guest.r_content_search', methods=['GET'])
+add_rule_api(guest.blueprint, '/<uuid>', api_func='guest.r_update', methods=['PATCH'])
+add_rule_api(guest.blueprints, '/<uuids>', api_func='guest.r_delete', methods=['DELETE'])
+
+# Disk操作
+add_rule_api(disk.blueprint, '', api_func='disk.r_create', methods=['POST'])
+add_rule_api(disk.blueprint, '/_disk_resize/<uuid>/<size>', api_func='disk.r_resize', methods=['PUT'])
+add_rule_api(disk.blueprints, '/<uuids>', api_func='disk.r_delete', methods=['DELETE'])
+add_rule_api(disk.blueprint, '/<uuid>', api_func='disk.r_update', methods=['PATCH'])
+add_rule_api(disk.blueprint, '/<uuid>', api_func='disk.r_get', methods=['GET'])
+add_rule_api(disk.blueprints, '', api_func='disk.r_get_by_filter', methods=['GET'])
+add_rule_api(disk.blueprints, '/_search', api_func='disk.r_content_search', methods=['GET'])
+
+# 日志查询
+# 系统模板操作
+add_rule_api(log.blueprints, '', api_func='log.r_get_by_filter', methods=['GET'])
+add_rule_api(log.blueprints, '/_search', api_func='log.r_content_search', methods=['GET'])
+

+ 14 - 14
main.py

@@ -12,21 +12,21 @@ import time
 from models import Utils
 from models.event_processor import EventProcessor
 from models.initialize import app, logger
-import route_table
+import api_route_table
 from models import Database as db
-from views.os_init import blueprint as os_init_blueprint
-from views.os_init import blueprints as os_init_blueprints
-from views.os_init_write import blueprint as os_init_write_blueprint
-from views.os_init_write import blueprints as os_init_write_blueprints
-from views.os_template import blueprint as os_template_blueprint
-from views.os_template import blueprints as os_template_blueprints
-from views.guest import blueprint as guest_blueprint
-from views.guest import blueprints as guest_blueprints
-from views.disk import blueprint as disk_blueprint
-from views.disk import blueprints as disk_blueprints
-from views.config import blueprint as config_blueprint
-from views.log import blueprint as log_blueprint
-from views.log import blueprints as log_blueprints
+from api.os_init import blueprint as os_init_blueprint
+from api.os_init import blueprints as os_init_blueprints
+from api.os_init_write import blueprint as os_init_write_blueprint
+from api.os_init_write import blueprints as os_init_write_blueprints
+from api.os_template import blueprint as os_template_blueprint
+from api.os_template import blueprints as os_template_blueprints
+from api.guest import blueprint as guest_blueprint
+from api.guest import blueprints as guest_blueprints
+from api.disk import blueprint as disk_blueprint
+from api.disk import blueprints as disk_blueprints
+from api.config import blueprint as config_blueprint
+from api.log import blueprint as log_blueprint
+from api.log import blueprints as log_blueprints
 
 
 __author__ = 'James Iter'

+ 6 - 2
models/utils.py

@@ -123,5 +123,9 @@ class LazyView(object):
         return self.view(*args, **kwargs)
 
 
-def add_rule(blueprint, rule, view_func=None, **options):
-    blueprint.add_url_rule(rule=rule, view_func=LazyView(''.join(['views.', view_func])), **options)
+def add_rule_api(blueprint, rule, api_func=None, **options):
+    blueprint.add_url_rule(rule=rule, view_func=LazyView(''.join(['api.', api_func])), **options)
+
+
+def add_rule_views(blueprint, rule, views_func=None, **options):
+    blueprint.add_url_rule(rule=rule, view_func=LazyView(''.join(['views.', views_func])), **options)

+ 0 - 76
route_table.py

@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-
-from models.utils import add_rule
-from views import config
-from views import guest
-from views import disk
-from views import os_init
-from views import os_init_write
-from views import os_template
-from views import log
-
-
-__author__ = 'James Iter'
-__date__ = '2017/03/30'
-__contact__ = 'james.iter.cn@gmail.com'
-__copyright__ = '(c) 2017 by James Iter.'
-
-
-# JimV 配置操作
-add_rule(config.blueprint, '', view_func='config.r_create', methods=['POST'])
-# 只有一条记录,所以不指定 id
-add_rule(config.blueprint, '', view_func='config.r_update', methods=['PATCH'])
-add_rule(config.blueprint, '', view_func='config.r_get', methods=['GET'])
-
-# 系统初始化配置操作
-add_rule(os_init.blueprint, '', view_func='os_init.r_create', methods=['POST'])
-add_rule(os_init.blueprint, '/<_id>', view_func='os_init.r_update', methods=['PATCH'])
-add_rule(os_init.blueprint, '/<_id>', view_func='os_init.r_delete', methods=['DELETE'])
-add_rule(os_init.blueprints, '', view_func='os_init.r_get_by_filter', methods=['GET'])
-
-add_rule(os_init_write.blueprint, '', view_func='os_init_write.r_create', methods=['POST'])
-add_rule(os_init_write.blueprint, '/<_id>', view_func='os_init_write.r_update', methods=['PATCH'])
-add_rule(os_init_write.blueprint, '/<_id>', view_func='os_init_write.r_delete', methods=['DELETE'])
-add_rule(os_init_write.blueprints, '', view_func='os_init_write.r_get_by_filter', methods=['GET'])
-
-# 系统模板操作
-add_rule(os_template.blueprint, '', view_func='os_template.r_create', methods=['POST'])
-add_rule(os_template.blueprint, '/<_id>', view_func='os_template.r_update', methods=['PATCH'])
-add_rule(os_template.blueprint, '/<_id>', view_func='os_template.r_delete', methods=['DELETE'])
-add_rule(os_template.blueprints, '', view_func='os_template.r_get_by_filter', methods=['GET'])
-
-# Guest操作
-# 创建虚拟机
-add_rule(guest.blueprint, '', view_func='guest.r_create', methods=['POST'])
-add_rule(guest.blueprints, '/_reboot/<uuids>', view_func='guest.r_reboot', methods=['PUT'])
-add_rule(guest.blueprints, '/_force_reboot/<uuids>', view_func='guest.r_force_reboot', methods=['PUT'])
-add_rule(guest.blueprints, '/_shutdown/<uuids>', view_func='guest.r_shutdown', methods=['PUT'])
-add_rule(guest.blueprints, '/_force_shutdown/<uuids>', view_func='guest.r_force_shutdown', methods=['PUT'])
-add_rule(guest.blueprints, '/_boot/<uuids>', view_func='guest.r_boot', methods=['PUT'])
-add_rule(guest.blueprints, '/_suspend/<uuids>', view_func='guest.r_suspend', methods=['PUT'])
-add_rule(guest.blueprints, '/_resume/<uuids>', view_func='guest.r_resume', methods=['PUT'])
-add_rule(guest.blueprint, '/_attach_disk/<uuid>/<disk_uuid>', view_func='guest.r_attach_disk', methods=['PUT'])
-add_rule(guest.blueprint, '/_detach_disk/<disk_uuid>', view_func='guest.r_detach_disk', methods=['PUT'])
-add_rule(guest.blueprints, '/_migrate/<uuids>/<destination_host>', view_func='guest.r_migrate', methods=['PUT'])
-add_rule(guest.blueprint, '/<uuid>', view_func='guest.r_get', methods=['GET'])
-add_rule(guest.blueprints, '', view_func='guest.r_get_by_filter', methods=['GET'])
-add_rule(guest.blueprints, '/_search', view_func='guest.r_content_search', methods=['GET'])
-add_rule(guest.blueprint, '/<uuid>', view_func='guest.r_update', methods=['PATCH'])
-add_rule(guest.blueprints, '/<uuids>', view_func='guest.r_delete', methods=['DELETE'])
-
-# Disk操作
-add_rule(disk.blueprint, '', view_func='disk.r_create', methods=['POST'])
-add_rule(disk.blueprint, '/_disk_resize/<uuid>/<size>', view_func='disk.r_resize', methods=['PUT'])
-add_rule(disk.blueprints, '/<uuids>', view_func='disk.r_delete', methods=['DELETE'])
-add_rule(disk.blueprint, '/<uuid>', view_func='disk.r_update', methods=['PATCH'])
-add_rule(disk.blueprint, '/<uuid>', view_func='disk.r_get', methods=['GET'])
-add_rule(disk.blueprints, '', view_func='disk.r_get_by_filter', methods=['GET'])
-add_rule(disk.blueprints, '/_search', view_func='disk.r_content_search', methods=['GET'])
-
-# 日志查询
-# 系统模板操作
-add_rule(log.blueprints, '', view_func='log.r_get_by_filter', methods=['GET'])
-add_rule(log.blueprints, '/_search', view_func='log.r_content_search', methods=['GET'])
-

+ 27 - 28
tests/test_guest.py

@@ -27,23 +27,23 @@ class TestGuest(unittest.TestCase):
 
     # 创建Guest
     # @unittest.skip('skip create guest')
-    # def test_11_create(self):
-    #     payload = {
-    #         "cpu": 4,
-    #         "memory": 4,
-    #         "os_template_id": 1,
-    #         "quantity": 1,
-    #         "name": "",
-    #         "password": "pswd.com",
-    #         "lease_term": 100
-    #     }
-    #
-    #     url = TestGuest.base_url + '/guest'
-    #     headers = {'content-type': 'application/json'}
-    #     r = requests.post(url, data=json.dumps(payload), headers=headers)
-    #     j_r = json.loads(r.content)
-    #     print json.dumps(j_r, ensure_ascii=False)
-    #     self.assertEqual('200', j_r['state']['code'])
+    def test_11_create(self):
+        payload = {
+            "cpu": 4,
+            "memory": 4,
+            "os_template_id": 1,
+            "quantity": 1,
+            "name": "",
+            "password": "pswd.com",
+            "lease_term": 100
+        }
+
+        url = TestGuest.base_url + '/guest'
+        headers = {'content-type': 'application/json'}
+        r = requests.post(url, data=json.dumps(payload), headers=headers)
+        j_r = json.loads(r.content)
+        print json.dumps(j_r, ensure_ascii=False)
+        self.assertEqual('200', j_r['state']['code'])
 
     # 获取 Guest 列表
     # def test_12_get_list(self):
@@ -136,17 +136,16 @@ class TestGuest(unittest.TestCase):
     #     print json.dumps(j_r, ensure_ascii=False)
     #     self.assertEqual('200', j_r['state']['code'])
     #
-    # 删除Guest
-    # @unittest.skip('skip delete guest')
-    def test_41_delete(self):
-        TestGuest.uuid = '8ed82dca-e956-469b-a6c1-c16a89763ab1'
-        url = TestGuest.base_url + '/guests/' + TestGuest.uuid
-        headers = {'content-type': 'application/json'}
-        r = requests.delete(url, headers=headers)
-        j_r = json.loads(r.content)
-        print json.dumps(j_r, ensure_ascii=False)
-        self.assertEqual('200', j_r['state']['code'])
-
+    # # 删除Guest
+    # # @unittest.skip('skip delete guest')
+    # def test_41_delete(self):
+    #     url = TestGuest.base_url + '/guests/' + TestGuest.uuid
+    #     headers = {'content-type': 'application/json'}
+    #     r = requests.delete(url, headers=headers)
+    #     j_r = json.loads(r.content)
+    #     print json.dumps(j_r, ensure_ascii=False)
+    #     self.assertEqual('200', j_r['state']['code'])
+    #
     # def test_42_delete_disk(self):
     #     url = TestGuest.base_url + '/disk/' + TestGuest.disk_uuid
     #     headers = {'content-type': 'application/json'}