From 18262a88c9144fe7ecb1d6e53b018b08ff2e94ae Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 28 Jan 2021 12:59:41 +0100 Subject: [PATCH] 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 --- src/api2/tape/changer.rs | 4 ++-- src/api2/tape/drive.rs | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/api2/tape/changer.rs b/src/api2/tape/changer.rs index 87737d32..84030f8e 100644 --- a/src/api2/tape/changer.rs +++ b/src/api2/tape/changer.rs @@ -11,9 +11,9 @@ use crate::{ api2::types::{ CHANGER_NAME_SCHEMA, DriveListEntry, - ScsiTapeChanger, - MtxStatusEntry, MtxEntryKind, + MtxStatusEntry, + ScsiTapeChanger, }, tape::{ TAPE_STATUS_DIR, diff --git a/src/api2/tape/drive.rs b/src/api2/tape/drive.rs index c86c666e..df7752df 100644 --- a/src/api2/tape/drive.rs +++ b/src/api2/tape/drive.rs @@ -27,6 +27,7 @@ use crate::{ api2::{ types::{ UPID_SCHEMA, + CHANGER_NAME_SCHEMA, DRIVE_NAME_SCHEMA, MEDIA_LABEL_SCHEMA, MEDIA_POOL_NAME_SCHEMA, @@ -1100,7 +1101,12 @@ pub fn catalog_media( #[api( input: { - properties: {}, + properties: { + changer: { + schema: CHANGER_NAME_SCHEMA, + optional: true, + }, + }, }, returns: { description: "The list of configured drives with model information.", @@ -1112,6 +1118,7 @@ pub fn catalog_media( )] /// List drives pub fn list_drives( + changer: Option, _param: Value, ) -> Result, Error> { @@ -1124,6 +1131,10 @@ pub fn list_drives( let mut list = Vec::new(); for drive in drive_list { + if changer.is_some() && drive.changer != changer { + continue; + } + let mut entry = DriveListEntry { name: drive.name, path: drive.path.clone(),