]> git.proxmox.com Git - proxmox-backup.git/commitdiff
let ChunkStore::create take CreateOptions
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 19 Dec 2019 12:14:49 +0000 (13:14 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 19 Dec 2019 12:14:49 +0000 (13:14 +0100)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
src/api2/config/datastore.rs
src/backup/chunk_store.rs

index 7df654760b1b4cf929b9f5ebc3a7c05b26a09ff0..55e0775c5d29dcd4dd4be8d43b140b1cefb9bd0a 100644 (file)
@@ -5,6 +5,7 @@ use serde_json::{json, Value};
 
 use proxmox::api::{ApiHandler, ApiMethod, Router, RpcEnvironment};
 use proxmox::api::schema::*;
+use proxmox::tools::fs::CreateOptions;
 
 use crate::api2::types::*;
 use crate::backup::*;
@@ -34,7 +35,7 @@ pub const POST: ApiMethod = ApiMethod::new(
             ("name", false, &DATASTORE_SCHEMA),
             ("path", false, &StringSchema::new("Directory path. The directory path is created if it does not already exist.").schema()),
         ],
-    )       
+    )
 ).protected(true);
 
 fn create_datastore(
@@ -54,7 +55,14 @@ fn create_datastore(
     }
 
     let path: PathBuf = param["path"].as_str().unwrap().into();
-    let _store = ChunkStore::create(name, path)?;
+    let backup_user = crate::backup::backup_user()?;
+    let _store = ChunkStore::create(
+        name,
+        path,
+        CreateOptions::new()
+            .owner(backup_user.uid)
+            .group(backup_user.gid),
+    )?;
 
     let datastore = json!({
         "path": param["path"]
index c16d622f09e3b1149c70a16b6a364f1b1bfa4da5..f8857acadf02ef643f5ca645375c6265ac9f857d 100644 (file)
@@ -85,7 +85,10 @@ impl ChunkStore {
         chunk_dir
     }
 
-    pub fn create<P: Into<PathBuf>>(name: &str, path: P) -> Result<Self, Error> {
+    pub fn create<P>(name: &str, path: P, options: CreateOptions) -> Result<Self, Error>
+    where
+        P: Into<PathBuf>,
+    {
 
         let base: PathBuf = path.into();
 
@@ -95,12 +98,6 @@ impl ChunkStore {
 
         let chunk_dir = Self::chunk_dir(&base);
 
-        let backup_user = crate::backup::backup_user()?;
-
-        let options = CreateOptions::new()
-            .owner(backup_user.uid)
-            .group(backup_user.gid);
-
         let default_options = CreateOptions::new();
 
         if let Err(err) = create_path(&base, Some(default_options.clone()), Some(options.clone())) {
@@ -464,7 +461,7 @@ fn test_chunk_store1() {
     let chunk_store = ChunkStore::open("test", &path);
     assert!(chunk_store.is_err());
 
-    let chunk_store = ChunkStore::create("test", &path).unwrap();
+    let chunk_store = ChunkStore::create("test", &path, CreateOptions::new()).unwrap();
 
     let (chunk, digest) = super::DataChunkBuilder::new(&[0u8, 1u8]).build().unwrap();
 
@@ -475,7 +472,7 @@ fn test_chunk_store1() {
     assert!(exists);
 
 
-    let chunk_store = ChunkStore::create("test", &path);
+    let chunk_store = ChunkStore::create("test", &path, CreateOptions::new());
     assert!(chunk_store.is_err());
 
     if let Err(_e) = std::fs::remove_dir_all(".testdir") { /* ignore */ }