in rd-agent/src/main.rs [1074:1151]
fn reset_agent_states(cfg: &Config) {
let mut paths = vec![
&cfg.index_path,
&cfg.sysreqs_path,
&cfg.cmd_path,
&cfg.slices_path,
&cfg.hashd_paths[0].args,
&cfg.hashd_paths[0].params,
&cfg.hashd_paths[1].args,
&cfg.hashd_paths[1].params,
&cfg.misc_bin_path,
&cfg.oomd_cfg_path,
&cfg.oomd_daemon_cfg_path,
&cfg.sideloader_daemon_cfg_path,
&cfg.sideloader_daemon_jobs_path,
&cfg.sideloader_daemon_status_path,
&cfg.side_defs_path,
&cfg.side_bin_path,
&cfg.side_scr_path,
&cfg.sys_scr_path,
];
if cfg.rep_retention.is_some() {
paths.append(&mut vec![&cfg.report_path, &cfg.report_d_path]);
}
if cfg.rep_1min_retention.is_some() {
paths.append(&mut vec![&cfg.report_1min_path, &cfg.report_1min_d_path]);
}
for path in paths {
let path = Path::new(path);
if !path.exists() {
continue;
}
info!("cfg: Removing {:?}", &path);
if path.is_dir() {
match path.read_dir() {
Ok(files) => {
for file in files.filter_map(|r| r.ok()).map(|e| e.path()) {
if let Err(e) = fs::remove_file(&file) {
warn!("cfg: Failed to remove {:?} ({:#})", &file, &e);
}
}
}
Err(e) => {
warn!("cfg: Failed to read dir {:?} ({:#})", &path, &e);
}
}
} else {
if let Err(e) = fs::remove_file(&path) {
warn!("cfg: Failed to remove {:?} ({:#})", &path, &e);
}
}
}
info!("cfg: Preparing hashd config files...");
let mut hashd_args = hashd::hashd_path_args(&cfg, HashdSel::A);
hashd_args.push("--prepare-config".into());
Command::new(hashd_args.remove(0))
.args(hashd_args)
.status()
.expect("cfg: Failed to run rd-hashd --prepare-config");
fs::copy(
&cfg.hashd_paths(HashdSel::A).args,
&cfg.hashd_paths(HashdSel::B).args,
)
.unwrap();
fs::copy(
&cfg.hashd_paths(HashdSel::A).params,
&cfg.hashd_paths(HashdSel::B).params,
)
.unwrap();
}