Implement 'list' command. 93/30293/1
authorTaseer <taseer94@gmail.com>
Fri, 10 Mar 2017 12:18:22 +0000 (17:18 +0500)
committerzhihui wu <zhihui.wu2006+zte@gmail.com>
Sat, 11 Mar 2017 02:42:52 +0000 (02:42 +0000)
- Loads Qtip components from the default path.

JIRA: QTIP-205

Change-Id: Id87993d65c5cd6a23c199cf1049d75a0971b6354
Signed-off-by: Taseer Ahmed <taseer94@gmail.com>
(cherry picked from commit 0bd051505c2851d61356e7c448d7802913ab785f)

qtip/cli/commands/cmd_metric.py
qtip/cli/commands/cmd_plan.py
qtip/cli/commands/cmd_qpi.py
qtip/cli/utils.py [new file with mode: 0644]
requirements.txt
tests/unit/cli/cmd_metric_test.py
tests/unit/cli/cmd_plan_test.py
tests/unit/cli/cmd_qpi_test.py

index b6035e2..e8d8697 100644 (file)
@@ -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,7 +26,9 @@ 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')
index 64c702d..2f07965 100644 (file)
@@ -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,7 +34,9 @@ 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')
index 5fc9bec..a12fa98 100644 (file)
@@ -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,7 +27,9 @@ 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')
diff --git a/qtip/cli/utils.py b/qtip/cli/utils.py
new file mode 100644 (file)
index 0000000..844d4f3
--- /dev/null
@@ -0,0 +1,18 @@
+##############################################################################
+# 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 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
index c51228f..d00b3cf 100644 (file)
@@ -4,3 +4,5 @@ paramiko
 connexion
 numpy
 pbr
+ConfigParser
+prettytable
index 30f3448..e121fb1 100644 (file)
@@ -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
@@ -8,8 +8,8 @@
 ##############################################################################
 
 import pytest
-from click.testing import CliRunner
 
+from click.testing import CliRunner
 from qtip.cli.entry import cli
 
 
@@ -20,7 +20,9 @@ def runner():
 
 def test_list(runner):
     result = runner.invoke(cli, ['metric', 'list'])
-    assert result.output == ''
+    assert 'dhrystone' and 'whetstone' and 'dpi' and \
+           'ramspeed' and 'fake-metric' and 'ssl' \
+           in result.output
 
 
 def test_run(runner):
index 1708c34..7c3335f 100644 (file)
@@ -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
@@ -20,7 +20,7 @@ def runner():
 
 def test_list(runner):
     result = runner.invoke(cli, ['plan', 'list'])
-    assert result.output == ''
+    assert 'Plan' and 'compute' and 'sample' in result.output
 
 
 def test_run(runner):
index 485d546..7067d62 100644 (file)
@@ -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
@@ -8,9 +8,9 @@
 ##############################################################################
 
 import pytest
-from click.testing import CliRunner
 
 from qtip.cli.entry import cli
+from click.testing import CliRunner
 
 
 @pytest.fixture(scope="module")
@@ -20,7 +20,7 @@ def runner():
 
 def test_list(runner):
     result = runner.invoke(cli, ['qpi', 'list'])
-    assert result.output == ''
+    assert 'QPIs' and 'compute' in result.output
 
 
 def test_run(runner):