Commit b095b1b3 authored by Victor Kotlyar's avatar Victor Kotlyar
Browse files

Renamed castor/acs to use read only instead of recall and read/write instead of migration.

parent 740fcb75
...@@ -39,8 +39,8 @@ namespace castor { ...@@ -39,8 +39,8 @@ namespace castor {
namespace acs { namespace acs {
/** /**
* Abstract class implementing common code and data structures for mount * Abstract class implementing common code and data structures for mount
* for recall, mount for migration and dismount requests * for read only access, mount for read/write access and dismount requests
* that interact with ACS compatible tape libraries. * that interact with ACS compatible tape libraries.
*/ */
class AcsLibraryInteraction { class AcsLibraryInteraction {
......
...@@ -21,14 +21,14 @@ ...@@ -21,14 +21,14 @@
#include "castor/messages/messages.hpp" #include "castor/messages/messages.hpp"
#include "castor/messages/ReturnValue.pb.h" #include "castor/messages/ReturnValue.pb.h"
#include "castor/messages/AcsMountTapeForRecall.pb.h" #include "castor/messages/AcsMountTapeReadOnly.pb.h"
#include "castor/messages/AcsMountTapeForMigration.pb.h" #include "castor/messages/AcsMountTapeReadWrite.pb.h"
#include "castor/messages/AcsDismountTape.pb.h" #include "castor/messages/AcsDismountTape.pb.h"
#include "castor/acs/Constants.hpp" #include "castor/acs/Constants.hpp"
#include "castor/acs/AcsMessageHandler.hpp" #include "castor/acs/AcsMessageHandler.hpp"
#include "castor/acs/AcsDismountTape.hpp" #include "castor/acs/AcsDismountTape.hpp"
#include "castor/acs/AcsMountTapeForRecall.hpp" #include "castor/acs/AcsMountTapeReadOnly.hpp"
#include "castor/acs/AcsMountTapeForMigration.hpp" #include "castor/acs/AcsMountTapeReadWrite.hpp"
#include "castor/acs/AcsDaemon.hpp" #include "castor/acs/AcsDaemon.hpp"
#include "castor/tape/utils/utils.hpp" #include "castor/tape/utils/utils.hpp"
#include "castor/acs/Acs.hpp" #include "castor/acs/Acs.hpp"
...@@ -179,11 +179,11 @@ castor::messages::Frame castor::acs::AcsMessageHandler:: ...@@ -179,11 +179,11 @@ castor::messages::Frame castor::acs::AcsMessageHandler::
m_log(LOG_DEBUG, "AcsMessageHandler dispatching message handler"); m_log(LOG_DEBUG, "AcsMessageHandler dispatching message handler");
switch(rqst.header.msgtype()) { switch(rqst.header.msgtype()) {
case messages::MSG_TYPE_ACSMOUNTTAPEFORRECALL: case messages::MSG_TYPE_ACSMOUNTTAPEREADONLY:
return handleAcsMountTapeForRecall(rqst); return handleAcsMountTapeReadOnly(rqst);
case messages::MSG_TYPE_ACSMOUNTTAPEFORMIGRATION: case messages::MSG_TYPE_ACSMOUNTTAPEREADWRITE:
return handleAcsMountTapeForMigration(rqst); return handleAcsMountTapeReadWrite(rqst);
case messages::MSG_TYPE_ACSDISMOUNTTAPE: case messages::MSG_TYPE_ACSDISMOUNTTAPE:
return handleAcsDismountTape(rqst); return handleAcsDismountTape(rqst);
...@@ -199,14 +199,14 @@ castor::messages::Frame castor::acs::AcsMessageHandler:: ...@@ -199,14 +199,14 @@ castor::messages::Frame castor::acs::AcsMessageHandler::
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// handleAcsMountTapeForRecall // handleAcsMountTapeReadOnly
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
castor::messages::Frame castor::acs::AcsMessageHandler:: castor::messages::Frame castor::acs::AcsMessageHandler::
handleAcsMountTapeForRecall(const messages::Frame &rqst) { handleAcsMountTapeReadOnly(const messages::Frame &rqst) {
m_log(LOG_DEBUG, "Handling AcsMountTapeForRecall message"); m_log(LOG_DEBUG, "Handling AcsMountTapeReadOnly message");
try { try {
messages::AcsMountTapeForRecall rqstBody; messages::AcsMountTapeReadOnly rqstBody;
rqst.parseBodyIntoProtocolBuffer(rqstBody); rqst.parseBodyIntoProtocolBuffer(rqstBody);
const std::string vid = rqstBody.vid(); const std::string vid = rqstBody.vid();
...@@ -220,37 +220,38 @@ castor::messages::Frame castor::acs::AcsMessageHandler:: ...@@ -220,37 +220,38 @@ castor::messages::Frame castor::acs::AcsMessageHandler::
log::Param("lsm", lsm), log::Param("lsm", lsm),
log::Param("panel", panel), log::Param("panel", panel),
log::Param("drive", drive)}; log::Param("drive", drive)};
m_log(LOG_INFO, "AcsMountTapeForRecall message", params); m_log(LOG_INFO, "AcsMountTapeReadOnly message", params);
castor::acs::AcsImpl acsWrapper; castor::acs::AcsImpl acsWrapper;
castor::acs::AcsMountTapeForRecall acsMountTapeForRecall(vid, acs, lsm, castor::acs::AcsMountTapeReadOnly acsMountTapeReadOnly(vid, acs, lsm,
panel, drive, acsWrapper, m_log, m_castorConf); panel, drive, acsWrapper, m_log, m_castorConf);
try { try {
acsMountTapeForRecall.execute(); acsMountTapeReadOnly.execute();
m_log(LOG_INFO,"Tape successfully mounted for recall", params); m_log(LOG_INFO,"Tape successfully mounted for read only access", params);
} catch (castor::exception::Exception &ne) { } catch (castor::exception::Exception &ne) {
m_log(LOG_ERR,"Tape mount for recall failed: "+ne.getMessage().str(), params); m_log(LOG_ERR,"Tape mount for read only access failed: "
+ ne.getMessage().str(), params);
throw; throw;
} }
const messages::Frame reply = createReturnValueFrame(0); const messages::Frame reply = createReturnValueFrame(0);
return reply; return reply;
} catch(castor::exception::Exception &ne) { } catch(castor::exception::Exception &ne) {
castor::exception::Exception ex; castor::exception::Exception ex;
ex.getMessage() << "Failed to handle AcsMountTapeForRecall message: " << ex.getMessage() << "Failed to handle AcsMountTapeReadOnly message: " <<
ne.getMessage().str(); ne.getMessage().str();
throw ex; throw ex;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// handleAcsMountTapeForMigration // handleAcsMountTapeReadWrite
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
castor::messages::Frame castor::acs::AcsMessageHandler:: castor::messages::Frame castor::acs::AcsMessageHandler::
handleAcsMountTapeForMigration(const messages::Frame &rqst) { handleAcsMountTapeReadWrite(const messages::Frame &rqst) {
m_log(LOG_DEBUG, "Handling AcsMountTapeForMigration message"); m_log(LOG_DEBUG, "Handling AcsMountTapeReadWrite message");
try { try {
messages::AcsMountTapeForMigration rqstBody; messages::AcsMountTapeReadWrite rqstBody;
rqst.parseBodyIntoProtocolBuffer(rqstBody); rqst.parseBodyIntoProtocolBuffer(rqstBody);
const std::string vid = rqstBody.vid(); const std::string vid = rqstBody.vid();
...@@ -264,23 +265,24 @@ castor::messages::Frame castor::acs::AcsMessageHandler:: ...@@ -264,23 +265,24 @@ castor::messages::Frame castor::acs::AcsMessageHandler::
log::Param("lsm", lsm), log::Param("lsm", lsm),
log::Param("panel", panel), log::Param("panel", panel),
log::Param("drive", drive)}; log::Param("drive", drive)};
m_log(LOG_INFO, "AcsMountTapeForMigration message", params); m_log(LOG_INFO, "AcsMountTapeReadWrite message", params);
castor::acs::AcsImpl acsWrapper; castor::acs::AcsImpl acsWrapper;
castor::acs::AcsMountTapeForMigration acsMountTapeForMigration(vid, acs, castor::acs::AcsMountTapeReadWrite acsMountTapeReadWrite(vid, acs,
lsm, panel, drive, acsWrapper, m_log, m_castorConf); lsm, panel, drive, acsWrapper, m_log, m_castorConf);
try { try {
acsMountTapeForMigration.execute(); acsMountTapeReadWrite.execute();
m_log(LOG_INFO,"Tape successfully mounted for migration", params); m_log(LOG_INFO,"Tape successfully mounted for read/write access", params);
} catch (castor::exception::Exception &ne) { } catch (castor::exception::Exception &ne) {
m_log(LOG_ERR,"Tape mount for migration failed: "+ne.getMessage().str(), params); m_log(LOG_ERR,"Tape mount for read/write access failed: "
+ ne.getMessage().str(), params);
throw; throw;
} }
const messages::Frame reply = createReturnValueFrame(0); const messages::Frame reply = createReturnValueFrame(0);
return reply; return reply;
} catch(castor::exception::Exception &ne) { } catch(castor::exception::Exception &ne) {
castor::exception::Exception ex; castor::exception::Exception ex;
ex.getMessage() << "Failed to handle AcsMountTapeForMigration message: " << ex.getMessage() << "Failed to handle AcsMountTapeReadWrite message: " <<
ne.getMessage().str(); ne.getMessage().str();
throw ex; throw ex;
} }
......
...@@ -117,20 +117,20 @@ private: ...@@ -117,20 +117,20 @@ private:
messages::Frame dispatchMsgHandler(const messages::Frame &rqst) ; messages::Frame dispatchMsgHandler(const messages::Frame &rqst) ;
/** /**
* Handles the mount tape for recall. * Handles the mount tape for read only.
* *
* @param rqst The request. * @param rqst The request.
* @return The reply. * @return The reply.
*/ */
messages::Frame handleAcsMountTapeForRecall(const messages::Frame &rqst); messages::Frame handleAcsMountTapeReadOnly(const messages::Frame &rqst);
/** /**
* Handles the mount tape for migration request. * Handles the mount tape for read/write.
* *
* @param rqst The request. * @param rqst The request.
* @return The reply. * @return The reply.
*/ */
messages::Frame handleAcsMountTapeForMigration(const messages::Frame &rqst); messages::Frame handleAcsMountTapeReadWrite(const messages::Frame &rqst);
/** /**
* Handles the dismount tape request. * Handles the dismount tape request.
......
...@@ -21,13 +21,13 @@ ...@@ -21,13 +21,13 @@
* @author Castor Dev team, castor-dev@cern.ch * @author Castor Dev team, castor-dev@cern.ch
*****************************************************************************/ *****************************************************************************/
#include "castor/acs/AcsMountTapeForRecall.hpp" #include "castor/acs/AcsMountTapeReadOnly.hpp"
#include "castor/exception/MountFailed.hpp" #include "castor/exception/MountFailed.hpp"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// constructor // constructor
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
castor::acs::AcsMountTapeForRecall::AcsMountTapeForRecall( castor::acs::AcsMountTapeReadOnly::AcsMountTapeReadOnly(
const std::string &vid, const std::string &vid,
const uint32_t acs, const uint32_t acs,
const uint32_t lsm, const uint32_t lsm,
...@@ -47,35 +47,35 @@ castor::acs::AcsMountTapeForRecall::AcsMountTapeForRecall( ...@@ -47,35 +47,35 @@ castor::acs::AcsMountTapeForRecall::AcsMountTapeForRecall(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// execute // execute
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForRecall::execute() const { void castor::acs::AcsMountTapeReadOnly::execute() const {
syncMountTapeForRecall(); syncMountTapeReadOnly();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// syncMountTapeForRecall // syncMountTapeReadOnly
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForRecall::syncMountTapeForRecall() const void castor::acs::AcsMountTapeReadOnly::syncMountTapeReadOnly() const
{ {
const SEQ_NO requestSeqNumber = 1; const SEQ_NO requestSeqNumber = 1;
ALIGNED_BYTES buf[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]; ALIGNED_BYTES buf[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)];
try { try {
sendMountForRecallRequest(requestSeqNumber); sendMountTapeReadOnlyRequest(requestSeqNumber);
requestResponsesUntilFinal(requestSeqNumber, buf, requestResponsesUntilFinal(requestSeqNumber, buf,
m_castorConf.acsQueryLibraryInterval, m_castorConf.acsCommandTimeout); m_castorConf.acsQueryLibraryInterval, m_castorConf.acsCommandTimeout);
processMountForRecallResponse(buf); processMountTapeReadOnlyResponse(buf);
} catch(castor::exception::Exception &ex) { } catch(castor::exception::Exception &ex) {
castor::exception::MountFailed mf; castor::exception::MountFailed mf;
mf.getMessage() << "Failed to mount for recall volume " << mf.getMessage() << "Failed to mount for read only access volume " <<
m_volId.external_label << ": " << ex.getMessage().str(); m_volId.external_label << ": " << ex.getMessage().str();
throw mf; throw mf;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// sendMountForRecallRequest // sendMountTapeReadOnlyRequest
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForRecall::sendMountForRecallRequest( void castor::acs::AcsMountTapeReadOnly::sendMountTapeReadOnlyRequest(
const SEQ_NO seqNumber) const { const SEQ_NO seqNumber) const {
const LOCKID lockId = 0; // No lock const LOCKID lockId = 0; // No lock
const BOOLEAN bypass = FALSE; const BOOLEAN bypass = FALSE;
...@@ -90,8 +90,8 @@ void castor::acs::AcsMountTapeForRecall::sendMountForRecallRequest( ...@@ -90,8 +90,8 @@ void castor::acs::AcsMountTapeForRecall::sendMountForRecallRequest(
if(STATUS_SUCCESS != s) { if(STATUS_SUCCESS != s) {
castor::exception::MountFailed ex; castor::exception::MountFailed ex;
ex.getMessage() << "Failed to send request to mount for recall volume " << ex.getMessage() << "Failed to send request to mount for read only access"
m_volId.external_label << " into drive " << " volume " << m_volId.external_label << " into drive " <<
m_acsWrapper.driveId2Str(m_driveId) << ": readOnly=" << m_acsWrapper.driveId2Str(m_driveId) << ": readOnly=" <<
(readOnly ? "TRUE" : "FALSE") << ": " << acs_status(s); (readOnly ? "TRUE" : "FALSE") << ": " << acs_status(s);
throw ex; throw ex;
...@@ -99,17 +99,17 @@ void castor::acs::AcsMountTapeForRecall::sendMountForRecallRequest( ...@@ -99,17 +99,17 @@ void castor::acs::AcsMountTapeForRecall::sendMountForRecallRequest(
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// processMountForRecallResponse // processMountTapeReadOnlyResponse
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForRecall::processMountForRecallResponse( void castor::acs::AcsMountTapeReadOnly::processMountTapeReadOnlyResponse(
ALIGNED_BYTES (&buf)[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]) const ALIGNED_BYTES (&buf)[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]) const
{ {
const ACS_MOUNT_RESPONSE *const msg = (ACS_MOUNT_RESPONSE *)buf; const ACS_MOUNT_RESPONSE *const msg = (ACS_MOUNT_RESPONSE *)buf;
if(STATUS_SUCCESS != msg->mount_status) { if(STATUS_SUCCESS != msg->mount_status) {
castor::exception::MountFailed ex; castor::exception::MountFailed ex;
ex.getMessage() << "Status of mount for recall response is not success: " << ex.getMessage() << "Status of mount for read only access response is not"
acs_status(msg->mount_status); " success: " << acs_status(msg->mount_status);
throw ex; throw ex;
} }
} }
...@@ -117,5 +117,5 @@ void castor::acs::AcsMountTapeForRecall::processMountForRecallResponse( ...@@ -117,5 +117,5 @@ void castor::acs::AcsMountTapeForRecall::processMountForRecallResponse(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// destructor // destructor
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
castor::acs::AcsMountTapeForRecall::~AcsMountTapeForRecall() throw() { castor::acs::AcsMountTapeReadOnly::~AcsMountTapeReadOnly() throw() {
} }
...@@ -32,16 +32,16 @@ namespace castor { ...@@ -32,16 +32,16 @@ namespace castor {
namespace acs { namespace acs {
/** /**
* Class responsible for mounting tapes for recall through ACS API . * Class responsible for mounting tapes for read only access through ACS API .
*/ */
class AcsMountTapeForRecall: public AcsLibraryInteraction { class AcsMountTapeReadOnly: public AcsLibraryInteraction {
public: public:
/** /**
* Constructor. * Constructor.
*/ */
AcsMountTapeForRecall( AcsMountTapeReadOnly(
const std::string &vid, const uint32_t acs, const std::string &vid, const uint32_t acs,
const uint32_t lsm, const uint32_t panel, const uint32_t drive, const uint32_t lsm, const uint32_t panel, const uint32_t drive,
Acs &acsWrapper,log::Logger &log, Acs &acsWrapper,log::Logger &log,
...@@ -50,7 +50,7 @@ public: ...@@ -50,7 +50,7 @@ public:
/** /**
* Destructor. * Destructor.
*/ */
~AcsMountTapeForRecall() throw(); ~AcsMountTapeReadOnly() throw();
/** /**
* Execute mount request through ACS API. * Execute mount request through ACS API.
...@@ -66,14 +66,14 @@ protected: ...@@ -66,14 +66,14 @@ protected:
* This method does not return until the mount has either succeeded, failed or * This method does not return until the mount has either succeeded, failed or
* the specified timeout has been reached. * the specified timeout has been reached.
*/ */
void syncMountTapeForRecall() const; void syncMountTapeReadOnly() const;
/** /**
* Sends the mount request to ACSLS. * Sends the mount request to ACSLS.
* *
* @param seqNumber The sequence number to be used in the request. * @param seqNumber The sequence number to be used in the request.
*/ */
void sendMountForRecallRequest(const SEQ_NO seqNumber) const; void sendMountTapeReadOnlyRequest(const SEQ_NO seqNumber) const;
/** /**
* Throws castor::exception::MountFailed if the mount was not * Throws castor::exception::MountFailed if the mount was not
...@@ -81,7 +81,7 @@ protected: ...@@ -81,7 +81,7 @@ protected:
* *
* @param buf The mount-response message. * @param buf The mount-response message.
*/ */
void processMountForRecallResponse( void processMountTapeReadOnlyResponse(
ALIGNED_BYTES (&buf)[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]) const; ALIGNED_BYTES (&buf)[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]) const;
/** /**
...@@ -109,7 +109,7 @@ protected: ...@@ -109,7 +109,7 @@ protected:
*/ */
const AcsDaemon::CastorConf & m_castorConf; const AcsDaemon::CastorConf & m_castorConf;
}; // class AcsMountTapeForRecall }; // class AcsMountTapeReadOnly
} // namespace acs } // namespace acs
} // namespace castor } // namespace castor
...@@ -21,13 +21,13 @@ ...@@ -21,13 +21,13 @@
* @author Castor Dev team, castor-dev@cern.ch * @author Castor Dev team, castor-dev@cern.ch
*****************************************************************************/ *****************************************************************************/
#include "castor/acs/AcsMountTapeForMigration.hpp" #include "castor/acs/AcsMountTapeReadWrite.hpp"
#include "castor/exception/MountFailed.hpp" #include "castor/exception/MountFailed.hpp"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// constructor // constructor
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
castor::acs::AcsMountTapeForMigration::AcsMountTapeForMigration( castor::acs::AcsMountTapeReadWrite::AcsMountTapeReadWrite(
const std::string &vid, const std::string &vid,
const uint32_t acs, const uint32_t acs,
const uint32_t lsm, const uint32_t lsm,
...@@ -47,36 +47,36 @@ castor::acs::AcsMountTapeForMigration::AcsMountTapeForMigration( ...@@ -47,36 +47,36 @@ castor::acs::AcsMountTapeForMigration::AcsMountTapeForMigration(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// execute // execute
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForMigration::execute() const { void castor::acs::AcsMountTapeReadWrite::execute() const {
syncMountTapeForMigration(); syncMountTapeReadWrite();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// syncMountTapeForMigration // syncMountTapeReadWrite
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForMigration::syncMountTapeForMigration() const void castor::acs::AcsMountTapeReadWrite::syncMountTapeReadWrite() const
{ {
const SEQ_NO requestSeqNumber = 1; const SEQ_NO requestSeqNumber = 1;
ALIGNED_BYTES buf[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]; ALIGNED_BYTES buf[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)];
try { try {
sendMountForMigrationRequest(requestSeqNumber); sendMountTapeReadWriteRequest(requestSeqNumber);
requestResponsesUntilFinal(requestSeqNumber, buf, requestResponsesUntilFinal(requestSeqNumber, buf,
m_castorConf.acsQueryLibraryInterval, m_castorConf.acsQueryLibraryInterval,
m_castorConf.acsCommandTimeout); m_castorConf.acsCommandTimeout);
processMountForMigrationResponse(buf); processMountTapeReadWriteResponse(buf);
} catch(castor::exception::Exception &ex) { } catch(castor::exception::Exception &ex) {
castor::exception::MountFailed mf; castor::exception::MountFailed mf;
mf.getMessage() << "Failed to mount for migration volume " << mf.getMessage() << "Failed to mount for read/write access volume " <<
m_volId.external_label << ": " << ex.getMessage().str(); m_volId.external_label << ": " << ex.getMessage().str();
throw mf; throw mf;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// sendMountForMigrationRequest // sendMountTapeReadWriteRequest
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForMigration::sendMountForMigrationRequest( void castor::acs::AcsMountTapeReadWrite::sendMountTapeReadWriteRequest(
const SEQ_NO seqNumber) const { const SEQ_NO seqNumber) const {
const LOCKID lockId = 0; // No lock const LOCKID lockId = 0; // No lock
const BOOLEAN bypass = FALSE; const BOOLEAN bypass = FALSE;
...@@ -91,27 +91,27 @@ void castor::acs::AcsMountTapeForMigration::sendMountForMigrationRequest( ...@@ -91,27 +91,27 @@ void castor::acs::AcsMountTapeForMigration::sendMountForMigrationRequest(
if(STATUS_SUCCESS != s) { if(STATUS_SUCCESS != s) {
castor::exception::MountFailed ex; castor::exception::MountFailed ex;
ex.getMessage() << "Failed to send request to mount for migration volume " ex.getMessage() << "Failed to send request to mount for read/write access"
<< m_volId.external_label << " into drive " " volume " << m_volId.external_label << " into drive "
<< m_acsWrapper.driveId2Str(m_driveId) << m_acsWrapper.driveId2Str(m_driveId)
<< ": readOnly=" << ": readOnly="
<< (readOnly ? "TRUE" : "FALSE") << ": " << acs_status(s); << (readOnly ? "TRUE" : "FALSE") << ": " << acs_status(s);
throw ex; throw ex;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// processMountForMigrationResponse // processMountTapeReadWriteResponse
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void castor::acs::AcsMountTapeForMigration::processMountForMigrationResponse( void castor::acs::AcsMountTapeReadWrite::processMountTapeReadWriteResponse(
ALIGNED_BYTES (&buf)[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]) const ALIGNED_BYTES (&buf)[MAX_MESSAGE_SIZE / sizeof(ALIGNED_BYTES)]) const
{ {