aboutsummaryrefslogtreecommitdiffstats
path: root/qtip/cli
diff options
context:
space:
mode:
Diffstat (limited to 'qtip/cli')
-rw-r--r--qtip/cli/commands/cmd_metric.py13
-rw-r--r--qtip/cli/commands/cmd_plan.py13
-rw-r--r--qtip/cli/commands/cmd_qpi.py13
-rw-r--r--qtip/cli/templates/metric.j26
-rw-r--r--qtip/cli/templates/plan.j22
-rw-r--r--qtip/cli/templates/qpi.j212
-rw-r--r--qtip/cli/utils.py31
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