From 5e5ad8f2668a680e43598340fc03fa0d3d0ae2c7 Mon Sep 17 00:00:00 2001 From: Steven Murray <Steven.Murray@cern.ch> Date: Thu, 1 Nov 2018 16:35:49 +0100 Subject: [PATCH] Removed unused method Catalogue::prepareToRetrieveFileByDiskFileId() --- catalogue/Catalogue.hpp | 24 -- catalogue/CatalogueRetryWrapper.hpp | 4 - catalogue/CatalogueTest.cpp | 563 ---------------------------- catalogue/DummyCatalogue.hpp | 1 - catalogue/RdbmsCatalogue.cpp | 59 --- catalogue/RdbmsCatalogue.hpp | 26 -- 6 files changed, 677 deletions(-) diff --git a/catalogue/Catalogue.hpp b/catalogue/Catalogue.hpp index 729063bcd9..a4c926db86 100644 --- a/catalogue/Catalogue.hpp +++ b/catalogue/Catalogue.hpp @@ -188,30 +188,6 @@ public: const common::dataStructures::UserIdentity &user, log::LogContext &lc) = 0; - /** - * Prepares for a file retrieval by returning the information required to - * queue the associated retrieve request(s). - * - * @param diskInstanceName The name of the instance from where the retrieval - * request originated - * @param diskFileId The identifier of the source disk file which is unique - * within it's host disk system. Two files from different disk systems may - * have the same identifier. The combination of diskInstanceName and - * diskFileId must be globally unique, in other words unique within the CTA - * catalogue. - * @param user The user for whom the file is to be retrieved. This will be - * used by the Catalogue to determine the mount policy to be used when - * retrieving the file. - * @param lc The log context. - * - * @return The information required to queue the associated retrieve request(s). - */ - virtual common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFileByDiskFileId( - const std::string &diskInstanceName, - const std::string &diskFileId, - const common::dataStructures::UserIdentity &user, - log::LogContext &lc) = 0; - /** * Notifies the CTA catalogue that the specified tape has been mounted in * order to retrieve files. diff --git a/catalogue/CatalogueRetryWrapper.hpp b/catalogue/CatalogueRetryWrapper.hpp index 38fdc8993a..4e8c6db304 100644 --- a/catalogue/CatalogueRetryWrapper.hpp +++ b/catalogue/CatalogueRetryWrapper.hpp @@ -93,10 +93,6 @@ public: return retryOnLostConnection(m_log, [&]{return m_catalogue->prepareToRetrieveFile(diskInstanceName, archiveFileId, user, lc);}, m_maxTriesToConnect); } - common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFileByDiskFileId(const std::string &diskInstanceName, const std::string &diskFileId, const common::dataStructures::UserIdentity &user, log::LogContext &lc) override { - return retryOnLostConnection(m_log, [&]{return m_catalogue->prepareToRetrieveFileByDiskFileId(diskInstanceName, diskFileId, user, lc);}, m_maxTriesToConnect); - } - void tapeMountedForRetrieve(const std::string &vid, const std::string &drive) override { return retryOnLostConnection(m_log, [&]{return m_catalogue->tapeMountedForRetrieve(vid, drive);}, m_maxTriesToConnect); } diff --git a/catalogue/CatalogueTest.cpp b/catalogue/CatalogueTest.cpp index 6f54606c62..58d415cca3 100644 --- a/catalogue/CatalogueTest.cpp +++ b/catalogue/CatalogueTest.cpp @@ -6477,569 +6477,6 @@ TEST_P(cta_catalogue_CatalogueTest, prepareToRetrieveFileUsingArchiveFileId_disa exception::UserError); } -TEST_P(cta_catalogue_CatalogueTest, prepareToRetrieveFileUsingDiskFileId) { - using namespace cta; - - const std::string diskInstanceName1 = "disk_instance_1"; - const std::string diskInstanceName2 = "disk_instance_2"; - - ASSERT_TRUE(m_catalogue->getTapes().empty()); - - const std::string vid1 = "VID123"; - const std::string vid2 = "VID456"; - const std::string logicalLibraryName = "logical_library_name"; - const std::string tapePoolName = "tape_pool_name"; - const std::string vo = "vo"; - const uint64_t capacityInBytes = (uint64_t)10 * 1000 * 1000 * 1000 * 1000; - const bool disabledValue = false; - const bool fullValue = false; - const std::string createTapeComment = "Create tape"; - - m_catalogue->createLogicalLibrary(m_admin, logicalLibraryName, "Create logical library"); - m_catalogue->createTapePool(m_admin, tapePoolName, vo, 2, true, "Create tape pool"); - m_catalogue->createTape(m_admin, vid1, logicalLibraryName, tapePoolName, capacityInBytes, - disabledValue, fullValue, createTapeComment); - m_catalogue->createTape(m_admin, vid2, logicalLibraryName, tapePoolName, capacityInBytes, - disabledValue, fullValue, createTapeComment); - - const std::list<common::dataStructures::Tape> tapes = m_catalogue->getTapes(); - const std::map<std::string, common::dataStructures::Tape> vidToTape = tapeListToMap(tapes); - { - auto it = vidToTape.find(vid1); - const common::dataStructures::Tape &tape = it->second; - ASSERT_EQ(vid1, tape.vid); - ASSERT_EQ(logicalLibraryName, tape.logicalLibraryName); - ASSERT_EQ(tapePoolName, tape.tapePoolName); - ASSERT_EQ(capacityInBytes, tape.capacityInBytes); - ASSERT_TRUE(disabledValue == tape.disabled); - ASSERT_TRUE(fullValue == tape.full); - ASSERT_FALSE(tape.lbp); - ASSERT_EQ(createTapeComment, tape.comment); - ASSERT_FALSE(tape.labelLog); - ASSERT_FALSE(tape.lastReadLog); - ASSERT_FALSE(tape.lastWriteLog); - - const common::dataStructures::EntryLog creationLog = tape.creationLog; - ASSERT_EQ(m_admin.username, creationLog.username); - ASSERT_EQ(m_admin.host, creationLog.host); - - const common::dataStructures::EntryLog lastModificationLog = - tape.lastModificationLog; - ASSERT_EQ(creationLog, lastModificationLog); - } - { - auto it = vidToTape.find(vid2); - const common::dataStructures::Tape &tape = it->second; - ASSERT_EQ(vid2, tape.vid); - ASSERT_EQ(logicalLibraryName, tape.logicalLibraryName); - ASSERT_EQ(tapePoolName, tape.tapePoolName); - ASSERT_EQ(capacityInBytes, tape.capacityInBytes); - ASSERT_TRUE(disabledValue == tape.disabled); - ASSERT_TRUE(fullValue == tape.full); - ASSERT_FALSE(tape.lbp); - ASSERT_EQ(createTapeComment, tape.comment); - ASSERT_FALSE(tape.labelLog); - ASSERT_FALSE(tape.lastReadLog); - ASSERT_FALSE(tape.lastWriteLog); - - const common::dataStructures::EntryLog creationLog = tape.creationLog; - ASSERT_EQ(m_admin.username, creationLog.username); - ASSERT_EQ(m_admin.host, creationLog.host); - - const common::dataStructures::EntryLog lastModificationLog = - tape.lastModificationLog; - ASSERT_EQ(creationLog, lastModificationLog); - } - - const uint64_t archiveFileId = 1234; - - ASSERT_FALSE(m_catalogue->getArchiveFiles().hasMore()); - ASSERT_THROW(m_catalogue->getArchiveFileById(archiveFileId), exception::Exception); - - common::dataStructures::StorageClass storageClass; - storageClass.diskInstance = diskInstanceName1; - storageClass.name = "storage_class"; - storageClass.nbCopies = 2; - storageClass.comment = "Create storage class"; - m_catalogue->createStorageClass(m_admin, storageClass); - - const uint64_t archiveFileSize = 1; - const std::string tapeDrive = "tape_drive"; - const std::string checksumType = "checksum_type"; - const std::string checksumValue = "checksum_value"; - - const std::string diskFileId = "5678"; - - auto file1WrittenUP=cta::make_unique<cta::catalogue::TapeFileWritten>(); - auto & file1Written = *file1WrittenUP; - std::set<cta::catalogue::TapeItemWrittenPointer> file1WrittenSet; - file1WrittenSet.insert(file1WrittenUP.release()); - file1Written.archiveFileId = archiveFileId; - file1Written.diskInstance = storageClass.diskInstance; - file1Written.diskFileId = diskFileId; - file1Written.diskFilePath = "/public_dir/public_file"; - file1Written.diskFileUser = "public_disk_user"; - file1Written.diskFileGroup = "public_disk_group"; - file1Written.diskFileRecoveryBlob = "opaque_disk_file_recovery_contents"; - file1Written.size = archiveFileSize; - file1Written.checksumType = checksumType; - file1Written.checksumValue = checksumValue; - file1Written.storageClassName = storageClass.name; - file1Written.vid = vid1; - file1Written.fSeq = 1; - file1Written.blockId = 4321; - file1Written.compressedSize = 1; - file1Written.copyNb = 1; - file1Written.tapeDrive = tapeDrive; - m_catalogue->filesWrittenToTape(file1WrittenSet); - - { - const common::dataStructures::ArchiveFile archiveFile = m_catalogue->getArchiveFileById(archiveFileId); - - ASSERT_EQ(file1Written.archiveFileId, archiveFile.archiveFileID); - ASSERT_EQ(file1Written.diskFileId, archiveFile.diskFileId); - ASSERT_EQ(file1Written.size, archiveFile.fileSize); - ASSERT_EQ(file1Written.checksumType, archiveFile.checksumType); - ASSERT_EQ(file1Written.checksumValue, archiveFile.checksumValue); - ASSERT_EQ(file1Written.storageClassName, archiveFile.storageClass); - - ASSERT_EQ(file1Written.diskInstance, archiveFile.diskInstance); - ASSERT_EQ(file1Written.diskFilePath, archiveFile.diskFileInfo.path); - ASSERT_EQ(file1Written.diskFileUser, archiveFile.diskFileInfo.owner); - ASSERT_EQ(file1Written.diskFileGroup, archiveFile.diskFileInfo.group); - ASSERT_EQ(file1Written.diskFileRecoveryBlob, archiveFile.diskFileInfo.recoveryBlob); - - ASSERT_EQ(1, archiveFile.tapeFiles.size()); - auto copyNbToTapeFile1Itor = archiveFile.tapeFiles.find(1); - ASSERT_FALSE(copyNbToTapeFile1Itor == archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile1 = copyNbToTapeFile1Itor->second; - ASSERT_EQ(file1Written.vid, tapeFile1.vid); - ASSERT_EQ(file1Written.fSeq, tapeFile1.fSeq); - ASSERT_EQ(file1Written.blockId, tapeFile1.blockId); - ASSERT_EQ(file1Written.compressedSize, tapeFile1.compressedSize); - ASSERT_EQ(file1Written.checksumType, tapeFile1.checksumType); - ASSERT_EQ(file1Written.checksumValue, tapeFile1.checksumValue); - ASSERT_EQ(file1Written.copyNb, tapeFile1.copyNb); - } - - auto file2WrittenUP=cta::make_unique<cta::catalogue::TapeFileWritten>(); - auto & file2Written = *file2WrittenUP; - std::set<cta::catalogue::TapeItemWrittenPointer> file2WrittenSet; - file2WrittenSet.insert(file2WrittenUP.release()); - file2Written.archiveFileId = file1Written.archiveFileId; - file2Written.diskInstance = file1Written.diskInstance; - file2Written.diskFileId = file1Written.diskFileId; - file2Written.diskFilePath = file1Written.diskFilePath; - file2Written.diskFileUser = file1Written.diskFileUser; - file2Written.diskFileGroup = file1Written.diskFileGroup; - file2Written.diskFileRecoveryBlob = file1Written.diskFileRecoveryBlob; - file2Written.size = archiveFileSize; - file2Written.checksumType = checksumType; - file2Written.checksumValue = checksumValue; - file2Written.storageClassName = storageClass.name; - file2Written.vid = vid2; - file2Written.fSeq = 1; - file2Written.blockId = 4331; - file2Written.compressedSize = 1; - file2Written.copyNb = 2; - file2Written.tapeDrive = tapeDrive; - m_catalogue->filesWrittenToTape(file2WrittenSet); - - { - const common::dataStructures::ArchiveFile archiveFile = m_catalogue->getArchiveFileById(archiveFileId); - - ASSERT_EQ(file2Written.archiveFileId, archiveFile.archiveFileID); - ASSERT_EQ(file2Written.diskFileId, archiveFile.diskFileId); - ASSERT_EQ(file2Written.size, archiveFile.fileSize); - ASSERT_EQ(file2Written.checksumType, archiveFile.checksumType); - ASSERT_EQ(file2Written.checksumValue, archiveFile.checksumValue); - ASSERT_EQ(file2Written.storageClassName, archiveFile.storageClass); - - ASSERT_EQ(file2Written.diskInstance, archiveFile.diskInstance); - ASSERT_EQ(file2Written.diskFilePath, archiveFile.diskFileInfo.path); - ASSERT_EQ(file2Written.diskFileUser, archiveFile.diskFileInfo.owner); - ASSERT_EQ(file2Written.diskFileGroup, archiveFile.diskFileInfo.group); - ASSERT_EQ(file2Written.diskFileRecoveryBlob, archiveFile.diskFileInfo.recoveryBlob); - - ASSERT_EQ(2, archiveFile.tapeFiles.size()); - - auto copyNbToTapeFile1Itor = archiveFile.tapeFiles.find(1); - ASSERT_FALSE(copyNbToTapeFile1Itor == archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile1 = copyNbToTapeFile1Itor->second; - ASSERT_EQ(file1Written.vid, tapeFile1.vid); - ASSERT_EQ(file1Written.fSeq, tapeFile1.fSeq); - ASSERT_EQ(file1Written.blockId, tapeFile1.blockId); - ASSERT_EQ(file1Written.compressedSize, tapeFile1.compressedSize); - ASSERT_EQ(file1Written.checksumType, tapeFile1.checksumType); - ASSERT_EQ(file1Written.checksumValue, tapeFile1.checksumValue); - - auto copyNbToTapeFile2Itor = archiveFile.tapeFiles.find(2); - ASSERT_FALSE(copyNbToTapeFile2Itor == archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile2 = copyNbToTapeFile2Itor->second; - ASSERT_EQ(file2Written.vid, tapeFile2.vid); - ASSERT_EQ(file2Written.fSeq, tapeFile2.fSeq); - ASSERT_EQ(file2Written.blockId, tapeFile2.blockId); - ASSERT_EQ(file2Written.compressedSize, tapeFile2.compressedSize); - ASSERT_EQ(file2Written.checksumType, tapeFile2.checksumType); - ASSERT_EQ(file2Written.checksumValue, tapeFile2.checksumValue); - } - - const std::string mountPolicyName = "mount_policy"; - const uint64_t archivePriority = 1; - const uint64_t minArchiveRequestAge = 2; - const uint64_t retrievePriority = 3; - const uint64_t minRetrieveRequestAge = 4; - const uint64_t maxDrivesAllowed = 5; - - m_catalogue->createMountPolicy( - m_admin, - mountPolicyName, - archivePriority, - minArchiveRequestAge, - retrievePriority, - minRetrieveRequestAge, - maxDrivesAllowed, - "Create mount policy"); - - const std::string comment = "Create mount rule for requester"; - const std::string requesterName = "requester_name"; - m_catalogue->createRequesterMountRule(m_admin, mountPolicyName, diskInstanceName1, requesterName, comment); - - const std::list<common::dataStructures::RequesterMountRule> rules = m_catalogue->getRequesterMountRules(); - ASSERT_EQ(1, rules.size()); - - const common::dataStructures::RequesterMountRule rule = rules.front(); - - ASSERT_EQ(diskInstanceName1, rule.diskInstance); - ASSERT_EQ(requesterName, rule.name); - ASSERT_EQ(mountPolicyName, rule.mountPolicy); - ASSERT_EQ(comment, rule.comment); - ASSERT_EQ(m_admin.username, rule.creationLog.username); - ASSERT_EQ(m_admin.host, rule.creationLog.host); - ASSERT_EQ(rule.creationLog, rule.lastModificationLog); - - log::LogContext dummyLc(m_dummyLog); - - common::dataStructures::UserIdentity userIdentity; - userIdentity.name = requesterName; - userIdentity.group = "group"; - const common::dataStructures::RetrieveFileQueueCriteria queueCriteria = - m_catalogue->prepareToRetrieveFileByDiskFileId(diskInstanceName1, diskFileId, userIdentity, dummyLc); - - ASSERT_EQ(2, queueCriteria.archiveFile.tapeFiles.size()); - ASSERT_EQ(archivePriority, queueCriteria.mountPolicy.archivePriority); - ASSERT_EQ(minArchiveRequestAge, queueCriteria.mountPolicy.archiveMinRequestAge); - ASSERT_EQ(maxDrivesAllowed, queueCriteria.mountPolicy.maxDrivesAllowed); -} - -TEST_P(cta_catalogue_CatalogueTest, prepareToRetrieveFileUsingDiskFileId_disabledTapes) { - using namespace cta; - - const std::string diskInstanceName1 = "disk_instance_1"; - const std::string diskInstanceName2 = "disk_instance_2"; - - ASSERT_TRUE(m_catalogue->getTapes().empty()); - - const std::string vid1 = "VID123"; - const std::string vid2 = "VID456"; - const std::string logicalLibraryName = "logical_library_name"; - const std::string tapePoolName = "tape_pool_name"; - const std::string vo = "vo"; - const uint64_t capacityInBytes = (uint64_t)10 * 1000 * 1000 * 1000 * 1000; - const bool disabledValue = false; - const bool fullValue = false; - const std::string createTapeComment = "Create tape"; - - m_catalogue->createLogicalLibrary(m_admin, logicalLibraryName, "Create logical library"); - m_catalogue->createTapePool(m_admin, tapePoolName, vo, 2, true, "Create tape pool"); - m_catalogue->createTape(m_admin, vid1, logicalLibraryName, tapePoolName, capacityInBytes, - disabledValue, fullValue, createTapeComment); - m_catalogue->createTape(m_admin, vid2, logicalLibraryName, tapePoolName, capacityInBytes, - disabledValue, fullValue, createTapeComment); - - const std::list<common::dataStructures::Tape> tapes = m_catalogue->getTapes(); - const std::map<std::string, common::dataStructures::Tape> vidToTape = tapeListToMap(tapes); - { - auto it = vidToTape.find(vid1); - const common::dataStructures::Tape &tape = it->second; - ASSERT_EQ(vid1, tape.vid); - ASSERT_EQ(logicalLibraryName, tape.logicalLibraryName); - ASSERT_EQ(tapePoolName, tape.tapePoolName); - ASSERT_EQ(capacityInBytes, tape.capacityInBytes); - ASSERT_TRUE(disabledValue == tape.disabled); - ASSERT_TRUE(fullValue == tape.full); - ASSERT_FALSE(tape.lbp); - ASSERT_EQ(createTapeComment, tape.comment); - ASSERT_FALSE(tape.labelLog); - ASSERT_FALSE(tape.lastReadLog); - ASSERT_FALSE(tape.lastWriteLog); - - const common::dataStructures::EntryLog creationLog = tape.creationLog; - ASSERT_EQ(m_admin.username, creationLog.username); - ASSERT_EQ(m_admin.host, creationLog.host); - - const common::dataStructures::EntryLog lastModificationLog = - tape.lastModificationLog; - ASSERT_EQ(creationLog, lastModificationLog); - } - { - auto it = vidToTape.find(vid2); - const common::dataStructures::Tape &tape = it->second; - ASSERT_EQ(vid2, tape.vid); - ASSERT_EQ(logicalLibraryName, tape.logicalLibraryName); - ASSERT_EQ(tapePoolName, tape.tapePoolName); - ASSERT_EQ(capacityInBytes, tape.capacityInBytes); - ASSERT_TRUE(disabledValue == tape.disabled); - ASSERT_TRUE(fullValue == tape.full); - ASSERT_FALSE(tape.lbp); - ASSERT_EQ(createTapeComment, tape.comment); - ASSERT_FALSE(tape.labelLog); - ASSERT_FALSE(tape.lastReadLog); - ASSERT_FALSE(tape.lastWriteLog); - - const common::dataStructures::EntryLog creationLog = tape.creationLog; - ASSERT_EQ(m_admin.username, creationLog.username); - ASSERT_EQ(m_admin.host, creationLog.host); - - const common::dataStructures::EntryLog lastModificationLog = - tape.lastModificationLog; - ASSERT_EQ(creationLog, lastModificationLog); - } - - const uint64_t archiveFileId = 1234; - - ASSERT_FALSE(m_catalogue->getArchiveFiles().hasMore()); - ASSERT_THROW(m_catalogue->getArchiveFileById(archiveFileId), exception::Exception); - - common::dataStructures::StorageClass storageClass; - storageClass.diskInstance = diskInstanceName1; - storageClass.name = "storage_class"; - storageClass.nbCopies = 2; - storageClass.comment = "Create storage class"; - m_catalogue->createStorageClass(m_admin, storageClass); - - const uint64_t archiveFileSize = 1; - const std::string tapeDrive = "tape_drive"; - const std::string checksumType = "checksum_type"; - const std::string checksumValue = "checksum_value"; - - const std::string diskFileId = "5678"; - - auto file1WrittenUP=cta::make_unique<cta::catalogue::TapeFileWritten>(); - auto & file1Written = *file1WrittenUP; - std::set<cta::catalogue::TapeItemWrittenPointer> file1WrittenSet; - file1WrittenSet.insert(file1WrittenUP.release()); - file1Written.archiveFileId = archiveFileId; - file1Written.diskInstance = storageClass.diskInstance; - file1Written.diskFileId = diskFileId; - file1Written.diskFilePath = "/public_dir/public_file"; - file1Written.diskFileUser = "public_disk_user"; - file1Written.diskFileGroup = "public_disk_group"; - file1Written.diskFileRecoveryBlob = "opaque_disk_file_recovery_contents"; - file1Written.size = archiveFileSize; - file1Written.checksumType = checksumType; - file1Written.checksumValue = checksumValue; - file1Written.storageClassName = storageClass.name; - file1Written.vid = vid1; - file1Written.fSeq = 1; - file1Written.blockId = 4321; - file1Written.compressedSize = 1; - file1Written.copyNb = 1; - file1Written.tapeDrive = tapeDrive; - m_catalogue->filesWrittenToTape(file1WrittenSet); - - { - const common::dataStructures::ArchiveFile archiveFile = m_catalogue->getArchiveFileById(archiveFileId); - - ASSERT_EQ(file1Written.archiveFileId, archiveFile.archiveFileID); - ASSERT_EQ(file1Written.diskFileId, archiveFile.diskFileId); - ASSERT_EQ(file1Written.size, archiveFile.fileSize); - ASSERT_EQ(file1Written.checksumType, archiveFile.checksumType); - ASSERT_EQ(file1Written.checksumValue, archiveFile.checksumValue); - ASSERT_EQ(file1Written.storageClassName, archiveFile.storageClass); - - ASSERT_EQ(file1Written.diskInstance, archiveFile.diskInstance); - ASSERT_EQ(file1Written.diskFilePath, archiveFile.diskFileInfo.path); - ASSERT_EQ(file1Written.diskFileUser, archiveFile.diskFileInfo.owner); - ASSERT_EQ(file1Written.diskFileGroup, archiveFile.diskFileInfo.group); - ASSERT_EQ(file1Written.diskFileRecoveryBlob, archiveFile.diskFileInfo.recoveryBlob); - - ASSERT_EQ(1, archiveFile.tapeFiles.size()); - auto copyNbToTapeFile1Itor = archiveFile.tapeFiles.find(1); - ASSERT_FALSE(copyNbToTapeFile1Itor == archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile1 = copyNbToTapeFile1Itor->second; - ASSERT_EQ(file1Written.vid, tapeFile1.vid); - ASSERT_EQ(file1Written.fSeq, tapeFile1.fSeq); - ASSERT_EQ(file1Written.blockId, tapeFile1.blockId); - ASSERT_EQ(file1Written.compressedSize, tapeFile1.compressedSize); - ASSERT_EQ(file1Written.checksumType, tapeFile1.checksumType); - ASSERT_EQ(file1Written.checksumValue, tapeFile1.checksumValue); - ASSERT_EQ(file1Written.copyNb, tapeFile1.copyNb); - } - - auto file2WrittenUP=cta::make_unique<cta::catalogue::TapeFileWritten>(); - auto & file2Written = *file2WrittenUP; - std::set<cta::catalogue::TapeItemWrittenPointer> file2WrittenSet; - file2WrittenSet.insert(file2WrittenUP.release()); - file2Written.archiveFileId = file1Written.archiveFileId; - file2Written.diskInstance = file1Written.diskInstance; - file2Written.diskFileId = file1Written.diskFileId; - file2Written.diskFilePath = file1Written.diskFilePath; - file2Written.diskFileUser = file1Written.diskFileUser; - file2Written.diskFileGroup = file1Written.diskFileGroup; - file2Written.diskFileRecoveryBlob = file1Written.diskFileRecoveryBlob; - file2Written.size = archiveFileSize; - file2Written.checksumType = checksumType; - file2Written.checksumValue = checksumValue; - file2Written.storageClassName = storageClass.name; - file2Written.vid = vid2; - file2Written.fSeq = 1; - file2Written.blockId = 4331; - file2Written.compressedSize = 1; - file2Written.copyNb = 2; - file2Written.tapeDrive = tapeDrive; - m_catalogue->filesWrittenToTape(file2WrittenSet); - - { - const common::dataStructures::ArchiveFile archiveFile = m_catalogue->getArchiveFileById(archiveFileId); - - ASSERT_EQ(file2Written.archiveFileId, archiveFile.archiveFileID); - ASSERT_EQ(file2Written.diskFileId, archiveFile.diskFileId); - ASSERT_EQ(file2Written.size, archiveFile.fileSize); - ASSERT_EQ(file2Written.checksumType, archiveFile.checksumType); - ASSERT_EQ(file2Written.checksumValue, archiveFile.checksumValue); - ASSERT_EQ(file2Written.storageClassName, archiveFile.storageClass); - - ASSERT_EQ(file2Written.diskInstance, archiveFile.diskInstance); - ASSERT_EQ(file2Written.diskFilePath, archiveFile.diskFileInfo.path); - ASSERT_EQ(file2Written.diskFileUser, archiveFile.diskFileInfo.owner); - ASSERT_EQ(file2Written.diskFileGroup, archiveFile.diskFileInfo.group); - ASSERT_EQ(file2Written.diskFileRecoveryBlob, archiveFile.diskFileInfo.recoveryBlob); - - ASSERT_EQ(2, archiveFile.tapeFiles.size()); - - auto copyNbToTapeFile1Itor = archiveFile.tapeFiles.find(1); - ASSERT_FALSE(copyNbToTapeFile1Itor == archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile1 = copyNbToTapeFile1Itor->second; - ASSERT_EQ(file1Written.vid, tapeFile1.vid); - ASSERT_EQ(file1Written.fSeq, tapeFile1.fSeq); - ASSERT_EQ(file1Written.blockId, tapeFile1.blockId); - ASSERT_EQ(file1Written.compressedSize, tapeFile1.compressedSize); - ASSERT_EQ(file1Written.checksumType, tapeFile1.checksumType); - ASSERT_EQ(file1Written.checksumValue, tapeFile1.checksumValue); - - auto copyNbToTapeFile2Itor = archiveFile.tapeFiles.find(2); - ASSERT_FALSE(copyNbToTapeFile2Itor == archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile2 = copyNbToTapeFile2Itor->second; - ASSERT_EQ(file2Written.vid, tapeFile2.vid); - ASSERT_EQ(file2Written.fSeq, tapeFile2.fSeq); - ASSERT_EQ(file2Written.blockId, tapeFile2.blockId); - ASSERT_EQ(file2Written.compressedSize, tapeFile2.compressedSize); - ASSERT_EQ(file2Written.checksumType, tapeFile2.checksumType); - ASSERT_EQ(file2Written.checksumValue, tapeFile2.checksumValue); - } - - const std::string mountPolicyName = "mount_policy"; - const uint64_t archivePriority = 1; - const uint64_t minArchiveRequestAge = 2; - const uint64_t retrievePriority = 3; - const uint64_t minRetrieveRequestAge = 4; - const uint64_t maxDrivesAllowed = 5; - - m_catalogue->createMountPolicy( - m_admin, - mountPolicyName, - archivePriority, - minArchiveRequestAge, - retrievePriority, - minRetrieveRequestAge, - maxDrivesAllowed, - "Create mount policy"); - - const std::string comment = "Create mount rule for requester"; - const std::string requesterName = "requester_name"; - m_catalogue->createRequesterMountRule(m_admin, mountPolicyName, diskInstanceName1, requesterName, comment); - - const std::list<common::dataStructures::RequesterMountRule> rules = m_catalogue->getRequesterMountRules(); - ASSERT_EQ(1, rules.size()); - - const common::dataStructures::RequesterMountRule rule = rules.front(); - - ASSERT_EQ(diskInstanceName1, rule.diskInstance); - ASSERT_EQ(requesterName, rule.name); - ASSERT_EQ(mountPolicyName, rule.mountPolicy); - ASSERT_EQ(comment, rule.comment); - ASSERT_EQ(m_admin.username, rule.creationLog.username); - ASSERT_EQ(m_admin.host, rule.creationLog.host); - ASSERT_EQ(rule.creationLog, rule.lastModificationLog); - - log::LogContext dummyLc(m_dummyLog); - - common::dataStructures::UserIdentity userIdentity; - userIdentity.name = requesterName; - userIdentity.group = "group"; - - { - const common::dataStructures::RetrieveFileQueueCriteria queueCriteria = - m_catalogue->prepareToRetrieveFileByDiskFileId(diskInstanceName1, diskFileId, userIdentity, dummyLc); - - ASSERT_EQ(archivePriority, queueCriteria.mountPolicy.archivePriority); - ASSERT_EQ(minArchiveRequestAge, queueCriteria.mountPolicy.archiveMinRequestAge); - ASSERT_EQ(maxDrivesAllowed, queueCriteria.mountPolicy.maxDrivesAllowed); - - ASSERT_EQ(2, queueCriteria.archiveFile.tapeFiles.size()); - - const auto copyNbToTapeFile1Itor = queueCriteria.archiveFile.tapeFiles.find(1); - ASSERT_FALSE(copyNbToTapeFile1Itor == queueCriteria.archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile1 = copyNbToTapeFile1Itor->second; - ASSERT_EQ(file1Written.vid, tapeFile1.vid); - ASSERT_EQ(file1Written.fSeq, tapeFile1.fSeq); - ASSERT_EQ(file1Written.blockId, tapeFile1.blockId); - ASSERT_EQ(file1Written.compressedSize, tapeFile1.compressedSize); - ASSERT_EQ(file1Written.checksumType, tapeFile1.checksumType); - ASSERT_EQ(file1Written.checksumValue, tapeFile1.checksumValue); - ASSERT_EQ(file1Written.copyNb, tapeFile1.copyNb); - - const auto copyNbToTapeFile2Itor = queueCriteria.archiveFile.tapeFiles.find(2); - ASSERT_FALSE(copyNbToTapeFile2Itor == queueCriteria.archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile2 = copyNbToTapeFile2Itor->second; - ASSERT_EQ(file2Written.vid, tapeFile2.vid); - ASSERT_EQ(file2Written.fSeq, tapeFile2.fSeq); - ASSERT_EQ(file2Written.blockId, tapeFile2.blockId); - ASSERT_EQ(file2Written.compressedSize, tapeFile2.compressedSize); - ASSERT_EQ(file2Written.checksumType, tapeFile2.checksumType); - ASSERT_EQ(file2Written.checksumValue, tapeFile2.checksumValue); - } - - m_catalogue->setTapeDisabled(m_admin, vid1, true); - - { - const common::dataStructures::RetrieveFileQueueCriteria queueCriteria = - m_catalogue->prepareToRetrieveFileByDiskFileId(diskInstanceName1, diskFileId, userIdentity, dummyLc); - - ASSERT_EQ(archivePriority, queueCriteria.mountPolicy.archivePriority); - ASSERT_EQ(minArchiveRequestAge, queueCriteria.mountPolicy.archiveMinRequestAge); - ASSERT_EQ(maxDrivesAllowed, queueCriteria.mountPolicy.maxDrivesAllowed); - - ASSERT_EQ(1, queueCriteria.archiveFile.tapeFiles.size()); - - const auto copyNbToTapeFile2Itor = queueCriteria.archiveFile.tapeFiles.find(2); - ASSERT_FALSE(copyNbToTapeFile2Itor == queueCriteria.archiveFile.tapeFiles.end()); - const common::dataStructures::TapeFile &tapeFile2 = copyNbToTapeFile2Itor->second; - ASSERT_EQ(file2Written.vid, tapeFile2.vid); - ASSERT_EQ(file2Written.fSeq, tapeFile2.fSeq); - ASSERT_EQ(file2Written.blockId, tapeFile2.blockId); - ASSERT_EQ(file2Written.compressedSize, tapeFile2.compressedSize); - ASSERT_EQ(file2Written.checksumType, tapeFile2.checksumType); - ASSERT_EQ(file2Written.checksumValue, tapeFile2.checksumValue); - } - - m_catalogue->setTapeDisabled(m_admin, vid2, true); - - ASSERT_THROW(m_catalogue->prepareToRetrieveFileByDiskFileId(diskInstanceName1, diskFileId, userIdentity, dummyLc), - exception::UserError); -} - TEST_P(cta_catalogue_CatalogueTest, getArchiveFiles_non_existance_archiveFileId) { using namespace cta; diff --git a/catalogue/DummyCatalogue.hpp b/catalogue/DummyCatalogue.hpp index 665438b229..dddfaa01ae 100644 --- a/catalogue/DummyCatalogue.hpp +++ b/catalogue/DummyCatalogue.hpp @@ -100,7 +100,6 @@ public: common::dataStructures::ArchiveFileQueueCriteria getArchiveFileQueueCriteria(const std::string &diskInstanceName, const std::string &storageClassName, const common::dataStructures::UserIdentity &user) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); } common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFile(const std::string& instanceName, const uint64_t archiveFileId, const common::dataStructures::UserIdentity& user, log::LogContext &lc) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); } - common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFileByDiskFileId(const std::string &diskInstanceName, const std::string &diskFileId, const common::dataStructures::UserIdentity &user, log::LogContext &lc) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); } void reclaimTape(const common::dataStructures::SecurityIdentity& admin, const std::string& vid) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); } void setTapeDisabled(const common::dataStructures::SecurityIdentity& admin, const std::string& vid, const bool disabledValue) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); } void setTapeFull(const common::dataStructures::SecurityIdentity& admin, const std::string& vid, const bool fullValue) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); } diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp index 346184c78e..540eb17a46 100644 --- a/catalogue/RdbmsCatalogue.cpp +++ b/catalogue/RdbmsCatalogue.cpp @@ -4385,65 +4385,6 @@ common::dataStructures::RetrieveFileQueueCriteria RdbmsCatalogue::prepareToRetri } } -//------------------------------------------------------------------------------ -// prepareToRetrieveFileByDiskFileId -//------------------------------------------------------------------------------ -common::dataStructures::RetrieveFileQueueCriteria RdbmsCatalogue::prepareToRetrieveFileByDiskFileId( - const std::string &diskInstanceName, - const std::string &diskFileId, - const common::dataStructures::UserIdentity &user, - log::LogContext &lc) { - try { - cta::utils::Timer t; - auto conn = m_connPool.getConn(); - const auto getConnTime = t.secs(utils::Timer::resetCounter); - auto archiveFile = getArchiveFileToRetrieveByDiskFileId(conn, diskInstanceName, diskFileId); - const auto getArchiveFileTime = t.secs(utils::Timer::resetCounter); - if(nullptr == archiveFile.get()) { - exception::UserError ex; - ex.getMessage() << "No tape files available for archive file with disk instance name " << diskInstanceName << - " and disk file ID" << diskFileId; - throw ex; - } - - t.reset(); - const RequesterAndGroupMountPolicies mountPolicies = getMountPolicies(conn, diskInstanceName, user.name, - user.group); - const auto getMountPoliciesTime = t.secs(utils::Timer::resetCounter); - - log::ScopedParamContainer spc(lc); - spc.add("getConnTime", getConnTime) - .add("getArchiveFileTime", getArchiveFileTime) - .add("getMountPoliciesTime", getMountPoliciesTime); - lc.log(log::INFO, "Catalogue::prepareToRetrieve internal timings"); - - // Requester mount policies overrule requester group mount policies - common::dataStructures::MountPolicy mountPolicy; - if(!mountPolicies.requesterMountPolicies.empty()) { - mountPolicy = mountPolicies.requesterMountPolicies.front(); - } else if(!mountPolicies.requesterGroupMountPolicies.empty()) { - mountPolicy = mountPolicies.requesterGroupMountPolicies.front(); - } else { - exception::UserError ue; - ue.getMessage() << "Cannot retrieve file because there are no mount rules for the requester or their group:" << - " diskInstanceName=" << diskInstanceName << " diskFileId=" << diskFileId << " archiveFileId=" << - archiveFile->archiveFileID << " path=" << archiveFile->diskFileInfo.path << " requester=" << diskInstanceName << - ":" << user.name << ":" << user.group; - throw ue; - } - - common::dataStructures::RetrieveFileQueueCriteria criteria; - criteria.archiveFile = *archiveFile; - criteria.mountPolicy = mountPolicy; - return criteria; - } catch(exception::UserError &) { - throw; - } catch(exception::Exception &ex) { - ex.getMessage().str(std::string(__FUNCTION__) + ": " + ex.getMessage().str()); - throw; - } -} - //------------------------------------------------------------------------------ // getMountPolicies //------------------------------------------------------------------------------ diff --git a/catalogue/RdbmsCatalogue.hpp b/catalogue/RdbmsCatalogue.hpp index 1d1626b5e5..93af615e52 100644 --- a/catalogue/RdbmsCatalogue.hpp +++ b/catalogue/RdbmsCatalogue.hpp @@ -185,32 +185,6 @@ public: const common::dataStructures::UserIdentity &user, log::LogContext &lc) override; - /** - * Prepares for a file retrieval by returning the information required to - * queue the associated retrieve request(s). - * - * @param diskInstanceName The name of the instance from where the retrieval - * request originated - * @param diskFileId The identifier of the source disk file which is unique - * within it's host disk system. Two files from different disk systems may - * have the same identifier. The combination of diskInstanceName and - * diskFileId must be globally unique, in other words unique within the CTA - * catalogue. - * @param archiveFileId The unique identifier of the archived file that is - * to be retrieved. - * @param user The user for whom the file is to be retrieved. This will be - * used by the Catalogue to determine the mount policy to be used when - * retrieving the file. - * @param lc The log context. - * - * @return The information required to queue the associated retrieve request(s). - */ - common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFileByDiskFileId( - const std::string &diskInstanceName, - const std::string &diskFileId, - const common::dataStructures::UserIdentity &user, - log::LogContext &lc) override; - /** * Notifies the CTA catalogue that the specified tape has been mounted in * order to retrieve files. -- GitLab