diff --git a/middletier/CMakeLists.txt b/middletier/CMakeLists.txt index e2f4ade8012c6d5ac524665c608a653405e4a4d3..89966f32517b420be406e9838af2bef260a48d15 100644 --- a/middletier/CMakeLists.txt +++ b/middletier/CMakeLists.txt @@ -80,8 +80,9 @@ add_library (ctamiddletiersqliteunittests SHARED include_directories(${CMAKE_BINARY_DIR}) -add_library(ctamiddletiersqliteobjectstore - objectstore/ObjectStoreMiddleTierAdmin.cpp) +add_library(ctamiddletierobjectstore + objectstore/ObjectStoreMiddleTierAdmin.cpp + objectstore/ObjectStoreMiddleTierUser.cpp) -add_library (ctamiddletiersqliteobjectstoreunittests SHARED +add_library (ctamiddletierobjectstoreunittests SHARED objectstore/ObjectStoreMiddleTierTest.cpp) diff --git a/middletier/objectstore/ObjectStoreMiddleTierAdmin.cpp b/middletier/objectstore/ObjectStoreMiddleTierAdmin.cpp index ccb7934664b033cc7e08795ac51557535c512f52..65dbc50e6baf58c29023e381a60fed717b703ca4 100644 --- a/middletier/objectstore/ObjectStoreMiddleTierAdmin.cpp +++ b/middletier/objectstore/ObjectStoreMiddleTierAdmin.cpp @@ -88,15 +88,18 @@ void OStoreMiddleTierAdmin::createAdminHost( const SecurityIdentity& requester, const std::string& hostName, const std::string& comment) { + throw cta::exception::Exception("TODO"); } void OStoreMiddleTierAdmin::deleteAdminHost( const SecurityIdentity& requester, const std::string& hostName) { + throw cta::exception::Exception("TODO"); } std::list<AdminHost> OStoreMiddleTierAdmin::getAdminHosts( const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); std::list<AdminHost> ret; return ret; } @@ -106,16 +109,18 @@ void OStoreMiddleTierAdmin::createStorageClass( const std::string &name, const uint16_t nbCopies, const std::string &comment) { + throw cta::exception::Exception("TODO"); } void OStoreMiddleTierAdmin::deleteStorageClass( const SecurityIdentity& requester, const std::string& name) { - + throw cta::exception::Exception("TODO"); } std::list<StorageClass> OStoreMiddleTierAdmin::getStorageClasses( const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); std::list<StorageClass> ret; return ret; } @@ -123,18 +128,20 @@ std::list<StorageClass> OStoreMiddleTierAdmin::getStorageClasses( void OStoreMiddleTierAdmin::createTapePool( const SecurityIdentity& requester, const std::string& name, - const uint16_t nbDrives, const uint32_t nbPartialTapes, const std::string& comment) { } + void OStoreMiddleTierAdmin::deleteTapePool( const SecurityIdentity& requester, const std::string& name) { + throw cta::exception::Exception("TODO"); } std::list<TapePool> OStoreMiddleTierAdmin::getTapePools( const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); std::list<TapePool> ret; return ret; } @@ -145,16 +152,19 @@ void OStoreMiddleTierAdmin::createArchivalRoute( const uint16_t copyNb, const std::string &tapePoolName, const std::string &comment) { + throw cta::exception::Exception("TODO"); } void OStoreMiddleTierAdmin::deleteArchivalRoute( const SecurityIdentity &requester, const std::string &storageClassName, const uint16_t copyNb) { + throw cta::exception::Exception("TODO"); } std::list<ArchivalRoute> OStoreMiddleTierAdmin::getArchivalRoutes( const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); std::list<ArchivalRoute> ret; return ret; } @@ -163,15 +173,18 @@ void OStoreMiddleTierAdmin::createLogicalLibrary( const SecurityIdentity& requester, const std::string& name, const std::string& comment) { + throw cta::exception::Exception("TODO"); } void OStoreMiddleTierAdmin::deleteLogicalLibrary( const SecurityIdentity& requester, const std::string& name) { + throw cta::exception::Exception("TODO"); } std::list<LogicalLibrary> OStoreMiddleTierAdmin::getLogicalLibraries( const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); std::list<LogicalLibrary> ret; return ret; } @@ -180,10 +193,12 @@ void OStoreMiddleTierAdmin::createTape( const SecurityIdentity& requester, const std::string& vid, const std::string& logicalLibraryName, - const std::string& tapePoolName, const uint64_t capacityInBytes, const std::string& comment) { + const std::string& tapePoolName, + const uint64_t capacityInBytes, + const std::string& comment) { + throw cta::exception::Exception("TODO"); } - void OStoreMiddleTierAdmin::deleteTape( const SecurityIdentity& requester, const std::string& vid) { diff --git a/middletier/objectstore/ObjectStoreMiddleTierAdmin.hpp b/middletier/objectstore/ObjectStoreMiddleTierAdmin.hpp index e662f118171c5877921ede8a5bd3018aaeff5a7b..bc2d99433e9c03d56db2986f0aa59f175ed435ff 100644 --- a/middletier/objectstore/ObjectStoreMiddleTierAdmin.hpp +++ b/middletier/objectstore/ObjectStoreMiddleTierAdmin.hpp @@ -33,7 +33,7 @@ namespace objectstore { class OStoreMiddleTierAdmin: public MiddleTierAdmin { public: /** - * Contructor + * Constructor */ OStoreMiddleTierAdmin(objectstore::Backend & backend); @@ -161,26 +161,6 @@ public: const uint32_t nbPartialTapes, const std::string &comment); - /** - * Creates a tape pool with the specifed name. - * - * @param requester The identity of the user requesting the creation of the - * tape pool. - * @param name The name of the tape pool. - * @param nbDrives The maximum number of drives that can be concurrently - * assigned to this pool independent of whether they are archiving or - * retrieving files. - * @param nbPartialTapes The maximum number of tapes that can be partially - * full at any moment in time. - * @param comment The comment describing the tape pool. - */ - virtual void createTapePool( - const SecurityIdentity &requester, - const std::string &name, - const uint16_t nbDrives, - const uint32_t nbPartialTapes, - const std::string &comment); - /** * Delete the tape pool with the specifed name. * diff --git a/middletier/objectstore/ObjectStoreMiddleTierTest.cpp b/middletier/objectstore/ObjectStoreMiddleTierTest.cpp index 82d2c88f151306088ec3cf5ba63dbe283c115c63..3b14399334cbe2e9eaecd04de776c61460356934 100644 --- a/middletier/objectstore/ObjectStoreMiddleTierTest.cpp +++ b/middletier/objectstore/ObjectStoreMiddleTierTest.cpp @@ -20,19 +20,20 @@ #include "middletier/interface/MiddleTierAdmin.hpp" #include "middletier/interface/MiddleTierUser.hpp" #include "middletier/objectstore/ObjectStoreMiddleTierAdmin.hpp" +#include "middletier/objectstore/ObjectStoreMiddleTierUser.hpp" #include "objectstore/BackendVFS.hpp" namespace unitTests { class OStoreVfsMiddleTier: public localMiddleTier { public: - OStoreVfsMiddleTier(): m_vfs(), m_admin(m_vfs) {} + OStoreVfsMiddleTier(): m_vfs(), m_admin(m_vfs), m_user(m_vfs) {} virtual cta::MiddleTierAdmin & admin () { return m_admin; } - //virtual cta::MiddleTierUser & user () { return m_user; } + virtual cta::MiddleTierUser & user () { return m_user; } private: cta::objectstore::BackendVFS m_vfs; cta::OStoreMiddleTierAdmin m_admin; - //cta::OStoreMiddleTierUser m_user; + cta::OStoreMiddleTierUser m_user; }; class SQLiteMiddleTierFactory: public MiddleTierFactory { diff --git a/middletier/objectstore/ObjectStoreMiddleTierUser.cpp b/middletier/objectstore/ObjectStoreMiddleTierUser.cpp new file mode 100644 index 0000000000000000000000000000000000000000..519f1e51f236f44b221ccbedfdb1b0ee49c26ec7 --- /dev/null +++ b/middletier/objectstore/ObjectStoreMiddleTierUser.cpp @@ -0,0 +1,123 @@ +/* + * The CERN Tape Archive (CTA) project + * Copyright (C) 2015 CERN + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "utils/exception/Exception.hpp" +#include "middletier/objectstore/ObjectStoreMiddleTierUser.hpp" +#include "objectstore/Backend.hpp" +#include "objectstore/RootEntry.hpp" + +namespace cta { + +OStoreMiddleTierUser::OStoreMiddleTierUser(objectstore::Backend& backend): + m_backend(backend) {} + +OStoreMiddleTierUser::~OStoreMiddleTierUser() throw() { } + +void OStoreMiddleTierUser::createDir( + const SecurityIdentity& requester, + const std::string& dirPath) { + throw cta::exception::Exception("TODO"); + +} +void OStoreMiddleTierUser::deleteDir( + const SecurityIdentity& requester, + const std::string& dirPath) { + throw cta::exception::Exception("TODO"); +} + +DirIterator OStoreMiddleTierUser::getDirContents( + const SecurityIdentity& requester, + const std::string& dirPath) const { + throw cta::exception::Exception("TODO"); +} + +DirEntry OStoreMiddleTierUser::stat( + const SecurityIdentity& requester, + const std::string path) const { + throw cta::exception::Exception("TODO"); +} + +void OStoreMiddleTierUser::setDirStorageClass( + const SecurityIdentity& requester, + const std::string& dirPath, + const std::string& storageClassName) { + throw cta::exception::Exception("TODO"); +} + +void OStoreMiddleTierUser::clearDirStorageClass( + const SecurityIdentity& requester, + const std::string& dirPath) { + throw cta::exception::Exception("TODO"); +} + +std::string OStoreMiddleTierUser::getDirStorageClass( + const SecurityIdentity& requester, + const std::string& dirPath) const { + throw cta::exception::Exception("TODO"); +} + +void OStoreMiddleTierUser::archive( + const SecurityIdentity& requester, + const std::list<std::string>& srcUrls, + const std::string& dstPath) { + throw cta::exception::Exception("TODO"); +} + +std::map<TapePool, std::list<ArchivalJob> > OStoreMiddleTierUser::getArchivalJobs( + const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); +} + +std::list<ArchivalJob> OStoreMiddleTierUser::getArchivalJobs( + const SecurityIdentity& requester, + const std::string& tapePoolName) const { + throw cta::exception::Exception("TODO"); +} + +void OStoreMiddleTierUser::deleteArchivalJob( + const SecurityIdentity& requester, + const std::string& dstPath) { + throw cta::exception::Exception("TODO"); +} + +void OStoreMiddleTierUser::retrieve( + const SecurityIdentity& requester, + const std::list<std::string>& srcPaths, + const std::string& dstUrl) { + throw cta::exception::Exception("TODO"); +} + +std::map<Tape, std::list<RetrievalJob> > OStoreMiddleTierUser::getRetrievalJobs( + const SecurityIdentity& requester) const { + throw cta::exception::Exception("TODO"); +} + +std::list<RetrievalJob> OStoreMiddleTierUser::getRetrievalJobs( + const SecurityIdentity& requester, + const std::string& vid) const { + throw cta::exception::Exception("TODO"); +} + +void OStoreMiddleTierUser::deleteRetrievalJob( + const SecurityIdentity& requester, + const std::string& dstUrl) { + throw cta::exception::Exception("TODO"); +} + + +} diff --git a/middletier/objectstore/ObjectStoreMiddleTierUser.hpp b/middletier/objectstore/ObjectStoreMiddleTierUser.hpp new file mode 100644 index 0000000000000000000000000000000000000000..044649191e801101474aca7e2f7243f9804ad0fd --- /dev/null +++ b/middletier/objectstore/ObjectStoreMiddleTierUser.hpp @@ -0,0 +1,252 @@ +/* + * The CERN Tape Archive (CTA) project + * Copyright (C) 2015 CERN + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "middletier/interface/MiddleTierUser.hpp" + +namespace cta { + +namespace objectstore { + class Backend; +} + +/** + * The user API of the the middle-tier. + */ +class OStoreMiddleTierUser: public MiddleTierUser { +public: + /** + * Constructor + */ + OStoreMiddleTierUser(objectstore::Backend & backend); + + /** + * Destructor + */ + virtual ~OStoreMiddleTierUser() throw(); + + /** + * Creates the specified directory. + * + * @param requester The identity of the user requesting the creation of the + * directory. + * @param dirPath The absolute path of the directory. + */ + virtual void createDir( + const SecurityIdentity &requester, + const std::string &dirPath); + + /** + * Deletes the specified directory. + * + * @param requester The identity of the user requesting the deletion of the + * directory. + * @param dirPath The absolute path of the directory. + */ + virtual void deleteDir( + const SecurityIdentity &requester, + const std::string &dirPath); + + /** + * Gets the contents of the specified directory. + * + * @param requester The identity of the user requesting the contents of the + * directory. + * @param dirPath The absolute path of the directory. + * @return An iterator over the contents of the directory. + */ + virtual DirIterator getDirContents( + const SecurityIdentity &requester, + const std::string &dirPath) const; + + /** + * Returns the directory entry information for the specified directory or file + * within the archive namespace. + * + * @param requester The identity of the user requesting the directory entry. + * @param path The absolute path of the directory or file within the archive + * namespace. + * @return The directory entry information for the specified directory or file + * within the archive namespace. + */ + virtual DirEntry stat( + const SecurityIdentity &requester, + const std::string path) const; + + /** + * Sets the storage class of the specified directory to the specified value. + * + * @param requester The identity of the user requesting the setting of the + * directory's storage class. + * @param dirPath The absolute path of the directory. + * @param storageClassName The name of the storage class. + */ + virtual void setDirStorageClass( + const SecurityIdentity &requester, + const std::string &dirPath, + const std::string &storageClassName); + + /** + * Clears the storage class of the specified directory. + * + * @param requester The identity of the user requesting the storage class of + * the directory to be cleared. + * @param dirPath The absolute path of the directory. + */ + virtual void clearDirStorageClass( + const SecurityIdentity &requester, + const std::string &dirPath); + + /** + * Gets the storage class if of the specified directory if the directory has + * one. + * + * @param requester The identity of the user requesting the storage class of + * the directory. + * @param dirPath The absolute path of the directory. + * @return The name of the storage class if the directory has one, else an + * empty string. + */ + virtual std::string getDirStorageClass( + const SecurityIdentity &requester, + const std::string &dirPath) const; + + /** + * Creates an archival job to asynchronously archive the specified source + * files to the specified destination within the archive. + * + * If there is more than one source file then the destination must be a + * directory. + * + * If there is only one source file then the destination can be either a file + * or a directory. + * + * The storage class of the archived file will be inherited from its + * destination directory. + * + * @param requester The identity of the user requesting the archival. + * @param srcUrls List of one or more source files. + * @param dstPath The absolute path of the destination file or directory + * within the archive namespace. + */ + virtual void archive( + const SecurityIdentity &requester, + const std::list<std::string> &srcUrls, + const std::string &dstPath); + + /** + * Returns all of the existing archival jobs grouped by tape pool and then + * sorted by creation time in ascending order (oldest first). + * + * @param requester The identity of the user requesting the list. + * @return All of the existing archival jobs grouped by tape pool and then + * sorted by creation time in ascending order (oldest first). + */ + virtual std::map<TapePool, std::list<ArchivalJob> > getArchivalJobs( + const SecurityIdentity &requester) const; + + /** + * Returns the list of archival jobs associated with the specified tape pool + * sorted by creation time in ascending order (oldest first). + * + * @param requester The identity of the user requesting the list. + * @param tapePoolName The name of the tape pool. + * @return The list of archival jobs associated with the specified tape pool + * sorted by creation time in ascending order (oldest first). + */ + virtual std::list<ArchivalJob> getArchivalJobs( + const SecurityIdentity &requester, + const std::string &tapePoolName) const; + + /** + * Deletes the specified archival job. + * + * @param requester The identity of the user requesting the deletion of the + * tape. + * @param dstPath The absolute path of the destination file within the + * archive namespace. + */ + virtual void deleteArchivalJob( + const SecurityIdentity &requester, + const std::string &dstPath); + + /** + * Creates a retrieval job to asynchronously retrieve the specified archived + * files and copy them to the specified destination URL. + * + * If there is more than one archived file then the destination must be a + * directory. + * + * If there is only one archived file then the destination can be either a + * file or a directory. + * + * @param requester The identity of the user requesting the retrieval. + * @param srcPaths The list of one of more archived files. + * @param dstUrl The URL of the destination file or directory. + */ + virtual void retrieve( + const SecurityIdentity &requester, + const std::list<std::string> &srcPaths, + const std::string &dstUrl); + + /** + * Returns all of the existing retrieval jobs grouped by tape and then + * sorted by creation time in ascending order (oldest first). + * + * @param requester The identity of the user requesting the list. + * @return All of the existing retrieval jobs grouped by tape and then + * sorted by creation time in ascending order (oldest first). + */ + virtual std::map<Tape, std::list<RetrievalJob> > getRetrievalJobs( + const SecurityIdentity &requester) const; + + /** + * Returns the list of retrieval jobs associated with the specified tape + * sorted by creation time in ascending order (oldest first). + * + * @param requester The identity of the user requesting the list. + * @param vid The volume identifier of the tape. + * @return The list of retrieval jobs associated with the specified tape + * sorted by creation time in ascending order (oldest first). + */ + virtual std::list<RetrievalJob> getRetrievalJobs( + const SecurityIdentity &requester, + const std::string &vid) const; + + /** + * Deletes the specified retrieval job. + * + * @param requester The identity of the user requesting the deletion of the + * tape. + * @param dstUrl The URL of the destination file or directory. + */ + virtual void deleteRetrievalJob( + const SecurityIdentity &requester, + const std::string &dstUrl); + +private: + /** + * Reference to the backend used for storing objects + */ + objectstore::Backend & m_backend; + +}; // class OStoreMiddleTierUser + +} + diff --git a/objectstore/ObjectOps.cpp b/objectstore/ObjectOps.cpp index 5a121cc80c4620d5643743573104e06d581ceeee..c7b7b423577255278c0fa813c3161e4840571f27 100644 --- a/objectstore/ObjectOps.cpp +++ b/objectstore/ObjectOps.cpp @@ -33,6 +33,7 @@ namespace cta { namespace objectstore { MAKE_CTA_OBJECTSTORE_OBJECTOPS_TYPEID(RecallJob); MAKE_CTA_OBJECTSTORE_OBJECTOPS_TYPEID(Counter); MAKE_CTA_OBJECTSTORE_OBJECTOPS_TYPEID(FIFO); + MAKE_CTA_OBJECTSTORE_OBJECTOPS_TYPEID(AdminUsersList); #undef MAKE_CTA_OBJECTSTORE_OBJECTOPS_TYPEID }} \ No newline at end of file diff --git a/objectstore/RootEntry.cpp b/objectstore/RootEntry.cpp index 46a1dea61ed75422fdbc4db498682c71a1e9fa75..e681ee67ff14a35b65e5870e4f9804f4329483ca 100644 --- a/objectstore/RootEntry.cpp +++ b/objectstore/RootEntry.cpp @@ -96,6 +96,22 @@ std::string cta::objectstore::RootEntry::allocateOrGetAgentRegister(Agent & agen } } +void cta::objectstore::RootEntry::addIntendedAgentRegistry(const std::string& name) { + checkPayloadWritable(); + std::string * reg = m_payload.mutable_agentregisterintentlog()->Add(); + *reg = name; +} + +void cta::objectstore::RootEntry::deleteFromIntendedAgentRegistry(const std::string& name) { + checkPayloadWritable(); + serializers::removeString(m_payload.mutable_agentregisterintentlog(), name); +} + +void cta::objectstore::RootEntry::setAgentRegister(const std::string& name) { + throw cta::exception::Exception("TODO"); +} + + // Get the name of the JobPool (or exception if not available) std::string cta::objectstore::RootEntry::getJobPool() { checkPayloadReadable(); @@ -145,17 +161,6 @@ std::string cta::objectstore::RootEntry::allocateOrGetJobPool(Agent & agent) { } } -void cta::objectstore::RootEntry::addIntendedAgentRegistry(const std::string& name) { - checkPayloadWritable(); - std::string * reg = m_payload.mutable_agentregisterintentlog()->Add(); - *reg = name; -} - -void cta::objectstore::RootEntry::deleteFromIntendedAgentRegistry(const std::string& name) { - checkPayloadWritable(); - serializers::removeString(m_payload.mutable_agentregisterintentlog(), name); -} - void cta::objectstore::RootEntry::addIntendedJobPool(const std::string& name) { checkPayloadWritable(); std::string * jp = m_payload.mutable_jobpoolintentlog()->Add(); @@ -167,16 +172,39 @@ void cta::objectstore::RootEntry::deleteFromIntendedJobPool(const std::string& n serializers::removeString(m_payload.mutable_jobpoolintentlog(), name); } -void cta::objectstore::RootEntry::setAgentRegister(const std::string& name) { - checkPayloadWritable(); - m_payload.set_agentregister(name); -} - void cta::objectstore::RootEntry::setJobPool(const std::string& name) { checkPayloadWritable(); m_payload.set_jobpool(name); } +// Get the name of the admin user list (or exception if not available) +std::string cta::objectstore::RootEntry::getAdminUsersList() { + // Check that the fetch was done + if (!m_payloadInterpreted) + throw ObjectOpsBase::NotFetched("In RootEntry::getAdminUsersList: object not yet fetched"); + // If the registry is defined, return it, job done. + if (m_payload.adminuserslist().size()) + return m_payload.adminuserslist(); + throw NotAllocatedEx("In RootEntry::getAdminUsersList: adminUserList not yet allocated"); +} + +std::string cta::objectstore::RootEntry::allocateOrGetAdminUsersList(Agent& agent) { + throw cta::exception::Exception("TODO"); +} + +void cta::objectstore::RootEntry::addIntendedAdminUsersList(const std::string& name) { + throw cta::exception::Exception("TODO"); +} + +void cta::objectstore::RootEntry::deleteFromIntendedAdminUsersList(const std::string& name) { + throw cta::exception::Exception("TODO"); +} + +void cta::objectstore::RootEntry::setAdminUsersList(const std::string& name) { + throw cta::exception::Exception("TODO"); +} + + // Dump the root entry std::string cta::objectstore::RootEntry::dump () { checkPayloadReadable(); diff --git a/objectstore/RootEntry.hpp b/objectstore/RootEntry.hpp index 7420094584f23b4ac1bb436b9749ab4e921fd096..b84b9a1fac574100118e74ca68bae1dc5b8b0bb4 100644 --- a/objectstore/RootEntry.hpp +++ b/objectstore/RootEntry.hpp @@ -45,13 +45,29 @@ public: // Get the name of a (possibly freshly created) agent register std::string allocateOrGetAgentRegister(Agent & agent); + +private: + void addIntendedAgentRegistry(const std::string & name); + void deleteFromIntendedAgentRegistry(const std::string & name); + + void setAgentRegister(const std::string & name); + +public: // Get the name of the JobPool (or exception if not available) std::string getJobPool(); // Get the name of a (possibly freshly created) job pool std::string allocateOrGetJobPool(Agent & agent); +private: + void addIntendedJobPool(const std::string & name); + + void deleteFromIntendedJobPool(const std::string & name); + + void setJobPool(const std::string & name); + +public: // Get the name of the AdminUsersList (or exception if not available) std::string getAdminUsersList(); @@ -59,17 +75,11 @@ public: std::string allocateOrGetAdminUsersList(Agent & agent); private: - void addIntendedAgentRegistry(const std::string & name); + void addIntendedAdminUsersList(const std::string & name); - void deleteFromIntendedAgentRegistry(const std::string & name); - - void setAgentRegister(const std::string & name); + void deleteFromIntendedAdminUsersList(const std::string & name); - void addIntendedJobPool(const std::string & name); - - void deleteFromIntendedJobPool(const std::string & name); - - void setJobPool(const std::string & name); + void setAdminUsersList(const std::string & name); public: // Dump the root entry diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1b8a0a433de1086f7aae74a97dea59155f4e7ff6..b513680a7b20f83b9763cf778e73602763b42fae 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,6 +16,9 @@ target_link_libraries(unittests ctamiddletierunittests ctamiddletiersqlite ctamiddletiersqliteunittests + + ctamiddletierobjectstoreunittests + ctamiddletierobjectstore ctanamespacevfs ctanamespacevfsunittests gmock