api2/tape/changer: add changer filter to list_drives api call

so that an api user can get the drives belonging to a changer
without having to parse the config listing themselves

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2021-01-28 12:59:41 +01:00 committed by Dietmar Maurer
parent 87f4be7998
commit 18262a88c9
2 changed files with 14 additions and 3 deletions

View File

@ -11,9 +11,9 @@ use crate::{
api2::types::{ api2::types::{
CHANGER_NAME_SCHEMA, CHANGER_NAME_SCHEMA,
DriveListEntry, DriveListEntry,
ScsiTapeChanger,
MtxStatusEntry,
MtxEntryKind, MtxEntryKind,
MtxStatusEntry,
ScsiTapeChanger,
}, },
tape::{ tape::{
TAPE_STATUS_DIR, TAPE_STATUS_DIR,

View File

@ -27,6 +27,7 @@ use crate::{
api2::{ api2::{
types::{ types::{
UPID_SCHEMA, UPID_SCHEMA,
CHANGER_NAME_SCHEMA,
DRIVE_NAME_SCHEMA, DRIVE_NAME_SCHEMA,
MEDIA_LABEL_SCHEMA, MEDIA_LABEL_SCHEMA,
MEDIA_POOL_NAME_SCHEMA, MEDIA_POOL_NAME_SCHEMA,
@ -1100,7 +1101,12 @@ pub fn catalog_media(
#[api( #[api(
input: { input: {
properties: {}, properties: {
changer: {
schema: CHANGER_NAME_SCHEMA,
optional: true,
},
},
}, },
returns: { returns: {
description: "The list of configured drives with model information.", description: "The list of configured drives with model information.",
@ -1112,6 +1118,7 @@ pub fn catalog_media(
)] )]
/// List drives /// List drives
pub fn list_drives( pub fn list_drives(
changer: Option<String>,
_param: Value, _param: Value,
) -> Result<Vec<DriveListEntry>, Error> { ) -> Result<Vec<DriveListEntry>, Error> {
@ -1124,6 +1131,10 @@ pub fn list_drives(
let mut list = Vec::new(); let mut list = Vec::new();
for drive in drive_list { for drive in drive_list {
if changer.is_some() && drive.changer != changer {
continue;
}
let mut entry = DriveListEntry { let mut entry = DriveListEntry {
name: drive.name, name: drive.name,
path: drive.path.clone(), path: drive.path.clone(),