diff --git a/etc/rally.bash_completion b/etc/rally.bash_completion index f63ff9a459..5ee9ecefc4 100644 --- a/etc/rally.bash_completion +++ b/etc/rally.bash_completion @@ -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%%_*} diff --git a/rally/cli/cliutils.py b/rally/cli/cliutils.py index 0126c79fbc..019d75583e 100644 --- a/rally/cli/cliutils.py +++ b/rally/cli/cliutils.py @@ -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 diff --git a/rally/cli/commands/task.py b/rally/cli/commands/task.py index 90242aa182..b2a7d3cdc1 100644 --- a/rally/cli/commands/task.py +++ b/rally/cli/commands/task.py @@ -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) diff --git a/rally/cli/commands/verify.py b/rally/cli/commands/verify.py index 285df5f0da..e18a65f664 100644 --- a/rally/cli/commands/verify.py +++ b/rally/cli/commands/verify.py @@ -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. diff --git a/rally/cli/envutils.py b/rally/cli/envutils.py index 7cc6890cb0..111129ec22 100644 --- a/rally/cli/envutils.py +++ b/rally/cli/envutils.py @@ -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(): diff --git a/rally/cli/manage.py b/rally/cli/manage.py index 2e51a63a40..b6b4e295a7 100644 --- a/rally/cli/manage.py +++ b/rally/cli/manage.py @@ -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()