
1. Validate graphics parameters from rest requester, with newly added json schema in kimchi. 2. To use "format" property, i need to hook format_checker for Draft3Validator in controller.py. Signed-off-by: apporc <appleorchard2000@gmail.com> --- src/kimchi/API.json | 30 +++++++++++++++++++++++++++--- src/kimchi/controller.py | 4 ++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/kimchi/API.json b/src/kimchi/API.json index 7b90826..21341fd 100644 --- a/src/kimchi/API.json +++ b/src/kimchi/API.json @@ -3,6 +3,27 @@ "title": "Kimchi API", "description": "Json schema for Kimchi API", "type": "object", + "kimchitype": { + "graphics": { + "description": "Configure graphics parameters for the new VM", + "type": "object", + "properties": { + "type": { "enum": ["spice", "vnc"] }, + "listen": { + "type": [ + { + "type": "string", + "format": "ip-address" + }, + { + "type": "string", + "format": "ipv6" + } + ] + } + } + } + }, "properties": { "vms_create": { "type": "object", @@ -21,7 +42,8 @@ "description": "Assign a specefic Storage Pool to the new VM", "type": "string", "pattern": "^/storagepools/[^/]+/?$" - } + }, + "graphics": { "$ref": "#/kimchitype/graphics" } } }, "vm_update": { @@ -129,7 +151,8 @@ "description": "Folder", "type": "array", "items": { "type": "string" } - } + }, + "graphics": { "$ref": "#/kimchitype/graphics" } }, "additionalProperties": false }, @@ -202,7 +225,8 @@ "description": "Folder", "type": "array", "items": { "type": "string" } - } + }, + "graphics": { "$ref": "#/kimchitype/graphics" } }, "additionalProperties": false } diff --git a/src/kimchi/controller.py b/src/kimchi/controller.py index dacaa6a..003adf2 100644 --- a/src/kimchi/controller.py +++ b/src/kimchi/controller.py @@ -26,7 +26,7 @@ import urllib2 from functools import wraps -from jsonschema import Draft3Validator, ValidationError +from jsonschema import Draft3Validator, ValidationError, FormatChecker import kimchi.template @@ -94,7 +94,7 @@ def validate_params(params, instance, action): else: return operation = model_fn(instance, action) - validator = Draft3Validator(api_schema) + validator = Draft3Validator(api_schema, format_checker=FormatChecker()) request = {operation: params} try: validator.validate(request) -- 1.8.1.2