diff --git a/armada/cli/validate.py b/armada/cli/validate.py new file mode 100644 index 00000000..e8f13da9 --- /dev/null +++ b/armada/cli/validate.py @@ -0,0 +1,43 @@ +# Copyright 2017 The Armada Authors. +# +# 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. + +from cliff import command as cmd +import yaml + +from armada.utils.lint import valid_manifest + +from oslo_config import cfg +from oslo_log import log as logging + +LOG = logging.getLogger(__name__) + +CONF = cfg.CONF +DOMAIN = "armada" + +logging.setup(CONF, DOMAIN) + +def validateYaml(args): + config = yaml.load(open(args.file).read()) + if valid_manifest(config): + LOG.info('File successfully validated') + +class ValidateYamlCommand(cmd.Command): + def get_parser(self, prog_name): + parser = super(ValidateYamlCommand, self).get_parser(prog_name) + parser.add_argument('file', type=str, metavar='FILE', + help='Armada yaml file to validate') + return parser + + def take_action(self, parsed_args): + validateYaml(parsed_args) diff --git a/armada/handlers/armada.py b/armada/handlers/armada.py index b0eb1972..9725c14f 100644 --- a/armada/handlers/armada.py +++ b/armada/handlers/armada.py @@ -82,11 +82,11 @@ class Armada(object): if ct_type == 'git' and not git.check_available_repo(location): raise ValueError(str("Invalid Url Path: " + location)) - if not self.tiller.tiller_status(): - raise Exception("Tiller Services is not Available") + if not self.tiller.tiller_status(): + raise Exception("Tiller Services is not Available") - if not lint.valid_manifest(self.config): - raise Exception("Invalid Armada Manifest") + if not lint.valid_manifest(self.config): + raise Exception("Invalid Armada Manifest") def sync(self): ''' diff --git a/setup.cfg b/setup.cfg index b4b03917..bff9a62c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -39,6 +39,7 @@ console_scripts = armada = apply = armada.cli.apply:ApplyChartsCommand tiller = armada.cli.tiller:TillerServerCommand + validate = armada.cli.validate:ValidateYamlCommand oslo.config.opts = armada.conf = armada.conf.opts:list_opts