From b694a4a2d4719169ccc7fb3696367bca7118b513 Mon Sep 17 00:00:00 2001 From: Taseer Date: Tue, 11 Apr 2017 21:39:18 +0500 Subject: User friendly messages for exceptions - Use colorama for color - Implement verbosity option in separate patch Change-Id: Ib2491d867e9bbf59cb00874d99a11f86ad7eea1b Signed-off-by: Taseer Ahmed --- qtip/base/error.py | 2 ++ qtip/cli/commands/cmd_metric.py | 17 +++++++++++++---- qtip/cli/commands/cmd_plan.py | 17 +++++++++++++---- qtip/cli/commands/cmd_qpi.py | 17 +++++++++++++---- 4 files changed, 41 insertions(+), 12 deletions(-) (limited to 'qtip') diff --git a/qtip/base/error.py b/qtip/base/error.py index f23d8cd9..d4b516ac 100644 --- a/qtip/base/error.py +++ b/qtip/base/error.py @@ -16,12 +16,14 @@ class InvalidContentError(BaseError): def __init__(self, filename, excinfo=None): self.filename = filename self.excinfo = excinfo + self.message = "Invalid content in {0}".format(filename) class NotFoundError(BaseError): def __init__(self, needle, heystack='qtip'): self.needle = needle self.heystack = heystack + self.message = "{0} not found in {1}".format(needle[0:-5], heystack) class ToBeDoneError(BaseError): diff --git a/qtip/cli/commands/cmd_metric.py b/qtip/cli/commands/cmd_metric.py index a2208444..1741fb48 100644 --- a/qtip/cli/commands/cmd_metric.py +++ b/qtip/cli/commands/cmd_metric.py @@ -8,8 +8,11 @@ ############################################################################## import click +from colorama import Fore import os +from qtip.base.error import InvalidContentError +from qtip.base.error import NotFoundError from qtip.cli import utils from qtip.cli.entry import Context from qtip.loader.metric import MetricSpec @@ -36,10 +39,16 @@ def cmd_list(ctx): @click.argument('name') @pass_context def show(ctx, name): - metric = MetricSpec('{}.yaml'.format(name)) - cnt = metric.content - output = utils.render('metric', cnt) - click.echo(output) + try: + metric = MetricSpec('{}.yaml'.format(name)) + except NotFoundError as nf: + click.echo(Fore.RED + "ERROR: metric spec: " + nf.message) + except InvalidContentError as ice: + click.echo(Fore.RED + "ERROR: metric spec " + ice.message) + else: + cnt = metric.content + output = utils.render('metric', cnt) + click.echo(output) @cli.command('run', help='Run performance test') diff --git a/qtip/cli/commands/cmd_plan.py b/qtip/cli/commands/cmd_plan.py index beb61b0e..b7c540b7 100644 --- a/qtip/cli/commands/cmd_plan.py +++ b/qtip/cli/commands/cmd_plan.py @@ -9,8 +9,11 @@ import click +from colorama import Fore import os +from qtip.base.error import InvalidContentError +from qtip.base.error import NotFoundError from qtip.cli import utils from qtip.cli.entry import Context from qtip.loader.plan import Plan @@ -44,10 +47,16 @@ def list(ctx): @click.argument('name') @pass_context def show(ctx, name): - plan = Plan('{}.yaml'.format(name)) - cnt = plan.content - output = utils.render('plan', cnt) - click.echo(output) + try: + plan = Plan('{}.yaml'.format(name)) + except NotFoundError as nf: + click.echo(Fore.RED + "ERROR: plan spec: " + nf.message) + except InvalidContentError as ice: + click.echo(Fore.RED + "ERROR: plan spec: " + ice.message) + else: + cnt = plan.content + output = utils.render('plan', cnt) + click.echo(output) @cli.command('run', help='Execute a Plan') diff --git a/qtip/cli/commands/cmd_qpi.py b/qtip/cli/commands/cmd_qpi.py index 1e3671c5..a47442b7 100644 --- a/qtip/cli/commands/cmd_qpi.py +++ b/qtip/cli/commands/cmd_qpi.py @@ -9,8 +9,11 @@ import click +from colorama import Fore import os +from qtip.base.error import InvalidContentError +from qtip.base.error import NotFoundError from qtip.cli import utils from qtip.cli.entry import Context from qtip.loader.qpi import QPISpec @@ -37,10 +40,16 @@ def cmd_list(ctx): @click.argument('name') @pass_context def show(ctx, name): - qpi = QPISpec('{}.yaml'.format(name)) - cnt = qpi.content - output = utils.render('qpi', cnt) - click.echo(output) + try: + qpi = QPISpec('{}.yaml'.format(name)) + except NotFoundError as nf: + click.echo(Fore.RED + "ERROR: qpi spec: " + nf.message) + except InvalidContentError as ice: + click.echo(Fore.RED + "ERROR: qpi spec: " + ice.message) + else: + cnt = qpi.content + output = utils.render('qpi', cnt) + click.echo(output) @cli.command('run', help='Run performance tests for the specified QPI') -- cgit 1.2.3-korg