diff --git a/src/bin/proxmox_tape/changer.rs b/src/bin/proxmox_tape/changer.rs index e7a3a959..3a5494a5 100644 --- a/src/bin/proxmox_tape/changer.rs +++ b/src/bin/proxmox_tape/changer.rs @@ -85,7 +85,7 @@ pub fn changer_commands() -> CommandLineInterface { .completion_cb("name", complete_changer_name) ) .insert("transfer", - CliCommand::new(&api2::tape::changer::API_METHOD_TRANSFER) + CliCommand::new(&API_METHOD_TRANSFER) .arg_param(&["name"]) .completion_cb("name", complete_changer_name) ) @@ -258,3 +258,42 @@ async fn get_status( Ok(()) } + +#[api( + input: { + properties: { + name: { + schema: CHANGER_NAME_SCHEMA, + optional: true, + }, + from: { + description: "Source slot number", + type: u64, + minimum: 1, + }, + to: { + description: "Destination slot number", + type: u64, + minimum: 1, + }, + }, + }, +)] +/// Transfers media from one slot to another +pub async fn transfer( + mut param: Value, + rpcenv: &mut dyn RpcEnvironment, +) -> Result<(), Error> { + + let (config, _digest) = config::drive::config()?; + + param["name"] = lookup_changer_name(¶m, &config)?.into(); + + let info = &api2::tape::changer::API_METHOD_TRANSFER; + match info.handler { + ApiHandler::Async(handler) => (handler)(param, info, rpcenv).await?, + _ => unreachable!(), + }; + + Ok(()) +}