diff --git a/catalogue/Catalogue.hpp b/catalogue/Catalogue.hpp index d1692f9021c6678a08c2fa656aba5f4a4883dc98..9d42d81f9fd5214ad46ee74fead49f9cd3286b24 100644 --- a/catalogue/Catalogue.hpp +++ b/catalogue/Catalogue.hpp @@ -83,9 +83,9 @@ public: */ virtual ~Catalogue() = 0; - //////////////////////////////////////////////////////////////// - // METHODS TO BE CALLED BY THE CTA TAPE SERVER DAEMON START HERE - //////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////// + // START OF METHODS DIRECTLY INVOLVED DATA TRANSFER AND SCHEDULING + ////////////////////////////////////////////////////////////////// /** * Notifies the catalogue that the specified tape was labelled. @@ -96,6 +96,26 @@ public: */ virtual void tapeLabelled(const std::string &vid, const std::string &drive, const bool lbpIsOn) = 0; + /** + * Prepares the catalogue for a new archive file and returns the information + * required to queue the associated archive request. + * + * @param diskInstanceName The name of the disk instance to which the + * storage class belongs. + * @param storageClassName The name of the storage class of the file to be + * archived. The storage class name is only guaranteed to be unique within + * its disk instance. The storage class name will be used by the Catalogue + * to determine the destination tape pool for each tape copy. + * @param user The user for whom the file is to be archived. This will be + * used by the Catalogue to determine the mount policy to be used when + * archiving the file. + * @return The information required to queue the associated archive request. + */ + virtual common::dataStructures::ArchiveFileQueueCriteria prepareForNewFile( + const std::string &diskInstanceName, + const std::string &storageClassName, + const common::dataStructures::UserIdentity &user) = 0; + /** * Returns the list of tapes that can be written to by a tape drive in the * specified logical library, in other words tapes that are labelled, not @@ -116,15 +136,39 @@ public: * Notifies the CTA catalogue that the specified tape has been mounted in * order to archive files. * + * The purpose of this method is to keep track of which drive mounted a given + * tape for archiving files last. + * * @param vid The volume identifier of the tape. * @param drive The name of the drive where the tape was mounted. */ virtual void tapeMountedForArchive(const std::string &vid, const std::string &drive) = 0; // internal function (noCLI) + /** + * Prepares for a file retrieval by returning the information required to + * queue the associated retrieve request(s). + * + * @param instanceName The name of the instance from where the retrieval request originated + * @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. + * + * @return The information required to queue the associated retrieve request(s). + */ + virtual common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFile( + const std::string &instanceName, + const uint64_t archiveFileId, + const common::dataStructures::UserIdentity &user) = 0; + /** * Notifies the CTA catalogue that the specified tape has been mounted in * order to retrieve files. * + * The purpose of this method is to keep track of which drive mounted a given + * tape for retrieving files last. + * * @param vid The volume identifier of the tape. * @param drive The name of the drive where the tape was mounted. */ @@ -139,7 +183,7 @@ public: virtual void noSpaceLeftOnTape(const std::string &vid) = 0; //////////////////////////////////////////////////////////////// - // METHODS TO BE CALLED BY THE CTA TAPE SERVER DAEMON END HERE + // END OF METHODS DIRECTLY INVOLVED DATA TRANSFER AND SCHEDULING //////////////////////////////////////////////////////////////// virtual void createBootstrapAdminAndHostNoAuth(const common::dataStructures::SecurityIdentity &cliIdentity, const std::string &username, const std::string &hostName, const std::string &comment) = 0; @@ -447,26 +491,6 @@ public: */ virtual common::dataStructures::ArchiveFile getArchiveFileById(const uint64_t id) = 0; - /** - * Prepares the catalogue for a new archive file and returns the information - * required to queue the associated archive request. - * - * @param diskInstanceName The name of the disk instance to which the - * storage class belongs. - * @param storageClassName The name of the storage class of the file to be - * archived. The storage class name is only guaranteed to be unique within - * its disk instance. The storage class name will be used by the Catalogue - * to determine the destination tape pool for each tape copy. - * @param user The user for whom the file is to be archived. This will be - * used by the Catalogue to determine the mount policy to be used when - * archiving the file. - * @return The information required to queue the associated archive request. - */ - virtual common::dataStructures::ArchiveFileQueueCriteria prepareForNewFile( - const std::string &diskInstanceName, - const std::string &storageClassName, - const common::dataStructures::UserIdentity &user) = 0; - /** * Deletes the specified archive file and its associated tape copies from the * catalogue. @@ -479,24 +503,6 @@ public: virtual common::dataStructures::ArchiveFile deleteArchiveFile(const std::string &instanceName, const uint64_t archiveFileId) = 0; - /** - * Prepares for a file retrieval by returning the information required to - * queue the associated retrieve request(s). - * - * @param instanceName The name of the instance from where the retrieval request originated - * @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. - * - * @return The information required to queue the associated retrieve request(s). - */ - virtual common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFile( - const std::string &instanceName, - const uint64_t archiveFileId, - const common::dataStructures::UserIdentity &user) = 0; - /** * Returns true if the specified user running the CTA command-line tool on * the specified host has administrator privileges. diff --git a/catalogue/RdbmsCatalogue.hpp b/catalogue/RdbmsCatalogue.hpp index ea69d74184d22515207dba5fe2781a5fd6e38b05..a858fb57aba8053fd5c1fcf0eccba1fc5a600992 100644 --- a/catalogue/RdbmsCatalogue.hpp +++ b/catalogue/RdbmsCatalogue.hpp @@ -69,9 +69,9 @@ public: */ virtual ~RdbmsCatalogue() override; - //////////////////////////////////////////////////////////////// - // METHODS TO BE CALLED BY THE CTA TAPE SERVER DAEMON START HERE - //////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////// + // START OF METHODS DIRECTLY INVOLVED IN DATA TRANSFER AND SCHEDULING + ///////////////////////////////////////////////////////////////////// /** * Notifies the catalogue that the specified tape was labelled. @@ -82,6 +82,26 @@ public: */ virtual void tapeLabelled(const std::string &vid, const std::string &drive, const bool lbpIsOn) override; + /** + * Prepares the catalogue for a new archive file and returns the information + * required to queue the associated archive request. + * + * @param diskInstanceName The name of the disk instance to which the + * storage class belongs. + * @param storageClassName The name of the storage class of the file to be + * archived. The storage class name is only guaranteed to be unique within + * its disk instance. The storage class name will be used by the Catalogue + * to determine the destination tape pool for each tape copy. + * @param user The user for whom the file is to be archived. This will be + * used by the Catalogue to determine the mount policy to be used when + * archiving the file. + * @return The information required to queue the associated archive request. + */ + virtual common::dataStructures::ArchiveFileQueueCriteria prepareForNewFile( + const std::string &diskInstanceName, + const std::string &storageClassName, + const common::dataStructures::UserIdentity &user) override; + /** * Returns the list of tapes that can be written to by a tape drive in the * specified logical library, in other words tapes that are labelled, not @@ -99,34 +119,58 @@ public: virtual void fileWrittenToTape(const TapeFileWritten &event) override; /** - * This method notifies the CTA catalogue that there is no more free space on - * the specified tape. + * Notifies the CTA catalogue that the specified tape has been mounted in + * order to archive files. + * + * The purpose of this method is to keep track of which drive mounted a given + * tape for archiving files last. * * @param vid The volume identifier of the tape. + * @param drive The name of the drive where the tape was mounted. */ - virtual void noSpaceLeftOnTape(const std::string &vid) override; + virtual void tapeMountedForArchive(const std::string &vid, const std::string &drive) override; /** - * Notifies the CTA catalogue that the specified tape has been mounted in - * order to archive files. + * Prepares for a file retrieval by returning the information required to + * queue the associated retrieve request(s). * - * @param vid The volume identifier of the tape. - * @param drive The name of the drive where the tape was mounted. + * @param instanceName The name of the instance from where the retrieval request originated + * @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. + * + * @return The information required to queue the associated retrieve request(s). */ - virtual void tapeMountedForArchive(const std::string &vid, const std::string &drive) override; // internal function (noCLI) + virtual common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFile( + const std::string &instanceName, + const uint64_t archiveFileId, + const common::dataStructures::UserIdentity &user) override; /** * Notifies the CTA catalogue that the specified tape has been mounted in * order to retrieve files. * + * The purpose of this method is to keep track of which drive mounted a given + * tape for retrieving files last. + * * @param vid The volume identifier of the tape. * @param drive The name of the drive where the tape was mounted. */ - virtual void tapeMountedForRetrieve(const std::string &vid, const std::string &drive) override; // internal function (noCLI) + virtual void tapeMountedForRetrieve(const std::string &vid, const std::string &drive) override; - //////////////////////////////////////////////////////////////// - // METHODS TO BE CALLED BY THE CTA TAPE SERVER DAEMON END HERE - //////////////////////////////////////////////////////////////// + /** + * This method notifies the CTA catalogue that there is no more free space on + * the specified tape. + * + * @param vid The volume identifier of the tape. + */ + virtual void noSpaceLeftOnTape(const std::string &vid) override; + + /////////////////////////////////////////////////////////////////// + // END OF METHODS DIRECTLY INVOLVED IN DATA TRANSFER AND SCHEDULING + /////////////////////////////////////////////////////////////////// virtual void createBootstrapAdminAndHostNoAuth(const common::dataStructures::SecurityIdentity &cliIdentity, const std::string &username, const std::string &hostName, const std::string &comment) override; @@ -433,44 +477,6 @@ public: */ virtual common::dataStructures::ArchiveFile getArchiveFileById(const uint64_t id) override; - /** - * Prepares the catalogue for a new archive file and returns the information - * required to queue the associated archive request. - * - * @param diskInstanceName The name of the disk instance to which the - * storage class belongs. - * @param storageClassName The name of the storage class of the file to be - * archived. The storage class name is only guaranteed to be unique within - * its disk instance. The storage class name will be used by the Catalogue - * to determine the destination tape pool for each tape copy. - * @param user The user for whom the file is to be archived. This will be - * used by the Catalogue to determine the mount policy to be used when - * archiving the file. - * @return The information required to queue the associated archive request. - */ - virtual common::dataStructures::ArchiveFileQueueCriteria prepareForNewFile( - const std::string &diskInstanceName, - const std::string &storageClassName, - const common::dataStructures::UserIdentity &user) override; - - /** - * Prepares for a file retrieval by returning the information required to - * queue the associated retrieve request(s). - * - * @param instanceName The name of the instance from where the retrieval request originated - * @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. - * - * @return The information required to queue the associated retrieve request(s). - */ - virtual common::dataStructures::RetrieveFileQueueCriteria prepareToRetrieveFile( - const std::string &instanceName, - const uint64_t archiveFileId, - const common::dataStructures::UserIdentity &user) override; - /** * Returns true if the specified user running the CTA command-line tool on * the specified host has administrator privileges.