diff options
Diffstat (limited to 'qtip/cli')
-rw-r--r-- | qtip/cli/commands/cmd_metric.py | 13 | ||||
-rw-r--r-- | qtip/cli/commands/cmd_plan.py | 13 | ||||
-rw-r--r-- | qtip/cli/commands/cmd_qpi.py | 13 | ||||
-rw-r--r-- | qtip/cli/templates/metric.j2 | 6 | ||||
-rw-r--r-- | qtip/cli/templates/plan.j2 | 2 | ||||
-rw-r--r-- | qtip/cli/templates/qpi.j2 | 12 | ||||
-rw-r--r-- | qtip/cli/utils.py | 31 |
7 files changed, 81 insertions, 9 deletions
diff --git a/qtip/cli/commands/cmd_metric.py b/qtip/cli/commands/cmd_metric.py index b6035e2d..31b7b702 100644 --- a/qtip/cli/commands/cmd_metric.py +++ b/qtip/cli/commands/cmd_metric.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016 ZTE Corp and others. +# Copyright (c) 2017 taseer94@gmail.com and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,7 +9,9 @@ import click +from qtip.cli import utils from qtip.cli.entry import Context +from qtip.loader.metric import MetricSpec pass_context = click.make_pass_decorator(Context, ensure=False) @@ -24,14 +26,19 @@ def cli(ctx): @cli.command('list', help='List all the Metric Groups') @pass_context def cmd_list(ctx): - pass + metrics = MetricSpec.list_all() + table = utils.table('Metrics', metrics) + click.echo(table) @cli.command('show', help='View details of a Metric') @click.argument('name') @pass_context def show(ctx, name): - pass + metric = MetricSpec('{}.yaml'.format(name)) + cnt = metric.content + output = utils.render('metric', cnt) + click.echo(output) @cli.command('run', help='Run tests to run Performance Metrics') diff --git a/qtip/cli/commands/cmd_plan.py b/qtip/cli/commands/cmd_plan.py index 64c702d3..90773491 100644 --- a/qtip/cli/commands/cmd_plan.py +++ b/qtip/cli/commands/cmd_plan.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016 ZTE Corp and others. +# Copyright (c) 2016 taseer94@gmail.com and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -10,7 +10,9 @@ import click +from qtip.cli import utils from qtip.cli.entry import Context +from qtip.loader.plan import Plan pass_context = click.make_pass_decorator(Context, ensure=False) @@ -32,14 +34,19 @@ def init(ctx): @cli.command('list', help='List the Plans') @pass_context def list(ctx): - pass + plans = Plan.list_all() + table = utils.table('Plans', plans) + click.echo(table) @cli.command('show', help='View details of a Plan') @click.argument('name') @pass_context def show(ctx, name): - pass + plan = Plan('{}.yaml'.format(name)) + 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 5fc9bec8..1f23211e 100644 --- a/qtip/cli/commands/cmd_qpi.py +++ b/qtip/cli/commands/cmd_qpi.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016 ZTE Corp and others. +# Copyright (c) 2017 taseer94@gmail.com and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -10,7 +10,9 @@ import click +from qtip.cli import utils from qtip.cli.entry import Context +from qtip.loader.qpi import QPISpec pass_context = click.make_pass_decorator(Context, ensure=False) @@ -25,14 +27,19 @@ def cli(ctx): @cli.command('list', help='List all the QPI specs') @pass_context def cmd_list(ctx): - pass + qpis = QPISpec.list_all() + table = utils.table('QPIs', qpis) + click.echo(table) @cli.command('show', help='View details of a QPI') @click.argument('name') @pass_context def show(ctx, name): - pass + qpi = QPISpec('{}.yaml'.format(name)) + cnt = qpi.content + output = utils.render('qpi', cnt) + click.echo(output) @cli.command('run', help='Run performance tests for the specified QPI') diff --git a/qtip/cli/templates/metric.j2 b/qtip/cli/templates/metric.j2 new file mode 100644 index 00000000..126587f9 --- /dev/null +++ b/qtip/cli/templates/metric.j2 @@ -0,0 +1,6 @@ +Name: {{ name }} +Description: {{ description }} +Workloads: +{% for wl in workloads %} + {{ wl }} +{% endfor %} diff --git a/qtip/cli/templates/plan.j2 b/qtip/cli/templates/plan.j2 new file mode 100644 index 00000000..c9adccc8 --- /dev/null +++ b/qtip/cli/templates/plan.j2 @@ -0,0 +1,2 @@ +Name: {{ name }} +Description: {{ description }} diff --git a/qtip/cli/templates/qpi.j2 b/qtip/cli/templates/qpi.j2 new file mode 100644 index 00000000..cc85f10d --- /dev/null +++ b/qtip/cli/templates/qpi.j2 @@ -0,0 +1,12 @@ +Name: {{ title }} +Description: {{ description }} +{% for section in sections %} + Name: {{ section.name }} + Weight: {{ section.weight }} + Formula: {{ section.formula }} + Metrics: + {% for metric in section.metrics %} + {{ metric }} + {% endfor %} +{% endfor %} + diff --git a/qtip/cli/utils.py b/qtip/cli/utils.py new file mode 100644 index 00000000..a7473236 --- /dev/null +++ b/qtip/cli/utils.py @@ -0,0 +1,31 @@ +############################################################################## +# Copyright (c) 2017 taseer94@gmail.com and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +from jinja2 import Environment +from jinja2 import FileSystemLoader +from os import path +from prettytable import PrettyTable + + +def table(name, components): + """ Return a PrettyTable for component listing """ + table = PrettyTable([name]) + table.align[name] = 'l' + [table.add_row([component['name'][0:-5]]) for component in components] + return table + + +def render(name, var_dict): + """ Get the templates to render for specific component """ + tmpl_path = path.join(path.dirname(__file__), 'templates') + tmpl_loader = FileSystemLoader(tmpl_path) + env = Environment(loader=tmpl_loader) + template = env.get_template('{}.j2'.format(name)) + result = template.render(var_dict) + return result |