[pve-devel] [PATCH installer v5 32/36] fetch-answer: move get_answer_file to utils

Aaron Lauterer a.lauterer at proxmox.com
Tue Apr 16 17:33:21 CEST 2024


and switch to accepting the full path to the answer file. This makes it
possible to use it in more situations than just the partition case.

Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
---
 .../src/fetch_plugins/partition.rs            | 23 +++++--------------
 .../src/fetch_plugins/utils/mod.rs            | 13 ++++++++++-
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/proxmox-fetch-answer/src/fetch_plugins/partition.rs b/proxmox-fetch-answer/src/fetch_plugins/partition.rs
index dbe5dda..2557c59 100644
--- a/proxmox-fetch-answer/src/fetch_plugins/partition.rs
+++ b/proxmox-fetch-answer/src/fetch_plugins/partition.rs
@@ -1,8 +1,8 @@
-use anyhow::{Error, Result};
+use anyhow::Result;
 use log::info;
-use std::{fs::read_to_string, path::Path};
+use std::path::PathBuf;
 
-use crate::fetch_plugins::utils::mount_proxmoxinst_part;
+use crate::fetch_plugins::utils::{get_answer_file, mount_proxmoxinst_part};
 
 static ANSWER_FILE: &str = "answer.toml";
 
@@ -12,21 +12,10 @@ impl FetchFromPartition {
     /// Returns the contents of the answer file
     pub fn get_answer() -> Result<String> {
         info!("Checking for answer file on partition.");
-        let mount_path = mount_proxmoxinst_part()?;
-        let answer = Self::get_answer_file(&mount_path)?;
+        let mut mount_path = PathBuf::from(mount_proxmoxinst_part()?);
+        mount_path.push(ANSWER_FILE);
+        let answer = get_answer_file(&mount_path)?;
         info!("Found answer file on partition.");
         Ok(answer)
     }
-
-    /// Searches for answer file and returns contents if found
-    fn get_answer_file(mount_path: &str) -> Result<String> {
-        let answer_path = Path::new(mount_path).join(ANSWER_FILE);
-        match answer_path.try_exists() {
-            Ok(true) => Ok(read_to_string(answer_path)?),
-            _ => Err(Error::msg(format!(
-                "could not find answer file expected at: {}",
-                answer_path.display()
-            ))),
-        }
-    }
 }
diff --git a/proxmox-fetch-answer/src/fetch_plugins/utils/mod.rs b/proxmox-fetch-answer/src/fetch_plugins/utils/mod.rs
index e5ea4b8..29cb37d 100644
--- a/proxmox-fetch-answer/src/fetch_plugins/utils/mod.rs
+++ b/proxmox-fetch-answer/src/fetch_plugins/utils/mod.rs
@@ -1,7 +1,7 @@
 use anyhow::{Error, Result};
 use log::{info, warn};
 use std::{
-    fs::{self, create_dir_all},
+    fs::{self, create_dir_all, read_to_string},
     path::{Path, PathBuf},
     process::Command,
 };
@@ -83,3 +83,14 @@ fn check_if_mounted(target_path: &str) -> Result<bool> {
     }
     Ok(false)
 }
+
+/// Searches for answer file and returns contents if found
+pub fn get_answer_file(path: &PathBuf) -> Result<String> {
+    match path.try_exists() {
+        Ok(true) => Ok(read_to_string(path)?),
+        _ => Err(Error::msg(format!(
+            "could not find answer file expected at: {}",
+            path.display()
+        ))),
+    }
+}
-- 
2.39.2





More information about the pve-devel mailing list