Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def detach_from_node(self, node, running):
if running:
heap_dump_file = os.path.join(self.log_root, "heap_at_exit_{}.hprof".format(node.pid))
console.info("{}: Writing heap dump to [{}]".format(self.human_name, heap_dump_file), logger=self.logger)
cmd = "jmap -dump:format=b,file={} {}".format(heap_dump_file, node.pid)
if process.run_subprocess_with_logging(cmd):
self.logger.warning("Could not write heap dump to [%s]", heap_dump_file)
if not process.exit_status_as_bool(lambda: process.run_subprocess_with_logging(
"git -C {} --version".format(io.escape_path(src)), level=logging.DEBUG), quiet=True):
version = process.run_subprocess_with_output("git --version")
def _do_download_via_s3(self, url, data_set_path, size_in_bytes):
tmp_data_set_path = data_set_path + ".tmp"
s3cmd = "s3cmd -v get %s %s" % (url, tmp_data_set_path)
try:
success = process.run_subprocess_with_logging(s3cmd)
# Exit code for s3cmd does not seem to be reliable so we also check the file size although this is rather fragile...
if not success or (size_in_bytes is not None and os.path.getsize(tmp_data_set_path) != size_in_bytes):
# cleanup probably corrupt data file...
if os.path.isfile(tmp_data_set_path):
os.remove(tmp_data_set_path)
raise RuntimeError("Could not get benchmark data from S3: '%s'. Is s3cmd installed and set up properly?" % s3cmd)
except:
logger.info("Removing temp file %s" % tmp_data_set_path)
os.remove(tmp_data_set_path)
raise
else:
os.rename(tmp_data_set_path, data_set_path)
def rebase(src_dir, remote="origin", branch="master"):
checkout(src_dir, branch)
if process.run_subprocess_with_logging("git -C {0} rebase {1}/{2}".format(io.escape_path(src_dir), remote, branch)):
raise exceptions.SupplyError("Could not rebase on branch [%s]" % branch)
def pull_ts(src_dir, ts):
fetch(src_dir)
clean_src = io.escape_path(src_dir)
revision = process.run_subprocess_with_output(
"git -C {0} rev-list -n 1 --before=\"{1}\" --date=iso8601 origin/master".format(clean_src, ts))[0].strip()
if process.run_subprocess_with_logging("git -C {0} checkout {1}".format(clean_src, revision)):
raise exceptions.SupplyError("Could not checkout source tree for timestamped revision [%s]" % ts)
def clone(src, remote):
io.ensure_dir(src)
# Don't swallow subprocess output, user might need to enter credentials...
if process.run_subprocess_with_logging("git clone %s %s" % (remote, io.escape_path(src))):
raise exceptions.SupplyError("Could not clone from [%s] to [%s]" % (remote, src))
def _start_process(self, binary_path):
compose_cmd = self._docker_compose(binary_path, "up -d")
ret = process.run_subprocess_with_logging(compose_cmd)
if ret != 0:
msg = "Docker daemon startup failed with exit code [{}]".format(ret)
logging.error(msg)
raise exceptions.LaunchError(msg)
container_id = self._get_container_id(binary_path)
self._wait_for_healthy_running_container(container_id, DockerLauncher.PROCESS_WAIT_TIMEOUT_SECONDS)
def install(self, es_home_path, plugin_url=None):
installer_binary_path = os.path.join(es_home_path, "bin", "elasticsearch-plugin")
if plugin_url:
logger.info("Installing [%s] into [%s] from [%s]" % (self.plugin_name, es_home_path, plugin_url))
install_cmd = '%s install --batch "%s"' % (installer_binary_path, plugin_url)
else:
logger.info("Installing [%s] into [%s]" % (self.plugin_name, es_home_path))
install_cmd = '%s install --batch "%s"' % (installer_binary_path, self.plugin_name)
return_code = process.run_subprocess_with_logging(install_cmd)
# see: https://www.elastic.co/guide/en/elasticsearch/plugins/current/_other_command_line_parameters.html
if return_code == 0:
logger.info("Successfully installed [%s]." % self.plugin_name)
elif return_code == 64:
# most likely this is an unknown plugin
raise exceptions.SystemSetupError("Unknown plugin [%s]" % self.plugin_name)
elif return_code == 74:
raise exceptions.SupplyError("I/O error while trying to install [%s]" % self.plugin_name)
else:
raise exceptions.RallyError("Unknown error while trying to install [%s] (installer return code [%s]). Please check the logs." %
(self.plugin_name, str(return_code)))