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