From cb29a3f0ba576054dfe35a997d0cb6b7d26420a8 Mon Sep 17 00:00:00 2001 From: Felipe Monteiro Date: Mon, 24 Jul 2017 16:55:17 +0100 Subject: [PATCH] Update schema validation to be internal validation. --- deckhand/db/sqlalchemy/api.py | 1 - deckhand/engine/document_validation.py | 19 +++++++++++++------ .../schema/v1_0/default_policy_validation.py | 13 +++++++++++++ ...schema.py => default_schema_validation.py} | 0 4 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 deckhand/engine/schema/v1_0/default_policy_validation.py rename deckhand/engine/schema/v1_0/{default_schema.py => default_schema_validation.py} (100%) diff --git a/deckhand/db/sqlalchemy/api.py b/deckhand/db/sqlalchemy/api.py index da440773..ce9bc3e4 100644 --- a/deckhand/db/sqlalchemy/api.py +++ b/deckhand/db/sqlalchemy/api.py @@ -118,7 +118,6 @@ def document_create(values, session=None): """Create a document.""" values = values.copy() values['_metadata'] = values.pop('metadata') - print(values) values['name'] = values['_metadata']['name'] session = session or get_session() diff --git a/deckhand/engine/document_validation.py b/deckhand/engine/document_validation.py index 8c6e1abb..d97e38bd 100644 --- a/deckhand/engine/document_validation.py +++ b/deckhand/engine/document_validation.py @@ -14,7 +14,8 @@ import jsonschema -from deckhand.engine.schema.v1_0 import default_schema +from deckhand.engine.schema.v1_0 import default_policy_validation +from deckhand.engine.schema.v1_0 import default_schema_validation from deckhand import errors @@ -38,11 +39,17 @@ class DocumentValidation(object): Retrieves the schema that corresponds to "apiVersion" in the YAML data. This schema is responsible for performing pre-validation on YAML data. - """ - # TODO: Update kind according to requirements. - schema_versions_info = [{'version': 'v1', 'kind': 'default', - 'schema': default_schema}] + The built-in validation schemas that are always executed include: + + - `deckhand-document-schema-validation` + - `deckhand-policy-validation` + """ + internal_validations = [ + {'version': 'v1', 'fqn': 'deckhand-document-schema-validation', + 'schema': default_schema_validation}, + {'version': 'v1', 'fqn': 'deckhand-policy-validation', + 'schema': default_policy_validation}] def __init__(self, schema_version): self.schema_version = schema_version @@ -50,7 +57,7 @@ class DocumentValidation(object): @property def schema(self): # TODO: return schema based on version and kind. - return [v['schema'] for v in self.schema_versions_info + return [v['schema'] for v in self.internal_validations if v['version'] == self.schema_version][0].schema def pre_validate_data(self): diff --git a/deckhand/engine/schema/v1_0/default_policy_validation.py b/deckhand/engine/schema/v1_0/default_policy_validation.py new file mode 100644 index 00000000..f10bbbf6 --- /dev/null +++ b/deckhand/engine/schema/v1_0/default_policy_validation.py @@ -0,0 +1,13 @@ +# Copyright 2017 AT&T Intellectual Property. All other rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/deckhand/engine/schema/v1_0/default_schema.py b/deckhand/engine/schema/v1_0/default_schema_validation.py similarity index 100% rename from deckhand/engine/schema/v1_0/default_schema.py rename to deckhand/engine/schema/v1_0/default_schema_validation.py