tape: use type Uuid instead of String
This commit is contained in:
		@ -6,6 +6,7 @@ use serde::{Serialize, Deserialize};
 | 
			
		||||
use proxmox::{
 | 
			
		||||
    api::{api, Router, SubdirMap},
 | 
			
		||||
    list_subdirs_api_method,
 | 
			
		||||
    tools::Uuid,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
use crate::{
 | 
			
		||||
@ -17,6 +18,8 @@ use crate::{
 | 
			
		||||
        BACKUP_TYPE_SCHEMA,
 | 
			
		||||
        MEDIA_POOL_NAME_SCHEMA,
 | 
			
		||||
        MEDIA_LABEL_SCHEMA,
 | 
			
		||||
        MEDIA_UUID_SCHEMA,
 | 
			
		||||
        MEDIA_SET_UUID_SCHEMA,
 | 
			
		||||
        MediaPoolConfig,
 | 
			
		||||
        MediaListEntry,
 | 
			
		||||
        MediaStatus,
 | 
			
		||||
@ -92,7 +95,7 @@ pub async fn list_media(pool: Option<String>) -> Result<Vec<MediaListEntry>, Err
 | 
			
		||||
            let expired = pool.media_is_expired(&media, current_time);
 | 
			
		||||
 | 
			
		||||
            let media_set_uuid = media.media_set_label()
 | 
			
		||||
                .map(|set| set.uuid.to_string());
 | 
			
		||||
                .map(|set| set.uuid.clone());
 | 
			
		||||
 | 
			
		||||
            let seq_nr = media.media_set_label()
 | 
			
		||||
                .map(|set| set.seq_nr);
 | 
			
		||||
@ -111,7 +114,7 @@ pub async fn list_media(pool: Option<String>) -> Result<Vec<MediaListEntry>, Err
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            list.push(MediaListEntry {
 | 
			
		||||
                uuid: media.uuid().to_string(),
 | 
			
		||||
                uuid: media.uuid().clone(),
 | 
			
		||||
                label_text: media.label_text().to_string(),
 | 
			
		||||
                ctime: media.ctime(),
 | 
			
		||||
                pool: Some(pool_name.to_string()),
 | 
			
		||||
@ -140,7 +143,7 @@ pub async fn list_media(pool: Option<String>) -> Result<Vec<MediaListEntry>, Err
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            list.push(MediaListEntry {
 | 
			
		||||
                uuid: media_id.label.uuid.to_string(),
 | 
			
		||||
                uuid: media_id.label.uuid.clone(),
 | 
			
		||||
                ctime: media_id.label.ctime,
 | 
			
		||||
                label_text: media_id.label.label_text.to_string(),
 | 
			
		||||
                location,
 | 
			
		||||
@ -212,13 +215,11 @@ pub fn destroy_media(label_text: String, force: Option<bool>,) -> Result<(), Err
 | 
			
		||||
            optional: true,
 | 
			
		||||
        },
 | 
			
		||||
        "media": {
 | 
			
		||||
            description: "Filter by media UUID.",
 | 
			
		||||
            type: String,
 | 
			
		||||
            schema: MEDIA_UUID_SCHEMA,
 | 
			
		||||
            optional: true,
 | 
			
		||||
        },
 | 
			
		||||
        "media-set": {
 | 
			
		||||
            description: "Filter by media set UUID.",
 | 
			
		||||
            type: String,
 | 
			
		||||
            schema: MEDIA_SET_UUID_SCHEMA,
 | 
			
		||||
            optional: true,
 | 
			
		||||
        },
 | 
			
		||||
        "backup-type": {
 | 
			
		||||
@ -237,8 +238,8 @@ pub fn destroy_media(label_text: String, force: Option<bool>,) -> Result<(), Err
 | 
			
		||||
pub struct MediaContentListFilter {
 | 
			
		||||
    pub pool: Option<String>,
 | 
			
		||||
    pub label_text: Option<String>,
 | 
			
		||||
    pub media: Option<String>,
 | 
			
		||||
    pub media_set: Option<String>,
 | 
			
		||||
    pub media: Option<Uuid>,
 | 
			
		||||
    pub media_set: Option<Uuid>,
 | 
			
		||||
    pub backup_type: Option<String>,
 | 
			
		||||
    pub backup_id: Option<String>,
 | 
			
		||||
}
 | 
			
		||||
@ -270,9 +271,6 @@ pub fn list_content(
 | 
			
		||||
    let status_path = Path::new(TAPE_STATUS_DIR);
 | 
			
		||||
    let inventory = Inventory::load(status_path)?;
 | 
			
		||||
 | 
			
		||||
    let media_uuid = filter.media.and_then(|s| s.parse().ok());
 | 
			
		||||
    let media_set_uuid = filter.media_set.and_then(|s| s.parse().ok());
 | 
			
		||||
 | 
			
		||||
    let mut list = Vec::new();
 | 
			
		||||
 | 
			
		||||
    for media_id in inventory.list_used_media() {
 | 
			
		||||
@ -286,11 +284,11 @@ pub fn list_content(
 | 
			
		||||
            if &set.pool != pool { continue; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if let Some(ref media_uuid) = media_uuid {
 | 
			
		||||
        if let Some(ref media_uuid) = filter.media {
 | 
			
		||||
            if &media_id.label.uuid != media_uuid { continue; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if let Some(ref media_set_uuid) = media_set_uuid {
 | 
			
		||||
        if let Some(ref media_set_uuid) = filter.media_set {
 | 
			
		||||
            if &set.uuid != media_set_uuid { continue; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -313,11 +311,11 @@ pub fn list_content(
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            list.push(MediaContentEntry {
 | 
			
		||||
                uuid: media_id.label.uuid.to_string(),
 | 
			
		||||
                uuid: media_id.label.uuid.clone(),
 | 
			
		||||
                label_text: media_id.label.label_text.to_string(),
 | 
			
		||||
                pool: set.pool.clone(),
 | 
			
		||||
                media_set_name: media_set_name.clone(),
 | 
			
		||||
                media_set_uuid: set.uuid.to_string(),
 | 
			
		||||
                media_set_uuid: set.uuid.clone(),
 | 
			
		||||
                seq_nr: set.seq_nr,
 | 
			
		||||
                snapshot: snapshot.to_owned(),
 | 
			
		||||
                backup_time: backup_dir.backup_time(),
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user