Check unspecified parameters create audit

Currently, create audit with unspecified parameters will success.
This is not reasonable, we shoud return a FAILED status to
notify the admin user.

Change-Id: Ifbcb3b8d9e736607b05b1eb408ec0f41bdf58a2f
Closes-Bug: #1599879
This commit is contained in:
jinquanni
2016-08-24 20:04:10 +08:00
parent e741728eb8
commit 1fafcc5ef1
5 changed files with 85 additions and 8 deletions

View File

@@ -19,6 +19,7 @@
from jsonschema import validators
from oslo_config import cfg
from oslo_log import log as logging
from watcher.common import exception
import re
import six
@@ -142,13 +143,29 @@ def extend_with_default(validator_class):
instance.setdefault(prop, subschema["default"])
for error in validate_properties(
validator, properties, instance, schema,
validator, properties, instance, schema
):
yield error
return validators.extend(
validator_class, {"properties": set_defaults},
)
return validators.extend(validator_class,
{"properties": set_defaults})
DefaultValidatingDraft4Validator = extend_with_default(
validators.Draft4Validator)
# Parameter strict check extension as jsonschema doesn't support it
def extend_with_strict_schema(validator_class):
validate_properties = validator_class.VALIDATORS["properties"]
def strict_schema(validator, properties, instance, schema):
for para in instance.keys():
if para not in properties.keys():
raise exception.AuditParameterNotAllowed(parameter=para)
for error in validate_properties(
validator, properties, instance, schema
):
yield error
return validators.extend(validator_class, {"properties": strict_schema})
StrictDefaultValidatingDraft4Validator = extend_with_default(
extend_with_strict_schema(validators.Draft4Validator))