[Docs] improve cli docs

* add docstring for `rally-manage db recreate`.
 * updates `deprecated_args` to handle release and alternative arg.
 * rename `--verification` and `task` to `--uuid` in `rally verify use` and
   `rally task use`.(these arguments should have the same name across one
   category). The old names are deprecated.
 * rename destination of `--uuid`, `--uuid-1`, `uuid-2` arguments to
   `verification`, `verification1`, `verification2` for consistent with other
   destinations.
 * remove `required=False` attribute setting for task_id in `rally task use`.
 * fix attribute name in `default_from_global` for `report`

Change-Id: Ib2edb32443f59f8168ff124bddb77950881dcd5e
This commit is contained in:
Andrey Kurilin 2015-12-31 12:37:49 +02:00 committed by Andrey Kurilin
parent 118019a5b6
commit 8a75a175aa
6 changed files with 51 additions and 35 deletions

View File

@ -44,7 +44,7 @@ _rally()
OPTS["task_sla_check"]="--uuid --json"
OPTS["task_start"]="--deployment --task --task-args --task-args-file --tag --no-use --abort-on-sla-failure"
OPTS["task_status"]="--uuid"
OPTS["task_use"]="--task"
OPTS["task_use"]="--uuid"
OPTS["task_validate"]="--deployment --task --task-args --task-args-file"
OPTS["verify_compare"]="--uuid-1 --uuid-2 --csv --html --json --output-file --threshold"
OPTS["verify_detailed"]="--uuid --sort-by"
@ -58,7 +58,7 @@ _rally()
OPTS["verify_showconfig"]="--deployment"
OPTS["verify_start"]="--deployment --set --regex --tests-file --tempest-config --xfails-file --no-use --system-wide --concurrency"
OPTS["verify_uninstall"]="--deployment"
OPTS["verify_use"]="--verification"
OPTS["verify_use"]="--uuid"
for OPT in ${!OPTS[*]} ; do
CMD=${OPT%%_*}

View File

@ -326,12 +326,19 @@ def alias(command_name):
def deprecated_args(*args, **kwargs):
def _decorator(func):
if "release" not in kwargs:
raise ValueError("'release' is required keyword argument of "
"'deprecated_args' decorator.")
func.__dict__.setdefault("args", []).insert(0, (args, kwargs))
func.__dict__.setdefault("deprecated_args", [])
func.deprecated_args.append(args[0])
if "help" in kwargs.keys():
warn_message = "DEPRECATED!"
kwargs["help"] = " ".join([warn_message, kwargs["help"]])
help_msg = "[Deprecated since Rally %s] " % kwargs.pop("release")
if "alternative" in kwargs:
help_msg += "Use '%s' instead. " % kwargs.pop("alternative")
if "help" in kwargs:
help_msg += kwargs["help"]
kwargs["help"] = help_msg
return func
return _decorator

View File

