From 86846d64bff0eb0edeec53961985be70179ff28c Mon Sep 17 00:00:00 2001 From: gardlt Date: Thu, 27 Jul 2017 10:34:03 -0500 Subject: [PATCH] [bug] get armada object after valid document - calling object get after vaild doc --- armada/handlers/armada.py | 7 +++++-- armada/utils/lint.py | 33 +++++++++++++++----------------- examples/armada-manifest-v1.yaml | 4 ++-- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/armada/handlers/armada.py b/armada/handlers/armada.py index 005e61ef..65be150a 100644 --- a/armada/handlers/armada.py +++ b/armada/handlers/armada.py @@ -66,8 +66,8 @@ class Armada(object): self.wait = wait self.timeout = timeout self.tiller = Tiller(tiller_host=tiller_host, tiller_port=tiller_port) - self.documents = yaml.safe_load_all(file) - self.config = self.get_armada_manifest() + self.documents = list(yaml.safe_load_all(file)) + self.config = None self.tiller = Tiller() self.debug = debug @@ -96,6 +96,9 @@ class Armada(object): raise Exception("Service: Tiller is not Available") if not lint.validate_armada_documents(self.documents): raise Exception("Invalid Armada Manifest") + + self.config = self.get_armada_manifest() + if not lint.validate_armada_object(self.config): raise Exception("Invalid Armada Object") diff --git a/armada/utils/lint.py b/armada/utils/lint.py index aad6e787..b0ad2db8 100644 --- a/armada/utils/lint.py +++ b/armada/utils/lint.py @@ -16,6 +16,7 @@ from armada.const import DOCUMENT_CHART, DOCUMENT_GROUP, DOCUMENT_MANIFEST from armada.const import KEYWORD_ARMADA, KEYWORD_PREFIX, KEYWORD_GROUPS, \ KEYWORD_CHARTS, KEYWORD_RELEASE + def validate_armada_documents(documents): manifest = validate_manifest_document(documents) group = validate_chart_group_document(documents) @@ -23,6 +24,7 @@ def validate_armada_documents(documents): return manifest and group and chart + def validate_armada_object(object): if not isinstance(object.get(KEYWORD_ARMADA, None), dict): raise Exception("Could not find {} keyword".format(KEYWORD_ARMADA)) @@ -33,21 +35,19 @@ def validate_armada_object(object): raise Exception("Could not find {} keyword".format(KEYWORD_PREFIX)) if not isinstance(armada_object.get(KEYWORD_GROUPS), list): - raise Exception( - '{} is of correct type: {} (expected: {} )'.format( - KEYWORD_GROUPS, - type(armada_object.get(KEYWORD_GROUPS)), list)) + raise Exception('{} is of correct type: {} (expected: {} )'.format( + KEYWORD_GROUPS, type(armada_object.get(KEYWORD_GROUPS)), list)) for group in armada_object.get(KEYWORD_GROUPS): for chart in group.get(KEYWORD_CHARTS): chart_obj = chart.get('chart') if not isinstance(chart_obj.get(KEYWORD_RELEASE), str): - raise Exception( - 'Could not find {} in {}'.format(KEYWORD_RELEASE, - chart_obj.get('name'))) + raise Exception('Could not find {} in {}'.format( + KEYWORD_RELEASE, chart_obj.get('name'))) return True + def validate_manifest_document(documents): manifest_documents = [] for document in documents: @@ -60,9 +60,8 @@ def validate_manifest_document(documents): if not isinstance(manifest_data.get('chart_groups'), list) and not manifest_data.get( 'chart_groups', False): - raise Exception( - 'Missing %s values. Expecting list type'.format( - KEYWORD_GROUPS)) + raise Exception('Missing %s values. Expecting list type'. + format(KEYWORD_GROUPS)) if len(manifest_documents) > 1: raise Exception( @@ -70,6 +69,7 @@ def validate_manifest_document(documents): return True + def validate_chart_group_document(documents): for document in documents: if document.get('schema') == DOCUMENT_GROUP: @@ -77,22 +77,19 @@ def validate_chart_group_document(documents): if not isinstance(manifest_data.get(KEYWORD_CHARTS), list) and not manifest_data.get( 'chart_group', False): - raise Exception( - 'Missing %s values. Expecting a list type'.format( - KEYWORD_CHARTS)) + raise Exception('Missing %s values. Expecting a list type'. + format(KEYWORD_CHARTS)) return True + def validate_chart_document(documents): for document in documents: if document.get('schema') == DOCUMENT_CHART: manifest_data = document.get('data') - if not isinstance(manifest_data.get(KEYWORD_RELEASE), - str) and not manifest_data.get( - KEYWORD_RELEASE, False): + if not manifest_data.get(KEYWORD_RELEASE, False): raise Exception( 'Missing %s values in %s. Expecting a string type'.format( - KEYWORD_RELEASE, - document.get('metadata').get('name'))) + KEYWORD_RELEASE, document.get('metadata').get('name'))) return True diff --git a/examples/armada-manifest-v1.yaml b/examples/armada-manifest-v1.yaml index 8ff59f2b..4e7687de 100644 --- a/examples/armada-manifest-v1.yaml +++ b/examples/armada-manifest-v1.yaml @@ -5,8 +5,8 @@ metadata: name: helm-toolkit data: chart_name: helm-toolkit - release: null - namespace: null + release: helm-toolkit + namespace: helm-tookit values: {} source: type: git