Browse Source

创建磁盘测试通过

James Iter 9 years ago
parent
commit
b98e4b44cf
6 changed files with 72 additions and 10 deletions
  1. 4 0
      main.py
  2. 2 2
      misc/init.sql
  3. 1 1
      models/rules.py
  4. 1 1
      route_table.py
  5. 57 0
      tests/test_disk.py
  6. 7 6
      views/disk.py

+ 4 - 0
main.py

@@ -22,6 +22,8 @@ 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
@@ -47,6 +49,8 @@ try:
     app.register_blueprint(os_template_blueprints)
     app.register_blueprint(guest_blueprint)
     app.register_blueprint(guest_blueprints)
+    app.register_blueprint(disk_blueprint)
+    app.register_blueprint(disk_blueprints)
     app.register_blueprint(config_blueprint)
     app.register_blueprint(log_blueprint)
     app.register_blueprint(log_blueprints)

+ 2 - 2
misc/init.sql

@@ -1,4 +1,4 @@
-DROP DATABASE IF EXISTS jimv;
+# DROP DATABASE IF EXISTS jimv;
 CREATE DATABASE IF NOT EXISTS jimv CHARACTER SET utf8;
 USE jimv;
 
@@ -36,7 +36,7 @@ CREATE TABLE IF NOT EXISTS guest_disk(
     uuid CHAR(36) NOT NULL,
     label VARCHAR(255) NOT NULL,
     size INT UNSIGNED NOT NULL,
-    sequence TINYINT UNSIGNED NOT NULL,
+    sequence TINYINT NOT NULL,
     format CHAR(16) NOT NULL DEFAULT 'qcow2',
     guest_uuid CHAR(36) NOT NULL,
     PRIMARY KEY (id))

+ 1 - 1
models/rules.py

@@ -50,7 +50,7 @@ class Rules(Enum):
     LEASE_TERM = (int, 'lease_term')
     DESTINATION_HOST = (basestring, 'destination_host', (5, 64))
     DISK_UUID = (basestring, 'disk_uuid', (36, 36))
-    DISK_SIZE = ('regex:^\d{1,7}$', 'size')
+    DISK_SIZE = (int, 'size')
 
     REMARK = (basestring, 'remark')
     LABEL = (basestring, 'label')

+ 1 - 1
route_table.py

@@ -60,7 +60,7 @@ 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, '/<size>', view_func='disk.r_create', methods=['POST'])
+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.blueprint, '/<uuid>', view_func='disk.r_delete', methods=['DELETE'])
 

+ 57 - 0
tests/test_disk.py

@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+import requests
+import json
+import unittest
+
+
+__author__ = 'James Iter'
+__date__ = '2017/4/27'
+__contact__ = 'james.iter.cn@gmail.com'
+__copyright__ = '(c) 2017 by James Iter.'
+
+
+class TestDisk(unittest.TestCase):
+
+    base_url = 'http://127.0.0.1:8008/api'
+    uuid = ''
+
+    def setUp(self):
+        pass
+
+    def tearDown(self):
+        pass
+
+    # 创建 Disk
+    def test_11_create(self):
+        payload = {
+            "size": 10
+        }
+
+        url = TestDisk.base_url + '/disk'
+        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_12_get(self):
+        pass
+
+    def test_13_update(self):
+        pass
+
+    # 校验更新结果
+    def test_14_get(self):
+        pass
+
+    # 删除Guest
+    # @unittest.skip('skip delete guest')
+    def test_15_delete(self):
+        pass
+
+
+if __name__ == '__main__':
+    unittest.main()

+ 7 - 6
views/disk.py

@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 
 
-from flask import Blueprint
+from flask import Blueprint, request
 import json
 from uuid import uuid4
 import jimit as ji
@@ -36,21 +36,21 @@ blueprints = Blueprint(
 
 
 @Utils.dumps2response
-def r_create(size):
+def r_create():
 
     args_rules = [
         Rules.DISK_SIZE.value
     ]
 
     try:
-        ji.Check.previewing(args_rules, {'size': size})
+        ji.Check.previewing(args_rules, request.json)
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
 
-        size = int(size)
+        size = request.json['size']
 
-        if not isinstance(size, int) or size < 1:
+        if size < 1:
             ret['state'] = ji.Common.exchange_state(41255)
             return ret
 
@@ -61,7 +61,6 @@ def r_create(size):
         guest_disk.label = ji.Common.generate_random_code(length=8)
         guest_disk.sequence = -1
         guest_disk.format = 'qcow2'
-        guest_disk.create()
 
         config = Config()
         config.id = 1
@@ -74,6 +73,8 @@ def r_create(size):
 
         db.r.rpush(app.config['downstream_queue'], json.dumps(message, ensure_ascii=False))
 
+        guest_disk.create()
+
         return ret
 
     except ji.PreviewingError, e: