blob: 7dfc5938d9a54ecc34cf650309a9b23116cee40d [file] [log] [blame]
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2020 Nokia
.. _dictionary_validation:
VNFSDK Dictionary Validation User Guide
==========================================
Library was created to validate Dictionary YAML files which are used in a xNF ETSI NFV onboarding packages - CSAR files.
Basic information
------------------
The Dictionary validation library has two versions:
- validation-dictionary-<version>.jar contains Dictionary YAML validation logic which can be used by any ONAP component. Currently it is used by VNFSDK and SDC.
- validation-dictionary-<version>-standalone.jar contains Dictionary YAML validation logic which can be run from command line.
The Dictionary validation can be started in the two ways:
- as a standalone application
- using an Oclip command
Release Note
------------
The standalone version of Dictionary validation library is available from Honolulu release.
How to download standalone version
----------------------------------
All available jars are available at::
https://nexus.onap.org/#nexus-search;quick~validation-dictionary
To download a standalone version of Dictionary validation library you need to prepare a link for selected version of file or
manually download the file from Nexus (Viewing Repository: Releases).
Template::
wget -O validation-dictionary-<VERSION>-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=<VERSION>&e=jar&c=standalone
For example link for version 1.2.16 looks like::
wget -O validation-dictionary-1.2.16-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=1.2.16&e=jar&c=standalone
Application return codes
------------------------
=========== ===========
Return code Description
=========== ===========
0 No errors, validation passed
1 Validation fails
2 Internal application error
=========== ===========
Application outputs
-------------------
================ ===========
Output Description
================ ===========
Console All information's about operation progress, result and errors are logged at user console.
Log file Application creates a log file where all information's generated by application are logged.
Result json file Validation result is also available in the file with postfix '-validation-results.json'. The File is stored in a folder with input dictionary file.
================ ===========
How to run standalone application?
----------------------------------
1. Install Java 11 JRE
2. Download standalone version of Dictionary YAML validation application
For example::
wget -O validation-dictionary-1.2.16-standalone.jar https://nexus.onap.org/service/local/artifact/maven/redirect?r=snapshots&g=org.onap.vnfsdk.validation&a=validation-dictionary&v=1.2.16&e=jar&c=standalone
3. Go to folder with downloaded application and run it.
Code::
java -jar validation-dictionary-1.2.16-standalone.jar <path to dictionary_file.yaml>
Examples
--------
1. Successful validation.
Code::
java -jar validation-dictionary-1.2.16-standalone.jar /home/username/yaml_schema/Simple_Valid_Schema.yaml
# Executing a 'Validate Dictionary yaml' operation ...
# ... Done.
# Operation result:
{
"file": "/home/username/yaml_schema/Simple_Valid_Schema.yaml",
"status": "PASS",
"errors": []
}
# Result was stored in a file: '/home/username/yaml_schema/Simple_Valid_Schema-validation-results.json'
# Application exits successfully.
echo $?
0
cat Simple_Valid_Schema-validation-results.json
{
"file": "/home/username/yaml_schema/Simple_Valid_Schema.yaml",
"status": "PASS",
"errors": []
}
2. Failing validation.
Code::
java -jar validation-dictionary-1.2.16-standalone.jar /home/username/yaml_schema/Dictionary.yaml
# Executing a 'Validate Dictionary yaml' operation ...
# ... Done.
# Operation result:
{
"file": "/home/username/yaml_schema/Dictionary.yaml",
"status": "FAILED",
"errors": [
{
"yamlDocumentNumber": 1,
"path": "/MetaData/Fields/measResultType",
"message": "Value(s) is/are not in array of accepted values.\n value(s): integer\n accepted value(s): [float, uint32, uint64]"
},
{
"yamlDocumentNumber": 1,
"path": "/MetaData/Fields/",
"message": "Key not found: measChangeType"
},
{
"yamlDocumentNumber": 2,
"path": "/MetaData/Fields/",
"message": "Key not found: measChangeType"
},
{
"yamlDocumentNumber": 3,
"path": "/MetaData/Fields/measAdditionalFields/vendorField1",
"message": "Value(s) is/are not in array of accepted values.\n value(s): [Z, A]\n accepted value(s): [X, Y, Z]"
}
]
}
# Result was stored in a file: '/home/username/yaml_schema/Dictionary-validation-results.json'
# Application exits successfully.
echo $?
1
cat /home/username/yaml_schema/Dictionary-validation-results.json
{
"file": "/home/username/yaml_schema/Dictionary.yaml",
"status": "FAILED",
"errors": [
{
"yamlDocumentNumber": 1,
"path": "/MetaData/Fields/measResultType",
"message": "Value(s) is/are not in array of accepted values.\n value(s): integer\n accepted value(s): [float, uint32, uint64]"
},
{
"yamlDocumentNumber": 1,
"path": "/MetaData/Fields/",
"message": "Key not found: measChangeType"
},
{
"yamlDocumentNumber": 2,
"path": "/MetaData/Fields/",
"message": "Key not found: measChangeType"
},
{
"yamlDocumentNumber": 3,
"path": "/MetaData/Fields/measAdditionalFields/vendorField1",
"message": "Value(s) is/are not in array of accepted values.\n value(s): [Z, A]\n accepted value(s): [X, Y, Z]"
}
]
}
3. Validation internal error
Code::
java -jar validation-dictionary-1.2.16-standalone.jar /home/username/Not_Yaml_File.txt
# Executing a 'Validate Dictionary yaml' operation ...
# Command error:
Provided yaml file has invalid structure!, more information in log file.
# Application fails with internal error.
echo $?
2
cat dictionary-validate.log
2020-12-14 08:23:31,054 ERROR o.o.v.y.YamlLoader [main] Failed to load multi document YAML file
...
How to run Dictionary YAML validation as an Oclip command?
-------------------------------------------------------------
1. Run Oclip and execute a command:
Code::
oclip --product onap-honolulu dictionary-validate --yaml <path-to-yaml-file>
For example:
Code::
vnfadmin@ddc559540515:/tmp$ oclip --product onap-honolulu dictionary-validate --yaml /tmp/Simple_Valid_Schema.yaml
{"file":"/tmp/Simple_Valid_Schema.yaml","date":"Mon Dec 28 07:38:43 UTC 2020","criteria":"PASS","errors":"[]"}
vnfadmin@ddc559540515:/tmp$ oclip --product onap-honolulu dictionary-validate --yaml /tmp/Dictionary.yaml
{"file":"/tmp/Dictionary.yaml","date":"Mon Dec 28 07:38:08 UTC 2020","criteria":"FAILED","errors":"
[{\"yamlDocumentNumber\":1,\"path\":\"/MetaData/Fields/measResultType\",
\"message\":\"Value(s) is/are not in array of accepted values.\\n value(s): integer\\n accepted value(s):
[float, uint32, uint64]\"},{\"yamlDocumentNumber\":1,\"path\":\"/MetaData/Fields/\",\"message\":\"Key not found: measChangeType\"},
{\"yamlDocumentNumber\":2,\"path\":\"/MetaData/Fields/\",\"message\":\"Key not found: measChangeType\"},
{\"yamlDocumentNumber\":3,\"path\":\"/MetaData/Fields/measAdditionalFields/vendorField1\",
\"message\":\"Value(s) is/are not in array of accepted values.\\n value(s): [Z, A]\\n accepted value(s): [X, Y, Z]\"}]"}