tape: improve export media to directly export from drive, add CLI

This commit is contained in:
Dietmar Maurer
2021-01-10 13:44:44 +01:00
parent c92e3832bf
commit 483da89d03
5 changed files with 135 additions and 32 deletions

View File

@ -236,6 +236,39 @@ async fn load_media(
Ok(())
}
#[api(
input: {
properties: {
drive: {
schema: DRIVE_NAME_SCHEMA,
optional: true,
},
"changer-id": {
schema: MEDIA_LABEL_SCHEMA,
},
},
},
)]
/// Export media with specified label
async fn export_media(
mut param: Value,
rpcenv: &mut dyn RpcEnvironment,
) -> Result<(), Error> {
let (config, _digest) = config::drive::config()?;
param["drive"] = lookup_drive_name(&param, &config)?.into();
let info = &api2::tape::drive::API_METHOD_EXPORT_MEDIA;
match info.handler {
ApiHandler::Async(handler) => (handler)(param, info, rpcenv).await?,
_ => unreachable!(),
};
Ok(())
}
#[api(
input: {
properties: {
@ -932,6 +965,13 @@ fn main() {
CliCommand::new(&API_METHOD_UNLOAD_MEDIA)
.completion_cb("drive", complete_drive_name)
)
.insert(
"export-media",
CliCommand::new(&API_METHOD_EXPORT_MEDIA)
.arg_param(&["changer-id"])
.completion_cb("drive", complete_drive_name)
.completion_cb("changer-id", complete_media_changer_id)
)
;
let mut rpcenv = CliEnvironment::new();