in esrally/rally.py [0:0]
def dispatch_sub_command(arg_parser, args, cfg: types.Config):
sub_command = args.subcommand
cfg.add(config.Scope.application, "system", "quiet.mode", args.quiet)
cfg.add(config.Scope.application, "system", "offline.mode", args.offline)
logger = logging.getLogger(__name__)
try:
if sub_command == "compare":
configure_reporting_params(args, cfg)
reporter.compare(cfg, args.baseline, args.contender)
elif sub_command == "list":
cfg.add(config.Scope.applicationOverride, "system", "list.config.option", args.configuration)
cfg.add(config.Scope.applicationOverride, "system", "list.max_results", args.limit)
cfg.add(config.Scope.applicationOverride, "system", "admin.track", args.track)
cfg.add(config.Scope.applicationOverride, "system", "list.races.benchmark_name", args.benchmark_name)
cfg.add(config.Scope.applicationOverride, "system", "list.from_date", args.from_date)
cfg.add(config.Scope.applicationOverride, "system", "list.to_date", args.to_date)
cfg.add(config.Scope.applicationOverride, "system", "list.challenge", args.challenge)
configure_mechanic_params(args, cfg, command_requires_car=False)
configure_track_params(arg_parser, args, cfg, command_requires_track=False)
dispatch_list(cfg)
elif sub_command == "delete":
cfg.add(config.Scope.applicationOverride, "system", "delete.config.option", args.configuration)
cfg.add(config.Scope.applicationOverride, "system", "delete.id", args.id)
cfg.add(config.Scope.applicationOverride, "system", "admin.dry_run", args.dry_run)
dispatch_delete(cfg)
elif sub_command == "add":
cfg.add(config.Scope.applicationOverride, "system", "add.config.option", args.configuration)
cfg.add(config.Scope.applicationOverride, "system", "admin.track", args.track)
cfg.add(config.Scope.applicationOverride, "system", "add.message", args.message)
cfg.add(config.Scope.applicationOverride, "system", "add.race_timestamp", args.race_timestamp)
cfg.add(config.Scope.applicationOverride, "system", "add.chart_type", args.chart_type)
cfg.add(config.Scope.applicationOverride, "system", "add.chart_name", args.chart_name)
cfg.add(config.Scope.applicationOverride, "system", "admin.dry_run", args.dry_run)
dispatch_add(cfg)
elif sub_command == "build":
cfg.add(config.Scope.applicationOverride, "mechanic", "car.plugins", opts.csv_to_list(args.elasticsearch_plugins))
cfg.add(config.Scope.applicationOverride, "mechanic", "plugin.params", opts.to_dict(args.plugin_params))
cfg.add(config.Scope.applicationOverride, "mechanic", "source.revision", args.revision)
cfg.add(config.Scope.applicationOverride, "mechanic", "source.build.method", args.source_build_method)
cfg.add(config.Scope.applicationOverride, "mechanic", "target.os", args.target_os)
cfg.add(config.Scope.applicationOverride, "mechanic", "target.arch", args.target_arch)
configure_mechanic_params(args, cfg)
mechanic.build(cfg)
elif sub_command == "download":
cfg.add(config.Scope.applicationOverride, "mechanic", "target.os", args.target_os)
cfg.add(config.Scope.applicationOverride, "mechanic", "target.arch", args.target_arch)
configure_mechanic_params(args, cfg)
mechanic.download(cfg)
elif sub_command == "install":
cfg.add(config.Scope.applicationOverride, "system", "install.id", args.installation_id)
cfg.add(config.Scope.applicationOverride, "mechanic", "network.host", args.network_host)
cfg.add(config.Scope.applicationOverride, "mechanic", "network.http.port", args.http_port)
cfg.add(config.Scope.applicationOverride, "mechanic", "source.revision", args.revision)
cfg.add(config.Scope.applicationOverride, "mechanic", "source.build.method", args.source_build_method)
cfg.add(config.Scope.applicationOverride, "mechanic", "build.type", args.build_type)
cfg.add(config.Scope.applicationOverride, "mechanic", "runtime.jdk", args.runtime_jdk)
cfg.add(config.Scope.applicationOverride, "mechanic", "node.name", args.node_name)
cfg.add(config.Scope.applicationOverride, "mechanic", "cluster.name", args.cluster_name)
cfg.add(config.Scope.applicationOverride, "mechanic", "master.nodes", opts.csv_to_list(args.master_nodes))
cfg.add(config.Scope.applicationOverride, "mechanic", "seed.hosts", opts.csv_to_list(args.seed_hosts))
cfg.add(config.Scope.applicationOverride, "mechanic", "car.plugins", opts.csv_to_list(args.elasticsearch_plugins))
cfg.add(config.Scope.applicationOverride, "mechanic", "plugin.params", opts.to_dict(args.plugin_params))
configure_mechanic_params(args, cfg)
mechanic.install(cfg)
elif sub_command == "start":
cfg.add(config.Scope.applicationOverride, "system", "race.id", args.race_id)
cfg.add(config.Scope.applicationOverride, "system", "install.id", args.installation_id)
cfg.add(config.Scope.applicationOverride, "mechanic", "runtime.jdk", args.runtime_jdk)
configure_telemetry_params(args, cfg)
mechanic.start(cfg)
elif sub_command == "stop":
cfg.add(config.Scope.applicationOverride, "mechanic", "preserve.install", convert.to_bool(args.preserve_install))
cfg.add(config.Scope.applicationOverride, "system", "install.id", args.installation_id)
mechanic.stop(cfg)
elif sub_command == "race":
# As the race command is doing more work than necessary at the moment, we duplicate several parameters
# in this section that actually belong to dedicated subcommands (like install, start or stop). Over time
# these duplicated parameters will vanish as we move towards dedicated subcommands and use "race" only
# to run the actual benchmark (i.e. generating load).
if args.effective_start_date:
cfg.add(config.Scope.applicationOverride, "system", "time.start", args.effective_start_date)
cfg.add(config.Scope.applicationOverride, "system", "race.id", args.race_id)
# use the race id implicitly also as the install id.
cfg.add(config.Scope.applicationOverride, "system", "install.id", args.race_id)
cfg.add(config.Scope.applicationOverride, "race", "pipeline", args.pipeline)
cfg.add(config.Scope.applicationOverride, "race", "user.tags", opts.to_dict(args.user_tag))
cfg.add(config.Scope.applicationOverride, "driver", "profiling", args.enable_driver_profiling)
cfg.add(config.Scope.applicationOverride, "driver", "assertions", args.enable_assertions)
cfg.add(config.Scope.applicationOverride, "driver", "on.error", args.on_error)
cfg.add(config.Scope.applicationOverride, "driver", "load_driver_hosts", opts.csv_to_list(args.load_driver_hosts))
cfg.add(config.Scope.applicationOverride, "track", "test.mode.enabled", args.test_mode)
configure_track_params(arg_parser, args, cfg)
configure_connection_params(arg_parser, args, cfg)
configure_telemetry_params(args, cfg)
configure_mechanic_params(args, cfg)
cfg.add(config.Scope.applicationOverride, "mechanic", "runtime.jdk", args.runtime_jdk)
cfg.add(config.Scope.applicationOverride, "mechanic", "source.revision", args.revision)
cfg.add(config.Scope.applicationOverride, "mechanic", "source.build.method", args.source_build_method)
cfg.add(config.Scope.applicationOverride, "mechanic", "car.plugins", opts.csv_to_list(args.elasticsearch_plugins))
cfg.add(config.Scope.applicationOverride, "mechanic", "plugin.params", opts.to_dict(args.plugin_params))
cfg.add(config.Scope.applicationOverride, "mechanic", "preserve.install", convert.to_bool(args.preserve_install))
cfg.add(config.Scope.applicationOverride, "mechanic", "skip.rest.api.check", convert.to_bool(args.skip_rest_api_check))
cfg.add(config.Scope.applicationOverride, "mechanic", "cluster.name", args.cluster_name)
configure_reporting_params(args, cfg)
race(cfg, args.kill_running_processes)
elif sub_command == "create-track":
if args.data_streams is not None:
cfg.add(config.Scope.applicationOverride, "generator", "indices", "*")
cfg.add(config.Scope.applicationOverride, "generator", "data_streams", args.data_streams)
cfg.add(config.Scope.applicationOverride, "generator", "output.path", args.output_path)
cfg.add(config.Scope.applicationOverride, "track", "track.name", args.track)
cfg.add(config.Scope.applicationOverride, "generator", "batch_size", args.batch_size)
elif args.indices is not None:
cfg.add(config.Scope.applicationOverride, "generator", "indices", args.indices)
cfg.add(config.Scope.applicationOverride, "generator", "data_streams", args.data_streams)
cfg.add(config.Scope.applicationOverride, "generator", "output.path", args.output_path)
cfg.add(config.Scope.applicationOverride, "track", "track.name", args.track)
cfg.add(config.Scope.applicationOverride, "generator", "batch_size", args.batch_size)
configure_connection_params(arg_parser, args, cfg)
tracker.create_track(cfg)
elif sub_command == "info":
configure_track_params(arg_parser, args, cfg)
track.track_info(cfg)
else:
raise exceptions.SystemSetupError(f"Unknown subcommand [{sub_command}]")
return ExitStatus.SUCCESSFUL
except (exceptions.UserInterrupted, KeyboardInterrupt) as e:
logger.info("User has cancelled the subcommand [%s].", sub_command, exc_info=e)
console.info("Aborted %s. %s" % (sub_command, e))
return ExitStatus.INTERRUPTED
except exceptions.RallyError as e:
logger.exception("Cannot run subcommand [%s].", sub_command)
console.error("Cannot %s. %s" % (sub_command, e.full_message))
console.println("")
print_help_on_errors()
return ExitStatus.ERROR
except BaseException as e:
logger.exception("A fatal error occurred while running subcommand [%s].", sub_command)
console.error("Cannot %s. %s." % (sub_command, e))
console.println("")
print_help_on_errors()
return ExitStatus.ERROR