X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fvalidation.py;h=6ed6fbab3fd909cc208628d36f2b783ed02ea8f0;hp=112461b1db6463efbed41ed4f483687d5595a41e;hb=519da48b76e8996450d58debecf5fdde7daa5b5e;hpb=544a2ae8b0b950b55f29c3f0a223ffe4874285e5 diff --git a/osm_nbi/validation.py b/osm_nbi/validation.py index 112461b..6ed6fba 100644 --- a/osm_nbi/validation.py +++ b/osm_nbi/validation.py @@ -447,8 +447,9 @@ ns_update = { "properties": { "lcmOperationType": string_schema, "nsInstanceId": id_schema, + "timeout_ns_update": integer1_schema, "updateType": { - "enum": ["CHANGE_VNFPKG", "REMOVE_VNF", "MODIFY_VNF_INFORMATION"] + "enum": ["CHANGE_VNFPKG", "REMOVE_VNF", "MODIFY_VNF_INFORMATION", "OPERATE_VNF"] }, "modifyVnfInfoData": { "type": "object", @@ -467,6 +468,24 @@ ns_update = { }, "required": ["vnfInstanceId", "vnfdId"], }, + "operateVnfData": { + "type": "object", + "properties": { + "vnfInstanceId": id_schema, + "changeStateTo": name_schema, + "additionalParam": { + "type": "object", + "properties": { + "run-day1": bool_schema, + "vdu_id": name_schema, + "count-index": integer0_schema, + }, + "required": ["vdu_id", "count-index"], + "additionalProperties": False, + } + }, + "required": ["vnfInstanceId", "changeStateTo"], + } }, "required": ["updateType"], "additionalProperties": False, @@ -491,6 +510,7 @@ ns_action = { # TODO for the moment it is only contemplated the vnfd primitive "required": ["primitive", "primitive_params"], # TODO add member_vnf_index "additionalProperties": False, } + ns_scale = { # TODO for the moment it is only VDU-scaling "title": "ns scale input schema", "$schema": "http://json-schema.org/draft-04/schema#", @@ -525,6 +545,96 @@ ns_scale = { # TODO for the moment it is only VDU-scaling "additionalProperties": False, } +ns_migrate = { + "title": "ns migrate input schema", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "lcmOperationType": string_schema, + "nsInstanceId": id_schema, + "vnfInstanceId": id_schema, + "migrateToHost": string_schema, + "vdu": { + "type": "object", + "properties": { + "vduId": name_schema, + "vduCountIndex": integer0_schema, + }, + "required": ["vduId"], + "additionalProperties": False, + }, + }, + "required": ["vnfInstanceId"], + "additionalProperties": False +} + +ns_heal = { + "title": "ns heal input schema", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "lcmOperationType": string_schema, + "nsInstanceId": id_schema, + "timeout_ns_heal": integer1_schema, + "healVnfData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vnfInstanceId": id_schema, + "cause": description_schema, + "additionalParams": { + "type": "object", + "properties": { + "run-day1": bool_schema, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "run-day1": bool_schema, + "vdu-id": name_schema, + "count-index": integer0_schema, + }, + "required": ["vdu-id"], + "additionalProperties": False, + }, + }, + }, + "additionalProperties": False, + }, + }, + "required": ["vnfInstanceId"], + "additionalProperties": False, + }, + }, + }, + "required": ["healVnfData"], + "additionalProperties": False, +} + +ns_verticalscale = { + "title": "vertial scale input schema", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "lcmOperationType": string_schema, + "nsInstanceId": id_schema, + "vnfInstanceId": id_schema, + "migrateToHost": string_schema, + "vdu": { + "type": "object", + "properties": { + "vduId": name_schema, + "vduCountIndex": integer0_schema, + }, + "required": ["vduId"], + "additionalProperties": False, + }, + }, + "required": ["vnfInstanceId"], + "additionalProperties": False +} schema_version = {"type": "string", "enum": ["1.0"]} schema_type = {"type": "string"} @@ -695,6 +805,18 @@ sdn_external_port_schema = { } # K8s Clusters +k8scluster_deploy_method_schema = { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Deployment methods for K8s cluster", + "type": "object", + "properties": { + "helm-chart": {"type": "boolean"}, + "juju-bundle": {"type": "boolean"}, + "helm-chart-v3": {"type": "boolean"}, + }, + "additionalProperties": False, + "minProperties": 3, +} k8scluster_nets_schema = { "title": "k8scluster nets input schema", "$schema": "http://json-schema.org/draft-04/schema#", @@ -717,6 +839,7 @@ k8scluster_new_schema = { "vca_id": id_schema, "k8s_version": string_schema, "nets": k8scluster_nets_schema, + "deployment_methods": k8scluster_deploy_method_schema, "namespace": name_schema, "cni": nameshort_list_schema, }, @@ -1081,6 +1204,7 @@ nbi_new_input_schemas = { "ns_action": ns_action, "ns_scale": ns_scale, "ns_update": ns_update, + "ns_heal": ns_heal, "pdus": pdu_new_schema, } @@ -1286,6 +1410,63 @@ subscription = { "required": ["CallbackUri"], } +vnflcmsub_schema = { + "title": "vnflcmsubscription input schema", + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "VnfInstanceSubscriptionFilter": { + "type": "object", + "properties": { + "vnfdIds": {"type": "array"}, + "vnfInstanceIds": {"type": "array"}, + }, + }, + "notificationTypes": { + "type": "array", + "items": { + "enum": [ + "VnfIdentifierCreationNotification", + "VnfLcmOperationOccurrenceNotification", + "VnfIdentifierDeletionNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "enum": [ + "INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", + "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO", "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", "CHANGE_VNFPKG" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "enum": [ + "STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", + "ROLLING_BACK", "ROLLED_BACK" + ] + } + } + }, + "required": ["VnfInstanceSubscriptionFilter", "notificationTypes"] + } + +vnf_subscription = { + "title": "vnf subscription input schema", + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "filter": vnflcmsub_schema, + "CallbackUri": description_schema, + "authentication": authentication_schema + }, + "required": ["filter", "CallbackUri"] +} + class ValidationError(Exception): def __init__(self, message, http_code=HTTPStatus.UNPROCESSABLE_ENTITY):