X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Flcm%2Fpub%2Fverifyvnfd%2Fverifyvnfd.py;h=0276c0973ece8780d49d6b5387909ffde7b071e4;hb=d8019fdc8c1243f7c8bcf54921639333526f3749;hp=b4ed0408e4198f62e891541fee3c5b5c071af957;hpb=5f43f873d21ee49a3f1a8c2ae7d6252604ad9119;p=vfc%2Fgvnfm%2Fvnflcm.git diff --git a/lcm/lcm/pub/verifyvnfd/verifyvnfd.py b/lcm/lcm/pub/verifyvnfd/verifyvnfd.py index b4ed0408..0276c097 100644 --- a/lcm/lcm/pub/verifyvnfd/verifyvnfd.py +++ b/lcm/lcm/pub/verifyvnfd/verifyvnfd.py @@ -13,7 +13,9 @@ # limitations under the License. import json +import re import os +import six import logging import jsonschema from lcm.pub.exceptions import NFLCMException @@ -21,15 +23,39 @@ from lcm.pub.exceptions import NFLCMException logger = logging.getLogger(__name__) +def _format_validation_error(error): + """ + :param error: validation error to format + :type error: jsonchema.exceptions.ValidationError + :returns: string representation of the validation error + :rtype: str + """ + match = re.search("(.+) is a required property", error.message) + if match: + message = 'Error: missing required property {}.'.format( + match.group(1)) + else: + message = 'Error: {}\n'.format(error.message) + if len(error.absolute_path) > 0: + message += 'Path: {}\n'.format( + '.'.join( + [six.text_type(path) + for path in error.absolute_path])) + message += 'Value: {}'.format(json.dumps(error.instance)) + + return message + + def verify(new_vnfd): errors_found = [] - vnfd_schema_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "vnf_vnfd_schema.json") + vnfd_schema_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "vnf_vnfd_all_schema.json") with open(vnfd_schema_path, "r") as fvnfd_schema: vnfd_schema = json.load(fvnfd_schema) vnfd_validator = jsonschema.validators.Draft4Validator(schema=vnfd_schema) for error in vnfd_validator.iter_errors(new_vnfd): - logger.error("vnfd verify fail:%s" % error) - errors_found.append(error) - if len(errors_found) > 0: - raise NFLCMException(errors_found) - return errors_found + # print("Error:%s" % error) + logger.error("vnfd verify fail,%s" % _format_validation_error(error)) + errors_found.append(_format_validation_error(error)) + if len(errors_found) > 0: + raise NFLCMException(errors_found) + return True