diff --git a/ReleaseNotes.md b/ReleaseNotes.md index eb9b22ce02938990ad439ad2138ef101f886a895..54eca8fba15d1ab85930d96bb33e447b27aa7d2c 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -9,6 +9,7 @@ - cta/CTA#670 - Add the ability to read EnstoreLarge tapes ### Bug Fixes +- cta/CTA#466 - Changed `cta.archivefile.max_size_gb` to correctly use powers of 1000 instead of 1024 - cta/CTA#485 - Check disk file metadata on delete requests - cta/CTA#634 - Fix crash of ctafrontend in initialisation for missing config values - cta/CTA#645 - Fix new mount timeout log message @@ -18,7 +19,7 @@ - cta/CTA#682 - Generate taped's log file with correct owner and group - cta/CTA#683 - Fix problems with field consistency in json logging - cta/CTA#688 - Fix tapeserver umask to allow directory creation in POSIX filesystems -- cta/CTA#466 - Changed `cta.archivefile.max_size_gb` to correctly use powers of 1000 instead of 1024 +- cta/CTA#693 - Fix tapeserver tool regressions ### Continuous Integration - cta/CTA#615 - Going to xrdfs xattr API for EOS5 extended attribute tests (EOS >= 5.2.17) diff --git a/tapeserver/cta-taped.cpp b/tapeserver/cta-taped.cpp index 6b1c564cadcde038c7b7d5593b098476ebf6d899..1005a9440db9e34ac8d81264eb6c2e59a30a9f5f 100644 --- a/tapeserver/cta-taped.cpp +++ b/tapeserver/cta-taped.cpp @@ -79,7 +79,7 @@ static int exceptionThrowingMain(const cta::daemon::CommandLineParams& commandLi logStartOfDaemon(log, commandLine); // Parse /etc/cta/cta-taped-unitName.conf parameters - const TapedConfiguration globalConfig = TapedConfiguration::createFromCtaConf(commandLine.configFileLocation, log); + const TapedConfiguration globalConfig = TapedConfiguration::createFromConfigPath(commandLine.configFileLocation, log); // Set log lines to JSON format if configured and not overridden on command line if(commandLine.logFormat.empty()) { @@ -162,7 +162,7 @@ int main(const int argc, char **const argv) { tape::daemon::common::TapedConfiguration globalConfig; try { globalConfig = - tape::daemon::common::TapedConfiguration::createFromCtaConf(commandLine->configFileLocation, *logPtr); + tape::daemon::common::TapedConfiguration::createFromConfigPath(commandLine->configFileLocation, *logPtr); } catch (const exception::Exception &ex) { std::list<cta::log::Param> params = { cta::log::Param("exceptionMessage", ex.getMessage().str())}; diff --git a/tapeserver/daemon/common/TapedConfiguration.cpp b/tapeserver/daemon/common/TapedConfiguration.cpp index 2392f9b04930d6b4bc32e6d60017d96c4ec3f4e7..f28aa08d86fcf9b04d3b7e7de1e2d22ad8267bf4 100644 --- a/tapeserver/daemon/common/TapedConfiguration.cpp +++ b/tapeserver/daemon/common/TapedConfiguration.cpp @@ -112,9 +112,9 @@ std::string TapedConfiguration::getFirstDriveName() { } //------------------------------------------------------------------------------ -// TapedConfiguration::createFromCtaConf w path +// TapedConfiguration::createFromConfigPath //------------------------------------------------------------------------------ -TapedConfiguration TapedConfiguration::createFromCtaConf( +TapedConfiguration TapedConfiguration::createFromConfigPath( const std::string &driveTapedConfigPath, cta::log::Logger &log) { TapedConfiguration ret; @@ -229,12 +229,12 @@ TapedConfiguration TapedConfiguration::createFromCtaConf( return ret; } -TapedConfiguration TapedConfiguration::createFromCtaConf( +TapedConfiguration TapedConfiguration::createFromOptionalDriveName( const std::optional<std::string> &unitName, cta::log::Logger &log) { // Get the config file path const std::string driveTapedConfigPath = getDriveConfigFile(unitName, log); - return createFromCtaConf(driveTapedConfigPath, log); + return createFromConfigPath(driveTapedConfigPath, log); } //------------------------------------------------------------------------------ diff --git a/tapeserver/daemon/common/TapedConfiguration.hpp b/tapeserver/daemon/common/TapedConfiguration.hpp index bc5a181becb44ff1949ac306a4ae49d655a318f9..1d33f5d789f3bdb437c9e58b0a0a60060f908af4 100644 --- a/tapeserver/daemon/common/TapedConfiguration.hpp +++ b/tapeserver/daemon/common/TapedConfiguration.hpp @@ -32,11 +32,11 @@ namespace cta::tape::daemon::common { * to spawn a transfer session per drive. */ struct TapedConfiguration { - static TapedConfiguration createFromCtaConf( + static TapedConfiguration createFromConfigPath( const std::string &configFilePath, cta::log::Logger &log=gDummyLogger); - static TapedConfiguration createFromCtaConf( + static TapedConfiguration createFromOptionalDriveName( const std::optional<std::string> &unitName, cta::log::Logger & log = gDummyLogger); diff --git a/tapeserver/daemon/common/TapedConfigurationTests.cpp b/tapeserver/daemon/common/TapedConfigurationTests.cpp index 828a398637b28ed90ca09ef28dd6de5d2fc62618..7eeeaacdc29c778956dc242f8e2d2c465e425a7a 100644 --- a/tapeserver/daemon/common/TapedConfigurationTests.cpp +++ b/tapeserver/daemon/common/TapedConfigurationTests.cpp @@ -41,10 +41,10 @@ TEST(cta_Daemon, TapedConfiguration) { "general SchedulerBackendName dummyProdUser\n" "general ServiceName dummy-service-name\n"); - ASSERT_THROW(cta::tape::daemon::common::TapedConfiguration::createFromCtaConf(incompleteConfFile.path()), + ASSERT_THROW(cta::tape::daemon::common::TapedConfiguration::createFromConfigPath(incompleteConfFile.path()), cta::SourcedParameter<std::string>::MandatoryParameterNotDefined); auto completeConfig = - cta::tape::daemon::common::TapedConfiguration::createFromCtaConf(completeConfFile.path()); + cta::tape::daemon::common::TapedConfiguration::createFromConfigPath(completeConfFile.path()); ASSERT_EQ(completeConfFile.path()+":2", completeConfig.backendPath.source()); ASSERT_EQ("vfsObjectStore:///tmp/dir", completeConfig.backendPath.value()); } @@ -72,7 +72,7 @@ TEST(cta_Daemon, TapedConfigurationFull) { // The log parameter can be uncommented to inspect the result on the output. auto completeConfig = - cta::tape::daemon::common::TapedConfiguration::createFromCtaConf(completeConfFile.path()/*, log*/); + cta::tape::daemon::common::TapedConfiguration::createFromConfigPath(completeConfFile.path()/*, log*/); ASSERT_EQ(completeConfFile.path()+":2", completeConfig.backendPath.source()); ASSERT_EQ("vfsObjectStore:///tmp/dir", completeConfig.backendPath.value()); ASSERT_EQ(completeConfFile.path()+":3", completeConfig.fileCatalogConfigFile.source()); diff --git a/tapeserver/readtp/ReadtpCmd.cpp b/tapeserver/readtp/ReadtpCmd.cpp index 2ab13c6eb1ca791eef19c426b9a27021b7f0552e..33bc34ab996c0bee346c6c4fd748ef65bc339096 100644 --- a/tapeserver/readtp/ReadtpCmd.cpp +++ b/tapeserver/readtp/ReadtpCmd.cpp @@ -103,11 +103,10 @@ void ReadtpCmd::readAndSetConfiguration(const std::string& userName, const Readt m_fSeqRangeList = cmdLineArgs.m_fSeqRangeList; m_userName = userName; m_destinationFiles = readListFromFile(cmdLineArgs.m_destinationFileListURL); - std::optional<std::string> unitName = cmdLineArgs.m_unitName.value(); // Read taped config file const cta::tape::daemon::common::TapedConfiguration driveConfig - = cta::tape::daemon::common::TapedConfiguration::createFromCtaConf(unitName, m_log); + = cta::tape::daemon::common::TapedConfiguration::createFromOptionalDriveName(cmdLineArgs.m_unitName, m_log); // Configure drive m_devFilename = driveConfig.driveDevice.value(); @@ -122,6 +121,12 @@ void ReadtpCmd::readAndSetConfiguration(const std::string& userName, const Readt driveConfig.rmcRequestAttempts.value()); m_mc = std::make_unique<cta::mediachanger::MediaChangerFacade>(*(m_rmcProxy.get()), m_log); + // Configure encryption + const std::string externalEncryptionKeyScript = driveConfig.externalEncryptionKeyScript.value(); + const bool useEncryption = driveConfig.useEncryption.value() == "yes"; + m_encryptionControl = std::make_unique<castor::tape::tapeserver::daemon::EncryptionControl>(useEncryption, externalEncryptionKeyScript); + + // Configure catalogue const cta::rdbms::Login catalogueLogin = cta::rdbms::Login::parseFile(CATALOGUE_CONFIG_PATH); const uint64_t nbConns = 1; @@ -570,15 +575,6 @@ void ReadtpCmd::rewindDrive( void ReadtpCmd::configureEncryption(castor::tape::tapeserver::daemon::VolumeInfo &volInfo, castor::tape::tapeserver::drive::DriveInterface &drive) { try { - const std::string DAEMON_CONFIG = "/etc/cta/cta-taped.conf"; - - // Config file needed to find the cta-get-encryption-key script - const cta::tape::daemon::common::TapedConfiguration tapedConfig = - cta::tape::daemon::common::TapedConfiguration::createFromCtaConf(DAEMON_CONFIG, m_dummyLog); - const std::string externalEncryptionKeyScript = tapedConfig.externalEncryptionKeyScript.value(); - const bool useEncryption = tapedConfig.useEncryption.value() == "yes"; - m_encryptionControl = std::make_unique<castor::tape::tapeserver::daemon::EncryptionControl>(useEncryption, externalEncryptionKeyScript); - // We want those scoped params to last for the whole mount. // This will allow each session to be logged with its encryption // status: diff --git a/tapeserver/tapelabel/TapeLabelCmd.cpp b/tapeserver/tapelabel/TapeLabelCmd.cpp index 8010be3ad40fd033ea85d46da906ad9b6da877aa..96426652e8cc7af761cba15d656b9b04e2e06d1e 100644 --- a/tapeserver/tapelabel/TapeLabelCmd.cpp +++ b/tapeserver/tapelabel/TapeLabelCmd.cpp @@ -401,7 +401,7 @@ void TapeLabelCmd::readAndSetConfiguration(const std::string &userName, // Read taped config file const cta::tape::daemon::common::TapedConfiguration driveConfig - = cta::tape::daemon::common::TapedConfiguration::createFromCtaConf(unitName, m_log); + = cta::tape::daemon::common::TapedConfiguration::createFromOptionalDriveName(unitName, m_log); // Configure drive m_devFilename = driveConfig.driveDevice.value();