From b86b42713a1fbfb1929bd5019aed7e5275b78d64 Mon Sep 17 00:00:00 2001 From: Michael Hwang Date: Thu, 24 Aug 2017 12:18:43 -0400 Subject: Add dcae-cli and component-json-schemas projects Change-Id: I2d920da7902bb5c1faf3d66173d62c942e9a19e9 Issue-Id: DCAEGEN2-50 Signed-off-by: Michael Hwang --- dcae-cli/dcae_cli/cli.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 dcae-cli/dcae_cli/cli.py (limited to 'dcae-cli/dcae_cli/cli.py') diff --git a/dcae-cli/dcae_cli/cli.py b/dcae-cli/dcae_cli/cli.py new file mode 100644 index 0000000..a3c11a2 --- /dev/null +++ b/dcae-cli/dcae_cli/cli.py @@ -0,0 +1,100 @@ +# ============LICENSE_START======================================================= +# org.onap.dcae +# ================================================================================ +# Copyright (c) 2017 AT&T Intellectual Property. All 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. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. + +# -*- coding: utf-8 -*- +""" +Provides entry-level logic for building the CLI. Commands and heavy-lifting logic should be in their own module. +""" +import click + +from dcae_cli import util +from dcae_cli.commands.catalog import catalog +from dcae_cli.commands.component import component +from dcae_cli.commands.data_format import data_format +from dcae_cli.commands.profiles import profiles +from dcae_cli.catalog import get_catalog +from dcae_cli.util.exc import DcaeException +from dcae_cli.util.logger import get_logger +from dcae_cli.util import config as conf +from dcae_cli.util import profiles as prof + + +log = get_logger('cli') + + +def _reinit_cli(): + """Reinit cli""" + click.echo("Warning! Reinitializing your dcae-cli configuration") + try: + conf.reinit_config() + prof.reinit_profiles() + except Exception as e: + raise DcaeException("Failed to reinitialize configuration: {0}".format(e)) + +def _reinit_callback(ctx, param, value): + """Callback used for the eager --reinit option""" + if not value or ctx.resilient_parsing: + return + _reinit_cli() + click.echo("Reinitialize done") + ctx.exit() + + + +@click.group() +@click.option('--verbose', '-v', is_flag=True, default=False, help='Prints INFO-level logs to screen.') +# This is following the same pattern as --version +# http://click.pocoo.org/5/options/#callbacks-and-eager-options +@click.option('--reinit', is_flag=True, callback=_reinit_callback, expose_value=False, + is_eager=True, help='Re-initialize dcae-cli configuration') +@click.version_option() +@click.pass_context +def cli(ctx, verbose): + + if ctx.obj is None: + ctx.obj = dict() + + if 'config' not in ctx.obj: + config = conf.get_config() + + if conf.should_force_reinit(config): + if click.confirm("You must reinitialize your dcae-cli configuration. Reinitialize now?", + abort=True): + _reinit_cli() + + ctx.obj['config'] = config + else: + config = ctx.obj['config'] + + if 'catalog' not in ctx.obj: + try: + ctx.obj['catalog'] = get_catalog(**config) + except Exception as e: + log.error(e) + raise DcaeException("Having issues connecting to the onboarding catalog") + + if verbose: + util.logger.set_verbose() + + +cli.add_command(catalog) +cli.add_command(component) +cli.add_command(data_format) +cli.add_command(profiles) -- cgit 1.2.3-korg