summaryrefslogtreecommitdiffstats
path: root/functest/cli/cli_base.py
blob: 2104e125c3f3dafd12326a960573d5386266b7c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#!/usr/bin/env python
#
# jose.lausuch@ericsson.com
# 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
import logging.config

from functest.cli.commands.cli_env import CliEnv
from functest.cli.commands.cli_os import CliOpenStack
from functest.cli.commands.cli_testcase import CliTestcase
from functest.cli.commands.cli_tier import CliTier
from functest.utils.constants import CONST


CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])


@click.group(context_settings=CONTEXT_SETTINGS)
@click.version_option(version='opnfv colorado.0.1 ')
def cli():
    logging.config.fileConfig(
        CONST.__getattribute__('dir_functest_logging_cfg'))


_env = CliEnv()
_openstack = CliOpenStack()
_testcase = CliTestcase()
_tier = CliTier()


@cli.group()
@click.pass_context
def env(ctx):
    pass


@cli.group()
@click.pass_context
def openstack(ctx):
    pass


@cli.group()
@click.pass_context
def testcase(ctx):
    pass


@cli.group()
@click.pass_context
def tier(ctx):
    pass


@openstack.command('check', help="Checks connectivity and status "
                   "to the OpenStack deployment.")
def os_check():
    _openstack.check()


@openstack.command('snapshot-create', help="Generates a snapshot of the "
                   "current OpenStack resources.")
def os_snapshot_create():
    _openstack.snapshot_create()


@openstack.command('snapshot-show', help="Prints the OpenStack snapshot.")
def os_snapshot_show():
    _openstack.snapshot_show()


@openstack.command('clean',
                   help="Cleans the OpenStack resources except the snapshot.")
def os_clean():
    _openstack.clean()


@openstack.command('show-credentials',
                   help="Prints the OpenStack credentials.")
def os_show_credentials():
    _openstack.show_credentials()


@openstack.command('fetch-rc', help="Fetch the OpenStack RC file from "
                   "the installer.")
def os_fetch_rc():
    _openstack.fetch_credentials()


@env.command('prepare', help="Prepares the Functest environment. This step is "
             "needed run the tests.")
def env_prepare():
    _env.prepare()


@env.command('show', help="Shows information about the current environment.")
def env_show():
    _env.show()


@env.command('status', help="Checks if the Functest environment is ready to "
             "run the tests.")
def env_status():
    _env.status()


@testcase.command('list', help="Lists the available testcases.")
def testcase_list():
    _testcase.list()


@testcase.command('show', help="Shows information about a test case.")
@click.argument('testname', type=click.STRING, required=True)
def testcase_show(testname):
    _testcase.show(testname)


@testcase.command('run', help="Executes a test case.")
@click.argument('testname', type=click.STRING, required=True)
@click.option('-n', '--noclean', is_flag=True, default=False,
              help='The created openstack resources by the test'
              'will not be cleaned after the execution.')
@click.option('-r', '--report', is_flag=True, default=False,
              help='Push results to the results DataBase. Only CI Pods'
              'have rights to do that.')
def testcase_run(testname, noclean, report):
    _testcase.run(testname, noclean, report)


@tier.command('list', help="Lists the available tiers.")
def tier_list():
    _tier.list()


@tier.command('show', help="Shows information about a tier.")
@click.argument('tiername', type=click.STRING, required=True)
def tier_show(tiername):
    _tier.show(tiername)


@tier.command('get-tests', help="Prints the tests in a tier.")
@click.argument('tiername', type=click.STRING, required=True)
def tier_gettests(tiername):
    _tier.gettests(tiername)


@tier.command('run', help="Executes all the tests within a tier.")
@click.argument('tiername', type=click.STRING, required=True)
@click.option('-n', '--noclean', is_flag=True, default=False,
              help='The created openstack resources by the tests'
              'will not be cleaned after the execution.')
@click.option('-r', '--report', is_flag=True, default=False,
              help='Push results to the results DataBase. Only CI Pods'
              'have rights to do that.')
def tier_run(tiername, noclean, report):
    _tier.run(tiername, noclean, report)