Skip to content
Snippets Groups Projects
Commit 94a72680 authored by Michael Davis's avatar Michael Davis
Browse files

[frontend] Handles "cta-admin tape ls --fidfile <file>" in Frontend

parent dc662d14
No related branches found
No related tags found
No related merge requests found
......@@ -19,8 +19,9 @@
#pragma once
#include <string>
#include <vector>
#include "common/optional.hpp"
#include <common/optional.hpp>
namespace cta {
namespace catalogue {
......@@ -86,6 +87,10 @@ struct TapeSearchCriteria {
*/
optional<bool> readOnly;
/**
* List of disk file IDs to search for.
*/
optional<std::vector<std::string>> diskFileIds;
}; // struct TapeSearchCriteria
} // namespace catalogue
......
......@@ -66,25 +66,26 @@ TapeLsStream::TapeLsStream(const RequestMessage &requestMsg, cta::catalogue::Cat
cta::catalogue::TapeSearchCriteria searchCriteria;
if(!requestMsg.has_flag(OptionBoolean::ALL)) {
bool has_any = false; // set to true if at least one optional option is set
// Get the search criteria from the optional options
searchCriteria.disabled = requestMsg.getOptional(OptionBoolean::DISABLED, &has_any);
searchCriteria.readOnly = requestMsg.getOptional(OptionBoolean::READ_ONLY, &has_any);
searchCriteria.full = requestMsg.getOptional(OptionBoolean::FULL, &has_any);
searchCriteria.capacityInBytes = requestMsg.getOptional(OptionUInt64::CAPACITY, &has_any);
searchCriteria.logicalLibrary = requestMsg.getOptional(OptionString::LOGICAL_LIBRARY, &has_any);
searchCriteria.tapePool = requestMsg.getOptional(OptionString::TAPE_POOL, &has_any);
searchCriteria.vo = requestMsg.getOptional(OptionString::VO, &has_any);
searchCriteria.vid = requestMsg.getOptional(OptionString::VID, &has_any);
searchCriteria.mediaType = requestMsg.getOptional(OptionString::MEDIA_TYPE, &has_any);
searchCriteria.vendor = requestMsg.getOptional(OptionString::VENDOR, &has_any);
if(!has_any) {
throw cta::exception::UserError("Must specify at least one search option, or --all");
}
bool has_any = false; // set to true if at least one optional option is set
// Get the search criteria from the optional options
searchCriteria.disabled = requestMsg.getOptional(OptionBoolean::DISABLED, &has_any);
searchCriteria.readOnly = requestMsg.getOptional(OptionBoolean::READ_ONLY, &has_any);
searchCriteria.full = requestMsg.getOptional(OptionBoolean::FULL, &has_any);
searchCriteria.capacityInBytes = requestMsg.getOptional(OptionUInt64::CAPACITY, &has_any);
searchCriteria.logicalLibrary = requestMsg.getOptional(OptionString::LOGICAL_LIBRARY, &has_any);
searchCriteria.tapePool = requestMsg.getOptional(OptionString::TAPE_POOL, &has_any);
searchCriteria.vo = requestMsg.getOptional(OptionString::VO, &has_any);
searchCriteria.vid = requestMsg.getOptional(OptionString::VID, &has_any);
searchCriteria.mediaType = requestMsg.getOptional(OptionString::MEDIA_TYPE, &has_any);
searchCriteria.vendor = requestMsg.getOptional(OptionString::VENDOR, &has_any);
searchCriteria.diskFileIds = requestMsg.getOptional(OptionStrList::FILE_ID, &has_any);
if(!(requestMsg.has_flag(OptionBoolean::ALL) || has_any)) {
throw cta::exception::UserError("Must specify at least one search option, or --all");
} else if(requestMsg.has_flag(OptionBoolean::ALL) && has_any) {
throw cta::exception::UserError("Cannot specify --all together with other search options, they are mutually exclusive");
}
m_tapeList = m_catalogue.getTapes(searchCriteria);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment