update to proxmox-sys 0.2 crate
- imported pbs-api-types/src/common_regex.rs from old proxmox crate - use hex crate to generate/parse hex digest - remove all reference to proxmox crate (use proxmox-sys and proxmox-serde instead) Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
This commit is contained in:
@ -9,7 +9,7 @@ use std::path::PathBuf;
|
||||
|
||||
use anyhow::{bail, Error};
|
||||
|
||||
use proxmox::tools::fs::{CreateOptions, replace_file, file_read_optional_string};
|
||||
use proxmox_sys::fs::{CreateOptions, replace_file, file_read_optional_string};
|
||||
|
||||
use pbs_api_types::{ScsiTapeChanger, LtoTapeDrive};
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
use anyhow::Error;
|
||||
|
||||
use pbs_tools::run_command;
|
||||
use proxmox_sys::command::run_command;
|
||||
use pbs_api_types::ScsiTapeChanger;
|
||||
use pbs_tape::MtxStatus;
|
||||
|
||||
|
@ -23,7 +23,7 @@ use pbs_api_types::{
|
||||
Fingerprint, MamAttribute, LtoDriveAndMediaStatus, LtoTapeDrive, Lp17VolumeStatistics,
|
||||
};
|
||||
use pbs_config::key_config::KeyConfig;
|
||||
use pbs_tools::run_command;
|
||||
use proxmox_sys::command::run_command;
|
||||
use pbs_tape::{
|
||||
TapeWrite, TapeRead, BlockReadError, MediaContentHeader,
|
||||
sg_tape::{SgTape, TapeAlertFlags},
|
||||
|
@ -13,21 +13,18 @@ use serde_json::Value;
|
||||
use nix::fcntl::OFlag;
|
||||
use nix::sys::stat::Mode;
|
||||
|
||||
use proxmox::{
|
||||
tools::{
|
||||
fs::{
|
||||
lock_file,
|
||||
atomic_open_or_create_file,
|
||||
file_read_optional_string,
|
||||
replace_file,
|
||||
CreateOptions,
|
||||
}
|
||||
},
|
||||
use proxmox_sys::fs::{
|
||||
lock_file,
|
||||
atomic_open_or_create_file,
|
||||
file_read_optional_string,
|
||||
replace_file,
|
||||
CreateOptions,
|
||||
};
|
||||
|
||||
use proxmox_io::ReadExt;
|
||||
use proxmox_section_config::SectionConfigData;
|
||||
use proxmox_uuid::Uuid;
|
||||
use proxmox_sys::{task_log, worker_task_context::WorkerTaskContext};
|
||||
use proxmox_sys::{task_log, WorkerTaskContext};
|
||||
|
||||
use pbs_api_types::{VirtualTapeDrive, LtoTapeDrive, Fingerprint};
|
||||
use pbs_config::key_config::KeyConfig;
|
||||
@ -602,7 +599,7 @@ pub struct DeviceLockGuard(std::fs::File);
|
||||
// Uses systemd escape_unit to compute a file name from `device_path`, the try
|
||||
// to lock `/var/lock/<name>`.
|
||||
fn open_device_lock(device_path: &str) -> Result<std::fs::File, Error> {
|
||||
let lock_name = proxmox::tools::systemd::escape_unit(device_path, true);
|
||||
let lock_name = proxmox_sys::systemd::escape_unit(device_path, true);
|
||||
|
||||
let mut path = std::path::PathBuf::from(crate::tape::DRIVE_LOCK_DIR);
|
||||
path.push(lock_name);
|
||||
|
@ -6,7 +6,7 @@ use std::io;
|
||||
use anyhow::{bail, format_err, Error};
|
||||
use serde::{Serialize, Deserialize};
|
||||
|
||||
use proxmox::tools::{
|
||||
use proxmox_sys::{
|
||||
fs::{replace_file, CreateOptions},
|
||||
};
|
||||
|
||||
@ -48,7 +48,7 @@ pub fn open_virtual_tape_drive(config: &VirtualTapeDrive) -> Result<VirtualTapeH
|
||||
|
||||
let options = CreateOptions::new();
|
||||
let timeout = std::time::Duration::new(10, 0);
|
||||
let lock = proxmox::tools::fs::open_file_locked(&lock_path, timeout, true, options)?;
|
||||
let lock = proxmox_sys::fs::open_file_locked(&lock_path, timeout, true, options)?;
|
||||
|
||||
Ok(VirtualTapeHandle {
|
||||
_lock: lock,
|
||||
@ -104,7 +104,7 @@ impl VirtualTapeHandle {
|
||||
|
||||
fn load_tape_index(&self, tape_name: &str) -> Result<TapeIndex, Error> {
|
||||
let path = self.tape_index_path(tape_name);
|
||||
let raw = proxmox::tools::fs::file_get_contents(&path)?;
|
||||
let raw = proxmox_sys::fs::file_get_contents(&path)?;
|
||||
if raw.is_empty() {
|
||||
return Ok(TapeIndex { files: 0 });
|
||||
}
|
||||
@ -147,7 +147,7 @@ impl VirtualTapeHandle {
|
||||
current_tape: None,
|
||||
})?;
|
||||
|
||||
let data = proxmox::tools::fs::file_get_json(&path, Some(default))?;
|
||||
let data = proxmox_sys::fs::file_get_json(&path, Some(default))?;
|
||||
let status: VirtualDriveStatus = serde_json::from_value(data)?;
|
||||
Ok(status)
|
||||
}
|
||||
@ -309,7 +309,7 @@ impl TapeDriver for VirtualTapeHandle {
|
||||
Ok(Box::new(reader))
|
||||
}
|
||||
None => {
|
||||
return Err(BlockReadError::Error(proxmox::io_format_err!("drive is empty (no tape loaded).")));
|
||||
return Err(BlockReadError::Error(proxmox_sys::io_format_err!("drive is empty (no tape loaded).")));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -362,7 +362,7 @@ impl TapeDriver for VirtualTapeHandle {
|
||||
|
||||
Ok(writer)
|
||||
}
|
||||
None => proxmox::io_bail!("drive is empty (no tape loaded)."),
|
||||
None => proxmox_sys::io_bail!("drive is empty (no tape loaded)."),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
|
||||
use proxmox::sys::error::SysError;
|
||||
use proxmox_sys::error::SysError;
|
||||
use proxmox_uuid::Uuid;
|
||||
|
||||
use pbs_tape::{
|
||||
@ -61,13 +61,13 @@ pub fn tape_write_catalog<'a>(
|
||||
while remaining != 0 {
|
||||
let got = file.read(&mut file_copy_buffer[..])?;
|
||||
if got as u64 > remaining {
|
||||
proxmox::io_bail!("catalog '{}' changed while reading", uuid);
|
||||
proxmox_sys::io_bail!("catalog '{}' changed while reading", uuid);
|
||||
}
|
||||
writer.write_all(&file_copy_buffer[..got])?;
|
||||
remaining -= got as u64;
|
||||
}
|
||||
if remaining > 0 {
|
||||
proxmox::io_bail!("catalog '{}' shrunk while reading", uuid);
|
||||
proxmox_sys::io_bail!("catalog '{}' shrunk while reading", uuid);
|
||||
}
|
||||
Ok(())
|
||||
});
|
||||
|
@ -69,7 +69,7 @@ impl <'a> ChunkArchiveWriter<'a> {
|
||||
fn write_all(&mut self, data: &[u8]) -> Result<bool, std::io::Error> {
|
||||
match self.writer {
|
||||
Some(ref mut writer) => writer.write_all(data),
|
||||
None => proxmox::io_bail!(
|
||||
None => proxmox_sys::io_bail!(
|
||||
"detected write after archive finished - internal error"),
|
||||
}
|
||||
}
|
||||
|
@ -48,23 +48,23 @@ impl <'a> Read for MultiVolumeReader<'a> {
|
||||
|
||||
if self.reader.is_none() {
|
||||
let mut reader = (self.next_reader_fn)()
|
||||
.map_err(|err| proxmox::io_format_err!("multi-volume next failed: {}", err))?;
|
||||
.map_err(|err| proxmox_sys::io_format_err!("multi-volume next failed: {}", err))?;
|
||||
|
||||
proxmox_lang::try_block!({
|
||||
let part_header: MediaContentHeader = unsafe { reader.read_le_value()? };
|
||||
self.reader = Some(reader);
|
||||
|
||||
if part_header.uuid != self.header.uuid {
|
||||
proxmox::io_bail!("got wrong part uuid");
|
||||
proxmox_sys::io_bail!("got wrong part uuid");
|
||||
}
|
||||
if part_header.content_magic!= self.header.content_magic {
|
||||
proxmox::io_bail!("got wrong part content magic");
|
||||
proxmox_sys::io_bail!("got wrong part content magic");
|
||||
}
|
||||
|
||||
let expect_part_number = self.header.part_number + 1;
|
||||
|
||||
if part_header.part_number != expect_part_number {
|
||||
proxmox::io_bail!("got wrong part number ({} != {})",
|
||||
proxmox_sys::io_bail!("got wrong part number ({} != {})",
|
||||
part_header.part_number, expect_part_number);
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ impl <'a> Read for MultiVolumeReader<'a> {
|
||||
|
||||
Ok(())
|
||||
}).map_err(|err| {
|
||||
proxmox::io_format_err!("multi-volume read content header failed: {}", err)
|
||||
proxmox_sys::io_format_err!("multi-volume read content header failed: {}", err)
|
||||
})?;
|
||||
}
|
||||
|
||||
|
@ -53,16 +53,16 @@ impl <'a> TapeWrite for MultiVolumeWriter<'a> {
|
||||
fn write_all(&mut self, buf: &[u8]) -> Result<bool, std::io::Error> {
|
||||
|
||||
if self.finished {
|
||||
proxmox::io_bail!("multi-volume writer already finished: internal error");
|
||||
proxmox_sys::io_bail!("multi-volume writer already finished: internal error");
|
||||
}
|
||||
|
||||
if self.got_leom {
|
||||
if !self.wrote_header {
|
||||
proxmox::io_bail!("multi-volume writer: got LEOM before writing anything - internal error");
|
||||
proxmox_sys::io_bail!("multi-volume writer: got LEOM before writing anything - internal error");
|
||||
}
|
||||
let mut writer = match self.writer.take() {
|
||||
Some(writer) => writer,
|
||||
None => proxmox::io_bail!("multi-volume writer: no writer -internal error"),
|
||||
None => proxmox_sys::io_bail!("multi-volume writer: no writer -internal error"),
|
||||
};
|
||||
self.bytes_written = writer.bytes_written();
|
||||
writer.finish(true)?;
|
||||
@ -70,11 +70,11 @@ impl <'a> TapeWrite for MultiVolumeWriter<'a> {
|
||||
|
||||
if self.writer.is_none() {
|
||||
if self.header.part_number >= 255 {
|
||||
proxmox::io_bail!("multi-volume writer: too many parts");
|
||||
proxmox_sys::io_bail!("multi-volume writer: too many parts");
|
||||
}
|
||||
self.writer = Some(
|
||||
(self.next_writer_fn)()
|
||||
.map_err(|err| proxmox::io_format_err!("multi-volume get next volume failed: {}", err))?
|
||||
.map_err(|err| proxmox_sys::io_format_err!("multi-volume get next volume failed: {}", err))?
|
||||
);
|
||||
self.got_leom = false;
|
||||
self.wrote_header = false;
|
||||
@ -107,12 +107,12 @@ impl <'a> TapeWrite for MultiVolumeWriter<'a> {
|
||||
|
||||
fn finish(&mut self, incomplete: bool) -> Result<bool, std::io::Error> {
|
||||
if incomplete {
|
||||
proxmox::io_bail!(
|
||||
proxmox_sys::io_bail!(
|
||||
"incomplete flag makes no sense for multi-volume stream: internal error");
|
||||
}
|
||||
|
||||
match self.writer.take() {
|
||||
None if self.finished => proxmox::io_bail!(
|
||||
None if self.finished => proxmox_sys::io_bail!(
|
||||
"multi-volume writer already finished: internal error"),
|
||||
None => Ok(false),
|
||||
Some(ref mut writer) => {
|
||||
|
@ -2,7 +2,7 @@ use std::io::{Read, Write};
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
|
||||
use proxmox::sys::error::SysError;
|
||||
use proxmox_sys::error::SysError;
|
||||
use proxmox_uuid::Uuid;
|
||||
|
||||
use pbs_tape::{
|
||||
@ -58,14 +58,14 @@ pub fn tape_write_snapshot_archive<'a>(
|
||||
for filename in file_list.iter() {
|
||||
|
||||
let mut file = snapshot_reader.open_file(filename)
|
||||
.map_err(|err| proxmox::io_format_err!("open file '{}' failed - {}", filename, err))?;
|
||||
.map_err(|err| proxmox_sys::io_format_err!("open file '{}' failed - {}", filename, err))?;
|
||||
let metadata = file.metadata()?;
|
||||
let file_size = metadata.len();
|
||||
|
||||
let metadata: pxar::Metadata = metadata.into();
|
||||
|
||||
if !metadata.is_regular_file() {
|
||||
proxmox::io_bail!("file '{}' is not a regular file", filename);
|
||||
proxmox_sys::io_bail!("file '{}' is not a regular file", filename);
|
||||
}
|
||||
|
||||
let mut remaining = file_size;
|
||||
@ -73,14 +73,14 @@ pub fn tape_write_snapshot_archive<'a>(
|
||||
while remaining != 0 {
|
||||
let got = file.read(&mut file_copy_buffer[..])?;
|
||||
if got as u64 > remaining {
|
||||
proxmox::io_bail!("file '{}' changed while reading", filename);
|
||||
proxmox_sys::io_bail!("file '{}' changed while reading", filename);
|
||||
}
|
||||
out.write_all(&file_copy_buffer[..got])?;
|
||||
remaining -= got as u64;
|
||||
|
||||
}
|
||||
if remaining > 0 {
|
||||
proxmox::io_bail!("file '{}' shrunk while reading", filename);
|
||||
proxmox_sys::io_bail!("file '{}' shrunk while reading", filename);
|
||||
}
|
||||
}
|
||||
encoder.finish()?;
|
||||
|
@ -30,7 +30,7 @@ use anyhow::{bail, Error};
|
||||
use serde::{Serialize, Deserialize};
|
||||
use serde_json::json;
|
||||
|
||||
use proxmox::tools::fs::{replace_file, file_get_json, CreateOptions};
|
||||
use proxmox_sys::fs::{replace_file, file_get_json, CreateOptions};
|
||||
use proxmox_uuid::Uuid;
|
||||
|
||||
use proxmox_time::compute_next_event;
|
||||
|
@ -8,10 +8,10 @@ use std::collections::{HashSet, HashMap};
|
||||
use anyhow::{bail, format_err, Error};
|
||||
use endian_trait::Endian;
|
||||
|
||||
use pbs_tools::fs::read_subdir;
|
||||
use proxmox_sys::fs::read_subdir;
|
||||
use pbs_datastore::backup_info::BackupDir;
|
||||
|
||||
use proxmox::tools::fs::{
|
||||
use proxmox_sys::fs::{
|
||||
fchown,
|
||||
create_path,
|
||||
CreateOptions,
|
||||
@ -541,7 +541,7 @@ impl MediaCatalog {
|
||||
};
|
||||
|
||||
if self.log_to_stdout {
|
||||
println!("C|{}", proxmox::tools::digest_to_hex(digest));
|
||||
println!("C|{}", hex::encode(digest));
|
||||
}
|
||||
|
||||
self.pending.push(b'C');
|
||||
|
@ -3,7 +3,7 @@ use std::io::{BufRead, BufReader};
|
||||
|
||||
use anyhow::{format_err, bail, Error};
|
||||
|
||||
use proxmox::tools::fs::CreateOptions;
|
||||
use proxmox_sys::fs::CreateOptions;
|
||||
|
||||
use crate::tape::{MediaCatalog, MediaId};
|
||||
|
||||
@ -98,7 +98,7 @@ fn write_snapshot_cache(
|
||||
.owner(backup_user.uid)
|
||||
.group(backup_user.gid);
|
||||
|
||||
proxmox::tools::fs::replace_file(
|
||||
proxmox_sys::fs::replace_file(
|
||||
cache_path,
|
||||
data.as_bytes(),
|
||||
options,
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
use anyhow::{format_err, Error};
|
||||
|
||||
use proxmox::tools::fs::{
|
||||
use proxmox_sys::fs::{
|
||||
create_path,
|
||||
CreateOptions,
|
||||
};
|
||||
|
@ -554,7 +554,7 @@ fn write_chunk_archive<'a>(
|
||||
Some(Err(err)) => bail!("{}", err),
|
||||
};
|
||||
|
||||
//println!("CHUNK {} size {}", proxmox::tools::digest_to_hex(digest), blob.raw_size());
|
||||
//println!("CHUNK {} size {}", hex::encode(digest), blob.raw_size());
|
||||
|
||||
match writer.try_write_chunk(&digest, &blob) {
|
||||
Ok(true) => {
|
||||
|
@ -58,7 +58,7 @@ impl NewChunksIterator {
|
||||
};
|
||||
|
||||
let blob = datastore.load_chunk(&digest)?;
|
||||
//println!("LOAD CHUNK {}", proxmox::tools::digest_to_hex(&digest));
|
||||
//println!("LOAD CHUNK {}", hex::encode(&digest));
|
||||
match tx.send(Ok(Some((digest, blob)))) {
|
||||
Ok(()) => {},
|
||||
Err(err) => {
|
||||
|
Reference in New Issue
Block a user