diff options
author | Lianhao Lu <lianhao.lu@intel.com> | 2018-08-09 16:45:49 +0800 |
---|---|---|
committer | Lianhao Lu <lianhao.lu@intel.com> | 2018-08-09 16:45:49 +0800 |
commit | 4e3368b279970e4244addbafbf650b316255d69c (patch) | |
tree | b04ccd8eec6f2837d57cb57678218e43398f95ab /vnfsdk_pkgtools/validator/toscaparser_validator.py | |
parent | 1de1b090628422d1e25da1384a95a81e91cc6e97 (diff) |
Ground work for hpa validation
Added the declarative schema for hpa validation. This is the ground
layering work for hpa validation.
Change-Id: I2ff30489e191ecf187711e1025f6e3faee9946c3
Issue-ID: VNFSDK-194
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
Diffstat (limited to 'vnfsdk_pkgtools/validator/toscaparser_validator.py')
-rw-r--r-- | vnfsdk_pkgtools/validator/toscaparser_validator.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/vnfsdk_pkgtools/validator/toscaparser_validator.py b/vnfsdk_pkgtools/validator/toscaparser_validator.py index bcb3e9e..d1aad30 100644 --- a/vnfsdk_pkgtools/validator/toscaparser_validator.py +++ b/vnfsdk_pkgtools/validator/toscaparser_validator.py @@ -15,18 +15,44 @@ import logging import os +import pkg_resources from toscaparser.common.exception import ValidationError from toscaparser.tosca_template import ToscaTemplate from vnfsdk_pkgtools import validator +from vnfsdk_pkgtools.validator import utils LOG = logging.getLogger(__name__) +class HpaSchemaDefError(ValueError): + pass + + class ToscaparserValidator(validator.ValidatorBase): def __init__(self): super(ToscaparserValidator, self).__init__() + self._load_hpa_definition() + + def _load_hpa_definition(self): + conf = pkg_resources.resource_filename(__name__, "hpa.yaml") + defs = utils.load_definitions(conf, {}) + self.hpa_schema_version = defs.get('metadata', {}).get('version') + self.hpa_schemas = defs.get('schemas', {}) + self.hpa_mappings = defs.get('mappings', []) + #validate schema defined in hpa.yaml is correct + if not self.hpa_schema_version: + msg = "No defined version in metadata" + raise HpaSchemaDefError(msg) + for mapping in self.hpa_mappings: + schema = mapping.get('schema') + if schema not in self.hpa_schemas: + msg = "schema %s not found in hpa schema definitions" % schema + raise HpaSchemaDefError(msg) + if not mapping.get('type') or not mapping.get('key'): + msg = "type or key not defined in hpa mappings" + raise HpaSchemaDefError(msg) def validate(self, reader): entry_path = os.path.join(reader.destination, @@ -40,3 +66,5 @@ class ToscaparserValidator(validator.ValidatorBase): except ValidationError as e: LOG.error(e.message) raise e + + print self.tosca |