"""
# Basis schemas
-name_schema = {"type": "string", "minLength": 1, "maxLength": 255, "pattern": "^[^,;()'\"]+$"}
+name_schema = {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": "^[^,;()'\"]+$",
+}
string_schema = {"type": "string", "minLength": 1, "maxLength": 255}
ssh_key_schema = {"type": "string", "minLength": 1}
-id_schema = {"type": "string", "pattern": "^[a-fA-F0-9]{8}(-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$"}
+id_schema = {
+ "type": "string",
+ "pattern": "^[a-fA-F0-9]{8}(-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$",
+}
bool_schema = {"type": "boolean"}
null_schema = {"type": "null"}
+object_schema = {"type": "object"}
-image_schema = {
- "title": "image input validation",
+deploy_item_schema = {
+ "title": "deploy item validation. Each vld, vdu, flavor, image, ...",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
- # TODO
+ "properties": {
+ "id": string_schema,
+ "vim_info": object_schema,
+ "common_id": string_schema,
+ },
+ "additionalProperties": True,
+}
+
+deploy_item_list = {
+ "type": "array",
+ "items": deploy_item_schema,
}
-flavor_schema = {
- "title": "image input validation",
+deploy_vnf_schema = {
+ "title": "deploy.vnf.item validation",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
- # TODO
+ "properties": {
+ "_id": id_schema,
+ "vdur": deploy_item_list,
+ "vld": deploy_item_list,
+ },
+ "additionalProperties": True,
+ "required": ["_id"],
}
-ns_schema = {
- "title": "image input validation",
+deploy_action_schema = {
+ "title": "deploy.action validation",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
- # TODO
+ "properties": {
+ "action": {"enum": ["inject_ssh_key"]},
+ "key": ssh_key_schema,
+ "user": string_schema,
+ "password": string_schema,
+ },
+ "additionalProperties": False,
+ "required": ["action"],
}
deploy_schema = {
"type": "object",
"properties": {
"action_id": string_schema,
- "name": name_schema,
- "action": {"enum" ["inject_ssh_key"]},
- "key": ssh_key_schema,
- "user": name_schema,
- "password": string_schema,
+ "cloud_init_content": object_schema,
+ "name": string_schema,
+ "action": deploy_action_schema,
"vnf": {
+ "type": "array",
+ "items": deploy_vnf_schema,
+ },
+ "image": deploy_item_list,
+ "flavor": deploy_item_list,
+ "ns": {
"type": "object",
"properties": {
- "_id": id_schema,
- # TODO
+ "vld": deploy_item_list,
},
- "required": ["_id"],
- "additionalProperties": True,
- },
- "image": {
- "type": "array",
- "minItems": 1,
- "items": image_schema
},
- "flavor": {
- "type": "array",
- "minItems": 1,
- "items": flavor_schema
- },
- "ns": ns_schema,
},
-
- "required": ["name"],
- "additionalProperties": False
+ "additionalProperties": False,
}
try:
if schema_to_use:
js_v(indata, schema_to_use)
+
return None
except js_e.ValidationError as e:
if e.path:
error_pos = "at '" + ":".join(map(str, e.path)) + "'"
else:
error_pos = ""
+
raise ValidationError("Format error {} '{}' ".format(error_pos, e.message))
except js_e.SchemaError:
- raise ValidationError("Bad json schema {}".format(schema_to_use), http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
+ raise ValidationError(
+ "Bad json schema {}".format(schema_to_use),
+ http_code=HTTPStatus.INTERNAL_SERVER_ERROR,
+ )