[Kimchi-devel] [PATCH V4 3/5] Validate graphics parameters input by users
Aline Manera
alinefm at linux.vnet.ibm.com
Fri Dec 27 13:06:19 UTC 2013
Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>
On 12/25/2013 12:52 PM, apporc wrote:
> 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 at 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)
More information about the Kimchi-devel
mailing list