diff --git a/cmdline/standalone_cli_tools/common/CmdLineArgs.cpp b/cmdline/standalone_cli_tools/common/CmdLineArgs.cpp index 4413ea365cdf33ef1afa16749f1d25827fd37679..752f0e817a7b68bf083bb72ad6c169ab6b69a250 100644 --- a/cmdline/standalone_cli_tools/common/CmdLineArgs.cpp +++ b/cmdline/standalone_cli_tools/common/CmdLineArgs.cpp @@ -35,7 +35,7 @@ namespace cliTool{ static struct option restoreFilesLongOption[] = { {"id", required_argument, nullptr, 'I'}, {"instance", required_argument, nullptr, 'i'}, - {"fxid", required_argument, nullptr, 'f'}, + {"fid", required_argument, nullptr, 'f'}, {"filename", required_argument, nullptr, 'F'}, {"vid", required_argument, nullptr, 'v'}, {"copynb", required_argument, nullptr, 'c'}, @@ -117,10 +117,10 @@ m_help(false), m_debug(false), m_standaloneCliTool{standaloneCliTool} { } case 'f': { - if (! m_fxIds) { - m_fxIds = std::list<std::string>(); + if (! m_fids) { + m_fids = std::list<std::string>(); } - m_fxIds->push_back(optarg); + m_fids->push_back(optarg); break; } case 'F': @@ -211,7 +211,10 @@ void CmdLineArgs::readIdListFromFile(const std::string &filename) { while(file >> line) { switch (m_standaloneCliTool) { case StandaloneCliTool::RESTORE_FILES: - m_archiveFileIds.value().push_back(line); + if (!m_fids) { + m_fids = std::list<std::string>(); + } + m_fids.value().push_back(line); break; case StandaloneCliTool::CTA_VERIFY_FILE: if (!m_archiveFileIds) { @@ -239,8 +242,8 @@ void CmdLineArgs::printUsage(std::ostream &os) const { case StandaloneCliTool::RESTORE_FILES: os << " Usage:" << std::endl << " cta-restore-deleted-files [--id/-I <archive_file_id>] [--instance/-i <disk_instance>]" << std::endl << - " [--fxid/-f <eos_fxid>] [--fxidfile/-F <filename>]" << std::endl << - " [--vid/-v <vid>] [--copynb/-c <copy_number>] [--debug/-d]" << std::endl << std::endl; + " [--fid/-f <eos_fxid>] [--filename/-F <filename>]" << std::endl << + " [--vid/-v <vid>] [--copynb/-c <copy_number>] [--debug/-d]" << std::endl; break; case StandaloneCliTool::CTA_SEND_EVENT: os << " Usage:" << std::endl << diff --git a/cmdline/standalone_cli_tools/common/CmdLineArgs.hpp b/cmdline/standalone_cli_tools/common/CmdLineArgs.hpp index 5602f1dada07202d61fee652ffedf05c087f7d47..eb8c3f65e208c37474fc6e00986cece33d136b0f 100644 --- a/cmdline/standalone_cli_tools/common/CmdLineArgs.hpp +++ b/cmdline/standalone_cli_tools/common/CmdLineArgs.hpp @@ -67,9 +67,9 @@ struct CmdLineArgs { std::optional<std::string> m_diskInstance; /** - * Fxids of the files to restore + * Fids of the files to restore */ - std::optional<std::list<std::string>> m_fxIds; + std::optional<std::list<std::string>> m_fids; /** * Vid of the tape of the files to restore diff --git a/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp b/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp index 100e06aec469d14f4b178e4c8f8c6c0693186fee..0feb2328957c376dab9c67e6889f1430eb815544 100644 --- a/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp +++ b/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp @@ -81,6 +81,13 @@ void IStreamBuffer<cta::xrd::Data>::DataCallback(cta::xrd::Data record) const deletedTapeFiles.push_back(item); } break; + case Data::kTflsItem: + { + const auto item = record.tfls_item(); + const auto instanceAndFid = std::make_pair(item.df().disk_instance(), item.df().disk_id()); + listedTapeFiles.push_back(instanceAndFid); + } + break; default: throw std::runtime_error("Received invalid stream data from CTA Frontend for the cta-restore-deleted-files command."); } @@ -183,7 +190,7 @@ void RestoreFilesCmd::readAndSetConfiguration( m_vid = cmdLineArgs.m_vid; m_diskInstance = cmdLineArgs.m_diskInstance; - m_archiveFileIds = cmdLineArgs.m_archiveFileIds; + m_fids = cmdLineArgs.m_fids; m_copyNumber = cmdLineArgs.m_copyNumber; m_archiveFileId = cmdLineArgs.m_archiveFileId; @@ -193,6 +200,10 @@ void RestoreFilesCmd::readAndSetConfiguration( m_log.setLogMask("INFO"); } + if (m_fids && !m_diskInstance) { + throw XrdSsiPb::UserException("Disk instance must be provided when fids are used as input."); + } + // Set CTA frontend configuration options const std::string cli_config_file = "/etc/cta/cta-cli.conf"; XrdSsiPb::Config cliConfig(cli_config_file, "cta"); @@ -311,12 +322,12 @@ void RestoreFilesCmd::listDeletedFilesCta() const { new_opt->set_key(key); new_opt->set_value(m_copyNumber.value()); } - if (m_archiveFileIds) { + if (m_fids) { std::stringstream ss; auto key = cta::admin::OptionStrList::FILE_ID; auto new_opt = admincmd.add_option_str_list(); new_opt->set_key(key); - for (auto &fid : m_archiveFileIds.value()) { + for (const auto &fid : m_fids.value()) { new_opt->add_item(fid); ss << fid << ","; } diff --git a/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.hpp b/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.hpp index e88a6a4019eb2e215460130beb3bb4b88f65c143..1c269ffdebf9b7cf25848541cf644fded03ab7b5 100644 --- a/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.hpp +++ b/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.hpp @@ -184,7 +184,7 @@ private: /** * Fids of the files to restore */ - std::optional<std::list<std::string>> m_archiveFileIds; + std::optional<std::list<std::string>> m_fids; /** * Vid of the tape of the files to restore