diff options
author | Yujun Zhang <zhang.yujunz@zte.com.cn> | 2016-11-10 10:59:26 +0800 |
---|---|---|
committer | Yujun Zhang <zhang.yujunz@zte.com.cn> | 2016-11-10 14:50:17 +0800 |
commit | 9edb0f9e48cc923ed443d3d66886713cde9b628d (patch) | |
tree | 1463ca978963b6570ea143131d64d0b919a0b1f3 /qtip/cli | |
parent | 939299c36b3cf79f198d4a4849345eabd878973b (diff) |
Adjust folder structure
Note: this patchset may break existing features, but it will help
to accelerate the refactoring work.
JIRA: QTIP-131
Change-Id: Ie0cd9d185e6b02316878daef905e26f4e533a66b
Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
Diffstat (limited to 'qtip/cli')
-rw-r--r-- | qtip/cli/README.rst | 11 | ||||
-rw-r--r-- | qtip/cli/__init__.py | 0 | ||||
-rw-r--r-- | qtip/cli/commands/__init__.py | 0 | ||||
-rw-r--r-- | qtip/cli/commands/ansible.py | 32 | ||||
-rw-r--r-- | qtip/cli/commands/perftest.py | 57 | ||||
-rw-r--r-- | qtip/cli/commands/suite.py | 52 | ||||
-rw-r--r-- | qtip/cli/entry.py | 44 | ||||
-rw-r--r-- | qtip/cli/helper.py | 14 |
8 files changed, 210 insertions, 0 deletions
diff --git a/qtip/cli/README.rst b/qtip/cli/README.rst new file mode 100644 index 00000000..65f4af86 --- /dev/null +++ b/qtip/cli/README.rst @@ -0,0 +1,11 @@ +QTIP CLI +======== +Note: The cli is only tested within docker + +install +------- +pip install . + +usage +----- +qtip -h diff --git a/qtip/cli/__init__.py b/qtip/cli/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/qtip/cli/__init__.py diff --git a/qtip/cli/commands/__init__.py b/qtip/cli/commands/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/qtip/cli/commands/__init__.py diff --git a/qtip/cli/commands/ansible.py b/qtip/cli/commands/ansible.py new file mode 100644 index 00000000..001185a3 --- /dev/null +++ b/qtip/cli/commands/ansible.py @@ -0,0 +1,32 @@ +############################################################################## +# Copyright (c) 2016 ZTE Corp 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 +############################################################################## + +import os + +import click + +ANSIBLE_CONF = '{}/conf/ansible.cfg'.format(os.environ['HOME']) + + +class Ansible: + + def __init__(self): + pass + + def show(self): + click.echo("show ansible configuration") + pass + + def prepare(self): + click.echo("prepare ansible env") + pass + + def status(self): + click.echo("check connectivity") + pass diff --git a/qtip/cli/commands/perftest.py b/qtip/cli/commands/perftest.py new file mode 100644 index 00000000..0eb6d062 --- /dev/null +++ b/qtip/cli/commands/perftest.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2016 ZTE Corp 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 +import yaml +import click +import os +from cli import helper + + +class PerfTest: + + def __init__(self): + self.path = os.path.join(helper.fetch_root(), 'perftest/summary') + + def list(self): + table = PrettyTable(["Name", "Description"]) + table.align = 'l' + with open(self.path) as tests: + line = tests.read() + data = yaml.safe_load(line)['test_cases'] + for i in range(0, len(data)): + points = data[i] + table.add_row([points['name'], points['description']]) + click.echo(table) + + def run(self): + click.echo("Run a perftest") + + +@click.group() +def cli(): + pass + + +@cli.group() +@click.pass_context +def perftest(ctx): + pass + +_perftest = PerfTest() + + +@perftest.command("list", help="Lists all perftest benchmarks.") +def list(): + _perftest.list() + + +@perftest.command("run", help="Executes a single perftest benchmark.") +def execute(): + _perftest.run() diff --git a/qtip/cli/commands/suite.py b/qtip/cli/commands/suite.py new file mode 100644 index 00000000..757f11a1 --- /dev/null +++ b/qtip/cli/commands/suite.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2016 ZTE Corp 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 +import os +import click + + +class Suite: + + def __init__(self): + self.path = os.path.join(os.path.dirname(__file__), '..', '..', 'benchmarks/suite') + + def list(self): + table = PrettyTable(["Name"]) + table.align = 'l' + suites = os.listdir(self.path) + for suite in suites: + table.add_row([suite]) + click.echo(table) + + def run(self): + print("Run a suite") + + +@click.group() +def cli(): + pass + + +@cli.group() +@click.pass_context +def suite(ctx): + pass + +_suite = Suite() + + +@suite.command("list", help="Lists all the available suites") +def list(): + _suite.list() + + +@suite.command("run", help="Execute one complete suite") +def execute(): + _suite.run() diff --git a/qtip/cli/entry.py b/qtip/cli/entry.py new file mode 100644 index 00000000..f9dc440c --- /dev/null +++ b/qtip/cli/entry.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2016 ZTE Corp 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 +############################################################################## + +import click + +from cli.commands.ansible import Ansible + +CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) + + +@click.group(context_settings=CONTEXT_SETTINGS) +@click.version_option(version='0.1.dev0') +def cli(): + pass + +_ansible = Ansible() + + +@cli.group() +@click.pass_context +def ansible(ctx): + pass + + +@ansible.command('prepare', help="Prepares the ansible environment. " + "This step is needed run benchmarks.") +def ansible_prepare(): + _ansible.prepare() + + +@ansible.command('show', help="Shows the current ansible configuration.") +def ansible_show(): + _ansible.show() + + +@ansible.command('status', help="Checks if ansible still connects to hosts.") +def ansible_status(): + _ansible.status() diff --git a/qtip/cli/helper.py b/qtip/cli/helper.py new file mode 100644 index 00000000..a5865bce --- /dev/null +++ b/qtip/cli/helper.py @@ -0,0 +1,14 @@ +############################################################################## +# Copyright (c) 2016 ZTE Corp 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 +############################################################################## + +import os + + +def fetch_root(): + return os.path.join(os.path.dirname(__file__), os.pardir, 'benchmarks/') |