in esrally/mechanic/supplier.py [0:0]
def _supply_requirements(sources, distribution, plugins, revisions, distribution_version):
# per artifact (elasticsearch or a specific plugin):
# * key: artifact
# * value: ("source" | "distribution", distribution_version | revision, build = True | False)
supply_requirements = {}
# can only build Elasticsearch with source-related pipelines -> ignore revision in that case
if "elasticsearch" in revisions and sources:
supply_requirements["elasticsearch"] = ("source", _required_revision(revisions, "elasticsearch", "Elasticsearch"), True)
else:
# no revision given or explicitly specified that it's from a distribution -> must use a distribution
supply_requirements["elasticsearch"] = ("distribution", _required_version(distribution_version), False)
for plugin in plugins:
if plugin.moved_to_module:
# TODO: https://github.com/elastic/rally/issues/1622
continue
elif plugin.core_plugin:
# core plugins are entirely dependent upon Elasticsearch.
supply_requirements[plugin.name] = supply_requirements["elasticsearch"]
else:
# allow catch-all only if we're generally building from sources. If it is mixed, the user should tell explicitly.
if plugin.name in revisions or ("all" in revisions and sources):
# be a bit more lenient when checking for plugin revisions. This allows users to specify `--revision="current"` and
# rely on Rally to do the right thing.
try:
plugin_revision = revisions[plugin.name]
except KeyError:
# maybe we can use the catch-all revision (only if it's not a git revision)
plugin_revision = revisions.get("all")
if not plugin_revision or SourceRepository.is_commit_hash(plugin_revision):
raise exceptions.SystemSetupError("No revision specified for plugin [%s]." % plugin.name)
logging.getLogger(__name__).info(
"Revision for [%s] is not explicitly defined. Using catch-all revision [%s].", plugin.name, plugin_revision
)
supply_requirements[plugin.name] = ("source", plugin_revision, True)
else:
supply_requirements[plugin.name] = (distribution, _required_version(distribution_version), False)
return supply_requirements