@ -574,7 +574,7 @@ class TaskCommands(object):
@cliutils.args("--junit", dest="out_format",
action="store_const", const="junit",
help="Generate the report in the JUnit format.")
@envutils.default_from_global("tasks", envutils.ENV_TASK, "uuid")
@envutils.default_from_global("tasks", envutils.ENV_TASK, "tasks")
@cliutils.suppress_warnings
def report(self, tasks=None, out=None, open_it=False, out_format="html"):
"""Generate report file for specified task.
@ -717,13 +717,15 @@ class TaskCommands(object):
"status", "detail"))
return failed_criteria
@cliutils.args("--task", type=str, dest="task", required=False,
@cliutils.args("--uuid", type=str, dest="task_id",
help="UUID of the task")
def use(self, task):
@cliutils.deprecated_args("--task", dest="task_id", type=str,
release="0.2.0", alternative="--uuid")
def use(self, task_id):
"""Set active task.
:param task: Task uuid.
:param task_id: Task uuid.
"""
print("Using task: %s" % task)
api.Task.get(task)
fileutils.update_globals_file("RALLY_TASK", task)
print("Using task: %s" % task_id)
api.Task.get(task_id)
fileutils.update_globals_file("RALLY_TASK", task_id)

View File

@ -70,8 +70,8 @@ class VerifyCommands(object):
"the local env!",
required=False, action="store_true")
@cliutils.deprecated_args("--system-wide-install", dest="system_wide",
help="Use --system-wide instead",
required=False, action="store_true")
required=False, action="store_true",
release="0.1.2", alternative="--system-wide")
@cliutils.args("--concurrency", dest="concur", type=int, required=False,
help="How many processes to use to run Tempest tests. "
"The default value (0) auto-detects your CPU count")
@ -183,7 +183,7 @@ class VerifyCommands(object):
print(_("No verification was started yet. "
"To start verification use:\nrally verify start"))
@cliutils.args("--uuid", type=str, dest="verification_uuid",
@cliutils.args("--uuid", type=str, dest="verification",
help="UUID of a verification")
@cliutils.args("--html", action="store_true", dest="output_html",
help="Display results in HTML format")
@ -194,17 +194,17 @@ class VerifyCommands(object):
help="Path to a file to save results")
@envutils.with_default_verification_id
@cliutils.suppress_warnings
def results(self, verification_uuid=None, output_file=None,
def results(self, verification=None, output_file=None,
output_html=None, output_json=None):
"""Display results of a verification.
:param verification_uuid: UUID of a verification
:param verification: UUID of a verification
:param output_file: Path to a file to save results
:param output_html: Display results in HTML format
:param output_json: Display results in JSON format (Default)
"""
try:
results = api.Verification.get(verification_uuid).get_results()
results = api.Verification.get(verification).get_results()
except exceptions.NotFoundException as e:
print(six.text_type(e))
return 1
@ -225,7 +225,7 @@ class VerifyCommands(object):
else:
print(result)
@cliutils.args("--uuid", dest="verification_uuid", type=str,
@cliutils.args("--uuid", dest="verification", type=str,
required=False,
help="UUID of a verification")
@cliutils.args("--sort-by", dest="sort_by", type=str, required=False,
@ -234,10 +234,10 @@ class VerifyCommands(object):
required=False,
help="Display detailed errors of failed tests")
@envutils.with_default_verification_id
def show(self, verification_uuid=None, sort_by="name", detailed=False):
def show(self, verification=None, sort_by="name", detailed=False):
"""Display results table of a verification.
:param verification_uuid: UUID of a verification
:param verification: UUID of a verification
:param sort_by: Sort results by 'name' or 'duration'
:param detailed: Display detailed errors of failed tests
"""
@ -248,7 +248,7 @@ class VerifyCommands(object):
return 1
try:
verification = api.Verification.get(verification_uuid)
verification = api.Verification.get(verification)
tests = verification.get_results()
except exceptions.NotFoundException as e:
print(six.text_type(e))
@ -278,22 +278,22 @@ class VerifyCommands(object):
"log": test["traceback"]}
print(formatted_test)
@cliutils.args("--uuid", dest="verification_uuid", type=str,
@cliutils.args("--uuid", dest="verification", type=str,
required=False, help="UUID of a verification")
@cliutils.args("--sort-by", dest="sort_by", type=str, required=False,
help="Sort results by 'name' or 'duration'")
@envutils.with_default_verification_id
def detailed(self, verification_uuid=None, sort_by="name"):
def detailed(self, verification=None, sort_by="name"):
"""Display results table of a verification with detailed errors.
:param verification_uuid: UUID of a verification
:param verification: UUID of a verification
:param sort_by: Sort results by 'name' or 'duration'
"""
self.show(verification_uuid, sort_by, True)
self.show(verification, sort_by, True)
@cliutils.args("--uuid-1", type=str, required=True, dest="uuid1",
@cliutils.args("--uuid-1", type=str, required=True, dest="verification1",
help="UUID of the first verification")
@cliutils.args("--uuid-2", type=str, required=True, dest="uuid2",
@cliutils.args("--uuid-2", type=str, required=True, dest="verification2",
help="UUID of the second verification")
@cliutils.args("--csv", action="store_true", dest="output_csv",
help="Display results in CSV format")
@ -307,13 +307,13 @@ class VerifyCommands(object):
dest="threshold", default=0,
help="If specified, timing differences must exceed this "
"percentage threshold to be included in output")
def compare(self, uuid1=None, uuid2=None,
def compare(self, verification1=None, verification2=None,
output_file=None, output_csv=None, output_html=None,
output_json=None, threshold=0):
"""Compare two verification results.
:param uuid1: UUID of the first verification
:param uuid2: UUID of the second verification
:param verification1: UUID of the first verification
:param verification2: UUID of the second verification
:param output_file: Path to a file to save results
:param output_csv: Display results in CSV format
:param output_html: Display results in HTML format
@ -321,8 +321,10 @@ class VerifyCommands(object):
:param threshold: Timing difference threshold percentage
"""
try:
res_1 = api.Verification.get(uuid1).get_results()["test_cases"]
res_2 = api.Verification.get(uuid2).get_results()["test_cases"]
res_1 = api.Verification.get(
verification1).get_results()["test_cases"]
res_2 = api.Verification.get(
verification2).get_results()["test_cases"]
_diff = diff.Diff(res_1, res_2, threshold)
except exceptions.NotFoundException as e:
print(six.text_type(e))
@ -350,8 +352,12 @@ class VerifyCommands(object):
else:
print(result)
@cliutils.args("--verification", type=str, dest="verification",
@cliutils.args("--uuid", type=str, dest="verification",
required=False, help="UUID of a verification")
@cliutils.deprecated_args("--verification", dest="verification",
required=False, type=str,
release="0.2.0",
alternative="--uuid")
def use(self, verification):
"""Set active verification.

View File

@ -80,7 +80,7 @@ def with_default_deployment(cli_arg_name="uuid"):
with_default_task_id = default_from_global("task_id", ENV_TASK, "uuid")
with_default_verification_id = default_from_global(
"verification_uuid", ENV_VERIFICATION, "uuid")
"verification", ENV_VERIFICATION, "uuid")
def get_creds_from_env_vars():

View File

@ -28,6 +28,7 @@ class DBCommands(object):
"""Commands for DB management."""
def recreate(self):
"""Drop and create Rally database."""
db.db_drop()
db.db_create()
envutils.clear_env()