proxmox-rrd: cleanup - use struct instead of tuple

This commit is contained in:
Dietmar Maurer 2021-10-16 12:38:34 +02:00
parent 45700e2ecf
commit 2b05008a11
2 changed files with 19 additions and 9 deletions

View File

@ -318,14 +318,14 @@ fn apply_journal_impl(
// Apply old journals first
let journal_list = state.read().unwrap().list_old_journals()?;
for (_time, filename, path) in journal_list {
log::info!("apply old journal log {}", filename);
let file = std::fs::OpenOptions::new().read(true).open(path)?;
for entry in journal_list {
log::info!("apply old journal log {}", entry.name);
let file = std::fs::OpenOptions::new().read(true).open(&entry.path)?;
let mut reader = BufReader::new(file);
lines += apply_journal_lines(
Arc::clone(&state),
Arc::clone(&rrd_map),
&filename,
&entry.name,
&mut reader,
false,
)?;

View File

@ -31,6 +31,12 @@ pub struct JournalEntry {
pub rel_path: String,
}
pub struct JournalFileInfo {
pub time: u64,
pub name: String,
pub path: PathBuf,
}
impl JournalState {
pub(crate) fn new(config: Arc<CacheConfig>) -> Result<Self, Error> {
@ -104,14 +110,14 @@ impl JournalState {
let journal_list = self.list_old_journals()?;
for (_time, _filename, path) in journal_list {
std::fs::remove_file(path)?;
for entry in journal_list {
std::fs::remove_file(entry.path)?;
}
Ok(())
}
pub fn list_old_journals(&self) -> Result<Vec<(u64, String, PathBuf)>, Error> {
pub fn list_old_journals(&self) -> Result<Vec<JournalFileInfo>, Error> {
let mut list = Vec::new();
for entry in std::fs::read_dir(&self.config.basedir)? {
let entry = entry?;
@ -123,7 +129,11 @@ impl JournalState {
if let Some(extension) = extension.to_str() {
if let Some(rest) = extension.strip_prefix("journal-") {
if let Ok(time) = u64::from_str_radix(rest, 16) {
list.push((time, format!("rrd.{}", extension), path.to_owned()));
list.push(JournalFileInfo {
time,
name: format!("rrd.{}", extension),
path: path.to_owned(),
});
}
}
}
@ -131,7 +141,7 @@ impl JournalState {
}
}
}
list.sort_unstable_by_key(|t| t.0);
list.sort_unstable_by_key(|entry| entry.time);
Ok(list)
}
}