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:
Dietmar Maurer
2021-11-23 17:57:00 +01:00
parent bd00ff10e4
commit 25877d05ac
201 changed files with 627 additions and 1535 deletions

View File

@ -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};

View File

@ -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;

View File

@ -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},

View File

@ -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);

View File

@ -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)."),
}
}

View File

@ -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(())
});

View File

@ -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"),
}
}

View File

@ -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)
})?;
}

View File

@ -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) => {

View File

@ -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()?;

View File

@ -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;

View File

@ -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');

View File

@ -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,

View File

@ -2,7 +2,7 @@
use anyhow::{format_err, Error};
use proxmox::tools::fs::{
use proxmox_sys::fs::{
create_path,
CreateOptions,
};

View File

@ -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) => {

View File

@ -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) => {