move drive config to pbs_config workspace
Also moved the tape type definitions to pbs_api_types.
This commit is contained in:
@ -55,7 +55,7 @@ fn main() -> Result<(), Error> {
|
||||
let text = match arg.as_ref() {
|
||||
"apidata.js" => generate_api_tree(),
|
||||
"datastore.cfg" => dump_section_config(&config::datastore::CONFIG),
|
||||
"tape.cfg" => dump_section_config(&config::drive::CONFIG),
|
||||
"tape.cfg" => dump_section_config(&pbs_config::drive::CONFIG),
|
||||
"tape-job.cfg" => dump_section_config(&config::tape_job::CONFIG),
|
||||
"user.cfg" => dump_section_config(&config::user::CONFIG),
|
||||
"remote.cfg" => dump_section_config(&pbs_config::remote::CONFIG),
|
||||
|
@ -30,6 +30,23 @@ use proxmox::{
|
||||
},
|
||||
};
|
||||
|
||||
use pbs_api_types::{
|
||||
LTO_DRIVE_PATH_SCHEMA, DRIVE_NAME_SCHEMA, LtoTapeDrive,
|
||||
};
|
||||
use pbs_config::drive::complete_drive_name;
|
||||
|
||||
use proxmox_backup::{
|
||||
tape::{
|
||||
complete_drive_path,
|
||||
lto_tape_device_list,
|
||||
drive::{
|
||||
TapeDriver,
|
||||
LtoTapeHandle,
|
||||
open_lto_tape_device,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
pub const FILE_MARK_COUNT_SCHEMA: Schema =
|
||||
IntegerSchema::new("File mark count.")
|
||||
.minimum(1)
|
||||
@ -57,31 +74,10 @@ pub const DRIVE_OPTION_LIST_SCHEMA: Schema =
|
||||
.min_length(1)
|
||||
.schema();
|
||||
|
||||
use proxmox_backup::{
|
||||
config::{
|
||||
self,
|
||||
drive::complete_drive_name,
|
||||
},
|
||||
api2::types::{
|
||||
LTO_DRIVE_PATH_SCHEMA,
|
||||
DRIVE_NAME_SCHEMA,
|
||||
LtoTapeDrive,
|
||||
},
|
||||
tape::{
|
||||
complete_drive_path,
|
||||
lto_tape_device_list,
|
||||
drive::{
|
||||
TapeDriver,
|
||||
LtoTapeHandle,
|
||||
open_lto_tape_device,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
fn get_tape_handle(param: &Value) -> Result<LtoTapeHandle, Error> {
|
||||
|
||||
if let Some(name) = param["drive"].as_str() {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let drive: LtoTapeDrive = config.lookup("lto", &name)?;
|
||||
eprintln!("using device {}", drive.path);
|
||||
return LtoTapeHandle::new(open_lto_tape_device(&drive.path)?);
|
||||
@ -93,7 +89,7 @@ fn get_tape_handle(param: &Value) -> Result<LtoTapeHandle, Error> {
|
||||
}
|
||||
|
||||
if let Ok(name) = std::env::var("PROXMOX_TAPE_DRIVE") {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let drive: LtoTapeDrive = config.lookup("lto", &name)?;
|
||||
eprintln!("using device {}", drive.path);
|
||||
return LtoTapeHandle::new(open_lto_tape_device(&drive.path)?);
|
||||
@ -104,7 +100,7 @@ fn get_tape_handle(param: &Value) -> Result<LtoTapeHandle, Error> {
|
||||
return LtoTapeHandle::new(open_lto_tape_device(&device)?);
|
||||
}
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let mut drive_names = Vec::new();
|
||||
for (name, (section_type, _)) in config.sections.iter() {
|
||||
|
@ -25,6 +25,8 @@ use proxmox::{
|
||||
},
|
||||
};
|
||||
|
||||
use pbs_config::drive::complete_changer_name;
|
||||
|
||||
use proxmox_backup::{
|
||||
tools::sgutils2::{
|
||||
scsi_inquiry,
|
||||
@ -43,18 +45,12 @@ use proxmox_backup::{
|
||||
sg_pt_changer,
|
||||
},
|
||||
},
|
||||
config::{
|
||||
self,
|
||||
drive::{
|
||||
complete_changer_name,
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
fn get_changer_handle(param: &Value) -> Result<File, Error> {
|
||||
|
||||
if let Some(name) = param["changer"].as_str() {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let changer_config: ScsiTapeChanger = config.lookup("changer", &name)?;
|
||||
eprintln!("using device {}", changer_config.path);
|
||||
return sg_pt_changer::open(&changer_config.path);
|
||||
@ -66,7 +62,7 @@ fn get_changer_handle(param: &Value) -> Result<File, Error> {
|
||||
}
|
||||
|
||||
if let Ok(name) = std::env::var("PROXMOX_TAPE_DRIVE") {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let drive: LtoTapeDrive = config.lookup("lto", &name)?;
|
||||
if let Some(changer) = drive.changer {
|
||||
let changer_config: ScsiTapeChanger = config.lookup("changer", &changer)?;
|
||||
|
@ -21,6 +21,8 @@ use pbs_tools::format::{
|
||||
render_bytes_human_readable,
|
||||
};
|
||||
|
||||
use pbs_config::drive::complete_drive_name;
|
||||
|
||||
use proxmox_backup::{
|
||||
api2::{
|
||||
self,
|
||||
@ -36,9 +38,7 @@ use proxmox_backup::{
|
||||
},
|
||||
},
|
||||
config::{
|
||||
self,
|
||||
datastore::complete_datastore_name,
|
||||
drive::complete_drive_name,
|
||||
media_pool::complete_pool_name,
|
||||
},
|
||||
tape::{
|
||||
@ -121,7 +121,7 @@ async fn format_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -154,7 +154,7 @@ async fn rewind(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -187,7 +187,7 @@ async fn eject_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -223,7 +223,7 @@ async fn load_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -253,7 +253,7 @@ async fn load_media(mut param: Value) -> Result<(), Error> {
|
||||
/// Export media with specified label
|
||||
async fn export_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -283,7 +283,7 @@ async fn export_media(mut param: Value) -> Result<(), Error> {
|
||||
/// Load media from the specified slot
|
||||
async fn load_media_from_slot(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -320,7 +320,7 @@ async fn unload_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -360,7 +360,7 @@ async fn label_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -398,7 +398,7 @@ async fn read_label(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -458,7 +458,7 @@ async fn inventory(
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
let do_read = read_labels.unwrap_or(false) || read_all_labels.unwrap_or(false);
|
||||
@ -516,7 +516,7 @@ async fn barcode_label_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -543,7 +543,7 @@ async fn barcode_label_media(mut param: Value) -> Result<(), Error> {
|
||||
/// Move to end of media (MTEOM, used to debug)
|
||||
fn move_to_eom(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -573,7 +573,7 @@ fn move_to_eom(mut param: Value) -> Result<(), Error> {
|
||||
/// method is expected to fails when we reach EOT.
|
||||
fn debug_scan(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -655,7 +655,7 @@ async fn cartridge_memory(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -696,7 +696,7 @@ async fn volume_statistics(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -734,7 +734,7 @@ async fn status(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -794,7 +794,7 @@ async fn clean_drive(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
@ -855,7 +855,7 @@ async fn backup(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
param["drive"] = extract_drive_name(&mut param, &config)?.into();
|
||||
|
||||
@ -910,7 +910,7 @@ async fn restore(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
param["drive"] = extract_drive_name(&mut param, &config)?.into();
|
||||
|
||||
@ -957,7 +957,7 @@ async fn catalog_media(mut param: Value) -> Result<(), Error> {
|
||||
|
||||
let output_format = extract_output_format(&mut param);
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let drive = extract_drive_name(&mut param, &config)?;
|
||||
|
||||
|
@ -11,6 +11,11 @@ use proxmox::{
|
||||
},
|
||||
};
|
||||
|
||||
use pbs_config::drive::{
|
||||
complete_drive_name,
|
||||
complete_changer_name,
|
||||
};
|
||||
|
||||
use proxmox_backup::{
|
||||
api2::{
|
||||
self,
|
||||
@ -20,16 +25,7 @@ use proxmox_backup::{
|
||||
},
|
||||
tape::{
|
||||
complete_changer_path,
|
||||
drive::{
|
||||
media_changer,
|
||||
},
|
||||
},
|
||||
config::{
|
||||
self,
|
||||
drive::{
|
||||
complete_drive_name,
|
||||
complete_changer_name,
|
||||
}
|
||||
drive::media_changer,
|
||||
},
|
||||
};
|
||||
|
||||
@ -232,7 +228,7 @@ async fn get_status(
|
||||
rpcenv: &mut dyn RpcEnvironment,
|
||||
) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
param["name"] = lookup_changer_name(¶m, &config)?.into();
|
||||
|
||||
@ -295,7 +291,7 @@ pub async fn transfer(
|
||||
rpcenv: &mut dyn RpcEnvironment,
|
||||
) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
param["name"] = lookup_changer_name(¶m, &config)?.into();
|
||||
|
||||
|
@ -10,21 +10,16 @@ use proxmox::{
|
||||
},
|
||||
};
|
||||
|
||||
use proxmox_backup::{
|
||||
api2::{
|
||||
self,
|
||||
types::{
|
||||
DRIVE_NAME_SCHEMA,
|
||||
},
|
||||
},
|
||||
tape::complete_drive_path,
|
||||
config::drive::{
|
||||
complete_drive_name,
|
||||
complete_changer_name,
|
||||
complete_lto_drive_name,
|
||||
},
|
||||
use pbs_api_types::DRIVE_NAME_SCHEMA;
|
||||
|
||||
use pbs_config::drive::{
|
||||
complete_drive_name,
|
||||
complete_changer_name,
|
||||
complete_lto_drive_name,
|
||||
};
|
||||
|
||||
use proxmox_backup::{api2, tape::complete_drive_path};
|
||||
|
||||
pub fn drive_commands() -> CommandLineInterface {
|
||||
|
||||
let cmd_def = CliCommandMap::new()
|
||||
|
@ -16,7 +16,6 @@ use pbs_datastore::Kdf;
|
||||
use pbs_datastore::paperkey::{PaperkeyFormat, generate_paper_key};
|
||||
|
||||
use proxmox_backup::{
|
||||
config,
|
||||
api2::{
|
||||
self,
|
||||
types::{
|
||||
@ -208,7 +207,7 @@ async fn restore_key(
|
||||
rpcenv: &mut dyn RpcEnvironment,
|
||||
) -> Result<(), Error> {
|
||||
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
param["drive"] = crate::extract_drive_name(&mut param, &config)?.into();
|
||||
|
||||
if !tty::stdin_isatty() {
|
||||
|
@ -10,18 +10,14 @@ use proxmox::{
|
||||
},
|
||||
};
|
||||
|
||||
use pbs_api_types::{
|
||||
MEDIA_POOL_NAME_SCHEMA, CHANGER_NAME_SCHEMA, MediaStatus, MediaListEntry,
|
||||
MediaContentListFilter,
|
||||
};
|
||||
use pbs_config::drive::complete_changer_name;
|
||||
|
||||
use proxmox_backup::{
|
||||
api2::{
|
||||
self,
|
||||
types::{
|
||||
MEDIA_POOL_NAME_SCHEMA,
|
||||
CHANGER_NAME_SCHEMA,
|
||||
MediaStatus,
|
||||
MediaListEntry,
|
||||
},
|
||||
tape::media::MediaContentListFilter,
|
||||
},
|
||||
config::drive::complete_changer_name,
|
||||
api2,
|
||||
tape::{
|
||||
complete_media_label_text,
|
||||
complete_media_uuid,
|
||||
|
@ -18,22 +18,18 @@ use proxmox::{
|
||||
tools::Uuid,
|
||||
};
|
||||
|
||||
use pbs_api_types::Fingerprint;
|
||||
use pbs_api_types::{
|
||||
Fingerprint, LTO_DRIVE_PATH_SCHEMA, DRIVE_NAME_SCHEMA, TAPE_ENCRYPTION_KEY_FINGERPRINT_SCHEMA,
|
||||
MEDIA_SET_UUID_SCHEMA, LtoTapeDrive,
|
||||
};
|
||||
|
||||
use proxmox_backup::{
|
||||
config,
|
||||
api2::types::{
|
||||
LTO_DRIVE_PATH_SCHEMA,
|
||||
DRIVE_NAME_SCHEMA,
|
||||
TAPE_ENCRYPTION_KEY_FINGERPRINT_SCHEMA,
|
||||
MEDIA_SET_UUID_SCHEMA,
|
||||
LtoTapeDrive,
|
||||
},
|
||||
tape::{
|
||||
drive::{
|
||||
TapeDriver,
|
||||
LtoTapeHandle,
|
||||
open_lto_tape_device,
|
||||
open_lto_tape_drive,
|
||||
check_tape_is_lto_tape_device,
|
||||
},
|
||||
},
|
||||
@ -42,10 +38,10 @@ use proxmox_backup::{
|
||||
fn get_tape_handle(param: &Value) -> Result<LtoTapeHandle, Error> {
|
||||
|
||||
let handle = if let Some(name) = param["drive"].as_str() {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let drive: LtoTapeDrive = config.lookup("lto", &name)?;
|
||||
eprintln!("using device {}", drive.path);
|
||||
drive.open()?
|
||||
open_lto_tape_drive(&drive)?
|
||||
} else if let Some(device) = param["device"].as_str() {
|
||||
eprintln!("using device {}", device);
|
||||
LtoTapeHandle::new(open_lto_tape_device(&device)?)?
|
||||
@ -56,12 +52,12 @@ fn get_tape_handle(param: &Value) -> Result<LtoTapeHandle, Error> {
|
||||
check_tape_is_lto_tape_device(&file)?;
|
||||
LtoTapeHandle::new(file)?
|
||||
} else if let Ok(name) = std::env::var("PROXMOX_TAPE_DRIVE") {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
let drive: LtoTapeDrive = config.lookup("lto", &name)?;
|
||||
eprintln!("using device {}", drive.path);
|
||||
drive.open()?
|
||||
open_lto_tape_drive(&drive)?
|
||||
} else {
|
||||
let (config, _digest) = config::drive::config()?;
|
||||
let (config, _digest) = pbs_config::drive::config()?;
|
||||
|
||||
let mut drive_names = Vec::new();
|
||||
for (name, (section_type, _)) in config.sections.iter() {
|
||||
@ -73,7 +69,7 @@ fn get_tape_handle(param: &Value) -> Result<LtoTapeHandle, Error> {
|
||||
let name = drive_names[0];
|
||||
let drive: LtoTapeDrive = config.lookup("lto", &name)?;
|
||||
eprintln!("using device {}", drive.path);
|
||||
drive.open()?
|
||||
open_lto_tape_drive(&drive)?
|
||||
} else {
|
||||
bail!("no drive/device specified");
|
||||
}
|
||||
|
Reference in New Issue
Block a user